don't emit any diagnostics after a fatal one.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63914 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Basic/Diagnostic.cpp b/lib/Basic/Diagnostic.cpp
index ae23278..ff11071 100644
--- a/lib/Basic/Diagnostic.cpp
+++ b/lib/Basic/Diagnostic.cpp
@@ -191,6 +191,7 @@
   memset(DiagMappings, 0, sizeof(DiagMappings));
   
   ErrorOccurred = false;
+  FatalErrorOccurred = false;
   NumDiagnostics = 0;
   NumErrors = 0;
   CustomDiagInfo = 0;
@@ -300,6 +301,11 @@
 void Diagnostic::ProcessDiag() {
   DiagnosticInfo Info(this);
   
+  // If a fatal error has already been emitted, silence all subsequent
+  // diagnostics.
+  if (FatalErrorOccurred)
+    return;
+  
   // Figure out the diagnostic level of this message.
   Diagnostic::Level DiagLevel = getDiagnosticLevel(Info.getID());
   
@@ -320,8 +326,10 @@
   
   if (DiagLevel >= Diagnostic::Error) {
     ErrorOccurred = true;
-
     ++NumErrors;
+    
+    if (DiagLevel == Diagnostic::Fatal)
+      FatalErrorOccurred = true;
   }
 
   // Finally, report it.