diff options
author | Devang Patel <dpatel@apple.com> | 2007-03-06 01:06:16 +0000 |
---|---|---|
committer | Devang Patel <dpatel@apple.com> | 2007-03-06 01:06:16 +0000 |
commit | 22a1cf9d3a5c829d260bcf44ffe6b34ecf16076c (patch) | |
tree | 401001fdf03f243858333135ff77f3d73a69031a /lib/VMCore/PassManager.cpp | |
parent | b9a7bea99c8aac6eb3509df93a25fe9cc3858bde (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34941 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/PassManager.cpp')
-rw-r--r-- | lib/VMCore/PassManager.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp index 23a26130fc..2535308243 100644 --- a/lib/VMCore/PassManager.cpp +++ b/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(); |