> Actually, it broke fsck_ffs.
> 
> Workaround to avoid the known broken case:

The brokenness in ix86_expand_clrstr is quite visible when you
compare the function with ix86_expand_movstr.

- Tor Egge

Index: contrib/gcc/config/i386/i386.c
===================================================================
RCS file: /home/ncvs/src/contrib/gcc/config/i386/i386.c,v
retrieving revision 1.9
diff -u -r1.9 i386.c
--- contrib/gcc/config/i386/i386.c      9 May 2002 22:42:39 -0000       1.9
+++ contrib/gcc/config/i386/i386.c      4 Jun 2002 00:18:49 -0000
@@ -9432,7 +9432,7 @@
                                 gen_rtx_SUBREG (SImode, zeroreg, 0)));
       if (TARGET_64BIT && (align <= 4 || count == 0))
        {
-         rtx label = ix86_expand_aligntest (destreg, 2);
+         rtx label = ix86_expand_aligntest (countreg, 4);
          emit_insn (gen_strsetsi (destreg,
                                   gen_rtx_SUBREG (SImode, zeroreg, 0)));
          emit_label (label);
@@ -9443,7 +9443,7 @@
                                 gen_rtx_SUBREG (HImode, zeroreg, 0)));
       if (align <= 2 || count == 0)
        {
-         rtx label = ix86_expand_aligntest (destreg, 2);
+         rtx label = ix86_expand_aligntest (countreg, 2);
          emit_insn (gen_strsethi (destreg,
                                   gen_rtx_SUBREG (HImode, zeroreg, 0)));
          emit_label (label);
@@ -9454,7 +9454,7 @@
                                 gen_rtx_SUBREG (QImode, zeroreg, 0)));
       if (align <= 1 || count == 0)
        {
-         rtx label = ix86_expand_aligntest (destreg, 1);
+         rtx label = ix86_expand_aligntest (countreg, 1);
          emit_insn (gen_strsetqi (destreg,
                                   gen_rtx_SUBREG (QImode, zeroreg, 0)));
          emit_label (label);

Reply via email to