mirror of
https://github.com/status-im/BearSSL.git
synced 2025-02-24 16:38:13 +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
|
#if BR_AES_X86NI_GCC_OLD
|
||||||
#pragma GCC push_options
|
#pragma GCC push_options
|
||||||
#pragma GCC target("sse2,ssse3,pclmul")
|
#pragma GCC target("sse2,ssse3,pclmul")
|
||||||
|
#pragma GCC diagnostic ignored "-Wpsabi"
|
||||||
#endif
|
#endif
|
||||||
#include <tmmintrin.h>
|
#include <tmmintrin.h>
|
||||||
#include <wmmintrin.h>
|
#include <wmmintrin.h>
|
||||||
#include <cpuid.h>
|
#include <cpuid.h>
|
||||||
#if BR_AES_X86NI_GCC_OLD
|
|
||||||
#pragma GCC pop_options
|
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if BR_AES_X86NI_MSC
|
#if BR_AES_X86NI_MSC
|
||||||
@ -349,6 +347,10 @@ br_ghash_pclmul_get(void)
|
|||||||
return pclmul_supported() ? &br_ghash_pclmul : 0;
|
return pclmul_supported() ? &br_ghash_pclmul : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if BR_AES_X86NI_GCC && BR_AES_X86NI_GCC_OLD
|
||||||
|
#pragma GCC pop_options
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
/* see bearssl_hash.h */
|
/* see bearssl_hash.h */
|
||||||
|
@ -157,10 +157,12 @@
|
|||||||
* GCC versions from 4.4 to 4.8 (inclusive) must use a special #pragma
|
* GCC versions from 4.4 to 4.8 (inclusive) must use a special #pragma
|
||||||
* to activate extra opcodes before including the relevant intrinsic
|
* to activate extra opcodes before including the relevant intrinsic
|
||||||
* headers. But these don't work with Clang (which does not need them
|
* 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 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
|
#define BR_AES_X86NI_GCC_OLD 1
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user