Author: marshall Date: Thu Jan 12 10:25:07 2017 New Revision: 291773 URL: http://llvm.org/viewvc/llvm-project?rev=291773&view=rev Log: Add new macro _LIBCPP_BUILTIN_MEMCMP_ISCONSTEXPR to use in std::char_traits. This tells whether or not the builtin function __builtin_memcmp is constexpr. Only defined for clang 4.0 and later, and not true for any shipping version of Apple's clang.
Modified: libcxx/trunk/include/__config Modified: libcxx/trunk/include/__config URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=291773&r1=291772&r2=291773&view=diff ============================================================================== --- libcxx/trunk/include/__config (original) +++ libcxx/trunk/include/__config Thu Jan 12 10:25:07 2017 @@ -396,6 +396,15 @@ namespace std { #define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow"))) #endif +// A constexpr version of __builtin_memcmp was added in clang 4.0 +#if __has_builtin(__builtin_memcmp) +# ifdef __apple_build_version__ +// No shipping version of Apple's clang has constexpr __builtin_memcmp +# elif __clang_major__ > 3 +# define _LIBCPP_BUILTIN_MEMCMP_ISCONSTEXPR +# endif +#endif + #elif defined(_LIBCPP_COMPILER_GCC) #define _ALIGNAS(x) __attribute__((__aligned__(x))) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits