| /* 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; |
| } |