1static 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 16TEST(char) 17#undef T 18 19#define T signed char 20TEST2(char, signed) 21#undef T 22 23#define T unsigned char 24TEST2(char, unsigned) 25#undef T 26 27#define T short 28TEST(short) 29TEST2(int, short) 30#undef T 31 32#define T int 33TEST(int) 34#undef T 35 36#define T long 37TEST(long) 38TEST2(int, long) 39#undef T 40 41#define T long long 42TEST2(long, long) 43TEST3(int, long, long) 44#undef T 45 46#define T signed short 47TEST2(short, signed) 48TEST3(int, short, signed) 49#undef T 50 51#define T signed 52TEST(signed) 53TEST2(int, signed) 54#undef T 55 56#define T signed long 57TEST2(long, signed) 58TEST3(int, long, signed) 59#undef T 60 61#define T signed long long 62TEST3(long, long, signed) 63TEST4(int, long, long, signed) 64#undef T 65 66#define T unsigned short 67TEST2(short, unsigned) 68TEST3(int, short, unsigned) 69#undef T 70 71#define T unsigned 72TEST(unsigned) 73TEST2(int, unsigned) 74#undef T 75 76#define T unsigned long 77TEST2(long, unsigned) 78TEST3(int, long, unsigned) 79#undef T 80 81#define T unsigned long long 82TEST3(long, long, unsigned) 83TEST4(int, long, long, unsigned) 84#undef T 85 86#define T float 87TEST(float) 88#undef T 89 90#define T double 91TEST(double) 92#undef T 93 94#define T long double 95TEST2(double, long) 96#undef T 97} 98/* 99 * check-name: valid specifier combinations 100 * check-command: sparse $file 101 */ 102