Re: Bug fix for glibc broke freebsd build in REL_11_STABLE

From: Andres Freund <andres(at)anarazel(dot)de>
To: Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Victor Wagner <vitus(at)wagner(dot)pp(dot)ru>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Bug fix for glibc broke freebsd build in REL_11_STABLE
Date: 2018-09-05 00:51:30
Message-ID: 20180905005130.ewk4xcs5dgyzcy45@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 2018-09-05 01:47:52 +0100, Andrew Gierth wrote:
> >>>>> "Tom" == Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Langote 2018-09-05 00:53:15 Re: pointless check in RelationBuildPartitionDesc
Previous Message Andrew Gierth 2018-09-05 00:47:52 Re: Bug fix for glibc broke freebsd build in REL_11_STABLE