[Bug rtl-optimization/67715] New: [6 Regression][ARM] ICE in cselib.c during reload_cse_regs

ktkachov at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Sep 24 16:05:00 GMT 2015


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



More information about the Gcc-bugs mailing list