diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-04-21 05:45:45 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-04-21 05:45:45 +0000 |
commit | 45477524025e93f91226a7165dc3a208407b82f0 (patch) | |
tree | 38a9fe0f8cb4afc14d279d06b1dcefc87c2d5d45 /clang/lib | |
parent | 6b3396fbd230cc037d61419f41fa98e1238af4aa (diff) | |
download | bcm5719-llvm-45477524025e93f91226a7165dc3a208407b82f0.tar.gz bcm5719-llvm-45477524025e93f91226a7165dc3a208407b82f0.zip |
PR9772: Fix the definition of WINT_MIN and WINT_MAX on Linux -ffreestanding.
llvm-svn: 129907
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Frontend/InitPreprocessor.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Headers/stdint.h | 9 |
2 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 928e84b1856..ff3cf4b9cdb 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -419,6 +419,9 @@ static void InitializePredefinedMacros(const TargetInfo &TI, if (!LangOpts.CharIsSigned) Builder.defineMacro("__CHAR_UNSIGNED__"); + if (!TargetInfo::isTypeSigned(TI.getWIntType())) + Builder.defineMacro("__WINT_UNSIGNED__"); + // Define exact-width integer types for stdint.h Builder.defineMacro("__INT" + llvm::Twine(TI.getCharWidth()) + "_TYPE__", "char"); diff --git a/clang/lib/Headers/stdint.h b/clang/lib/Headers/stdint.h index d2ba8de1355..ed3240abc9a 100644 --- a/clang/lib/Headers/stdint.h +++ b/clang/lib/Headers/stdint.h @@ -630,8 +630,13 @@ typedef __UINTMAX_TYPE__ uintmax_t; /* C99 7.18.3 Limits of other integer types. */ #define SIG_ATOMIC_MIN __INTN_MIN(__SIG_ATOMIC_WIDTH__) #define SIG_ATOMIC_MAX __INTN_MAX(__SIG_ATOMIC_WIDTH__) -#define WINT_MIN __INTN_MIN(__WINT_WIDTH__) -#define WINT_MAX __INTN_MAX(__WINT_WIDTH__) +#ifdef __WINT_UNSIGNED__ +# define WINT_MIN 0 +# define WINT_MAX __UINTN_MAX(__WINT_WIDTH__) +#else +# define WINT_MIN __INTN_MIN(__WINT_WIDTH__) +# define WINT_MAX __INTN_MAX(__WINT_WIDTH__) +#endif /* FIXME: if we ever support a target with unsigned wchar_t, this should be * 0 .. Max. |