On 2018-09-05 01:47:52 +0100, Andrew Gierth wrote:
> >>>>> "Tom" == Tom Lane <t...@sss.pgh.pa.us> writes:
> 
>  >> I kinda wonder if we should add -mno-x87 or such in configure when
>  >> we detect clang, obviously it doesn't deal correctly with this.
> 
>  Tom> Seems worth looking into, but what happens if someone tries to
>  Tom> compile for x87 hardware? Or do we care anymore?
> 
> Already discussed this one on IRC with Andres, but to put this on record
> for future reference: we can't use -mno-x87 on 32bit intel, even with an
> -march= option with an SSE2 capable CPU, because the 32-bit ABI requires
> floats to be returned in the x87 registers and breaking that either
> results in silently wrong results or in clang dying with "fatal error:
> error in backend: X87 register return with X87 disabled" or similar.

My current proposal is thus to do add a check that does
#if defined(__clang__) && defined(__i386__) && !defined(__SSE2_MATH__)
something-that-fails
#endif
in an autoconf test, and have configure complain if that
fails. Something roughly along the lines of
"Compiling PostgreSQL with clang, on 32bit x86, requires SSE2 support. Use 
-msse2 or use gcc."

Greetings,

Andres Freund

Reply via email to