[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