[Clang][Driver] Remove -M group options before generating crash diagnostics
authorAlexandre Ganea <alexandre.ganea@ubisoft.com>
Thu, 6 Feb 2020 21:23:25 +0000 (16:23 -0500)
committerAlexandre Ganea <alexandre.ganea@ubisoft.com>
Thu, 6 Feb 2020 21:23:25 +0000 (16:23 -0500)
commitf41ec709d9d388dc43469e6ac7f51b6313f7e4af
treee841d8d6e4e942a8a282c1393183e3cded4bb53c
parent5fedc2b410853a6aef05e8edf19ebfc4e071e28f
[Clang][Driver] Remove -M group options before generating crash diagnostics

Previously, when using '-MF file.d' on the command line, 'file.d' would not be deleted after a compiler crash.

The code path in Compilation::initCompilationForDiagnostics()  that was modifying 'TranslatedArgs' had no effect, because 'TCArgs' was already created after the crash.

This was covered by clang/test/Driver/output-file-cleanup.c, the test was succeeding by fluke because Driver::generateCompilationDiagnostics() would fail to launch the subsequent clang -E (see D74070 for a fix for this). So the test was only covering Driver.cpp, C.CleanupFileMap().
After this patch, both cleanup and removal of -MF are exercised.

Differential Revision: https://reviews.llvm.org/D74076
clang/lib/Driver/Compilation.cpp
clang/test/Driver/output-file-cleanup.c