]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
s390.c (s390_expand_movstr): Clobber double-word register before initializing high...
authorUlrich Weigand <uweigand@de.ibm.com>
Sat, 6 Mar 2004 19:18:40 +0000 (19:18 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Sat, 6 Mar 2004 19:18:40 +0000 (19:18 +0000)
* config/s390/s390.c (s390_expand_movstr): Clobber double-word
register before initializing high and low parts separately.
(s390_expand_clrstr): Likewise.
(s390_expand_cmpstr): Likewise.

From-SVN: r79027

gcc/ChangeLog
gcc/config/s390/s390.c

index c6e20f99f2926b6814372980652c08f92498c780..c1dbd772ce4e27dfca32782a3cff0d409a68e253 100644 (file)
@@ -1,3 +1,10 @@
+2004-03-05  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * config/s390/s390.c (s390_expand_movstr): Clobber double-word
+       register before initializing high and low parts separately.
+       (s390_expand_clrstr): Likewise.
+       (s390_expand_cmpstr): Likewise.
+
 2004-03-05  Ulrich Weigand  <uweigand@de.ibm.com>
 
        PR optimization/12147
index d5ec8ae5e7d7eef0a19f0fb1400107c21b2d37dc..dcb279d38e4c51c486526946bdaec51851923f70 100644 (file)
@@ -2660,6 +2660,9 @@ s390_expand_movstr (dst, src, len)
       rtx reg0 = gen_reg_rtx (double_mode);
       rtx reg1 = gen_reg_rtx (double_mode);
 
+      emit_insn (gen_rtx_CLOBBER (VOIDmode, reg0));
+      emit_insn (gen_rtx_CLOBBER (VOIDmode, reg1));
+
       emit_move_insn (gen_highpart (single_mode, reg0), 
                      force_operand (XEXP (dst, 0), NULL_RTX));
       emit_move_insn (gen_highpart (single_mode, reg1), 
@@ -2756,6 +2759,9 @@ s390_expand_clrstr (dst, len)
       rtx reg0 = gen_reg_rtx (double_mode);
       rtx reg1 = gen_reg_rtx (double_mode);
 
+      emit_insn (gen_rtx_CLOBBER (VOIDmode, reg0));
+      emit_insn (gen_rtx_CLOBBER (VOIDmode, reg1));
+
       emit_move_insn (gen_highpart (single_mode, reg0), 
                      force_operand (XEXP (dst, 0), NULL_RTX));
       convert_move (gen_lowpart (single_mode, reg0), len, 1);
@@ -2860,6 +2866,9 @@ s390_expand_cmpstr (target, op0, op1, len)
       rtx reg0 = gen_reg_rtx (double_mode);
       rtx reg1 = gen_reg_rtx (double_mode);
 
+      emit_insn (gen_rtx_CLOBBER (VOIDmode, reg0));
+      emit_insn (gen_rtx_CLOBBER (VOIDmode, reg1));
+
       emit_move_insn (gen_highpart (single_mode, reg0), 
                      force_operand (XEXP (op0, 0), NULL_RTX));
       emit_move_insn (gen_highpart (single_mode, reg1),