summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/Driver/Driver.h2
-rw-r--r--clang/lib/Driver/Compilation.cpp4
-rw-r--r--clang/tools/driver/driver.cpp12
3 files changed, 10 insertions, 8 deletions
diff --git a/clang/include/clang/Driver/Driver.h b/clang/include/clang/Driver/Driver.h
index 2a918428840..7a52498364b 100644
--- a/clang/include/clang/Driver/Driver.h
+++ b/clang/include/clang/Driver/Driver.h
@@ -109,6 +109,8 @@ public:
const OptTable &getOpts() const { return *Opts; }
+ const Diagnostic &getDiags() const { return Diags; }
+
/// @}
/// @name Primary Functionality
/// @{
diff --git a/clang/lib/Driver/Compilation.cpp b/clang/lib/Driver/Compilation.cpp
index 48796afd827..a2fc9212a51 100644
--- a/clang/lib/Driver/Compilation.cpp
+++ b/clang/lib/Driver/Compilation.cpp
@@ -160,6 +160,10 @@ int Compilation::Execute() const {
return 0;
}
+ // If there were errors building the compilation, quit now.
+ if (getDriver().getDiags().getNumErrors())
+ return 1;
+
int Res = ExecuteJob(Jobs);
// Remove temp files.
diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp
index 865b57c5aba..b2277611971 100644
--- a/clang/tools/driver/driver.cpp
+++ b/clang/tools/driver/driver.cpp
@@ -87,15 +87,11 @@ int main(int argc, const char **argv) {
llvm::OwningPtr<Compilation> C(TheDriver->BuildCompilation(argc, argv));
- // If there were errors building the compilation, quit now.
- if (Diags.getNumErrors())
- return 1;
- if (!C.get())
- return 0;
-
- int res = C->Execute();
+ int Res = 0;
+ if (C.get())
+ Res = C->Execute();
llvm::llvm_shutdown();
- return res;
+ return Res;
}
OpenPOWER on IntegriCloud