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

Reply via email to