https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67715
Bug ID: 67715 Summary: [6 Regression][ARM] ICE in cselib.c during reload_cse_regs Product: gcc Version: 6.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: ktkachov at gcc dot gnu.org CC: vmakarov at gcc dot gnu.org Target Milestone: --- Target: arm The testcase: typedef struct { unsigned short fld[9][8][8]; } my_struct; extern my_struct *img; void foo (void) { int i,j; int arr[25]; for (i = 0; i < 8; i++) { img->fld[1][i][0] = img->fld[1][i][1] = img->fld[1][i][2] = img->fld[1][i][3] = img->fld[1][i][4] = img->fld[1][i][5] = img->fld[1][i][6] = img->fld[1][i][7] = (&(arr[17]))[i]; } } ICEs on arm after r227382 with: $ arm-none-eabi-gcc -Ofast -S -mcpu=cortex-a57 -mfpu=neon-vfpv4 -mfloat-abi=hard besttry.c besttry.c: In function 'foo': besttry.c:24:1: internal compiler error: in cselib_record_set, at cselib.c:2388 } ^ 0x70a659 cselib_record_set $SRC/gcc/cselib.c:2388 0x70a659 cselib_record_sets $SRC/gcc/cselib.c:2605 0x70b6a8 cselib_process_insn(rtx_insn*) $SRC/gcc/cselib.c:2678 0x9acabd reload_cse_regs_1 $SRC/gcc/postreload.c:235 0x9acf30 reload_cse_regs $SRC/gcc/postreload.c:81 0x9acf30 execute $SRC/gcc/postreload.c:2350 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. The arm cross compiler was configured with --with-fpu=neon-fp-armv8 --with-arch=armv8-a. The ICE occurs at -O3 and -Ofast but not -O1, -O2, -Os, presumably due to vectorization. The insn that's causing the ICE is: #2 cselib_record_sets (insn=insn@entry=0x7ffff7328680) at /work/kyrtka01/local-checkouts/gcc/gcc/cselib.c:2605 2605 cselib_record_set (dest, sets[i].src_elt, sets[i].dest_addr_elt); (gdb) call debug_rtx (insn) (insn 19 17 67 2 (parallel [ (set (reg:V8HI 48 d16 [117]) (unspec:V8HI [ (reg:V8HI 48 d16 [117]) (reg:V8HI 48 d16 [117]) ] UNSPEC_VZIP1)) (set (reg:V8HI 48 d16 [117]) (unspec:V8HI [ (reg:V8HI 48 d16 [117]) (reg:V8HI 48 d16 [117]) ] UNSPEC_VZIP2)) ]) besttry.c:15 1964 {*neon_vzipv8hi_insn} (nil))