diff options
author | Misha Brukman <brukman+llvm@gmail.com> | 2004-03-12 06:13:15 +0000 |
---|---|---|
committer | Misha Brukman <brukman+llvm@gmail.com> | 2004-03-12 06:13:15 +0000 |
commit | 8e18789ede4f1d1684e949af9dac0e033971ee27 (patch) | |
tree | fc068974a184102648a722e20948fda78665f7a2 /include | |
parent | f820e3b4b85a1c9c7c7cf00408656901b90a3f54 (diff) | |
download | external_llvm-8e18789ede4f1d1684e949af9dac0e033971ee27.zip external_llvm-8e18789ede4f1d1684e949af9dac0e033971ee27.tar.gz external_llvm-8e18789ede4f1d1684e949af9dac0e033971ee27.tar.bz2 |
Add AnalysisUsage::addRequiredTransitive() to keep analysis info alive for
future queries by clients.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12329 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/PassAnalysisSupport.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/include/llvm/PassAnalysisSupport.h b/include/llvm/PassAnalysisSupport.h index f62465a..5a71641 100644 --- a/include/llvm/PassAnalysisSupport.h +++ b/include/llvm/PassAnalysisSupport.h @@ -25,14 +25,15 @@ namespace llvm { //===----------------------------------------------------------------------===// // AnalysisUsage - Represent the analysis usage information of a pass. This -// tracks analyses that the pass REQUIRES (must available when the pass runs), -// and analyses that the pass PRESERVES (the pass does not invalidate the -// results of these analyses). This information is provided by a pass to the +// tracks analyses that the pass REQUIRES (must be available when the pass +// runs), REQUIRES TRANSITIVE (must be available throughout the lifetime of the +// pass), and analyses that the pass PRESERVES (the pass does not invalidate the +// results of these analyses). This information is provided by a pass to the // Pass infrastructure through the getAnalysisUsage virtual function. // class AnalysisUsage { // Sets of analyses required and preserved by a pass - std::vector<AnalysisID> Required, Preserved; + std::vector<AnalysisID> Required, RequiredTransitive, Preserved; bool PreservesAll; public: AnalysisUsage() : PreservesAll(false) {} @@ -51,6 +52,15 @@ public: return *this; } + template<class PassClass> + AnalysisUsage &addRequiredTransitive() { + AnalysisID ID = Pass::getClassPassInfo<PassClass>(); + assert(ID && "Pass class not registered!"); + Required.push_back(ID); + RequiredTransitive.push_back(ID); + return *this; + } + // addPreserved - Add the specified ID to the set of analyses preserved by // this pass // @@ -82,6 +92,9 @@ public: void setPreservesCFG(); const std::vector<AnalysisID> &getRequiredSet() const { return Required; } + const std::vector<AnalysisID> &getRequiredTransitiveSet() const { + return RequiredTransitive; + } const std::vector<AnalysisID> &getPreservedSet() const { return Preserved; } }; |