diff options
Diffstat (limited to 'clang/lib/Frontend')
-rw-r--r-- | clang/lib/Frontend/CompilerInstance.cpp | 17 | ||||
-rw-r--r-- | clang/lib/Frontend/SerializedDiagnosticPrinter.cpp | 6 |
2 files changed, 14 insertions, 9 deletions
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp index 395d85f7740..9f69e9c47f0 100644 --- a/clang/lib/Frontend/CompilerInstance.cpp +++ b/clang/lib/Frontend/CompilerInstance.cpp @@ -154,11 +154,14 @@ static void SetUpDiagnosticLog(DiagnosticOptions *DiagOpts, } // Chain in the diagnostic client which will log the diagnostics. - LogDiagnosticPrinter *Logger = - new LogDiagnosticPrinter(*OS, DiagOpts, std::move(StreamOwner)); + auto Logger = llvm::make_unique<LogDiagnosticPrinter>(*OS, DiagOpts, + std::move(StreamOwner)); if (CodeGenOpts) Logger->setDwarfDebugFlags(CodeGenOpts->DwarfDebugFlags); - Diags.setClient(new ChainedDiagnosticConsumer(Diags.takeClient(), Logger)); + assert(Diags.ownsClient()); + Diags.setClient(new ChainedDiagnosticConsumer( + std::unique_ptr<DiagnosticConsumer>(Diags.takeClient()), + std::move(Logger))); } static void SetupSerializedDiagnostics(DiagnosticOptions *DiagOpts, @@ -174,11 +177,13 @@ static void SetupSerializedDiagnostics(DiagnosticOptions *DiagOpts, return; } - DiagnosticConsumer *SerializedConsumer = + auto SerializedConsumer = clang::serialized_diags::create(std::move(OS), DiagOpts); - Diags.setClient(new ChainedDiagnosticConsumer(Diags.takeClient(), - SerializedConsumer)); + assert(Diags.ownsClient()); + Diags.setClient(new ChainedDiagnosticConsumer( + std::unique_ptr<DiagnosticConsumer>(Diags.takeClient()), + std::move(SerializedConsumer))); } void CompilerInstance::createDiagnostics(DiagnosticConsumer *Client, diff --git a/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp b/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp index 66b3333524d..15f78d25259 100644 --- a/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp +++ b/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp @@ -236,9 +236,9 @@ private: namespace clang { namespace serialized_diags { -DiagnosticConsumer *create(std::unique_ptr<raw_ostream> OS, - DiagnosticOptions *diags) { - return new SDiagsWriter(std::move(OS), diags); +std::unique_ptr<DiagnosticConsumer> create(std::unique_ptr<raw_ostream> OS, + DiagnosticOptions *diags) { + return llvm::make_unique<SDiagsWriter>(std::move(OS), diags); } } // end namespace serialized_diags } // end namespace clang |