When generating the clang crash diagnostic script, strip out the -D, -F, and -I

flags.  We have preprocessed source, so we don't need these.

No test case as it's fairly difficult to make the compiler crash on demand.  I'll
patiently wait for Ben to tell me how to do this in 2 lines of code.  :)
rdar://11283560

llvm-svn: 155180
This commit is contained in:
Chad Rosier 2012-04-20 00:30:04 +00:00
parent 9cc324d31a
commit 9c74e4310c
1 changed files with 14 additions and 0 deletions

View File

@ -489,6 +489,20 @@ void Driver::generateCompilationDiagnostics(Compilation &C,
Diag(clang::diag::note_drv_command_failed_diag_msg)
<< "Error generating run script: " + Script + " " + Err;
} else {
// Strip -D, -F, and -I.
// FIXME: This doesn't work with quotes (e.g., -D "foo bar").
std::string Flag[3] = {"-D ", "-F", "-I "};
for (unsigned i = 0; i < 3; ++i) {
size_t I = 0, E = 0;
do {
I = Cmd.find(Flag[i], I);
if (I == std::string::npos) break;
E = Cmd.find(" ", I + Flag[i].length());
if (E == std::string::npos) break;
Cmd.erase(I, E - I + 1);
} while(1);
}
ScriptOS << Cmd;
Diag(clang::diag::note_drv_command_failed_diag_msg) << Script;
}