aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-12-31 14:23:00 -0800
committerJim Wilson <wilson@gcc.gnu.org>1992-12-31 14:23:00 -0800
commiteff864abc33227ebe24ec5b89c744311e2aff332 (patch)
tree3b90cb2e89bc3e3d3387978dce1d896c017ccc57 /gcc
parent3412b298a26d6c8d2fd24d9875e37be0c8c4d136 (diff)
downloadgcc-eff864abc33227ebe24ec5b89c744311e2aff332.zip
gcc-eff864abc33227ebe24ec5b89c744311e2aff332.tar.gz
gcc-eff864abc33227ebe24ec5b89c744311e2aff332.tar.bz2
(call_internal, call_value_internal): Use 'l' for
match_scratch constraint not 'd'. From-SVN: r3026
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i960/i960.md10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/config/i960/i960.md b/gcc/config/i960/i960.md
index 59ead2b..5b5bdb6 100644
--- a/gcc/config/i960/i960.md
+++ b/gcc/config/i960/i960.md
@@ -2091,11 +2091,14 @@
DONE;
}")
+;; We need a call saved register allocated for the match_scratch, so we use
+;; 'l' because all local registers are call saved.
+
(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 "=&d"))]
+ (clobber (match_scratch:SI 3 "=&l"))]
""
"* return i960_output_call_insn (operands[0], operands[1], operands[2],
operands[3], insn);"
@@ -2113,12 +2116,15 @@
DONE;
}")
+;; We need a call saved register allocated for the match_scratch, so we use
+;; 'l' because all local registers are call saved.
+
(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")))
(use (match_operand:SI 3 "address_operand" "p"))
- (clobber (match_scratch:SI 4 "=&d"))]
+ (clobber (match_scratch:SI 4 "=&l"))]
""
"* return i960_output_call_insn (operands[1], operands[2], operands[3],
operands[4], insn);"