aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Dyck <ken.dyck@onsemi.com>2009-11-16 16:36:33 +0000
committerKen Dyck <ken.dyck@onsemi.com>2009-11-16 16:36:33 +0000
commiteef22efce8dd9d0ba9adb8f4746b96b584f2521d (patch)
tree17f9314ebafbab333ff66c3941e2c2c37865af9f
parenteac73e5b3eb3862945bcaa2770c71a727a3ee542 (diff)
Parameterize the constant-generating macros in stdint.h with new built-in
__INTn_C_SUFFIX__ macros that are defined for types with corresponding constant suffixes (i.e. long and long long). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88914 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Frontend/InitPreprocessor.cpp10
-rw-r--r--lib/Headers/stdint.h8
-rw-r--r--test/Preprocessor/init.c10
-rw-r--r--test/Preprocessor/stdint.c20
4 files changed, 29 insertions, 19 deletions
diff --git a/lib/Frontend/InitPreprocessor.cpp b/lib/Frontend/InitPreprocessor.cpp
index 6968049131..9648620ea0 100644
--- a/lib/Frontend/InitPreprocessor.cpp
+++ b/lib/Frontend/InitPreprocessor.cpp
@@ -240,8 +240,16 @@ static void DefineType(const char *MacroName, TargetInfo::IntType Ty,
static void DefineExactWidthIntType(TargetInfo::IntType Ty,
const TargetInfo &TI, std::vector<char> &Buf) {
char MacroBuf[60];
- sprintf(MacroBuf, "__INT%d_TYPE__", TI.getTypeWidth(Ty));
+ int TypeWidth = TI.getTypeWidth(Ty);
+ sprintf(MacroBuf, "__INT%d_TYPE__", TypeWidth);
DefineType(MacroBuf, Ty, Buf);
+
+
+ const char *ConstSuffix = TargetInfo::getTypeConstantSuffix(Ty);
+ if (strlen(ConstSuffix) > 0) {
+ sprintf(MacroBuf, "__INT%d_C_SUFFIX__=%s", TypeWidth, ConstSuffix);
+ DefineBuiltinMacro(Buf, MacroBuf);
+ }
}
static void InitializePredefinedMacros(const TargetInfo &TI,
diff --git a/lib/Headers/stdint.h b/lib/Headers/stdint.h
index b404e3dfdf..419dc0b912 100644
--- a/lib/Headers/stdint.h
+++ b/lib/Headers/stdint.h
@@ -247,8 +247,6 @@ typedef __UINTMAX_TYPE__ uintmax_t;
#ifdef __INT64_TYPE__
-/* FIXME: predefine suffix based on type*/
-# define __INT64_C_SUFFIX__ LL
# ifdef __INT64_C_SUFFIX__
# define __int64_c_suffix __INT64_C_SUFFIX__
# define __int32_c_suffix __INT64_C_SUFFIX__
@@ -274,8 +272,6 @@ typedef __UINTMAX_TYPE__ uintmax_t;
#ifdef __INT56_TYPE__
-/* FIXME: predefine suffix based on type */
-# define __INT56_C_SUFFIX__ L
# ifdef __INT56_C_SUFFIX__
# define INT56_C(v) __int_c(v, __INT56_C_SUFFIX__)
# define UINT56_C(v) __uint_c(v, __INT56_C_SUFFIX__)
@@ -293,8 +289,6 @@ typedef __UINTMAX_TYPE__ uintmax_t;
#ifdef __INT48_TYPE__
-/* FIXME: predefine suffix based on type */
-# define __INT48_C_SUFFIX__ L
# ifdef __INT48_C_SUFFIX__
# define INT48_C(v) __int_c(v, __INT48_C_SUFFIX__)
# define UINT48_C(v) __uint_c(v, __INT48_C_SUFFIX__)
@@ -312,8 +306,6 @@ typedef __UINTMAX_TYPE__ uintmax_t;
#ifdef __INT40_TYPE__
-/* FIXME: predefine suffix based on type */
-# define __INT40_C_SUFFIX__ L
# ifdef __INT40_C_SUFFIX__
# define INT40_C(v) __int_c(v, __INT40_C_SUFFIX__)
# define UINT40_C(v) __uint_c(v, __INT40_C_SUFFIX__)
diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c
index b88ea06cf3..100e27461c 100644
--- a/test/Preprocessor/init.c
+++ b/test/Preprocessor/init.c
@@ -155,6 +155,7 @@
// ARM:#define __FLT_RADIX__ 2
// ARM:#define __INT16_TYPE__ short
// ARM:#define __INT32_TYPE__ int
+// ARM:#define __INT64_C_SUFFIX__ LL
// ARM:#define __INT64_TYPE__ long long int
// ARM:#define __INT8_TYPE__ char
// ARM:#define __INTMAX_MAX__ 9223372036854775807LL
@@ -232,6 +233,7 @@
// BFIN:#define __FLT_RADIX__ 2
// BFIN:#define __INT16_TYPE__ short
// BFIN:#define __INT32_TYPE__ int
+// BFIN:#define __INT64_C_SUFFIX__ LL
// BFIN:#define __INT64_TYPE__ long long int
// BFIN:#define __INT8_TYPE__ char
// BFIN:#define __INTMAX_MAX__ 9223372036854775807LL
@@ -302,6 +304,7 @@
// I386:#define __FLT_RADIX__ 2
// I386:#define __INT16_TYPE__ short
// I386:#define __INT32_TYPE__ int
+// I386:#define __INT64_C_SUFFIX__ LL
// I386:#define __INT64_TYPE__ long long int
// I386:#define __INT8_TYPE__ char
// I386:#define __INTMAX_MAX__ 9223372036854775807LL
@@ -378,6 +381,7 @@
// MSP430:#define __FLT_MIN__ 1.17549435e-38F
// MSP430:#define __FLT_RADIX__ 2
// MSP430:#define __INT16_TYPE__ short
+// MSP430:#define __INT32_C_SUFFIX__ L
// MSP430:#define __INT32_TYPE__ long int
// MSP430:#define __INT8_TYPE__ char
// MSP430:#define __INTMAX_MAX__ 2147483647L
@@ -447,6 +451,7 @@
// PIC16:#define __FLT_MIN__ 1.17549435e-38F
// PIC16:#define __FLT_RADIX__ 2
// PIC16:#define __INT16_TYPE__ short
+// PIC16:#define __INT32_C_SUFFIX__ L
// PIC16:#define __INT32_TYPE__ long int
// PIC16:#define __INT8_TYPE__ char
// PIC16:#define __INTMAX_MAX__ 2147483647L
@@ -528,6 +533,7 @@
// PPC64:#define __FLT_RADIX__ 2
// PPC64:#define __INT16_TYPE__ short
// PPC64:#define __INT32_TYPE__ int
+// PPC64:#define __INT64_C_SUFFIX__ L
// PPC64:#define __INT64_TYPE__ long int
// PPC64:#define __INT8_TYPE__ char
// PPC64:#define __INTMAX_MAX__ 9223372036854775807L
@@ -606,6 +612,7 @@
// PPC:#define __FLT_RADIX__ 2
// PPC:#define __INT16_TYPE__ short
// PPC:#define __INT32_TYPE__ int
+// PPC:#define __INT64_C_SUFFIX__ LL
// PPC:#define __INT64_TYPE__ long long int
// PPC:#define __INT8_TYPE__ char
// PPC:#define __INTMAX_MAX__ 9223372036854775807LL
@@ -679,6 +686,7 @@
// S390X:#define __FLT_RADIX__ 2
// S390X:#define __INT16_TYPE__ short
// S390X:#define __INT32_TYPE__ int
+// S390X:#define __INT64_C_SUFFIX__ L
// S390X:#define __INT64_TYPE__ long int
// S390X:#define __INT8_TYPE__ char
// S390X:#define __INTMAX_MAX__ 9223372036854775807LL
@@ -748,6 +756,7 @@
// SPARC:#define __FLT_RADIX__ 2
// SPARC:#define __INT16_TYPE__ short
// SPARC:#define __INT32_TYPE__ int
+// SPARC:#define __INT64_C_SUFFIX__ LL
// SPARC:#define __INT64_TYPE__ long long int
// SPARC:#define __INT8_TYPE__ char
// SPARC:#define __INTMAX_MAX__ 9223372036854775807LL
@@ -893,6 +902,7 @@
// X86_64:#define __FLT_RADIX__ 2
// X86_64:#define __INT16_TYPE__ short
// X86_64:#define __INT32_TYPE__ int
+// X86_64:#define __INT64_C_SUFFIX__ L
// X86_64:#define __INT64_TYPE__ long int
// X86_64:#define __INT8_TYPE__ char
// X86_64:#define __INTMAX_MAX__ 9223372036854775807L
diff --git a/test/Preprocessor/stdint.c b/test/Preprocessor/stdint.c
index 2349c32b5e..faa5f8e16f 100644
--- a/test/Preprocessor/stdint.c
+++ b/test/Preprocessor/stdint.c
@@ -413,8 +413,8 @@
// MSP430:UINT8_C_(0) (0U)
// MSP430:INT16_C_(0) (0)
// MSP430:UINT16_C_(0) (0U)
-// MSP430:INT32_C_(0) (0)
-// MSP430:UINT32_C_(0) (0U)
+// MSP430:INT32_C_(0) (0L)
+// MSP430:UINT32_C_(0) (0UL)
// MSP430:INT64_C_(0) INT64_C(0)
// MSP430:UINT64_C_(0) UINT64_C(0)
//
@@ -513,8 +513,8 @@
// PIC16:UINT8_C_(0) (0U)
// PIC16:INT16_C_(0) (0)
// PIC16:UINT16_C_(0) (0U)
-// PIC16:INT32_C_(0) (0)
-// PIC16:UINT32_C_(0) (0U)
+// PIC16:INT32_C_(0) (0L)
+// PIC16:UINT32_C_(0) (0UL)
// PIC16:INT64_C_(0) INT64_C(0)
// PIC16:UINT64_C_(0) UINT64_C(0)
//
@@ -622,8 +622,8 @@
// PPC64:UINT16_C_(0) (0U)
// PPC64:INT32_C_(0) (0)
// PPC64:UINT32_C_(0) (0U)
-// PPC64:INT64_C_(0) (0LL)
-// PPC64:UINT64_C_(0) (0ULL)
+// PPC64:INT64_C_(0) (0L)
+// PPC64:UINT64_C_(0) (0UL)
//
// PPC64:INTMAX_C_(0) (0LL)
// PPC64:UINTMAX_C_(0) (0ULL)
@@ -837,8 +837,8 @@
// S390X:UINT16_C_(0) (0U)
// S390X:INT32_C_(0) (0)
// S390X:UINT32_C_(0) (0U)
-// S390X:INT64_C_(0) (0LL)
-// S390X:UINT64_C_(0) (0ULL)
+// S390X:INT64_C_(0) (0L)
+// S390X:UINT64_C_(0) (0UL)
//
// S390X:INTMAX_C_(0) (0LL)
// S390X:UINTMAX_C_(0) (0ULL)
@@ -1152,8 +1152,8 @@
// X86_64:UINT16_C_(0) (0U)
// X86_64:INT32_C_(0) (0)
// X86_64:UINT32_C_(0) (0U)
-// X86_64:INT64_C_(0) (0LL)
-// X86_64:UINT64_C_(0) (0ULL)
+// X86_64:INT64_C_(0) (0L)
+// X86_64:UINT64_C_(0) (0UL)
//
// X86_64:INTMAX_C_(0) (0LL)
// X86_64:UINTMAX_C_(0) (0ULL)