From: Erik Eckstein Date: Thu, 5 Mar 2015 17:53:00 +0000 (+0000) Subject: Revert r231276 (including r231277): Add a lock() function in PassRegistry to speed... X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=8b4cc5e61610d58ca356beeff224efbe6d458bee;p=oota-llvm.git Revert r231276 (including r231277): Add a lock() function in PassRegistry to speed up multi-thread synchronization. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231385 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/PassRegistry.h b/include/llvm/PassRegistry.h index 97e2bde999b..8c28ef5e7e6 100644 --- a/include/llvm/PassRegistry.h +++ b/include/llvm/PassRegistry.h @@ -25,7 +25,6 @@ #include "llvm/PassInfo.h" #include "llvm/Support/CBindingWrapping.h" #include "llvm/Support/RWMutex.h" -#include #include namespace llvm { @@ -42,9 +41,6 @@ struct PassRegistrationListener; class PassRegistry { mutable sys::SmartRWMutex Lock; - /// Only if false, synchronization must use the Lock mutex. - std::atomic locked; - /// PassInfoMap - Keep track of the PassInfo object for each registered pass. typedef DenseMap MapType; MapType PassInfoMap; @@ -56,7 +52,7 @@ class PassRegistry { std::vector Listeners; public: - PassRegistry() : locked(false) {} + PassRegistry() {} ~PassRegistry(); /// getPassRegistry - Access the global registry object, which is @@ -64,10 +60,6 @@ public: /// llvm_shutdown. static PassRegistry *getPassRegistry(); - /// Enables fast thread synchronization in getPassInfo(). - /// After calling lock() no more passes may be registered. - void lock() { locked = true; } - /// getPassInfo - Look up a pass' corresponding PassInfo, indexed by the pass' /// type identifier (&MyPass::ID). const PassInfo *getPassInfo(const void *TI) const; diff --git a/lib/IR/PassRegistry.cpp b/lib/IR/PassRegistry.cpp index 6002e6849d7..b879fef3f4a 100644 --- a/lib/IR/PassRegistry.cpp +++ b/lib/IR/PassRegistry.cpp @@ -13,7 +13,6 @@ //===----------------------------------------------------------------------===// #include "llvm/PassRegistry.h" -#include "llvm/ADT/Optional.h" #include "llvm/IR/Function.h" #include "llvm/PassSupport.h" #include "llvm/Support/Compiler.h" @@ -40,23 +39,13 @@ PassRegistry *PassRegistry::getPassRegistry() { PassRegistry::~PassRegistry() {} const PassInfo *PassRegistry::getPassInfo(const void *TI) const { - // We don't need thread synchronization after the PassRegistry is locked - // (that means: is read-only). - Optional> Guard; - if (!locked) - Guard.emplace(Lock); - + sys::SmartScopedReader Guard(Lock); MapType::const_iterator I = PassInfoMap.find(TI); return I != PassInfoMap.end() ? I->second : nullptr; } const PassInfo *PassRegistry::getPassInfo(StringRef Arg) const { - // We don't need thread synchronization after the PassRegistry is locked - // (that means: is read-only). - Optional> Guard; - if (!locked) - Guard.emplace(Lock); - + sys::SmartScopedReader Guard(Lock); StringMapType::const_iterator I = PassInfoStringMap.find(Arg); return I != PassInfoStringMap.end() ? I->second : nullptr; } @@ -66,9 +55,6 @@ const PassInfo *PassRegistry::getPassInfo(StringRef Arg) const { // void PassRegistry::registerPass(const PassInfo &PI, bool ShouldFree) { - - assert(!locked && "Trying to register a pass in a locked PassRegistry"); - sys::SmartScopedWriter Guard(Lock); bool Inserted = PassInfoMap.insert(std::make_pair(PI.getTypeInfo(), &PI)).second; @@ -82,8 +68,6 @@ void PassRegistry::registerPass(const PassInfo &PI, bool ShouldFree) { if (ShouldFree) ToFree.push_back(std::unique_ptr(&PI)); - - assert(!locked && "PassRegistry locked during registering a pass"); } void PassRegistry::enumerateWith(PassRegistrationListener *L) {