diff options
author | Chris Lattner <sabre@nondot.org> | 2003-05-12 02:14:34 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-05-12 02:14:34 +0000 |
commit | 56adf152f6354a9b5609e059050fd2315ad5960c (patch) | |
tree | 924ca9a6968828105a98796b49f55589ac5bcade | |
parent | 82df8dfe877ba02f73e03e0d1e9e93b40e771a21 (diff) |
Make sure that globals are emitted AFTER the passmanager is set up for the JIT,
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
-rw-r--r-- | include/llvm/ExecutionEngine/ExecutionEngine.h | 3 | ||||
-rw-r--r-- | lib/ExecutionEngine/Interpreter/Interpreter.cpp | 1 | ||||
-rw-r--r-- | lib/ExecutionEngine/JIT/JIT.cpp | 1 |
3 files changed, 3 insertions, 2 deletions
diff --git a/include/llvm/ExecutionEngine/ExecutionEngine.h b/include/llvm/ExecutionEngine/ExecutionEngine.h index 032d9fe309..0435df9e44 100644 --- a/include/llvm/ExecutionEngine/ExecutionEngine.h +++ b/include/llvm/ExecutionEngine/ExecutionEngine.h @@ -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 diff --git a/lib/ExecutionEngine/Interpreter/Interpreter.cpp b/lib/ExecutionEngine/Interpreter/Interpreter.cpp index 1c41841b81..4582a6f26d 100644 --- a/lib/ExecutionEngine/Interpreter/Interpreter.cpp +++ b/lib/ExecutionEngine/Interpreter/Interpreter.cpp @@ -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. diff --git a/lib/ExecutionEngine/JIT/JIT.cpp b/lib/ExecutionEngine/JIT/JIT.cpp index b2b56a63e5..39f305e127 100644 --- a/lib/ExecutionEngine/JIT/JIT.cpp +++ b/lib/ExecutionEngine/JIT/JIT.cpp @@ -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) { |