On 3/7/19 5:30 PM, Andrew Gierth wrote:
>>>>>> "Palle" == Palle Girgensohn <girgen@FreeBSD.org> writes:
> >> Clang's __builtin_isinf(x) function, which is supposed to test if x is
> >> infinite, does not work reliably on i386 when the x87 registers are used
> >> for floating point. It does work if the SSE2 registers are used instead,
> >> which clang will do if the -msse2 option is used. The downside of course
> >> is that the code will no longer run on CPUs that are old enough to vote.
>
> Palle> For this reason, we build i386 with gcc starting with version
> Palle> 10.6. the CFLAGS+=--msse2 was not realiable for all CPU:s since
> Palle> not all i386 CPU:s support SSE2.
>
> Palle> We had one report of a user who had SSE2 flag still on (int
> Palle> /etc/make.conf) when building, and got the same problem.
> Palle> [https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236025
> Palle> <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236025>]
>
> The user in that bug report was using a Pentium 4, which supports SSE2,
> so it's not the lack of SSE2 that caused the problem.
But if it's compiled for i386 instead of i686?
> Furthermore, the crash was in XLogReadRecord, which does not use floats.
>
> So I'm going to guess that your bug 236025 is actually an alignment
> problem, with the compiler making some assumption about alignment that
> we're violating. I'll investigate and see what I can find.
--
Angular momentum makes the world go 'round.