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); } }