From 62277b37dbe479538fe42761562e76ea87762941 Mon Sep 17 00:00:00 2001 From: Joerg Sonnenberger Date: Tue, 15 Jul 2014 11:51:38 +0000 Subject: [PATCH] Make sure int64_t and uint64_t are consistent. llvm-svn: 213065 --- clang/include/clang/Basic/TargetInfo.h | 3 +++ clang/lib/Frontend/InitPreprocessor.cpp | 4 ++-- clang/test/Preprocessor/init.c | 36 ++++++++++++++++----------------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h index ce97914..29e8350 100644 --- a/clang/include/clang/Basic/TargetInfo.h +++ b/clang/include/clang/Basic/TargetInfo.h @@ -221,6 +221,9 @@ public: IntType getChar16Type() const { return Char16Type; } IntType getChar32Type() const { return Char32Type; } IntType getInt64Type() const { return Int64Type; } + IntType getUInt64Type() const { + return getCorrespondingUnsignedType(Int64Type); + } IntType getSigAtomicType() const { return SigAtomicType; } IntType getProcessIDType() const { return ProcessIDType; } diff --git a/clang/lib/Frontend/InitPreprocessor.cpp b/clang/lib/Frontend/InitPreprocessor.cpp index 64b068d..b53fff9 100644 --- a/clang/lib/Frontend/InitPreprocessor.cpp +++ b/clang/lib/Frontend/InitPreprocessor.cpp @@ -232,7 +232,7 @@ static void DefineExactWidthIntType(TargetInfo::IntType Ty, // Use the target specified int64 type, when appropriate, so that [u]int64_t // ends up being defined in terms of the correct type. if (TypeWidth == 64) - Ty = IsSigned ? TI.getInt64Type() : TI.getIntTypeByWidth(64, false); + Ty = IsSigned ? TI.getInt64Type() : TI.getUInt64Type(); const char *Prefix = IsSigned ? "__INT" : "__UINT"; @@ -254,7 +254,7 @@ static void DefineExactWidthIntTypeSize(TargetInfo::IntType Ty, // Use the target specified int64 type, when appropriate, so that [u]int64_t // ends up being defined in terms of the correct type. if (TypeWidth == 64) - Ty = IsSigned ? TI.getInt64Type() : TI.getIntTypeByWidth(64, false); + Ty = IsSigned ? TI.getInt64Type() : TI.getUInt64Type(); const char *Prefix = IsSigned ? "__INT" : "__UINT"; DefineTypeSize(Prefix + Twine(TypeWidth) + "_MAX__", Ty, TI, Builder); diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index 3c9caa1..dcf9b7c 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -749,9 +749,9 @@ // AARCH64-NETBSD:#define __UINT32_C_SUFFIX__ U // AARCH64-NETBSD:#define __UINT32_MAX__ 4294967295U // AARCH64-NETBSD:#define __UINT32_TYPE__ unsigned int -// AARCH64-NETBSD:#define __UINT64_C_SUFFIX__ UL -// AARCH64-NETBSD:#define __UINT64_MAX__ 18446744073709551615UL -// AARCH64-NETBSD:#define __UINT64_TYPE__ long unsigned int +// AARCH64-NETBSD:#define __UINT64_C_SUFFIX__ ULL +// AARCH64-NETBSD:#define __UINT64_MAX__ 18446744073709551615ULL +// AARCH64-NETBSD:#define __UINT64_TYPE__ long long unsigned int // AARCH64-NETBSD:#define __UINT8_C_SUFFIX__ U // AARCH64-NETBSD:#define __UINT8_MAX__ 255U // AARCH64-NETBSD:#define __UINT8_TYPE__ unsigned char @@ -2881,9 +2881,9 @@ // MIPS64BE:#define __UINT32_C_SUFFIX__ U // MIPS64BE:#define __UINT32_MAX__ 4294967295U // MIPS64BE:#define __UINT32_TYPE__ unsigned int -// MIPS64BE:#define __UINT64_C_SUFFIX__ UL -// MIPS64BE:#define __UINT64_MAX__ 18446744073709551615UL -// MIPS64BE:#define __UINT64_TYPE__ long unsigned int +// MIPS64BE:#define __UINT64_C_SUFFIX__ ULL +// MIPS64BE:#define __UINT64_MAX__ 18446744073709551615ULL +// MIPS64BE:#define __UINT64_TYPE__ long long unsigned int // MIPS64BE:#define __UINT8_C_SUFFIX__ U // MIPS64BE:#define __UINT8_MAX__ 255U // MIPS64BE:#define __UINT8_TYPE__ unsigned char @@ -3082,9 +3082,9 @@ // MIPS64EL:#define __UINT32_C_SUFFIX__ U // MIPS64EL:#define __UINT32_MAX__ 4294967295U // MIPS64EL:#define __UINT32_TYPE__ unsigned int -// MIPS64EL:#define __UINT64_C_SUFFIX__ UL -// MIPS64EL:#define __UINT64_MAX__ 18446744073709551615UL -// MIPS64EL:#define __UINT64_TYPE__ long unsigned int +// MIPS64EL:#define __UINT64_C_SUFFIX__ ULL +// MIPS64EL:#define __UINT64_MAX__ 18446744073709551615ULL +// MIPS64EL:#define __UINT64_TYPE__ long long unsigned int // MIPS64EL:#define __UINT8_C_SUFFIX__ U // MIPS64EL:#define __UINT8_MAX__ 255U // MIPS64EL:#define __UINT8_TYPE__ unsigned char @@ -3618,9 +3618,9 @@ // NVPTX32:#define __UINT32_C_SUFFIX__ U // NVPTX32:#define __UINT32_MAX__ 4294967295U // NVPTX32:#define __UINT32_TYPE__ unsigned int -// NVPTX32:#define __UINT64_C_SUFFIX__ UL -// NVPTX32:#define __UINT64_MAX__ 18446744073709551615UL -// NVPTX32:#define __UINT64_TYPE__ long unsigned int +// NVPTX32:#define __UINT64_C_SUFFIX__ ULL +// NVPTX32:#define __UINT64_MAX__ 18446744073709551615ULL +// NVPTX32:#define __UINT64_TYPE__ long long unsigned int // NVPTX32:#define __UINT8_C_SUFFIX__ U // NVPTX32:#define __UINT8_MAX__ 255U // NVPTX32:#define __UINT8_TYPE__ unsigned char @@ -3798,9 +3798,9 @@ // NVPTX64:#define __UINT32_C_SUFFIX__ U // NVPTX64:#define __UINT32_MAX__ 4294967295U // NVPTX64:#define __UINT32_TYPE__ unsigned int -// NVPTX64:#define __UINT64_C_SUFFIX__ UL -// NVPTX64:#define __UINT64_MAX__ 18446744073709551615UL -// NVPTX64:#define __UINT64_TYPE__ long unsigned int +// NVPTX64:#define __UINT64_C_SUFFIX__ ULL +// NVPTX64:#define __UINT64_MAX__ 18446744073709551615ULL +// NVPTX64:#define __UINT64_TYPE__ long long unsigned int // NVPTX64:#define __UINT8_C_SUFFIX__ U // NVPTX64:#define __UINT8_MAX__ 255U // NVPTX64:#define __UINT8_TYPE__ unsigned char @@ -5483,9 +5483,9 @@ // S390X:#define __UINT32_C_SUFFIX__ U // S390X:#define __UINT32_MAX__ 4294967295U // S390X:#define __UINT32_TYPE__ unsigned int -// S390X:#define __UINT64_C_SUFFIX__ UL -// S390X:#define __UINT64_MAX__ 18446744073709551615UL -// S390X:#define __UINT64_TYPE__ long unsigned int +// S390X:#define __UINT64_C_SUFFIX__ ULL +// S390X:#define __UINT64_MAX__ 18446744073709551615ULL +// S390X:#define __UINT64_TYPE__ long long unsigned int // S390X:#define __UINT8_C_SUFFIX__ U // S390X:#define __UINT8_MAX__ 255U // S390X:#define __UINT8_TYPE__ unsigned char -- 2.7.4