diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-11-17 06:37:03 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-11-17 06:37:03 +0000 |
commit | 1f95e6567faab67f4363d650f73121359c4bdbab (patch) | |
tree | f0ef424cec2ae73bc83a8365741b411382bccf86 /lib/Driver/Tools.cpp | |
parent | 48cebf2bb14ab9ca561adf30e9f7a949a08dde0e (diff) |
Move char-is-signed defaulting to driver, instead of using
getDefaultLangOptions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@89053 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Tools.cpp')
-rw-r--r-- | lib/Driver/Tools.cpp | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 657ebee924..d5088fe7b3 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -321,6 +321,23 @@ static std::string getLLVMTriple(const ToolChain &TC, const ArgList &Args) { } } +// FIXME: Move to target hook. +static bool isSignedCharDefault(const llvm::Triple &Triple) { + switch (Triple.getArch()) { + default: + return true; + + case llvm::Triple::ppc: + case llvm::Triple::ppc64: + if (Triple.getOS() == llvm::Triple::Darwin) + return true; + return false; + + case llvm::Triple::systemz: + return false; + } +} + void Clang::AddARMTargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const { const Driver &D = getToolChain().getHost().getDriver(); @@ -927,15 +944,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, if (!Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti)) CmdArgs.push_back("-frtti=0"); - // -fsigned-char/-funsigned-char default varies depending on platform; only - // pass if specified. - if (Arg *A = Args.getLastArg(options::OPT_fsigned_char, - options::OPT_funsigned_char)) { - if (A->getOption().matches(options::OPT_fsigned_char)) - CmdArgs.push_back("-fsigned-char"); - else - CmdArgs.push_back("-fsigned-char=0"); - } + // -fsigned-char is default. + if (!Args.hasFlag(options::OPT_fsigned_char, + options::OPT_funsigned_char, + isSignedCharDefault(getToolChain().getTriple()))) + CmdArgs.push_back("-fsigned-char=0"); // -fshort-wchar default varies depending on platform; only // pass if specified. |