Re: Configure checks and optimizations/crc32 tests - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Configure checks and optimizations/crc32 tests
Date
Msg-id 55CDE0A1.8000706@iki.fi
Whole thread Raw
In response to Configure checks and optimizations/crc32 tests  (Andres Freund <andres@anarazel.de>)
Responses Re: Configure checks and optimizations/crc32 tests  (Andres Freund <andres@anarazel.de>)
List pgsql-hackers
On 08/14/2015 12:20 PM, Andres Freund wrote:
> Hi,
>
> when building with optimizations clang-3.7, probably some older
> compilers as well, fail with a funny error:
>
> fatal error: error in backend: Cannot select: intrinsic %llvm.x86.sse42.crc32.64.64
>
> turns out that is because configure chose to use the crc32 instruction,
> without the according compiler -msse4.2 flag. Why you ask? Because the
> whole configure test is optimized away. Nothing depends on it's
> output...

Oh, interesting.

> We can easily fix the issue by adding
>     /* return values dependent on crc, to prevent optimizations */
>     return crc == 0;
> or so to the end of PGAC_SSE42_CRC32_INTRINSICS.

Yeah, seems like a simple fix.

> But we've played that whack-a-mole game in a bunch of configure tests
> now, and it seems likely that more are coming with compilers getting
> better. I'd not be surprised if some tests actually always succeed, we
> just don't notice it because it's only on new compilers that have the
> tested feature anyway...

Yeah, wouldn't be surprised if the other similar tests for all __sync_* 
family of functions had the same problem.

> One way trying to fix this would be to explicitly disable optimizations
> during tests. I'm not sure that's a good idea, but it's one.

I think adding the "return" is better.

- Heikki




pgsql-hackers by date:

Previous
From: Simon Riggs
Date:
Subject: Re: Test code is worth the space
Next
From: Robert Haas
Date:
Subject: Re: buildfarm does not test "make check"