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