summaryrefslogtreecommitdiffstats
path: root/lib/Driver
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-03-26 22:04:46 +0000
committerChad Rosier <mcrosier@apple.com>2012-03-26 22:04:46 +0000
commitafc4baa37c2f38fadf05b15456b10a0994d51b0b (patch)
tree8ba564daa91c21a6b824bd300e4193ddff7100ce /lib/Driver
parentec09b3e0c5d96a1b7a3e797cdff2875eca1e9907 (diff)
[driver] Fix unused argument warnings.
1. Don't short-circuit conditional statements that are checking flags. Otherwise, the driver emits warnings about unused arguments. 2. -mkernel and -fapple-kext imply no exceptions, so claim exception related arguments now to avoid warnings about unused arguments. rdar://11120518 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153478 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver')
-rw-r--r--lib/Driver/Tools.cpp30
1 files changed, 19 insertions, 11 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 665a3aa24c..52c22b13a4 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -1081,8 +1081,17 @@ static void addExceptionArgs(const ArgList &Args, types::ID InputType,
bool KernelOrKext, bool IsRewriter,
unsigned objcABIVersion,
ArgStringList &CmdArgs) {
- if (KernelOrKext)
+ if (KernelOrKext) {
+ // -mkernel and -fapple-kext imply no exceptions, so claim exception related
+ // arguments now to avoid warnings about unused arguments.
+ Args.ClaimAllArgs(options::OPT_fexceptions);
+ Args.ClaimAllArgs(options::OPT_fno_exceptions);
+ Args.ClaimAllArgs(options::OPT_fobjc_exceptions);
+ Args.ClaimAllArgs(options::OPT_fno_objc_exceptions);
+ Args.ClaimAllArgs(options::OPT_fcxx_exceptions);
+ Args.ClaimAllArgs(options::OPT_fno_cxx_exceptions);
return;
+ }
// Exceptions are enabled by default.
bool ExceptionsEnabled = true;
@@ -1965,9 +1974,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden);
// -fhosted is default.
- if (KernelOrKext || Args.hasFlag(options::OPT_ffreestanding,
- options::OPT_fhosted,
- false))
+ if (Args.hasFlag(options::OPT_ffreestanding, options::OPT_fhosted, false) ||
+ KernelOrKext)
CmdArgs.push_back("-ffreestanding");
// Forward -f (flag) options which we can pass directly.
@@ -2123,8 +2131,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-fno-elide-constructors");
// -frtti is default.
- if (KernelOrKext ||
- !Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti))
+ if (!Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti) ||
+ KernelOrKext)
CmdArgs.push_back("-fno-rtti");
// -fshort-enums=0 is default for all architectures except Hexagon.
@@ -2145,12 +2153,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-fno-threadsafe-statics");
// -fuse-cxa-atexit is default.
- if (KernelOrKext ||
- !Args.hasFlag(options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
- getToolChain().getTriple().getOS() != llvm::Triple::Cygwin &&
+ if (!Args.hasFlag(options::OPT_fuse_cxa_atexit,
+ options::OPT_fno_use_cxa_atexit,
+ getToolChain().getTriple().getOS() != llvm::Triple::Cygwin &&
getToolChain().getTriple().getOS() != llvm::Triple::MinGW32 &&
- getToolChain().getTriple().getArch() !=
- llvm::Triple::hexagon))
+ getToolChain().getTriple().getArch() != llvm::Triple::hexagon) ||
+ KernelOrKext)
CmdArgs.push_back("-fno-use-cxa-atexit");
// -fms-extensions=0 is default.