diff options
-rw-r--r-- | lib/Analysis/IPA/CallGraphSCCPass.cpp | 26 | ||||
-rw-r--r-- | lib/VMCore/PassManager.cpp | 16 | ||||
-rw-r--r-- | test/Transforms/SimplifyLibCalls/2009-02-11-NotInitialized.ll | 1 |
3 files changed, 17 insertions, 26 deletions
diff --git a/lib/Analysis/IPA/CallGraphSCCPass.cpp b/lib/Analysis/IPA/CallGraphSCCPass.cpp index 0a2f7c5397..b8343cf4ce 100644 --- a/lib/Analysis/IPA/CallGraphSCCPass.cpp +++ b/lib/Analysis/IPA/CallGraphSCCPass.cpp @@ -40,8 +40,8 @@ public: /// whether any of the passes modifies the module, and if so, return true. bool runOnModule(Module &M); - bool doInitialization(CallGraph &CG, Module &M); - bool doFinalization(CallGraph &CG, Module &M); + bool doInitialization(CallGraph &CG); + bool doFinalization(CallGraph &CG); /// Pass Manager itself does not invalidate any analysis info. void getAnalysisUsage(AnalysisUsage &Info) const { @@ -82,7 +82,7 @@ char CGPassManager::ID = 0; /// whether any of the passes modifies the module, and if so, return true. bool CGPassManager::runOnModule(Module &M) { CallGraph &CG = getAnalysis<CallGraph>(); - bool Changed = doInitialization(CG, M); + bool Changed = doInitialization(CG); // Walk SCC for (scc_iterator<CallGraph*> I = scc_begin(&CG), E = scc_end(&CG); @@ -126,38 +126,28 @@ bool CGPassManager::runOnModule(Module &M) { removeDeadPasses(P, "", ON_CG_MSG); } } - Changed |= doFinalization(CG, M); + Changed |= doFinalization(CG); return Changed; } /// Initialize CG -bool CGPassManager::doInitialization(CallGraph &CG, Module &M) { +bool CGPassManager::doInitialization(CallGraph &CG) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { Pass *P = getContainedPass(Index); - if (CallGraphSCCPass *CGSP = dynamic_cast<CallGraphSCCPass *>(P)) { + if (CallGraphSCCPass *CGSP = dynamic_cast<CallGraphSCCPass *>(P)) Changed |= CGSP->doInitialization(CG); - } else { - FPPassManager *FP = dynamic_cast<FPPassManager *>(P); - assert (FP && "Invalid CGPassManager member"); - Changed |= FP->doInitialization(M); - } } return Changed; } /// Finalize CG -bool CGPassManager::doFinalization(CallGraph &CG, Module &M) { +bool CGPassManager::doFinalization(CallGraph &CG) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { Pass *P = getContainedPass(Index); - if (CallGraphSCCPass *CGSP = dynamic_cast<CallGraphSCCPass *>(P)) { + if (CallGraphSCCPass *CGSP = dynamic_cast<CallGraphSCCPass *>(P)) Changed |= CGSP->doFinalization(CG); - } else { - FPPassManager *FP = dynamic_cast<FPPassManager *>(P); - assert (FP && "Invalid CGPassManager member"); - Changed |= FP->doFinalization(M); - } } return Changed; } diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 4335757a50..f2bfaefe0f 100644 --- a/lib/VMCore/PassManager.cpp +++ b/lib/VMCore/PassManager.cpp @@ -1140,7 +1140,7 @@ BBPassManager::runOnFunction(Function &F) { } // Implement doInitialization and doFinalization -bool BBPassManager::doInitialization(Module &M) { +inline bool BBPassManager::doInitialization(Module &M) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { @@ -1151,7 +1151,7 @@ bool BBPassManager::doInitialization(Module &M) { return Changed; } -bool BBPassManager::doFinalization(Module &M) { +inline bool BBPassManager::doFinalization(Module &M) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { @@ -1162,7 +1162,7 @@ bool BBPassManager::doFinalization(Module &M) { return Changed; } -bool BBPassManager::doInitialization(Function &F) { +inline bool BBPassManager::doInitialization(Function &F) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { @@ -1173,7 +1173,7 @@ bool BBPassManager::doInitialization(Function &F) { return Changed; } -bool BBPassManager::doFinalization(Function &F) { +inline bool BBPassManager::doFinalization(Function &F) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { @@ -1242,7 +1242,7 @@ bool FunctionPassManager::doFinalization() { //===----------------------------------------------------------------------===// // FunctionPassManagerImpl implementation // -bool FunctionPassManagerImpl::doInitialization(Module &M) { +inline bool FunctionPassManagerImpl::doInitialization(Module &M) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedManagers(); ++Index) { @@ -1253,7 +1253,7 @@ bool FunctionPassManagerImpl::doInitialization(Module &M) { return Changed; } -bool FunctionPassManagerImpl::doFinalization(Module &M) { +inline bool FunctionPassManagerImpl::doFinalization(Module &M) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedManagers(); ++Index) { @@ -1348,7 +1348,7 @@ bool FPPassManager::runOnModule(Module &M) { return Changed |= doFinalization(M); } -bool FPPassManager::doInitialization(Module &M) { +inline bool FPPassManager::doInitialization(Module &M) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { @@ -1359,7 +1359,7 @@ bool FPPassManager::doInitialization(Module &M) { return Changed; } -bool FPPassManager::doFinalization(Module &M) { +inline bool FPPassManager::doFinalization(Module &M) { bool Changed = false; for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) { diff --git a/test/Transforms/SimplifyLibCalls/2009-02-11-NotInitialized.ll b/test/Transforms/SimplifyLibCalls/2009-02-11-NotInitialized.ll index 7d3a5c1b9e..41ab1d145f 100644 --- a/test/Transforms/SimplifyLibCalls/2009-02-11-NotInitialized.ll +++ b/test/Transforms/SimplifyLibCalls/2009-02-11-NotInitialized.ll @@ -1,6 +1,7 @@ ; RUN: llvm-as < %s | opt -std-compile-opts | llvm-dis | grep nocapture | count 2 ; Check that nocapture attributes are added when run after an SCC pass. ; PR3520 +; XFAIL: * define i32 @use(i8* %x) nounwind readonly { entry: |