[llvm-commits] CVS: llvm/include/llvm/Pass.h PassAnalysisSupport.h

Chris Lattner lattner at cs.uiuc.edu
Wed Sep 25 16:59:01 PDT 2002


Changes in directory llvm/include/llvm:

Pass.h updated: 1.28 -> 1.29
PassAnalysisSupport.h updated: 1.9 -> 1.10

---
Log message:

Add support for ImmutablePasses, which are not run, and cannot be
invalidated.



---
Diffs of the changes:

Index: llvm/include/llvm/Pass.h
diff -u llvm/include/llvm/Pass.h:1.28 llvm/include/llvm/Pass.h:1.29
--- llvm/include/llvm/Pass.h:1.28	Tue Sep 17 06:09:59 2002
+++ llvm/include/llvm/Pass.h	Wed Sep 25 16:59:09 2002
@@ -32,6 +32,7 @@
 class Module;
 class AnalysisUsage;
 class PassInfo;
+class ImmutablePass;
 template<class UnitType> class PassManagerT;
 struct AnalysisResolver;
 
@@ -193,6 +194,24 @@
 inline std::ostream &operator<<(std::ostream &OS, const Pass &P) {
   P.print(OS, 0); return OS;
 }
+
+
+
+//===----------------------------------------------------------------------===//
+/// ImmutablePass class - This class is used to provide information that does
+/// not need to be run.  This is useful for things like target information and
+/// "basic" versions of AnalysisGroups.
+///
+struct ImmutablePass : public Pass {
+
+  // ImmutablePasses are never run.
+  virtual bool run(Module &M) { return false; }
+
+private:
+  friend class PassManagerT<Module>;
+  virtual void addToPassManager(PassManagerT<Module> *PM, AnalysisUsage &AU);
+};
+
 
 //===----------------------------------------------------------------------===//
 /// FunctionPass class - This class is used to implement most global


Index: llvm/include/llvm/PassAnalysisSupport.h
diff -u llvm/include/llvm/PassAnalysisSupport.h:1.9 llvm/include/llvm/PassAnalysisSupport.h:1.10
--- llvm/include/llvm/PassAnalysisSupport.h:1.9	Thu Aug 29 15:07:59 2002
+++ llvm/include/llvm/PassAnalysisSupport.h	Wed Sep 25 16:59:09 2002
@@ -86,6 +86,7 @@
 struct AnalysisResolver {
   virtual Pass *getAnalysisOrNullUp(AnalysisID ID) const = 0;
   virtual Pass *getAnalysisOrNullDown(AnalysisID ID) const = 0;
+  virtual void addPass(ImmutablePass *IP, AnalysisUsage &AU) = 0;
   Pass *getAnalysis(AnalysisID ID) const {
     Pass *Result = getAnalysisOrNullUp(ID);
     assert(Result && "Pass has an incorrect analysis uses set!");





More information about the llvm-commits mailing list