From 0d30d30d58253de6b8836a11effcfc38d7566841 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Mon, 26 Nov 2012 23:54:47 +0000 Subject: Step towards implementation of pass manager with doInitialization and doFinalization per module detangled from runOn?? calls, still has temporary code not to break ASAN to be removed when that pass conforms to the proposed model Patch by Pedro Artigas, with feedback from by Chandler Carruth. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168635 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/MachineModuleInfo.h | 3 +++ include/llvm/Pass.h | 4 ++-- include/llvm/PassManager.h | 8 -------- include/llvm/PassManagers.h | 4 ++++ 4 files changed, 9 insertions(+), 10 deletions(-) (limited to 'include') diff --git a/include/llvm/CodeGen/MachineModuleInfo.h b/include/llvm/CodeGen/MachineModuleInfo.h index fc73a3d609..4660cad5d8 100644 --- a/include/llvm/CodeGen/MachineModuleInfo.h +++ b/include/llvm/CodeGen/MachineModuleInfo.h @@ -180,7 +180,10 @@ public: const MCObjectFileInfo *MOFI); ~MachineModuleInfo(); + using ModulePass::doInitialization; bool doInitialization(); + + using ModulePass::doFinalization; bool doFinalization(); /// EndFunction - Discard function meta information. diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h index 7b6f169666..acfc6a251e 100644 --- a/include/llvm/Pass.h +++ b/include/llvm/Pass.h @@ -230,7 +230,7 @@ public: /// doInitialization - Virtual method overridden by subclasses to do /// any necessary initialization. /// - virtual bool doInitialization() { return false; } + virtual bool doInitialization(Module &) { return false; } /// runOnModule - Virtual method overriden by subclasses to process the module /// being operated on. @@ -239,7 +239,7 @@ public: /// doFinalization - Virtual method overriden by subclasses to do any post /// processing needed after all passes have run. /// - virtual bool doFinalization() { return false; } + virtual bool doFinalization(Module &) { return false; } virtual void assignPassManager(PMStack &PMS, PassManagerType T); diff --git a/include/llvm/PassManager.h b/include/llvm/PassManager.h index 1d5e800b4d..ce5fda79f9 100644 --- a/include/llvm/PassManager.h +++ b/include/llvm/PassManager.h @@ -58,14 +58,6 @@ public: /// whether any of the passes modifies the module, and if so, return true. bool run(Module &M); - /// doInitialization - Run all of the initializers for the module passes. - /// - bool doInitialization(); - - /// doFinalization - Run all of the finalizers for the module passes. - /// - bool doFinalization(); - private: /// PassManagerImpl_New is the actual class. PassManager is just the /// wraper to publish simple pass manager interface diff --git a/include/llvm/PassManagers.h b/include/llvm/PassManagers.h index b0450f3e00..385d6e1b55 100644 --- a/include/llvm/PassManagers.h +++ b/include/llvm/PassManagers.h @@ -462,6 +462,10 @@ public: virtual PassManagerType getPassManagerType() const { return PMT_FunctionPassManager; } + +protected: + // FIXME: due to limitation in AddressSanitizer + bool RunFinalization; }; Timer *getPassTimer(Pass *); -- cgit v1.2.3