function.c (instantiate_virtual_regs_in_insn): Copy to new reg before forcing mode.

2009-11-30  Steve Ellcey  <sje@cup.hp.com>
	    Jakub Jelinek <jakub@redhat.com>

	* function.c (instantiate_virtual_regs_in_insn): Copy to new reg
	before forcing mode.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r154843
This commit is contained in:
Steve Ellcey 2009-11-30 22:06:19 +00:00 committed by Steve Ellcey
parent d64728cf05
commit f7ce0951b7
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2009-11-30 Steve Ellcey <sje@cup.hp.com>
Jakub Jelinek <jakub@redhat.com>
* function.c (instantiate_virtual_regs_in_insn): Copy to new reg
before forcing mode.
2009-11-30 Anatoly Sokolov <aesok@post.ru>
* config/sh/sh.c (sh_promote_prototypes): Make static.

View File

@ -1598,7 +1598,13 @@ instantiate_virtual_regs_in_insn (rtx insn)
if (!safe_insn_predicate (insn_code, i, x))
{
start_sequence ();
x = force_reg (insn_data[insn_code].operand[i].mode, x);
if (REG_P (x))
{
gcc_assert (REGNO (x) <= LAST_VIRTUAL_REGISTER);
x = copy_to_reg (x);
}
else
x = force_reg (insn_data[insn_code].operand[i].mode, x);
seq = get_insns ();
end_sequence ();
if (seq)