From 74d21068a16c2b3e879336ae7eed180d4466e8b5 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Thu, 17 Aug 2017 10:45:43 -0400 Subject: [PATCH] Fix more Clang problems I wish this god damn compiler would stop pretending to be other compilers when it can't consume the same program. Even the GCC devs have told the LLVM devs to stop ding that crap --- gcm.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcm.cpp b/gcm.cpp index 0a4207ad..cafd46c6 100644 --- a/gcm.cpp +++ b/gcm.cpp @@ -43,7 +43,10 @@ NAMESPACE_BEGIN(CryptoPP) #if (CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X64) // Different assemblers accept different mnemonics: 'movd eax, xmm0' vs // 'movd rax, xmm0' vs 'mov eax, xmm0' vs 'mov rax, xmm0' -#if defined(__GNUC__) || defined(_MSC_VER) +#if (CRYPTOPP_LLVM_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000) || defined(CRYPTOPP_CLANG_INTEGRATED_ASSEMBLER) +// 'movd eax, xmm0' only. REG_WORD() macro not used. +# define USE_MOVD_REG32 1 +#elif defined(__GNUC__) || defined(_MSC_VER) // 'movd eax, xmm0' or 'movd rax, xmm0'. REG_WORD() macro supplies REG32 or REG64. # define USE_MOVD_REG32_OR_REG64 1 #else