https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111256
Bug ID: 111256
Summary: Wrong code at -O2/3/s since r10-1615-g75efe9cb1f8
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: shaohua.li at inf dot ethz.ch
CC: rguenth at gcc dot gnu.org
Target Milestone: ---
gcc at -O2/3/s produces the wrong code.
Bisected to r10-1615-g75efe9cb1f8
Compiler explorer: https://godbolt.org/z/WPzEMoW6e
$ cat a.c
int printf(const char *, ...);
int a, d, e, g;
long b, h;
long i() {
b++;
return b;
}
int l(int m[], int p[]) {
if (d)
for (; e; e++) {
m[4] = m[0] = m[1] ^ m[2] ^ m[5];
m[7] = m[3] ^ m[6];
m += 4;
}
m[6] = m[0] ^ 1;
m[7] = m[1] ^ m[2] ^ m[7];
m[9] = m[3] ^ m[8];
return 1;
}
int fn3() {
int j[] = {0, 7, 0, 0, 5, 0, 0, 8, 0, 0};
int k[17];
int c = l(j, k);
return c;
}
int main() {
for (; h <= 3; h = fn3() + h) {
long n[2];
for (; i() < 2;)
n[g] = 508;
for (; (int)n[0] < 2;) {
char o[] = {3, 4, 6, 3, 0, 0, 5, 6, 6, 1, 7, 0, 0, 0, 0, 0};
char *f = o;
for (; *f; ++f)
;
}
}
printf("%X\n", a);
}
$
$ gcc -O0 a.c && ./a.out
0
$ gcc -O2 a.c
% ./a.out
(Timeout)