Driver: Use standard Diagnostic interface for diagnostics.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66786 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Basic/Diagnostic.cpp b/lib/Basic/Diagnostic.cpp
index fa5ca57..3e3802a 100644
--- a/lib/Basic/Diagnostic.cpp
+++ b/lib/Basic/Diagnostic.cpp
@@ -44,6 +44,10 @@
 #include "clang/Basic/DiagnosticCommonKinds.def"
   0
 };
+static unsigned char DiagnosticFlagsDriver[] = {
+#include "clang/Basic/DiagnosticDriverKinds.def"
+  0
+};
 static unsigned char DiagnosticFlagsLex[] = {
 #include "clang/Basic/DiagnosticLexKinds.def"
   0
@@ -72,8 +76,10 @@
   assert(DiagID < diag::DIAG_UPPER_LIMIT &&
          "Diagnostic ID out of range!");
   unsigned res;
-  if (DiagID < diag::DIAG_START_LEX)
+  if (DiagID < diag::DIAG_START_DRIVER)
     res = DiagnosticFlagsCommon[DiagID];
+  else if (DiagID < diag::DIAG_START_LEX)
+    res = DiagnosticFlagsDriver[DiagID - diag::DIAG_START_DRIVER - 1];
   else if (DiagID < diag::DIAG_START_PARSE)
     res = DiagnosticFlagsLex[DiagID - diag::DIAG_START_LEX - 1];
   else if (DiagID < diag::DIAG_START_AST)
@@ -94,6 +100,10 @@
 #include "clang/Basic/DiagnosticCommonKinds.def"
   0
 };
+static const char * const DiagnosticTextDriver[] = {
+#include "clang/Basic/DiagnosticDriverKinds.def"
+  0
+};
 static const char * const DiagnosticTextLex[] = {
 #include "clang/Basic/DiagnosticLexKinds.def"
   0
@@ -237,8 +247,10 @@
 /// getDescription - Given a diagnostic ID, return a description of the
 /// issue.
 const char *Diagnostic::getDescription(unsigned DiagID) const {
-  if (DiagID < diag::DIAG_START_LEX)
+  if (DiagID < diag::DIAG_START_DRIVER)
     return DiagnosticTextCommon[DiagID];
+  else if (DiagID < diag::DIAG_START_LEX)
+    return DiagnosticTextDriver[DiagID - diag::DIAG_START_DRIVER - 1];
   else if (DiagID < diag::DIAG_START_PARSE)
     return DiagnosticTextLex[DiagID - diag::DIAG_START_LEX - 1];
   else if (DiagID < diag::DIAG_START_AST)