Skip to content

Commit a296664

Browse files
committed
Update for llvm api change.
llvm-svn: 215968
1 parent 2a8a279 commit a296664

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

clang/examples/clang-interpreter/main.cpp

+15-13
Original file line numberDiff line numberDiff line change
@@ -42,35 +42,37 @@ std::string GetExecutablePath(const char *Argv0) {
4242
return llvm::sys::fs::getMainExecutable(Argv0, MainAddr);
4343
}
4444

45-
static llvm::ExecutionEngine *createExecutionEngine(llvm::Module *M,
46-
std::string *ErrorStr) {
47-
llvm::EngineBuilder EB = llvm::EngineBuilder(M)
48-
.setUseMCJIT(true)
49-
.setEngineKind(llvm::EngineKind::Either)
50-
.setErrorStr(ErrorStr);
51-
return EB.create();
45+
static llvm::ExecutionEngine *
46+
createExecutionEngine(std::unique_ptr<llvm::Module> M, std::string *ErrorStr) {
47+
return llvm::EngineBuilder(std::move(M))
48+
.setUseMCJIT(true)
49+
.setEngineKind(llvm::EngineKind::Either)
50+
.setErrorStr(ErrorStr)
51+
.create();
5252
}
5353

54-
static int Execute(llvm::Module *Mod, char * const *envp) {
54+
static int Execute(std::unique_ptr<llvm::Module> Mod, char *const *envp) {
5555
llvm::InitializeNativeTarget();
5656
llvm::InitializeNativeTargetAsmPrinter();
5757

58+
llvm::Module &M = *Mod;
5859
std::string Error;
59-
std::unique_ptr<llvm::ExecutionEngine> EE(createExecutionEngine(Mod, &Error));
60+
std::unique_ptr<llvm::ExecutionEngine> EE(
61+
createExecutionEngine(std::move(Mod), &Error));
6062
if (!EE) {
6163
llvm::errs() << "unable to make execution engine: " << Error << "\n";
6264
return 255;
6365
}
6466

65-
llvm::Function *EntryFn = Mod->getFunction("main");
67+
llvm::Function *EntryFn = M.getFunction("main");
6668
if (!EntryFn) {
6769
llvm::errs() << "'main' function not found in module.\n";
6870
return 255;
6971
}
7072

7173
// FIXME: Support passing arguments.
7274
std::vector<std::string> Args;
73-
Args.push_back(Mod->getModuleIdentifier());
75+
Args.push_back(M.getModuleIdentifier());
7476

7577
EE->finalizeObject();
7678
return EE->runFunctionAsMain(EntryFn, Args, envp);
@@ -163,8 +165,8 @@ int main(int argc, const char **argv, char * const *envp) {
163165
return 1;
164166

165167
int Res = 255;
166-
if (llvm::Module *Module = Act->takeModule())
167-
Res = Execute(Module, envp);
168+
if (std::unique_ptr<llvm::Module> &Module = Act->getModule())
169+
Res = Execute(std::move(Module), envp);
168170

169171
// Shutdown.
170172

clang/include/clang/CodeGen/CodeGenAction.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ class CodeGenAction : public ASTFrontendAction {
5252
/// the action will load it from the specified file.
5353
void setLinkModule(llvm::Module *Mod) { LinkModule = Mod; }
5454

55-
/// takeModule - Take the generated LLVM module, for use after the action has
56-
/// been run. The result may be null on failure.
57-
llvm::Module *takeModule();
55+
/// Take the generated LLVM module, for use after the action has been run.
56+
/// The result may be null on failure.
57+
std::unique_ptr<llvm::Module> &getModule() { return TheModule; }
5858

5959
/// Take the LLVM context used by this action.
6060
llvm::LLVMContext *takeLLVMContext();

clang/lib/CodeGen/CodeGenAction.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -579,8 +579,6 @@ void CodeGenAction::EndSourceFileAction() {
579579
TheModule.reset(BEConsumer->takeModule());
580580
}
581581

582-
llvm::Module *CodeGenAction::takeModule() { return TheModule.release(); }
583-
584582
llvm::LLVMContext *CodeGenAction::takeLLVMContext() {
585583
OwnsVMContext = false;
586584
return VMContext;

0 commit comments

Comments
 (0)