]> granicus.if.org Git - clang/commitdiff
Filter a few more options not recognized by gcc. <rdar://problem/10814020>
authorBob Wilson <bob.wilson@apple.com>
Tue, 7 Feb 2012 01:17:55 +0000 (01:17 +0000)
committerBob Wilson <bob.wilson@apple.com>
Tue, 7 Feb 2012 01:17:55 +0000 (01:17 +0000)
These are new options that gcc doesn't recognize so the clang driver needs
to remove them when it falls back to invoking gcc.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149951 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/Tools.cpp

index ef065e8fc03a403d8fcb6c7006f58eb5ba89fbe3..714a21a61a3ee6d5f4ef9357b64f6233b4b5962f 100644 (file)
@@ -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)