public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/105990] New: Dead code elimination failed at -O3
@ 2022-06-15 13:35 crazylht at gmail dot com
  2022-06-15 13:39 ` [Bug tree-optimization/105990] " crazylht at gmail dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: crazylht at gmail dot com @ 2022-06-15 13:35 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105990

            Bug ID: 105990
           Summary: Dead code elimination failed at -O3
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: crazylht at gmail dot com
  Target Milestone: ---

static struct { int a; } b, c;
static int d = -1;
void foo();
int main() {
    if (b.a)
        d = 2 | (b.a <= 0);
    for (; b.a; b.a++)
        c = b;
    if (!d)
        foo();
}


foo() can be eliminated since d would never be zero.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug tree-optimization/105990] Dead code elimination failed at -O3
  2022-06-15 13:35 [Bug tree-optimization/105990] New: Dead code elimination failed at -O3 crazylht at gmail dot com
@ 2022-06-15 13:39 ` crazylht at gmail dot com
  2022-06-16 13:32 ` Painololo at protonmail dot com
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: crazylht at gmail dot com @ 2022-06-15 13:39 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105990

--- Comment #1 from Hongtao.liu <crazylht at gmail dot com> ---
Another case

static short a;
static int b;

void foo(void);
void bar9_(void);
int main() {
    char c;
    b = a = 23;
    for (; b <= 1;)
        a = 1;
    bar9_();
    c = a >= 18 || 2 > 2 >> a ? 1 : 1 << a;
    if (c == 0)
        foo();
}

foo() also can be eliminated.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug tree-optimization/105990] Dead code elimination failed at -O3
  2022-06-15 13:35 [Bug tree-optimization/105990] New: Dead code elimination failed at -O3 crazylht at gmail dot com
  2022-06-15 13:39 ` [Bug tree-optimization/105990] " crazylht at gmail dot com
@ 2022-06-16 13:32 ` Painololo at protonmail dot com
  2022-06-21  1:38 ` pinskia at gcc dot gnu.org
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Painololo at protonmail dot com @ 2022-06-16 13:32 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105990

John Klein <Painololo at protonmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |Painololo at protonmail dot com

--- Comment #2 from John Klein <Painololo at protonmail dot com> ---
Thanks for the decision.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug tree-optimization/105990] Dead code elimination failed at -O3
  2022-06-15 13:35 [Bug tree-optimization/105990] New: Dead code elimination failed at -O3 crazylht at gmail dot com
  2022-06-15 13:39 ` [Bug tree-optimization/105990] " crazylht at gmail dot com
  2022-06-16 13:32 ` Painololo at protonmail dot com
@ 2022-06-21  1:38 ` pinskia at gcc dot gnu.org
  2023-08-07 20:56 ` [Bug ipa/105990] " pinskia at gcc dot gnu.org
  2023-10-25 22:19 ` pinskia at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-06-21  1:38 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105990

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement
   Last reconfirmed|                            |2022-06-21
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think the first and second cases are different issues.

In the first case (even if we remove the struct), we can't figure out that b
does not change from 0.
Because we only have a trivial pass which detects read-onlyness. That is it
only checks if b was read-only and not if b could have been written to if b was
read-only.

The second case I didn't analyzed.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug ipa/105990] Dead code elimination failed at -O3
  2022-06-15 13:35 [Bug tree-optimization/105990] New: Dead code elimination failed at -O3 crazylht at gmail dot com
                   ` (2 preceding siblings ...)
  2022-06-21  1:38 ` pinskia at gcc dot gnu.org
@ 2023-08-07 20:56 ` pinskia at gcc dot gnu.org
  2023-10-25 22:19 ` pinskia at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-08-07 20:56 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105990

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Hongtao.liu from comment #1)
> foo() also can be eliminated.

This one is similar to PR 105832 really.

```
 _2 = (int) a.2_1;
  _3 = 2 >> _2;
  if (_3 == 2)
    goto <bb 4>; [34.00%]
  else
    goto <bb 6>; [66.00%]

  <bb 4> [local count: 182536112]:
  _4 = 1 << _2;
  iftmp.1_10 = (char) _4;
  if (iftmp.1_10 == 0)
    goto <bb 5>; [33.00%]
  else
    goto <bb 6>; [67.00%]
```
`(2 >> _2) == 2` could be optimized to just `_2 == 0`.
And then `_4` becomes `1` and then the conditional is optimized away and such.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug ipa/105990] Dead code elimination failed at -O3
  2022-06-15 13:35 [Bug tree-optimization/105990] New: Dead code elimination failed at -O3 crazylht at gmail dot com
                   ` (3 preceding siblings ...)
  2023-08-07 20:56 ` [Bug ipa/105990] " pinskia at gcc dot gnu.org
@ 2023-10-25 22:19 ` pinskia at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-10-25 22:19 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105990

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #4)
> `(2 >> _2) == 2` could be optimized to just `_2 == 0`.
> And then `_4` becomes `1` and then the conditional is optimized away and
> such.

Filed that as PR 112090 .  Leaving this open for the IPA issue with recording
the store values possible.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-10-25 22:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-15 13:35 [Bug tree-optimization/105990] New: Dead code elimination failed at -O3 crazylht at gmail dot com
2022-06-15 13:39 ` [Bug tree-optimization/105990] " crazylht at gmail dot com
2022-06-16 13:32 ` Painololo at protonmail dot com
2022-06-21  1:38 ` pinskia at gcc dot gnu.org
2023-08-07 20:56 ` [Bug ipa/105990] " pinskia at gcc dot gnu.org
2023-10-25 22:19 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).