// RUN: cp %s %t // RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -Wformat -Wformat-signedness -fixit %t // RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -fsyntax-only -Wformat -Wformat-signedness -Werror %t // RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -E -o - %t | FileCheck %s #include int printf(const char *restrict format, ...); void test_printf_int(int x) { printf("%u", x); } void test_printf_unsigned(unsigned x) { printf("%d", x); } void test_printf_long(long x) { printf("%lu", x); } void test_printf_unsigned_long(unsigned long x) { printf("%ld", x); } void test_printf_long_long(long long x) { printf("%llu", x); } void test_printf_unsigned_long_long(unsigned long long x) { printf("%lld", x); } enum enum_int { minus_1 = -1 }; void test_printf_enum_int(enum enum_int x) { printf("%u", x); } enum enum_unsigned { zero = 0 }; void test_printf_enum_unsigned(enum enum_unsigned x) { printf("%d", x); } enum enum_long { minus_one = -1, int_val = INT_MAX, unsigned_val = (unsigned)INT_MIN }; void test_printf_enum_long(enum enum_long x) { printf("%lu", x); } enum enum_unsigned_long { uint_max_plus = (unsigned long)UINT_MAX+1, }; void test_printf_enum_unsigned_long(enum enum_unsigned_long x) { printf("%ld", x); } // Validate the fixes. // CHECK: void test_printf_int(int x) // CHECK: printf("%d", x); // CHECK: void test_printf_unsigned(unsigned x) // CHECK: printf("%u", x); // CHECK: void test_printf_long(long x) // CHECK: printf("%ld", x); // CHECK: void test_printf_unsigned_long(unsigned long x) // CHECK: printf("%lu", x); // CHECK: void test_printf_long_long(long long x) // CHECK: printf("%lld", x); // CHECK: void test_printf_unsigned_long_long(unsigned long long x) // CHECK: printf("%llu", x); // CHECK: void test_printf_enum_int(enum enum_int x) // CHECK: printf("%d", x); // CHECK: void test_printf_enum_unsigned(enum enum_unsigned x) // CHECK: printf("%u", x); // CHECK: void test_printf_enum_long(enum enum_long x) // CHECK: printf("%ld", x); // CHECK: void test_printf_enum_unsigned_long(enum enum_unsigned_long x) // CHECK: printf("%lu", x);