diff options
-rw-r--r-- | clang/include/clang/Driver/Driver.h | 2 | ||||
-rw-r--r-- | clang/lib/Driver/Compilation.cpp | 4 | ||||
-rw-r--r-- | clang/tools/driver/driver.cpp | 12 |
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; } |