[Bug tree-optimization/106950] New: Missed PRE full redundancy without post-loop use

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Sep 15 12:45:11 GMT 2022


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

            Bug ID: 106950
           Summary: Missed PRE full redundancy without post-loop use
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

when we have the situation of PR106922, aka g++.dg/tree-ssa/pr106922.C which is
XFAILed on !lp64 because of this there's

  mem = 0;
  do
    {
       if (mem)
         mem = 0;
       if (mem) // as 'char' instead of 'bool', maybe relevant
         bar ();
       if (i++ != n)
         break;
    }
  while (1);
  .. = mem;

with the use of 'mem' after the loop we get that antic-in in the loop
exit condition block and eventually figure the full redundancy in
the conditional redundant set to zero during PRE insertion.  When that
'mem' after the loop is _not_ there this isn't triggered (possibly
because of the 'char' vs. 'bool' here, but then one can eventually
elide the whole if (mem) bar () code).


More information about the Gcc-bugs mailing list