From f99d04f841bc2fddd009b6481f43c266cabf4300 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Tue, 18 Oct 2011 08:10:06 +0000 Subject: Suggest %zu for size_t args to printf. For PR11152. Make PrintSpecifier::fixType() suggest "%zu" for size_t, etc. rather than looking at the underlying type and suggesting "%llu" or other platform-specific length modifiers. Applies to C99 and C++11. llvm-svn: 142342 --- clang/test/Sema/format-strings-fixit.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'clang/test/Sema/format-strings-fixit.c') diff --git a/clang/test/Sema/format-strings-fixit.c b/clang/test/Sema/format-strings-fixit.c index d03cccb601f..5b2f54a59fa 100644 --- a/clang/test/Sema/format-strings-fixit.c +++ b/clang/test/Sema/format-strings-fixit.c @@ -46,6 +46,19 @@ void test() { // Perserve the original formatting for unsigned integers. unsigned long val = 42; printf("%X", val); + + typedef __SIZE_TYPE__ size_t; + typedef signed long int ssize_t; + typedef __INTMAX_TYPE__ intmax_t; + typedef __UINTMAX_TYPE__ uintmax_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + + // size_t, etc. + printf("%c", (size_t) 42); + printf("%c", (ssize_t) 42); + printf("%c", (intmax_t) 42); + printf("%c", (uintmax_t) 42); + printf("%c", (ptrdiff_t) 42); } // Validate the fixes... @@ -68,3 +81,8 @@ void test() { // CHECK: printf("%s", "foo"); // CHECK: printf("%1$p", (void *)0); // CHECK: printf("%lX", val); +// CHECK: printf("%zu", (size_t) 42); +// CHECK: printf("%zd", (ssize_t) 42); +// CHECK: printf("%jd", (intmax_t) 42); +// CHECK: printf("%ju", (uintmax_t) 42); +// CHECK: printf("%td", (ptrdiff_t) 42); -- cgit v1.2.3