forked from OSchip/llvm-project
Restore diagnostic handler after CodeGenAction::ExecuteAction
Fix dangling pointer to local variable and address some typos. Reviewed By: xur Differential Revision: https://reviews.llvm.org/D96487
This commit is contained in:
parent
c70737ba1d
commit
e54811ff7e
|
@ -1115,6 +1115,14 @@ void CodeGenAction::ExecuteAction() {
|
|||
LLVMContext &Ctx = TheModule->getContext();
|
||||
Ctx.setInlineAsmDiagnosticHandler(BitcodeInlineAsmDiagHandler, &Diagnostics);
|
||||
|
||||
// Restore any diagnostic handler previously set before returning from this
|
||||
// function.
|
||||
struct RAII {
|
||||
LLVMContext &Ctx;
|
||||
std::unique_ptr<DiagnosticHandler> PrevHandler = Ctx.getDiagnosticHandler();
|
||||
~RAII() { Ctx.setDiagnosticHandler(std::move(PrevHandler)); }
|
||||
} _{Ctx};
|
||||
|
||||
// Set clang diagnostic handler. To do this we need to create a fake
|
||||
// BackendConsumer.
|
||||
BackendConsumer Result(BA, CI.getDiagnostics(), CI.getHeaderSearchOpts(),
|
||||
|
|
|
@ -190,10 +190,11 @@ public:
|
|||
DiagnosticHandler::DiagnosticHandlerTy DiagHandler,
|
||||
void *DiagContext = nullptr, bool RespectFilters = false);
|
||||
|
||||
/// setDiagnosticHandler - This method sets unique_ptr to object of DiagnosticHandler
|
||||
/// to provide custom diagnostic handling. The first argument is unique_ptr of object
|
||||
/// of type DiagnosticHandler or a derived of that. The third argument should be
|
||||
/// set to true if the handler only expects enabled diagnostics.
|
||||
/// setDiagnosticHandler - This method sets unique_ptr to object of
|
||||
/// DiagnosticHandler to provide custom diagnostic handling. The first
|
||||
/// argument is unique_ptr of object of type DiagnosticHandler or a derived
|
||||
/// of that. The second argument should be set to true if the handler only
|
||||
/// expects enabled diagnostics.
|
||||
///
|
||||
/// Ownership of this pointer is moved to LLVMContextImpl.
|
||||
void setDiagnosticHandler(std::unique_ptr<DiagnosticHandler> &&DH,
|
||||
|
@ -211,7 +212,7 @@ public:
|
|||
/// setDiagnosticHandler.
|
||||
const DiagnosticHandler *getDiagHandlerPtr() const;
|
||||
|
||||
/// getDiagnosticHandler - transfers owenership of DiagnosticHandler unique_ptr
|
||||
/// getDiagnosticHandler - transfers ownership of DiagnosticHandler unique_ptr
|
||||
/// to caller.
|
||||
std::unique_ptr<DiagnosticHandler> getDiagnosticHandler();
|
||||
|
||||
|
|
Loading…
Reference in New Issue