Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 04 Jun 2002 03:02:21 GMT
From:      Tor.Egge@cvsup.no.freebsd.org
To:        bde@zeta.org.au
Cc:        obrien@FreeBSD.ORG, current@FreeBSD.ORG
Subject:   Re: memset() broken in gcc-3.1 on i386's
Message-ID:  <20020604030221G.tegge@cvsup.no.freebsd.org>
In-Reply-To: <20020604110707.H1982-100000@gamplex.bde.org>
References:  <20020604084202.Q939-100000@gamplex.bde.org> <20020604110707.H1982-100000@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
----Next_Part(Tue_Jun__4_01:57:21_2002_809)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

> 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


----Next_Part(Tue_Jun__4_01:57:21_2002_809)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=bug1

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);

----Next_Part(Tue_Jun__4_01:57:21_2002_809)----

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020604030221G.tegge>