aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-07-08 23:21:00 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-07-08 23:21:00 -0400
commitc283c989124ffc357ead798bdd5ef1635c8df0fa (patch)
treedf71c96ef1d7ba5de9a84452b3a91ac85f31a4cb
parentc724abee0062bdaaf5a2f5e6a2c6a5823baeca51 (diff)
downloadgcc-c283c989124ffc357ead798bdd5ef1635c8df0fa.zip
gcc-c283c989124ffc357ead798bdd5ef1635c8df0fa.tar.gz
gcc-c283c989124ffc357ead798bdd5ef1635c8df0fa.tar.bz2
(floatsidf): Correctly handle case when SImode operand overlaps the
first DFmode register. From-SVN: r1537
-rw-r--r--gcc/config/rs6000/rs6000.md8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 37cf481..2c4dc8f 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -1887,6 +1887,14 @@
emit_move_insn (operands[3], operands[4]);
DONE;
}
+
+ if (rtx_equal_p (operands[1], operands[3]))
+ {
+ rtx temp;
+
+ temp = operands[3]; operands[3] = operands[5]; operands[5] = temp;
+ temp = operands[4]; operands[4] = operands[1]; operands[1] = temp;
+ }
}")
(define_insn ""