This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/55212] [SH] Switch to LRA
- From: "kkojima at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 02 Dec 2014 01:16:42 +0000
- Subject: [Bug target/55212] [SH] Switch to LRA
- Auto-submitted: auto-generated
- References: <bug-55212-4 at http dot gcc dot gnu dot org/bugzilla/>
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.