#include "clang/Frontend/TextDiagnosticPrinter.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
-#include "llvm/ExecutionEngine/JIT.h"
+#include "llvm/ExecutionEngine/MCJIT.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Host.h"
static llvm::ExecutionEngine *createExecutionEngine(llvm::Module *M,
std::string *ErrorStr) {
llvm::EngineBuilder EB = llvm::EngineBuilder(M)
+ .setUseMCJIT(true)
.setEngineKind(llvm::EngineKind::Either)
.setErrorStr(ErrorStr);
return EB.create();
static int Execute(llvm::Module *Mod, char * const *envp) {
llvm::InitializeNativeTarget();
+ llvm::InitializeNativeTargetAsmPrinter();
std::string Error;
std::unique_ptr<llvm::ExecutionEngine> EE(createExecutionEngine(Mod, &Error));
std::vector<std::string> Args;
Args.push_back(Mod->getModuleIdentifier());
+ EE->finalizeObject();
return EE->runFunctionAsMain(EntryFn, Args, envp);
}