[libcxx-commits] [libcxxabi] 0cf914a - [libcxx][libc] update LLVM-libc test status (#201236)

via libcxx-commits libcxx-commits at lists.llvm.org
Wed Jul 15 09:58:54 PDT 2026


Author: Michael Jones
Date: 2026-07-15T09:58:49-07:00
New Revision: 0cf914adef4b0f1f5251354b91f5c709b95b1b1e

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

LOG: [libcxx][libc] update LLVM-libc test status (#201236)

This update removes some unnecessary carveouts, marks some newly
XFAILing tests, and unmarks some now passing tests.

With this change the status of tests is:
Total Discovered Tests: 11471
  Unsupported      : 2098 (18.29%)
  Passed           : 9260 (80.73%)
  Expectedly Failed:  113 (0.99%)

Assisted-by: Automated tooling, human reviewed.

Added: 
    

Modified: 
    libcxx/cmake/caches/Generic-llvm-libc.cmake
    libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
    libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp
    libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp
    libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp
    libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
    libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp
    libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp
    libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp
    libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
    libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
    libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp
    libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp
    libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp
    libcxx/test/std/strings/c.strings/cwchar.pass.cpp
    libcxx/test/std/strings/c.strings/cwctype.pass.cpp
    libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
    libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp
    libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp
    libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp
    libcxxabi/test/configs/llvm-libc++abi-llvm-libc.cfg.in

Removed: 
    


################################################################################
diff  --git a/libcxx/cmake/caches/Generic-llvm-libc.cmake b/libcxx/cmake/caches/Generic-llvm-libc.cmake
index 8e8a2699858b3..dce7fb73ff8b3 100644
--- a/libcxx/cmake/caches/Generic-llvm-libc.cmake
+++ b/libcxx/cmake/caches/Generic-llvm-libc.cmake
@@ -31,20 +31,10 @@ set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
 set(LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
 set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
 
-# Not yet fully implemented.
-set(LIBCXX_ENABLE_LOCALIZATION OFF CACHE BOOL "")
-set(LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
-
 # Still missing some components.
 set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
 
-# Still needs validation before turning on.
-set(LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
-
-# Still missing some components.
-set(LIBCXX_ENABLE_MONOTONIC_CLOCK OFF CACHE BOOL "")
-
-# requires LIBCXX_ENABLE_MONOTONIC_CLOCK=ON
+# blocked on issues with atomic
 set(LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
 set(LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "")
 
@@ -58,5 +48,6 @@ set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
 set(LLVM_ENABLE_RUNTIMES "compiler-rt;libc;libunwind;libcxxabi;libcxx" CACHE STRING "")
 set(LLVM_LIBC_FULL_BUILD ON CACHE BOOL "")
 set(LLVM_LIBC_INCLUDE_SCUDO ON CACHE BOOL "")
+set(LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS ON CACHE BOOL "")
 set(COMPILER_RT_BUILD_GWP_ASAN OFF CACHE BOOL "")
 set(COMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC ON CACHE BOOL "")

diff  --git a/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in b/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
index cae8a8007214e..9dbf8a98dd5e4 100644
--- a/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
+++ b/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
@@ -10,7 +10,7 @@ config.substitutions.append(('%{compile_flags}',
     '-nostdlibinc -I %{include-dir} -I %{target-include-dir} -isystem @CMAKE_BINARY_DIR@/libc/include -I %{libcxx-dir}/test/support -idirafter @LIBC_KERNEL_HEADERS@'
 ))
 config.substitutions.append(('%{link_flags}',
-    '-nodefaultlibs -nostartfiles -L %{lib-dir} -lc++ -lc++abi @CMAKE_BINARY_DIR@/libc/startup/linux/crt1.o @CMAKE_BINARY_DIR@/libc/lib/libc.a @CMAKE_BINARY_DIR@/libc/lib/libm.a -static -fno-use-cxa-atexit @CMAKE_BINARY_DIR@/compiler-rt/lib/linux/libclang_rt.builtins-x86_64.a'
+    '-nodefaultlibs -nostartfiles -L %{lib-dir} -lc++ -lc++abi @CMAKE_BINARY_DIR@/libc/startup/linux/crt1.o -Wl,--start-group @CMAKE_BINARY_DIR@/libc/lib/libc.a @CMAKE_BINARY_DIR@/libc/lib/libm.a -static -fno-use-cxa-atexit @CMAKE_BINARY_DIR@/compiler-rt/lib/linux/libclang_rt.builtins-x86_64.a -Wl,--end-group -Wl,--defsym,__dso_handle=0'
 ))
 config.substitutions.append(('%{exec}',
     '%{executor} --execdir %{temp} -- '

diff  --git a/libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp b/libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp
index 39a51352eadd9..fb26bdf49cc3c 100644
--- a/libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp
+++ b/libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp
@@ -29,9 +29,6 @@
 //       spuriously fail.
 // REQUIRES: no-exceptions
 
-// No member named 'regex'.
-// XFAIL: LLVM-LIBC-FIXME
-
 #include <cstddef>
 #include <new>
 

diff  --git a/libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp b/libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp
index 339e756b86fc8..02b20a8c98b21 100644
--- a/libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp
+++ b/libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp
@@ -22,9 +22,6 @@
 // REQUIRES: no-exceptions
 // UNSUPPORTED: c++03, c++11, c++14
 
-// No member named 'regex'.
-// XFAIL: LLVM-LIBC-FIXME
-
 #include <cstddef>
 #include <limits>
 #include <new>

diff  --git a/libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp b/libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp
index 66251648bd50c..1df75885e4347 100644
--- a/libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp
+++ b/libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp
@@ -20,6 +20,8 @@
 // Test that this function works with threads that were not created by
 // std::thread. See https://llvm.org/PR30202
 
+// Segfault
+// XFAIL: LLVM-LIBC-FIXME
 
 #include <condition_variable>
 #include <mutex>

diff  --git a/libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp b/libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
index 96ec3332519bc..5c5c0fed58726 100644
--- a/libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
+++ b/libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
@@ -16,6 +16,9 @@
 
 // native_handle_type native_handle();
 
+// pthread_t and int not comparable.
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <thread>
 #include <new>
 #include <cstdlib>

diff  --git a/libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp b/libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp
index 98d028c5181d5..7fee899683ee1 100644
--- a/libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp
+++ b/libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp
@@ -8,6 +8,9 @@
 
 // UNSUPPORTED: no-wide-characters
 
+// Missing wchar string formatting functions.
+// XFAIL: LLVM-LIBC-FIXME
+
 // <wchar.h>
 
 #include <wchar.h>

diff  --git a/libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp b/libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp
index 4e2fb319336f1..221c219918614 100644
--- a/libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp
+++ b/libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp
@@ -8,6 +8,9 @@
 
 // UNSUPPORTED: no-wide-characters
 
+// Missing WEOF, wctrans_t
+// XFAIL: LLVM-LIBC-FIXME
+
 // towctrans and wctrans were added in Android API 26.
 // TODO: Switch from UNSUPPORTED to XFAIL once the Android CI Docker sysroot is
 // updated.

diff  --git a/libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp b/libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp
index dbf2ded1b532e..82d43c1673d2d 100644
--- a/libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp
+++ b/libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp
@@ -21,6 +21,9 @@
 // but the words should be written without interleaving. To increment the
 // change of interleaving words are written one character at a time.
 
+// segmentation fault
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <cassert>
 #include <chrono>
 #include <mutex>

diff  --git a/libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp b/libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
index b9467a166e8d5..61e0d01f2ae4d 100644
--- a/libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
+++ b/libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
@@ -6,9 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// Missing some math functions that compiler-rt buildins need.
-// XFAIL: LLVM-LIBC-FIXME
-
 // <complex>
 
 // complex& operator/=(const complex& rhs); // constexpr in C++20

diff  --git a/libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp b/libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
index 4e00e87f18220..d12dfd994b0ae 100644
--- a/libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
+++ b/libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
@@ -6,9 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// Missing some math functions that compiler-rt buildins need.
-// XFAIL: LLVM-LIBC-FIXME
-
 // <complex>
 
 // template<class T>

diff  --git a/libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp b/libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp
index 56d9664b49aea..f32b560c1e864 100644
--- a/libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp
+++ b/libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp
@@ -6,9 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// Missing some math functions that compiler-rt buildins need.
-// XFAIL: LLVM-LIBC-FIXME
-
 // <complex>
 
 // template<class T>

diff  --git a/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp b/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp
index 8f7c8eb7ccc0f..22319e5b31454 100644
--- a/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp
+++ b/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp
@@ -21,6 +21,9 @@
 // Very slow when run in qemu.
 // REQUIRES: long_tests
 
+// missing lgamma_r
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <random>
 #include <cassert>
 #include <cmath>

diff  --git a/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp
index 35f579903a460..a53a5db3be4c0 100644
--- a/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp
+++ b/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp
@@ -23,6 +23,9 @@
 // operator>>(basic_istream<charT, traits>& is,
 //            binomial_distribution& x);
 
+// missing lgamma_r
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <random>
 #include <sstream>
 #include <cassert>

diff  --git a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
index 0caf4b9913b50..a9e99914c7b1a 100644
--- a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
@@ -10,6 +10,9 @@
 
 // UNSUPPORTED: no-wide-characters
 
+// Missing wchar string formatting functions.
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <cwchar>
 #include <ctime>
 #include <cstdarg>

diff  --git a/libcxx/test/std/strings/c.strings/cwctype.pass.cpp b/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
index 0deabf51ed59c..3de582714d01d 100644
--- a/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
@@ -10,6 +10,9 @@
 
 // UNSUPPORTED: no-wide-characters
 
+// Missing WEOF, towctrans, wctrans_t
+// XFAIL: LLVM-LIBC-FIXME
+
 // towctrans and wctrans were added in Android API 26.
 // TODO: Switch from UNSUPPORTED to XFAIL once the Android CI Docker sysroot is
 // updated.

diff  --git a/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp b/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
index fff5ede848b57..bd4bd47671a81 100644
--- a/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
@@ -20,6 +20,9 @@
 // wstring to_wstring(double val);
 // wstring to_wstring(long double val);
 
+// Missing swprintf (currently a stub that infinite loops)
+// UNSUPPORTED: LLVM-LIBC-FIXME
+
 #include <string>
 #include <cassert>
 #include <limits>

diff  --git a/libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp b/libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp
index 61094eced4cb2..f1b349017b1a5 100644
--- a/libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp
+++ b/libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp
@@ -23,6 +23,9 @@
 //
 // void notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk);
 
+// segmentation fault
+// XFAIL: LLVM-LIBC-FIXME
+
 #include "make_test_thread.h"
 #include "test_macros.h"
 

diff  --git a/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp b/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp
index 1dba5d8a40976..726b5807d55e3 100644
--- a/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp
+++ b/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp
@@ -21,6 +21,9 @@
 // This test ensures that we sleep for the right amount of time even when
 // we get interrupted by a signal, as fixed in 58a0a70fb2f1.
 
+// missing ITIMER_REAL
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <thread>
 #include <cassert>
 #include <chrono>

diff  --git a/libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp b/libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp
index e3ac7e53251d5..cac7fbda0fbb3 100644
--- a/libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp
+++ b/libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp
@@ -6,9 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// No member named `leapsecond'.
-// XFAIL: LLVM-LIBC-FIXME
-
 // REQUIRES: std-at-least-c++26
 
 // <chrono>

diff  --git a/libcxxabi/test/configs/llvm-libc++abi-llvm-libc.cfg.in b/libcxxabi/test/configs/llvm-libc++abi-llvm-libc.cfg.in
index d46a1c6d4e58c..9e37ffac4c791 100644
--- a/libcxxabi/test/configs/llvm-libc++abi-llvm-libc.cfg.in
+++ b/libcxxabi/test/configs/llvm-libc++abi-llvm-libc.cfg.in
@@ -10,7 +10,7 @@ config.substitutions.append(('%{compile_flags}',
     '-nostdlibinc -I %{include} -I %{cxx-include} -I %{cxx-target-include} %{maybe-include-libunwind} -isystem @CMAKE_BINARY_DIR@/libc/include -I %{libcxx}/test/support -I %{libcxx}/src -idirafter @LIBC_KERNEL_HEADERS@ -D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS'
 ))
 config.substitutions.append(('%{link_flags}',
-    '-nodefaultlibs -nostartfiles -L %{lib} -lc++ -lc++abi -pthread @CMAKE_BINARY_DIR@/libc/startup/linux/crt1.o @CMAKE_BINARY_DIR@/libc/lib/libc.a -static -fno-use-cxa-atexit'
+    '-nodefaultlibs -nostartfiles -L %{lib} -lc++ -lc++abi -pthread @CMAKE_BINARY_DIR@/libc/startup/linux/crt1.o @CMAKE_BINARY_DIR@/libc/lib/libc.a -static -fno-use-cxa-atexit @CMAKE_BINARY_DIR@/compiler-rt/lib/linux/libclang_rt.builtins-x86_64.a -Wl,--defsym,__dso_handle=0'
 ))
 config.substitutions.append(('%{exec}',
     '%{executor} --execdir %{temp} -- '


        


More information about the libcxx-commits mailing list