Workaround for compiler bug (GCC 4.8 and 4.9 when targetting 32-bit x86).
This commit is contained in:
parent
ad6a51bde3
commit
d021b7eb7f
2 changed files with 9 additions and 5 deletions
|
|
@ -35,13 +35,11 @@
|
|||
#if BR_AES_X86NI_GCC_OLD
|
||||
#pragma GCC push_options
|
||||
#pragma GCC target("sse2,ssse3,pclmul")
|
||||
#pragma GCC diagnostic ignored "-Wpsabi"
|
||||
#endif
|
||||
#include <tmmintrin.h>
|
||||
#include <wmmintrin.h>
|
||||
#include <cpuid.h>
|
||||
#if BR_AES_X86NI_GCC_OLD
|
||||
#pragma GCC pop_options
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if BR_AES_X86NI_MSC
|
||||
|
|
@ -349,6 +347,10 @@ br_ghash_pclmul_get(void)
|
|||
return pclmul_supported() ? &br_ghash_pclmul : 0;
|
||||
}
|
||||
|
||||
#if BR_AES_X86NI_GCC && BR_AES_X86NI_GCC_OLD
|
||||
#pragma GCC pop_options
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
/* see bearssl_hash.h */
|
||||
|
|
|
|||
|
|
@ -157,10 +157,12 @@
|
|||
* GCC versions from 4.4 to 4.8 (inclusive) must use a special #pragma
|
||||
* to activate extra opcodes before including the relevant intrinsic
|
||||
* headers. But these don't work with Clang (which does not need them
|
||||
* either).
|
||||
* either). We also need that #pragma for GCC 4.9 in order to work
|
||||
* around a compiler bug (it tends to blow up on ghash_pclmul code
|
||||
* otherwise).
|
||||
*/
|
||||
#if BR_AES_X86NI_GCC && !defined BR_AES_X86NI_GCC_OLD
|
||||
#if __GNUC__ == 4 && __GNUC_MINOR__ >= 4 && __GNUC_MINOR__ <= 8 && !__clang__
|
||||
#if __GNUC__ == 4 && __GNUC_MINOR__ >= 4 && __GNUC_MINOR__ <= 9 && !__clang__
|
||||
#define BR_AES_X86NI_GCC_OLD 1
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue