diff options
author | Dan Gohman <gohman@apple.com> | 2008-05-13 02:05:11 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-05-13 02:05:11 +0000 |
commit | 66a636e07c90c7270b673406f2bac1bfea81ea8b (patch) | |
tree | 02c986fdfaf2f67a232f705d77841290240c2f0b /lib | |
parent | 285e2e4b303a2bd5d48eb4c27bf9405b17c129a4 (diff) | |
download | external_llvm-66a636e07c90c7270b673406f2bac1bfea81ea8b.tar.gz external_llvm-66a636e07c90c7270b673406f2bac1bfea81ea8b.tar.bz2 external_llvm-66a636e07c90c7270b673406f2bac1bfea81ea8b.zip |
Change class' public PassInfo variables to by initialized with the
address of the PassInfo directly instead of calling getPassInfo.
This eliminates a bunch of dynamic initializations of static data.
Also, fold RegisterPassBase into PassInfo, make a bunch of its
data members const, and rearrange some code to initialize data
members in constructors instead of using setter member functions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51022 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/CodeGen/MachineDominators.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/MachineLoopInfo.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/PHIElimination.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/SimpleRegisterCoalescing.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/StrongPHIElimination.cpp | 2 | ||||
-rw-r--r-- | lib/CodeGen/TwoAddressInstructionPass.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Scalar/Reg2Mem.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/BreakCriticalEdges.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/LCSSA.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/LoopSimplify.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/LowerAllocations.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/LowerInvoke.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/LowerSwitch.cpp | 2 | ||||
-rw-r--r-- | lib/Transforms/Utils/Mem2Reg.cpp | 2 | ||||
-rw-r--r-- | lib/VMCore/Pass.cpp | 37 | ||||
-rw-r--r-- | lib/VMCore/Verifier.cpp | 2 |
16 files changed, 31 insertions, 36 deletions
diff --git a/lib/CodeGen/MachineDominators.cpp b/lib/CodeGen/MachineDominators.cpp index 0710c10d96..8f67993620 100644 --- a/lib/CodeGen/MachineDominators.cpp +++ b/lib/CodeGen/MachineDominators.cpp @@ -25,4 +25,4 @@ char MachineDominatorTree::ID = 0; static RegisterPass<MachineDominatorTree> E("machinedomtree", "MachineDominator Tree Construction", true); -const PassInfo *llvm::MachineDominatorsID = E.getPassInfo(); +const PassInfo *const llvm::MachineDominatorsID = &E; diff --git a/lib/CodeGen/MachineLoopInfo.cpp b/lib/CodeGen/MachineLoopInfo.cpp index ac3df43500..68ddb7b3f4 100644 --- a/lib/CodeGen/MachineLoopInfo.cpp +++ b/lib/CodeGen/MachineLoopInfo.cpp @@ -26,7 +26,7 @@ char MachineLoopInfo::ID = 0; static RegisterPass<MachineLoopInfo> X("machine-loops", "Machine Natural Loop Construction", true); -const PassInfo *llvm::MachineLoopInfoID = X.getPassInfo(); +const PassInfo *const llvm::MachineLoopInfoID = &X; bool MachineLoopInfo::runOnMachineFunction(MachineFunction &) { releaseMemory(); diff --git a/lib/CodeGen/PHIElimination.cpp b/lib/CodeGen/PHIElimination.cpp index 4a9077a063..4e2ed678e1 100644 --- a/lib/CodeGen/PHIElimination.cpp +++ b/lib/CodeGen/PHIElimination.cpp @@ -79,7 +79,7 @@ char PNE::ID = 0; static RegisterPass<PNE> X("phi-node-elimination", "Eliminate PHI nodes for register allocation"); -const PassInfo *llvm::PHIEliminationID = X.getPassInfo(); +const PassInfo *const llvm::PHIEliminationID = &X; bool PNE::runOnMachineFunction(MachineFunction &Fn) { MRI = &Fn.getRegInfo(); diff --git a/lib/CodeGen/SimpleRegisterCoalescing.cpp b/lib/CodeGen/SimpleRegisterCoalescing.cpp index 2526d4d846..5e18534c9e 100644 --- a/lib/CodeGen/SimpleRegisterCoalescing.cpp +++ b/lib/CodeGen/SimpleRegisterCoalescing.cpp @@ -58,7 +58,7 @@ X("simple-register-coalescing", "Simple Register Coalescing"); // Declare that we implement the RegisterCoalescer interface static RegisterAnalysisGroup<RegisterCoalescer, true/*The Default*/> V(X); -const PassInfo *llvm::SimpleRegisterCoalescingID = X.getPassInfo(); +const PassInfo *const llvm::SimpleRegisterCoalescingID = &X; void SimpleRegisterCoalescing::getAnalysisUsage(AnalysisUsage &AU) const { AU.addPreserved<LiveIntervals>(); diff --git a/lib/CodeGen/StrongPHIElimination.cpp b/lib/CodeGen/StrongPHIElimination.cpp index 79f8f507c6..97e4fb9b6e 100644 --- a/lib/CodeGen/StrongPHIElimination.cpp +++ b/lib/CodeGen/StrongPHIElimination.cpp @@ -147,7 +147,7 @@ static RegisterPass<StrongPHIElimination> X("strong-phi-node-elimination", "Eliminate PHI nodes for register allocation, intelligently"); -const PassInfo *llvm::StrongPHIEliminationID = X.getPassInfo(); +const PassInfo *const llvm::StrongPHIEliminationID = &X; /// computeDFS - Computes the DFS-in and DFS-out numbers of the dominator tree /// of the given MachineFunction. These numbers are then used in other parts diff --git a/lib/CodeGen/TwoAddressInstructionPass.cpp b/lib/CodeGen/TwoAddressInstructionPass.cpp index f343ff40d8..1e24914f3f 100644 --- a/lib/CodeGen/TwoAddressInstructionPass.cpp +++ b/lib/CodeGen/TwoAddressInstructionPass.cpp @@ -81,7 +81,7 @@ char TwoAddressInstructionPass::ID = 0; static RegisterPass<TwoAddressInstructionPass> X("twoaddressinstruction", "Two-Address instruction pass"); -const PassInfo *llvm::TwoAddressInstructionPassID = X.getPassInfo(); +const PassInfo *const llvm::TwoAddressInstructionPassID = &X; /// Sink3AddrInstruction - A two-address instruction has been converted to a /// three-address instruction to avoid clobbering a register. Try to sink it diff --git a/lib/Transforms/Scalar/Reg2Mem.cpp b/lib/Transforms/Scalar/Reg2Mem.cpp index b31b1d1fa6..6d408df546 100644 --- a/lib/Transforms/Scalar/Reg2Mem.cpp +++ b/lib/Transforms/Scalar/Reg2Mem.cpp @@ -119,7 +119,7 @@ X("reg2mem", "Demote all values to stack slots"); // createDemoteRegisterToMemory - Provide an entry point to create this pass. // -const PassInfo *llvm::DemoteRegisterToMemoryID = X.getPassInfo(); +const PassInfo *const llvm::DemoteRegisterToMemoryID = &X; FunctionPass *llvm::createDemoteRegisterToMemoryPass() { return new RegToMem(); } diff --git a/lib/Transforms/Utils/BreakCriticalEdges.cpp b/lib/Transforms/Utils/BreakCriticalEdges.cpp index 4bf7bac4e2..bc9fdfde88 100644 --- a/lib/Transforms/Utils/BreakCriticalEdges.cpp +++ b/lib/Transforms/Utils/BreakCriticalEdges.cpp @@ -55,7 +55,7 @@ static RegisterPass<BreakCriticalEdges> X("break-crit-edges", "Break critical edges in CFG"); // Publically exposed interface to pass... -const PassInfo *llvm::BreakCriticalEdgesID = X.getPassInfo(); +const PassInfo *const llvm::BreakCriticalEdgesID = &X; FunctionPass *llvm::createBreakCriticalEdgesPass() { return new BreakCriticalEdges(); } diff --git a/lib/Transforms/Utils/LCSSA.cpp b/lib/Transforms/Utils/LCSSA.cpp index ff5f863645..a98733bea5 100644 --- a/lib/Transforms/Utils/LCSSA.cpp +++ b/lib/Transforms/Utils/LCSSA.cpp @@ -100,7 +100,7 @@ char LCSSA::ID = 0; static RegisterPass<LCSSA> X("lcssa", "Loop-Closed SSA Form Pass"); LoopPass *llvm::createLCSSAPass() { return new LCSSA(); } -const PassInfo *llvm::LCSSAID = X.getPassInfo(); +const PassInfo *const llvm::LCSSAID = &X; /// runOnFunction - Process all loops in the function, inner-most out. bool LCSSA::runOnLoop(Loop *L, LPPassManager &LPM) { diff --git a/lib/Transforms/Utils/LoopSimplify.cpp b/lib/Transforms/Utils/LoopSimplify.cpp index 9351837aca..308819e70a 100644 --- a/lib/Transforms/Utils/LoopSimplify.cpp +++ b/lib/Transforms/Utils/LoopSimplify.cpp @@ -102,7 +102,7 @@ static RegisterPass<LoopSimplify> X("loopsimplify", "Canonicalize natural loops", true); // Publically exposed interface to pass... -const PassInfo *llvm::LoopSimplifyID = X.getPassInfo(); +const PassInfo *const llvm::LoopSimplifyID = &X; FunctionPass *llvm::createLoopSimplifyPass() { return new LoopSimplify(); } /// runOnFunction - Run down all loops in the CFG (recursively, but we could do diff --git a/lib/Transforms/Utils/LowerAllocations.cpp b/lib/Transforms/Utils/LowerAllocations.cpp index edce5e144c..f65a716711 100644 --- a/lib/Transforms/Utils/LowerAllocations.cpp +++ b/lib/Transforms/Utils/LowerAllocations.cpp @@ -73,7 +73,7 @@ static RegisterPass<LowerAllocations> X("lowerallocs", "Lower allocations from instructions to calls"); // Publically exposed interface to pass... -const PassInfo *llvm::LowerAllocationsID = X.getPassInfo(); +const PassInfo *const llvm::LowerAllocationsID = &X; // createLowerAllocationsPass - Interface to this file... Pass *llvm::createLowerAllocationsPass(bool LowerMallocArgToInteger) { return new LowerAllocations(LowerMallocArgToInteger); diff --git a/lib/Transforms/Utils/LowerInvoke.cpp b/lib/Transforms/Utils/LowerInvoke.cpp index 0530e52173..4b7e3a3314 100644 --- a/lib/Transforms/Utils/LowerInvoke.cpp +++ b/lib/Transforms/Utils/LowerInvoke.cpp @@ -104,7 +104,7 @@ char LowerInvoke::ID = 0; static RegisterPass<LowerInvoke> X("lowerinvoke", "Lower invoke and unwind, for unwindless code generators"); -const PassInfo *llvm::LowerInvokePassID = X.getPassInfo(); +const PassInfo *const llvm::LowerInvokePassID = &X; // Public Interface To the LowerInvoke pass. FunctionPass *llvm::createLowerInvokePass(const TargetLowering *TLI) { diff --git a/lib/Transforms/Utils/LowerSwitch.cpp b/lib/Transforms/Utils/LowerSwitch.cpp index 9ddb2cd1d9..c24847858c 100644 --- a/lib/Transforms/Utils/LowerSwitch.cpp +++ b/lib/Transforms/Utils/LowerSwitch.cpp @@ -84,7 +84,7 @@ static RegisterPass<LowerSwitch> X("lowerswitch", "Lower SwitchInst's to branches"); // Publically exposed interface to pass... -const PassInfo *llvm::LowerSwitchID = X.getPassInfo(); +const PassInfo *const llvm::LowerSwitchID = &X; // createLowerSwitchPass - Interface to this file... FunctionPass *llvm::createLowerSwitchPass() { return new LowerSwitch(); diff --git a/lib/Transforms/Utils/Mem2Reg.cpp b/lib/Transforms/Utils/Mem2Reg.cpp index e402bb9357..1a936c0414 100644 --- a/lib/Transforms/Utils/Mem2Reg.cpp +++ b/lib/Transforms/Utils/Mem2Reg.cpp @@ -84,7 +84,7 @@ bool PromotePass::runOnFunction(Function &F) { } // Publically exposed interface to pass... -const PassInfo *llvm::PromoteMemoryToRegisterID = X.getPassInfo(); +const PassInfo *const llvm::PromoteMemoryToRegisterID = &X; // createPromoteMemoryToRegister - Provide an entry point to create this pass. // FunctionPass *llvm::createPromoteMemoryToRegisterPass() { diff --git a/lib/VMCore/Pass.cpp b/lib/VMCore/Pass.cpp index bd34883493..e0fe6222b5 100644 --- a/lib/VMCore/Pass.cpp +++ b/lib/VMCore/Pass.cpp @@ -122,7 +122,8 @@ namespace { class PassRegistrar { /// PassInfoMap - Keep track of the passinfo object for each registered llvm /// pass. - std::map<intptr_t, PassInfo*> PassInfoMap; + typedef std::map<intptr_t, const PassInfo*> MapType; + MapType PassInfoMap; /// AnalysisGroupInfo - Keep track of information for each analysis group. struct AnalysisGroupInfo { @@ -137,19 +138,18 @@ class PassRegistrar { public: const PassInfo *GetPassInfo(intptr_t TI) const { - std::map<intptr_t, PassInfo*>::const_iterator I = PassInfoMap.find(TI); + MapType::const_iterator I = PassInfoMap.find(TI); return I != PassInfoMap.end() ? I->second : 0; } - void RegisterPass(PassInfo &PI) { + void RegisterPass(const PassInfo &PI) { bool Inserted = PassInfoMap.insert(std::make_pair(PI.getTypeInfo(),&PI)).second; assert(Inserted && "Pass registered multiple times!"); } - void UnregisterPass(PassInfo &PI) { - std::map<intptr_t, PassInfo*>::iterator I = - PassInfoMap.find(PI.getTypeInfo()); + void UnregisterPass(const PassInfo &PI) { + MapType::iterator I = PassInfoMap.find(PI.getTypeInfo()); assert(I != PassInfoMap.end() && "Pass registered but not in map!"); // Remove pass from the map. @@ -157,7 +157,7 @@ public: } void EnumerateWith(PassRegistrationListener *L) { - for (std::map<intptr_t, PassInfo*>::const_iterator I = PassInfoMap.begin(), + for (MapType::const_iterator I = PassInfoMap.begin(), E = PassInfoMap.end(); I != E; ++I) L->passEnumerate(I->second); } @@ -206,18 +206,18 @@ const PassInfo *Pass::lookupPassInfo(intptr_t TI) { return getPassRegistrar()->GetPassInfo(TI); } -void RegisterPassBase::registerPass() { - getPassRegistrar()->RegisterPass(PIObj); +void PassInfo::registerPass() { + getPassRegistrar()->RegisterPass(*this); // Notify any listeners. if (Listeners) for (std::vector<PassRegistrationListener*>::iterator I = Listeners->begin(), E = Listeners->end(); I != E; ++I) - (*I)->passRegistered(&PIObj); + (*I)->passRegistered(this); } -void RegisterPassBase::unregisterPass() { - getPassRegistrar()->UnregisterPass(PIObj); +void PassInfo::unregisterPass() { + getPassRegistrar()->UnregisterPass(*this); } //===----------------------------------------------------------------------===// @@ -226,18 +226,18 @@ void RegisterPassBase::unregisterPass() { // RegisterAGBase implementation // -RegisterAGBase::RegisterAGBase(intptr_t InterfaceID, +RegisterAGBase::RegisterAGBase(const char *Name, intptr_t InterfaceID, intptr_t PassID, bool isDefault) - : RegisterPassBase(InterfaceID), + : PassInfo(Name, InterfaceID), ImplementationInfo(0), isDefaultImplementation(isDefault) { InterfaceInfo = const_cast<PassInfo*>(Pass::lookupPassInfo(InterfaceID)); if (InterfaceInfo == 0) { // First reference to Interface, register it now. registerPass(); - InterfaceInfo = &PIObj; + InterfaceInfo = this; } - assert(PIObj.isAnalysisGroup() && + assert(isAnalysisGroup() && "Trying to join an analysis group that is a normal pass!"); if (PassID) { @@ -254,11 +254,6 @@ RegisterAGBase::RegisterAGBase(intptr_t InterfaceID, } } -void RegisterAGBase::setGroupName(const char *Name) { - assert(InterfaceInfo->getPassName()[0] == 0 && "Interface Name already set!"); - InterfaceInfo->setPassName(Name); -} - //===----------------------------------------------------------------------===// // PassRegistrationListener implementation diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index 4c6f9e00f7..86aff9bdad 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -97,7 +97,7 @@ namespace { // Anonymous namespace for class char PreVerifier::ID = 0; static RegisterPass<PreVerifier> PreVer("preverify", "Preliminary module verification"); -static const PassInfo *PreVerifyID = PreVer.getPassInfo(); +static const PassInfo *PreVerifyID = &PreVer; namespace { struct VISIBILITY_HIDDEN |