summaryrefslogtreecommitdiffstats
path: root/llvm/lib/VMCore/PassManager.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2007-03-06 01:06:16 +0000
committerDevang Patel <dpatel@apple.com>2007-03-06 01:06:16 +0000
commitd74ede70fb38da4e4ec9c809454d1e8fade5150f (patch)
treeef7462dc57bceb6021de8bf90f416dabad5d2813 /llvm/lib/VMCore/PassManager.cpp
parent4f2e4e0f92201424265ad3547efbb7385e6feb43 (diff)
downloadbcm5719-llvm-d74ede70fb38da4e4ec9c809454d1e8fade5150f.tar.gz
bcm5719-llvm-d74ede70fb38da4e4ec9c809454d1e8fade5150f.zip
Add preparePassManager() hook. This allows each pass to check whether
current active pass manager is appropriate or not. A loop pass may consider current LPPassManager in appropraite if loop pass is not preserving analysis information that is used by other passes managed by current LPPassManager. In such situation, loop pass can pop current LPPassManager from the PMStack using this hook and use new LPPassManager for itself. llvm-svn: 34941
Diffstat (limited to 'llvm/lib/VMCore/PassManager.cpp')
-rw-r--r--llvm/lib/VMCore/PassManager.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/VMCore/PassManager.cpp b/llvm/lib/VMCore/PassManager.cpp
index 23a26130fc3..25353082433 100644
--- a/llvm/lib/VMCore/PassManager.cpp
+++ b/llvm/lib/VMCore/PassManager.cpp
@@ -385,6 +385,9 @@ void PMTopLevelManager::schedulePass(Pass *P) {
if (findAnalysisPass(P->getPassInfo()))
return;
+ // Give pass a chance to prepare the stage.
+ P->preparePassManager(activeStack);
+
AnalysisUsage AnUsage;
P->getAnalysisUsage(AnUsage);
const std::vector<AnalysisID> &RequiredSet = AnUsage.getRequiredSet();
OpenPOWER on IntegriCloud