aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Kingdon <kingdon@redhat.com>1999-08-27 01:07:06 -0600
committerJeff Law <law@gcc.gnu.org>1999-08-27 01:07:06 -0600
commit7759f25bfb7d11de6542524026017178bda96be1 (patch)
tree03c0d3e450a94e927e141e23919e6b2af5c57430
parent5ca8e6f76b92f52c2a6faa4ff5801469a8868160 (diff)
downloadgcc-7759f25bfb7d11de6542524026017178bda96be1.zip
gcc-7759f25bfb7d11de6542524026017178bda96be1.tar.gz
gcc-7759f25bfb7d11de6542524026017178bda96be1.tar.bz2
i386.md: In the 6 insns which call output_fix_trunc, earlyclobber operands[0].
* i386.md: In the 6 insns which call output_fix_trunc, earlyclobber operands[0]. From-SVN: r28921
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.md24
2 files changed, 24 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 066ed41..6191b48 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Fri Aug 27 01:03:48 1999 Jim Kingdon <http://developer.redhat.com>
+ with much help from Jeffrey A Law and Richard Henderson
+
+ * i386.md: In the 6 insns which call output_fix_trunc,
+ earlyclobber operands[0].
+
Fri Aug 27 01:01:51 1999 Philip Blundell <pb@nexus.co.uk>
* jump.c (duplicate_loop_exit_test): Call reg_scan_update after
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index fb3e1b2..62dff26 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -2710,8 +2710,10 @@
operands[4] = (rtx) assign_386_stack_local (SImode, 0);
}")
+;; We have to earlyclobber the register output to prevent it from overlapping
+;; with the address for one of the scratch memory operands.
(define_insn ""
- [(set (match_operand:SI 0 "nonimmediate_operand" "=m,!r")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=m,!&r")
(fix:SI (fix:SF (match_operand:SF 1 "register_operand" "f,f"))))
(clobber (match_operand:HI 2 "memory_operand" "m,m"))
(clobber (match_operand:HI 3 "memory_operand" "m,m"))
@@ -2738,8 +2740,10 @@
operands[4] = (rtx) assign_386_stack_local (DImode, 0);
}")
+;; We have to earlyclobber the register output to prevent it from overlapping
+;; with the address for one of the scratch memory operands.
(define_insn ""
- [(set (match_operand:DI 0 "nonimmediate_operand" "=m,!r")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=m,!&r")
(fix:DI (fix:SF (match_operand:SF 1 "register_operand" "f,f"))))
(clobber (match_dup 1))
(clobber (match_operand:HI 2 "memory_operand" "m,m"))
@@ -2765,8 +2769,10 @@
operands[4] = (rtx) assign_386_stack_local (SImode, 0);
}")
+;; We have to earlyclobber the register output to prevent it from overlapping
+;; with the address for one of the scratch memory operands.
(define_insn ""
- [(set (match_operand:SI 0 "nonimmediate_operand" "=m,!r")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=m,!&r")
(fix:SI (fix:DF (match_operand:DF 1 "register_operand" "f,f"))))
(clobber (match_operand:HI 2 "memory_operand" "m,m"))
(clobber (match_operand:HI 3 "memory_operand" "m,m"))
@@ -2793,8 +2799,10 @@
operands[4] = (rtx) assign_386_stack_local (DImode, 0);
}")
+;; We have to earlyclobber the register output to prevent it from overlapping
+;; with the address for one of the scratch memory operands.
(define_insn ""
- [(set (match_operand:DI 0 "nonimmediate_operand" "=m,!r")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=m,!&r")
(fix:DI (fix:DF (match_operand:DF 1 "register_operand" "f,f"))))
(clobber (match_dup 1))
(clobber (match_operand:HI 2 "memory_operand" "m,m"))
@@ -2820,8 +2828,10 @@
operands[4] = (rtx) assign_386_stack_local (SImode, 0);
}")
+;; We have to earlyclobber the register output to prevent it from overlapping
+;; with the address for one of the scratch memory operands.
(define_insn ""
- [(set (match_operand:SI 0 "nonimmediate_operand" "=m,!r")
+ [(set (match_operand:SI 0 "nonimmediate_operand" "=m,!&r")
(fix:SI (fix:XF (match_operand:XF 1 "register_operand" "f,f"))))
(clobber (match_operand:HI 2 "memory_operand" "m,m"))
(clobber (match_operand:HI 3 "memory_operand" "m,m"))
@@ -2848,8 +2858,10 @@
operands[4] = (rtx) assign_386_stack_local (DImode, 0);
}")
+;; We have to earlyclobber the register output to prevent it from overlapping
+;; with the address for one of the scratch memory operands.
(define_insn ""
- [(set (match_operand:DI 0 "nonimmediate_operand" "=m,!r")
+ [(set (match_operand:DI 0 "nonimmediate_operand" "=m,!&r")
(fix:DI (fix:XF (match_operand:XF 1 "register_operand" "f,f"))))
(clobber (match_dup 1))
(clobber (match_operand:HI 2 "memory_operand" "m,m"))