;; We need a call saved register allocated for the match_scratch, so we use
;; 'l' because all local registers are call saved.
+;; ??? I would prefer to use a match_scratch here, but match_scratch allocated
+;; registers can't be used for spills. In a function with lots of calls,
+;; local-alloc may allocate all local registers to a match_scratch, leaving
+;; no local registers available for spills.
+
(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 "=&l"))]
+ (clobber (reg:SI 19))]
""
"* return i960_output_call_insn (operands[0], operands[1], operands[2],
- operands[3], insn);"
+ insn);"
[(set_attr "type" "call")])
(define_expand "call_value"
(call (match_operand:SI 1 "general_operand" "g")
(match_operand:SI 2 "immediate_operand" "i")))
(use (match_operand:SI 3 "address_operand" "p"))
- (clobber (match_scratch:SI 4 "=&l"))]
+ (clobber (reg:SI 19))]
""
"* return i960_output_call_insn (operands[1], operands[2], operands[3],
- operands[4], insn);"
+ insn);"
[(set_attr "type" "call")])
(define_insn "return"