https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118638
Bug ID: 118638
Summary: Miscompile with -Os and -O0/1/2/3
Product: gcc
Version: 14.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: yunboni at smail dot nju.edu.cn
Target Milestone: ---
This code prints -1 at -O0/1/2/3 and 3 at -Os:
```c
int printf(const char *, ...);
int a;
int b(int f) {
int c = f ? 1 : 0, d = f ? 1 : 0, e = f ? 1 : 0;
return c + d + e;
}
int g() {
if (!((b(a + 3) + (a - 9 + a)) & 1))
return -1;
return 0;
}
int main() {
int h = g();
printf("%X\n", h);
}
```
Compiler Explorer: https://godbolt.org/z/fa3qP15d3
It starts with x86-64 gcc 14.1.