expr.c (emit_move_insn_1): When moving complex values in several steps...
authorBernd Schmidt <crux@ohara.Informatik.RWTH-Aachen.DE>
Tue, 2 Jun 1998 21:30:26 +0000 (21:30 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 2 Jun 1998 21:30:26 +0000 (15:30 -0600)
        * 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

gcc/ChangeLog
gcc/expr.c

index d9955a6..1cd5e5b 100644 (file)
@@ -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
index 2aa514b..3370b5d 100644 (file)
@@ -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)