Changes in directory llvm/include/llvm:
PassManager.h updated: 1.20 -> 1.21 --- Log message: Introduce PassManagerAnalysisHelper. --- Diffs of the changes: (+30 -0) PassManager.h | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+) Index: llvm/include/llvm/PassManager.h diff -u llvm/include/llvm/PassManager.h:1.20 llvm/include/llvm/PassManager.h:1.21 --- llvm/include/llvm/PassManager.h:1.20 Tue Nov 7 16:23:34 2006 +++ llvm/include/llvm/PassManager.h Tue Nov 7 16:35:17 2006 @@ -88,6 +88,36 @@ bool doFinalization(); }; +/// PassManagerAnalysisHelper helpes pass manager analysis required by +/// the managed passes. +class PassManagerAnalysisHelper { + +public: + + /// Return TRUE IFF pass P's required analysis set does not required new + /// manager. + bool manageablePass(Pass *P); + + /// Return TRUE iff AnalysisID AID is currently available. + bool analysisCurrentlyAvailable(AnalysisID AID); + + /// Augment RequiredSet by adding analysis required by pass P. + void noteDownRequiredAnalysis(Pass *P); + + /// Remove AnalysisID from the RequiredSet + void removeAnalysis(AnalysisID AID); + + /// Remove Analysis that is not preserved by the pass + void removeNotPreservedAnalysis(Pass *P); + + /// Remove dead passes + void removeDeadPasses() { /* TODO : Implement */ } + +private: + // Required set of analysis for the passes managed by this manager + std::vector<AnalysisID> RequiredSet; +}; + /// BasicBlockpassManager_New manages BasicBlockPass. It batches all the /// pass together and sequence them to process one basic block before /// processing next basic block. _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits