[libcxx-commits] [libcxx] f29c549 - [libc++] Fix problems with GCC 13 and switch to it in the CI

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Mon Aug 14 16:54:56 PDT 2023


Author: Nikolas Klauser
Date: 2023-08-14T16:54:50-07:00
New Revision: f29c54998d236c36f047d39aee76c79f933ba363

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

LOG: [libc++] Fix problems with GCC 13 and switch to it in the CI

Reviewed By: #libc, #libc_abi, Mordante

Spies: arphaman, Mordante, libcxx-commits, arichardson

Differential Revision: https://reviews.llvm.org/D157060

Added: 
    

Modified: 
    libcxx/include/__type_traits/is_nothrow_constructible.h
    libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
    libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp
    libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp
    libcxx/test/std/utilities/meta/meta.rel/is_convertible.pass.cpp
    libcxx/test/std/utilities/meta/meta.rel/is_convertible_fallback.pass.cpp
    libcxx/utils/ci/buildkite-pipeline.yml
    libcxx/utils/libcxx/test/params.py
    libcxxabi/test/catch_member_function_pointer_02.pass.cpp

Removed: 
    


################################################################################
diff  --git a/libcxx/include/__type_traits/is_nothrow_constructible.h b/libcxx/include/__type_traits/is_nothrow_constructible.h
index d4686d89fd96e9..4949062433b783 100644
--- a/libcxx/include/__type_traits/is_nothrow_constructible.h
+++ b/libcxx/include/__type_traits/is_nothrow_constructible.h
@@ -22,7 +22,8 @@
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
-#if __has_builtin(__is_nothrow_constructible)
+// GCC is disabled due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106611
+#if __has_builtin(__is_nothrow_constructible) && !defined(_LIBCPP_COMPILER_GCC)
 
 template < class _Tp, class... _Args>
 struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible

diff  --git a/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp b/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
index 34fbed45e51bd3..12851a5baee7f5 100644
--- a/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
+++ b/libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
@@ -15,7 +15,7 @@
 // UNSUPPORTED: clang-15, clang-16, clang-17, clang-18
 
 // TODO: Investigate this failure on GCC 12 (in Ubuntu Jammy)
-// UNSUPPORTED: gcc-12
+// UNSUPPORTED: gcc-12, gcc-13
 
 // RUN: %{cxx} %{flags} %s -o %t.exe %{compile_flags} -g %{link_flags}
 // Ensure locale-independence for unicode tests.

diff  --git a/libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp b/libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp
index 1411796d659638..77c88873073c91 100644
--- a/libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp
+++ b/libcxx/test/std/algorithms/robust_against_adl.compile.pass.cpp
@@ -11,7 +11,7 @@
 // https://buildkite.com/llvm-project/libcxx-ci/builds/15823#0184fc0b-d56b-4774-9e1d-35fe24e09e37
 // It seems like the CI gcc version is buggy. I can't reproduce the failure on my system or on
 // godbolt (https://godbolt.org/z/rsPv8e8fn).
-// UNSUPPORTED: gcc-12
+// UNSUPPORTED: gcc-12, gcc-13
 
 #include <algorithm>
 #include <cstddef>

diff  --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp
index 70ddab63f0c415..84e2c8ab1af0cc 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char_array.pass.cpp
@@ -7,7 +7,7 @@
 
 // UNSUPPORTED: c++03, c++11, c++14, c++17
 // TODO FMT __builtin_memcpy isn't constexpr in GCC
-// UNSUPPORTED: gcc-12
+// UNSUPPORTED: gcc-12, gcc-13
 
 // <format>
 

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 804650fde3f3e6..b96c9b11e29623 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,9 +117,12 @@ 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), "");

diff  --git a/libcxx/test/std/utilities/meta/meta.rel/is_convertible_fallback.pass.cpp b/libcxx/test/std/utilities/meta/meta.rel/is_convertible_fallback.pass.cpp
index 28495cfebd45c6..6e420d63dbd594 100644
--- a/libcxx/test/std/utilities/meta/meta.rel/is_convertible_fallback.pass.cpp
+++ b/libcxx/test/std/utilities/meta/meta.rel/is_convertible_fallback.pass.cpp
@@ -10,6 +10,8 @@
 
 // ADDITIONAL_COMPILE_FLAGS: -D _LIBCPP_USE_IS_CONVERTIBLE_FALLBACK
 
+// UNSUPPORTED: gcc-13
+
 // type_traits
 
 // is_convertible

diff  --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml
index bda040285bb292..83a55421456604 100644
--- a/libcxx/utils/ci/buildkite-pipeline.yml
+++ b/libcxx/utils/ci/buildkite-pipeline.yml
@@ -28,7 +28,7 @@ env:
     # LLVM RELEASE bump remove compiler ToT - 3, e.g. "Clang 15"
     LLVM_STABLE_VERSION: "16" # Used for tooling, update after the RELEASE.
     LLVM_HEAD_VERSION: "18"   # Used compiler, update POST-BRANCH.
-    GCC_STABLE_VERSION: "12"
+    GCC_STABLE_VERSION: "13"
 steps:
   #
   # Light pre-commit tests for things like formatting or when people forget

diff  --git a/libcxx/utils/libcxx/test/params.py b/libcxx/utils/libcxx/test/params.py
index d976a1b278b8e4..b957f92f57c59f 100644
--- a/libcxx/utils/libcxx/test/params.py
+++ b/libcxx/utils/libcxx/test/params.py
@@ -57,6 +57,14 @@
     # Don't fail compilation in case the compiler fails to perform the requested
     # loop vectorization.
     "-Wno-pass-failed",
+
+    # TODO: Find out why GCC warns in lots of places (is this a problem with always_inline?)
+    "-Wno-dangling-reference",
+    "-Wno-mismatched-new-delete",
+    "-Wno-redundant-move",
+
+    # This doesn't make sense in real code, but we have to test it because the standard requires us to not break
+    "-Wno-self-move",
 ]
 
 _allStandards = ["c++03", "c++11", "c++14", "c++17", "c++20", "c++23", "c++26"]

diff  --git a/libcxxabi/test/catch_member_function_pointer_02.pass.cpp b/libcxxabi/test/catch_member_function_pointer_02.pass.cpp
index 3236f9aae1de11..667447db1e68a9 100644
--- a/libcxxabi/test/catch_member_function_pointer_02.pass.cpp
+++ b/libcxxabi/test/catch_member_function_pointer_02.pass.cpp
@@ -15,7 +15,7 @@
 
 // GCC supports noexcept function types but this test still fails.
 // This is likely a bug in their implementation. Investigation needed.
-// XFAIL: gcc-11, gcc-12
+// XFAIL: gcc-11, gcc-12, gcc-13
 
 #include <cassert>
 


        


More information about the libcxx-commits mailing list