[Bug target/55212] [SH] Switch to LRA
kkojima at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Dec 2 01:17:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #89 from Kazumoto Kojima <kkojima at gcc dot gnu.org> ---
Created attachment 34159
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34159&action=edit
a reduced c++ test case (-O2 -std=gnu++11)
Here is related lines of lra-constraints.c:
4906 save = emit_spill_move (true, new_reg, original_reg);
4907 if (NEXT_INSN (save) != NULL_RTX)
4908 {
4909 lra_assert (! call_save_p);
where
(gdb) p call_save_p
$2 = true
(gdb) call debug_rtx(new_reg)
(reg:DC 270)
(gdb) call debug_rtx(original_reg)
(reg:DC 220 [+8 ])
and emit_spill_move emits 3 instructions
(insn 106 0 107 (clobber (reg:DC 270)) -1
(nil))
(insn 107 106 108 (parallel [
(set (subreg:DF (reg:DC 270) 0)
(subreg:DF (reg:DC 220 [+8 ]) 0))
(use (reg:SI 154 fpscr0))
(clobber (scratch:SI))
]) -1
(nil))
(insn 108 107 0 (parallel [
(set (subreg:DF (reg:DC 270) 8)
(subreg:DF (reg:DC 220 [+8 ]) 8))
(use (reg:SI 154 fpscr0))
(clobber (scratch:SI))
]) -1
(nil))
with emit_move_complex function in expr.c.
More information about the Gcc-bugs
mailing list