(call, call_value): No longer call i960_expand_call,
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
This commit is contained in:
parent
83f49630c3
commit
7c08017416
@ -2074,20 +2074,24 @@
|
|||||||
;;- jump to subroutine
|
;;- jump to subroutine
|
||||||
|
|
||||||
(define_expand "call"
|
(define_expand "call"
|
||||||
[(call (match_operand:SI 0 "general_operand" "")
|
|
||||||
(match_operand:SI 1 "immediate_operand" ""))]
|
|
||||||
""
|
|
||||||
"
|
|
||||||
{
|
|
||||||
i960_expand_call (operand0, operand1, 0);
|
|
||||||
DONE;
|
|
||||||
}")
|
|
||||||
|
|
||||||
(define_insn ""
|
|
||||||
[(call (match_operand:SI 0 "general_operand" "g")
|
[(call (match_operand:SI 0 "general_operand" "g")
|
||||||
(match_operand:SI 1 "immediate_operand" "i"))]
|
(match_operand:SI 1 "immediate_operand" "i"))]
|
||||||
""
|
""
|
||||||
"* return i960_output_call_insn (operands[0], operands[1], insn);"
|
"
|
||||||
|
{
|
||||||
|
emit_insn (gen_call_internal (operands[0], operands[1],
|
||||||
|
virtual_outgoing_args_rtx));
|
||||||
|
DONE;
|
||||||
|
}")
|
||||||
|
|
||||||
|
(define_insn "call_internal"
|
||||||
|
[(call (match_operand:SI 0 "general_operand" "g")
|
||||||
|
(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], operands[2],
|
||||||
|
operands[3], insn);"
|
||||||
[(set_attr "type" "call")])
|
[(set_attr "type" "call")])
|
||||||
|
|
||||||
(define_expand "call_value"
|
(define_expand "call_value"
|
||||||
@ -2097,16 +2101,20 @@
|
|||||||
""
|
""
|
||||||
"
|
"
|
||||||
{
|
{
|
||||||
i960_expand_call (operand1, operand2, operand0);
|
emit_insn (gen_call_value_internal (operands[0], operands[1], operands[2],
|
||||||
|
virtual_outgoing_args_rtx));
|
||||||
DONE;
|
DONE;
|
||||||
}")
|
}")
|
||||||
|
|
||||||
(define_insn ""
|
(define_insn "call_value_internal"
|
||||||
[(set (match_operand 0 "register_operand" "=d")
|
[(set (match_operand 0 "register_operand" "=d")
|
||||||
(call (match_operand:SI 1 "general_operand" "g")
|
(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")])
|
[(set_attr "type" "call")])
|
||||||
|
|
||||||
(define_insn "return"
|
(define_insn "return"
|
||||||
|
Loading…
Reference in New Issue
Block a user