[Bug tree-optimization/96483] New: ICE in code hoisting with AArch64 SVE2 intrinsics

ktkachov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Aug 5 11:59:47 GMT 2020


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

            Bug ID: 96483
           Summary: ICE in code hoisting with AArch64 SVE2 intrinsics
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ktkachov at gcc dot gnu.org
  Target Milestone: ---
            Target: aarch64*-*-*

The following (reduced) testcase ICEs on aarch64 with
-O2 -w -march=armv8.2-a+sve2

GCC 10 and trunk ICE. Since the SVE2 intrinsics were introduced in GCC 10 it's
not a regression.

during GIMPLE pass: pre
red.c: In function 'u':
red.c:25:1: internal compiler error: in create_component_ref_by_pieces_1, at
tree-ssa-pre.c:2659
   25 | u () {
      | ^
0xfc03c8 create_component_ref_by_pieces_1
        $SRC/gcc/tree-ssa-pre.c:2659
0xfbe4fc create_expression_by_pieces
        $SRC/gcc/tree-ssa-pre.c:2795
0xfc215b do_hoist_insertion
        $SRC/gcc/tree-ssa-pre.c:3587
0xfc215b insert
        $SRC/gcc/tree-ssa-pre.c:3674
0xfc215b execute
        $SRC/gcc/tree-ssa-pre.c:4224
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

include "arm_sve.h"

typedef unsigned long a;

void
b (svuint8_t *c, int d, char e, int f, char g, int h) {
  svbool_t i = svwhilegt_b8(svcntb(), (a)d);
  *c = svld1_u8(i, d);
}

void
j (struct k *ci, long l, svuint8_t *m, svuint8_t *n, int o, char p, int w) {
  int q = 0, r, s;
  if (l)
    b(m, q, ci, r, ci, s);
  x(m);
}

void
t (svuint8_t *c, int d, char p, struct k *ci, long offset) {
  j(ci, offset, c, 0, d, p, 6);
}

void
u () {
  for (;;) {
    int ci, d;
    long offset;
    svuint8_t v;
    t(&v, d, 1, ci, offset);
  }
}


More information about the Gcc-bugs mailing list