diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-07-06 17:40:26 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-07-06 17:40:26 +0000 |
commit | 8a60bbe13f1d75daf0fc1812e17252a0a6003352 (patch) | |
tree | ec98716dff236141f582661abff8252f0ceb6d84 /clang/lib/Basic/DiagnosticIDs.cpp | |
parent | 6ee1d2bd78ea24b2dc26656b97a9701ad7913883 (diff) | |
download | bcm5719-llvm-8a60bbe13f1d75daf0fc1812e17252a0a6003352.tar.gz bcm5719-llvm-8a60bbe13f1d75daf0fc1812e17252a0a6003352.zip |
Keep track of when "unrecoverable" errors occur, then allow
clang_saveTranslationUnit() to save a PCH file if the only errors it
contains are recoverable errors. Fixes <rdar://problem/9727804>.
llvm-svn: 134503
Diffstat (limited to 'clang/lib/Basic/DiagnosticIDs.cpp')
-rw-r--r-- | clang/lib/Basic/DiagnosticIDs.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/clang/lib/Basic/DiagnosticIDs.cpp b/clang/lib/Basic/DiagnosticIDs.cpp index b5b48cb2131..147ba7e99e7 100644 --- a/clang/lib/Basic/DiagnosticIDs.cpp +++ b/clang/lib/Basic/DiagnosticIDs.cpp @@ -686,9 +686,11 @@ bool DiagnosticIDs::ProcessDiag(Diagnostic &Diag) const { if (DiagLevel >= DiagnosticIDs::Error) { Diag.TrapErrorOccurred = true; - if (isUnrecoverable(DiagID)) + if (isUnrecoverable(DiagID)) { Diag.TrapUnrecoverableErrorOccurred = true; - + Diag.UnrecoverableErrorOccurred = true; + } + if (Diag.Client->IncludeInDiagnosticCounts()) { Diag.ErrorOccurred = true; ++Diag.NumErrors; @@ -733,7 +735,7 @@ bool DiagnosticIDs::isUnrecoverable(unsigned DiagID) const { } // Only errors may be unrecoverable. - if (getBuiltinDiagClass(DiagID) < DiagnosticIDs::Error) + if (getBuiltinDiagClass(DiagID) < CLASS_ERROR) return false; if (DiagID == diag::err_unavailable || |