diff --git a/llvm/lib/Support/ManagedStatic.cpp b/llvm/lib/Support/ManagedStatic.cpp
index fbcce59..b8fb284 100644
--- a/llvm/lib/Support/ManagedStatic.cpp
+++ b/llvm/lib/Support/ManagedStatic.cpp
@@ -16,22 +16,16 @@
 #include "llvm/Support/Atomic.h"
 #include "llvm/Support/Mutex.h"
 #include "llvm/Support/MutexGuard.h"
-#include "llvm/Support/Threading.h"
 #include <cassert>
 using namespace llvm;
 
 static const ManagedStaticBase *StaticList = nullptr;
-static sys::Mutex *ManagedStaticMutex = nullptr;
 
-static void initializeMutex() {
-  ManagedStaticMutex = new sys::Mutex();
-}
-
-static sys::Mutex* getManagedStaticMutex() {
+static sys::Mutex& getManagedStaticMutex() {
   // We need to use a function local static here, since this can get called
   // during a static constructor and we need to guarantee that it's initialized
   // correctly.
-  llvm_call_once<initializeMutex>();
+  static sys::Mutex ManagedStaticMutex;
   return ManagedStaticMutex;
 }
 
@@ -39,7 +33,7 @@
                                               void (*Deleter)(void*)) const {
   assert(Creator);
   if (llvm_is_multithreaded()) {
-    MutexGuard Lock(*getManagedStaticMutex());
+    MutexGuard Lock(getManagedStaticMutex());
 
     if (!Ptr) {
       void* tmp = Creator();
@@ -89,13 +83,8 @@
 
 /// llvm_shutdown - Deallocate and destroy all ManagedStatic variables.
 void llvm::llvm_shutdown() {
-  {
-    MutexGuard Lock(*getManagedStaticMutex());
+  MutexGuard Lock(getManagedStaticMutex());
 
-    while (StaticList)
-      StaticList->destroy();
-  }
-
-  delete ManagedStaticMutex;
-  ManagedStaticMutex = nullptr;
+  while (StaticList)
+    StaticList->destroy();
 }
