Move the memory fences out of the path for single-threaded mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73775 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Owen Anderson 2009-06-19 17:45:12 +00:00
parent 958e292c7a
commit 8e1c17aa5a
2 changed files with 15 additions and 14 deletions

View File

@ -198,9 +198,9 @@ static PassRegistrar *getPassRegistrar() {
// Use double-checked locking to safely initialize the registrar when
// we're running in multithreaded mode.
PassRegistrar* tmp = PassRegistrarObj;
sys::MemoryFence();
if (!tmp) {
if (llvm_is_multithreaded()) {
if (llvm_is_multithreaded()) {
sys::MemoryFence();
if (!tmp) {
llvm_acquire_global_lock();
tmp = PassRegistrarObj;
if (!tmp) {
@ -209,10 +209,11 @@ static PassRegistrar *getPassRegistrar() {
PassRegistrarObj = tmp;
}
llvm_release_global_lock();
} else {
PassRegistrarObj = new PassRegistrar();
}
} else if (!tmp) {
PassRegistrarObj = new PassRegistrar();
}
return PassRegistrarObj;
}

View File

@ -458,9 +458,9 @@ void DerivedType::dropAllTypeUses() {
static Type *AlwaysOpaqueTy = 0;
static PATypeHolder* Holder = 0;
Type *tmp = AlwaysOpaqueTy;
sys::MemoryFence();
if (!tmp) {
if (llvm_is_multithreaded()) {
if (llvm_is_multithreaded()) {
sys::MemoryFence();
if (!tmp) {
llvm_acquire_global_lock();
tmp = AlwaysOpaqueTy;
if (!tmp) {
@ -472,12 +472,12 @@ void DerivedType::dropAllTypeUses() {
}
llvm_release_global_lock();
} else {
AlwaysOpaqueTy = OpaqueType::get();
Holder = new PATypeHolder(AlwaysOpaqueTy);
}
}
}
} else {
AlwaysOpaqueTy = OpaqueType::get();
Holder = new PATypeHolder(AlwaysOpaqueTy);
}
ContainedTys[0] = AlwaysOpaqueTy;
// Change the rest of the types to be Int32Ty's. It doesn't matter what we