From 8e27c6b3fa864147fe5ebdaccf434192405f4357 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Fri, 31 May 2019 23:33:17 -0400 Subject: [PATCH] Fix OS X compile with Clang later than 6.0 It looks like Apple Clang 6.0 does not provide _blsr_u32 and friends. Later versions of Clang defines _blsr_u32 and it causes a stream of warnings. --- misc.h | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/misc.h b/misc.h index 87760617..6bcd554e 100644 --- a/misc.h +++ b/misc.h @@ -80,12 +80,21 @@ # include #endif // GCC and BMI -// More LLVM bullshit +// More LLVM bullshit. Apple Clang 6.0 does not define them. +// Later version of Clang defines them and results in warnings. #if defined(__clang__) -# define _blsr_u32 __blsr_u32 -# define _blsr_u64 __blsr_u64 -# define _tzcnt_u32 __tzcnt_u32 -# define _tzcnt_u64 __tzcnt_u64 +# ifndef _blsr_u32 +# define _blsr_u32 __blsr_u32 +# endif +# ifndef _blsr_u64 +# define _blsr_u64 __blsr_u64 +# endif +# ifndef _tzcnt_u32 +# define _tzcnt_u32 __tzcnt_u32 +# endif +# ifndef _tzcnt_u64 +# define _tzcnt_u64 __tzcnt_u64 +# endif #endif #endif // CRYPTOPP_DOXYGEN_PROCESSING