[Bug target/55212] [SH] Switch from IRA to LRA
kkojima at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Sep 21 22:52:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #25 from Kazumoto Kojima <kkojima at gcc dot gnu.org> ---
Created attachment 33524
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33524&action=edit
Reduced test case for ICE in assign_by_spill
I've looked into what is going on for the ICE in assign_by_spill.
The above test case ICEs on sh-elf with
"-m4 -ml -O1 -ftree-parallelize-loops=4 -ftree-vectorize".
.ira and .reload dumps show that the load and store insns
42: r208:SI=[r202:SI+r185:SI]
43: [r207:SI+r200:SI]=r218:HI // r218 = subreg:HI r208
are reloaded like as
73: r217:SI=r200:SI
79: r223:SI=r185:SI
74: r218:HI=[r202:SI+r223:SI]
43: [r207:SI+r217:SI]=r218:HI
and R0_REGS is assigned to both r217 and r223 because the only
register R0 can be used as the index register on SH. .reload says
that the original insn 42 is deleted and the source operand r218
of insn 43 is substituted with its equiv [r202:SI+r185:SI].
It seems that it works also for SH if reload insn 73 was inserted
at just before insn 43. I've attached .reload dump for this too.
More information about the Gcc-bugs
mailing list