[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