https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100994
Bug ID: 100994 Summary: wrong code with "-O1 -finline-small-functions -fipa-cp" Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: ipa Assignee: unassigned at gcc dot gnu.org Reporter: suochenyao at 163 dot com CC: marxin at gcc dot gnu.org Target Milestone: --- ******************************************************************************* OS and Platform: CentOS Linux release 7.8.2003 (Core), x86_64 GNU/Linux ******************************************************************************* Program: struct a { unsigned b : 4; unsigned c : 9; } const d; int e, f, g; char h; short i; static int(j)() { return 0; } static int k(const struct a l) { for (; g; j() & l.c) ; e = 1; i = e + 6; for (; e != 7; e = i) h = f || l.b; int m = l.c; return 0; } void main() { k(d); } ******************************************************************************* gcc version: $ gcc -v Using built-in specs. COLLECT_GCC=/data/bin/gcc-dev/bin/gcc COLLECT_LTO_WRAPPER=/data/bin/gcc-dev/libexec/gcc/x86_64-pc-linux-gnu/12.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../configure --prefix=/data/bin/gcc-dev --disable-multilib --enable-languages=c,c++ Thread model: posix Supported LTO compression algorithms: zlib gcc version 12.0.0 20210608 (experimental) (GCC) git version: 1afa4facb9348cac0349ff9c30066aa25a3608f7 ******************************************************************************* Command Lines: $ gcc -O1 -finline-small-functions -fipa-cp -Wall -Wextra -fno-strict-aliasing -fwrapv a.c -o a1.out a.c: In function ‘k’: a.c:10:17: warning: value computed is not used [-Wunused-value] 10 | for (; g; j() & l.c) | ~~~~^~~~~ a.c:16:7: warning: unused variable ‘m’ [-Wunused-variable] 16 | int m = l.c; | ^ a.c: At top level: a.c:19:6: warning: return type of ‘main’ is not ‘int’ [-Wmain] 19 | void main() { k(d); } | ^~~~ $ /data/bin/gcc-dev/bin/gcc a.c -o a2.out $ ./a1.out Segmentation fault (core dumped) $ ./a2.out $