https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126999
Bug ID: 126999
Summary: [14/15/16/17 Regression] ICE at -O3 during GIMPLE
pass: vrp
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: xxs_chy at outlook dot com
Target Milestone: ---
Reproducer: https://godbolt.org/z/a7od9eebo
Reduced case:
#include <stdint.h>
typedef void (*fp_t_2)();
void *g12;
uint16_t g22;
_Bool f19_c11;
void f3()
{
lbl_dead2:
goto lbl_dead2;
}
void f19()
{
_Bool c0;
fp_t_2 fp5;
uint16_t v7;
_Bool c10 = fp5 = f19;
lbl_sw1:
if (c0) goto lbl_br5;
if (f19_c11) goto lbl_br53;
if (c10) __builtin_unreachable();
return;
lbl_br5:
c0 = 1 == g22;
if (c0) goto lbl_sw_def26;
if (c10) goto lbl_sw1;
lbl_bf10:
c0 = 0 >= g22;
c10 = g12;
goto lbl_sw1;
lbl_sw_def26:
fp5 = f3;
g22 = v7;
goto lbl_bf10;
lbl_br53:
fp5();
if (c10) __builtin_unreachable();
}
Dump at -O3:
during GIMPLE pass: vrp
/tmp/tmpqts7rqj9/case.c:9313:10: internal compiler error: Segmentation fault
9313 | uint64_t f19(void) {
| ^~~
0x285673d internal_error(char const*, ...)
/data/Projects/compiler-test-env/cte-work/src/gcc/gcc/diagnostic-global-context.cc:787
0x125fd2f crash_signal
/data/Projects/compiler-test-env/cte-work/src/gcc/gcc/toplev.cc:325
0x7c4a8e04251f ???
./signal/../sysdeps/unix/sysv/linux/x86_64/libc_sigaction.c:0
0x15f2b23 remove_unreachable::remove_and_update_globals()
/data/Projects/compiler-test-env/cte-work/src/gcc/gcc/tree-vrp.cc:331
0x15f44cf remove_unreachable::remove_and_update_globals()
/data/Projects/compiler-test-env/cte-work/src/gcc/gcc/tree-vrp.cc:315
0x15f44cf execute_ranger_vrp(function*, bool)
/data/Projects/compiler-test-env/cte-work/src/gcc/gcc/tree-vrp.cc:1101
/data/Projects/compiler-test-env/cte-work/toolchains/gcc/x86_64-linux-gnu/libexec/gcc/x86_64-linux-gnu/17.0.0/cc1
-quiet -imultiarch x86_64-linux-gnu /tmp/tmpqts7rqj9/case.c -quiet -dumpdir
/tmp/tmpqts7rqj9/prog-x86_64-avx2-gcc-O3- -dumpbase case.c -dumpbase-ext .c
-march=x86-64 -msse -msse4.1 -msse4.2 -mavx -mavx2 -mfma -mpopcnt -mbmi2 -O3
-Wall -Wextra -Wno-unused -o /tmp/ccIuaV5y.s