aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/fr30
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>2000-01-14 07:29:20 +0000
committerJeff Law <law@gcc.gnu.org>2000-01-14 00:29:20 -0700
commit6e11d5e9ae626a849454e97de2f533277a928153 (patch)
treea56d71bd4c3cba8a3b0a0e79d7dde876fcccd95e /gcc/config/fr30
parentc99df6842df4868171d10a8e74f58d8c2022866f (diff)
downloadgcc-6e11d5e9ae626a849454e97de2f533277a928153.zip
gcc-6e11d5e9ae626a849454e97de2f533277a928153.tar.gz
gcc-6e11d5e9ae626a849454e97de2f533277a928153.tar.bz2
fr30.c (call_operand): Tighten and rework to match rules for call RTL expressions.
* fr30.c (call_operand): Tighten and rework to match rules for call RTL expressions. * fr30.h (PREDICATE_CODES, case call_operand): Only allow MEMs. * fr30.md (call patterns): Improve constraints. From-SVN: r31405
Diffstat (limited to 'gcc/config/fr30')
-rw-r--r--gcc/config/fr30/fr30.c8
-rw-r--r--gcc/config/fr30/fr30.h2
-rw-r--r--gcc/config/fr30/fr30.md4
3 files changed, 7 insertions, 7 deletions
diff --git a/gcc/config/fr30/fr30.c b/gcc/config/fr30/fr30.c
index a24ac27..319ea24 100644
--- a/gcc/config/fr30/fr30.c
+++ b/gcc/config/fr30/fr30.c
@@ -847,11 +847,11 @@ low_register_operand (operand, mode)
int
call_operand (operand, mode)
rtx operand;
- Mmode mode;
+ Mmode mode ATTRIBUTE_UNUSED;
{
- return nonimmediate_operand (operand, mode)
- || (GET_CODE (operand) == MEM
- && GET_CODE (XEXP (operand, 0)) == SYMBOL_REF);
+ return (GET_CODE (operand) == MEM
+ && (GET_CODE (XEXP (operand, 0)) == SYMBOL_REF
+ || GET_CODE (XEXP (operand, 0)) == REG));
}
/* Returns true iff all the registers in the operands array
diff --git a/gcc/config/fr30/fr30.h b/gcc/config/fr30/fr30.h
index 0a91499..f28ab37 100644
--- a/gcc/config/fr30/fr30.h
+++ b/gcc/config/fr30/fr30.h
@@ -1746,7 +1746,7 @@ extern struct rtx_def * fr30_compare_op1;
{ "stack_add_operand", { CONST_INT }}, \
{ "high_register_operand", { REG }}, \
{ "low_register_operand", { REG }}, \
- { "call_operand", { REG, MEM }}, \
+ { "call_operand", { MEM }}, \
{ "fp_displacement_operand", { CONST_INT }}, \
{ "sp_displacement_operand", { CONST_INT }}, \
{ "add_immediate_operand", { REG, CONST_INT }},
diff --git a/gcc/config/fr30/fr30.md b/gcc/config/fr30/fr30.md
index 8dcd782..955fa15 100644
--- a/gcc/config/fr30/fr30.md
+++ b/gcc/config/fr30/fr30.md
@@ -1233,7 +1233,7 @@
;; registers used as operands.
(define_insn "call"
- [(call (match_operand 0 "call_operand" "Qrm")
+ [(call (match_operand 0 "call_operand" "Qm")
(match_operand 1 "" "g"))
(clobber (reg:SI 17))]
""
@@ -1250,7 +1250,7 @@
(define_insn "call_value"
[(set (match_operand 0 "register_operand" "=r")
- (call (match_operand 1 "call_operand" "Qrm")
+ (call (match_operand 1 "call_operand" "Qm")
(match_operand 2 "" "g")))
(clobber (reg:SI 17))]
""