diff --git a/llvm/lib/Support/Threading.cpp b/llvm/lib/Support/Threading.cpp
index e49d328..6a10b98 100644
--- a/llvm/lib/Support/Threading.cpp
+++ b/llvm/lib/Support/Threading.cpp
@@ -49,6 +49,8 @@
 
 uint64_t llvm::get_threadid() { return 0; }
 
+uint32_t llvm::get_max_thread_name_length() { return 0; }
+
 void llvm::set_thread_name(const Twine &Name) {}
 
 void llvm::get_thread_name(SmallVectorImpl<char> &Name) { Name.clear(); }
diff --git a/llvm/lib/Support/Unix/Threading.inc b/llvm/lib/Support/Unix/Threading.inc
index 2c528bd..407b194 100644
--- a/llvm/lib/Support/Unix/Threading.inc
+++ b/llvm/lib/Support/Unix/Threading.inc
@@ -106,7 +106,7 @@
 }
 
 
-constexpr uint32_t llvm::get_max_thread_name_length() {
+static constexpr uint32_t get_max_thread_name_length_impl() {
 #if defined(__NetBSD__)
 	return PTHREAD_MAX_NAMELEN_NP;
 #elif defined(__APPLE__)
@@ -124,6 +124,10 @@
 #endif
 }
 
+uint32_t llvm::get_max_thread_name_length() {
+  return get_max_thread_name_length_impl();
+}
+
 void llvm::set_thread_name(const Twine &Name) {
   // Make sure the input is null terminated.
   SmallString<64> Storage;
@@ -134,7 +138,8 @@
   // terminated, but additionally the end of a long thread name will usually
   // be more unique than the beginning, since a common pattern is for similar
   // threads to share a common prefix.
-  NameStr = NameStr.take_back(get_max_thread_name_length());
+  if (get_max_thread_name_length() > 0)
+    NameStr = NameStr.take_back(get_max_thread_name_length());
   (void)NameStr;
 #if defined(__linux__)
 #if (defined(__GLIBC__) && defined(_GNU_SOURCE)) || defined(__ANDROID__)
@@ -192,15 +197,17 @@
   free(kp);
   return;
 #elif defined(__NetBSD__)
-  char buf[get_max_thread_name_length()];
-  ::pthread_getname_np(::pthread_self(), buf, PTHREAD_MAX_NAMELEN_NP);
+  constexpr uint32_t len = get_max_thread_name_length_impl();
+  char buf[len];
+  ::pthread_getname_np(::pthread_self(), buf, len);
 
   Name.append(buf, buf + strlen(buf));
 #elif defined(__linux__)
 #if (defined(__GLIBC__) && defined(_GNU_SOURCE)) || defined(__ANDROID__)
 #if HAVE_PTHREAD_GETNAME_NP
-  char Buffer[get_max_thread_name_length()];
-  if (0 == ::pthread_getname_np(::pthread_self(), Buffer, MAXNAMELEN))
+  constexpr uint32_t len = get_max_thread_name_length_impl();
+  char Buffer[len];
+  if (0 == ::pthread_getname_np(::pthread_self(), Buffer, len))
     Name.append(Buffer, Buffer + strlen(Buffer));
 #endif
 #endif
diff --git a/llvm/lib/Support/Windows/Threading.inc b/llvm/lib/Support/Windows/Threading.inc
index 8f36f79..93b2dfe 100644
--- a/llvm/lib/Support/Windows/Threading.inc
+++ b/llvm/lib/Support/Windows/Threading.inc
@@ -59,7 +59,7 @@
   return uint64_t(::GetCurrentThreadId());
 }
 
-constexpr uint32_t llvm::get_max_thread_name_length() { return 0; }
+uint32_t llvm::get_max_thread_name_length() { return 0; }
 
 void llvm::set_thread_name(const Twine &Name) {
 #if defined(_MSC_VER)
