summaryrefslogtreecommitdiffstats
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2012-02-07 01:17:55 +0000
committerBob Wilson <bob.wilson@apple.com>2012-02-07 01:17:55 +0000
commit7ecbd32e4ee21ca01100287bd604f83308e894e7 (patch)
tree13a980a8b100b32d19d4369e564b1e16fcaa825d /clang/lib/Driver/Tools.cpp
parent96efec99eb1a51831103cba044e2ef6d33c1bf68 (diff)
downloadbcm5719-llvm-7ecbd32e4ee21ca01100287bd604f83308e894e7.tar.gz
bcm5719-llvm-7ecbd32e4ee21ca01100287bd604f83308e894e7.zip
Filter a few more options not recognized by gcc. <rdar://problem/10814020>
These are new options that gcc doesn't recognize so the clang driver needs to remove them when it falls back to invoking gcc. llvm-svn: 149951
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index ef065e8fc03..714a21a61a3 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -3003,13 +3003,27 @@ void darwin::CC1::RemoveCC1UnsupportedArgs(ArgStringList &CmdArgs) const {
StringRef Option = *it;
bool RemoveOption = false;
- // Remove -faltivec
- if (Option.equals("-faltivec")) {
- it = CmdArgs.erase(it);
+ // Erase both -fmodule-cache-path and its argument.
+ if (Option.equals("-fmodule-cache-path") && it+2 != ie) {
+ it = CmdArgs.erase(it, it+2);
ie = CmdArgs.end();
continue;
}
+ // Remove unsupported -f options.
+ if (Option.startswith("-f")) {
+ // Remove -f/-fno- to reduce the number of cases.
+ if (Option.startswith("-fno-"))
+ Option = Option.substr(5);
+ else
+ Option = Option.substr(2);
+ RemoveOption = llvm::StringSwitch<bool>(Option)
+ .Case("altivec", true)
+ .Case("modules", true)
+ .Case("diagnostics-show-note-include-stack", true)
+ .Default(false);
+ }
+
// Handle machine specific options.
if (Option.startswith("-m")) {
RemoveOption = llvm::StringSwitch<bool>(Option)
OpenPOWER on IntegriCloud