Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Mar 1998 05:33:39 -0800
From:      John Polstra <jdp@polstra.com>
To:        bde@zeta.org.au
Cc:        current@FreeBSD.ORG
Subject:   Re: gcc bug in -current!!!
Message-ID:  <199803261333.FAA19528@austin.polstra.com>
In-Reply-To: <199803250712.SAA28158@godzilla.zeta.org.au>
References:  <199803250712.SAA28158@godzilla.zeta.org.au>

next in thread | previous in thread | raw e-mail | index | archive | help
In article <199803250712.SAA28158@godzilla.zeta.org.au>,
Bruce Evans  <bde@zeta.org.au> wrote:
> >I confirm this bug present. To narrow down search path, even cc from Mar 6
> >works fine. Here is diff from assembler code generated by old and new cc
> >(without optimization), old first: as we see, main change is that "fildq"
> >replaced with "fildll". 
> 
> gas doesn't understand fildll (it silently (:-() converts it to fildl).

This patch to "as" fixes the test case, and I think it's correct.
This is not to say that the compiler shouldn't be fixed.  But the
assembler should be fixed too, and that's easier. :-)

I haven't done a make world with this, or any large-scale testing at
all.  (My -current system is in a bit of a mess at the moment.)  Does
anybody see a problem with it?

Index: i386.h
===================================================================
RCS file: /home/ncvs/src/gnu/usr.bin/as/opcode/i386.h,v
retrieving revision 1.8
diff -u -r1.8 i386.h
--- i386.h	1997/07/15 07:56:53	1.8
+++ i386.h	1998/03/26 13:15:44
@@ -472,6 +472,7 @@
 {"fldl", 1, 0xdd, 0, Modrm, Mem, 0, 0},           /* %st0 <-- mem double */
 {"fldl", 1, 0xd9c0, _, ShortForm, FloatReg, 0, 0}, /* register */
 {"filds", 1, 0xdf, 0, Modrm, Mem, 0, 0},           /* %st0 <-- mem dword */
+{"fildll", 1, 0xdf, 5, Modrm, Mem, 0, 0},           /* %st0 <-- mem qword */
 {"fildq", 1, 0xdf, 5, Modrm, Mem, 0, 0},           /* %st0 <-- mem qword */
 {"fldt", 1, 0xdb, 5, Modrm, Mem, 0, 0},           /* %st0 <-- mem efloat */
 {"fbld", 1, 0xdf, 4, Modrm, Mem, 0, 0},           /* %st0 <-- mem bcd */
@@ -491,6 +492,7 @@
 {"fstpl", 1, 0xdd, 3, Modrm, Mem, 0, 0},           /* %st0 --> mem double */
 {"fstpl", 1, 0xddd8, _, ShortForm, FloatReg, 0, 0}, /* register */
 {"fistps", 1, 0xdf, 3, Modrm, Mem, 0, 0},           /* %st0 --> mem dword */
+{"fistpll", 1, 0xdf, 7, Modrm, Mem, 0, 0},           /* %st0 --> mem qword */
 {"fistpq", 1, 0xdf, 7, Modrm, Mem, 0, 0},           /* %st0 --> mem qword */
 {"fstpt", 1, 0xdb, 7, Modrm, Mem, 0, 0},           /* %st0 --> mem efloat */
 {"fbstp", 1, 0xdf, 6, Modrm, Mem, 0, 0},           /* %st0 --> mem bcd */


John
--
   John Polstra                                       jdp@polstra.com
   John D. Polstra & Co., Inc.                Seattle, Washington USA
   "Self-knowledge is always bad news."                 -- John Barth

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?199803261333.FAA19528>