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 | |
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
-rw-r--r-- | lib/Basic/Targets.cpp | 13 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 31 | ||||
-rw-r--r-- | test/Preprocessor/init.c | 6 |
3 files changed, 25 insertions, 25 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 91ecf475e6..07c9e37d1c 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -160,9 +160,6 @@ static void GetDarwinLanguageOptions(LangOptions &Opts, const llvm::Triple &Triple) { Opts.NeXTRuntime = true; - if (Triple.getOS() != llvm::Triple::Darwin) - return; - unsigned MajorVersion = Triple.getDarwinMajorNumber(); // Blocks and stack protectors default to on for 10.6 (darwin10) and beyond. @@ -192,7 +189,6 @@ protected: /// various language options. These may be overridden by command line /// options. virtual void getDefaultLangOptions(LangOptions &Opts) { - TargetInfo::getDefaultLangOptions(Opts); GetDarwinLanguageOptions(Opts, TargetInfo::getTriple()); } public: @@ -436,10 +432,6 @@ public: return true; } } - virtual void getDefaultLangOptions(LangOptions &Opts) { - TargetInfo::getDefaultLangOptions(Opts); - Opts.CharIsSigned = false; - } virtual const char *getClobbers() const { return ""; } @@ -1676,11 +1668,6 @@ namespace { NumRecords = 0; } - virtual void getDefaultLangOptions(LangOptions &Opts) { - TargetInfo::getDefaultLangOptions(Opts); - Opts.CharIsSigned = false; - } - virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const; virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, 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. diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 100e27461c..6ba64e4896 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -493,7 +493,7 @@ // PIC16:#define ram __attribute__((address_space(0))) // PIC16:#define rom __attribute__((address_space(1))) // -// RUN: clang-cc -E -dM -ffreestanding -triple=powerpc64-none-none < /dev/null | FileCheck -check-prefix PPC64 %s +// RUN: clang-cc -E -dM -ffreestanding -triple=powerpc64-none-none -fsigned-char=0 < /dev/null | FileCheck -check-prefix PPC64 %s // // PPC64:#define _ARCH_PPC 1 // PPC64:#define _ARCH_PPC64 1 @@ -574,7 +574,7 @@ // PPC64:#define __ppc64__ 1 // PPC64:#define __ppc__ 1 // -// RUN: clang-cc -E -dM -ffreestanding -triple=powerpc-none-none < /dev/null | FileCheck -check-prefix PPC %s +// RUN: clang-cc -E -dM -ffreestanding -triple=powerpc-none-none -fsigned-char=0 < /dev/null | FileCheck -check-prefix PPC %s // // PPC:#define _ARCH_PPC 1 // PPC:#define _BIG_ENDIAN 1 @@ -651,7 +651,7 @@ // PPC:#define __WINT_TYPE__ int // PPC:#define __ppc__ 1 // -// RUN: clang-cc -E -dM -ffreestanding -triple=s390x-none-none < /dev/null | FileCheck -check-prefix S390X %s +// RUN: clang-cc -E -dM -ffreestanding -triple=s390x-none-none -fsigned-char=0 < /dev/null | FileCheck -check-prefix S390X %s // // S390X:#define __CHAR_BIT__ 8 // S390X:#define __CHAR_UNSIGNED__ 1 |