]> granicus.if.org Git - clang/commitdiff
[driver] Clang doesn't support -mkernel/-fapple-kext for i386, so it's
authorChad Rosier <mcrosier@apple.com>
Wed, 17 Aug 2011 18:24:55 +0000 (18:24 +0000)
committerChad Rosier <mcrosier@apple.com>
Wed, 17 Aug 2011 18:24:55 +0000 (18:24 +0000)
automatically invoking llvm-gcc's cc1plus, which doesn't support all options
supported by Clang.  Therefore, filter out unsupported options.
rdar://9964354

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

lib/Driver/Tools.cpp
lib/Driver/Tools.h
test/Driver/apple-kext-i386.cpp

index ecfb4fef6f68a261a0797d2922ad7420d1a17877..2301811c99d1bd35ec3660c757e60595706fa9c2 100644 (file)
@@ -2446,6 +2446,18 @@ darwin::CC1::getDependencyFileName(const ArgList &Args,
   return Args.MakeArgString(Res + ".d");
 }
 
+void darwin::CC1::RemoveCC1UnsupportedArgs(ArgStringList &CmdArgs) const {
+  for (ArgStringList::iterator it = CmdArgs.begin(), ie = CmdArgs.end(); 
+       it != ie;) {
+    if (!strcmp(*it, "-Wno-self-assign")) {
+      it = CmdArgs.erase(it);
+      it = CmdArgs.end();
+    }
+    else
+      ++it;
+  }
+}
+
 void darwin::CC1::AddCC1Args(const ArgList &Args,
                              ArgStringList &CmdArgs) const {
   const Driver &D = getToolChain().getDriver();
@@ -2853,6 +2865,8 @@ void darwin::Compile::ConstructJob(Compilation &C, const JobAction &JA,
     CmdArgs.push_back(Output.getFilename());
   }
 
+  RemoveCC1UnsupportedArgs(CmdArgs);
+
   const char *CC1Name = getCC1Name(Inputs[0].getType());
   const char *Exec =
     Args.MakeArgString(getToolChain().GetProgramPath(CC1Name));
index 1741d051ce9fefc73d582bf6706a88d59915c065..702fc9d5c36c6e5e73731819ac14a45e4e5ba3cc 100644 (file)
@@ -178,6 +178,7 @@ namespace darwin {
     const char *getCC1Name(types::ID Type) const;
 
     void AddCC1Args(const ArgList &Args, ArgStringList &CmdArgs) const;
+    void RemoveCC1UnsupportedArgs(ArgStringList &CmdArgs) const;
     void AddCC1OptionsArgs(const ArgList &Args, ArgStringList &CmdArgs,
                            const InputInfoList &Inputs,
                            const ArgStringList &OutputArgs) const;
index 8f4d4980a49022628b7e908d8f81106354efc82e..5273c1dadb4cc9b5a929b5db4e7180fcec1d4b6f 100644 (file)
 
 // CHECK-MKERNEL: cc1plus"
 // CHECK-MKERNEL: "-mkernel"
+
+// RUN: %clang -ccc-host-triple i386-apple-darwin10 \
+// RUN:   -Wno-self-assign \
+// RUN:   -fapple-kext -### -fsyntax-only %s 2> %t
+// RUN: FileCheck --check-prefix=CHECK-UNSUPPORTED < %t %s
+
+// CHECK-UNSUPPORTED: cc1plus"
+// CHECK-UNSUPPORTED-NOT: "-Wno-self-assign"