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

rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|code sinking prevents       |[11/12 Regression] code
                   |if-conversion               |sinking prevents
                   |                            |if-conversion
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2022-01-31
             Status|UNCONFIRMED                 |NEW
                 CC|                            |rsandifo at gcc dot gnu.org

--- Comment #1 from rsandifo at gcc dot gnu.org <rsandifo at gcc dot gnu.org> 
---
Yeah.  I'm seeing this as a GCC 11/12 regression on:

float f(float *x, float *y) {
  float res = 0;
  for (int i = 0; i < 100; ++i) {
    float next = __builtin_sqrtf (y[i]);
    res += x[i] < 100 ? x[i] : next;
  }
  return res;
}

which is cut down from HACCmk.  Previously we could vectorise
the loop for Advanced SIMD at -Ofast, whereas now we require
-Ofast -fno-tree-sink.  (SVE can vectorise it both ways due
to predicated loads.)

Reply via email to