On Sun, 21 Feb 2010, Geert Bosch wrote:

> > As I understand it, whether -mfpmath=387 (with excess precision) or 
> > -mfpmath=sse is the default is also considered part of the platform API 
> > (like whether char is signed or unsigned by default, for example), in 
> > addition to the ABI issues that can slow things down when SSE is used.
> 
> No, this is not a new ABI. The ABI stays exactly the same. The I of

Correct - I said API, not ABI.  The API for C programs on x86 GNU/Linux 
involves FLT_EVAL_METHOD == 2, whereas that on x86 Darwin involves 
FLT_EVAL_METHOD == 0 and that on FreeBSD involves FLT_EVAL_METHOD == 2 
but with FPU rounding precision set to 53 bits so only excess range, not 
precision, applies.

You can support multiple APIs within one ABI - you can support both 
versions of -mfpmath just as you can support both signed and unsigned 
char, or both signed and unsigned bit-fields.  It is not however 
appropriate for -march options (whether explicit, or configured defaults 
from the noncanonical target name or otherwise) to change either ABI or 
API.  Configure options to configure with a different API would be fine, 
as would target names such as i686-pc-linux-gnussemath.

-- 
Joseph S. Myers
jos...@codesourcery.com

Reply via email to