From: Chad Rosier Date: Wed, 17 Aug 2011 18:24:55 +0000 (+0000) Subject: [driver] Clang doesn't support -mkernel/-fapple-kext for i386, so it's X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=285f9a284704c07cd50e4597408d5f93518cd7c3;p=clang [driver] Clang doesn't support -mkernel/-fapple-kext for i386, so it's 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 --- diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index ecfb4fef6f..2301811c99 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -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)); diff --git a/lib/Driver/Tools.h b/lib/Driver/Tools.h index 1741d051ce..702fc9d5c3 100644 --- a/lib/Driver/Tools.h +++ b/lib/Driver/Tools.h @@ -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; diff --git a/test/Driver/apple-kext-i386.cpp b/test/Driver/apple-kext-i386.cpp index 8f4d4980a4..5273c1dadb 100644 --- a/test/Driver/apple-kext-i386.cpp +++ b/test/Driver/apple-kext-i386.cpp @@ -14,3 +14,11 @@ // 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"