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)

Reply via email to