From mboxrd@z Thu Jan 1 00:00:00 1970 From: hjl@lucon.org (H.J. Lu) To: alan@spri.levels.unisa.edu.au (Alan Modra) Cc: mikeg@weiden.de, gas2@cygnus.com, egcs@cygnus.com, gcc2@cygnus.com Subject: Re: gcc generates invalid i386 fmulp Date: Tue, 14 Apr 1998 08:19:00 -0000 Message-id: References: <199804131501.AAA05109@mullet.Levels.UniSA.Edu.Au> X-SW-Source: 1998/msg00111.html > > Hello all, > I've been doing a little work on gas for i386, tidying up a few > things and adding reasonably strict operand/suffix checking. The new > gas has already found a couple of errors in the linux kernel asm, one > in glibc1, and a problem with gcc. > > For anyone who's interested, the gas patches can be found at > ftp://mullet.levels.unisa.edu.au/private/teabag/gas-980407-alan.diff.gz > They should apply to binutils-2.9 without problems too. > > The gcc problem (found by mikeg@weiden.de (Michael L. Galbraith)), > when compiling glibc2 is that gcc will generate instructions like > `fsubp %st(1),%st' > Can you show me a small test case please? It is very tricky. Here are the ChangeLog entries: Mon Apr 14 14:56:58 1997 Ian Lance Taylor * i386.h: Change the opcodes for fsubp, fsubrp, fdivp, and fdivrp with no arguments to match that generated by the UnixWare assembler. Sat Apr 5 13:14:05 1997 Ian Lance Taylor * i386.h: Revert last patch for the NON_BROKEN_OPCODES cases. Fri Apr 4 14:02:32 1997 Ian Lance Taylor * i386.h: Correct opcode values for fsubp, fsubrp, fdivp, and fdivrp. It is very different from Intel and very confusing. But changing it will break many things. Thanks. H.J.