mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-11 11:50:59 +08:00
sh.md (movdf): When splitting load into pair of registers...
* config/sh/sh.md (movdf): When splitting load into pair of registers, don't clobber the register used in the address too early. From-SVN: r38722
This commit is contained in:
parent
fcbd8ef220
commit
18a7c2a7a1
@ -1,3 +1,9 @@
|
||||
2001-01-05 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* config/sh/sh.md (movdf): When splitting load into pair of
|
||||
registers, don't clobber the register used in the address too
|
||||
early.
|
||||
|
||||
2001-01-05 Jeffrey Oldham <oldham@codesourcery.com>
|
||||
|
||||
* varasm.c (mark_constant_pool): Improve initial comments.
|
||||
|
@ -2745,15 +2745,29 @@
|
||||
offset = 4;
|
||||
mem = copy_rtx (mem);
|
||||
PUT_MODE (mem, SImode);
|
||||
word0 = gen_rtx(SUBREG, SImode, regop, 0);
|
||||
emit_insn (store_p
|
||||
? gen_movsi_ie (mem, word0) : gen_movsi_ie (word0, mem));
|
||||
emit_insn (gen_addsi3 (reg0, reg0, GEN_INT (offset)));
|
||||
mem = copy_rtx (mem);
|
||||
word1 = gen_rtx(SUBREG, SImode, regop, 1);
|
||||
emit_insn (store_p
|
||||
? gen_movsi_ie (mem, word1) : gen_movsi_ie (word1, mem));
|
||||
emit_insn (gen_addsi3 (reg0, reg0, GEN_INT (-offset)));
|
||||
word0 = alter_subreg (gen_rtx (SUBREG, SImode, regop, 0));
|
||||
word1 = alter_subreg (gen_rtx (SUBREG, SImode, regop, 1));
|
||||
if (store_p || ! refers_to_regno_p (REGNO (word0),
|
||||
REGNO (word0) + 1, addr, 0))
|
||||
{
|
||||
emit_insn (store_p
|
||||
? gen_movsi_ie (mem, word0)
|
||||
: gen_movsi_ie (word0, mem));
|
||||
emit_insn (gen_addsi3 (reg0, reg0, GEN_INT (offset)));
|
||||
mem = copy_rtx (mem);
|
||||
emit_insn (store_p
|
||||
? gen_movsi_ie (mem, word1)
|
||||
: gen_movsi_ie (word1, mem));
|
||||
emit_insn (gen_addsi3 (reg0, reg0, GEN_INT (-offset)));
|
||||
}
|
||||
else
|
||||
{
|
||||
emit_insn (gen_addsi3 (reg0, reg0, GEN_INT (offset)));
|
||||
emit_insn (gen_movsi_ie (word1, mem));
|
||||
emit_insn (gen_addsi3 (reg0, reg0, GEN_INT (-offset)));
|
||||
mem = copy_rtx (mem);
|
||||
emit_insn (gen_movsi_ie (word0, mem));
|
||||
}
|
||||
DONE;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user