https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96482
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P1 --- Comment #15 from Martin Liška <marxin at gcc dot gnu.org> --- Ok, I've got a reduced test-case: $ cat bit-cp-crash.c int __attribute__((noinline)) foo(int arg) { if (arg == 3) return 1; if (arg == 4) return 123; __builtin_unreachable (); } int __attribute__((noinline)) baz(int x) { if (x != 0) return foo(3); /* called */ return 1; } int __attribute__((noinline)) bar(int x) { if (x == 0) return foo(5); /* not executed */ return 1; } int main(int argc, char **argv) { int a = bar(argc); int b = baz(argc); __builtin_printf ("a: %d\n", a); __builtin_printf ("b: %d\n", b); if (a != b) __builtin_abort (); return 0; } $ gcc bit-cp-crash.c -O2 -flto && ./a.out Segmentation fault (core dumped) It's a recursive call in: ==14411== Process terminating with default action of signal 11 (SIGSEGV): dumping core ==14411== Access not within mapped region at address 0x1FFE801FF8 ==14411== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==14411== at 0x40118F: baz (in /tmp/a.out) ==14411== If you believe this happened as a result of a stack ==14411== overflow in your program's main thread (unlikely but ==14411== possible), you can try to increase the size of the ==14411== main thread stack using the --main-stacksize= flag. ==14411== The main thread stack size used in this run was 8388608. ==14411== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 because: __attribute__((noinline)) foo (int arg) { <bb 2> [count: 0]: __builtin_unreachable (); }