diff options
author | Justin Bogner <mail@justinbogner.com> | 2014-10-20 21:02:05 +0000 |
---|---|---|
committer | Justin Bogner <mail@justinbogner.com> | 2014-10-20 21:02:05 +0000 |
commit | e1a33d1e4c925ae4cfe36df13475e56762780360 (patch) | |
tree | b272a85f211c8acbdf3f03ca29802420f4b9fff7 /clang/tools/driver/driver.cpp | |
parent | 204607bc90b6ff4aaff96a078efa50486babb393 (diff) | |
download | bcm5719-llvm-e1a33d1e4c925ae4cfe36df13475e56762780360.tar.gz bcm5719-llvm-e1a33d1e4c925ae4cfe36df13475e56762780360.zip |
Driver: Make FailingCommand mandatory for generateCompilationDiagnostics
We currently use a null FailingCommand when generating crash reports
as an indication that the cause is FORCE_CLANG_DIAGNOSTICS_CRASH, the
environment variable that exists to test crash dumps. This means that
our tests don't actually cover real crashes at all, and adds a more
complicated code path that's only used in the tests.
Instead, we can have the driver synthesize that every command failed
and just call generateCompilationDiagnostics normally.
llvm-svn: 220234
Diffstat (limited to 'clang/tools/driver/driver.cpp')
-rw-r--r-- | clang/tools/driver/driver.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp index 5b427832190..de4b07d2141 100644 --- a/clang/tools/driver/driver.cpp +++ b/clang/tools/driver/driver.cpp @@ -464,8 +464,12 @@ int main(int argc_, const char **argv_) { // Force a crash to test the diagnostics. if (::getenv("FORCE_CLANG_DIAGNOSTICS_CRASH")) { Diags.Report(diag::err_drv_force_crash) << "FORCE_CLANG_DIAGNOSTICS_CRASH"; - const Command *FailingCommand = nullptr; - FailingCommands.push_back(std::make_pair(-1, FailingCommand)); + + // Pretend that every command failed. + FailingCommands.clear(); + for (const auto &J : C->getJobs()) + if (const Command *C = dyn_cast<Command>(&J)) + FailingCommands.push_back(std::make_pair(-1, C)); } for (const auto &P : FailingCommands) { @@ -483,7 +487,7 @@ int main(int argc_, const char **argv_) { DiagnoseCrash |= CommandRes == 3; #endif if (DiagnoseCrash) { - TheDriver.generateCompilationDiagnostics(*C, FailingCommand); + TheDriver.generateCompilationDiagnostics(*C, *FailingCommand); break; } } |