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

            Bug ID: 69129
           Summary: [6 Regression] ICE in get_attr_got, at
                    config/mips/mips.md:694 on mips-linux-gnu
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: bootstrap
          Assignee: unassigned at gcc dot gnu.org
          Reporter: doko at gcc dot gnu.org
  Target Milestone: ---

seen with trunk 20160103, building libgfortran

$ gcc/build/./gcc/xgcc
-B/scratch/packages/cross/6/gcc-6-cross-1/gcc/build/./gcc/ -std=gnu11
-fcx-fortran-rules -ffunction-sections -fdata-sections -g -O2 
-minterlink-mips16 -c maxval_r4.i

../../../src/libgfortran/generated/maxval_r4.c: In function 'maxval_r4':
../../../src/libgfortran/generated/maxval_r4.c:200:1: error: unrecognizable
insn:

(insn 691 690 693 2 (parallel [
            (set (mem/c:SI (plus:SI (reg/f:SI 29 $sp)
                        (const_int 16 [0x10])) [11  S4 A32])
                (unspec:SI [
                        (const_int 16 [0x10])
                        (reg:SI 28 $28)
                    ] UNSPEC_POTENTIAL_CPRESTORE))
            (clobber (scratch:SI))
        ]) ../../../src/libgfortran/generated/maxval_r4.c:42 -1
     (expr_list:REG_DEAD (reg:SI 28 $28)
        (nil)))
../../../src/libgfortran/generated/maxval_r4.c:200:1: internal compiler error:
in get_attr_got, at config/mips/mips.md:694
0x8f29a8 _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
        ../../src/gcc/rtl-error.c:108
0x8f29d9 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
        ../../src/gcc/rtl-error.c:116
0xc2a486 get_attr_got(rtx_insn*)
        ../../src/gcc/config/mips/mips.md:694
0xb82f98 mips_insn_has_flexible_gp_ref_p
        ../../src/gcc/config/mips/mips.c:9927
0xb75ea7 mips_find_gp_ref
        ../../src/gcc/config/mips/mips.c:9858
0xb81f51 mips_global_pointer
        ../../src/gcc/config/mips/mips.c:9979
0xb81f51 mips_compute_frame_info
        ../../src/gcc/config/mips/mips.c:10350
0xb8c7ae mips_initial_elimination_offset(int, int)
        ../../src/gcc/config/mips/mips.c:10591
0x8f42b3 rtx_addr_can_trap_p_1
        ../../src/gcc/rtlanal.c:618
0x8f415f rtx_addr_can_trap_p_1
        ../../src/gcc/rtlanal.c:678
0x8f7d3e may_trap_p_1(rtx_def const*, unsigned int)
        ../../src/gcc/rtlanal.c:2819
0x67fc64 can_move_insns_across(rtx_insn*, rtx_insn*, rtx_insn*, rtx_insn*,
basic_block_def*, bitmap_head*, bitmap_head*, rtx_insn**)
        ../../src/gcc/df-problems.c:4156
0xd234d7 dead_or_predicable
        ../../src/gcc/ifcvt.c:5079
0xd2905e find_if_case_1
        ../../src/gcc/ifcvt.c:4770
0xd2905e find_if_header
        ../../src/gcc/ifcvt.c:4171
0xd2905e if_convert
        ../../src/gcc/ifcvt.c:5305
0xd29b2d execute
        ../../src/gcc/ifcvt.c:5495
Please submit a full bug report,
with preprocessed source if appropriate.


_Noreturn fn1() __attribute__((__visibility__("hidden")));
fn2(struct gfc_array_r4 *p1) {
  int a[7];
  float *b;
  int c, n;
  if (c != p1)
    fn1();
  n = 0;
  for (; c; n++) {
    int d;
    if (a[n] != d)
      fn1(n);
  }
  b = p1;
  while (1) {
    *b = 3.40282347e38f;
    if (a[0])
      return;
  }
}

Reply via email to