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
This commit is contained in:
Jeffrey A Law 2000-01-14 07:29:20 +00:00 committed by Jeff Law
parent c99df6842d
commit 6e11d5e9ae
4 changed files with 14 additions and 7 deletions

View File

@ -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 <rth@cygnus.com>
* fr30.c (fr30_expand_epilogue): Revert last change.

View File

@ -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

View File

@ -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 }},

View File

@ -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))]
""