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();
}