unique_ptrify ChainedDiagnosticConsumer's ctor parameters

llvm-svn: 217793
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp
index 395d85f..9f69e9c 100644
--- a/clang/lib/Frontend/CompilerInstance.cpp
+++ b/clang/lib/Frontend/CompilerInstance.cpp
@@ -154,11 +154,14 @@
   }
 
   // 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 @@
     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 66b3333..15f78d2 100644
--- a/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp
+++ b/clang/lib/Frontend/SerializedDiagnosticPrinter.cpp
@@ -236,9 +236,9 @@
 
 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