https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101501
Bug ID: 101501
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. Gcc-10 works fine.
$ gcc-trunk -v
gcc version 12.0.0 20210718 (experimental) [master revision
0103d18dfc9:a1cef02c5e3:853921378bfa149353b4e1c7dde5c02f80072ad7] (GCC)
$ gcc-trunk abc.c ; ./a.out
-1
$ gcc-trunk -O3 abc.c ; ./a.out
40
$ cat abc.c
char a = 55;
int main() {
int b;
char c;
d:
c = a-- * 52;
b = 3L * c;
if (b)
goto d;
printf("%d\n", a);
}