https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106347
Bug ID: 106347 Summary: [13 Regression] ICE in ix86_output_ssemov, at config/i386/i386.cc:5565, or ICE in final_scan_insn_1, at final.cc:2860 (error: could not split insn) Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- Target: x86_64-unknown-linux-gnu 1. gcc 13.0.0 20220717 snapshot (g:7bcd7f47359b903bf7a193b95d4450d9d69c60ba) ICEs when compiling the following testcase w/ -O2 -fno-expensive-optimizations: __int128 m; int n; __attribute__ ((noinline)) int return_zero (void) { return 0; } void foo (void) { while (m < 0) { if (n || return_zero ()) __builtin_trap (); ++m; } } % x86_64-unknown-linux-gnu-gcc-13.0.0 -O2 -fno-expensive-optimizations -c n75cwvsz.c during RTL pass: final n75cwvsz.c: In function 'foo': n75cwvsz.c:20:1: internal compiler error: in ix86_output_ssemov, at config/i386/i386.cc:5565 20 | } | ^ 0x7bc5e8 ix86_output_ssemov(rtx_insn*, rtx_def**) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/config/i386/i386.cc:5565 0xb34761 final_scan_insn_1 /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:2826 0xb34d0b final_scan_insn(rtx_insn*, _IO_FILE*, int, int, int*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:2939 0xb34eb4 final_1 /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:1996 0xb35a66 rest_of_handle_final /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:4284 0xb35a66 execute /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:4364 2. Changing "while (m < 0)" to "while (m < 1)" yields the following ICE instead: n75cwvsz.c:20:1: error: could not split insn 20 | } | ^ (insn:TI 3 57 93 5 (set (mem/c:V1TI (reg/f:DI 7 sp) [3 %sfp+-16 S16 A128]) (reg:TI 4 si [orig:84 _3 ] [84])) "n75cwvsz.c":18:7 81 {*movti_internal} (nil)) during RTL pass: final n75cwvsz.c:20:1: internal compiler error: in final_scan_insn_1, at final.cc:2860 0x727cc3 _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/rtl-error.cc:108 0x6bc2f0 final_scan_insn_1 /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:2860 0xb34d0b final_scan_insn(rtx_insn*, _IO_FILE*, int, int, int*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:2939 0xb34eb4 final_1 /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:1996 0xb35a66 rest_of_handle_final /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:4284 0xb35a66 execute /var/tmp/portage/sys-devel/gcc-13.0.0_p20220717/work/gcc-13-20220717/gcc/final.cc:4364