https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101445

            Bug ID: 101445
           Summary: wrong code at -O3 on x86_64-linux-gnu
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: qrzhang at gatech dot edu
  Target Milestone: ---

It appears to be a recent regression. Note that -O2 works fine.

$ gcc-trunk -v
Supported LTO compression algorithms: zlib
gcc version 12.0.0 20210713 (experimental) [master revision
7670b6633e5:d2f95d2ac56:1583b8bff0be7e41aa721dde79f90ca0763bd4e2] (GCC)


$ gcc-trunk abc.c ; ./a.out
0
0
0
0
0
0
0



$ gcc-trunk -O3 abc.c ; ./a.out
0
0
3
0
0
0
0



$ cat abc.c
int a[35] = {1, 1, 3};
char b = 4;
int c, d;
int main() {
  char e;
  for (; b >= 0; b--) {
    e = 3;
    for (; e >= 0; e--)
      a[b * 5 + e] = a[b * 5 + e + 1];
  }
  for (; c < 5; c++)
    ;
  for (; d < 7; d++)
    printf("%d\n", a[c * d]);
}

Reply via email to