OK(void)1 static void OK(void)
2 {
3 #define TEST(x) { T a; x *b = &a; }
4 #define TEST2(x, y) TEST(x y) TEST(y x)
5 #define TEST3(x, y, z) TEST(x y z) TEST(x z y) TEST(y x z) \
6 		       TEST(y z x) TEST(z x y) TEST(z y x)
7 #define TEST4(x, y, z, w) TEST2(x y, z w) TEST2(x y, w z) \
8 			  TEST2(y x, z w) TEST2(y x, w z) \
9 			  TEST2(x z, y w) TEST2(x z, w y) \
10 			  TEST2(z x, y w) TEST2(z x, w y) \
11 			  TEST2(x w, y z) TEST2(x w, z y) \
12 			  TEST2(w x, y z) TEST2(w x, z y)
13 
14 
15 #define T char
16 TEST(char)
17 #undef T
18 
19 #define T signed char
20 TEST2(char, signed)
21 #undef T
22 
23 #define T unsigned char
24 TEST2(char, unsigned)
25 #undef T
26 
27 #define T short
28 TEST(short)
29 TEST2(int, short)
30 #undef T
31 
32 #define T int
33 TEST(int)
34 #undef T
35 
36 #define T long
37 TEST(long)
38 TEST2(int, long)
39 #undef T
40 
41 #define T long long
42 TEST2(long, long)
43 TEST3(int, long, long)
44 #undef T
45 
46 #define T signed short
47 TEST2(short, signed)
48 TEST3(int, short, signed)
49 #undef T
50 
51 #define T signed
52 TEST(signed)
53 TEST2(int, signed)
54 #undef T
55 
56 #define T signed long
57 TEST2(long, signed)
58 TEST3(int, long, signed)
59 #undef T
60 
61 #define T signed long long
62 TEST3(long, long, signed)
63 TEST4(int, long, long, signed)
64 #undef T
65 
66 #define T unsigned short
67 TEST2(short, unsigned)
68 TEST3(int, short, unsigned)
69 #undef T
70 
71 #define T unsigned
72 TEST(unsigned)
73 TEST2(int, unsigned)
74 #undef T
75 
76 #define T unsigned long
77 TEST2(long, unsigned)
78 TEST3(int, long, unsigned)
79 #undef T
80 
81 #define T unsigned long long
82 TEST3(long, long, unsigned)
83 TEST4(int, long, long, unsigned)
84 #undef T
85 
86 #define T float
87 TEST(float)
88 #undef T
89 
90 #define T double
91 TEST(double)
92 #undef T
93 
94 #define T long double
95 TEST2(double, long)
96 #undef T
97 }
98 /*
99  * check-name: valid specifier combinations
100  * check-command: sparse $file
101  */
102