forked from OSchip/llvm-project
PR19698, PR19674: enable __has_feature checks for cxx_generic_lambdas and
cxx_decltype_auto, and fix documentation of cxx_generic_lambdas and cxx_init_captures to specify the right feature-check name. llvm-svn: 208445
This commit is contained in:
parent
65a78b5d9b
commit
6d54014144
|
@ -750,16 +750,16 @@ for default initializers in aggregate members is enabled.
|
|||
C++1y generalized lambda capture
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Use ``__has_feature(cxx_init_capture)`` or
|
||||
``__has_extension(cxx_init_capture)`` to determine if support for
|
||||
Use ``__has_feature(cxx_init_captures)`` or
|
||||
``__has_extension(cxx_init_captures)`` to determine if support for
|
||||
lambda captures with explicit initializers is enabled
|
||||
(for instance, ``[n(0)] { return ++n; }``).
|
||||
|
||||
C++1y generic lambdas
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Use ``__has_feature(cxx_generic_lambda)`` or
|
||||
``__has_extension(cxx_generic_lambda)`` to determine if support for generic
|
||||
Use ``__has_feature(cxx_generic_lambdas)`` or
|
||||
``__has_extension(cxx_generic_lambdas)`` to determine if support for generic
|
||||
(polymorphic) lambdas is enabled
|
||||
(for instance, ``[] (auto x) { return x + 1; }``).
|
||||
|
||||
|
|
|
@ -918,7 +918,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
|
|||
.Case("c_atomic", LangOpts.C11)
|
||||
.Case("c_generic_selections", LangOpts.C11)
|
||||
.Case("c_static_assert", LangOpts.C11)
|
||||
.Case("c_thread_local",
|
||||
.Case("c_thread_local",
|
||||
LangOpts.C11 && PP.getTargetInfo().isTLSSupported())
|
||||
// C++11 features
|
||||
.Case("cxx_access_control_sfinae", LangOpts.CPlusPlus11)
|
||||
|
@ -962,12 +962,17 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
|
|||
.Case("cxx_aggregate_nsdmi", LangOpts.CPlusPlus1y)
|
||||
.Case("cxx_binary_literals", LangOpts.CPlusPlus1y)
|
||||
.Case("cxx_contextual_conversions", LangOpts.CPlusPlus1y)
|
||||
//.Case("cxx_generic_lambdas", LangOpts.CPlusPlus1y)
|
||||
.Case("cxx_decltype_auto", LangOpts.CPlusPlus1y)
|
||||
.Case("cxx_generic_lambdas", LangOpts.CPlusPlus1y)
|
||||
.Case("cxx_init_captures", LangOpts.CPlusPlus1y)
|
||||
.Case("cxx_relaxed_constexpr", LangOpts.CPlusPlus1y)
|
||||
.Case("cxx_return_type_deduction", LangOpts.CPlusPlus1y)
|
||||
//.Case("cxx_runtime_arrays", LangOpts.CPlusPlus1y)
|
||||
.Case("cxx_variable_templates", LangOpts.CPlusPlus1y)
|
||||
// C++ TSes
|
||||
//.Case("cxx_runtime_arrays", LangOpts.CPlusPlusTSArrays)
|
||||
//.Case("cxx_concepts", LangOpts.CPlusPlusTSConcepts)
|
||||
// FIXME: Should this be __has_feature or __has_extension?
|
||||
//.Case("raw_invocation_type", LangOpts.CPlusPlus)
|
||||
// Type traits
|
||||
.Case("has_nothrow_assign", LangOpts.CPlusPlus)
|
||||
.Case("has_nothrow_copy", LangOpts.CPlusPlus)
|
||||
|
|
|
@ -396,3 +396,23 @@ int no_init_captures();
|
|||
// CHECK-1Y: 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-1Y: 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-1Y: has_generic_lambdas
|
||||
// CHECK-11: no_generic_lambdas
|
||||
// CHECK-NO-11: no_generic_lambdas
|
||||
|
|
Loading…
Reference in New Issue