From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org, Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Abhijit Menon-Sen <ams(at)2ndQuadrant(dot)com> |
Subject: | Re: Configure checks and optimizations/crc32 tests |
Date: | 2015-08-14 16:42:22 |
Message-ID: | 20150814164222.GJ4955@awork2.anarazel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 2015-08-14 11:20:39 +0200, Andres Freund wrote:
> 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...
>
> 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.
Going over my vpaths I noticed another problem with the test. With gcc I
get slice-by-8 instead of the runtime variant:
checking for builtin __atomic int64 atomic operations... yes
checking for __get_cpuid... yes
checking for __cpuid... no
checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=... no
checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=-msse4.2... no
checking which CRC-32C implementation to use... slicing-by-8
That's because I get a warning
conftest.c:179:1: warning: old-style function definition [-Wold-style-definition]
main ()
^
and PGAC_SSE42_CRC32_INTRINSICS turns on ac_c_werror_flag. Now I can
work around this by , but I don't really see why that test needs to turn on
-Werror? Isn't the point of using a linker test that we'd get a proper
linker failure if the functions don't exist?
Greetings,
Andres Freund
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2015-08-14 16:42:47 | Management of simple_eval_estate for plpgsql DO blocks |
Previous Message | jacques klein | 2015-08-14 16:38:36 | How to compile, link and use a C++ extension |