https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106278

            Bug ID: 106278
           Summary: ICE on valid code at -Os and above on
                    x86_64-linux-gnu: in ix86_output_ssemov, at
                    config/i386/i386.cc:5555
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zhendong.su at inf dot ethz.ch
  Target Milestone: ---

It appears to be a recent regression.

[552] % gcctk -v
Using built-in specs.
COLLECT_GCC=gcctk
COLLECT_LTO_WRAPPER=/local/suz-local/software/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../gcc-trunk/configure --disable-bootstrap
--prefix=/local/suz-local/software/local/gcc-trunk --enable-sanitizers
--enable-languages=c,c++ --disable-werror --enable-multilib --with-system-zlib
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 13.0.0 20220713 (experimental) [master r13-1652-g43997608a08] (GCC)
[553] %
[553] % gcctk -O1 small.c; ./a.out
[554] %
[554] % gcctk -Os small.c
during RTL pass: final
small.c: In function ‘main’:
small.c:20:1: internal compiler error: in ix86_output_ssemov, at
config/i386/i386.cc:5555
   20 | }
      | ^
0x7ba8c7 ix86_output_ssemov(rtx_insn*, rtx_def**)
        ../../gcc-trunk/gcc/config/i386/i386.cc:5555
0xb2ce53 final_scan_insn_1
        ../../gcc-trunk/gcc/final.cc:2826
0xb2d35b final_scan_insn(rtx_insn*, _IO_FILE*, int, int, int*)
        ../../gcc-trunk/gcc/final.cc:2939
0xb2d43c final_1
        ../../gcc-trunk/gcc/final.cc:1996
0xb2e034 rest_of_handle_final
        ../../gcc-trunk/gcc/final.cc:4284
0xb2e034 execute
        ../../gcc-trunk/gcc/final.cc:4364
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.
[555] %
[555] % cat small.c
void __assert_fail();
struct a {
  int b;
  int c;
  int d;
  int : 2;
};
int e, f;
struct a g, i;
const struct a h;
int main() {
  struct a j;
  g = h;
  if (e)
    __assert_fail();
  if (f)
    j = h;
  i = j;
  return 0;
}

Reply via email to