[libcxx-commits] [libcxx] 4dbfde6 - [libc++] Remove a few GCC workarounds that aren't needed anymore (#156290)

via libcxx-commits libcxx-commits at lists.llvm.org
Mon Sep 1 07:36:59 PDT 2025


Author: Nikolas Klauser
Date: 2025-09-01T16:36:55+02:00
New Revision: 4dbfde6b69ccba47fc5fc573f65d69c3ec79d733

URL: https://github.com/llvm/llvm-project/commit/4dbfde6b69ccba47fc5fc573f65d69c3ec79d733
DIFF: https://github.com/llvm/llvm-project/commit/4dbfde6b69ccba47fc5fc573f65d69c3ec79d733.diff

LOG: [libc++] Remove a few GCC workarounds that aren't needed anymore (#156290)

Added: 
    

Modified: 
    libcxx/test/std/iterators/iterator.requirements/indirectcallable/indirectinvocable/indirect_result_t.compile.pass.cpp
    libcxx/test/std/utilities/memory/specialized.algorithms/specialized.destroy/ranges_destroy_at.pass.cpp
    libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp

Removed: 
    


################################################################################
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 1dfdc609e6366..e999b20345a54 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, int*>);         // 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<class T> struct Holder { T t; };
 static_assert(std::same_as<std::indirect_result_t<int                (&)(int), int*>, int>);
@@ -45,4 +43,3 @@ static_assert(std::same_as<std::indirect_result_t<int                (&)(Holder<
 static_assert(std::same_as<std::indirect_result_t<Holder<Incomplete>&(&)(Holder<Incomplete>*), Holder<Incomplete>**>, Holder<Incomplete>&>);
 static_assert(std::same_as<std::indirect_result_t<Holder<Incomplete>*(&)(Holder<Incomplete>*), Holder<Incomplete>**>, Holder<Incomplete>*>);
 #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 36b3aa8955caf..86e08284a03c8 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 b96c9b11e2962..804650fde3f3e 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<ConstFunction, Function>::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<ConstFunction, Function*>::value), "");
     static_assert((!std::is_convertible<ConstFunction, Function&>::value), "");
     static_assert((!std::is_convertible<ConstFunction, Function&&>::value), "");
-#endif
     static_assert((!std::is_convertible<Function*, ConstFunction>::value), "");
     static_assert((!std::is_convertible<Function&, ConstFunction>::value), "");
     static_assert((!std::is_convertible<ConstFunction, ConstFunction>::value), "");


        


More information about the libcxx-commits mailing list