From 4dbfde6b69ccba47fc5fc573f65d69c3ec79d733 Mon Sep 17 00:00:00 2001 From: Nikolas Klauser Date: Mon, 1 Sep 2025 16:36:55 +0200 Subject: [PATCH] [libc++] Remove a few GCC workarounds that aren't needed anymore (#156290) --- .../indirectinvocable/indirect_result_t.compile.pass.cpp | 3 --- .../specialized.destroy/ranges_destroy_at.pass.cpp | 5 +---- .../test/std/utilities/meta/meta.rel/is_convertible.pass.cpp | 3 --- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/libcxx/test/std/iterators/iterator.requirements/indirectcallable/indirectinvocable/indirect_result_t.compile.pass.cpp b/libcxx/test/std/iterators/iterator.requirements/indirectcallable/indirectinvocable/indirect_result_t.compile.pass.cpp index 1dfdc609e636..e999b20345a5 100644 --- a/libcxx/test/std/iterators/iterator.requirements/indirectcallable/indirectinvocable/indirect_result_t.compile.pass.cpp +++ b/libcxx/test/std/iterators/iterator.requirements/indirectcallable/indirectinvocable/indirect_result_t.compile.pass.cpp @@ -34,8 +34,6 @@ static_assert(!has_indirect_result); // int isn't invocable // Test ADL-proofing (P2538R1) #if TEST_STD_VER >= 26 || defined(_LIBCPP_VERSION) -// TODO: Enable this on GCC once this bug is fixed: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111419 -#ifndef TEST_COMPILER_GCC struct Incomplete; template struct Holder { T t; }; static_assert(std::same_as, int>); @@ -45,4 +43,3 @@ static_assert(std::same_as&(&)(Holder*), Holder**>, Holder&>); static_assert(std::same_as*(&)(Holder*), Holder**>, Holder*>); #endif -#endif diff --git a/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.destroy/ranges_destroy_at.pass.cpp b/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.destroy/ranges_destroy_at.pass.cpp index 36b3aa8955ca..86e08284a03c 100644 --- a/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.destroy/ranges_destroy_at.pass.cpp +++ b/libcxx/test/std/utilities/memory/specialized.algorithms/specialized.destroy/ranges_destroy_at.pass.cpp @@ -52,10 +52,7 @@ struct VirtualCountedBase { struct VirtualCountedDerived : VirtualCountedBase { constexpr VirtualCountedDerived(int& count_ref) : VirtualCountedBase(count_ref) {} - - // Without a definition, GCC gives an error when the destructor is invoked in a constexpr context (see - // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93413). - constexpr ~VirtualCountedDerived() override {} + constexpr ~VirtualCountedDerived() override = default; }; constexpr bool test() { diff --git a/libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp b/libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp index b96c9b11e296..804650fde3f3 100644 --- a/libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp +++ b/libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp @@ -117,12 +117,9 @@ int main(int, char**) // Non-referencable function type static_assert((!std::is_convertible::value), ""); -// TODO(LLVM-19): Re-enable this once we switch to GCC 14. This is https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109680 -#ifndef TEST_COMPILER_GCC static_assert((!std::is_convertible::value), ""); static_assert((!std::is_convertible::value), ""); static_assert((!std::is_convertible::value), ""); -#endif static_assert((!std::is_convertible::value), ""); static_assert((!std::is_convertible::value), ""); static_assert((!std::is_convertible::value), "");