[libc-commits] [compiler-rt] [libc] [llvm] [CI] check libc freestanding in compiler-rt (PR #217972)
via libc-commits
libc-commits at lists.llvm.org
Sat Oct 24 17:05:04 PDT 2026
https://github.com/hulxv updated https://github.com/llvm/llvm-project/pull/217972
>From 584453bea58d22849b43a49b01d29092b454f0f6 Mon Sep 17 00:00:00 2001
From: hulxv <hulxxv at gmail.com>
Date: Fri, 21 Aug 2026 19:29:10 +0300
Subject: [PATCH 1/6] [CI] check libc freestanding in compiler-rt
---
.../compiler-rt-libc-builtins-tests.yml | 59 +++++
compiler-rt/lib/builtins/CMakeLists.txt | 26 ++
.../libc-isolation/export-libc-shared.cmake | 25 ++
.../libc-isolation/libc-shared-closure.sh | 34 +++
.../libc-isolation/libc-shared-manifest.txt | 227 ++++++++++++++++++
.../builtins/libc-isolation/regen-manifest.sh | 16 ++
6 files changed, 387 insertions(+)
create mode 100644 compiler-rt/lib/builtins/libc-isolation/export-libc-shared.cmake
create mode 100755 compiler-rt/lib/builtins/libc-isolation/libc-shared-closure.sh
create mode 100644 compiler-rt/lib/builtins/libc-isolation/libc-shared-manifest.txt
create mode 100755 compiler-rt/lib/builtins/libc-isolation/regen-manifest.sh
diff --git a/.github/workflows/compiler-rt-libc-builtins-tests.yml b/.github/workflows/compiler-rt-libc-builtins-tests.yml
index 51fff1fdf1eb9a..c9c8d304a6b1e1 100644
--- a/.github/workflows/compiler-rt-libc-builtins-tests.yml
+++ b/.github/workflows/compiler-rt-libc-builtins-tests.yml
@@ -52,3 +52,62 @@ jobs:
--build build \
--parallel \
--target check-builtins
+
+ # Build the libc-backed builtins against only the extracted shared subset, so
+ # the build fails if they ever reach into the rest of libc.
+ isolation:
+ name: builtins isolation (subset-only build)
+ if: github.repository_owner == 'llvm'
+ runs-on: ubuntu-24.04
+ container:
+ image: ghcr.io/llvm/libc-ubuntu-24.04
+
+ steps:
+ - uses: actions/checkout at de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ with:
+ persist-credentials: false
+
+ - name: Manifest matches the live header closure
+ shell: bash
+ run: |
+ d="compiler-rt/lib/builtins/libc-isolation"
+ if ! diff -u \
+ <(grep -v '^#' "$d/libc-shared-manifest.txt") \
+ <(CXX=clang++-23 bash "$d/libc-shared-closure.sh"); then
+ echo "::error::libc-shared-manifest.txt is stale. Regenerate it with:"
+ echo " CXX=clang++-23 $d/regen-manifest.sh"
+ exit 1
+ fi
+
+ - name: Extract the shared subset
+ run: |
+ d="compiler-rt/lib/builtins/libc-isolation"
+ cmake \
+ -DLIBC_ROOT="$PWD/libc" \
+ -DDEST="$PWD/libc-shared-subset" \
+ -DMANIFEST="$PWD/$d/libc-shared-manifest.txt" \
+ -P "$d/export-libc-shared.cmake"
+
+ - name: Configure CMake against the subset only
+ run: |
+ cmake \
+ -B build-iso \
+ -S runtimes \
+ -DLLVM_ENABLE_RUNTIMES=compiler-rt \
+ -G Ninja \
+ -DCMAKE_C_COMPILER=clang-23 \
+ -DCMAKE_CXX_COMPILER=clang++-23 \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DLLVM_ENABLE_ASSERTIONS=ON \
+ -DCOMPILER_RT_STANDALONE_BUILD=ON \
+ -DCOMPILER_RT_USE_LIBC_MATH=ON \
+ -DCOMPILER_RT_LIBC_SHARED_INCLUDE_ROOT="$PWD/libc-shared-subset" \
+ -DLLVM_EXTERNAL_LIT=$(which lit-23) \
+ -DCOMPILER_RT_INCLUDE_TESTS=ON
+
+ - name: Build and test builtins against the subset
+ run: |
+ cmake \
+ --build build-iso \
+ --parallel \
+ --target check-builtins
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index e7827f2201b431..d830b8ce1b9a7a 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -267,6 +267,15 @@ set(x86_80_BIT_SOURCES
option(COMPILER_RT_USE_LIBC_MATH
"Use LLVM libc math routines for floating-point builtins" OFF)
+# libc include root; point at an isolated subset (see libc-isolation/) to prove
+# the builtins build against that subset alone. Empty = the in-tree libc.
+set(COMPILER_RT_LIBC_SHARED_INCLUDE_ROOT "" CACHE PATH
+ "Include root for the libc-backed builtins (default: the LLVM-libc source tree)")
+
+# Where compiler-rt-export-libc-shared writes that subset (per the manifest).
+set(COMPILER_RT_LIBC_SHARED_EXPORT_DIR "" CACHE PATH
+ "Destination for the extracted LLVM-libc shared subset (see libc-isolation/)")
+
# Swap the legacy soft-float <name>.c builtin in <list> for the libc-backed
# <name>.cpp implementation (which delegates to LIBC_NAMESPACE::shared::*).
macro(use_libc_builtin list_var name)
@@ -282,9 +291,26 @@ if(COMPILER_RT_USE_LIBC_MATH)
get_target_property(_libc_include_dirs llvm-libc-common-utilities
INTERFACE_INCLUDE_DIRECTORIES)
+ set(_libc_root ${_libc_include_dirs})
+
+ if(COMPILER_RT_LIBC_SHARED_INCLUDE_ROOT)
+ set(_libc_include_dirs ${COMPILER_RT_LIBC_SHARED_INCLUDE_ROOT})
+ endif()
+
include_directories(SYSTEM ${_libc_include_dirs})
add_definitions(-DCOMPILER_RT_USE_LIBC_MATH)
+ if(COMPILER_RT_LIBC_SHARED_EXPORT_DIR)
+ add_custom_target(compiler-rt-export-libc-shared
+ COMMAND ${CMAKE_COMMAND}
+ -DLIBC_ROOT=${_libc_root}
+ -DDEST=${COMPILER_RT_LIBC_SHARED_EXPORT_DIR}
+ -DMANIFEST=${CMAKE_CURRENT_SOURCE_DIR}/libc-isolation/libc-shared-manifest.txt
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/libc-isolation/export-libc-shared.cmake
+ VERBATIM
+ COMMENT "Exporting LLVM-libc shared subset to ${COMPILER_RT_LIBC_SHARED_EXPORT_DIR}")
+ endif()
+
use_libc_builtin(GENERIC_SOURCES adddf3)
use_libc_builtin(GENERIC_SOURCES addsf3)
use_libc_builtin(GENERIC_TF_SOURCES addtf3)
diff --git a/compiler-rt/lib/builtins/libc-isolation/export-libc-shared.cmake b/compiler-rt/lib/builtins/libc-isolation/export-libc-shared.cmake
new file mode 100644
index 00000000000000..1ee4ab9a912450
--- /dev/null
+++ b/compiler-rt/lib/builtins/libc-isolation/export-libc-shared.cmake
@@ -0,0 +1,25 @@
+# Copy the manifest's libc headers into DEST, preserving their paths, so
+# compiler-rt can build the libc-backed builtins against that subset alone.
+#
+# cmake -DLIBC_ROOT=<libc> -DDEST=<dir> -DMANIFEST=<file> -P export-libc-shared.cmake
+
+if(NOT LIBC_ROOT OR NOT DEST OR NOT MANIFEST)
+ message(FATAL_ERROR "set LIBC_ROOT, DEST and MANIFEST")
+endif()
+
+file(STRINGS "${MANIFEST}" _lines)
+set(_count 0)
+foreach(_rel IN LISTS _lines)
+ string(STRIP "${_rel}" _rel)
+ if(_rel STREQUAL "" OR _rel MATCHES "^#")
+ continue()
+ endif()
+ if(NOT EXISTS "${LIBC_ROOT}/${_rel}")
+ message(FATAL_ERROR "manifest lists a missing file: ${LIBC_ROOT}/${_rel}")
+ endif()
+ get_filename_component(_dstdir "${DEST}/${_rel}" DIRECTORY)
+ file(MAKE_DIRECTORY "${_dstdir}")
+ configure_file("${LIBC_ROOT}/${_rel}" "${DEST}/${_rel}" COPYONLY)
+ math(EXPR _count "${_count} + 1")
+endforeach()
+message(STATUS "export-libc-shared: copied ${_count} files into ${DEST}")
diff --git a/compiler-rt/lib/builtins/libc-isolation/libc-shared-closure.sh b/compiler-rt/lib/builtins/libc-isolation/libc-shared-closure.sh
new file mode 100755
index 00000000000000..e367a0601d8741
--- /dev/null
+++ b/compiler-rt/lib/builtins/libc-isolation/libc-shared-closure.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+# Print the libc headers the compiler-rt libc-backed builtins include, one
+# libc-root-relative path per line, sorted. Used to regenerate the manifest and
+# to drift-check it in CI. Run from the llvm-project root; override with CXX=.
+set -euo pipefail
+
+CXX="${CXX:-clang++}"
+LIBC_ROOT="${LIBC_ROOT:-libc}"
+
+tmp="$(mktemp -d)"
+trap 'rm -rf "$tmp"' EXIT
+printf '#include "shared/builtins.h"\n' > "$tmp/probe.cpp"
+
+"$CXX" -std=c++17 \
+ -DLIBC_NAMESPACE=__llvm_libc_common_utils \
+ -DLIBC_MATH=12 \
+ -I "$LIBC_ROOT" -I "$LIBC_ROOT/include" \
+ -MM -MG "$tmp/probe.cpp" 2>/dev/null \
+ | tr ' \\' '\n\n' \
+ | grep -E "^$LIBC_ROOT/" \
+ | LIBC_ROOT="$LIBC_ROOT" python3 -c '
+import os, sys
+libc = os.path.abspath(os.environ["LIBC_ROOT"])
+seen = set()
+for line in sys.stdin:
+ p = line.strip()
+ if not p:
+ continue
+ rel = os.path.relpath(os.path.normpath(os.path.abspath(p)), libc)
+ if not rel.startswith(".."):
+ seen.add(rel)
+for rel in sorted(seen):
+ print(rel)
+'
diff --git a/compiler-rt/lib/builtins/libc-isolation/libc-shared-manifest.txt b/compiler-rt/lib/builtins/libc-isolation/libc-shared-manifest.txt
new file mode 100644
index 00000000000000..76e78823f746ab
--- /dev/null
+++ b/compiler-rt/lib/builtins/libc-isolation/libc-shared-manifest.txt
@@ -0,0 +1,227 @@
+# Auto-generated by regen-manifest.sh -- do not edit by hand.
+# The libc headers the compiler-rt libc-backed builtins include,
+# libc-root-relative. Regenerate after changing those includes.
+hdr/errno_macros.h
+hdr/fenv_macros.h
+hdr/float_macros.h
+hdr/limits_macros.h
+hdr/math_macros.h
+hdr/stdint_proxy.h
+hdr/types/fenv_t.h
+hdr/types/size_t.h
+include/llvm-libc-macros/cfloat128-macros.h
+include/llvm-libc-macros/cfloat16-macros.h
+include/llvm-libc-macros/float-macros.h
+include/llvm-libc-macros/float16-macros.h
+include/llvm-libc-macros/stdfix-macros.h
+include/llvm-libc-types/cfloat128.h
+include/llvm-libc-types/cfloat16.h
+include/llvm-libc-types/float128.h
+shared/builtins.h
+shared/builtins/adddf3.h
+shared/builtins/addsf3.h
+shared/builtins/addtf3.h
+shared/builtins/divdf3.h
+shared/builtins/divsf3.h
+shared/builtins/divtf3.h
+shared/builtins/extenddftf2.h
+shared/builtins/extendsfdf2.h
+shared/builtins/extendsftf2.h
+shared/builtins/extendxftf2.h
+shared/builtins/fixdfdi.h
+shared/builtins/fixdfsi.h
+shared/builtins/fixdfti.h
+shared/builtins/fixsfdi.h
+shared/builtins/fixsfsi.h
+shared/builtins/fixsfti.h
+shared/builtins/fixunsdfdi.h
+shared/builtins/fixunsdfsi.h
+shared/builtins/fixunsdfti.h
+shared/builtins/fixunssfdi.h
+shared/builtins/fixunssfsi.h
+shared/builtins/fixunssfti.h
+shared/builtins/floatdidf.h
+shared/builtins/floatdisf.h
+shared/builtins/floatsidf.h
+shared/builtins/floatsisf.h
+shared/builtins/floattidf.h
+shared/builtins/floattisf.h
+shared/builtins/floatundidf.h
+shared/builtins/floatundisf.h
+shared/builtins/floatunsidf.h
+shared/builtins/floatunsisf.h
+shared/builtins/floatuntidf.h
+shared/builtins/floatuntisf.h
+shared/builtins/gesf2.h
+shared/builtins/lesf2.h
+shared/builtins/muldf3.h
+shared/builtins/mulsf3.h
+shared/builtins/multf3.h
+shared/builtins/negdf2.h
+shared/builtins/negsf2.h
+shared/builtins/subdf3.h
+shared/builtins/subsf3.h
+shared/builtins/subtf3.h
+shared/builtins/truncdfsf2.h
+shared/builtins/trunctfdf2.h
+shared/builtins/trunctfsf2.h
+shared/builtins/trunctfxf2.h
+shared/builtins/unordsf2.h
+shared/libc_common.h
+src/__support/CPP/algorithm.h
+src/__support/CPP/array.h
+src/__support/CPP/bit.h
+src/__support/CPP/iterator.h
+src/__support/CPP/limits.h
+src/__support/CPP/optional.h
+src/__support/CPP/type_traits.h
+src/__support/CPP/type_traits/add_lvalue_reference.h
+src/__support/CPP/type_traits/add_pointer.h
+src/__support/CPP/type_traits/add_rvalue_reference.h
+src/__support/CPP/type_traits/aligned_storage.h
+src/__support/CPP/type_traits/always_false.h
+src/__support/CPP/type_traits/bool_constant.h
+src/__support/CPP/type_traits/conditional.h
+src/__support/CPP/type_traits/decay.h
+src/__support/CPP/type_traits/enable_if.h
+src/__support/CPP/type_traits/false_type.h
+src/__support/CPP/type_traits/has_unique_object_representations.h
+src/__support/CPP/type_traits/integral_constant.h
+src/__support/CPP/type_traits/invoke.h
+src/__support/CPP/type_traits/invoke_result.h
+src/__support/CPP/type_traits/is_arithmetic.h
+src/__support/CPP/type_traits/is_array.h
+src/__support/CPP/type_traits/is_assignable.h
+src/__support/CPP/type_traits/is_base_of.h
+src/__support/CPP/type_traits/is_class.h
+src/__support/CPP/type_traits/is_complex.h
+src/__support/CPP/type_traits/is_const.h
+src/__support/CPP/type_traits/is_constant_evaluated.h
+src/__support/CPP/type_traits/is_constructible.h
+src/__support/CPP/type_traits/is_convertible.h
+src/__support/CPP/type_traits/is_copy_assignable.h
+src/__support/CPP/type_traits/is_copy_constructible.h
+src/__support/CPP/type_traits/is_destructible.h
+src/__support/CPP/type_traits/is_enum.h
+src/__support/CPP/type_traits/is_fixed_point.h
+src/__support/CPP/type_traits/is_floating_point.h
+src/__support/CPP/type_traits/is_function.h
+src/__support/CPP/type_traits/is_integral.h
+src/__support/CPP/type_traits/is_lvalue_reference.h
+src/__support/CPP/type_traits/is_member_pointer.h
+src/__support/CPP/type_traits/is_move_assignable.h
+src/__support/CPP/type_traits/is_move_constructible.h
+src/__support/CPP/type_traits/is_null_pointer.h
+src/__support/CPP/type_traits/is_object.h
+src/__support/CPP/type_traits/is_pointer.h
+src/__support/CPP/type_traits/is_reference.h
+src/__support/CPP/type_traits/is_rvalue_reference.h
+src/__support/CPP/type_traits/is_same.h
+src/__support/CPP/type_traits/is_scalar.h
+src/__support/CPP/type_traits/is_signed.h
+src/__support/CPP/type_traits/is_trivially_constructible.h
+src/__support/CPP/type_traits/is_trivially_copyable.h
+src/__support/CPP/type_traits/is_trivially_destructible.h
+src/__support/CPP/type_traits/is_union.h
+src/__support/CPP/type_traits/is_unsigned.h
+src/__support/CPP/type_traits/is_void.h
+src/__support/CPP/type_traits/make_signed.h
+src/__support/CPP/type_traits/make_unsigned.h
+src/__support/CPP/type_traits/remove_all_extents.h
+src/__support/CPP/type_traits/remove_cv.h
+src/__support/CPP/type_traits/remove_cvref.h
+src/__support/CPP/type_traits/remove_extent.h
+src/__support/CPP/type_traits/remove_reference.h
+src/__support/CPP/type_traits/true_type.h
+src/__support/CPP/type_traits/type_identity.h
+src/__support/CPP/type_traits/void_t.h
+src/__support/CPP/utility.h
+src/__support/CPP/utility/declval.h
+src/__support/CPP/utility/forward.h
+src/__support/CPP/utility/in_place.h
+src/__support/CPP/utility/integer_sequence.h
+src/__support/CPP/utility/move.h
+src/__support/FPUtil/BasicOperations.h
+src/__support/FPUtil/FEnvImpl.h
+src/__support/FPUtil/FPBits.h
+src/__support/FPUtil/cast.h
+src/__support/FPUtil/comparison_operations.h
+src/__support/FPUtil/dyadic_float.h
+src/__support/FPUtil/generic/add_sub.h
+src/__support/FPUtil/generic/div.h
+src/__support/FPUtil/generic/mul.h
+src/__support/FPUtil/multiply_add.h
+src/__support/FPUtil/rounding_mode.h
+src/__support/big_int.h
+src/__support/builtins/adddf3.h
+src/__support/builtins/addsf3.h
+src/__support/builtins/addtf3.h
+src/__support/builtins/cmp_helper.h
+src/__support/builtins/divdf3.h
+src/__support/builtins/divsf3.h
+src/__support/builtins/divtf3.h
+src/__support/builtins/extenddftf2.h
+src/__support/builtins/extendsfdf2.h
+src/__support/builtins/extendsftf2.h
+src/__support/builtins/extendxftf2.h
+src/__support/builtins/fixdfdi.h
+src/__support/builtins/fixdfsi.h
+src/__support/builtins/fixdfti.h
+src/__support/builtins/fixint_helper.h
+src/__support/builtins/fixsfdi.h
+src/__support/builtins/fixsfsi.h
+src/__support/builtins/fixsfti.h
+src/__support/builtins/fixunsdfdi.h
+src/__support/builtins/fixunsdfsi.h
+src/__support/builtins/fixunsdfti.h
+src/__support/builtins/fixunssfdi.h
+src/__support/builtins/fixunssfsi.h
+src/__support/builtins/fixunssfti.h
+src/__support/builtins/floatdidf.h
+src/__support/builtins/floatdisf.h
+src/__support/builtins/floatint_helper.h
+src/__support/builtins/floatsidf.h
+src/__support/builtins/floatsisf.h
+src/__support/builtins/floattidf.h
+src/__support/builtins/floattisf.h
+src/__support/builtins/floatundidf.h
+src/__support/builtins/floatundisf.h
+src/__support/builtins/floatunsidf.h
+src/__support/builtins/floatunsisf.h
+src/__support/builtins/floatuntidf.h
+src/__support/builtins/floatuntisf.h
+src/__support/builtins/fpconvert_helper.h
+src/__support/builtins/gesf2.h
+src/__support/builtins/lesf2.h
+src/__support/builtins/muldf3.h
+src/__support/builtins/mulsf3.h
+src/__support/builtins/multf3.h
+src/__support/builtins/negdf2.h
+src/__support/builtins/negsf2.h
+src/__support/builtins/subdf3.h
+src/__support/builtins/subsf3.h
+src/__support/builtins/subtf3.h
+src/__support/builtins/truncdfsf2.h
+src/__support/builtins/trunctfdf2.h
+src/__support/builtins/trunctfsf2.h
+src/__support/builtins/trunctfxf2.h
+src/__support/builtins/unordsf2.h
+src/__support/common.h
+src/__support/libc_assert.h
+src/__support/libc_errno.h
+src/__support/macros/attributes.h
+src/__support/macros/config.h
+src/__support/macros/hardening.h
+src/__support/macros/macro-utils.h
+src/__support/macros/optimization.h
+src/__support/macros/properties/architectures.h
+src/__support/macros/properties/compiler.h
+src/__support/macros/properties/complex_types.h
+src/__support/macros/properties/cpu_features.h
+src/__support/macros/properties/os.h
+src/__support/macros/properties/types.h
+src/__support/macros/sanitizer.h
+src/__support/math_extras.h
+src/__support/number_pair.h
+src/__support/sign.h
+src/__support/uint128.h
diff --git a/compiler-rt/lib/builtins/libc-isolation/regen-manifest.sh b/compiler-rt/lib/builtins/libc-isolation/regen-manifest.sh
new file mode 100755
index 00000000000000..9524817720cb5a
--- /dev/null
+++ b/compiler-rt/lib/builtins/libc-isolation/regen-manifest.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+# Regenerate libc-shared-manifest.txt from the live header closure.
+# Run from the llvm-project root; override with CXX=.
+set -euo pipefail
+
+here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+manifest="$here/libc-shared-manifest.txt"
+
+{
+ echo "# Auto-generated by regen-manifest.sh -- do not edit by hand."
+ echo "# The libc headers the compiler-rt libc-backed builtins include,"
+ echo "# libc-root-relative. Regenerate after changing those includes."
+ bash "$here/libc-shared-closure.sh"
+} > "$manifest"
+
+echo "wrote $(grep -vc '^#' "$manifest") entries to $manifest"
>From f450d6cc145d14c581f3436a07c2d17977dcfe4a Mon Sep 17 00:00:00 2001
From: hulxv <hulxxv at gmail.com>
Date: Tue, 8 Sep 2026 18:23:55 +0300
Subject: [PATCH 2/6] move isolation scripts to libc/utils
---
.../builtins/libc-isolation/regen-manifest.sh | 16 ----------------
libc/utils/libc-isolation/regen-manifests.sh | 18 ++++++++++++++++++
.../shared-builtins-manifest.txt | 13 ++-----------
.../utils/libc-isolation/shared-closure.sh | 11 +++++++----
4 files changed, 27 insertions(+), 31 deletions(-)
delete mode 100755 compiler-rt/lib/builtins/libc-isolation/regen-manifest.sh
create mode 100755 libc/utils/libc-isolation/regen-manifests.sh
rename compiler-rt/lib/builtins/libc-isolation/libc-shared-manifest.txt => libc/utils/libc-isolation/shared-builtins-manifest.txt (94%)
rename compiler-rt/lib/builtins/libc-isolation/libc-shared-closure.sh => libc/utils/libc-isolation/shared-closure.sh (69%)
diff --git a/compiler-rt/lib/builtins/libc-isolation/regen-manifest.sh b/compiler-rt/lib/builtins/libc-isolation/regen-manifest.sh
deleted file mode 100755
index 9524817720cb5a..00000000000000
--- a/compiler-rt/lib/builtins/libc-isolation/regen-manifest.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-# Regenerate libc-shared-manifest.txt from the live header closure.
-# Run from the llvm-project root; override with CXX=.
-set -euo pipefail
-
-here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-manifest="$here/libc-shared-manifest.txt"
-
-{
- echo "# Auto-generated by regen-manifest.sh -- do not edit by hand."
- echo "# The libc headers the compiler-rt libc-backed builtins include,"
- echo "# libc-root-relative. Regenerate after changing those includes."
- bash "$here/libc-shared-closure.sh"
-} > "$manifest"
-
-echo "wrote $(grep -vc '^#' "$manifest") entries to $manifest"
diff --git a/libc/utils/libc-isolation/regen-manifests.sh b/libc/utils/libc-isolation/regen-manifests.sh
new file mode 100755
index 00000000000000..51214210e7f679
--- /dev/null
+++ b/libc/utils/libc-isolation/regen-manifests.sh
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+# Regenerate the shared-surface manifests from the live header closures.
+# Run from the llvm-project root; override the compiler with CXX=.
+set -euo pipefail
+
+here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+
+gen() { # <umbrella header> <manifest file>
+ {
+ echo "# Auto-generated by regen-manifests.sh -- do not edit by hand."
+ echo "# The libc headers reachable from $1, libc-root-relative."
+ bash "$here/shared-closure.sh" "$1"
+ } > "$here/$2"
+ echo "wrote $(grep -vc '^#' "$here/$2") entries to $2"
+}
+
+gen shared/builtins.h shared-builtins-manifest.txt
+gen shared/math.h shared-math-manifest.txt
diff --git a/compiler-rt/lib/builtins/libc-isolation/libc-shared-manifest.txt b/libc/utils/libc-isolation/shared-builtins-manifest.txt
similarity index 94%
rename from compiler-rt/lib/builtins/libc-isolation/libc-shared-manifest.txt
rename to libc/utils/libc-isolation/shared-builtins-manifest.txt
index 76e78823f746ab..0d1bb5e23ea8dc 100644
--- a/compiler-rt/lib/builtins/libc-isolation/libc-shared-manifest.txt
+++ b/libc/utils/libc-isolation/shared-builtins-manifest.txt
@@ -1,6 +1,5 @@
-# Auto-generated by regen-manifest.sh -- do not edit by hand.
-# The libc headers the compiler-rt libc-backed builtins include,
-# libc-root-relative. Regenerate after changing those includes.
+# Auto-generated by regen-manifests.sh -- do not edit by hand.
+# The libc headers reachable from shared/builtins.h, libc-root-relative.
hdr/errno_macros.h
hdr/fenv_macros.h
hdr/float_macros.h
@@ -52,8 +51,6 @@ shared/builtins/floatunsidf.h
shared/builtins/floatunsisf.h
shared/builtins/floatuntidf.h
shared/builtins/floatuntisf.h
-shared/builtins/gesf2.h
-shared/builtins/lesf2.h
shared/builtins/muldf3.h
shared/builtins/mulsf3.h
shared/builtins/multf3.h
@@ -66,7 +63,6 @@ shared/builtins/truncdfsf2.h
shared/builtins/trunctfdf2.h
shared/builtins/trunctfsf2.h
shared/builtins/trunctfxf2.h
-shared/builtins/unordsf2.h
shared/libc_common.h
src/__support/CPP/algorithm.h
src/__support/CPP/array.h
@@ -145,7 +141,6 @@ src/__support/FPUtil/BasicOperations.h
src/__support/FPUtil/FEnvImpl.h
src/__support/FPUtil/FPBits.h
src/__support/FPUtil/cast.h
-src/__support/FPUtil/comparison_operations.h
src/__support/FPUtil/dyadic_float.h
src/__support/FPUtil/generic/add_sub.h
src/__support/FPUtil/generic/div.h
@@ -156,7 +151,6 @@ src/__support/big_int.h
src/__support/builtins/adddf3.h
src/__support/builtins/addsf3.h
src/__support/builtins/addtf3.h
-src/__support/builtins/cmp_helper.h
src/__support/builtins/divdf3.h
src/__support/builtins/divsf3.h
src/__support/builtins/divtf3.h
@@ -191,8 +185,6 @@ src/__support/builtins/floatunsisf.h
src/__support/builtins/floatuntidf.h
src/__support/builtins/floatuntisf.h
src/__support/builtins/fpconvert_helper.h
-src/__support/builtins/gesf2.h
-src/__support/builtins/lesf2.h
src/__support/builtins/muldf3.h
src/__support/builtins/mulsf3.h
src/__support/builtins/multf3.h
@@ -205,7 +197,6 @@ src/__support/builtins/truncdfsf2.h
src/__support/builtins/trunctfdf2.h
src/__support/builtins/trunctfsf2.h
src/__support/builtins/trunctfxf2.h
-src/__support/builtins/unordsf2.h
src/__support/common.h
src/__support/libc_assert.h
src/__support/libc_errno.h
diff --git a/compiler-rt/lib/builtins/libc-isolation/libc-shared-closure.sh b/libc/utils/libc-isolation/shared-closure.sh
similarity index 69%
rename from compiler-rt/lib/builtins/libc-isolation/libc-shared-closure.sh
rename to libc/utils/libc-isolation/shared-closure.sh
index e367a0601d8741..281df1a4e19ab4 100755
--- a/compiler-rt/lib/builtins/libc-isolation/libc-shared-closure.sh
+++ b/libc/utils/libc-isolation/shared-closure.sh
@@ -1,15 +1,18 @@
#!/usr/bin/env bash
-# Print the libc headers the compiler-rt libc-backed builtins include, one
-# libc-root-relative path per line, sorted. Used to regenerate the manifest and
-# to drift-check it in CI. Run from the llvm-project root; override with CXX=.
+# Print the libc headers reachable from a shared umbrella header, one
+# libc-root-relative path per line, sorted. Used to regenerate the manifests and
+# to drift-check them in CI. Run from the llvm-project root; override with CXX=.
+#
+# shared-closure.sh shared/builtins.h
set -euo pipefail
+umbrella="${1:?usage: shared-closure.sh <umbrella header, e.g. shared/builtins.h>}"
CXX="${CXX:-clang++}"
LIBC_ROOT="${LIBC_ROOT:-libc}"
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
-printf '#include "shared/builtins.h"\n' > "$tmp/probe.cpp"
+printf '#include "%s"\n' "$umbrella" > "$tmp/probe.cpp"
"$CXX" -std=c++17 \
-DLIBC_NAMESPACE=__llvm_libc_common_utils \
>From 370f18921900bfce830c236df1f342054c80010c Mon Sep 17 00:00:00 2001
From: hulxv <hulxxv at gmail.com>
Date: Tue, 8 Sep 2026 18:23:56 +0300
Subject: [PATCH 3/6] add manifest for shared math
---
.../libc-isolation/shared-math-manifest.txt | 1168 +++++++++++++++++
1 file changed, 1168 insertions(+)
create mode 100644 libc/utils/libc-isolation/shared-math-manifest.txt
diff --git a/libc/utils/libc-isolation/shared-math-manifest.txt b/libc/utils/libc-isolation/shared-math-manifest.txt
new file mode 100644
index 00000000000000..8524d376a0f6f5
--- /dev/null
+++ b/libc/utils/libc-isolation/shared-math-manifest.txt
@@ -0,0 +1,1168 @@
+# Auto-generated by regen-manifests.sh -- do not edit by hand.
+# The libc headers reachable from shared/math.h, libc-root-relative.
+hdr/errno_macros.h
+hdr/fenv_macros.h
+hdr/float_macros.h
+hdr/limits_macros.h
+hdr/math_macros.h
+hdr/stdint_proxy.h
+hdr/types/fenv_t.h
+hdr/types/size_t.h
+hdr/types/wchar_t.h
+hdr/wchar_overlay.h
+include/llvm-libc-macros/cfloat128-macros.h
+include/llvm-libc-macros/cfloat16-macros.h
+include/llvm-libc-macros/float-macros.h
+include/llvm-libc-macros/float16-macros.h
+include/llvm-libc-macros/stdfix-macros.h
+include/llvm-libc-types/cfloat128.h
+include/llvm-libc-types/cfloat16.h
+include/llvm-libc-types/float128.h
+shared/libc_common.h
+shared/math.h
+shared/math/acos.h
+shared/math/acosbf16.h
+shared/math/acosf.h
+shared/math/acosf16.h
+shared/math/acoshf.h
+shared/math/acoshf16.h
+shared/math/acospif.h
+shared/math/acospif16.h
+shared/math/asin.h
+shared/math/asinbf16.h
+shared/math/asinf.h
+shared/math/asinf16.h
+shared/math/asinhf.h
+shared/math/asinhf16.h
+shared/math/asinpi.h
+shared/math/asinpif.h
+shared/math/asinpif16.h
+shared/math/atan.h
+shared/math/atan2.h
+shared/math/atan2f.h
+shared/math/atan2f128.h
+shared/math/atan2f16.h
+shared/math/atanbf16.h
+shared/math/atanf.h
+shared/math/atanf16.h
+shared/math/atanhf.h
+shared/math/atanhf16.h
+shared/math/atanpif16.h
+shared/math/bf16add.h
+shared/math/bf16addf.h
+shared/math/bf16addf128.h
+shared/math/bf16addl.h
+shared/math/bf16div.h
+shared/math/bf16divf.h
+shared/math/bf16divf128.h
+shared/math/bf16divl.h
+shared/math/bf16fma.h
+shared/math/bf16fmaf.h
+shared/math/bf16fmaf128.h
+shared/math/bf16fmal.h
+shared/math/bf16mul.h
+shared/math/bf16mulf.h
+shared/math/bf16mulf128.h
+shared/math/bf16mull.h
+shared/math/bf16sub.h
+shared/math/bf16subf.h
+shared/math/bf16subf128.h
+shared/math/bf16subl.h
+shared/math/canonicalize.h
+shared/math/canonicalizebf16.h
+shared/math/canonicalizef.h
+shared/math/canonicalizef128.h
+shared/math/canonicalizef16.h
+shared/math/canonicalizel.h
+shared/math/cbrt.h
+shared/math/cbrtbf16.h
+shared/math/cbrtf.h
+shared/math/cbrtf16.h
+shared/math/ceil.h
+shared/math/ceilbf16.h
+shared/math/ceilf.h
+shared/math/ceilf128.h
+shared/math/ceilf16.h
+shared/math/ceill.h
+shared/math/copysign.h
+shared/math/copysignbf16.h
+shared/math/copysignf.h
+shared/math/copysignf128.h
+shared/math/copysignf16.h
+shared/math/copysignl.h
+shared/math/cos.h
+shared/math/cosf.h
+shared/math/cosf16.h
+shared/math/coshf.h
+shared/math/coshf16.h
+shared/math/cospif.h
+shared/math/cospif16.h
+shared/math/daddf128.h
+shared/math/daddl.h
+shared/math/ddivf128.h
+shared/math/ddivl.h
+shared/math/dfmaf128.h
+shared/math/dfmal.h
+shared/math/dmulf128.h
+shared/math/dmull.h
+shared/math/dsqrtf128.h
+shared/math/dsqrtl.h
+shared/math/dsubf128.h
+shared/math/dsubl.h
+shared/math/erfcf16.h
+shared/math/erff.h
+shared/math/erff16.h
+shared/math/exp.h
+shared/math/exp10.h
+shared/math/exp10f.h
+shared/math/exp10f16.h
+shared/math/exp10m1f.h
+shared/math/exp10m1f16.h
+shared/math/exp2.h
+shared/math/exp2f.h
+shared/math/exp2f16.h
+shared/math/exp2m1f.h
+shared/math/exp2m1f16.h
+shared/math/expbf16.h
+shared/math/expf.h
+shared/math/expf16.h
+shared/math/expm1.h
+shared/math/expm1f.h
+shared/math/expm1f16.h
+shared/math/f16add.h
+shared/math/f16addf.h
+shared/math/f16addf128.h
+shared/math/f16addl.h
+shared/math/f16div.h
+shared/math/f16divf.h
+shared/math/f16divf128.h
+shared/math/f16divl.h
+shared/math/f16fma.h
+shared/math/f16fmaf.h
+shared/math/f16fmaf128.h
+shared/math/f16fmal.h
+shared/math/f16mul.h
+shared/math/f16mulf.h
+shared/math/f16mulf128.h
+shared/math/f16mull.h
+shared/math/f16sqrt.h
+shared/math/f16sqrtf.h
+shared/math/f16sqrtf128.h
+shared/math/f16sqrtl.h
+shared/math/f16sub.h
+shared/math/f16subf.h
+shared/math/f16subf128.h
+shared/math/f16subl.h
+shared/math/fabs.h
+shared/math/fabsbf16.h
+shared/math/fabsf.h
+shared/math/fabsf128.h
+shared/math/fabsf16.h
+shared/math/fabsl.h
+shared/math/fadd.h
+shared/math/faddf128.h
+shared/math/faddl.h
+shared/math/fdim.h
+shared/math/fdimbf16.h
+shared/math/fdimf.h
+shared/math/fdimf128.h
+shared/math/fdimf16.h
+shared/math/fdiml.h
+shared/math/fdiv.h
+shared/math/fdivf128.h
+shared/math/fdivl.h
+shared/math/ffma.h
+shared/math/ffmaf128.h
+shared/math/ffmal.h
+shared/math/floor.h
+shared/math/floorbf16.h
+shared/math/floorf.h
+shared/math/floorf128.h
+shared/math/floorf16.h
+shared/math/floorl.h
+shared/math/fma.h
+shared/math/fmabf16.h
+shared/math/fmaf.h
+shared/math/fmaf16.h
+shared/math/fmax.h
+shared/math/fmaxbf16.h
+shared/math/fmaxf.h
+shared/math/fmaxf128.h
+shared/math/fmaxf16.h
+shared/math/fmaximum.h
+shared/math/fmaximum_mag.h
+shared/math/fmaximum_mag_num.h
+shared/math/fmaximum_mag_numbf16.h
+shared/math/fmaximum_mag_numf.h
+shared/math/fmaximum_mag_numf128.h
+shared/math/fmaximum_mag_numf16.h
+shared/math/fmaximum_mag_numl.h
+shared/math/fmaximum_magbf16.h
+shared/math/fmaximum_magf.h
+shared/math/fmaximum_magf128.h
+shared/math/fmaximum_magf16.h
+shared/math/fmaximum_magl.h
+shared/math/fmaximum_num.h
+shared/math/fmaximum_numbf16.h
+shared/math/fmaximum_numf.h
+shared/math/fmaximum_numf128.h
+shared/math/fmaximum_numf16.h
+shared/math/fmaximum_numl.h
+shared/math/fmaximumbf16.h
+shared/math/fmaximumf.h
+shared/math/fmaximumf128.h
+shared/math/fmaximumf16.h
+shared/math/fmaximuml.h
+shared/math/fmaxl.h
+shared/math/fmin.h
+shared/math/fminbf16.h
+shared/math/fminf.h
+shared/math/fminf128.h
+shared/math/fminf16.h
+shared/math/fminimum.h
+shared/math/fminimum_mag.h
+shared/math/fminimum_mag_num.h
+shared/math/fminimum_mag_numbf16.h
+shared/math/fminimum_mag_numf.h
+shared/math/fminimum_mag_numf128.h
+shared/math/fminimum_mag_numf16.h
+shared/math/fminimum_mag_numl.h
+shared/math/fminimum_magbf16.h
+shared/math/fminimum_magf.h
+shared/math/fminimum_magf128.h
+shared/math/fminimum_magf16.h
+shared/math/fminimum_magl.h
+shared/math/fminimum_num.h
+shared/math/fminimum_numbf16.h
+shared/math/fminimum_numf.h
+shared/math/fminimum_numf128.h
+shared/math/fminimum_numf16.h
+shared/math/fminimum_numl.h
+shared/math/fminimumbf16.h
+shared/math/fminimumf.h
+shared/math/fminimumf128.h
+shared/math/fminimumf16.h
+shared/math/fminimuml.h
+shared/math/fminl.h
+shared/math/fmod.h
+shared/math/fmodbf16.h
+shared/math/fmodf.h
+shared/math/fmodf128.h
+shared/math/fmodf16.h
+shared/math/fmodl.h
+shared/math/fmul.h
+shared/math/fmulf128.h
+shared/math/fmull.h
+shared/math/frexp.h
+shared/math/frexpbf16.h
+shared/math/frexpf.h
+shared/math/frexpf128.h
+shared/math/frexpf16.h
+shared/math/frexpl.h
+shared/math/fromfp.h
+shared/math/fromfpbf16.h
+shared/math/fromfpf.h
+shared/math/fromfpf128.h
+shared/math/fromfpf16.h
+shared/math/fromfpl.h
+shared/math/fromfpx.h
+shared/math/fromfpxbf16.h
+shared/math/fromfpxf.h
+shared/math/fromfpxf128.h
+shared/math/fromfpxf16.h
+shared/math/fromfpxl.h
+shared/math/fsqrt.h
+shared/math/fsqrtf128.h
+shared/math/fsqrtl.h
+shared/math/fsub.h
+shared/math/fsubf128.h
+shared/math/fsubl.h
+shared/math/getpayload.h
+shared/math/getpayloadbf16.h
+shared/math/getpayloadf.h
+shared/math/getpayloadf128.h
+shared/math/getpayloadf16.h
+shared/math/getpayloadl.h
+shared/math/hypot.h
+shared/math/hypotbf16.h
+shared/math/hypotf.h
+shared/math/hypotf16.h
+shared/math/ilogb.h
+shared/math/ilogbbf16.h
+shared/math/ilogbf.h
+shared/math/ilogbf128.h
+shared/math/ilogbf16.h
+shared/math/ilogbl.h
+shared/math/iscanonicalbf16.h
+shared/math/iscanonicalf.h
+shared/math/iscanonicalf128.h
+shared/math/iscanonicalf16.h
+shared/math/iscanonicall.h
+shared/math/isnanf.h
+shared/math/isnanf128.h
+shared/math/isnanf16.h
+shared/math/isnanl.h
+shared/math/issignalingbf16.h
+shared/math/issignalingf.h
+shared/math/issignalingf128.h
+shared/math/issignalingf16.h
+shared/math/issignalingl.h
+shared/math/ldexp.h
+shared/math/ldexpbf16.h
+shared/math/ldexpf.h
+shared/math/ldexpf128.h
+shared/math/ldexpf16.h
+shared/math/ldexpl.h
+shared/math/lgammaf16.h
+shared/math/llogb.h
+shared/math/llogbbf16.h
+shared/math/llogbf.h
+shared/math/llogbf128.h
+shared/math/llogbf16.h
+shared/math/llogbl.h
+shared/math/llrint.h
+shared/math/llrintbf16.h
+shared/math/llrintf.h
+shared/math/llrintf128.h
+shared/math/llrintf16.h
+shared/math/llrintl.h
+shared/math/llround.h
+shared/math/llroundbf16.h
+shared/math/llroundf.h
+shared/math/llroundf128.h
+shared/math/llroundf16.h
+shared/math/llroundl.h
+shared/math/log.h
+shared/math/log10.h
+shared/math/log10f.h
+shared/math/log10f16.h
+shared/math/log10p1f16.h
+shared/math/log1p.h
+shared/math/log1pf.h
+shared/math/log2.h
+shared/math/log2f.h
+shared/math/log2f16.h
+shared/math/log2p1f16.h
+shared/math/log_bf16.h
+shared/math/logb.h
+shared/math/logbbf16.h
+shared/math/logbf.h
+shared/math/logbf128.h
+shared/math/logbf16.h
+shared/math/logbl.h
+shared/math/logf.h
+shared/math/logf16.h
+shared/math/lrint.h
+shared/math/lrintbf16.h
+shared/math/lrintf.h
+shared/math/lrintf128.h
+shared/math/lrintf16.h
+shared/math/lrintl.h
+shared/math/lround.h
+shared/math/lroundbf16.h
+shared/math/lroundf.h
+shared/math/lroundf128.h
+shared/math/lroundf16.h
+shared/math/lroundl.h
+shared/math/modf.h
+shared/math/modfbf16.h
+shared/math/modff.h
+shared/math/modff128.h
+shared/math/modff16.h
+shared/math/modfl.h
+shared/math/nan.h
+shared/math/nanbf16.h
+shared/math/nanf.h
+shared/math/nanf128.h
+shared/math/nanf16.h
+shared/math/nanl.h
+shared/math/nearbyint.h
+shared/math/nearbyintbf16.h
+shared/math/nearbyintf.h
+shared/math/nearbyintf128.h
+shared/math/nearbyintf16.h
+shared/math/nearbyintl.h
+shared/math/nextafter.h
+shared/math/nextafterbf16.h
+shared/math/nextafterf.h
+shared/math/nextafterf128.h
+shared/math/nextafterf16.h
+shared/math/nextafterl.h
+shared/math/nextdown.h
+shared/math/nextdownbf16.h
+shared/math/nextdownf.h
+shared/math/nextdownf128.h
+shared/math/nextdownf16.h
+shared/math/nextdownl.h
+shared/math/nexttoward.h
+shared/math/nexttowardbf16.h
+shared/math/nexttowardf.h
+shared/math/nexttowardf16.h
+shared/math/nexttowardl.h
+shared/math/nextup.h
+shared/math/nextupbf16.h
+shared/math/nextupf.h
+shared/math/nextupf128.h
+shared/math/nextupf16.h
+shared/math/nextupl.h
+shared/math/pow.h
+shared/math/powf.h
+shared/math/remainder.h
+shared/math/remainderbf16.h
+shared/math/remainderf.h
+shared/math/remainderf128.h
+shared/math/remainderf16.h
+shared/math/remainderl.h
+shared/math/remquo.h
+shared/math/remquobf16.h
+shared/math/remquof.h
+shared/math/remquof128.h
+shared/math/remquof16.h
+shared/math/remquol.h
+shared/math/rint.h
+shared/math/rintbf16.h
+shared/math/rintf.h
+shared/math/rintf128.h
+shared/math/rintf16.h
+shared/math/rintl.h
+shared/math/round.h
+shared/math/roundbf16.h
+shared/math/roundeven.h
+shared/math/roundevenbf16.h
+shared/math/roundevenf.h
+shared/math/roundevenf128.h
+shared/math/roundevenf16.h
+shared/math/roundevenl.h
+shared/math/roundf.h
+shared/math/roundf128.h
+shared/math/roundf16.h
+shared/math/roundl.h
+shared/math/rsqrtf.h
+shared/math/rsqrtf16.h
+shared/math/scalbln.h
+shared/math/scalblnbf16.h
+shared/math/scalblnf.h
+shared/math/scalblnf128.h
+shared/math/scalblnf16.h
+shared/math/scalblnl.h
+shared/math/scalbn.h
+shared/math/scalbnbf16.h
+shared/math/scalbnf.h
+shared/math/scalbnf128.h
+shared/math/scalbnf16.h
+shared/math/scalbnl.h
+shared/math/setpayload.h
+shared/math/setpayloadbf16.h
+shared/math/setpayloadf.h
+shared/math/setpayloadf128.h
+shared/math/setpayloadf16.h
+shared/math/setpayloadl.h
+shared/math/setpayloadsig.h
+shared/math/setpayloadsigbf16.h
+shared/math/setpayloadsigf.h
+shared/math/setpayloadsigf128.h
+shared/math/setpayloadsigf16.h
+shared/math/setpayloadsigl.h
+shared/math/sin.h
+shared/math/sincos.h
+shared/math/sincosf.h
+shared/math/sinf.h
+shared/math/sinf16.h
+shared/math/sinhf.h
+shared/math/sinhf16.h
+shared/math/sinpif.h
+shared/math/sinpif16.h
+shared/math/sqrt.h
+shared/math/sqrtbf16.h
+shared/math/sqrtf.h
+shared/math/sqrtf128.h
+shared/math/sqrtf16.h
+shared/math/sqrtl.h
+shared/math/tan.h
+shared/math/tanbf16.h
+shared/math/tanf.h
+shared/math/tanf16.h
+shared/math/tanhf.h
+shared/math/tanhf16.h
+shared/math/tanpif.h
+shared/math/tanpif16.h
+shared/math/totalorder.h
+shared/math/totalorderbf16.h
+shared/math/totalorderf.h
+shared/math/totalorderf128.h
+shared/math/totalorderf16.h
+shared/math/totalorderl.h
+shared/math/totalordermag.h
+shared/math/totalordermagbf16.h
+shared/math/totalordermagf.h
+shared/math/totalordermagf128.h
+shared/math/totalordermagf16.h
+shared/math/totalordermagl.h
+shared/math/trunc.h
+shared/math/truncbf16.h
+shared/math/truncf.h
+shared/math/truncf128.h
+shared/math/truncf16.h
+shared/math/truncl.h
+shared/math/ufromfp.h
+shared/math/ufromfpbf16.h
+shared/math/ufromfpf.h
+shared/math/ufromfpf128.h
+shared/math/ufromfpf16.h
+shared/math/ufromfpl.h
+shared/math/ufromfpx.h
+shared/math/ufromfpxbf16.h
+shared/math/ufromfpxf.h
+shared/math/ufromfpxf128.h
+shared/math/ufromfpxf16.h
+shared/math/ufromfpxl.h
+src/__support/CPP/algorithm.h
+src/__support/CPP/array.h
+src/__support/CPP/bit.h
+src/__support/CPP/iterator.h
+src/__support/CPP/limits.h
+src/__support/CPP/optional.h
+src/__support/CPP/string_view.h
+src/__support/CPP/type_traits.h
+src/__support/CPP/type_traits/add_lvalue_reference.h
+src/__support/CPP/type_traits/add_pointer.h
+src/__support/CPP/type_traits/add_rvalue_reference.h
+src/__support/CPP/type_traits/aligned_storage.h
+src/__support/CPP/type_traits/always_false.h
+src/__support/CPP/type_traits/bool_constant.h
+src/__support/CPP/type_traits/conditional.h
+src/__support/CPP/type_traits/decay.h
+src/__support/CPP/type_traits/enable_if.h
+src/__support/CPP/type_traits/false_type.h
+src/__support/CPP/type_traits/has_unique_object_representations.h
+src/__support/CPP/type_traits/integral_constant.h
+src/__support/CPP/type_traits/invoke.h
+src/__support/CPP/type_traits/invoke_result.h
+src/__support/CPP/type_traits/is_arithmetic.h
+src/__support/CPP/type_traits/is_array.h
+src/__support/CPP/type_traits/is_assignable.h
+src/__support/CPP/type_traits/is_base_of.h
+src/__support/CPP/type_traits/is_class.h
+src/__support/CPP/type_traits/is_complex.h
+src/__support/CPP/type_traits/is_const.h
+src/__support/CPP/type_traits/is_constant_evaluated.h
+src/__support/CPP/type_traits/is_constructible.h
+src/__support/CPP/type_traits/is_convertible.h
+src/__support/CPP/type_traits/is_copy_assignable.h
+src/__support/CPP/type_traits/is_copy_constructible.h
+src/__support/CPP/type_traits/is_destructible.h
+src/__support/CPP/type_traits/is_enum.h
+src/__support/CPP/type_traits/is_fixed_point.h
+src/__support/CPP/type_traits/is_floating_point.h
+src/__support/CPP/type_traits/is_function.h
+src/__support/CPP/type_traits/is_integral.h
+src/__support/CPP/type_traits/is_lvalue_reference.h
+src/__support/CPP/type_traits/is_member_pointer.h
+src/__support/CPP/type_traits/is_move_assignable.h
+src/__support/CPP/type_traits/is_move_constructible.h
+src/__support/CPP/type_traits/is_null_pointer.h
+src/__support/CPP/type_traits/is_object.h
+src/__support/CPP/type_traits/is_pointer.h
+src/__support/CPP/type_traits/is_reference.h
+src/__support/CPP/type_traits/is_rvalue_reference.h
+src/__support/CPP/type_traits/is_same.h
+src/__support/CPP/type_traits/is_scalar.h
+src/__support/CPP/type_traits/is_signed.h
+src/__support/CPP/type_traits/is_trivially_constructible.h
+src/__support/CPP/type_traits/is_trivially_copyable.h
+src/__support/CPP/type_traits/is_trivially_destructible.h
+src/__support/CPP/type_traits/is_union.h
+src/__support/CPP/type_traits/is_unsigned.h
+src/__support/CPP/type_traits/is_void.h
+src/__support/CPP/type_traits/make_signed.h
+src/__support/CPP/type_traits/make_unsigned.h
+src/__support/CPP/type_traits/remove_all_extents.h
+src/__support/CPP/type_traits/remove_cv.h
+src/__support/CPP/type_traits/remove_cvref.h
+src/__support/CPP/type_traits/remove_extent.h
+src/__support/CPP/type_traits/remove_reference.h
+src/__support/CPP/type_traits/true_type.h
+src/__support/CPP/type_traits/type_identity.h
+src/__support/CPP/type_traits/void_t.h
+src/__support/CPP/utility.h
+src/__support/CPP/utility/declval.h
+src/__support/CPP/utility/forward.h
+src/__support/CPP/utility/in_place.h
+src/__support/CPP/utility/integer_sequence.h
+src/__support/CPP/utility/move.h
+src/__support/FPUtil/BasicOperations.h
+src/__support/FPUtil/DivisionAndRemainderOperations.h
+src/__support/FPUtil/FEnvImpl.h
+src/__support/FPUtil/FMA.h
+src/__support/FPUtil/FPBits.h
+src/__support/FPUtil/Hypot.h
+src/__support/FPUtil/ManipulationFunctions.h
+src/__support/FPUtil/NearestIntegerOperations.h
+src/__support/FPUtil/NormalFloat.h
+src/__support/FPUtil/PolyEval.h
+src/__support/FPUtil/bfloat16.h
+src/__support/FPUtil/cast.h
+src/__support/FPUtil/comparison_operations.h
+src/__support/FPUtil/double_double.h
+src/__support/FPUtil/dyadic_float.h
+src/__support/FPUtil/except_value_utils.h
+src/__support/FPUtil/generic/FMA.h
+src/__support/FPUtil/generic/FMod.h
+src/__support/FPUtil/generic/add_sub.h
+src/__support/FPUtil/generic/div.h
+src/__support/FPUtil/generic/mul.h
+src/__support/FPUtil/generic/sqrt.h
+src/__support/FPUtil/generic/sqrt_80_bit_long_double.h
+src/__support/FPUtil/multiply_add.h
+src/__support/FPUtil/nearest_integer.h
+src/__support/FPUtil/rounding_mode.h
+src/__support/FPUtil/sqrt.h
+src/__support/FPUtil/triple_double.h
+src/__support/FPUtil/x86_64/NextAfterLongDouble.h
+src/__support/FPUtil/x86_64/NextUpDownLongDouble.h
+src/__support/big_int.h
+src/__support/common.h
+src/__support/ctype_utils.h
+src/__support/detailed_powers_of_ten.h
+src/__support/high_precision_decimal.h
+src/__support/integer_literals.h
+src/__support/libc_assert.h
+src/__support/libc_errno.h
+src/__support/macros/attributes.h
+src/__support/macros/config.h
+src/__support/macros/hardening.h
+src/__support/macros/macro-utils.h
+src/__support/macros/null_check.h
+src/__support/macros/optimization.h
+src/__support/macros/properties/architectures.h
+src/__support/macros/properties/compiler.h
+src/__support/macros/properties/complex_types.h
+src/__support/macros/properties/cpu_features.h
+src/__support/macros/properties/os.h
+src/__support/macros/properties/types.h
+src/__support/macros/sanitizer.h
+src/__support/math/acos.h
+src/__support/math/acosbf16.h
+src/__support/math/acosf.h
+src/__support/math/acosf16.h
+src/__support/math/acosh_float_constants.h
+src/__support/math/acoshf.h
+src/__support/math/acoshf16.h
+src/__support/math/acoshf_utils.h
+src/__support/math/acospif.h
+src/__support/math/acospif16.h
+src/__support/math/asin.h
+src/__support/math/asin_utils.h
+src/__support/math/asinbf16.h
+src/__support/math/asinf.h
+src/__support/math/asinf16.h
+src/__support/math/asinhf.h
+src/__support/math/asinhf16.h
+src/__support/math/asinpi.h
+src/__support/math/asinpif.h
+src/__support/math/asinpif16.h
+src/__support/math/atan.h
+src/__support/math/atan2.h
+src/__support/math/atan2f.h
+src/__support/math/atan2f128.h
+src/__support/math/atan2f16.h
+src/__support/math/atan_utils.h
+src/__support/math/atanbf16.h
+src/__support/math/atanf.h
+src/__support/math/atanf16.h
+src/__support/math/atanhf.h
+src/__support/math/atanhf16.h
+src/__support/math/atanpif16.h
+src/__support/math/bf16add.h
+src/__support/math/bf16addf.h
+src/__support/math/bf16addf128.h
+src/__support/math/bf16addl.h
+src/__support/math/bf16div.h
+src/__support/math/bf16divf.h
+src/__support/math/bf16divf128.h
+src/__support/math/bf16divl.h
+src/__support/math/bf16fma.h
+src/__support/math/bf16fmaf.h
+src/__support/math/bf16fmaf128.h
+src/__support/math/bf16fmal.h
+src/__support/math/bf16mul.h
+src/__support/math/bf16mulf.h
+src/__support/math/bf16mulf128.h
+src/__support/math/bf16mull.h
+src/__support/math/bf16sub.h
+src/__support/math/bf16subf.h
+src/__support/math/bf16subf128.h
+src/__support/math/bf16subl.h
+src/__support/math/canonicalize.h
+src/__support/math/canonicalizebf16.h
+src/__support/math/canonicalizef.h
+src/__support/math/canonicalizef128.h
+src/__support/math/canonicalizef16.h
+src/__support/math/canonicalizel.h
+src/__support/math/cbrt.h
+src/__support/math/cbrtbf16.h
+src/__support/math/cbrtf.h
+src/__support/math/cbrtf16.h
+src/__support/math/ceil.h
+src/__support/math/ceilbf16.h
+src/__support/math/ceilf.h
+src/__support/math/ceilf128.h
+src/__support/math/ceilf16.h
+src/__support/math/ceill.h
+src/__support/math/common_constants.h
+src/__support/math/copysign.h
+src/__support/math/copysignbf16.h
+src/__support/math/copysignf.h
+src/__support/math/copysignf128.h
+src/__support/math/copysignf16.h
+src/__support/math/copysignl.h
+src/__support/math/cos.h
+src/__support/math/cosf.h
+src/__support/math/cosf16.h
+src/__support/math/coshf.h
+src/__support/math/coshf16.h
+src/__support/math/cospif.h
+src/__support/math/cospif16.h
+src/__support/math/daddf128.h
+src/__support/math/daddl.h
+src/__support/math/ddivf128.h
+src/__support/math/ddivl.h
+src/__support/math/dfmaf128.h
+src/__support/math/dfmal.h
+src/__support/math/dmulf128.h
+src/__support/math/dmull.h
+src/__support/math/dsqrtf128.h
+src/__support/math/dsqrtl.h
+src/__support/math/dsubf128.h
+src/__support/math/dsubl.h
+src/__support/math/erfcf16.h
+src/__support/math/erff.h
+src/__support/math/erff16.h
+src/__support/math/exp.h
+src/__support/math/exp10.h
+src/__support/math/exp10_float16_constants.h
+src/__support/math/exp10f.h
+src/__support/math/exp10f16.h
+src/__support/math/exp10f16_utils.h
+src/__support/math/exp10f_utils.h
+src/__support/math/exp10m1f.h
+src/__support/math/exp10m1f16.h
+src/__support/math/exp2.h
+src/__support/math/exp2f.h
+src/__support/math/exp2f16.h
+src/__support/math/exp2m1f.h
+src/__support/math/exp2m1f16.h
+src/__support/math/exp_constants.h
+src/__support/math/exp_float_constants.h
+src/__support/math/exp_utils.h
+src/__support/math/expbf16.h
+src/__support/math/expf.h
+src/__support/math/expf16.h
+src/__support/math/expf16_utils.h
+src/__support/math/expm1.h
+src/__support/math/expm1f.h
+src/__support/math/expm1f16.h
+src/__support/math/expxf16_utils.h
+src/__support/math/f16add.h
+src/__support/math/f16addf.h
+src/__support/math/f16addf128.h
+src/__support/math/f16addl.h
+src/__support/math/f16div.h
+src/__support/math/f16divf.h
+src/__support/math/f16divf128.h
+src/__support/math/f16divl.h
+src/__support/math/f16fma.h
+src/__support/math/f16fmaf.h
+src/__support/math/f16fmaf128.h
+src/__support/math/f16fmal.h
+src/__support/math/f16mul.h
+src/__support/math/f16mulf.h
+src/__support/math/f16mulf128.h
+src/__support/math/f16mull.h
+src/__support/math/f16sqrt.h
+src/__support/math/f16sqrtf.h
+src/__support/math/f16sqrtf128.h
+src/__support/math/f16sqrtl.h
+src/__support/math/f16sub.h
+src/__support/math/f16subf.h
+src/__support/math/f16subf128.h
+src/__support/math/f16subl.h
+src/__support/math/fabs.h
+src/__support/math/fabsbf16.h
+src/__support/math/fabsf.h
+src/__support/math/fabsf128.h
+src/__support/math/fabsf16.h
+src/__support/math/fabsl.h
+src/__support/math/fadd.h
+src/__support/math/faddf128.h
+src/__support/math/faddl.h
+src/__support/math/fdim.h
+src/__support/math/fdimbf16.h
+src/__support/math/fdimf.h
+src/__support/math/fdimf128.h
+src/__support/math/fdimf16.h
+src/__support/math/fdiml.h
+src/__support/math/fdiv.h
+src/__support/math/fdivf128.h
+src/__support/math/fdivl.h
+src/__support/math/ffma.h
+src/__support/math/ffmaf128.h
+src/__support/math/ffmal.h
+src/__support/math/floor.h
+src/__support/math/floorbf16.h
+src/__support/math/floorf.h
+src/__support/math/floorf128.h
+src/__support/math/floorf16.h
+src/__support/math/floorl.h
+src/__support/math/fma.h
+src/__support/math/fmabf16.h
+src/__support/math/fmaf.h
+src/__support/math/fmaf16.h
+src/__support/math/fmax.h
+src/__support/math/fmaxbf16.h
+src/__support/math/fmaxf.h
+src/__support/math/fmaxf128.h
+src/__support/math/fmaxf16.h
+src/__support/math/fmaximum.h
+src/__support/math/fmaximum_mag.h
+src/__support/math/fmaximum_mag_num.h
+src/__support/math/fmaximum_mag_numbf16.h
+src/__support/math/fmaximum_mag_numf.h
+src/__support/math/fmaximum_mag_numf128.h
+src/__support/math/fmaximum_mag_numf16.h
+src/__support/math/fmaximum_mag_numl.h
+src/__support/math/fmaximum_magbf16.h
+src/__support/math/fmaximum_magf.h
+src/__support/math/fmaximum_magf128.h
+src/__support/math/fmaximum_magf16.h
+src/__support/math/fmaximum_magl.h
+src/__support/math/fmaximum_num.h
+src/__support/math/fmaximum_numbf16.h
+src/__support/math/fmaximum_numf.h
+src/__support/math/fmaximum_numf128.h
+src/__support/math/fmaximum_numf16.h
+src/__support/math/fmaximum_numl.h
+src/__support/math/fmaximumbf16.h
+src/__support/math/fmaximumf.h
+src/__support/math/fmaximumf128.h
+src/__support/math/fmaximumf16.h
+src/__support/math/fmaximuml.h
+src/__support/math/fmaxl.h
+src/__support/math/fmin.h
+src/__support/math/fminbf16.h
+src/__support/math/fminf.h
+src/__support/math/fminf128.h
+src/__support/math/fminf16.h
+src/__support/math/fminimum.h
+src/__support/math/fminimum_mag.h
+src/__support/math/fminimum_mag_num.h
+src/__support/math/fminimum_mag_numbf16.h
+src/__support/math/fminimum_mag_numf.h
+src/__support/math/fminimum_mag_numf128.h
+src/__support/math/fminimum_mag_numf16.h
+src/__support/math/fminimum_mag_numl.h
+src/__support/math/fminimum_magbf16.h
+src/__support/math/fminimum_magf.h
+src/__support/math/fminimum_magf128.h
+src/__support/math/fminimum_magf16.h
+src/__support/math/fminimum_magl.h
+src/__support/math/fminimum_num.h
+src/__support/math/fminimum_numbf16.h
+src/__support/math/fminimum_numf.h
+src/__support/math/fminimum_numf128.h
+src/__support/math/fminimum_numf16.h
+src/__support/math/fminimum_numl.h
+src/__support/math/fminimumbf16.h
+src/__support/math/fminimumf.h
+src/__support/math/fminimumf128.h
+src/__support/math/fminimumf16.h
+src/__support/math/fminimuml.h
+src/__support/math/fminl.h
+src/__support/math/fmod.h
+src/__support/math/fmodbf16.h
+src/__support/math/fmodf.h
+src/__support/math/fmodf128.h
+src/__support/math/fmodf16.h
+src/__support/math/fmodl.h
+src/__support/math/fmul.h
+src/__support/math/fmulf128.h
+src/__support/math/fmull.h
+src/__support/math/frexp.h
+src/__support/math/frexpbf16.h
+src/__support/math/frexpf.h
+src/__support/math/frexpf128.h
+src/__support/math/frexpf16.h
+src/__support/math/frexpl.h
+src/__support/math/fromfp.h
+src/__support/math/fromfpbf16.h
+src/__support/math/fromfpf.h
+src/__support/math/fromfpf128.h
+src/__support/math/fromfpf16.h
+src/__support/math/fromfpl.h
+src/__support/math/fromfpx.h
+src/__support/math/fromfpxbf16.h
+src/__support/math/fromfpxf.h
+src/__support/math/fromfpxf128.h
+src/__support/math/fromfpxf16.h
+src/__support/math/fromfpxl.h
+src/__support/math/fsqrt.h
+src/__support/math/fsqrtf128.h
+src/__support/math/fsqrtl.h
+src/__support/math/fsub.h
+src/__support/math/fsubf128.h
+src/__support/math/fsubl.h
+src/__support/math/getpayload.h
+src/__support/math/getpayloadbf16.h
+src/__support/math/getpayloadf.h
+src/__support/math/getpayloadf128.h
+src/__support/math/getpayloadf16.h
+src/__support/math/getpayloadl.h
+src/__support/math/hypot.h
+src/__support/math/hypotbf16.h
+src/__support/math/hypotf.h
+src/__support/math/hypotf16.h
+src/__support/math/ilogb.h
+src/__support/math/ilogbbf16.h
+src/__support/math/ilogbf.h
+src/__support/math/ilogbf128.h
+src/__support/math/ilogbf16.h
+src/__support/math/ilogbl.h
+src/__support/math/iscanonicalbf16.h
+src/__support/math/iscanonicalf.h
+src/__support/math/iscanonicalf128.h
+src/__support/math/iscanonicalf16.h
+src/__support/math/iscanonicall.h
+src/__support/math/isnanf.h
+src/__support/math/isnanf128.h
+src/__support/math/isnanf16.h
+src/__support/math/isnanl.h
+src/__support/math/issignalingbf16.h
+src/__support/math/issignalingf.h
+src/__support/math/issignalingf128.h
+src/__support/math/issignalingf16.h
+src/__support/math/issignalingl.h
+src/__support/math/ldexp.h
+src/__support/math/ldexpbf16.h
+src/__support/math/ldexpf.h
+src/__support/math/ldexpf128.h
+src/__support/math/ldexpf16.h
+src/__support/math/ldexpl.h
+src/__support/math/lgammaf16.h
+src/__support/math/llogb.h
+src/__support/math/llogbbf16.h
+src/__support/math/llogbf.h
+src/__support/math/llogbf128.h
+src/__support/math/llogbf16.h
+src/__support/math/llogbl.h
+src/__support/math/llrint.h
+src/__support/math/llrintbf16.h
+src/__support/math/llrintf.h
+src/__support/math/llrintf128.h
+src/__support/math/llrintf16.h
+src/__support/math/llrintl.h
+src/__support/math/llround.h
+src/__support/math/llroundbf16.h
+src/__support/math/llroundf.h
+src/__support/math/llroundf128.h
+src/__support/math/llroundf16.h
+src/__support/math/llroundl.h
+src/__support/math/log.h
+src/__support/math/log10.h
+src/__support/math/log10f.h
+src/__support/math/log10f16.h
+src/__support/math/log10p1f16.h
+src/__support/math/log1p.h
+src/__support/math/log1pf.h
+src/__support/math/log2.h
+src/__support/math/log2f.h
+src/__support/math/log2f16.h
+src/__support/math/log2p1f16.h
+src/__support/math/log_bf16.h
+src/__support/math/log_range_reduction.h
+src/__support/math/logb.h
+src/__support/math/logbbf16.h
+src/__support/math/logbf.h
+src/__support/math/logbf128.h
+src/__support/math/logbf16.h
+src/__support/math/logbl.h
+src/__support/math/logf.h
+src/__support/math/logf16.h
+src/__support/math/lrint.h
+src/__support/math/lrintbf16.h
+src/__support/math/lrintf.h
+src/__support/math/lrintf128.h
+src/__support/math/lrintf16.h
+src/__support/math/lrintl.h
+src/__support/math/lround.h
+src/__support/math/lroundbf16.h
+src/__support/math/lroundf.h
+src/__support/math/lroundf128.h
+src/__support/math/lroundf16.h
+src/__support/math/lroundl.h
+src/__support/math/modf.h
+src/__support/math/modfbf16.h
+src/__support/math/modff.h
+src/__support/math/modff128.h
+src/__support/math/modff16.h
+src/__support/math/modfl.h
+src/__support/math/nan.h
+src/__support/math/nanbf16.h
+src/__support/math/nanf.h
+src/__support/math/nanf128.h
+src/__support/math/nanf16.h
+src/__support/math/nanl.h
+src/__support/math/nearbyint.h
+src/__support/math/nearbyintbf16.h
+src/__support/math/nearbyintf.h
+src/__support/math/nearbyintf128.h
+src/__support/math/nearbyintf16.h
+src/__support/math/nearbyintl.h
+src/__support/math/nextafter.h
+src/__support/math/nextafterbf16.h
+src/__support/math/nextafterf.h
+src/__support/math/nextafterf128.h
+src/__support/math/nextafterf16.h
+src/__support/math/nextafterl.h
+src/__support/math/nextdown.h
+src/__support/math/nextdownbf16.h
+src/__support/math/nextdownf.h
+src/__support/math/nextdownf128.h
+src/__support/math/nextdownf16.h
+src/__support/math/nextdownl.h
+src/__support/math/nexttoward.h
+src/__support/math/nexttowardbf16.h
+src/__support/math/nexttowardf.h
+src/__support/math/nexttowardf16.h
+src/__support/math/nexttowardl.h
+src/__support/math/nextup.h
+src/__support/math/nextupbf16.h
+src/__support/math/nextupf.h
+src/__support/math/nextupf128.h
+src/__support/math/nextupf16.h
+src/__support/math/nextupl.h
+src/__support/math/pow.h
+src/__support/math/powf.h
+src/__support/math/range_reduction.h
+src/__support/math/range_reduction_double_common.h
+src/__support/math/range_reduction_double_nofma.h
+src/__support/math/remainder.h
+src/__support/math/remainderbf16.h
+src/__support/math/remainderf.h
+src/__support/math/remainderf128.h
+src/__support/math/remainderf16.h
+src/__support/math/remainderl.h
+src/__support/math/remquo.h
+src/__support/math/remquobf16.h
+src/__support/math/remquof.h
+src/__support/math/remquof128.h
+src/__support/math/remquof16.h
+src/__support/math/remquol.h
+src/__support/math/rint.h
+src/__support/math/rintbf16.h
+src/__support/math/rintf.h
+src/__support/math/rintf128.h
+src/__support/math/rintf16.h
+src/__support/math/rintl.h
+src/__support/math/round.h
+src/__support/math/roundbf16.h
+src/__support/math/roundeven.h
+src/__support/math/roundevenbf16.h
+src/__support/math/roundevenf.h
+src/__support/math/roundevenf128.h
+src/__support/math/roundevenf16.h
+src/__support/math/roundevenl.h
+src/__support/math/roundf.h
+src/__support/math/roundf128.h
+src/__support/math/roundf16.h
+src/__support/math/roundl.h
+src/__support/math/rsqrtf.h
+src/__support/math/rsqrtf16.h
+src/__support/math/scalbln.h
+src/__support/math/scalblnbf16.h
+src/__support/math/scalblnf.h
+src/__support/math/scalblnf128.h
+src/__support/math/scalblnf16.h
+src/__support/math/scalblnl.h
+src/__support/math/scalbn.h
+src/__support/math/scalbnbf16.h
+src/__support/math/scalbnf.h
+src/__support/math/scalbnf128.h
+src/__support/math/scalbnf16.h
+src/__support/math/scalbnl.h
+src/__support/math/setpayload.h
+src/__support/math/setpayloadbf16.h
+src/__support/math/setpayloadf.h
+src/__support/math/setpayloadf128.h
+src/__support/math/setpayloadf16.h
+src/__support/math/setpayloadl.h
+src/__support/math/setpayloadsig.h
+src/__support/math/setpayloadsigbf16.h
+src/__support/math/setpayloadsigf.h
+src/__support/math/setpayloadsigf128.h
+src/__support/math/setpayloadsigf16.h
+src/__support/math/setpayloadsigl.h
+src/__support/math/sin.h
+src/__support/math/sincos.h
+src/__support/math/sincos_eval.h
+src/__support/math/sincosf.h
+src/__support/math/sincosf16_utils.h
+src/__support/math/sincosf_utils.h
+src/__support/math/sinf.h
+src/__support/math/sinf16.h
+src/__support/math/sinhf.h
+src/__support/math/sinhf16.h
+src/__support/math/sinhfcoshf_utils.h
+src/__support/math/sinpif.h
+src/__support/math/sinpif16.h
+src/__support/math/sqrt.h
+src/__support/math/sqrtbf16.h
+src/__support/math/sqrtf.h
+src/__support/math/sqrtf128.h
+src/__support/math/sqrtf16.h
+src/__support/math/sqrtl.h
+src/__support/math/tan.h
+src/__support/math/tanbf16.h
+src/__support/math/tanf.h
+src/__support/math/tanf16.h
+src/__support/math/tanhf.h
+src/__support/math/tanhf16.h
+src/__support/math/tanpif.h
+src/__support/math/tanpif16.h
+src/__support/math/totalorder.h
+src/__support/math/totalorderbf16.h
+src/__support/math/totalorderf.h
+src/__support/math/totalorderf128.h
+src/__support/math/totalorderf16.h
+src/__support/math/totalorderl.h
+src/__support/math/totalordermag.h
+src/__support/math/totalordermagbf16.h
+src/__support/math/totalordermagf.h
+src/__support/math/totalordermagf128.h
+src/__support/math/totalordermagf16.h
+src/__support/math/totalordermagl.h
+src/__support/math/trunc.h
+src/__support/math/truncbf16.h
+src/__support/math/truncf.h
+src/__support/math/truncf128.h
+src/__support/math/truncf16.h
+src/__support/math/truncl.h
+src/__support/math/ufromfp.h
+src/__support/math/ufromfpbf16.h
+src/__support/math/ufromfpf.h
+src/__support/math/ufromfpf128.h
+src/__support/math/ufromfpf16.h
+src/__support/math/ufromfpl.h
+src/__support/math/ufromfpx.h
+src/__support/math/ufromfpxbf16.h
+src/__support/math/ufromfpxf.h
+src/__support/math/ufromfpxf128.h
+src/__support/math/ufromfpxf16.h
+src/__support/math/ufromfpxl.h
+src/__support/math_extras.h
+src/__support/number_pair.h
+src/__support/sign.h
+src/__support/str_to_float.h
+src/__support/str_to_integer.h
+src/__support/str_to_num_result.h
+src/__support/uint128.h
+src/__support/wctype_utils.h
>From 24f10280efed2cf632624a1e3805c1b40635d00b Mon Sep 17 00:00:00 2001
From: hulxv <hulxxv at gmail.com>
Date: Tue, 8 Sep 2026 18:23:56 +0300
Subject: [PATCH 4/6] merge export script into FindLibcCommonUtils
---
cmake/Modules/FindLibcCommonUtils.cmake | 30 ++++++++++++++++++-
compiler-rt/lib/builtins/CMakeLists.txt | 11 ++++---
.../libc-isolation/export-libc-shared.cmake | 25 ----------------
3 files changed, 34 insertions(+), 32 deletions(-)
delete mode 100644 compiler-rt/lib/builtins/libc-isolation/export-libc-shared.cmake
diff --git a/cmake/Modules/FindLibcCommonUtils.cmake b/cmake/Modules/FindLibcCommonUtils.cmake
index 8f3a2738c60039..603715f3bfbeae 100644
--- a/cmake/Modules/FindLibcCommonUtils.cmake
+++ b/cmake/Modules/FindLibcCommonUtils.cmake
@@ -6,8 +6,36 @@
#
#===--------------------------------------------------------------------===//
+set(libc_path ${CMAKE_CURRENT_LIST_DIR}/../../libc)
+
+if(CMAKE_SCRIPT_MODE_FILE)
+ if(NOT DEST OR NOT MANIFEST)
+ message(FATAL_ERROR "set DEST and MANIFEST")
+ endif()
+ if(NOT LIBC_ROOT)
+ set(LIBC_ROOT ${libc_path})
+ endif()
+
+ file(STRINGS "${MANIFEST}" _lines)
+ set(_count 0)
+ foreach(_rel IN LISTS _lines)
+ string(STRIP "${_rel}" _rel)
+ if(_rel STREQUAL "" OR _rel MATCHES "^#")
+ continue()
+ endif()
+ if(NOT EXISTS "${LIBC_ROOT}/${_rel}")
+ message(FATAL_ERROR "manifest lists a missing file: ${LIBC_ROOT}/${_rel}")
+ endif()
+ get_filename_component(_dstdir "${DEST}/${_rel}" DIRECTORY)
+ file(MAKE_DIRECTORY "${_dstdir}")
+ configure_file("${LIBC_ROOT}/${_rel}" "${DEST}/${_rel}" COPYONLY)
+ math(EXPR _count "${_count} + 1")
+ endforeach()
+ message(STATUS "exported ${_count} libc headers into ${DEST}")
+ return()
+endif()
+
if(NOT TARGET llvm-libc-common-utilities)
- set(libc_path ${CMAKE_CURRENT_LIST_DIR}/../../libc)
if (EXISTS ${libc_path} AND IS_DIRECTORY ${libc_path})
add_library(llvm-libc-common-utilities INTERFACE)
# TODO: Reorganize the libc shared section so that it can be included without
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index d830b8ce1b9a7a..6eb520fd3d6fe6 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -267,14 +267,14 @@ set(x86_80_BIT_SOURCES
option(COMPILER_RT_USE_LIBC_MATH
"Use LLVM libc math routines for floating-point builtins" OFF)
-# libc include root; point at an isolated subset (see libc-isolation/) to prove
-# the builtins build against that subset alone. Empty = the in-tree libc.
+# libc include root; point at an isolated subset (libc/utils/libc-isolation) to
+# prove the builtins build against it alone. Empty = the in-tree libc.
set(COMPILER_RT_LIBC_SHARED_INCLUDE_ROOT "" CACHE PATH
"Include root for the libc-backed builtins (default: the LLVM-libc source tree)")
# Where compiler-rt-export-libc-shared writes that subset (per the manifest).
set(COMPILER_RT_LIBC_SHARED_EXPORT_DIR "" CACHE PATH
- "Destination for the extracted LLVM-libc shared subset (see libc-isolation/)")
+ "Destination for the extracted LLVM-libc shared subset")
# Swap the legacy soft-float <name>.c builtin in <list> for the libc-backed
# <name>.cpp implementation (which delegates to LIBC_NAMESPACE::shared::*).
@@ -303,10 +303,9 @@ if(COMPILER_RT_USE_LIBC_MATH)
if(COMPILER_RT_LIBC_SHARED_EXPORT_DIR)
add_custom_target(compiler-rt-export-libc-shared
COMMAND ${CMAKE_COMMAND}
- -DLIBC_ROOT=${_libc_root}
-DDEST=${COMPILER_RT_LIBC_SHARED_EXPORT_DIR}
- -DMANIFEST=${CMAKE_CURRENT_SOURCE_DIR}/libc-isolation/libc-shared-manifest.txt
- -P ${CMAKE_CURRENT_SOURCE_DIR}/libc-isolation/export-libc-shared.cmake
+ -DMANIFEST=${_libc_root}/utils/libc-isolation/shared-builtins-manifest.txt
+ -P ${_libc_root}/../cmake/Modules/FindLibcCommonUtils.cmake
VERBATIM
COMMENT "Exporting LLVM-libc shared subset to ${COMPILER_RT_LIBC_SHARED_EXPORT_DIR}")
endif()
diff --git a/compiler-rt/lib/builtins/libc-isolation/export-libc-shared.cmake b/compiler-rt/lib/builtins/libc-isolation/export-libc-shared.cmake
deleted file mode 100644
index 1ee4ab9a912450..00000000000000
--- a/compiler-rt/lib/builtins/libc-isolation/export-libc-shared.cmake
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copy the manifest's libc headers into DEST, preserving their paths, so
-# compiler-rt can build the libc-backed builtins against that subset alone.
-#
-# cmake -DLIBC_ROOT=<libc> -DDEST=<dir> -DMANIFEST=<file> -P export-libc-shared.cmake
-
-if(NOT LIBC_ROOT OR NOT DEST OR NOT MANIFEST)
- message(FATAL_ERROR "set LIBC_ROOT, DEST and MANIFEST")
-endif()
-
-file(STRINGS "${MANIFEST}" _lines)
-set(_count 0)
-foreach(_rel IN LISTS _lines)
- string(STRIP "${_rel}" _rel)
- if(_rel STREQUAL "" OR _rel MATCHES "^#")
- continue()
- endif()
- if(NOT EXISTS "${LIBC_ROOT}/${_rel}")
- message(FATAL_ERROR "manifest lists a missing file: ${LIBC_ROOT}/${_rel}")
- endif()
- get_filename_component(_dstdir "${DEST}/${_rel}" DIRECTORY)
- file(MAKE_DIRECTORY "${_dstdir}")
- configure_file("${LIBC_ROOT}/${_rel}" "${DEST}/${_rel}" COPYONLY)
- math(EXPR _count "${_count} + 1")
-endforeach()
-message(STATUS "export-libc-shared: copied ${_count} files into ${DEST}")
>From 932203afecbd43dd2f37056c012e5125af8f5f2b Mon Sep 17 00:00:00 2001
From: hulxv <hulxxv at gmail.com>
Date: Tue, 8 Sep 2026 18:23:57 +0300
Subject: [PATCH 5/6] update ci job
---
.../compiler-rt-libc-builtins-tests.yml | 23 ++++++++-----------
1 file changed, 10 insertions(+), 13 deletions(-)
diff --git a/.github/workflows/compiler-rt-libc-builtins-tests.yml b/.github/workflows/compiler-rt-libc-builtins-tests.yml
index c9c8d304a6b1e1..3a5ce818f42d82 100644
--- a/.github/workflows/compiler-rt-libc-builtins-tests.yml
+++ b/.github/workflows/compiler-rt-libc-builtins-tests.yml
@@ -60,7 +60,7 @@ jobs:
if: github.repository_owner == 'llvm'
runs-on: ubuntu-24.04
container:
- image: ghcr.io/llvm/libc-ubuntu-24.04
+ image: ghcr.io/llvm/libc-ubuntu-24.04 at sha256:21ec79420a21127ad1b559c76adbd496cd076a9f9d3ef9bb460cd3b9c39fe206
steps:
- uses: actions/checkout at de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -68,25 +68,23 @@ jobs:
persist-credentials: false
- name: Manifest matches the live header closure
- shell: bash
run: |
- d="compiler-rt/lib/builtins/libc-isolation"
- if ! diff -u \
- <(grep -v '^#' "$d/libc-shared-manifest.txt") \
- <(CXX=clang++-23 bash "$d/libc-shared-closure.sh"); then
- echo "::error::libc-shared-manifest.txt is stale. Regenerate it with:"
- echo " CXX=clang++-23 $d/regen-manifest.sh"
+ manifest=libc/utils/libc-isolation/shared-builtins-manifest.txt
+ grep -v '^#' "$manifest" > expected-headers.txt
+ CXX=clang++-23 bash libc/utils/libc-isolation/shared-closure.sh \
+ shared/builtins.h > actual-headers.txt
+ if ! diff -u expected-headers.txt actual-headers.txt; then
+ echo "::error::$manifest is stale. Regenerate it with:"
+ echo " CXX=clang++-23 libc/utils/libc-isolation/regen-manifests.sh"
exit 1
fi
- name: Extract the shared subset
run: |
- d="compiler-rt/lib/builtins/libc-isolation"
cmake \
- -DLIBC_ROOT="$PWD/libc" \
-DDEST="$PWD/libc-shared-subset" \
- -DMANIFEST="$PWD/$d/libc-shared-manifest.txt" \
- -P "$d/export-libc-shared.cmake"
+ -DMANIFEST="$PWD/libc/utils/libc-isolation/shared-builtins-manifest.txt" \
+ -P cmake/Modules/FindLibcCommonUtils.cmake
- name: Configure CMake against the subset only
run: |
@@ -109,5 +107,4 @@ jobs:
run: |
cmake \
--build build-iso \
- --parallel \
--target check-builtins
>From f932d189ba5335a027686011ca35a911cd3b7a7f Mon Sep 17 00:00:00 2001
From: hulxv <hulxxv at gmail.com>
Date: Tue, 8 Sep 2026 18:34:17 +0300
Subject: [PATCH 6/6] update manifests for new libc headers
---
libc/utils/libc-isolation/shared-builtins-manifest.txt | 1 +
libc/utils/libc-isolation/shared-math-manifest.txt | 5 +++++
2 files changed, 6 insertions(+)
diff --git a/libc/utils/libc-isolation/shared-builtins-manifest.txt b/libc/utils/libc-isolation/shared-builtins-manifest.txt
index 0d1bb5e23ea8dc..b7cd4326afc0cc 100644
--- a/libc/utils/libc-isolation/shared-builtins-manifest.txt
+++ b/libc/utils/libc-isolation/shared-builtins-manifest.txt
@@ -137,6 +137,7 @@ src/__support/CPP/utility/forward.h
src/__support/CPP/utility/in_place.h
src/__support/CPP/utility/integer_sequence.h
src/__support/CPP/utility/move.h
+src/__support/CPP/utility/swap.h
src/__support/FPUtil/BasicOperations.h
src/__support/FPUtil/FEnvImpl.h
src/__support/FPUtil/FPBits.h
diff --git a/libc/utils/libc-isolation/shared-math-manifest.txt b/libc/utils/libc-isolation/shared-math-manifest.txt
index 8524d376a0f6f5..da1ac8f2dd125a 100644
--- a/libc/utils/libc-isolation/shared-math-manifest.txt
+++ b/libc/utils/libc-isolation/shared-math-manifest.txt
@@ -313,6 +313,7 @@ shared/math/ldexpf.h
shared/math/ldexpf128.h
shared/math/ldexpf16.h
shared/math/ldexpl.h
+shared/math/lgammaf.h
shared/math/lgammaf16.h
shared/math/llogb.h
shared/math/llogbbf16.h
@@ -590,6 +591,7 @@ src/__support/CPP/utility/forward.h
src/__support/CPP/utility/in_place.h
src/__support/CPP/utility/integer_sequence.h
src/__support/CPP/utility/move.h
+src/__support/CPP/utility/swap.h
src/__support/FPUtil/BasicOperations.h
src/__support/FPUtil/DivisionAndRemainderOperations.h
src/__support/FPUtil/FEnvImpl.h
@@ -606,6 +608,7 @@ src/__support/FPUtil/comparison_operations.h
src/__support/FPUtil/double_double.h
src/__support/FPUtil/dyadic_float.h
src/__support/FPUtil/except_value_utils.h
+src/__support/FPUtil/float128.h
src/__support/FPUtil/generic/FMA.h
src/__support/FPUtil/generic/FMod.h
src/__support/FPUtil/generic/add_sub.h
@@ -911,6 +914,7 @@ src/__support/math/fsqrtl.h
src/__support/math/fsub.h
src/__support/math/fsubf128.h
src/__support/math/fsubl.h
+src/__support/math/gamma_util.h
src/__support/math/getpayload.h
src/__support/math/getpayloadbf16.h
src/__support/math/getpayloadf.h
@@ -947,6 +951,7 @@ src/__support/math/ldexpf.h
src/__support/math/ldexpf128.h
src/__support/math/ldexpf16.h
src/__support/math/ldexpl.h
+src/__support/math/lgammaf.h
src/__support/math/lgammaf16.h
src/__support/math/llogb.h
src/__support/math/llogbbf16.h
More information about the libc-commits
mailing list