From cb634e00609b345c034c83fabdad4ebd04fa5f1a Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Fri, 19 Jun 2009 17:45:12 +0000 Subject: 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 --- lib/VMCore/Pass.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'lib/VMCore/Pass.cpp') diff --git a/lib/VMCore/Pass.cpp b/lib/VMCore/Pass.cpp index 3fce83d..e943e31 100644 --- a/lib/VMCore/Pass.cpp +++ b/lib/VMCore/Pass.cpp @@ -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; } -- cgit v1.1