aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Analysis/IPA/CallGraphSCCPass.cpp26
-rw-r--r--lib/VMCore/PassManager.cpp16
-rw-r--r--test/Transforms/SimplifyLibCalls/2009-02-11-NotInitialized.ll1
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: