diff options
author | Jeffrey A Law <law@cygnus.com> | 2000-01-14 07:29:20 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2000-01-14 00:29:20 -0700 |
commit | 6e11d5e9ae626a849454e97de2f533277a928153 (patch) | |
tree | a56d71bd4c3cba8a3b0a0e79d7dde876fcccd95e /gcc/config/fr30 | |
parent | c99df6842df4868171d10a8e74f58d8c2022866f (diff) | |
download | gcc-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.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 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))] "" |