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
diff --git a/clang/lib/Basic/DiagnosticIDs.cpp b/clang/lib/Basic/DiagnosticIDs.cpp
index b5b48cb..147ba7e 100644
--- a/clang/lib/Basic/DiagnosticIDs.cpp
+++ b/clang/lib/Basic/DiagnosticIDs.cpp
@@ -686,9 +686,11 @@
 
   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 @@
   }
 
   // Only errors may be unrecoverable.
-  if (getBuiltinDiagClass(DiagID) < DiagnosticIDs::Error)
+  if (getBuiltinDiagClass(DiagID) < CLASS_ERROR)
     return false;
 
   if (DiagID == diag::err_unavailable ||