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.