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 | c8c6c03dda789a6af20b23182b11bef088498735 (patch) | |
tree | 8a5d9666df719773bf0b2c4da85d44003a5954fa /llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp | |
parent | 4b75e04a6033e248f2e3b7665f6d6bac6b197c5d (diff) | |
download | bcm5719-llvm-c8c6c03dda789a6af20b23182b11bef088498735.tar.gz bcm5719-llvm-c8c6c03dda789a6af20b23182b11bef088498735.zip |
Pass around IntrinsicLowering instances as appropriate.
Reimplement the Interpreters implementation of va_* to be more direct.
llvm-svn: 10627
Diffstat (limited to 'llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp b/llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp index 77c008730ff..46e5ef0b6ac 100644 --- a/llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp +++ b/llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp @@ -14,13 +14,14 @@ //===----------------------------------------------------------------------===// #include "Interpreter.h" -#include "llvm/Module.h" +#include "llvm/IntrinsicLowering.h" #include "llvm/DerivedTypes.h" +#include "llvm/Module.h" using namespace llvm; /// create - Create a new interpreter object. This can never fail. /// -ExecutionEngine *Interpreter::create(Module *M){ +ExecutionEngine *Interpreter::create(Module *M, IntrinsicLowering *IL) { bool isLittleEndian = false; switch (M->getEndianness()) { case Module::LittleEndian: isLittleEndian = true; break; @@ -41,22 +42,29 @@ ExecutionEngine *Interpreter::create(Module *M){ break; } - return new Interpreter(M, isLittleEndian, isLongPointer); + return new Interpreter(M, isLittleEndian, isLongPointer, IL); } //===----------------------------------------------------------------------===// // Interpreter ctor - Initialize stuff // -Interpreter::Interpreter(Module *M, bool isLittleEndian, bool isLongPointer) - : ExecutionEngine(M), ExitCode(0), +Interpreter::Interpreter(Module *M, bool isLittleEndian, bool isLongPointer, + IntrinsicLowering *il) + : ExecutionEngine(M), ExitCode(0), TD("lli", isLittleEndian, isLongPointer ? 8 : 4, isLongPointer ? 8 : 4, - isLongPointer ? 8 : 4) { + isLongPointer ? 8 : 4), IL(il) { setTargetData(TD); // Initialize the "backend" initializeExecutionEngine(); initializeExternalFunctions(); emitGlobals(); + + if (IL == 0) IL = new DefaultIntrinsicLowering(); +} + +Interpreter::~Interpreter() { + delete IL; } void Interpreter::runAtExitHandlers () { |