1*67e74705SXin Li // RUN: %clang_cc1 -std=c99 -E %s -o - | FileCheck --check-prefix=CHECK-PED-NONE %s 2*67e74705SXin Li // RUN: %clang_cc1 -std=c99 -pedantic-errors -E %s -o - | FileCheck --check-prefix=CHECK-PED-ERR %s 3*67e74705SXin Li 4*67e74705SXin Li // CHECK-PED-NONE: no_dummy_extension 5*67e74705SXin Li #if !__has_extension(dummy_extension) 6*67e74705SXin Li int no_dummy_extension(); 7*67e74705SXin Li #endif 8*67e74705SXin Li 9*67e74705SXin Li // Arbitrary feature to test that has_extension is a superset of has_feature 10*67e74705SXin Li // CHECK-PED-NONE: attribute_overloadable 11*67e74705SXin Li #if __has_extension(attribute_overloadable) 12*67e74705SXin Li int attribute_overloadable(); 13*67e74705SXin Li #endif 14*67e74705SXin Li 15*67e74705SXin Li // CHECK-PED-NONE: has_c_static_assert 16*67e74705SXin Li // CHECK-PED-ERR: no_c_static_assert 17*67e74705SXin Li #if __has_extension(c_static_assert) 18*67e74705SXin Li int has_c_static_assert(); 19*67e74705SXin Li #else 20*67e74705SXin Li int no_c_static_assert(); 21*67e74705SXin Li #endif 22*67e74705SXin Li 23*67e74705SXin Li // CHECK-PED-NONE: has_c_generic_selections 24*67e74705SXin Li // CHECK-PED-ERR: no_c_generic_selections 25*67e74705SXin Li #if __has_extension(c_generic_selections) 26*67e74705SXin Li int has_c_generic_selections(); 27*67e74705SXin Li #else 28*67e74705SXin Li int no_c_generic_selections(); 29*67e74705SXin Li #endif 30*67e74705SXin Li 31*67e74705SXin Li // CHECK-PED-NONE: has_c_alignas 32*67e74705SXin Li // CHECK-PED-ERR: no_c_alignas 33*67e74705SXin Li #if __has_extension(c_alignas) 34*67e74705SXin Li int has_c_alignas(); 35*67e74705SXin Li #else 36*67e74705SXin Li int no_c_alignas(); 37*67e74705SXin Li #endif 38*67e74705SXin Li 39*67e74705SXin Li // CHECK-PED-NONE: has_c_alignof 40*67e74705SXin Li // CHECK-PED-ERR: no_c_alignof 41*67e74705SXin Li #if __has_extension(c_alignof) 42*67e74705SXin Li int has_c_alignof(); 43*67e74705SXin Li #else 44*67e74705SXin Li int no_c_alignof(); 45*67e74705SXin Li #endif 46*67e74705SXin Li 47*67e74705SXin Li // Arbitrary feature to test that the extension name can be surrounded with 48*67e74705SXin Li // double underscores. 49*67e74705SXin Li // CHECK-PED-NONE: has_double_underscores 50*67e74705SXin Li #if __has_extension(__c_alignas__) 51*67e74705SXin Li int has_double_underscores(); 52*67e74705SXin Li #endif 53