Fix indexing off arg ptr & push of byte values.

From-SVN: r7994
This commit is contained in:
Michael Meissner 1994-08-28 03:22:52 +00:00
parent e9954ee434
commit 91f0226f7c
3 changed files with 16 additions and 13 deletions

View File

@ -1076,6 +1076,15 @@ legitimate_address_p (mode, addr, strict)
else
disp = addr; /* displacement */
/* Allow arg pointer and stack pointer as index if there is not scaling */
if (base && indx && !scale
&& (indx == arg_pointer_rtx || indx == stack_pointer_rtx))
{
rtx tmp = base;
base = indx;
indx = tmp;
}
/* Validate base register */
if (base)
{

View File

@ -498,7 +498,7 @@ enum reg_class
0x3, /* AD_REGS */ \
0xf, /* Q_REGS */ \
0x10, 0x20, /* SIREG, DIREG */ \
0x1007f, /* INDEX_REGS */ \
0x07f, /* INDEX_REGS */ \
0x100ff, /* GENERAL_REGS */ \
0x0100, 0x0200, /* FP_TOP_REG, FP_SECOND_REG */ \
0xff00, /* FLOAT_REGS */ \

View File

@ -778,8 +778,7 @@
else if (TARGET_MOVE
&& (reload_in_progress | reload_completed) == 0
&& GET_CODE (operands[0]) == MEM
&& GET_CODE (operands[1]) == MEM
&& (!TARGET_386 || !push_operand (operands[0], SImode)))
&& GET_CODE (operands[1]) == MEM)
{
operands[1] = force_reg (SImode, operands[1]);
}
@ -842,8 +841,7 @@
if (TARGET_MOVE
&& (reload_in_progress | reload_completed) == 0
&& GET_CODE (operands[0]) == MEM
&& GET_CODE (operands[1]) == MEM
&& (!TARGET_386 || !push_operand (operands[0], HImode)))
&& GET_CODE (operands[1]) == MEM)
{
operands[1] = force_reg (HImode, operands[1]);
}
@ -892,8 +890,7 @@
if (TARGET_MOVE
&& (reload_in_progress | reload_completed) == 0
&& GET_CODE (operands[0]) == MEM
&& GET_CODE (operands[1]) == MEM
&& (!TARGET_386 || !push_operand (operands[0], HImode)))
&& GET_CODE (operands[1]) == MEM)
{
operands[1] = force_reg (HImode, operands[1]);
}
@ -969,8 +966,7 @@
if (TARGET_MOVE
&& (reload_in_progress | reload_completed) == 0
&& GET_CODE (operands[0]) == MEM
&& GET_CODE (operands[1]) == MEM
&& (!TARGET_386 || !push_operand (operands[0], QImode)))
&& GET_CODE (operands[1]) == MEM)
{
operands[1] = force_reg (QImode, operands[1]);
}
@ -1024,8 +1020,7 @@
if (TARGET_MOVE
&& (reload_in_progress | reload_completed) == 0
&& GET_CODE (operands[0]) == MEM
&& GET_CODE (operands[1]) == MEM
&& (!TARGET_386 || !push_operand (operands[0], QImode)))
&& GET_CODE (operands[1]) == MEM)
{
operands[1] = force_reg (QImode, operands[1]);
}
@ -1384,8 +1379,7 @@
if (TARGET_MOVE
&& (reload_in_progress | reload_completed) == 0
&& GET_CODE (operands[0]) == MEM
&& GET_CODE (operands[1]) == MEM
&& (!TARGET_386 || !push_operand (operands[0], QImode)))
&& GET_CODE (operands[1]) == MEM)
{
operands[1] = force_reg (DImode, operands[1]);
}