From 8e18789ede4f1d1684e949af9dac0e033971ee27 Mon Sep 17 00:00:00 2001 From: Misha Brukman Date: Fri, 12 Mar 2004 06:13:15 +0000 Subject: [PATCH] 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 --- include/llvm/PassAnalysisSupport.h | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/include/llvm/PassAnalysisSupport.h b/include/llvm/PassAnalysisSupport.h index f62465a8b8b..5a716411d35 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 Required, Preserved; + std::vector Required, RequiredTransitive, Preserved; bool PreservesAll; public: AnalysisUsage() : PreservesAll(false) {} @@ -51,6 +52,15 @@ public: return *this; } + template + AnalysisUsage &addRequiredTransitive() { + AnalysisID ID = Pass::getClassPassInfo(); + 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 &getRequiredSet() const { return Required; } + const std::vector &getRequiredTransitiveSet() const { + return RequiredTransitive; + } const std::vector &getPreservedSet() const { return Preserved; } }; -- 2.34.1