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

Marc Glisse <glisse at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-06-09
            Summary|GCC: O2 vs O3 output        |[8/9/10 Regression] GCC: O2
                   |differs on simple test      |vs O3 output differs on
                   |                            |simple test
     Ever confirmed|0                           |1

--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> ---
Confirmed.

I also notice a missed optimization:

  _16 = ivtmp.21_234 + 2;
  _2 = b[_16];
  _41 = _2 ^ 9;
  b[ivtmp.21_234] = _41;
  _52 = b[_16];
  _51 = _52 ^ 9;
  b[ivtmp.21_234] = _51;
  _65 = b[_16];
etc.

it seems clear from the first line that b[_16] and b[ivtmp.21_234] cannot
alias, so this should simplify. And it isn't just because cunroll is late, we
don't simplify it either if I write directly this pattern in C.

Reply via email to