aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1993-06-08 11:51:25 -0700
committerJim Wilson <wilson@gcc.gnu.org>1993-06-08 11:51:25 -0700
commit401cec230683dd086b9102645941bc190eb0a514 (patch)
tree3a75ccc8f207a7e847aae7f88fa4ef456b2b6d62 /gcc
parent6ffeae97834991f74aa4fbf352f6dd8402e7951e (diff)
downloadgcc-401cec230683dd086b9102645941bc190eb0a514.zip
gcc-401cec230683dd086b9102645941bc190eb0a514.tar.gz
gcc-401cec230683dd086b9102645941bc190eb0a514.tar.bz2
(call_operand, call_operand_address): Accept any address not just REG rtx.
From-SVN: r4651
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sparc/sparc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index e8f831c..5ecaa65b 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -113,7 +113,8 @@ restore_operand (op, mode)
&& (REGNO (op) < 8 || (REGNO (op) >= 24 && REGNO (op) < 32)));
}
-/* PC-relative call insn on SPARC is independent of `memory_operand'. */
+/* Call insn on SPARC can take a PC-relative constant address, or any regular
+ memory address. */
int
call_operand (op, mode)
@@ -123,7 +124,7 @@ call_operand (op, mode)
if (GET_CODE (op) != MEM)
abort ();
op = XEXP (op, 0);
- return (REG_P (op) || CONSTANT_P (op));
+ return (CONSTANT_P (op) || memory_address_p (Pmode, op));
}
int
@@ -131,7 +132,7 @@ call_operand_address (op, mode)
rtx op;
enum machine_mode mode;
{
- return (REG_P (op) || CONSTANT_P (op));
+ return (CONSTANT_P (op) || memory_address_p (Pmode, op));
}
/* Returns 1 if OP is either a symbol reference or a sum of a symbol