aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2006-12-07 19:54:15 +0000
committerDevang Patel <dpatel@apple.com>2006-12-07 19:54:15 +0000
commitdc48f203cdc5a0b8f79d28bab6219161061fd73b (patch)
tree217c9ce03d1e1428ce38d4b4c4df872712a619ea
parent06e86561a5261a59f5c391d5cc5cb4aa38dca83c (diff)
Add a handle to the top level pass manager in PMDataManager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32317 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/VMCore/PassManager.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/VMCore/PassManager.cpp b/lib/VMCore/PassManager.cpp
index bf306e9d5c..0dff67f272 100644
--- a/lib/VMCore/PassManager.cpp
+++ b/lib/VMCore/PassManager.cpp
@@ -160,7 +160,8 @@ void PMTopLevelManager::collectLastUses(std::vector<Pass *> &LastUses,
LastUses.push_back(LUI->first);
}
-
+//===----------------------------------------------------------------------===//
+// PMDataManager
/// PMDataManager provides the common place to manage the analysis data
/// used by pass managers.
@@ -168,6 +169,10 @@ class PMDataManager {
public:
+ PMDataManager() : TPM(NULL) {
+ initializeAnalysisInfo();
+ }
+
/// Return true IFF pass P's required analysis set does not required new
/// manager.
bool manageablePass(Pass *P);
@@ -222,6 +227,10 @@ public:
// TODO : Check if pass P is available.
}
+ // Access toplevel manager
+ PMTopLevelManager *getTopLevelManager() { return TPM; }
+ void setTopLevelManager(PMTopLevelManager *T) { TPM = T; }
+
private:
// Set of available Analysis. This information is used while scheduling
// pass. If a pass requires an analysis which is not not available then
@@ -235,6 +244,10 @@ private:
// Collection of pass that are managed by this manager
std::vector<Pass *> PassVector;
+
+ // Top level manager.
+ // TODO : Make it a reference.
+ PMTopLevelManager *TPM;
};
/// BasicBlockPassManager_New manages BasicBlockPass. It batches all the