gcc generates invalid i386 fmulp

H.J. Lu hjl@lucon.org
Tue Apr 14 11:44:00 GMT 1998


> 
> 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  <ian@cygnus.com>

        * 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  <ian@cygnus.com>

        * i386.h: Revert last patch for the NON_BROKEN_OPCODES cases.  

Fri Apr  4 14:02:32 1997  Ian Lance Taylor  <ian@cygnus.com>

        * 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.



More information about the Gcc mailing list