https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110393
Bug ID: 110393 Summary: ICE at -O3 with "-fselective-scheduling2 -fPIC": in move_op_ascend, at sel-sched.cc:6150 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: zhendong.su at inf dot ethz.ch Target Milestone: --- It appears to be a regression from 12.*, and affects 13.* and later. Compiler Explorer: https://godbolt.org/z/Tqsbhv461 [629] % gcctk -v Using built-in specs. COLLECT_GCC=gcctk COLLECT_LTO_WRAPPER=/local/home/suz/suz-local/software/local/gcc-trunk/bin/../libexec/gcc/x86_64-pc-linux-gnu/14.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-trunk/configure --disable-bootstrap --enable-checking=yes --prefix=/local/suz-local/software/local/gcc-trunk --enable-sanitizers --enable-languages=c,c++ --disable-werror --disable-multilib Thread model: posix Supported LTO compression algorithms: zlib gcc version 14.0.0 20230623 (experimental) [master r14-924-gd709841ae0f] (GCC) [630] % [630] % gcctk -O3 -fselective-scheduling2 -fPIC small.c during RTL pass: sched2 small.c: In function ‘main’: small.c:40:1: internal compiler error: in move_op_ascend, at sel-sched.cc:6150 40 | } | ^ 0x7d606f move_op_ascend ../../gcc-trunk/gcc/sel-sched.cc:6150 0x7d606f move_op_ascend ../../gcc-trunk/gcc/sel-sched.cc:6142 0xf85287 code_motion_path_driver ../../gcc-trunk/gcc/sel-sched.cc:6648 0xf85dd9 move_op ../../gcc-trunk/gcc/sel-sched.cc:6702 0xf85dd9 move_exprs_to_boundary ../../gcc-trunk/gcc/sel-sched.cc:5223 0xf85dd9 schedule_expr_on_boundary ../../gcc-trunk/gcc/sel-sched.cc:5436 0xf8834f fill_insns ../../gcc-trunk/gcc/sel-sched.cc:5578 0xf8834f schedule_on_fences ../../gcc-trunk/gcc/sel-sched.cc:7353 0xf8834f sel_sched_region_2 ../../gcc-trunk/gcc/sel-sched.cc:7491 0xf8a568 sel_sched_region_1 ../../gcc-trunk/gcc/sel-sched.cc:7533 0xf8bb86 sel_sched_region(int) ../../gcc-trunk/gcc/sel-sched.cc:7634 0xf8bb86 sel_sched_region(int) ../../gcc-trunk/gcc/sel-sched.cc:7619 0xf8bd29 run_selective_scheduling() ../../gcc-trunk/gcc/sel-sched.cc:7720 0xf6d42d rest_of_handle_sched2 ../../gcc-trunk/gcc/sched-rgn.cc:3743 0xf6d42d execute ../../gcc-trunk/gcc/sched-rgn.cc:3890 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. [631] % [631] % cat small.c extern void r(); struct a { int b : 21; int c : 17; volatile int d : 3; int e; } l; int f, j, m, n, o; volatile struct a g; static struct a h, k; static int i; int main() { int p, u, v; q: if (m) { r(); if (j) { k.b = 0; goto s; } } h.d; t: u = f * (i || g.b | k.e); v = (f || 0) * (l.c - (5000000000 & u)); if (v) { if (k.c) goto q; s: if (u) goto w; } short a = p; o = -a * n; h.d = 0 > h.d; p = o; goto t; w: return 0; }