mirror of
https://github.com/status-im/BearSSL.git
synced 2025-02-24 08:28:15 +00:00
Workaround for compiler bug (GCC 4.8 and 4.9 when targetting 32-bit x86).
This commit is contained in:
parent
ad6a51bde3
commit
d021b7eb7f
@ -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…
x
Reference in New Issue
Block a user