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

            Bug ID: 96357
           Summary: [10/11 Regression] could not split insn
                    UNSPEC_COND_FSUB with AArch64 SVE
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ktkachov at gcc dot gnu.org
  Target Milestone: ---

The reduced testcase:
typedef int a;
int d;
void e(char f, char *g, char *h, char *l, char * n) {
  double i = d, j = 1.0 - f, k = j ? d : j;
  if (k == 1.0)
    i = 0.0;
  *g = *h = i * 0.5;
  *l = *n = 0;
}

void o() {
  int  a, m, c = o;
  for (; c; c--) {
    char b = a++;
    e(b, m, m + 1, m + 2, m + 3);
    m += 4;
  }
}

ICEs with -w -O3 -march=arvm8.2-a+sve
reduced.c: In function ‘o’:
reduced.c:18:1: error: could not split insn
   18 | }
      | ^
(insn 145 401 149 (set (reg:VNx2DF 39 v7 [orig:145 _127 ] [145])
        (unspec:VNx2DF [
                (reg:VNx2BI 69 p1 [318])
                (unspec:VNx2DF [
                        (reg:VNx2BI 78 p10 [318])
                        (const_int 1 [0x1])
                        (const_vector:VNx2DF [
                                (const_double:DF 1.0e+0 [0x0.8p+1])
                            ])
                        (reg:VNx2DF 37 v5 [orig:152 vect__27.15 ] [152])
                    ] UNSPEC_COND_FSUB)
                (reg:VNx2DF 48 v16 [orig:140 vect_i_26.13 ] [140])
            ] UNSPEC_SEL)) 5775 {*cond_subvnx2df_any_const}
     (expr_list:REG_DEAD (reg:VNx2BI 78 p10 [318])
        (expr_list:REG_DEAD (reg:VNx2BI 69 p1 [318])
            (expr_list:REG_DEAD (reg:VNx2DF 37 v5 [orig:152 vect__27.15 ]
[152])
                (nil)))))
during RTL pass: final

Reply via email to