[Bug tree-optimization/95084] [11/12 Regression] code sinking prevents if-conversion

2022-04-21 Thread rguenth at gcc dot gnu.org via Gcc-bugs
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

2022-01-31 Thread rguenth at gcc dot gnu.org via Gcc-bugs
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

2022-01-31 Thread pinskia at gcc dot gnu.org via Gcc-bugs
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

2022-01-31 Thread rsandifo at gcc dot gnu.org via Gcc-bugs
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.)