| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470 |
- // RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-11 %s
- // RUN: %clang_cc1 -E -triple armv7-apple-darwin -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-NO-TLS %s
- // RUN: %clang_cc1 -E -triple x86_64-linux-gnu %s -o - | FileCheck --check-prefix=CHECK-NO-11 %s
- // RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++14 %s -o - | FileCheck --check-prefix=CHECK-14 %s
- // RUN: %clang_cc1 -E -triple x86_64-linux-gnu -std=c++1z %s -o - | FileCheck --check-prefix=CHECK-1Z %s
- #if __has_feature(cxx_atomic)
- int has_atomic();
- #else
- int no_atomic();
- #endif
- // CHECK-1Z: has_atomic
- // CHECK-14: has_atomic
- // CHECK-11: has_atomic
- // CHECK-NO-11: no_atomic
- #if __has_feature(cxx_lambdas)
- int has_lambdas();
- #else
- int no_lambdas();
- #endif
- // CHECK-1Z: has_lambdas
- // CHECK-14: has_lambdas
- // CHECK-11: has_lambdas
- // CHECK-NO-11: no_lambdas
- #if __has_feature(cxx_nullptr)
- int has_nullptr();
- #else
- int no_nullptr();
- #endif
- // CHECK-1Z: has_nullptr
- // CHECK-14: has_nullptr
- // CHECK-11: has_nullptr
- // CHECK-NO-11: no_nullptr
- #if __has_feature(cxx_decltype)
- int has_decltype();
- #else
- int no_decltype();
- #endif
- // CHECK-1Z: has_decltype
- // CHECK-14: has_decltype
- // CHECK-11: has_decltype
- // CHECK-NO-11: no_decltype
- #if __has_feature(cxx_decltype_incomplete_return_types)
- int has_decltype_incomplete_return_types();
- #else
- int no_decltype_incomplete_return_types();
- #endif
- // CHECK-1Z: has_decltype_incomplete_return_types
- // CHECK-14: has_decltype_incomplete_return_types
- // CHECK-11: has_decltype_incomplete_return_types
- // CHECK-NO-11: no_decltype_incomplete_return_types
- #if __has_feature(cxx_auto_type)
- int has_auto_type();
- #else
- int no_auto_type();
- #endif
- // CHECK-1Z: has_auto_type
- // CHECK-14: has_auto_type
- // CHECK-11: has_auto_type
- // CHECK-NO-11: no_auto_type
- #if __has_feature(cxx_trailing_return)
- int has_trailing_return();
- #else
- int no_trailing_return();
- #endif
- // CHECK-1Z: has_trailing_return
- // CHECK-14: has_trailing_return
- // CHECK-11: has_trailing_return
- // CHECK-NO-11: no_trailing_return
- #if __has_feature(cxx_attributes)
- int has_attributes();
- #else
- int no_attributes();
- #endif
- // CHECK-1Z: has_attributes
- // CHECK-14: has_attributes
- // CHECK-11: has_attributes
- // CHECK-NO-11: no_attributes
- #if __has_feature(cxx_static_assert)
- int has_static_assert();
- #else
- int no_static_assert();
- #endif
- // CHECK-1Z: has_static_assert
- // CHECK-14: has_static_assert
- // CHECK-11: has_static_assert
- // CHECK-NO-11: no_static_assert
- #if __has_feature(cxx_deleted_functions)
- int has_deleted_functions();
- #else
- int no_deleted_functions();
- #endif
- // CHECK-1Z: has_deleted_functions
- // CHECK-14: has_deleted_functions
- // CHECK-11: has_deleted_functions
- // CHECK-NO-11: no_deleted_functions
- #if __has_feature(cxx_defaulted_functions)
- int has_defaulted_functions();
- #else
- int no_defaulted_functions();
- #endif
- // CHECK-1Z: has_defaulted_functions
- // CHECK-14: has_defaulted_functions
- // CHECK-11: has_defaulted_functions
- // CHECK-NO-11: no_defaulted_functions
- #if __has_feature(cxx_rvalue_references)
- int has_rvalue_references();
- #else
- int no_rvalue_references();
- #endif
- // CHECK-1Z: has_rvalue_references
- // CHECK-14: has_rvalue_references
- // CHECK-11: has_rvalue_references
- // CHECK-NO-11: no_rvalue_references
- #if __has_feature(cxx_variadic_templates)
- int has_variadic_templates();
- #else
- int no_variadic_templates();
- #endif
- // CHECK-1Z: has_variadic_templates
- // CHECK-14: has_variadic_templates
- // CHECK-11: has_variadic_templates
- // CHECK-NO-11: no_variadic_templates
- #if __has_feature(cxx_inline_namespaces)
- int has_inline_namespaces();
- #else
- int no_inline_namespaces();
- #endif
- // CHECK-1Z: has_inline_namespaces
- // CHECK-14: has_inline_namespaces
- // CHECK-11: has_inline_namespaces
- // CHECK-NO-11: no_inline_namespaces
- #if __has_feature(cxx_range_for)
- int has_range_for();
- #else
- int no_range_for();
- #endif
- // CHECK-1Z: has_range_for
- // CHECK-14: has_range_for
- // CHECK-11: has_range_for
- // CHECK-NO-11: no_range_for
- #if __has_feature(cxx_reference_qualified_functions)
- int has_reference_qualified_functions();
- #else
- int no_reference_qualified_functions();
- #endif
- // CHECK-1Z: has_reference_qualified_functions
- // CHECK-14: has_reference_qualified_functions
- // CHECK-11: has_reference_qualified_functions
- // CHECK-NO-11: no_reference_qualified_functions
- #if __has_feature(cxx_default_function_template_args)
- int has_default_function_template_args();
- #else
- int no_default_function_template_args();
- #endif
- // CHECK-1Z: has_default_function_template_args
- // CHECK-14: has_default_function_template_args
- // CHECK-11: has_default_function_template_args
- // CHECK-NO-11: no_default_function_template_args
- #if __has_feature(cxx_noexcept)
- int has_noexcept();
- #else
- int no_noexcept();
- #endif
- // CHECK-1Z: has_noexcept
- // CHECK-14: has_noexcept
- // CHECK-11: has_noexcept
- // CHECK-NO-11: no_noexcept
- #if __has_feature(cxx_override_control)
- int has_override_control();
- #else
- int no_override_control();
- #endif
- // CHECK-1Z: has_override_control
- // CHECK-14: has_override_control
- // CHECK-11: has_override_control
- // CHECK-NO-11: no_override_control
- #if __has_feature(cxx_alias_templates)
- int has_alias_templates();
- #else
- int no_alias_templates();
- #endif
- // CHECK-1Z: has_alias_templates
- // CHECK-14: has_alias_templates
- // CHECK-11: has_alias_templates
- // CHECK-NO-11: no_alias_templates
- #if __has_feature(cxx_implicit_moves)
- int has_implicit_moves();
- #else
- int no_implicit_moves();
- #endif
- // CHECK-1Z: has_implicit_moves
- // CHECK-14: has_implicit_moves
- // CHECK-11: has_implicit_moves
- // CHECK-NO-11: no_implicit_moves
- #if __has_feature(cxx_alignas)
- int has_alignas();
- #else
- int no_alignas();
- #endif
- // CHECK-1Z: has_alignas
- // CHECK-14: has_alignas
- // CHECK-11: has_alignas
- // CHECK-NO-11: no_alignas
- #if __has_feature(cxx_alignof)
- int has_alignof();
- #else
- int no_alignof();
- #endif
- // CHECK-1Z: has_alignof
- // CHECK-14: has_alignof
- // CHECK-11: has_alignof
- // CHECK-NO-11: no_alignof
- #if __has_feature(cxx_raw_string_literals)
- int has_raw_string_literals();
- #else
- int no_raw_string_literals();
- #endif
- // CHECK-1Z: has_raw_string_literals
- // CHECK-14: has_raw_string_literals
- // CHECK-11: has_raw_string_literals
- // CHECK-NO-11: no_raw_string_literals
- #if __has_feature(cxx_unicode_literals)
- int has_unicode_literals();
- #else
- int no_unicode_literals();
- #endif
- // CHECK-1Z: has_unicode_literals
- // CHECK-14: has_unicode_literals
- // CHECK-11: has_unicode_literals
- // CHECK-NO-11: no_unicode_literals
- #if __has_feature(cxx_constexpr)
- int has_constexpr();
- #else
- int no_constexpr();
- #endif
- // CHECK-1Z: has_constexpr
- // CHECK-14: has_constexpr
- // CHECK-11: has_constexpr
- // CHECK-NO-11: no_constexpr
- #if __has_feature(cxx_generalized_initializers)
- int has_generalized_initializers();
- #else
- int no_generalized_initializers();
- #endif
- // CHECK-1Z: has_generalized_initializers
- // CHECK-14: has_generalized_initializers
- // CHECK-11: has_generalized_initializers
- // CHECK-NO-11: no_generalized_initializers
- #if __has_feature(cxx_unrestricted_unions)
- int has_unrestricted_unions();
- #else
- int no_unrestricted_unions();
- #endif
- // CHECK-1Z: has_unrestricted_unions
- // CHECK-14: has_unrestricted_unions
- // CHECK-11: has_unrestricted_unions
- // CHECK-NO-11: no_unrestricted_unions
- #if __has_feature(cxx_user_literals)
- int has_user_literals();
- #else
- int no_user_literals();
- #endif
- // CHECK-1Z: has_user_literals
- // CHECK-14: has_user_literals
- // CHECK-11: has_user_literals
- // CHECK-NO-11: no_user_literals
- #if __has_feature(cxx_local_type_template_args)
- int has_local_type_template_args();
- #else
- int no_local_type_template_args();
- #endif
- // CHECK-1Z: has_local_type_template_args
- // CHECK-14: has_local_type_template_args
- // CHECK-11: has_local_type_template_args
- // CHECK-NO-11: no_local_type_template_args
- #if __has_feature(cxx_inheriting_constructors)
- int has_inheriting_constructors();
- #else
- int no_inheriting_constructors();
- #endif
- // CHECK-1Z: has_inheriting_constructors
- // CHECK-14: has_inheriting_constructors
- // CHECK-11: has_inheriting_constructors
- // CHECK-NO-11: no_inheriting_constructors
- #if __has_feature(cxx_thread_local)
- int has_thread_local();
- #else
- int no_thread_local();
- #endif
- // CHECK-1Z: has_thread_local
- // CHECK-14: has_thread_local
- // CHECK-11: has_thread_local
- // CHECK-NO-11: no_thread_local
- // CHECK-NO-TLS: no_thread_local
- // === C++14 features ===
- #if __has_feature(cxx_binary_literals)
- int has_binary_literals();
- #else
- int no_binary_literals();
- #endif
- // CHECK-1Z: has_binary_literals
- // CHECK-14: has_binary_literals
- // CHECK-11: no_binary_literals
- // CHECK-NO-11: no_binary_literals
- #if __has_feature(cxx_aggregate_nsdmi)
- int has_aggregate_nsdmi();
- #else
- int no_aggregate_nsdmi();
- #endif
- // CHECK-1Z: has_aggregate_nsdmi
- // CHECK-14: has_aggregate_nsdmi
- // CHECK-11: no_aggregate_nsdmi
- // CHECK-NO-11: no_aggregate_nsdmi
- #if __has_feature(cxx_return_type_deduction)
- int has_return_type_deduction();
- #else
- int no_return_type_deduction();
- #endif
- // CHECK-1Z: has_return_type_deduction
- // CHECK-14: has_return_type_deduction
- // CHECK-11: no_return_type_deduction
- // CHECK-NO-11: no_return_type_deduction
- #if __has_feature(cxx_contextual_conversions)
- int has_contextual_conversions();
- #else
- int no_contextual_conversions();
- #endif
- // CHECK-1Z: has_contextual_conversions
- // CHECK-14: has_contextual_conversions
- // CHECK-11: no_contextual_conversions
- // CHECK-NO-11: no_contextual_conversions
- #if __has_feature(cxx_relaxed_constexpr)
- int has_relaxed_constexpr();
- #else
- int no_relaxed_constexpr();
- #endif
- // CHECK-1Z: has_relaxed_constexpr
- // CHECK-14: has_relaxed_constexpr
- // CHECK-11: no_relaxed_constexpr
- // CHECK-NO-11: no_relaxed_constexpr
- #if __has_feature(cxx_variable_templates)
- int has_variable_templates();
- #else
- int no_variable_templates();
- #endif
- // CHECK-1Z: has_variable_templates
- // CHECK-14: has_variable_templates
- // CHECK-11: no_variable_templates
- // CHECK-NO-11: no_variable_templates
- #if __has_feature(cxx_init_captures)
- int has_init_captures();
- #else
- int no_init_captures();
- #endif
- // CHECK-1Z: has_init_captures
- // CHECK-14: has_init_captures
- // CHECK-11: no_init_captures
- // CHECK-NO-11: no_init_captures
- #if __has_feature(cxx_decltype_auto)
- int has_decltype_auto();
- #else
- int no_decltype_auto();
- #endif
- // CHECK-1Z: has_decltype_auto
- // CHECK-14: has_decltype_auto
- // CHECK-11: no_decltype_auto
- // CHECK-NO-11: no_decltype_auto
- #if __has_feature(cxx_generic_lambdas)
- int has_generic_lambdas();
- #else
- int no_generic_lambdas();
- #endif
- // CHECK-1Z: has_generic_lambdas
- // CHECK-14: has_generic_lambdas
- // CHECK-11: no_generic_lambdas
- // CHECK-NO-11: no_generic_lambdas
|