aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-05-12 02:14:34 +0000
committerChris Lattner <sabre@nondot.org>2003-05-12 02:14:34 +0000
commit56adf152f6354a9b5609e059050fd2315ad5960c (patch)
tree924ca9a6968828105a98796b49f55589ac5bcade
parent82df8dfe877ba02f73e03e0d1e9e93b40e771a21 (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.h3
-rw-r--r--lib/ExecutionEngine/Interpreter/Interpreter.cpp1
-rw-r--r--lib/ExecutionEngine/JIT/JIT.cpp1
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) {