From 82abc1025dcb09a46098da3eb8385b95006f73ea Mon Sep 17 00:00:00 2001 From: Rafael Espindola <rafael.espindola@gmail.com> Date: Tue, 19 Aug 2014 04:04:30 +0000 Subject: [PATCH] Update for llvm api change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215968 91177308-0d34-0410-b5e6-96231b3b80d8 --- examples/clang-interpreter/main.cpp | 28 ++++++++++++++------------- include/clang/CodeGen/CodeGenAction.h | 6 +++--- lib/CodeGen/CodeGenAction.cpp | 2 -- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/examples/clang-interpreter/main.cpp b/examples/clang-interpreter/main.cpp index 25b9825a266..5cc5d524f19 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. diff --git a/include/clang/CodeGen/CodeGenAction.h b/include/clang/CodeGen/CodeGenAction.h index ba9b92da02c..282202184b6 100644 --- a/include/clang/CodeGen/CodeGenAction.h +++ b/include/clang/CodeGen/CodeGenAction.h @@ -52,9 +52,9 @@ public: /// the action will load it from the specified file. void setLinkModule(llvm::Module *Mod) { LinkModule = Mod; } - /// takeModule - Take the generated LLVM module, for use after the action has - /// been run. The result may be null on failure. - llvm::Module *takeModule(); + /// Take the generated LLVM module, for use after the action has been run. + /// The result may be null on failure. + std::unique_ptr<llvm::Module> &getModule() { return TheModule; } /// Take the LLVM context used by this action. llvm::LLVMContext *takeLLVMContext(); diff --git a/lib/CodeGen/CodeGenAction.cpp b/lib/CodeGen/CodeGenAction.cpp index 407b92b27c0..ab0ca18a3de 100644 --- a/lib/CodeGen/CodeGenAction.cpp +++ b/lib/CodeGen/CodeGenAction.cpp @@ -579,8 +579,6 @@ void CodeGenAction::EndSourceFileAction() { TheModule.reset(BEConsumer->takeModule()); } -llvm::Module *CodeGenAction::takeModule() { return TheModule.release(); } - llvm::LLVMContext *CodeGenAction::takeLLVMContext() { OwnsVMContext = false; return VMContext; -- GitLab