diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-10-27 23:02:34 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-10-27 23:02:34 +0000 |
commit | c008c64326dfae519b5cd0c0a3bdeb85527b2151 (patch) | |
tree | b77f3202217eed88f5e2199b7888a602ece89a64 /clang/lib/CodeGen/CodeGenAction.cpp | |
parent | 4160f5d3ac9b5fe27726065baa8b2af730f357a7 (diff) | |
download | bcm5719-llvm-c008c64326dfae519b5cd0c0a3bdeb85527b2151.tar.gz bcm5719-llvm-c008c64326dfae519b5cd0c0a3bdeb85527b2151.zip |
Use the newer/simple API for passing a diagnostic handler to the IR linker.
llvm-svn: 220733
Diffstat (limited to 'clang/lib/CodeGen/CodeGenAction.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenAction.cpp | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index 044eec643bb..0bd53b8da51 100644 --- a/clang/lib/CodeGen/CodeGenAction.cpp +++ b/clang/lib/CodeGen/CodeGenAction.cpp @@ -153,15 +153,9 @@ namespace clang { // Link LinkModule into this module if present, preserving its validity. if (LinkModule) { - LLVMContext &Ctx = LinkModule->getContext(); - LLVMContext::DiagnosticHandlerTy OldHandler = - Ctx.getDiagnosticHandler(); - void *OldDiagnosticContext = Ctx.getDiagnosticContext(); - Ctx.setDiagnosticHandler(linkerDiagnosticHandler, this); - bool Failed = - Linker::LinkModules(M, LinkModule.get(), Linker::PreserveSource); - Ctx.setDiagnosticHandler(OldHandler, OldDiagnosticContext); - if (Failed) + if (Linker::LinkModules( + M, LinkModule.get(), Linker::PreserveSource, + [=](const DiagnosticInfo &DI) { linkerDiagnosticHandler(DI); })) return; } @@ -225,12 +219,7 @@ namespace clang { ((BackendConsumer*)Context)->InlineAsmDiagHandler2(SM, Loc); } - static void linkerDiagnosticHandler(const llvm::DiagnosticInfo &DI, - void *Context) { - ((BackendConsumer *)Context)->linkerDiagnosticHandlerImpl(DI); - } - - void linkerDiagnosticHandlerImpl(const llvm::DiagnosticInfo &DI); + void linkerDiagnosticHandler(const llvm::DiagnosticInfo &DI); static void DiagnosticHandler(const llvm::DiagnosticInfo &DI, void *Context) { @@ -507,7 +496,7 @@ void BackendConsumer::OptimizationFailureHandler( EmitOptimizationMessage(D, diag::warn_fe_backend_optimization_failure); } -void BackendConsumer::linkerDiagnosticHandlerImpl(const DiagnosticInfo &DI) { +void BackendConsumer::linkerDiagnosticHandler(const DiagnosticInfo &DI) { if (DI.getSeverity() != DS_Error) return; |