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

--- Comment #7 from Alex Coplan <acoplan at gcc dot gnu.org> ---
Here is a testcase with SVE intrinsics that ICEs in the same way at -Os:

$ cat test.cc
#include <arm_sve.h>
char a;
void c(unsigned &, const unsigned &);
void d(char, bool, short, int, int, char e, int, short f, unsigned g) {
  for (int h; h; h++)
    c(g, f);
  while (e)
    a = svaddv(svptrue_pat_b8(SV_VL1),
        svadd_z(svptrue_b8 (), svdup_s8(g), 0));
}
$ aarch64-linux-gnu-gcc -c -Os test.cc -march=armv8.2-a+sve
test.cc: In function ‘void d(char, bool, short int, int, int, char, int, short
int, unsigned int)’:
test.cc:10:1: error: unable to generate reloads for:
   10 | }
      | ^
(insn 39 89 40 5 (set (reg:VNx16QI 121 [ _5 ])
        (unspec:VNx16QI [
                (reg:VNx16BI 119)
                (vec_duplicate:VNx16QI (mem/c:QI (plus:DI (reg/f:DI 65 ap)
                            (const_int 64 [0x40])) [1 g+0 S1 A128]))
                (const_vector:VNx16QI [
                        (const_int 0 [0])
                    ])
            ] UNSPEC_SEL)) "test.cc":8:15 4782 {sve_ld1rvnx16qi}
     (expr_list:REG_DEAD (reg:VNx16BI 119)
        (nil)))
during RTL pass: reload
test.cc:10:1: internal compiler error: in curr_insn_transform, at
lra-constraints.c:4133

Reply via email to