diff --git a/llvm/include/llvm/ADT/StringRef.h b/llvm/include/llvm/ADT/StringRef.h index 31b0a5c6780f4..75a6e1a6b5a89 100644 --- a/llvm/include/llvm/ADT/StringRef.h +++ b/llvm/include/llvm/ADT/StringRef.h @@ -27,7 +27,7 @@ // Declare the __builtin_strlen intrinsic for MSVC so it can be used in // constexpr context. #if defined(_MSC_VER) -extern "C" constexpr size_t __builtin_strlen(const char *); +extern "C" size_t __builtin_strlen(const char *); #endif namespace llvm { @@ -80,7 +80,8 @@ namespace llvm { static constexpr size_t strLen(const char *Str) { #if __cplusplus > 201402L return std::char_traits::length(Str); -#elif __has_builtin(__builtin_strlen) || defined(__GNUC__) || defined(_MSC_VER) +#elif __has_builtin(__builtin_strlen) || defined(__GNUC__) || \ + (defined(_MSC_VER) && _MSC_VER >= 1920) return __builtin_strlen(Str); #else const char *Begin = Str;