From: Rafael Espindola Date: Mon, 27 Oct 2014 23:02:34 +0000 (+0000) Subject: Use the newer/simple API for passing a diagnostic handler to the IR linker. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e58d9a54e45ba269aa406fd58795b027dcade664;p=clang Use the newer/simple API for passing a diagnostic handler to the IR linker. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220733 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CodeGenAction.cpp b/lib/CodeGen/CodeGenAction.cpp index 044eec643b..0bd53b8da5 100644 --- a/lib/CodeGen/CodeGenAction.cpp +++ b/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;