s390.c (s390_expand_movstr, [...]): Do not use expand_start_loop and expand_end_loop...
authorSteven Bosscher <stevenb@suse.de>
Tue, 18 May 2004 14:43:58 +0000 (14:43 +0000)
committerSteven Bosscher <steven@gcc.gnu.org>
Tue, 18 May 2004 14:43:58 +0000 (14:43 +0000)
* 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

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

index e135159977326a4b7a3dc1041ea1bf284a81038e..88d9aa743cb5ad0be39680cdcc71a4a28c549c97 100644 (file)
@@ -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.
index 9e786bfdf7070713658cae288e57c767cec4925d..9c537ec3cf81c79bbdad0d48227c0d217e91db1c 100644 (file)
@@ -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,