From a8185fe50bdc2de23c00c2ada1a632e17adcf6c5 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Thu, 2 Jul 2009 20:23:41 +0000 Subject: Make the current LLVMContext available to passes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74724 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Pass.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'include/llvm/Pass.h') diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h index 923de65..eea99e0 100644 --- a/include/llvm/Pass.h +++ b/include/llvm/Pass.h @@ -29,6 +29,7 @@ #ifndef LLVM_PASS_H #define LLVM_PASS_H +#include "llvm/Module.h" #include "llvm/Support/DataTypes.h" #include "llvm/Support/Streams.h" #include @@ -47,6 +48,7 @@ class ImmutablePass; class PMStack; class AnalysisResolver; class PMDataManager; +class LLVMContext; // AnalysisID - Use the PassInfo to identify a pass... typedef const PassInfo* AnalysisID; @@ -75,6 +77,10 @@ class Pass { void operator=(const Pass&); // DO NOT IMPLEMENT Pass(const Pass &); // DO NOT IMPLEMENT + +protected: + LLVMContext* Context; + public: explicit Pass(intptr_t pid) : Resolver(0), PassID(pid) { assert(pid && "pid cannot be 0"); @@ -275,7 +281,10 @@ public: /// doInitialization - Virtual method overridden by subclasses to do /// any necessary per-module initialization. /// - virtual bool doInitialization(Module &) { return false; } + virtual bool doInitialization(Module &M) { + Context = &M.getContext(); + return false; + } /// runOnFunction - Virtual method overriden by subclasses to do the /// per-function processing of the pass. @@ -327,7 +336,10 @@ public: /// doInitialization - Virtual method overridden by subclasses to do /// any necessary per-module initialization. /// - virtual bool doInitialization(Module &) { return false; } + virtual bool doInitialization(Module &M) { + Context = &M.getContext(); + return false; + } /// doInitialization - Virtual method overridden by BasicBlockPass subclasses /// to do any necessary per-function initialization. -- cgit v1.1