diff --git a/llvm/lib/Support/CodeGenCoverage.cpp b/llvm/lib/Support/CodeGenCoverage.cpp --- a/llvm/lib/Support/CodeGenCoverage.cpp +++ b/llvm/lib/Support/CodeGenCoverage.cpp @@ -13,6 +13,7 @@ #include "llvm/Support/Endian.h" #include "llvm/Support/FileSystem.h" +#include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/Mutex.h" #include "llvm/Support/Process.h" @@ -21,7 +22,7 @@ using namespace llvm; -static sys::SmartMutex OutputMutex; +static ManagedStatic> OutputMutex; CodeGenCoverage::CodeGenCoverage() {} @@ -78,7 +79,7 @@ bool CodeGenCoverage::emit(StringRef CoveragePrefix, StringRef BackendName) const { if (!CoveragePrefix.empty() && !RuleCoverage.empty()) { - sys::SmartScopedLock Lock(OutputMutex); + sys::SmartScopedLock Lock(*OutputMutex); // We can handle locking within a process easily enough but we don't want to // manage it between multiple processes. Use the process ID to ensure no