diff options
author | Chad Rosier <mcrosier@apple.com> | 2011-08-17 18:24:55 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2011-08-17 18:24:55 +0000 |
commit | bc5ea3d4b96ff2bc968009345a08b639281c94a6 (patch) | |
tree | 15a511ed9acdc0ef74fba5afa86a94cea6dc6b48 /clang/lib/Driver | |
parent | e575902c711bc8156ea006f5ed8bbd933a94f3b2 (diff) | |
download | bcm5719-llvm-bc5ea3d4b96ff2bc968009345a08b639281c94a6.tar.gz bcm5719-llvm-bc5ea3d4b96ff2bc968009345a08b639281c94a6.zip |
[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
llvm-svn: 137842
Diffstat (limited to 'clang/lib/Driver')
-rw-r--r-- | clang/lib/Driver/Tools.cpp | 14 | ||||
-rw-r--r-- | clang/lib/Driver/Tools.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index ecfb4fef6f6..2301811c99d 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/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/clang/lib/Driver/Tools.h b/clang/lib/Driver/Tools.h index 1741d051ce9..702fc9d5c36 100644 --- a/clang/lib/Driver/Tools.h +++ b/clang/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; |