[Bug target/99766] New: ICE: unable to generate reloads with SVE code

ktkachov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Mar 25 09:47:15 GMT 2021


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

            Bug ID: 99766
           Summary: ICE: unable to generate reloads with SVE code
           Product: gcc
           Version: 11.0
            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: ---
            Target: aarch64

#include <arm_sve.h>
#include <vector>
typedef float b __attribute__((__mode__(HF)));
typedef struct {
  b c;
  b d;
} e;
int f;
e *g;
void l(int s) {
  std::vector<e> m(s);
  for (; f;) {
    auto a = &g[0];
    for (int i;; ++i) {
      int n = i;
      auto o = &a[n];
      auto p = &m[i];
      float16_t q;
      for (int k; k < s;)
        for (int j; j < i; ++j) {
          auto r = o;
          for (k = 0; k < s; ++k)
            p[k].c = r[k].c * r[k].d;
        }
      for (int k; k < s; ++k) {
        p[k].c *= q;
        p[k].d *= q;
      }
    }
  }
}

With -std=c++17 -O3  -march=armv8.5-a+sve2 ICEs with:
ice.c: In function 'void l(int)':
ice.c:31:1: error: unable to generate reloads for:
   31 | }
      | ^
(insn 312 308 326 39 (set (subreg:VNx4SI (reg:VNx8HF 105 [ _17 ]) 0)
        (unspec:VNx4SI [
                (subreg:VNx4BI (reg:VNx16BI 365) 0)
                (vec_duplicate:VNx4SI (mem/c:SI (plus:DI (reg/f:DI 64 sfp)
                            (const_int 272 [0x110])) [12  S4 A128]))
                (const_vector:VNx4SI [
                        (const_int 0 [0])
                    ])
            ] UNSPEC_SEL)) 4825 {sve_ld1rvnx4si}
     (nil))
during RTL pass: reload

This seems to be very recent. A trunk from 23 March doesn't ICE


More information about the Gcc-bugs mailing list