diff options
author | Chris Lattner <sabre@nondot.org> | 2003-12-28 09:44:37 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-12-28 09:44:37 +0000 |
commit | 7301178aac1baf1cc334e7c7a66bfe50a65fbf49 (patch) | |
tree | a336d1188122315a48ebcca0a11f2eeb207b9289 /lib/ExecutionEngine/ExecutionEngine.cpp | |
parent | f8742b3e033ff69649a3a76c12e28a1428858880 (diff) |
Pass around IntrinsicLowering instances as appropriate.
Reimplement the Interpreters implementation of va_* to be more direct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10627 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/ExecutionEngine.cpp')
-rw-r--r-- | lib/ExecutionEngine/ExecutionEngine.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/ExecutionEngine/ExecutionEngine.cpp b/lib/ExecutionEngine/ExecutionEngine.cpp index bb52c94311..45643abca9 100644 --- a/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/lib/ExecutionEngine/ExecutionEngine.cpp @@ -17,6 +17,7 @@ #include "JIT/JIT.h" #include "llvm/Constants.h" #include "llvm/DerivedTypes.h" +#include "llvm/IntrinsicLowering.h" #include "llvm/Module.h" #include "llvm/ModuleProvider.h" #include "llvm/ExecutionEngine/ExecutionEngine.h" @@ -105,20 +106,23 @@ int ExecutionEngine::runFunctionAsMain(Function *Fn, /// NULL is returned. /// ExecutionEngine *ExecutionEngine::create(ModuleProvider *MP, - bool ForceInterpreter) { + bool ForceInterpreter, + IntrinsicLowering *IL) { ExecutionEngine *EE = 0; - // Unless the interpreter was explicitly selected, make a JIT. + // Unless the interpreter was explicitly selected, try making a JIT. if (!ForceInterpreter) - EE = JIT::create(MP); + EE = JIT::create(MP, IL); // If we can't make a JIT, make an interpreter instead. try { if (EE == 0) - EE = Interpreter::create(MP->materializeModule()); + EE = Interpreter::create(MP->materializeModule(), IL); } catch (...) { EE = 0; } + + if (EE == 0) delete IL; return EE; } |