summaryrefslogtreecommitdiff
path: root/gcc/config/fr30
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-14 07:29:20 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>2000-01-14 07:29:20 +0000
commit81056fa8d82175ab45f2cf950f25fc6637028163 (patch)
treea56d71bd4c3cba8a3b0a0e79d7dde876fcccd95e /gcc/config/fr30
parent71d0de46bfcc94904179e2b1972ae86dc7a00f37 (diff)
downloadgcc-81056fa8d82175ab45f2cf950f25fc6637028163.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31405 138bc75d-0d04-0410-961f-82ee72b054a4
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 a24ac277ca3..319ea242717 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 0a914995bbd..f28ab374da2 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 8dcd782af5d..955fa15fade 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))]
""