aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-10-14 07:19:23 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-10-14 07:19:23 -0400
commiteee4bff6c2e7c18f5dc93387ad83d21370074f81 (patch)
tree192d89899d4fcc76868fca43a2479c2fe08792da /gcc
parenteb9aa33885d0bc047be9c06137bf2044a02b3bdf (diff)
downloadgcc-eee4bff6c2e7c18f5dc93387ad83d21370074f81.zip
gcc-eee4bff6c2e7c18f5dc93387ad83d21370074f81.tar.gz
gcc-eee4bff6c2e7c18f5dc93387ad83d21370074f81.tar.bz2
(call, call_value): Don't use call_operand, since checking for
recursive calls at this point is not safe. From-SVN: r2458
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/a29k/a29k.md10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/config/a29k/a29k.md b/gcc/config/a29k/a29k.md
index c99fa01..316baa4 100644
--- a/gcc/config/a29k/a29k.md
+++ b/gcc/config/a29k/a29k.md
@@ -150,7 +150,10 @@
if (GET_CODE (operands[0]) != MEM)
abort ();
- if (! call_operand (XEXP (operands[0], 0), SImode))
+ /* We tell here whether this is a recursive call, since this insn may
+ later be inlined into another function. */
+ if (! TARGET_SMALL_MEMORY
+ && GET_CODE (XEXP (operands[0], 0)) == SYMBOL_REF)
operands[0] = gen_rtx (MEM, SImode,
force_reg (Pmode, XEXP (operands[0], 0)));
@@ -169,7 +172,10 @@
if (GET_CODE (operands[1]) != MEM)
abort ();
- if (! call_operand (XEXP (operands[1], 0), SImode))
+ /* We tell here whether this is a recursive call, since this insn may
+ later be inlined into another function. */
+ if (! TARGET_SMALL_MEMORY
+ && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF)
operands[1] = gen_rtx (MEM, SImode,
force_reg (Pmode, XEXP (operands[1], 0)));