https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99927
Bug ID: 99927 Summary: [11 Regression] Maybe wrong code since r11-39-gf9e1ea10e657af9f Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: rguenth at gcc dot gnu.org Target Milestone: --- Reduced from yarpgen: $ cat func.cpp short var = 9; int test_var_1 = 0, test_var_5 = 0, test_var_8 = 0, test_var_10 = 0; void test(unsigned var_6, unsigned long long var_9) { for (; test_var_10;) if (test_var_5) for (;; test_var_1 += test_var_8) ; for (int i_10 = 0; i_10 < 23; i_10 += 4) for (unsigned int i_11 = 0; i_11 < var_6 + 471511258; i_11 ++) if ((var_9 == 0) % var_6) var = 0; } int main() { test(3823456048, 10675217251973); __builtin_printf("%u\n", var); if (var != 9) __builtin_abort (); return 0; } $ g++ func.cpp && ./a.out 9 $ g++ func.cpp -O3 && ./a.out 0 Aborted (core dumped)