diff options
Diffstat (limited to 'test/Lexer/has_feature_cxx0x.cpp')
-rw-r--r-- | test/Lexer/has_feature_cxx0x.cpp | 194 |
1 files changed, 134 insertions, 60 deletions
diff --git a/test/Lexer/has_feature_cxx0x.cpp b/test/Lexer/has_feature_cxx0x.cpp index 8e0222d..62a965c 100644 --- a/test/Lexer/has_feature_cxx0x.cpp +++ b/test/Lexer/has_feature_cxx0x.cpp @@ -1,5 +1,7 @@ -// RUN: %clang_cc1 -E -std=c++11 %s -o - | FileCheck --check-prefix=CHECK-0X %s -// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-0X %s +// 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++1y %s -o - | FileCheck --check-prefix=CHECK-1Y %s #if __has_feature(cxx_atomic) int has_atomic(); @@ -7,8 +9,9 @@ int has_atomic(); int no_atomic(); #endif -// CHECK-0X: has_atomic -// CHECK-NO-0X: no_atomic +// CHECK-1Y: has_atomic +// CHECK-11: has_atomic +// CHECK-NO-11: no_atomic #if __has_feature(cxx_lambdas) int has_lambdas(); @@ -16,8 +19,9 @@ int has_lambdas(); int no_lambdas(); #endif -// CHECK-0X: has_lambdas -// CHECK-NO-0X: no_lambdas +// CHECK-1Y: has_lambdas +// CHECK-11: has_lambdas +// CHECK-NO-11: no_lambdas #if __has_feature(cxx_nullptr) @@ -26,8 +30,9 @@ int has_nullptr(); int no_nullptr(); #endif -// CHECK-0X: has_nullptr -// CHECK-NO-0X: no_nullptr +// CHECK-1Y: has_nullptr +// CHECK-11: has_nullptr +// CHECK-NO-11: no_nullptr #if __has_feature(cxx_decltype) @@ -36,8 +41,9 @@ int has_decltype(); int no_decltype(); #endif -// CHECK-0X: has_decltype -// CHECK-NO-0X: no_decltype +// CHECK-1Y: has_decltype +// CHECK-11: has_decltype +// CHECK-NO-11: no_decltype #if __has_feature(cxx_decltype_incomplete_return_types) @@ -46,8 +52,9 @@ int has_decltype_incomplete_return_types(); int no_decltype_incomplete_return_types(); #endif -// CHECK-0X: has_decltype_incomplete_return_types -// CHECK-NO-0X: no_decltype_incomplete_return_types +// CHECK-1Y: 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) @@ -56,8 +63,9 @@ int has_auto_type(); int no_auto_type(); #endif -// CHECK-0X: has_auto_type -// CHECK-NO-0X: no_auto_type +// CHECK-1Y: has_auto_type +// CHECK-11: has_auto_type +// CHECK-NO-11: no_auto_type #if __has_feature(cxx_trailing_return) @@ -66,8 +74,9 @@ int has_trailing_return(); int no_trailing_return(); #endif -// CHECK-0X: has_trailing_return -// CHECK-NO-0X: no_trailing_return +// CHECK-1Y: has_trailing_return +// CHECK-11: has_trailing_return +// CHECK-NO-11: no_trailing_return #if __has_feature(cxx_attributes) @@ -76,8 +85,9 @@ int has_attributes(); int no_attributes(); #endif -// CHECK-0X: has_attributes -// CHECK-NO-0X: no_attributes +// CHECK-1Y: has_attributes +// CHECK-11: has_attributes +// CHECK-NO-11: no_attributes #if __has_feature(cxx_static_assert) @@ -86,8 +96,9 @@ int has_static_assert(); int no_static_assert(); #endif -// CHECK-0X: has_static_assert -// CHECK-NO-0X: no_static_assert +// CHECK-1Y: has_static_assert +// CHECK-11: has_static_assert +// CHECK-NO-11: no_static_assert #if __has_feature(cxx_deleted_functions) int has_deleted_functions(); @@ -95,8 +106,9 @@ int has_deleted_functions(); int no_deleted_functions(); #endif -// CHECK-0X: has_deleted_functions -// CHECK-NO-0X: no_deleted_functions +// CHECK-1Y: has_deleted_functions +// CHECK-11: has_deleted_functions +// CHECK-NO-11: no_deleted_functions #if __has_feature(cxx_defaulted_functions) int has_defaulted_functions(); @@ -104,8 +116,9 @@ int has_defaulted_functions(); int no_defaulted_functions(); #endif -// CHECK-0X: has_defaulted_functions -// CHECK-NO-0X: no_defaulted_functions +// CHECK-1Y: has_defaulted_functions +// CHECK-11: has_defaulted_functions +// CHECK-NO-11: no_defaulted_functions #if __has_feature(cxx_rvalue_references) int has_rvalue_references(); @@ -113,8 +126,9 @@ int has_rvalue_references(); int no_rvalue_references(); #endif -// CHECK-0X: has_rvalue_references -// CHECK-NO-0X: no_rvalue_references +// CHECK-1Y: has_rvalue_references +// CHECK-11: has_rvalue_references +// CHECK-NO-11: no_rvalue_references #if __has_feature(cxx_variadic_templates) @@ -123,8 +137,9 @@ int has_variadic_templates(); int no_variadic_templates(); #endif -// CHECK-0X: has_variadic_templates -// CHECK-NO-0X: no_variadic_templates +// CHECK-1Y: has_variadic_templates +// CHECK-11: has_variadic_templates +// CHECK-NO-11: no_variadic_templates #if __has_feature(cxx_inline_namespaces) @@ -133,8 +148,9 @@ int has_inline_namespaces(); int no_inline_namespaces(); #endif -// CHECK-0X: has_inline_namespaces -// CHECK-NO-0X: no_inline_namespaces +// CHECK-1Y: has_inline_namespaces +// CHECK-11: has_inline_namespaces +// CHECK-NO-11: no_inline_namespaces #if __has_feature(cxx_range_for) @@ -143,8 +159,9 @@ int has_range_for(); int no_range_for(); #endif -// CHECK-0X: has_range_for -// CHECK-NO-0X: no_range_for +// CHECK-1Y: has_range_for +// CHECK-11: has_range_for +// CHECK-NO-11: no_range_for #if __has_feature(cxx_reference_qualified_functions) @@ -153,8 +170,9 @@ int has_reference_qualified_functions(); int no_reference_qualified_functions(); #endif -// CHECK-0X: has_reference_qualified_functions -// CHECK-NO-0X: no_reference_qualified_functions +// CHECK-1Y: 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(); @@ -162,8 +180,9 @@ int has_default_function_template_args(); int no_default_function_template_args(); #endif -// CHECK-0X: has_default_function_template_args -// CHECK-NO-0X: no_default_function_template_args +// CHECK-1Y: 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(); @@ -171,8 +190,9 @@ int has_noexcept(); int no_noexcept(); #endif -// CHECK-0X: has_noexcept -// CHECK-NO-0X: no_noexcept +// CHECK-1Y: has_noexcept +// CHECK-11: has_noexcept +// CHECK-NO-11: no_noexcept #if __has_feature(cxx_override_control) int has_override_control(); @@ -180,8 +200,9 @@ int has_override_control(); int no_override_control(); #endif -// CHECK-0X: has_override_control -// CHECK-NO-0X: no_override_control +// CHECK-1Y: has_override_control +// CHECK-11: has_override_control +// CHECK-NO-11: no_override_control #if __has_feature(cxx_alias_templates) int has_alias_templates(); @@ -189,8 +210,9 @@ int has_alias_templates(); int no_alias_templates(); #endif -// CHECK-0X: has_alias_templates -// CHECK-NO-0X: no_alias_templates +// CHECK-1Y: has_alias_templates +// CHECK-11: has_alias_templates +// CHECK-NO-11: no_alias_templates #if __has_feature(cxx_implicit_moves) int has_implicit_moves(); @@ -198,8 +220,9 @@ int has_implicit_moves(); int no_implicit_moves(); #endif -// CHECK-0X: has_implicit_moves -// CHECK-NO-0X: no_implicit_moves +// CHECK-1Y: has_implicit_moves +// CHECK-11: has_implicit_moves +// CHECK-NO-11: no_implicit_moves #if __has_feature(cxx_alignas) int has_alignas(); @@ -207,8 +230,9 @@ int has_alignas(); int no_alignas(); #endif -// CHECK-0X: has_alignas -// CHECK-NO-0X: no_alignas +// CHECK-1Y: has_alignas +// CHECK-11: has_alignas +// CHECK-NO-11: no_alignas #if __has_feature(cxx_raw_string_literals) int has_raw_string_literals(); @@ -216,8 +240,9 @@ int has_raw_string_literals(); int no_raw_string_literals(); #endif -// CHECK-0X: has_raw_string_literals -// CHECK-NO-0X: no_raw_string_literals +// CHECK-1Y: 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(); @@ -225,8 +250,9 @@ int has_unicode_literals(); int no_unicode_literals(); #endif -// CHECK-0X: has_unicode_literals -// CHECK-NO-0X: no_unicode_literals +// CHECK-1Y: has_unicode_literals +// CHECK-11: has_unicode_literals +// CHECK-NO-11: no_unicode_literals #if __has_feature(cxx_constexpr) int has_constexpr(); @@ -234,8 +260,9 @@ int has_constexpr(); int no_constexpr(); #endif -// CHECK-0X: has_constexpr -// CHECK-NO-0X: no_constexpr +// CHECK-1Y: has_constexpr +// CHECK-11: has_constexpr +// CHECK-NO-11: no_constexpr #if __has_feature(cxx_generalized_initializers) int has_generalized_initializers(); @@ -243,8 +270,9 @@ int has_generalized_initializers(); int no_generalized_initializers(); #endif -// CHECK-0X: has_generalized_initializers -// CHECK-NO-0X: no_generalized_initializers +// CHECK-1Y: has_generalized_initializers +// CHECK-11: has_generalized_initializers +// CHECK-NO-11: no_generalized_initializers #if __has_feature(cxx_unrestricted_unions) int has_unrestricted_unions(); @@ -252,8 +280,9 @@ int has_unrestricted_unions(); int no_unrestricted_unions(); #endif -// CHECK-0X: has_unrestricted_unions -// CHECK-NO-0X: no_unrestricted_unions +// CHECK-1Y: has_unrestricted_unions +// CHECK-11: has_unrestricted_unions +// CHECK-NO-11: no_unrestricted_unions #if __has_feature(cxx_user_literals) int has_user_literals(); @@ -261,8 +290,9 @@ int has_user_literals(); int no_user_literals(); #endif -// CHECK-0X: has_user_literals -// CHECK-NO-0X: no_user_literals +// CHECK-1Y: 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(); @@ -270,5 +300,49 @@ int has_local_type_template_args(); int no_local_type_template_args(); #endif -// CHECK-0X: has_local_type_template_args -// CHECK-NO-0X: no_local_type_template_args +// CHECK-1Y: 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-1Y: 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-1Y: has_thread_local +// CHECK-11: has_thread_local +// CHECK-NO-11: no_thread_local +// CHECK-NO-TLS: no_thread_local + +// === C++1y features === + +#if __has_feature(cxx_binary_literals) +int has_binary_literals(); +#else +int no_binary_literals(); +#endif + +// CHECK-1Y: 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-1Y: has_aggregate_nsdmi +// CHECK-11: no_aggregate_nsdmi +// CHECK-NO-11: no_aggregate_nsdmi |