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

             Bug #: 53250
           Summary: [4.8 Regression] [SH] ICE: in change_address_1, at
                    emit-rtl.c:2018
    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: sh4-unknown-linux-gnu


On sh4-unknown-linux-gnu, there are many new failures after revision
187015.  The typical example is gcc.c-torture/compile/20071102-1.c
which fails with

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

It seems that rtls like

(subreg:SF (reg:DI ...) 4)
(subreg:SF (reg:V2SF ...) 4)

cause this error when regs are on stack.  If my memory is correct,
the similar issue has popped up on oleg's work for QI/HImode addressing
with displacement.  The above rtls are not illegal but problematic
when regs are on stack because SH has no load/store instructions
for FP registers and memory with displacement.  Before lowering
subregs change in revision 187015, these subregs were decomposed
into subregs with zero byte count.
The trails of PR53716 say that the appropriate target-wise cost
computation is needed, though I can't find the way to enable
lowering the above subregs with adjusting SH's rtx cost computations.

Reply via email to