diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1993-03-02 13:02:47 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1993-03-02 13:02:47 -0800 |
commit | b6744f97de92a964f6d3635d6b63050bf03c2bfd (patch) | |
tree | 2a4e8fb567cb7e24af05fcac00e5a8747184350a /gcc | |
parent | e770968be5dbacddb5591860fc43a3f2d3c83894 (diff) | |
download | gcc-b6744f97de92a964f6d3635d6b63050bf03c2bfd.zip gcc-b6744f97de92a964f6d3635d6b63050bf03c2bfd.tar.gz gcc-b6744f97de92a964f6d3635d6b63050bf03c2bfd.tar.bz2 |
(call_internal*): Use hard register 19 (r3) in clobber
instead of match_scratch.
From-SVN: r3604
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/i960/i960.md | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/gcc/config/i960/i960.md b/gcc/config/i960/i960.md index c42a3f9..14b05de 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" |