Fix the double checked locking in this file too.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73703 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Owen Anderson 2009-06-18 16:17:42 +00:00
parent 3cfc62aa08
commit 1d36e4fa7c

View File

@ -455,12 +455,14 @@ void DerivedType::dropAllTypeUses() {
// that will never get resolved, thus will always be abstract.
static Type *AlwaysOpaqueTy = 0;
static PATypeHolder* Holder = 0;
if (!AlwaysOpaqueTy) {
Type *tmp = AlwaysOpaqueTy;
sys::MemoryFence();
if (!tmp) {
if (llvm_is_multithreaded()) {
llvm_acquire_global_lock();
if (!AlwaysOpaqueTy) {
Type *tmp = OpaqueType::get();
tmp = AlwaysOpaqueTy;
if (!tmp) {
tmp = OpaqueType::get();
PATypeHolder* tmp2 = new PATypeHolder(AlwaysOpaqueTy);
sys::MemoryFence();
AlwaysOpaqueTy = tmp;