fix wrong clang version check.

Both inline assembly and intrinsic need pragma

Signed-off-by: Jerry Yu <jerry.h.yu@arm.com>
This commit is contained in:
Jerry Yu 2023-03-03 17:56:54 +08:00
parent ad0b2f7677
commit 7b4d9da08c

View File

@ -23,8 +23,7 @@
*/ */
#if defined(__aarch64__) && !defined(__ARM_FEATURE_SHA512) && \ #if defined(__aarch64__) && !defined(__ARM_FEATURE_SHA512) && \
defined(__clang__) && __clang_major__ < 18 && \ defined(__clang__) && __clang_major__ < 18 && __clang_major__ > 7
__clang_major__ >= 13 && __clang_minor__ > 0 && __clang_patchlevel__ > 0
/* TODO: Re-consider above after https://reviews.llvm.org/D131064 merged. /* TODO: Re-consider above after https://reviews.llvm.org/D131064 merged.
* *
* The intrinsic declaration are guarded by predefined ACLE macros in clang: * The intrinsic declaration are guarded by predefined ACLE macros in clang:
@ -37,10 +36,8 @@
*/ */
#define __ARM_FEATURE_SHA512 1 #define __ARM_FEATURE_SHA512 1
#define NEED_TARGET_OPTIONS #define NEED_TARGET_OPTIONS
#endif /* __aarch64__ && __clang__ && #endif /* __aarch64__ && !__ARM_FEATURE_SHA512 &&
!__ARM_FEATURE_SHA512 && __clang_major__ < 18 && __clang__ && __clang_major__ < 18 && __clang_major__ > 7 */
__clang_major__ >= 13 && __clang_minor__ > 0 &&
__clang_patchlevel__ > 0 */
#include "common.h" #include "common.h"
@ -83,10 +80,6 @@
# if defined(__clang__) # if defined(__clang__)
# if __clang_major__ < 7 # if __clang_major__ < 7
# error "A more recent Clang is required for MBEDTLS_SHA512_USE_A64_CRYPTO_*" # error "A more recent Clang is required for MBEDTLS_SHA512_USE_A64_CRYPTO_*"
# elif __clang_major__ < 13 || \
(__clang_major__ == 13 && __clang_minor__ == 0 && \
__clang_patchlevel__ == 0)
/* We implement the intrinsics with inline assembler, so don't error */
# else # else
# pragma clang attribute push (__attribute__((target("sha3"))), apply_to=function) # pragma clang attribute push (__attribute__((target("sha3"))), apply_to=function)
# define MBEDTLS_POP_TARGET_PRAGMA # define MBEDTLS_POP_TARGET_PRAGMA