X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FPassAnalysisSupport.h;h=c6ed179af61f9a3516a562cede022d84d9752f42;hb=5eca075b74d62c621b160aa216b4cd50829a2cc7;hp=75434a25ef2bbae96cdaf95222e0ad119fbbffc1;hpb=6b1df0e863963929634d769f39cbce68f030f051;p=oota-llvm.git diff --git a/include/llvm/PassAnalysisSupport.h b/include/llvm/PassAnalysisSupport.h index 75434a25ef2..c6ed179af61 100644 --- a/include/llvm/PassAnalysisSupport.h +++ b/include/llvm/PassAnalysisSupport.h @@ -2,8 +2,8 @@ // // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // @@ -20,6 +20,7 @@ #define LLVM_PASS_ANALYSIS_SUPPORT_H #include +#include "llvm/ADT/SmallVector.h" namespace llvm { @@ -34,9 +35,14 @@ namespace llvm { // Pass infrastructure through the getAnalysisUsage virtual function. // class AnalysisUsage { +public: + typedef SmallVector VectorType; + +private: // Sets of analyses required and preserved by a pass - std::vector Required, RequiredTransitive, Preserved; + VectorType Required, RequiredTransitive, Preserved; bool PreservesAll; + public: AnalysisUsage() : PreservesAll(false) {} @@ -44,24 +50,26 @@ public: // for a pass. // AnalysisUsage &addRequiredID(AnalysisID ID) { + assert(ID && "Pass class not registered!"); Required.push_back(ID); return *this; } template AnalysisUsage &addRequired() { - assert(Pass::getClassPassInfo() && "Pass class not registered!"); - Required.push_back(Pass::getClassPassInfo()); - return *this; + return addRequiredID(Pass::getClassPassInfo()); } - template - AnalysisUsage &addRequiredTransitive() { - AnalysisID ID = Pass::getClassPassInfo(); + AnalysisUsage &addRequiredTransitiveID(AnalysisID ID) { assert(ID && "Pass class not registered!"); Required.push_back(ID); RequiredTransitive.push_back(ID); return *this; } + template + AnalysisUsage &addRequiredTransitive() { + AnalysisID ID = Pass::getClassPassInfo(); + return addRequiredTransitiveID(ID); + } // addPreserved - Add the specified ID to the set of analyses preserved by // this pass @@ -93,11 +101,11 @@ public: /// void setPreservesCFG(); - const std::vector &getRequiredSet() const { return Required; } - const std::vector &getRequiredTransitiveSet() const { + const VectorType &getRequiredSet() const { return Required; } + const VectorType &getRequiredTransitiveSet() const { return RequiredTransitive; } - const std::vector &getPreservedSet() const { return Preserved; } + const VectorType &getPreservedSet() const { return Preserved; } }; //===----------------------------------------------------------------------===//