https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111331
Bug ID: 111331
Summary: Wrong code at -O1 on x86_64-linux-gnu since
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 -O1 produced the wrong code.
Bisected to r9-3606-g1cab645d3e3
Compiler explorer: https://godbolt.org/z/5YEv44PTa
$ cat a.c
int printf(const char *, ...);
int a;
int b;
int c(int d, int e, int f) {
if (d < e)
return e;
if (d > f)
return f;
return d;
}
int main() {
int g = -1;
a = c(b + 30, 29, g + 29);
printf("%d\n", a);
}
$
$ gcc -O0 a.c && ./a.out
28
$ gcc -O1 a.c && ./a.out
29
$