Re: Configure checks and optimizations/crc32 tests

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: Andres Freund <andres(at)anarazel(dot)de>, pgsql-hackers(at)postgresql(dot)org, Abhijit Menon-Sen <ams(at)2ndQuadrant(dot)com>
Subject: Re: Configure checks and optimizations/crc32 tests
Date: 2015-08-14 12:35:45
Message-ID: 55CDE0A1.8000706@iki.fi
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Robert Haas 2015-08-14 13:27:10 Re: buildfarm does not test "make check"
Previous Message Simon Riggs 2015-08-14 11:47:49 Re: Test code is worth the space