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>