From: Jeffrey A Law Date: Fri, 14 Jan 2000 07:29:20 +0000 (+0000) Subject: fr30.c (call_operand): Tighten and rework to match rules for call RTL expressions. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6e11d5e9ae626a849454e97de2f533277a928153;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb8f50da014..2a61193cddb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Fri Jan 14 00:28:06 2000 Jeffrey A Law (law@cygnus.com) + + * 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. + Thu Jan 13 23:44:03 2000 Richard Henderson * fr30.c (fr30_expand_epilogue): Revert last change. 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))] ""