https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105832
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Dead Code Elimination |[13 Regression] Dead Code |Regression at -O3 (trunk |Elimination Regression at |vs. 12.1.0) |-O3 (trunk vs. 12.1.0) Last reconfirmed| |2022-06-13 CC| |rguenth at gcc dot gnu.org Target Milestone|--- |13.0 Keywords| |missed-optimization Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. GCC 12: t.c:12:23: optimized: Unswitching loop on condition: if (iftmp.0_9 <= 1) t.c:12:23: optimized: Unswitching loop on condition: if (iftmp.0_9 == 1) t.c:12:23: optimized: Unswitching loop on condition: if (iftmp.1_10 != 0) t.c:12:23: optimized: Unswitching loop on condition: if (iftmp.1_10 != 0) and trunk: t.c:12:23: optimized: unswitching loop 1 on ‘if’ with condition: iftmp.0_9 <= 1 t.c:12:23: optimized: unswitching loop 1 on ‘if’ with condition: iftmp.1_10 != 0 t.c:12:23: optimized: unswitching loop 1 on ‘if’ with condition: iftmp.0_9 == 1 somehow trunk doesn't consider the 2nd iftmp.1_10 != 0 condition.