https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97812
Bug ID: 97812 Summary: Wrong output when compiling the testcase with -O2 -flto Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: qiaopeixin at huawei dot com CC: marxin at gcc dot gnu.org Target Milestone: --- Hi, gcc-trunk outputs wrong result when compiling the following testcase with -O2 -flto: #include<stdio.h> short a; volatile short b = 4066; char c; int main() { unsigned d = b & 2305; signed char e = d; c = e ? : e; if (d) { printf("%d\n", a); } } $gcc -O0 -w test.c && ./a.out 0 $gcc -O2 -flto -w test.c && ./a.out (nothing) gcc version 11.0.0 20201111 (experimental) (GCC)