From: Jim Wilson Date: Tue, 2 Mar 1993 21:02:47 +0000 (-0800) Subject: (call_internal*): Use hard register 19 (r3) in clobber X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b6744f97de92a964f6d3635d6b63050bf03c2bfd;p=gcc.git (call_internal*): Use hard register 19 (r3) in clobber instead of match_scratch. From-SVN: r3604 --- diff --git a/gcc/config/i960/i960.md b/gcc/config/i960/i960.md index c42a3f9ef3f..14b05de861e 100644 --- a/gcc/config/i960/i960.md +++ b/gcc/config/i960/i960.md @@ -2154,14 +2154,19 @@ ;; 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" @@ -2184,10 +2189,10 @@ (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"