summaryrefslogtreecommitdiff
path: root/gcc/config/ns32k/ns32k.md
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1994-09-06 22:24:43 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1994-09-06 22:24:43 +0000
commitcf4491e94fe82c43330e4d4e4847974d4fa61ea0 (patch)
tree2a8b34354ad02f0b44595481300fc86f1d887cc3 /gcc/config/ns32k/ns32k.md
parent5cbb8e38579bb20121b969386d2dad4062dfcb68 (diff)
downloadgcc-cf4491e94fe82c43330e4d4e4847974d4fa61ea0.tar.gz
(stackadjust/push peepholes): For the adjust/push/push pattern one offset
was wrong. Don't use addr for register and and MEM refs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8027 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/ns32k/ns32k.md')
-rw-r--r--gcc/config/ns32k/ns32k.md14
1 files changed, 10 insertions, 4 deletions
diff --git a/gcc/config/ns32k/ns32k.md b/gcc/config/ns32k/ns32k.md
index cfd4cfd2ef4..e644740aa69 100644
--- a/gcc/config/ns32k/ns32k.md
+++ b/gcc/config/ns32k/ns32k.md
@@ -2702,7 +2702,9 @@
if (GET_CODE (operands[1]) == CONST_INT)
output_asm_insn (output_move_dconst (INTVAL (operands[1]), \"%$%1,0(sp)\"),
operands);
- else if (address_operand (operands[1], SImode))
+ else if (GET_CODE (operands[1]) != REG
+ && GET_CODE (operands[1]) != MEM
+ && address_operand (operands[1], SImode))
output_asm_insn (\"addr %a1,0(sp)\", operands);
else
output_asm_insn (\"movd %1,0(sp)\", operands);
@@ -2724,15 +2726,19 @@
if (GET_CODE (operands[1]) == CONST_INT)
output_asm_insn (output_move_dconst (INTVAL (operands[1]), \"%$%1,4(sp)\"),
operands);
- else if (address_operand (operands[1], SImode))
- output_asm_insn (\"addr %a1,0(sp)\", operands);
+ else if (GET_CODE (operands[1]) != REG
+ && GET_CODE (operands[1]) != MEM
+ && address_operand (operands[1], SImode))
+ output_asm_insn (\"addr %a1,4(sp)\", operands);
else
output_asm_insn (\"movd %1,4(sp)\", operands);
if (GET_CODE (operands[3]) == CONST_INT)
output_asm_insn (output_move_dconst (INTVAL (operands[3]), \"%$%3,0(sp)\"),
operands);
- else if (address_operand (operands[3], SImode))
+ else if (GET_CODE (operands[3]) != REG
+ && GET_CODE (operands[3]) != MEM
+ && address_operand (operands[3], SImode))
output_asm_insn (\"addr %a3,0(sp)\", operands);
else
output_asm_insn (\"movd %3,0(sp)\", operands);