summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-08-19 04:04:30 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-08-19 04:04:30 +0000
commit82abc1025dcb09a46098da3eb8385b95006f73ea (patch)
tree2e51bbf2ecbd0b77bb38147aeb16134420076310 /examples
parent9adb1ed30e936006eb8766a2d0fe799ea1a3303b (diff)
Update for llvm api change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215968 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'examples')
-rw-r--r--examples/clang-interpreter/main.cpp28
1 files changed, 15 insertions, 13 deletions
diff --git a/examples/clang-interpreter/main.cpp b/examples/clang-interpreter/main.cpp
index 25b9825a26..5cc5d524f1 100644
--- a/examples/clang-interpreter/main.cpp
+++ b/examples/clang-interpreter/main.cpp
@@ -42,27 +42,29 @@ std::string GetExecutablePath(const char *Argv0) {
return llvm::sys::fs::getMainExecutable(Argv0, MainAddr);
}
-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 llvm::ExecutionEngine *
+createExecutionEngine(std::unique_ptr<llvm::Module> M, std::string *ErrorStr) {
+ return llvm::EngineBuilder(std::move(M))
+ .setUseMCJIT(true)
+ .setEngineKind(llvm::EngineKind::Either)
+ .setErrorStr(ErrorStr)
+ .create();
}
-static int Execute(llvm::Module *Mod, char * const *envp) {
+static int Execute(std::unique_ptr<llvm::Module> Mod, char *const *envp) {
llvm::InitializeNativeTarget();
llvm::InitializeNativeTargetAsmPrinter();
+ llvm::Module &M = *Mod;
std::string Error;
- std::unique_ptr<llvm::ExecutionEngine> EE(createExecutionEngine(Mod, &Error));
+ std::unique_ptr<llvm::ExecutionEngine> EE(
+ createExecutionEngine(std::move(Mod), &Error));
if (!EE) {
llvm::errs() << "unable to make execution engine: " << Error << "\n";
return 255;
}
- llvm::Function *EntryFn = Mod->getFunction("main");
+ llvm::Function *EntryFn = M.getFunction("main");
if (!EntryFn) {
llvm::errs() << "'main' function not found in module.\n";
return 255;
@@ -70,7 +72,7 @@ static int Execute(llvm::Module *Mod, char * const *envp) {
// FIXME: Support passing arguments.
std::vector<std::string> Args;
- Args.push_back(Mod->getModuleIdentifier());
+ Args.push_back(M.getModuleIdentifier());
EE->finalizeObject();
return EE->runFunctionAsMain(EntryFn, Args, envp);
@@ -163,8 +165,8 @@ int main(int argc, const char **argv, char * const *envp) {
return 1;
int Res = 255;
- if (llvm::Module *Module = Act->takeModule())
- Res = Execute(Module, envp);
+ if (std::unique_ptr<llvm::Module> &Module = Act->getModule())
+ Res = Execute(std::move(Module), envp);
// Shutdown.