diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index 1ffa9b7b7d..0d105ac0d0 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -379,7 +379,7 @@ void Driver::generateCompilationDiagnostics(Compilation &C, return; // Don't try to generate diagnostics for link jobs. - if (FailingCommand->getCreator().isLinkJob()) + if (FailingCommand && FailingCommand->getCreator().isLinkJob()) return; Diag(clang::diag::note_drv_command_failed_diag_msg) diff --git a/tools/driver/driver.cpp b/tools/driver/driver.cpp index 8c05fff4de..a07738458a 100644 --- a/tools/driver/driver.cpp +++ b/tools/driver/driver.cpp @@ -475,6 +475,10 @@ int main(int argc_, const char **argv_) { if (C.get()) Res = TheDriver.ExecuteCompilation(*C, FailingCommand); + // Force a crash to test the diagnostics. + if(::getenv("FORCE_CLANG_DIAGNOSTICS_CRASH")) + Res = -1; + // If result status is < 0, then the driver command signalled an error. // In this case, generate additional diagnostic information if possible. if (Res < 0)