| /* { dg-do compile } */ |
| /* Test __has_{feature,extension} for generic features. */ |
| |
| #define FEAT(x) (__has_feature (x) && __has_extension (x)) |
| #define EXT(x) (__has_extension (x) && !__has_feature (x)) |
| |
| #if __has_feature (unknown_feature) || __has_extension (unknown_feature) |
| #error unknown feature is known! |
| #endif |
| |
| #if !EXT (gnu_asm_goto_with_outputs) |
| #error |
| #endif |
| |
| #if !EXT (__gnu_asm_goto_with_outputs__) |
| #error |
| #endif |
| |
| #if !EXT (gnu_asm_goto_with_outputs_full) |
| #error |
| #endif |
| |
| #if !EXT (__gnu_asm_goto_with_outputs_full__) |
| #error |
| #endif |
| |
| #if !FEAT (enumerator_attributes) |
| #error |
| #endif |
| |
| #if !FEAT (__enumerator_attributes__) |
| #error |
| #endif |
| |
| #if !FEAT (attribute_deprecated_with_message) |
| #error |
| #endif |
| |
| #if !FEAT (__attribute_deprecated_with_message__) |
| #error |
| #endif |
| |
| #if !FEAT (attribute_unavailable_with_message) |
| #error |
| #endif |
| |
| #if !FEAT (__attribute_unavailable_with_message__) |
| #error |
| #endif |
| |
| #if !FEAT (tls) |
| #error |
| #endif |
| |
| #if !FEAT(__tls__) |
| #error |
| #endif |
| |
| #if defined (__SANITIZE_ADDRESS__) != __has_feature (address_sanitizer) |
| #error |
| #endif |
| |
| #if defined (__SANITIZE_ADDRESS__) != __has_extension (address_sanitizer) |
| #error |
| #endif |
| |
| #if defined (__SANITIZE_THREAD__) != __has_feature (thread_sanitizer) |
| #error |
| #endif |
| |
| #if defined (__SANITIZE_THREAD__) != __has_extension (thread_sanitizer) |
| #error |
| #endif |