Bug 42031 - Thumb2 ICE - spill failure.
Summary: Thumb2 ICE - spill failure.
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 4.5.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-11-13 17:22 UTC by Ramana Radhakrishnan
Modified: 2009-11-14 18:25 UTC (History)
2 users (show)

See Also:
Host: x86_64 linux gnu
Target: arm-eabi
Build: x86_64-linux
Known to work:
Known to fail:
Last reconfirmed:


Attachments
Reduced testcase. (601 bytes, text/plain)
2009-11-13 17:23 UTC, Ramana Radhakrishnan
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ramana Radhakrishnan 2009-11-13 17:22:55 UTC
The patch here http://gcc.gnu.org/ml/gcc-patches/2009-11/msg00515.html breaks CSibe builds at Os for thumb2. I've attached a reduced testcase with this bug report. This was reduced from linux-2.4.23/fs/nfs/read.c .

Building with -fno-schedule-insns works. 

Command Line options used -mcpu=cortex-a8 -mthumb -Os.


besttry.c:75:1: error: unable to find a register to spill in class 'LO_REGS'
besttry.c:75:1: error: this is the insn:
(insn 28 32 29 3 besttry.c:52 (parallel [
            (set (reg:DI 162)
                (plus:DI (zero_extend:DI (reg:SI 161 [ req_6(D)->wb_offset ]))
                    (reg:DI 173 [orig:158 D.2071 ] [158])))
            (clobber (reg:CC 24 cc))
        ]) 3 {*adddi_zesidi_di} (expr_list:REG_DEAD (reg:SI 161 [ req_6(D)->wb_offset ])
        (expr_list:REG_UNUSED (reg:CC 24 cc)
            (expr_list:REG_EQUIV (mem/s:DI (reg:SI 133 [ D.2071 ]) [7 0B->args.offset+0 S8 A64])
                (nil)))))
besttry.c:75:1: internal compiler error: in spill_failure, at reload1.c:2141
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
Comment 1 Ramana Radhakrishnan 2009-11-13 17:23:54 UTC
Created attachment 19011 [details]
Reduced testcase.
Comment 2 Richard Earnshaw 2009-11-14 18:17:39 UTC
Subject: Bug 42031

Author: rearnsha
Date: Sat Nov 14 18:17:21 2009
New Revision: 154182

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154182
Log:
	PR target/42031
	* arm.md (adddi_sesidi_di): Place tied contraint first.
	(adddi_zesidi_di, subdi_di_zesidi, subdi_di_sesidi): Likewise
	(subdi_zesidi_di, subdi_sesidi_di): Likewise.
	(mulsi3_compare0, mulsi_compare0_scratch): Likewise.
	(mulsi3addsi, mulsi3addsi_compare0): Likewise.
	(mulsi3addsi_compare0_scratch, smulsi3_highpart_nov6): Likewise.
	(umulsi3_highpart_nov6, anddi_zesidi_di, anddi_sesdi_di): Likewise.
	(anddi_notdi_di, iordi_sesidi_di, xordi_sesidi_di): Likewise.
	(andsi_iorsi3_notsi, arm_ashldi3_1bit, arm_ashrdi3_1_bit): Likewise.
	(arm_lshrdi3_1bit, one_cmpldi2): Likewise.

Modified:
    trunk/gcc/ChangeLog

Comment 3 Richard Earnshaw 2009-11-14 18:25:13 UTC
Fixed with posted patch