aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSteven Bosscher <stevenb@suse.de>2004-05-18 14:43:58 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2004-05-18 14:43:58 +0000
commit70315fcdde3a60e23d39586a9b5a237ff9334a9e (patch)
tree8d24a33dbaaaee6b9e51c8c661378e1aa59a21da /gcc
parente332b68d76a8ce6b16439e235d5013a1182a22a9 (diff)
downloadgcc-70315fcdde3a60e23d39586a9b5a237ff9334a9e.zip
gcc-70315fcdde3a60e23d39586a9b5a237ff9334a9e.tar.gz
gcc-70315fcdde3a60e23d39586a9b5a237ff9334a9e.tar.bz2
s390.c (s390_expand_movstr, [...]): Do not use expand_start_loop and expand_end_loop, instead build the loop manually.
* config/s390/s390.c (s390_expand_movstr, s390_expand_clrstr, s390_expand_cmpmem): Do not use expand_start_loop and expand_end_loop, instead build the loop manually. From-SVN: r81990
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/s390/s390.c21
2 files changed, 21 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e135159..88d9aa7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-05-18 Steven Bosscher <stevenb@suse.de>
+
+ * config/s390/s390.c (s390_expand_movstr, s390_expand_clrstr,
+ s390_expand_cmpmem): Do not use expand_start_loop and
+ expand_end_loop, instead build the loop manually.
+
2004-05-18 Alan Modra <amodra@bigpond.net.au>
* config/rs6000/rs6000.md (ctrsi_internal3): Delete.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 9e786bf..9c537ec 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -2956,6 +2956,7 @@ s390_expand_movstr (rtx dst, rtx src, rtx len)
else
{
rtx dst_addr, src_addr, count, blocks, temp;
+ rtx loop_start_label = gen_label_rtx ();
rtx loop_end_label = gen_label_rtx ();
rtx end_label = gen_label_rtx ();
enum machine_mode mode;
@@ -2988,7 +2989,8 @@ s390_expand_movstr (rtx dst, rtx src, rtx len)
emit_cmp_and_jump_insns (blocks, const0_rtx,
EQ, NULL_RTX, mode, 1, loop_end_label);
- expand_start_loop (1);
+
+ emit_label (loop_start_label);
emit_insn (gen_movstr_short (dst, src, GEN_INT (255)));
s390_load_address (dst_addr,
@@ -3002,7 +3004,8 @@ s390_expand_movstr (rtx dst, rtx src, rtx len)
emit_cmp_and_jump_insns (blocks, const0_rtx,
EQ, NULL_RTX, mode, 1, loop_end_label);
- expand_end_loop ();
+
+ emit_jump (loop_start_label);
emit_label (loop_end_label);
emit_insn (gen_movstr_short (dst, src,
@@ -3030,6 +3033,7 @@ s390_expand_clrstr (rtx dst, rtx len)
else
{
rtx dst_addr, src_addr, count, blocks, temp;
+ rtx loop_start_label = gen_label_rtx ();
rtx loop_end_label = gen_label_rtx ();
rtx end_label = gen_label_rtx ();
enum machine_mode mode;
@@ -3060,7 +3064,8 @@ s390_expand_clrstr (rtx dst, rtx len)
emit_cmp_and_jump_insns (blocks, const0_rtx,
EQ, NULL_RTX, mode, 1, loop_end_label);
- expand_start_loop (1);
+
+ emit_label (loop_start_label);
emit_insn (gen_clrstr_short (dst, GEN_INT (255)));
s390_load_address (dst_addr,
@@ -3072,7 +3077,8 @@ s390_expand_clrstr (rtx dst, rtx len)
emit_cmp_and_jump_insns (blocks, const0_rtx,
EQ, NULL_RTX, mode, 1, loop_end_label);
- expand_end_loop ();
+
+ emit_jump (loop_start_label);
emit_label (loop_end_label);
emit_insn (gen_clrstr_short (dst, convert_to_mode (Pmode, count, 1)));
@@ -3116,6 +3122,7 @@ s390_expand_cmpmem (rtx target, rtx op0, rtx op1, rtx len)
else
{
rtx addr0, addr1, count, blocks, temp;
+ rtx loop_start_label = gen_label_rtx ();
rtx loop_end_label = gen_label_rtx ();
rtx end_label = gen_label_rtx ();
enum machine_mode mode;
@@ -3148,7 +3155,8 @@ s390_expand_cmpmem (rtx target, rtx op0, rtx op1, rtx len)
emit_cmp_and_jump_insns (blocks, const0_rtx,
EQ, NULL_RTX, mode, 1, loop_end_label);
- expand_start_loop (1);
+
+ emit_label (loop_start_label);
emit_insn (gen_cmpmem_short (op0, op1, GEN_INT (255)));
temp = gen_rtx_NE (VOIDmode, gen_rtx_REG (CCSmode, 33), const0_rtx);
@@ -3168,7 +3176,8 @@ s390_expand_cmpmem (rtx target, rtx op0, rtx op1, rtx len)
emit_cmp_and_jump_insns (blocks, const0_rtx,
EQ, NULL_RTX, mode, 1, loop_end_label);
- expand_end_loop ();
+
+ emit_jump (loop_start_label);
emit_label (loop_end_label);
emit_insn (gen_cmpmem_short (op0, op1,