summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Driver.cpp
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-04-20 00:30:04 +0000
committerChad Rosier <mcrosier@apple.com>2012-04-20 00:30:04 +0000
commit9c74e4310c894a6083e8fe1d95a4d38526397fbb (patch)
treed1aa879ce17db74e04eb01856aaadc1d1fc13c56 /clang/lib/Driver/Driver.cpp
parent9cc324d31a64adc3899cf03ce0eda72b05fa0d23 (diff)
downloadbcm5719-llvm-9c74e4310c894a6083e8fe1d95a4d38526397fbb.tar.gz
bcm5719-llvm-9c74e4310c894a6083e8fe1d95a4d38526397fbb.zip
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
Diffstat (limited to 'clang/lib/Driver/Driver.cpp')
-rw-r--r--clang/lib/Driver/Driver.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 3ddac69e98c..1ffa9b7b7d9 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -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;
}
OpenPOWER on IntegriCloud