https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111648
Bug ID: 111648
Summary: Wrong code at -O2/3 on x86_64-linux-gnu since
r14-3243-ga7dba4a1c05
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: shaohua.li at inf dot ethz.ch
CC: prathamesh3492 at gcc dot gnu.org
Target Milestone: ---
gcc at -O2/3 produced the wrong code
Bisected to r14-3243-ga7dba4a1c05
Compiler explorer: https://godbolt.org/z/1bvWTrEK1
$ cat a.c
int printf(const char *, ...);
int a;
int *b = &a;
static int **c = &b;
static int d;
short e;
char f;
int main() {
f = -21;
for (; f < -5; f++) {
e = f ^ 3;
d = *b;
**c = e;
}
printf("%d\n", d);
}
$
$ gcc -O0 a.c && ./a.out
-6
$ gcc -O2 a.c && ./a.out
2
$