From 7301178aac1baf1cc334e7c7a66bfe50a65fbf49 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 28 Dec 2003 09:44:37 +0000 Subject: 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 --- lib/ExecutionEngine/Interpreter/Interpreter.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'lib/ExecutionEngine/Interpreter/Interpreter.cpp') diff --git a/lib/ExecutionEngine/Interpreter/Interpreter.cpp b/lib/ExecutionEngine/Interpreter/Interpreter.cpp index 77c008730f..46e5ef0b6a 100644 --- a/lib/ExecutionEngine/Interpreter/Interpreter.cpp +++ b/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 () { -- cgit v1.2.3