[Bug tree-optimization/95084] [11/12 Regression] code sinking prevents if-conversion
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95084 Richard Biener changed: What|Removed |Added Target Milestone|11.3|11.4 --- Comment #3 from Richard Biener --- GCC 11.3 is being released, retargeting bugs to GCC 11.4.
[Bug tree-optimization/95084] [11/12 Regression] code sinking prevents if-conversion
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95084 Richard Biener changed: What|Removed |Added Priority|P3 |P2 --- Comment #2 from Richard Biener --- Note the issue is older but there are some cases where sink didn't do its job that have been fixed meanwhile. For GCC 12 we have an additional (albeit quite late) sinking pass, so one option might be to tame down early sinking for possibly trapping operations in loops that look like they could be vectorized (similar how we tame PRE). I think the only loop pass affected by not sinking might be unswitching which could get less favorable costs due to the need to duplicate the not sunk stmts. At least I cannot think of a way to preserve the conditional non-trappingness on the ref after sinking it.
[Bug tree-optimization/95084] [11/12 Regression] code sinking prevents if-conversion
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95084 Andrew Pinski changed: What|Removed |Added Target Milestone|--- |11.3 Blocks||26163 Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=26163 [Bug 26163] [meta-bug] missed optimization in SPEC (2k17, 2k and 2k6 and 95)
[Bug tree-optimization/95084] [11/12 Regression] code sinking prevents if-conversion
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95084 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 --- 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.)