diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-01-14 07:29:20 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-01-14 07:29:20 +0000 |
commit | 81056fa8d82175ab45f2cf950f25fc6637028163 (patch) | |
tree | a56d71bd4c3cba8a3b0a0e79d7dde876fcccd95e /gcc/config/fr30 | |
parent | 71d0de46bfcc94904179e2b1972ae86dc7a00f37 (diff) | |
download | gcc-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.c | 8 | ||||
-rw-r--r-- | gcc/config/fr30/fr30.h | 2 | ||||
-rw-r--r-- | gcc/config/fr30/fr30.md | 4 |
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))] "" |