diff options
Diffstat (limited to 'lib/Support/ErrorHandling.cpp')
| -rw-r--r-- | lib/Support/ErrorHandling.cpp | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/Support/ErrorHandling.cpp b/lib/Support/ErrorHandling.cpp index c36007f559997..a25e21ae043eb 100644 --- a/lib/Support/ErrorHandling.cpp +++ b/lib/Support/ErrorHandling.cpp @@ -19,9 +19,10 @@  #include "llvm/Config/config.h"  #include "llvm/Support/Debug.h"  #include "llvm/Support/Errc.h" -#include "llvm/Support/Signals.h" +#include "llvm/Support/ManagedStatic.h"  #include "llvm/Support/Mutex.h"  #include "llvm/Support/MutexGuard.h" +#include "llvm/Support/Signals.h"  #include "llvm/Support/Threading.h"  #include "llvm/Support/WindowsError.h"  #include "llvm/Support/raw_ostream.h" @@ -41,18 +42,18 @@ using namespace llvm;  static fatal_error_handler_t ErrorHandler = nullptr;  static void *ErrorHandlerUserData = nullptr; -static sys::Mutex ErrorHandlerMutex; +static ManagedStatic<sys::Mutex> ErrorHandlerMutex;  void llvm::install_fatal_error_handler(fatal_error_handler_t handler,                                         void *user_data) { -  llvm::MutexGuard Lock(ErrorHandlerMutex); +  llvm::MutexGuard Lock(*ErrorHandlerMutex);    assert(!ErrorHandler && "Error handler already registered!\n");    ErrorHandler = handler;    ErrorHandlerUserData = user_data;  }  void llvm::remove_fatal_error_handler() { -  llvm::MutexGuard Lock(ErrorHandlerMutex); +  llvm::MutexGuard Lock(*ErrorHandlerMutex);    ErrorHandler = nullptr;    ErrorHandlerUserData = nullptr;  } @@ -75,7 +76,7 @@ void llvm::report_fatal_error(const Twine &Reason, bool GenCrashDiag) {    {      // Only acquire the mutex while reading the handler, so as not to invoke a      // user-supplied callback under a lock. -    llvm::MutexGuard Lock(ErrorHandlerMutex); +    llvm::MutexGuard Lock(*ErrorHandlerMutex);      handler = ErrorHandler;      handlerData = ErrorHandlerUserData;    }  | 
