summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/CompilerInstance.cpp
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2014-11-13 13:08:27 +0000
committerAlexander Kornienko <alexfh@google.com>2014-11-13 13:08:27 +0000
commit254b7dba27abf991a99df4c4cc12fa88d9b3905f (patch)
tree7b6a54d42764e1ce18aeb53a20ce759ab0bef74f /clang/lib/Frontend/CompilerInstance.cpp
parentd5e95b57e033ee5bc91e2da3116879ef3a1a0581 (diff)
downloadbcm5719-llvm-254b7dba27abf991a99df4c4cc12fa88d9b3905f.tar.gz
bcm5719-llvm-254b7dba27abf991a99df4c4cc12fa88d9b3905f.zip
Support non-owned DiagnosticConsumer in SetupSerializedDiagnostics
This fixes an assertion when running clang-tidy on a file having --serialize-diagnostics in compiler options. Committing a regression test for clang-tidy separately. Patch by Aaron Wishnick! llvm-svn: 221884
Diffstat (limited to 'clang/lib/Frontend/CompilerInstance.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInstance.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/clang/lib/Frontend/CompilerInstance.cpp b/clang/lib/Frontend/CompilerInstance.cpp
index 366884ec775..2b7f1832aa4 100644
--- a/clang/lib/Frontend/CompilerInstance.cpp
+++ b/clang/lib/Frontend/CompilerInstance.cpp
@@ -170,10 +170,14 @@ static void SetupSerializedDiagnostics(DiagnosticOptions *DiagOpts,
auto SerializedConsumer =
clang::serialized_diags::create(OutputFile, DiagOpts);
- assert(Diags.ownsClient());
- Diags.setClient(new ChainedDiagnosticConsumer(
- std::unique_ptr<DiagnosticConsumer>(Diags.takeClient()),
- std::move(SerializedConsumer)));
+ if (Diags.ownsClient()) {
+ Diags.setClient(new ChainedDiagnosticConsumer(
+ std::unique_ptr<DiagnosticConsumer>(Diags.takeClient()),
+ std::move(SerializedConsumer)));
+ } else {
+ Diags.setClient(new ChainedDiagnosticConsumer(
+ Diags.takeClient(), std::move(SerializedConsumer)));
+ }
}
void CompilerInstance::createDiagnostics(DiagnosticConsumer *Client,
OpenPOWER on IntegriCloud