aboutsummaryrefslogtreecommitdiff
path: root/lib
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 /lib
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
Diffstat (limited to 'lib')
-rw-r--r--lib/Frontend/InitPreprocessor.cpp10
-rw-r--r--lib/Headers/stdint.h8
2 files changed, 9 insertions, 9 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__)