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.)