sh.md (call): Extend 32-bit addresses to DImode for 32-bit TARGET_SHMEDIA.

* config/sh/sh.md (call): Extend 32-bit addresses to DImode
	for 32-bit TARGET_SHMEDIA.
	(call_value): Likewise.

From-SVN: r87619
This commit is contained in:
Kaz Kojima 2004-09-16 23:37:00 +00:00
parent 67bcc25224
commit e57450ce82
2 changed files with 24 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2004-09-16 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/sh.md (call): Extend 32-bit addresses to DImode
for 32-bit TARGET_SHMEDIA.
(call_value): Likewise.
2004-09-16 Diego Novillo <dnovillo@redhat.com> 2004-09-16 Diego Novillo <dnovillo@redhat.com>
* tree-ssa-operands.c (add_call_clobber_ops): Make read-only * tree-ssa-operands.c (add_call_clobber_ops): Make read-only

View File

@ -5800,11 +5800,19 @@
if (GET_MODE (operands[0]) != DImode) if (GET_MODE (operands[0]) != DImode)
operands[0] = gen_rtx_SUBREG (DImode, operands[0], 0); operands[0] = gen_rtx_SUBREG (DImode, operands[0], 0);
} }
else else if (TARGET_SHMEDIA64)
{ {
operands[0] = shallow_copy_rtx (operands[0]); operands[0] = shallow_copy_rtx (operands[0]);
PUT_MODE (operands[0], DImode); PUT_MODE (operands[0], DImode);
} }
else
{
rtx reg = gen_reg_rtx (DImode);
operands[0] = copy_to_mode_reg (SImode, operands[0]);
emit_insn (gen_extendsidi2 (reg, operands[0]));
operands[0] = reg;
}
} }
if (! target_reg_operand (operands[0], DImode)) if (! target_reg_operand (operands[0], DImode))
operands[0] = copy_to_mode_reg (DImode, operands[0]); operands[0] = copy_to_mode_reg (DImode, operands[0]);
@ -6025,11 +6033,19 @@
if (GET_MODE (operands[1]) != DImode) if (GET_MODE (operands[1]) != DImode)
operands[1] = gen_rtx_SUBREG (DImode, operands[1], 0); operands[1] = gen_rtx_SUBREG (DImode, operands[1], 0);
} }
else else if (TARGET_SHMEDIA64)
{ {
operands[1] = shallow_copy_rtx (operands[1]); operands[1] = shallow_copy_rtx (operands[1]);
PUT_MODE (operands[1], DImode); PUT_MODE (operands[1], DImode);
} }
else
{
rtx reg = gen_reg_rtx (DImode);
operands[1] = copy_to_mode_reg (SImode, operands[1]);
emit_insn (gen_extendsidi2 (reg, operands[1]));
operands[1] = reg;
}
} }
if (! target_reg_operand (operands[1], DImode)) if (! target_reg_operand (operands[1], DImode))
operands[1] = copy_to_mode_reg (DImode, operands[1]); operands[1] = copy_to_mode_reg (DImode, operands[1]);