mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-21 09:25:07 +00:00
Don't acquire the mutex during the destructor of PassRegistry.
This destructor is run as part of static program termination, and so all ManagedStatics (including this lock) will have been destroyed by llvm_shutdown. Furthermore, if there is actually a race condition during static program termination, then we are just hiding a bug somewhere else, because other threads should not be running at this point. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210717 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
07aac43603
commit
a876305231
@ -73,7 +73,10 @@ void *PassRegistry::getImpl() const {
|
||||
//
|
||||
|
||||
PassRegistry::~PassRegistry() {
|
||||
sys::SmartScopedWriter<true> Guard(*Lock);
|
||||
// Don't acquire the mutex here. This is destroyed during static execution of
|
||||
// static destructors, after llvm_shutdown() has been called, so all instances
|
||||
// of all ManagedStatics (including the Mutex), will have been destroyed as
|
||||
// well.
|
||||
PassRegistryImpl *Impl = static_cast<PassRegistryImpl*>(pImpl);
|
||||
delete Impl;
|
||||
pImpl = nullptr;
|
||||
|
Loading…
x
Reference in New Issue
Block a user