aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>1998-06-02 21:30:26 +0000
committerJeff Law <law@gcc.gnu.org>1998-06-02 15:30:26 -0600
commit2638126a5db71d18583e3c481658b7e39844694d (patch)
treee14c6285a231ad969176c0be295ee6e6a69fffc7
parent8fca9b9aa86399d70cce5013acd7466dcbdce613 (diff)
downloadgcc-2638126a5db71d18583e3c481658b7e39844694d.zip
gcc-2638126a5db71d18583e3c481658b7e39844694d.tar.gz
gcc-2638126a5db71d18583e3c481658b7e39844694d.tar.bz2
expr.c (emit_move_insn_1): When moving complex values in several steps...
* expr.c (emit_move_insn_1): When moving complex values in several steps, emit a CLOBBER to show the destination dies. Re-add patch. From-SVN: r20195
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/expr.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d9955a6..1cd5e5b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jun 2 22:28:31 1998 Bernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
+
+ * expr.c (emit_move_insn_1): When moving complex values in several
+ steps, emit a CLOBBER to show the destination dies.
+
Tue Jun 2 22:17:26 1998 Jeffrey A Law (law@cygnus.com)
* expr.c (expand_expr, case ADDR_EXPR): Handle taking the
diff --git a/gcc/expr.c b/gcc/expr.c
index 2aa514b..3370b5d 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -2288,6 +2288,10 @@ emit_move_insn_1 (x, y)
}
else
{
+ /* Show the output dies here. */
+ if (x != y)
+ emit_insn (gen_rtx (CLOBBER, VOIDmode, x));
+
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)
(gen_realpart (submode, x), gen_realpart (submode, y)));
emit_insn (GEN_FCN (mov_optab->handlers[(int) submode].insn_code)