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