|
@@ -29,6 +29,7 @@
|
|
#include "llvm/Bitcode/BitcodeWriter.h"
|
|
#include "llvm/Bitcode/BitcodeWriter.h"
|
|
#include "llvm/ExecutionEngine/ExecutionEngine.h"
|
|
#include "llvm/ExecutionEngine/ExecutionEngine.h"
|
|
#include "llvm/ExecutionEngine/GenericValue.h"
|
|
#include "llvm/ExecutionEngine/GenericValue.h"
|
|
|
|
+#include "llvm/ExecutionEngine/MCJIT.h"
|
|
#include "llvm/IR/BasicBlock.h"
|
|
#include "llvm/IR/BasicBlock.h"
|
|
#include "llvm/IR/Constants.h"
|
|
#include "llvm/IR/Constants.h"
|
|
#include "llvm/IR/DerivedTypes.h"
|
|
#include "llvm/IR/DerivedTypes.h"
|
|
@@ -153,10 +154,15 @@ int main(int argc, char **argv) {
|
|
//Write it out
|
|
//Write it out
|
|
if (JIT) {
|
|
if (JIT) {
|
|
InitializeNativeTarget();
|
|
InitializeNativeTarget();
|
|
|
|
+ InitializeNativeTargetAsmPrinter();
|
|
|
|
|
|
outs() << "------- Running JIT -------\n";
|
|
outs() << "------- Running JIT -------\n";
|
|
Module &M = *Mod;
|
|
Module &M = *Mod;
|
|
ExecutionEngine *ee = EngineBuilder(std::move(Mod)).create();
|
|
ExecutionEngine *ee = EngineBuilder(std::move(Mod)).create();
|
|
|
|
+ if (!ee) {
|
|
|
|
+ errs() << "Error: execution engine creation failed.\n";
|
|
|
|
+ abort();
|
|
|
|
+ }
|
|
std::vector<GenericValue> args;
|
|
std::vector<GenericValue> args;
|
|
Function *brainf_func = M.getFunction("brainf");
|
|
Function *brainf_func = M.getFunction("brainf");
|
|
GenericValue gv = ee->runFunction(brainf_func, args);
|
|
GenericValue gv = ee->runFunction(brainf_func, args);
|