Re: Configure checks and optimizations/crc32 tests
От | Andres Freund |
---|---|
Тема | Re: Configure checks and optimizations/crc32 tests |
Дата | |
Msg-id | 20150814164222.GJ4955@awork2.anarazel.de обсуждение исходный текст |
Ответ на | Configure checks and optimizations/crc32 tests (Andres Freund <andres@anarazel.de>) |
Список | 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
В списке pgsql-hackers по дате отправления: