1 // RUN: %clang_cc1 -triple x86_64-apple-darwin9.0 -fsyntax-only -verify -Wno-format -Wformat-type-confusion %s
2
3 __attribute__((format(__printf__, 1, 2)))
4 int printf(const char *msg, ...);
5
6 #define FMT "%hd %hu %d %u %hhd %hhu %c"
7
main()8 int main() {
9 _Bool b = 0;
10 printf(FMT,
11 b, // expected-warning {{format specifies type 'short' but the argument has type '_Bool'}}
12 b, // expected-warning {{format specifies type 'unsigned short' but the argument has type '_Bool'}}
13 b, b, b, b, b);
14
15 unsigned char uc = 0;
16 printf(FMT,
17 uc, // expected-warning {{format specifies type 'short' but the argument has type 'unsigned char'}}
18 uc, // expected-warning {{format specifies type 'unsigned short' but the argument has type 'unsigned char'}}
19 uc, uc, uc, uc, uc);
20
21 signed char sc = 0;
22 printf(FMT,
23 sc, // expected-warning {{format specifies type 'short' but the argument has type 'signed char'}}
24 sc, // expected-warning {{format specifies type 'unsigned short' but the argument has type 'signed char'}}
25 sc, sc, sc, sc, sc);
26 }
27