]> granicus.if.org Git - llvm/commitdiff
Make sure that globals are emitted AFTER the passmanager is set up for the JIT,
authorChris Lattner <sabre@nondot.org>
Mon, 12 May 2003 02:14:34 +0000 (02:14 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 12 May 2003 02:14:34 +0000 (02:14 +0000)
because the globals may refer to functions that need to be compiled!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6105 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ExecutionEngine/ExecutionEngine.h
lib/ExecutionEngine/Interpreter/Interpreter.cpp
lib/ExecutionEngine/JIT/JIT.cpp

index 032d9fe309ee857af27255224a9fbbe9baaee927..0435df9e44e791fdaecfa208a0172f7ebc620fcd 100644 (file)
@@ -30,7 +30,6 @@ protected:
 
   void setTargetData(const TargetData &td) {
     TD = &td;
-    emitGlobals();
   }
 public:
   ExecutionEngine(Module *M) : CurMod(*M) {
@@ -81,7 +80,7 @@ public:
   //
   virtual void *getPointerToFunction(const Function *F) = 0;
 
-private:
+protected:
   void emitGlobals();
 
 public:   // FIXME: protected:   // API shared among subclasses
index 1c41841b81276654384bd4c58441e4b8b4b2e0d4..4582a6f26d4eef08bf02e6fca53c7f3106bd7354 100644 (file)
@@ -34,6 +34,7 @@ Interpreter::Interpreter(Module *M, unsigned Config,
   initializeExecutionEngine();
   initializeExternalFunctions();
   CW.setModule(M);  // Update Writer
+  emitGlobals();
 }
 
 /// run - Start execution with the specified function and arguments.
index b2b56a63e50e92e0165495054d5ae0f0b38d1e03..39f305e127007d92114e6845a20da7f817e1b42f 100644 (file)
@@ -33,6 +33,7 @@ VM::VM(Module *M, TargetMachine *tm) : ExecutionEngine(M), TM(*tm) {
   MCE = createEmitter(*this);  // Initialize MCE
   setupPassManager();
   registerCallback();
+  emitGlobals();
 }
 
 int VM::run(const std::string &FnName, const std::vector<std::string> &Args) {