This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/49257] -mfpmath=sse generates x87 instructions on 32 bits OS
- From: "rth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 7 Jun 2011 18:41:31 +0000
- Subject: [Bug target/49257] -mfpmath=sse generates x87 instructions on 32 bits OS
- Auto-submitted: auto-generated
- References: <bug-49257-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49257
--- Comment #13 from Richard Henderson <rth at gcc dot gnu.org> 2011-06-07 18:40:48 UTC ---
I apologize. The error you're seeing here is the sort that's
handled by the second #if section in libgcc's __floatdisf.
In particular,
/* Protect against double-rounding error.
Represent any low-order bits, that might be truncated by a bit that
won't be lost. The bit can go in anywhere below the rounding position
of the FSTYPE. A fixed mask and bit position handles all usual
configurations. */
if (! (- ((DWtype) 1 << FSIZE) < u
&& u < ((DWtype) 1 << FSIZE)))
This is because, while DF > 2*SF bits, DF < DI bits, so we've
already lost a bit while converting to DFmode.
This doesn't appear to be supportable inline without excessive code bloat.