(call, call_value): No longer call i960_expand_call,
authorJim Wilson <wilson@gcc.gnu.org>
Tue, 13 Oct 1992 18:18:30 +0000 (11:18 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 13 Oct 1992 18:18:30 +0000 (11:18 -0700)
instead call call_internal/call_value_internal pattern.
(call_internal, call_value_internal): Rewrite patterns to pass new
args to i960_output_call_insn.

From-SVN: r2434

gcc/config/i960/i960.md

index 1489b46aa65d18c67db0cedfefdf5cc664f79eaa..8ed7c1a9ea1280605c24a051df79841056d13cf2 100644 (file)
 ;;- jump to subroutine
 
 (define_expand "call"
-  [(call (match_operand:SI 0 "general_operand" "")
-        (match_operand:SI 1 "immediate_operand" ""))]
+  [(call (match_operand:SI 0 "general_operand" "g")
+        (match_operand:SI 1 "immediate_operand" "i"))]
   ""
   "
 {
-  i960_expand_call (operand0, operand1, 0);
+  emit_insn (gen_call_internal (operands[0], operands[1],
+                               virtual_outgoing_args_rtx));
   DONE;
 }")
 
-(define_insn ""
+(define_insn "call_internal"
   [(call (match_operand:SI 0 "general_operand" "g")
-        (match_operand:SI 1 "immediate_operand" "i"))]
+        (match_operand:SI 1 "immediate_operand" "i"))
+   (use (match_operand:SI 2 "address_operand" "p"))
+   (clobber (match_scratch:SI 3 "=&r"))]
   ""
-  "* return i960_output_call_insn (operands[0], operands[1], insn);"
+  "* return i960_output_call_insn (operands[0], operands[1], operands[2],
+                                  operands[3], insn);"
   [(set_attr "type" "call")])
 
 (define_expand "call_value"
   ""
   "
 {
-  i960_expand_call (operand1, operand2, operand0);
+  emit_insn (gen_call_value_internal (operands[0], operands[1], operands[2],
+                                     virtual_outgoing_args_rtx));
   DONE;
 }")
 
-(define_insn ""
+(define_insn "call_value_internal"
   [(set (match_operand 0 "register_operand" "=d")
        (call (match_operand:SI 1 "general_operand" "g")
-             (match_operand:SI 2 "immediate_operand" "i")))]
+             (match_operand:SI 2 "immediate_operand" "i")))
+   (use (match_operand:SI 3 "address_operand" "p"))
+   (clobber (match_scratch:SI 4 "=&r"))]
   ""
-  "* return i960_output_call_insn (operands[1], operands[2], insn);"
+  "* return i960_output_call_insn (operands[1], operands[2], operands[3],
+                                  operands[4], insn);"
   [(set_attr "type" "call")])
 
 (define_insn "return"