http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54699



             Bug #: 54699

           Summary: [4.8 Regression] [SH] gfortran.dg/class_array_9.f03

                    ICEs

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Keywords: ice-on-valid-code

          Severity: normal

          Priority: P3

         Component: target

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: kkoj...@gcc.gnu.org

                CC: olege...@gcc.gnu.org

            Target: sh*-*-*





gfortran.dg/class_array_9.f03 ICEs for a while on sh4-unknown-linux-gnu.



FAIL: gfortran.dg/class_array_9.f03  -O0  (internal compiler error)



gfortran.log says:



internal compiler error: in change_address_1, at emit-rtl.c:2006



Here is a gdb's backtrace for f951:



(gdb) bt

#0  internal_error (gmsgid=0x8abd243 "in %s, at %s:%d")

    at ../../ORIG/trunk/gcc/diagnostic.c:951

#1  0x0897228f in fancy_abort (

    file=0x89fedb8 "../../ORIG/trunk/gcc/emit-rtl.c", line=2006, 

    function=0x89feba1 "change_address_1")

    at ../../ORIG/trunk/gcc/diagnostic.c:1011

#2  0x0832006b in change_address_1 (memref=0xb7db49f0, mode=SFmode, 

    addr=0xb7dcfbe8, validate=1) at ../../ORIG/trunk/gcc/emit-rtl.c:2006

#3  0x08323c9e in adjust_address_1 (memref=0xb7db49f0, mode=SFmode, offset=4, 

    validate=1, adjust_address=1, adjust_object=0)

    at ../../ORIG/trunk/gcc/emit-rtl.c:2111

#4  0x0836ea01 in alter_subreg (xp=0xb7dcf850)

    at ../../ORIG/trunk/gcc/final.c:3004

#5  0x0836ec50 in cleanup_subreg_operands (insn=0xb7dd0384)

    at ../../ORIG/trunk/gcc/final.c:2951

#6  0x0852f941 in reload (first=0xb7dad680, global=0)

    at ../../ORIG/trunk/gcc/reload1.c:1241

#7  0x08468e49 in do_reload () at ../../ORIG/trunk/gcc/ira.c:4328

#8  rest_of_handle_reload () at ../../ORIG/trunk/gcc/ira.c:4419

#9  0x084e2305 in execute_one_pass (pass=0x8ba03e0)

    at ../../ORIG/trunk/gcc/passes.c:2199

#10 0x084e26a5 in execute_pass_list (pass=0x8ba03e0)

    at ../../ORIG/trunk/gcc/passes.c:2254

---Type <return> to continue, or q <return> to quit---q

Quit

(gdb) fr 2

#2  0x0832006b in change_address_1 (memref=0xb7db49f0, mode=SFmode, 

    addr=0xb7dcfbe8, validate=1) at ../../ORIG/trunk/gcc/emit-rtl.c:2006

2006        gcc_assert (memory_address_addr_space_p (mode, addr, as));

(gdb) p addr

$1 = (rtx_def *) 0xb7dcfbe8

(gdb) call debug_rtx(addr)

(plus:SI (reg/f:SI 14 r14)

    (const_int 4 [0x4]))



(gdb) fr 4

#4  0x0836ea01 in alter_subreg (xp=0xb7dcf850)

    at ../../ORIG/trunk/gcc/final.c:3004

3004          *xp = adjust_address (y, GET_MODE (x), offset);

(gdb) p xp

$1 = (rtx *) 0xb7dcf850

(gdb) call debug_rtx(*xp)

(subreg:SF (mem/c:DI (reg/f:SI 14 r14) [0 %sfp+-200 S8 A32]) 4)



(gdb) fr 5

#5  0x0836ec50 in cleanup_subreg_operands (insn=0xb7dd0384)

    at ../../ORIG/trunk/gcc/final.c:2951

2951          recog_data.operand[i] = alter_subreg (recog_data.operand_loc[i]);

(gdb) call debug_rtx(insn)

(insn 1124 661 1125 67 (parallel [

            (set (subreg:SF (mem/c:DI (reg/f:SI 14 r14) [0 %sfp+-200 S8 A32])

4)

                (reg:SF 0 r0))

            (use (reg/v:PSI 151 ))

            (clobber (scratch:SI))

        ]) ch9.f03:38 269 {movsf_ie}

     (nil))



Looks that something wrong happens during reload and it requests

an illegal memory address r14+4 for SFmode on SH.

It started to fail between trunk revision 185498 and 185552.

Perhaps related to the changes for PR target/50751.

Reply via email to