From 33211d965840deac2bfdeb63e03949d0c07d93d3 Mon Sep 17 00:00:00 2001 From: Ken Dyck Date: Fri, 20 Nov 2009 16:49:10 +0000 Subject: [PATCH] Avoid unwanted expansion in macros that paste together INT_C(v) and UINT_C(v) macros. llvm-svn: 89461 --- clang/lib/Headers/stdint.h | 8 +++++--- clang/test/Preprocessor/stdint.c | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/clang/lib/Headers/stdint.h b/clang/lib/Headers/stdint.h index fee7d3c1b822..0502275c0b0f 100644 --- a/clang/lib/Headers/stdint.h +++ b/clang/lib/Headers/stdint.h @@ -214,7 +214,6 @@ typedef __uint_least8_t uint_fast8_t; /* C99 7.18.1.4 Integer types capable of holding object pointers. */ #define __stdint_join3(a,b,c) a ## b ## c -#define __stdint_exjoin3(a,b,c) __stdint_join3(a,b,c) #define __intn_t(n) __stdint_join3( int, n, _t) #define __uintn_t(n) __stdint_join3(uint, n, _t) @@ -638,8 +637,11 @@ typedef __uintn_t(__INTMAX_WIDTH__) uintmax_t; #endif /* 7.18.4.2 Macros for greatest-width integer constants. */ -#define INTMAX_C(v) __stdint_exjoin3( INT, __INTMAX_WIDTH__, _C(v)) -#define UINTMAX_C(v) __stdint_exjoin3(UINT, __INTMAX_WIDTH__, _C(v)) +#define __INTN_C(n, v) __stdint_join3( INT, n, _C(v)) +#define __UINTN_C(n, v) __stdint_join3(UINT, n, _C(v)) + +#define INTMAX_C(v) __INTN_C(__INTMAX_WIDTH__, v) +#define UINTMAX_C(v) __UINTN_C(__INTMAX_WIDTH__, v) #endif /* __STDC_HOSTED__ */ #endif /* __CLANG_STDINT_H */ diff --git a/clang/test/Preprocessor/stdint.c b/clang/test/Preprocessor/stdint.c index 05b3165d39b4..930474645f17 100644 --- a/clang/test/Preprocessor/stdint.c +++ b/clang/test/Preprocessor/stdint.c @@ -1185,8 +1185,8 @@ // JOIN:WINT_MAX_ 2147483647 // JOIN:WCHAR_MAX_ 2147483647 // JOIN:WCHAR_MIN_ (-2147483647 -1) -// TODO:INTMAX_C_(0) 0LL -// TODO:UINTMAX_C_(0) 0ULL +// JOIN:INTMAX_C_(0) 0LL +// JOIN:UINTMAX_C_(0) 0ULL #include