From fbd676d0d35919af07398ed7e25bd504e4477c65 Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Sat, 6 Mar 2004 19:18:40 +0000 Subject: [PATCH] s390.c (s390_expand_movstr): Clobber double-word register before initializing high and low parts separately. * 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 | 7 +++++++ gcc/config/s390/s390.c | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c6e20f99f292..c1dbd772ce4e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2004-03-05 Ulrich Weigand + + * 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 PR optimization/12147 diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index d5ec8ae5e7d7..dcb279d38e4c 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -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), -- 2.47.2