Make the current LLVMContext available to passes.
authorOwen Anderson <resistor@mac.com>
Thu, 2 Jul 2009 20:23:41 +0000 (20:23 +0000)
committerOwen Anderson <resistor@mac.com>
Thu, 2 Jul 2009 20:23:41 +0000 (20:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74724 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Pass.h

index 923de658c3b95e33006fcb33dbf187322d9cbef6..eea99e028dd8db0cf619c3e7f1f624f29c275003 100644 (file)
@@ -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 <cassert>
@@ -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.