mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-14 14:24:05 +00:00
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
This commit is contained in:
@ -30,7 +30,6 @@ protected:
|
|||||||
|
|
||||||
void setTargetData(const TargetData &td) {
|
void setTargetData(const TargetData &td) {
|
||||||
TD = &td;
|
TD = &td;
|
||||||
emitGlobals();
|
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
ExecutionEngine(Module *M) : CurMod(*M) {
|
ExecutionEngine(Module *M) : CurMod(*M) {
|
||||||
@ -81,7 +80,7 @@ public:
|
|||||||
//
|
//
|
||||||
virtual void *getPointerToFunction(const Function *F) = 0;
|
virtual void *getPointerToFunction(const Function *F) = 0;
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
void emitGlobals();
|
void emitGlobals();
|
||||||
|
|
||||||
public: // FIXME: protected: // API shared among subclasses
|
public: // FIXME: protected: // API shared among subclasses
|
||||||
|
@ -34,6 +34,7 @@ Interpreter::Interpreter(Module *M, unsigned Config,
|
|||||||
initializeExecutionEngine();
|
initializeExecutionEngine();
|
||||||
initializeExternalFunctions();
|
initializeExternalFunctions();
|
||||||
CW.setModule(M); // Update Writer
|
CW.setModule(M); // Update Writer
|
||||||
|
emitGlobals();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// run - Start execution with the specified function and arguments.
|
/// run - Start execution with the specified function and arguments.
|
||||||
|
@ -33,6 +33,7 @@ VM::VM(Module *M, TargetMachine *tm) : ExecutionEngine(M), TM(*tm) {
|
|||||||
MCE = createEmitter(*this); // Initialize MCE
|
MCE = createEmitter(*this); // Initialize MCE
|
||||||
setupPassManager();
|
setupPassManager();
|
||||||
registerCallback();
|
registerCallback();
|
||||||
|
emitGlobals();
|
||||||
}
|
}
|
||||||
|
|
||||||
int VM::run(const std::string &FnName, const std::vector<std::string> &Args) {
|
int VM::run(const std::string &FnName, const std::vector<std::string> &Args) {
|
||||||
|
Reference in New Issue
Block a user