Skip to content

Commit 4e995ac

Browse files
committed
Cleanup + FTM
1 parent 87c907e commit 4e995ac

File tree

3 files changed

+9
-50
lines changed

3 files changed

+9
-50
lines changed

libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_implicit_lifetime.pass.cpp

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,8 @@ struct StructWithZeroSizedArray {
106106
};
107107

108108
#ifdef TEST_COMPILER_CLANG
109-
// typedef int *align_value_int __attribute__((align_value(16)));
110109
using AlignValueInt = int* __attribute__((align_value(16)));
111-
// typedef float float4 __attribute__((ext_vector_type(4)));
112-
using Float4 = float __attribute__((ext_vector_type(4)));
110+
using Float4 = float __attribute__((ext_vector_type(4)));
113111

114112
struct [[clang::enforce_read_only_placement]] EnforceReadOnlyPlacement {};
115113
struct [[clang::type_visibility("hidden")]] TypeVisibility {};
@@ -146,22 +144,6 @@ constexpr void test_is_implicit_lifetime() {
146144
test_is_implicit_lifetime<T[94], true>();
147145
}
148146

149-
// #ifdef TEST_COMPILER_CLANG
150-
// // Test language extensions: attributes
151-
// template <typename T>
152-
// constexpr void test_is_implicit_lifetime_with_attributes() {
153-
// test_is_implicit_lifetime<T [[clang::annotate_type("category2")]]*, true>();
154-
// test_is_implicit_lifetime<T __attribute__((btf_type_tag("user")))*, true>();
155-
// static_assert(__builtin_is_implicit_lifetime(int __attribute__((btf_type_tag("user"))) *));
156-
157-
// test_is_implicit_lifetime<T __attribute__((noderef))*, true>();
158-
159-
// test_is_implicit_lifetime<T* _Nonnull, true>();
160-
// test_is_implicit_lifetime<T* _Null_unspecified, true>();
161-
// test_is_implicit_lifetime<T* _Nullable, true>();
162-
// }
163-
// #endif // TEST_COMPILER_CLANG
164-
165147
constexpr bool test() {
166148
// Standard fundamental C++ types
167149

@@ -188,14 +170,6 @@ constexpr bool test() {
188170
test_is_implicit_lifetime<char16_t>();
189171
test_is_implicit_lifetime<char32_t>();
190172

191-
// test_is_implicit_lifetime<int, true>();
192-
// test_is_implicit_lifetime<int&, false>();
193-
// test_is_implicit_lifetime<int&&, false>();
194-
195-
// test_is_implicit_lifetime<int*, true>();
196-
// test_is_implicit_lifetime<int[], true>();
197-
// test_is_implicit_lifetime<int[0], true>();
198-
// test_is_implicit_lifetime<int[94], true>();
199173
test_is_implicit_lifetime<short>();
200174
test_is_implicit_lifetime<short int>();
201175
test_is_implicit_lifetime<signed short>();
@@ -238,12 +212,6 @@ constexpr bool test() {
238212
test_is_implicit_lifetime<void (&)(), false>();
239213
test_is_implicit_lifetime<void (*)(), true>();
240214

241-
// test_is_implicit_lifetime<int UserDeclaredDestructor::*, true>();
242-
// test_is_implicit_lifetime<int (UserDeclaredDestructor::*)(), true>();
243-
// test_is_implicit_lifetime<int (UserDeclaredDestructor::*)() const, true>();
244-
// test_is_implicit_lifetime<int (UserDeclaredDestructor::*)()&, true>();
245-
// test_is_implicit_lifetime<int (UserDeclaredDestructor::*)()&&, true>();
246-
247215
// Implicit-lifetime class types
248216

249217
test_is_implicit_lifetime<EmptyStruct>();
@@ -301,10 +269,6 @@ constexpr bool test() {
301269
test_is_implicit_lifetime<_Complex double>();
302270
test_is_implicit_lifetime<_Complex long double>();
303271

304-
// test_is_implicit_lifetime<_Imaginary float>();
305-
// test_is_implicit_lifetime<_Imaginary double>();
306-
// test_is_implicit_lifetime<_Imaginary long double>();
307-
308272
// Standard C23 types
309273

310274
#ifdef TEST_COMPILER_CLANG
@@ -337,9 +301,6 @@ constexpr bool test() {
337301
test_is_implicit_lifetime<EnforceReadOnlyPlacement, true>();
338302
test_is_implicit_lifetime<TypeVisibility, true>();
339303

340-
// test_is_implicit_lifetime_with_attributes<int>();
341-
// test_is_implicit_lifetime_with_attributes<float>();
342-
343304
test_is_implicit_lifetime<int [[clang::annotate_type("category2")]]*, true>();
344305
test_is_implicit_lifetime<int __attribute__((btf_type_tag("user")))*, true>();
345306

libcxx/test/std/utilities/meta/meta.unary/meta.unary.prop/is_implicit_lifetime.verify.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,3 @@ static_assert(!std::is_implicit_lifetime<IncompleteStruct>::value);
2525

2626
// expected-error@*:* {{atomic types are not supported in '__builtin_is_implicit_lifetime'}}
2727
static_assert(!std::is_implicit_lifetime<_Atomic int>::value);
28-
29-
#if 0
30-
// FIXME: "variable length arrays in C++ are a Clang extension"
31-
void test(int n) {
32-
int varArr[n];
33-
using VarArrT = decltype(varArr);
34-
// expected-error@*:* {{variable length arrays are not supported in '__builtin_is_implicit_lifetime'}}
35-
static_assert(std::is_implicit_lifetime<VarArrT>::value);
36-
}
37-
#endif

libcxx/utils/generate_feature_test_macro_components.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -742,6 +742,14 @@ def add_version_header(tc):
742742
"values": {"c++14": 201402},
743743
"headers": ["type_traits"],
744744
},
745+
{
746+
"name": "__cpp_lib_is_implicit_lifetime",
747+
"values": {"c++23": 202302},
748+
"headers": ["type_traits"],
749+
"test_suite_guard": "__has_builtin(__builtin_is_implicit_lifetime)",
750+
"libcxx_guard": "__has_builtin(__builtin_is_implicit_lifetime)",
751+
"unimplemented": True,
752+
},
745753
{
746754
"name": "__cpp_lib_is_invocable",
747755
"values": {"c++17": 201703},

0 commit comments

Comments
 (0)