| /* PR preprocessor/65238 */ | |
| /* { dg-do run } */ | |
| #define A unused | |
| #define B A | |
| #define C B | |
| #define D __has_attribute(unused) | |
| #define E __has_attribute(C) | |
| #define F(X) __has_attribute(X) | |
| #if !__has_attribute(unused) | |
| #error unused attribute not supported - 1 | |
| #endif | |
| #if !__has_attribute(C) | |
| #error unused attribute not supported - 2 | |
| #endif | |
| #if !D | |
| #error unused attribute not supported - 3 | |
| #endif | |
| #if !E | |
| #error unused attribute not supported - 4 | |
| #endif | |
| #if !F(unused) | |
| #error unused attribute not supported - 5 | |
| #endif | |
| #if !F(C) | |
| #error unused attribute not supported - 6 | |
| #endif | |
| int a = __has_attribute (unused) + __has_attribute (C) + D + E + F (unused) + F (C); | |
| int b = __has_attribute (unused); | |
| int c = __has_attribute (C); | |
| int d = D; | |
| int e = E; | |
| int f = F (unused); | |
| int g = F (C); | |
| int h = __has_attribute ( | |
| unused | |
| ) + __has_attribute ( | |
| C) + F ( | |
| unused | |
| ) + F | |
| ( | |
| C | |
| ); | |
| int | |
| main () | |
| { | |
| if (a != 6 || b != 1 || c != 1 || d != 1 || e != 1 || f != 1 || g != 1 || h != 4) | |
| __builtin_abort (); | |
| return 0; | |
| } |