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/tools/driver/driver.cpp b/tools/driver/driver.cpp
index b9e94b2..645a3ff 100644
--- a/tools/driver/driver.cpp
+++ b/tools/driver/driver.cpp
@@ -17,15 +17,24 @@
 #include "clang/Driver/Option.h"
 #include "clang/Driver/Options.h"
 
+#include "clang/Frontend/TextDiagnosticPrinter.h"
+
 #include "llvm/ADT/OwningPtr.h"
 #include "llvm/Config/config.h"
+#include "llvm/Support/raw_ostream.h"
 #include "llvm/System/Path.h"
 #include "llvm/System/Signals.h"
+using namespace clang;
 using namespace clang::driver;
 
 int main(int argc, const char **argv) {
   llvm::sys::PrintStackTraceOnErrorSignal();
 
+  llvm::OwningPtr<DiagnosticClient> 
+    DiagClient(new TextDiagnosticPrinter(llvm::errs()));
+
+  Diagnostic Diags(DiagClient.get());
+
   // FIXME: We should use GetMainExecutable here, probably, but we may
   // want to handle symbolic links slightly differently. The problem
   // is that the path derived from this will influence search paths.
@@ -35,9 +44,14 @@
   // compiled on.
   llvm::OwningPtr<Driver> TheDriver(new Driver(Path.getBasename().c_str(),
                                                Path.getDirname().c_str(),
-                                               LLVM_HOSTTRIPLE));
-
+                                               LLVM_HOSTTRIPLE,
+                                               Diags));
+                                               
   llvm::OwningPtr<Compilation> C(TheDriver->BuildCompilation(argc, argv));
 
+  // If there were errors building the compilation, quit now.
+  if (Diags.getNumErrors())
+    return 1;
+
   return C->Execute();
 }