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.
pull/853/head
Jeffrey Walton 2019-05-31 23:33:17 -04:00
parent 392ec3465e
commit 8e27c6b3fa
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
1 changed files with 14 additions and 5 deletions

19
misc.h
View File

@ -80,12 +80,21 @@
# include <immintrin.h>
#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