From c008c64326dfae519b5cd0c0a3bdeb85527b2151 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 27 Oct 2014 23:02:34 +0000 Subject: [PATCH] Use the newer/simple API for passing a diagnostic handler to the IR linker. llvm-svn: 220733 --- clang/lib/CodeGen/CodeGenAction.cpp | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/clang/lib/CodeGen/CodeGenAction.cpp b/clang/lib/CodeGen/CodeGenAction.cpp index 044eec6..0bd53b8 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; -- 2.7.4