[libcxx] [llvm] [CI] Migrate to runtimes build (PR #142696)
Aiden Grossman via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 9 22:30:50 PDT 2025
https://github.com/boomanaiden154 updated https://github.com/llvm/llvm-project/pull/142696
>From d5b8a8bf145e570af0109dc6b08349277582b24c Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Tue, 3 Jun 2025 23:35:16 +0000
Subject: [PATCH 1/7] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20ch?=
=?UTF-8?q?anges=20to=20main=20this=20commit=20is=20based=20on?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.4
[skip ci]
---
.ci/compute_projects.py | 29 ++++++---
.ci/compute_projects_test.py | 11 ++++
.ci/monolithic-linux.sh | 60 +++++--------------
.../mdspan/extents/assert.conversion.pass.cpp | 1 +
.../extents/assert.ctor_from_array.pass.cpp | 1 +
.../assert.ctor_from_integral.pass.cpp | 1 +
.../extents/assert.ctor_from_span.pass.cpp | 1 +
.../views/mdspan/extents/assert.obs.pass.cpp | 1 +
.../layout_left/assert.conversion.pass.cpp | 1 +
.../layout_left/assert.ctor.extents.pass.cpp | 1 +
.../assert.ctor.layout_right.pass.cpp | 1 +
.../assert.ctor.layout_stride.pass.cpp | 1 +
.../layout_right/assert.conversion.pass.cpp | 1 +
.../layout_right/assert.ctor.extents.pass.cpp | 1 +
.../assert.ctor.layout_left.pass.cpp | 1 +
.../assert.ctor.layout_stride.pass.cpp | 1 +
.../assert.ctor.extents_array.pass.cpp | 1 +
.../assert.ctor.extents_span.pass.cpp | 1 +
18 files changed, 60 insertions(+), 55 deletions(-)
diff --git a/.ci/compute_projects.py b/.ci/compute_projects.py
index 17a2136a270d5..40dd0507a9eaf 100644
--- a/.ci/compute_projects.py
+++ b/.ci/compute_projects.py
@@ -57,6 +57,13 @@
".ci": {"llvm", "clang", "lld", "lldb"},
}
+# This mapping describes runtimes that should be enabled for a specific project,
+# but not necessarily run for testing. The only case of this currently is lldb
+# which needs some runtimes enabled for tests.
+DEPENDENT_RUNTIMES_TO_BUILD = {"lldb": {"libcxx", "libcxxabi", "libunwind"}}
+
+# This mapping describes runtimes that should be tested when the key project is
+# touched.
DEPENDENT_RUNTIMES_TO_TEST = {"clang": {"libcxx", "libcxxabi", "libunwind"}}
EXCLUDE_LINUX = {
@@ -180,16 +187,20 @@ def _compute_project_check_targets(projects_to_test: Set[str]) -> Set[str]:
def _compute_runtimes_to_test(projects_to_test: Set[str]) -> Set[str]:
runtimes_to_test = set()
for project_to_test in projects_to_test:
- if project_to_test not in DEPENDENT_RUNTIMES_TO_TEST:
- continue
- runtimes_to_test.update(DEPENDENT_RUNTIMES_TO_TEST[project_to_test])
+ if project_to_test in DEPENDENT_RUNTIMES_TO_TEST:
+ runtimes_to_test.update(DEPENDENT_RUNTIMES_TO_TEST[project_to_test])
+ if project_to_test in DEPENDENT_RUNTIMES_TO_BUILD:
+ runtimes_to_test.update(DEPENDENT_RUNTIMES_TO_BUILD[project_to_test])
return runtimes_to_test
-def _compute_runtime_check_targets(runtimes_to_test: Set[str]) -> Set[str]:
+def _compute_runtime_check_targets(projects_to_test: Set[str]) -> Set[str]:
check_targets = set()
- for runtime_to_test in runtimes_to_test:
- check_targets.add(PROJECT_CHECK_TARGETS[runtime_to_test])
+ for project_to_test in projects_to_test:
+ if project_to_test not in DEPENDENT_RUNTIMES_TO_TEST:
+ continue
+ for runtime_to_test in DEPENDENT_RUNTIMES_TO_TEST[project_to_test]:
+ check_targets.add(PROJECT_CHECK_TARGETS[runtime_to_test])
return check_targets
@@ -216,8 +227,8 @@ def get_env_variables(modified_files: list[str], platform: str) -> Set[str]:
projects_to_test = _compute_projects_to_test(modified_projects, platform)
projects_to_build = _compute_projects_to_build(projects_to_test)
projects_check_targets = _compute_project_check_targets(projects_to_test)
- runtimes_to_test = _compute_runtimes_to_test(projects_to_test)
- runtimes_check_targets = _compute_runtime_check_targets(runtimes_to_test)
+ runtimes_to_build = _compute_runtimes_to_test(projects_to_test)
+ runtimes_check_targets = _compute_runtime_check_targets(projects_to_test)
# We use a semicolon to separate the projects/runtimes as they get passed
# to the CMake invocation and thus we need to use the CMake list separator
# (;). We use spaces to separate the check targets as they end up getting
@@ -225,7 +236,7 @@ def get_env_variables(modified_files: list[str], platform: str) -> Set[str]:
return {
"projects_to_build": ";".join(sorted(projects_to_build)),
"project_check_targets": " ".join(sorted(projects_check_targets)),
- "runtimes_to_build": ";".join(sorted(runtimes_to_test)),
+ "runtimes_to_build": ";".join(sorted(runtimes_to_build)),
"runtimes_check_targets": " ".join(sorted(runtimes_check_targets)),
}
diff --git a/.ci/compute_projects_test.py b/.ci/compute_projects_test.py
index 885f1dd6af845..ae376ea6a43cd 100644
--- a/.ci/compute_projects_test.py
+++ b/.ci/compute_projects_test.py
@@ -205,6 +205,17 @@ def test_ci(self):
"check-cxx check-cxxabi check-unwind",
)
+ def test_lldb(self):
+ env_variables = compute_projects.get_env_variables(
+ ["lldb/CMakeLists.txt"], "Linux"
+ )
+ self.assertEqual(env_variables["projects_to_build"], "clang;lldb;llvm")
+ self.assertEqual(env_variables["project_check_targets"], "check-lldb")
+ self.assertEqual(
+ env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind"
+ )
+ self.assertEqual(env_variables["runtimes_check_targets"], "")
+
if __name__ == "__main__":
unittest.main()
diff --git a/.ci/monolithic-linux.sh b/.ci/monolithic-linux.sh
index f5a31fa45a641..7503ea4e6a992 100755
--- a/.ci/monolithic-linux.sh
+++ b/.ci/monolithic-linux.sh
@@ -55,6 +55,8 @@ trap at-exit EXIT
projects="${1}"
targets="${2}"
+runtimes="${3}"
+runtime_targets="${4}"
lit_args="-v --xunit-xml-output ${BUILD_DIR}/test-results.xml --use-unique-output-file-name --timeout=1200 --time-tests"
@@ -70,7 +72,7 @@ export LLVM_SYMBOLIZER_PATH=`which llvm-symbolizer`
# It will not be built unless it is used.
cmake -S "${MONOREPO_ROOT}"/llvm -B "${BUILD_DIR}" \
-D LLVM_ENABLE_PROJECTS="${projects}" \
- -D LLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
+ -D LLVM_ENABLE_RUNTIMES="${runtimes}" \
-G Ninja \
-D CMAKE_PREFIX_PATH="${HOME}/.local" \
-D CMAKE_BUILD_TYPE=Release \
@@ -91,62 +93,28 @@ echo "--- ninja"
# Targets are not escaped as they are passed as separate arguments.
ninja -C "${BUILD_DIR}" -k 0 ${targets}
-runtimes="${3}"
-runtime_targets="${4}"
-
# Compiling runtimes with just-built Clang and running their tests
# as an additional testing for Clang.
-if [[ "${runtimes}" != "" ]]; then
- if [[ "${runtime_targets}" == "" ]]; then
- echo "Runtimes to build are specified, but targets are not."
- exit 1
- fi
-
- echo "--- ninja install-clang"
-
- ninja -C ${BUILD_DIR} install-clang install-clang-resource-headers
-
- RUNTIMES_BUILD_DIR="${MONOREPO_ROOT}/build-runtimes"
- INSTALL_DIR="${BUILD_DIR}/install"
- mkdir -p ${RUNTIMES_BUILD_DIR}
-
+if [[ "${runtimes_targets}" != "" ]]; then
echo "--- cmake runtimes C++26"
- rm -rf "${RUNTIMES_BUILD_DIR}"
- cmake -S "${MONOREPO_ROOT}/runtimes" -B "${RUNTIMES_BUILD_DIR}" -GNinja \
- -D CMAKE_C_COMPILER="${INSTALL_DIR}/bin/clang" \
- -D CMAKE_CXX_COMPILER="${INSTALL_DIR}/bin/clang++" \
- -D LLVM_ENABLE_RUNTIMES="${runtimes}" \
- -D LIBCXX_CXX_ABI=libcxxabi \
- -D CMAKE_BUILD_TYPE=RelWithDebInfo \
- -D CMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
- -D LIBCXX_TEST_PARAMS="std=c++26" \
- -D LIBCXXABI_TEST_PARAMS="std=c++26" \
- -D LLVM_LIT_ARGS="${lit_args}"
+ cmake \
+ -D LIBCXX_TEST_PARAMS="std=c++26" \
+ -D LIBCXXABI_TEST_PARAMS="std=c++26" \
+ "${BUILD_DIR}"
echo "--- ninja runtimes C++26"
- ninja -vC "${RUNTIMES_BUILD_DIR}" ${runtime_targets}
+ ninja -C "${BUILD_DIR}" ${runtime_targets}
echo "--- cmake runtimes clang modules"
- # We don't need to do a clean build of runtimes, because LIBCXX_TEST_PARAMS
- # and LIBCXXABI_TEST_PARAMS only affect lit configuration, which successfully
- # propagates without a clean build. Other that those two variables, builds
- # are supposed to be the same.
-
- cmake -S "${MONOREPO_ROOT}/runtimes" -B "${RUNTIMES_BUILD_DIR}" -GNinja \
- -D CMAKE_C_COMPILER="${INSTALL_DIR}/bin/clang" \
- -D CMAKE_CXX_COMPILER="${INSTALL_DIR}/bin/clang++" \
- -D LLVM_ENABLE_RUNTIMES="${runtimes}" \
- -D LIBCXX_CXX_ABI=libcxxabi \
- -D CMAKE_BUILD_TYPE=RelWithDebInfo \
- -D CMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
- -D LIBCXX_TEST_PARAMS="enable_modules=clang" \
- -D LIBCXXABI_TEST_PARAMS="enable_modules=clang" \
- -D LLVM_LIT_ARGS="${lit_args}"
+ cmake \
+ -D LIBCXX_TEST_PARAMS="enable_modules=clang" \
+ -D LIBCXXABI_TEST_PARAMS="enable_modules=clang" \
+ "${BUILD_DIR}"
echo "--- ninja runtimes clang modules"
- ninja -vC "${RUNTIMES_BUILD_DIR}" ${runtime_targets}
+ ninja -C "${BUILD_DIR}" ${runtime_targets}
fi
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp
index 31766e4c51c3b..6ac70d9bd63df 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp
@@ -30,6 +30,7 @@
// (((Extents != dynamic_extent) && (OtherExtents == dynamic_extent)) || ... ) ||
// (numeric_limits<index_type>::max() < numeric_limits<OtherIndexType>::max())
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp
index 90cb0c84a063b..fc52424eacdf2 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp
@@ -30,6 +30,7 @@
// for every rank index r.
//
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp
index 37e79aabf8532..2fc57a35dacad 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp
@@ -32,6 +32,7 @@
// - each element of exts is nonnegative and is representable as a value of type index_type.
//
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp
index 5bf5143590180..4c3f0a7c5cc70 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp
@@ -28,6 +28,7 @@
// for every rank index r.
//
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp
index c473879d87b71..980d9889187a6 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp
@@ -24,6 +24,7 @@
//
// Returns: Di.
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp
index 7b6616f19d724..bf7a4fd398bcd 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp
@@ -21,6 +21,7 @@
//
// Preconditions: other.required_span_size() is representable as a value of type index_type.
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp
index 7c96f8ec9353f..8a1cf24221f8e 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp
@@ -19,6 +19,7 @@
//
// Effects: Direct-non-list-initializes extents_ with e.
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp
index e578bac2103b0..310b91e593cd8 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp
@@ -23,6 +23,7 @@
//
// Preconditions: other.required_span_size() is representable as a value of type index_type
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp
index cec8df8aba8d6..5e9c4f15133c9 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp
@@ -32,6 +32,7 @@
//
// Effects: Direct-non-list-initializes extents_ with other.extents().
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp
index df16edb925407..5fa6cc949e571 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp
@@ -21,6 +21,7 @@
//
// Preconditions: other.required_span_size() is representable as a value of type index_type.
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp
index 52095691f6d24..a2aa0be0102ca 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp
@@ -19,6 +19,7 @@
//
// Effects: Direct-non-list-initializes extents_ with e.
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp
index 1757ddb286b9c..79ee49e7a925c 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp
@@ -23,6 +23,7 @@
//
// Preconditions: other.required_span_size() is representable as a value of type index_type
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp
index b77d964540f9d..fa83d6087ec85 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp
@@ -32,6 +32,7 @@
//
// Effects: Direct-non-list-initializes extents_ with other.extents().
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp
index 6782a9789f89f..0ba5ffb47c7ea 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp
@@ -30,6 +30,7 @@
//
// Effects: Direct-non-list-initializes extents_ with e, and for all d in the range [0, rank_), direct-non-list-initializes strides_[d] with as_const(s[d]).
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp
index 74e4793c91372..f8e7ddc8b5770 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp
@@ -30,6 +30,7 @@
//
// Effects: Direct-non-list-initializes extents_ with e, and for all d in the range [0, rank_), direct-non-list-initializes strides_[d] with as_const(s[d]).
+#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
>From 360e723b51ee201603f72b56859cd7c6d6faec24 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 5 Jun 2025 06:51:37 +0000
Subject: [PATCH 2/7] feedback
Created using spr 1.3.4
---
.ci/compute_projects.py | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)
diff --git a/.ci/compute_projects.py b/.ci/compute_projects.py
index b12b729eadd3f..8134e1e2c29fb 100644
--- a/.ci/compute_projects.py
+++ b/.ci/compute_projects.py
@@ -145,22 +145,15 @@ def _add_dependencies(projects: Set[str], runtimes: Set[str]) -> Set[str]:
def _exclude_projects(current_projects: Set[str], platform: str) -> Set[str]:
- new_project_set = set(current_projects)
if platform == "Linux":
- for to_exclude in EXCLUDE_LINUX:
- if to_exclude in new_project_set:
- new_project_set.remove(to_exclude)
+ to_exclude = EXCLUDE_LINUX
elif platform == "Windows":
- for to_exclude in EXCLUDE_WINDOWS:
- if to_exclude in new_project_set:
- new_project_set.remove(to_exclude)
+ to_exclude = EXCLUDE_WINDOWS
elif platform == "Darwin":
- for to_exclude in EXCLUDE_MAC:
- if to_exclude in new_project_set:
- new_project_set.remove(to_exclude)
+ to_exclude = EXCLUDE_MAC
else:
- raise ValueError("Unexpected platform.")
- return new_project_set
+ raise ValueError(f"Unexpected platform: {platform}")
+ return current_projects.difference(to_exclude)
def _compute_projects_to_test(modified_projects: Set[str], platform: str) -> Set[str]:
>From 4d278b5cc46ce5781deb6063a8ff16ee380d21e2 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 5 Jun 2025 08:38:10 +0000
Subject: [PATCH 3/7] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20ch?=
=?UTF-8?q?anges=20introduced=20through=20rebase?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.4
[skip ci]
---
libcxx/include/mdspan | 1 +
.../containers/views/mdspan/extents/assert.conversion.pass.cpp | 1 -
.../views/mdspan/extents/assert.ctor_from_array.pass.cpp | 1 -
.../views/mdspan/extents/assert.ctor_from_integral.pass.cpp | 1 -
.../views/mdspan/extents/assert.ctor_from_span.pass.cpp | 2 +-
.../libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp | 1 -
.../views/mdspan/layout_left/assert.conversion.pass.cpp | 1 -
.../views/mdspan/layout_left/assert.ctor.extents.pass.cpp | 1 -
.../views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp | 1 -
.../views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp | 1 -
.../views/mdspan/layout_right/assert.conversion.pass.cpp | 1 -
.../views/mdspan/layout_right/assert.ctor.extents.pass.cpp | 1 -
.../views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp | 1 -
.../mdspan/layout_right/assert.ctor.layout_stride.pass.cpp | 1 -
.../mdspan/layout_stride/assert.ctor.extents_array.pass.cpp | 2 +-
.../mdspan/layout_stride/assert.ctor.extents_span.pass.cpp | 2 +-
libcxx/test/std/containers/views/mdspan/CustomTestLayouts.h | 1 -
.../std/containers/views/mdspan/extents/comparison.pass.cpp | 1 -
.../std/containers/views/mdspan/extents/conversion.pass.cpp | 1 -
libcxx/test/std/containers/views/mdspan/extents/ctad.pass.cpp | 1 -
.../test/std/containers/views/mdspan/extents/dextents.pass.cpp | 1 -
libcxx/test/std/containers/views/mdspan/extents/dims.pass.cpp | 1 -
.../std/containers/views/mdspan/extents/index_type.verify.cpp | 1 -
.../std/containers/views/mdspan/extents/obs_static.pass.cpp | 1 -
libcxx/test/std/containers/views/mdspan/extents/types.pass.cpp | 1 -
.../std/containers/views/mdspan/layout_left/comparison.pass.cpp | 1 -
.../containers/views/mdspan/layout_left/ctor.default.pass.cpp | 1 -
.../containers/views/mdspan/layout_left/ctor.extents.pass.cpp | 1 -
.../views/mdspan/layout_left/ctor.layout_right.pass.cpp | 1 -
.../views/mdspan/layout_left/ctor.layout_stride.pass.cpp | 1 -
.../containers/views/mdspan/layout_left/ctor.mapping.pass.cpp | 1 -
.../containers/views/mdspan/layout_left/index_operator.pass.cpp | 1 -
.../std/containers/views/mdspan/layout_left/properties.pass.cpp | 1 -
.../views/mdspan/layout_left/required_span_size.pass.cpp | 1 -
.../views/mdspan/layout_left/static_requirements.pass.cpp | 1 -
.../std/containers/views/mdspan/layout_left/stride.pass.cpp | 1 -
.../containers/views/mdspan/layout_right/comparison.pass.cpp | 1 -
.../containers/views/mdspan/layout_right/ctor.default.pass.cpp | 1 -
.../containers/views/mdspan/layout_right/ctor.extents.pass.cpp | 1 -
.../views/mdspan/layout_right/ctor.layout_left.pass.cpp | 1 -
.../views/mdspan/layout_right/ctor.layout_stride.pass.cpp | 1 -
.../containers/views/mdspan/layout_right/ctor.mapping.pass.cpp | 1 -
.../views/mdspan/layout_right/index_operator.pass.cpp | 1 -
.../containers/views/mdspan/layout_right/properties.pass.cpp | 1 -
.../views/mdspan/layout_right/required_span_size.pass.cpp | 1 -
.../views/mdspan/layout_right/static_requirements.pass.cpp | 1 -
.../std/containers/views/mdspan/layout_right/stride.pass.cpp | 1 -
.../containers/views/mdspan/layout_stride/comparison.pass.cpp | 1 -
.../containers/views/mdspan/layout_stride/ctor.default.pass.cpp | 1 -
.../views/mdspan/layout_stride/ctor.extents_array.pass.cpp | 1 -
.../views/mdspan/layout_stride/ctor.strided_mapping.pass.cpp | 1 -
.../views/mdspan/layout_stride/index_operator.pass.cpp | 1 -
.../mdspan/layout_stride/is_exhaustive_corner_case.pass.cpp | 1 -
.../containers/views/mdspan/layout_stride/properties.pass.cpp | 1 -
.../views/mdspan/layout_stride/required_span_size.pass.cpp | 1 -
.../views/mdspan/layout_stride/static_requirements.pass.cpp | 1 -
.../std/containers/views/mdspan/layout_stride/stride.pass.cpp | 1 -
libcxx/test/std/containers/views/mdspan/mdspan/assign.pass.cpp | 1 -
.../test/std/containers/views/mdspan/mdspan/conversion.pass.cpp | 1 -
.../test/std/containers/views/mdspan/mdspan/ctor.copy.pass.cpp | 1 -
.../std/containers/views/mdspan/mdspan/ctor.default.pass.cpp | 1 -
.../std/containers/views/mdspan/mdspan/ctor.dh_array.pass.cpp | 1 -
.../std/containers/views/mdspan/mdspan/ctor.dh_extents.pass.cpp | 1 -
.../containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp | 1 -
.../std/containers/views/mdspan/mdspan/ctor.dh_map.pass.cpp | 1 -
.../std/containers/views/mdspan/mdspan/ctor.dh_map_acc.pass.cpp | 1 -
.../test/std/containers/views/mdspan/mdspan/ctor.move.pass.cpp | 1 -
libcxx/test/std/containers/views/mdspan/mdspan/move.pass.cpp | 1 -
.../test/std/containers/views/mdspan/mdspan/properties.pass.cpp | 1 -
libcxx/test/std/containers/views/mdspan/mdspan/swap.pass.cpp | 1 -
libcxx/test/std/containers/views/mdspan/mdspan/types.pass.cpp | 1 -
71 files changed, 4 insertions(+), 70 deletions(-)
diff --git a/libcxx/include/mdspan b/libcxx/include/mdspan
index 43982e0f339b8..06d2fb6fcd026 100644
--- a/libcxx/include/mdspan
+++ b/libcxx/include/mdspan
@@ -450,6 +450,7 @@ namespace std {
# include <__config>
# if _LIBCPP_STD_VER >= 23
+# include <__fwd/span.h>
# include <__fwd/mdspan.h>
# include <__mdspan/default_accessor.h>
# include <__mdspan/extents.h>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp
index 6ac70d9bd63df..31766e4c51c3b 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.conversion.pass.cpp
@@ -30,7 +30,6 @@
// (((Extents != dynamic_extent) && (OtherExtents == dynamic_extent)) || ... ) ||
// (numeric_limits<index_type>::max() < numeric_limits<OtherIndexType>::max())
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp
index fc52424eacdf2..90cb0c84a063b 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_array.pass.cpp
@@ -30,7 +30,6 @@
// for every rank index r.
//
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp
index 2fc57a35dacad..37e79aabf8532 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_integral.pass.cpp
@@ -32,7 +32,6 @@
// - each element of exts is nonnegative and is representable as a value of type index_type.
//
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp
index 4c3f0a7c5cc70..041a0f2f42f00 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.ctor_from_span.pass.cpp
@@ -28,7 +28,7 @@
// for every rank index r.
//
-#include <span> // dynamic_extent
+#include <span>
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp
index 980d9889187a6..c473879d87b71 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/extents/assert.obs.pass.cpp
@@ -24,7 +24,6 @@
//
// Returns: Di.
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp
index bf7a4fd398bcd..7b6616f19d724 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.conversion.pass.cpp
@@ -21,7 +21,6 @@
//
// Preconditions: other.required_span_size() is representable as a value of type index_type.
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp
index 8a1cf24221f8e..7c96f8ec9353f 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.extents.pass.cpp
@@ -19,7 +19,6 @@
//
// Effects: Direct-non-list-initializes extents_ with e.
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp
index 310b91e593cd8..e578bac2103b0 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_right.pass.cpp
@@ -23,7 +23,6 @@
//
// Preconditions: other.required_span_size() is representable as a value of type index_type
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp
index 5e9c4f15133c9..cec8df8aba8d6 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_left/assert.ctor.layout_stride.pass.cpp
@@ -32,7 +32,6 @@
//
// Effects: Direct-non-list-initializes extents_ with other.extents().
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp
index 5fa6cc949e571..df16edb925407 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.conversion.pass.cpp
@@ -21,7 +21,6 @@
//
// Preconditions: other.required_span_size() is representable as a value of type index_type.
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp
index a2aa0be0102ca..52095691f6d24 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.extents.pass.cpp
@@ -19,7 +19,6 @@
//
// Effects: Direct-non-list-initializes extents_ with e.
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp
index 79ee49e7a925c..1757ddb286b9c 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_left.pass.cpp
@@ -23,7 +23,6 @@
//
// Preconditions: other.required_span_size() is representable as a value of type index_type
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp
index fa83d6087ec85..b77d964540f9d 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_right/assert.ctor.layout_stride.pass.cpp
@@ -32,7 +32,6 @@
//
// Effects: Direct-non-list-initializes extents_ with other.extents().
-#include <span> // dynamic_extent
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp
index 0ba5ffb47c7ea..50536dfde122f 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_array.pass.cpp
@@ -30,7 +30,7 @@
//
// Effects: Direct-non-list-initializes extents_ with e, and for all d in the range [0, rank_), direct-non-list-initializes strides_[d] with as_const(s[d]).
-#include <span> // dynamic_extent
+#include <span>
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp b/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp
index f8e7ddc8b5770..be9da6e2089a6 100644
--- a/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp
+++ b/libcxx/test/libcxx/containers/views/mdspan/layout_stride/assert.ctor.extents_span.pass.cpp
@@ -30,7 +30,7 @@
//
// Effects: Direct-non-list-initializes extents_ with e, and for all d in the range [0, rank_), direct-non-list-initializes strides_[d] with as_const(s[d]).
-#include <span> // dynamic_extent
+#include <span>
#include <mdspan>
#include <cassert>
diff --git a/libcxx/test/std/containers/views/mdspan/CustomTestLayouts.h b/libcxx/test/std/containers/views/mdspan/CustomTestLayouts.h
index 7cd42139758e3..588a5e9774a55 100644
--- a/libcxx/test/std/containers/views/mdspan/CustomTestLayouts.h
+++ b/libcxx/test/std/containers/views/mdspan/CustomTestLayouts.h
@@ -25,7 +25,6 @@
#include <cstddef>
#include <limits>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include <utility>
diff --git a/libcxx/test/std/containers/views/mdspan/extents/comparison.pass.cpp b/libcxx/test/std/containers/views/mdspan/extents/comparison.pass.cpp
index 1d713044e60f7..65bb5475353d3 100644
--- a/libcxx/test/std/containers/views/mdspan/extents/comparison.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/extents/comparison.pass.cpp
@@ -20,7 +20,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/extents/conversion.pass.cpp b/libcxx/test/std/containers/views/mdspan/extents/conversion.pass.cpp
index 7baaa7ec9898e..4b6b1a63b80f9 100644
--- a/libcxx/test/std/containers/views/mdspan/extents/conversion.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/extents/conversion.pass.cpp
@@ -32,7 +32,6 @@
#include <cstddef>
#include <limits>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
template <class To, class From>
diff --git a/libcxx/test/std/containers/views/mdspan/extents/ctad.pass.cpp b/libcxx/test/std/containers/views/mdspan/extents/ctad.pass.cpp
index 82f111153ce6a..b72c3e050b1f9 100644
--- a/libcxx/test/std/containers/views/mdspan/extents/ctad.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/extents/ctad.pass.cpp
@@ -19,7 +19,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "../ConvertibleToIntegral.h"
diff --git a/libcxx/test/std/containers/views/mdspan/extents/dextents.pass.cpp b/libcxx/test/std/containers/views/mdspan/extents/dextents.pass.cpp
index 2adfa49d3bc47..a9fc8f3bed074 100644
--- a/libcxx/test/std/containers/views/mdspan/extents/dextents.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/extents/dextents.pass.cpp
@@ -18,7 +18,6 @@
#include <mdspan>
#include <cstddef>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/extents/dims.pass.cpp b/libcxx/test/std/containers/views/mdspan/extents/dims.pass.cpp
index 0476c11efdb64..e74bc0e66fca1 100644
--- a/libcxx/test/std/containers/views/mdspan/extents/dims.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/extents/dims.pass.cpp
@@ -18,7 +18,6 @@
#include <mdspan>
#include <cstddef>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/extents/index_type.verify.cpp b/libcxx/test/std/containers/views/mdspan/extents/index_type.verify.cpp
index cdc0464251419..ba6941a1ab4c1 100644
--- a/libcxx/test/std/containers/views/mdspan/extents/index_type.verify.cpp
+++ b/libcxx/test/std/containers/views/mdspan/extents/index_type.verify.cpp
@@ -19,7 +19,6 @@
#include <cstddef>
#include <climits>
#include <mdspan>
-#include <span> // dynamic_extent
void invalid_index_types() {
// expected-error@*:* {{static assertion failed: extents::index_type must be a signed or unsigned integer type}}
diff --git a/libcxx/test/std/containers/views/mdspan/extents/obs_static.pass.cpp b/libcxx/test/std/containers/views/mdspan/extents/obs_static.pass.cpp
index 1d5f61d02e4ff..12d5e5a85f64e 100644
--- a/libcxx/test/std/containers/views/mdspan/extents/obs_static.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/extents/obs_static.pass.cpp
@@ -29,7 +29,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <utility>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/extents/types.pass.cpp b/libcxx/test/std/containers/views/mdspan/extents/types.pass.cpp
index 10bc769473951..5b28a58e06c47 100644
--- a/libcxx/test/std/containers/views/mdspan/extents/types.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/extents/types.pass.cpp
@@ -26,7 +26,6 @@
#include <concepts>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/comparison.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/comparison.pass.cpp
index 151da5ba61740..6db8fa48f5def 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/comparison.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/comparison.pass.cpp
@@ -18,7 +18,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.default.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.default.pass.cpp
index 12c59a4caf10e..7fb657e9debb3 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.default.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.default.pass.cpp
@@ -18,7 +18,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.extents.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.extents.pass.cpp
index 299012dc5af84..c13775c8ba75f 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.extents.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.extents.pass.cpp
@@ -21,7 +21,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_right.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_right.pass.cpp
index 1e8f8fb54d5ef..f7ea39acf0179 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_right.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_right.pass.cpp
@@ -24,7 +24,6 @@
#include <cstddef>
#include <limits>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_stride.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_stride.pass.cpp
index 1668c26a697d4..cbd759eaf72cb 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_stride.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.layout_stride.pass.cpp
@@ -27,7 +27,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.mapping.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.mapping.pass.cpp
index 737e5f3d25728..28749327033aa 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/ctor.mapping.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/ctor.mapping.pass.cpp
@@ -22,7 +22,6 @@
#include <cstddef>
#include <limits>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/index_operator.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/index_operator.pass.cpp
index 75fd37055ad60..55d9539d8c63f 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/index_operator.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/index_operator.pass.cpp
@@ -27,7 +27,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/properties.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/properties.pass.cpp
index 32442ecd5a0e6..e252e0ec73a78 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/properties.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/properties.pass.cpp
@@ -29,7 +29,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <utility>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/required_span_size.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/required_span_size.pass.cpp
index 9ad61b0799c15..174c9633c2677 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/required_span_size.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/required_span_size.pass.cpp
@@ -18,7 +18,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/static_requirements.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/static_requirements.pass.cpp
index 6410fecdab59e..7b42e5045854a 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/static_requirements.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/static_requirements.pass.cpp
@@ -79,7 +79,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include <utility>
diff --git a/libcxx/test/std/containers/views/mdspan/layout_left/stride.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_left/stride.pass.cpp
index 064c279bcc49f..0b1f9f57ecabf 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_left/stride.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_left/stride.pass.cpp
@@ -23,7 +23,6 @@
#include <cassert>
#include <cstdint>
#include <cstdio>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/comparison.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/comparison.pass.cpp
index a65d7d39db8e2..bcf26e0f53866 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/comparison.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/comparison.pass.cpp
@@ -18,7 +18,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.default.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.default.pass.cpp
index d644b0ff18d82..1ef377191404f 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.default.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.default.pass.cpp
@@ -18,7 +18,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.extents.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.extents.pass.cpp
index cd0cff838fac5..5579e5a0d3030 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.extents.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.extents.pass.cpp
@@ -21,7 +21,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_left.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_left.pass.cpp
index 994d98a803211..8f49b37732616 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_left.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_left.pass.cpp
@@ -24,7 +24,6 @@
#include <cstddef>
#include <limits>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_stride.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_stride.pass.cpp
index 89321f860dc3a..5886eba9d15ee 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_stride.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.layout_stride.pass.cpp
@@ -27,7 +27,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.mapping.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.mapping.pass.cpp
index ee00c688301ef..7a08f694f3103 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/ctor.mapping.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/ctor.mapping.pass.cpp
@@ -22,7 +22,6 @@
#include <cstddef>
#include <limits>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/index_operator.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/index_operator.pass.cpp
index e9362ed50df24..4623af7fb5b76 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/index_operator.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/index_operator.pass.cpp
@@ -27,7 +27,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/properties.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/properties.pass.cpp
index 857ec3cb05835..29204775c5f5c 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/properties.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/properties.pass.cpp
@@ -29,7 +29,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <utility>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/required_span_size.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/required_span_size.pass.cpp
index 2ffd1f41f9638..d19dccfe23aa2 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/required_span_size.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/required_span_size.pass.cpp
@@ -18,7 +18,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/static_requirements.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/static_requirements.pass.cpp
index b7e01d14532d4..b9add4da42827 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/static_requirements.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/static_requirements.pass.cpp
@@ -79,7 +79,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include <utility>
diff --git a/libcxx/test/std/containers/views/mdspan/layout_right/stride.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_right/stride.pass.cpp
index c04f07847c0be..7784c572e9cfe 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_right/stride.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_right/stride.pass.cpp
@@ -23,7 +23,6 @@
#include <cassert>
#include <cstdint>
#include <cstdio>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/comparison.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/comparison.pass.cpp
index 7c9b4a4ded34d..37e20a3061f5f 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/comparison.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/comparison.pass.cpp
@@ -25,7 +25,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.default.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.default.pass.cpp
index 055986d80c726..27843805d91ba 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.default.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.default.pass.cpp
@@ -24,7 +24,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.extents_array.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.extents_array.pass.cpp
index bbda6d4a73631..380c5eb90c033 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.extents_array.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.extents_array.pass.cpp
@@ -32,7 +32,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.strided_mapping.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.strided_mapping.pass.cpp
index 6ba67ea2d0122..66946d2b77b65 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.strided_mapping.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/ctor.strided_mapping.pass.cpp
@@ -38,7 +38,6 @@
#include <mdspan>
#include <cassert>
#include <limits>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/index_operator.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/index_operator.pass.cpp
index 5669991b8a13a..b483885049a7b 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/index_operator.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/index_operator.pass.cpp
@@ -27,7 +27,6 @@
#include <array>
#include <cassert>
#include <cstdint>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/is_exhaustive_corner_case.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/is_exhaustive_corner_case.pass.cpp
index 9f51cc01cf9df..900adb42096a7 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/is_exhaustive_corner_case.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/is_exhaustive_corner_case.pass.cpp
@@ -23,7 +23,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
template <class E>
constexpr void
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/properties.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/properties.pass.cpp
index eac1029882e3a..21ce56fcc65f1 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/properties.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/properties.pass.cpp
@@ -43,7 +43,6 @@
#include <concepts>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/required_span_size.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/required_span_size.pass.cpp
index 629849646bb22..cf1685f6676f9 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/required_span_size.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/required_span_size.pass.cpp
@@ -24,7 +24,6 @@
#include <cstddef>
#include <cstdint>
#include <mdspan>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/static_requirements.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/static_requirements.pass.cpp
index 8131ecde5d769..1c31421424b1b 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/static_requirements.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/static_requirements.pass.cpp
@@ -79,7 +79,6 @@
#include <cassert>
#include <cstddef>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include <utility>
diff --git a/libcxx/test/std/containers/views/mdspan/layout_stride/stride.pass.cpp b/libcxx/test/std/containers/views/mdspan/layout_stride/stride.pass.cpp
index 2f16b1f6ec9aa..8c462af54e009 100644
--- a/libcxx/test/std/containers/views/mdspan/layout_stride/stride.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/layout_stride/stride.pass.cpp
@@ -23,7 +23,6 @@
#include <cassert>
#include <cstdint>
#include <cstdio>
-#include <span> // dynamic_extent
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/assign.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/assign.pass.cpp
index e0577aeb2826d..0dc789cc09be7 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/assign.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/assign.pass.cpp
@@ -14,7 +14,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/conversion.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/conversion.pass.cpp
index 1adab199b0ca6..63a673f87b415 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/conversion.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/conversion.pass.cpp
@@ -41,7 +41,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.copy.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.copy.pass.cpp
index b35a4fb832a1a..d00d275b222de 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.copy.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.copy.pass.cpp
@@ -16,7 +16,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.default.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.default.pass.cpp
index f77dbc46285a7..ac7918b331e7c 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.default.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.default.pass.cpp
@@ -24,7 +24,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_array.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_array.pass.cpp
index f9540fd99c991..f4ceb862d66bc 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_array.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_array.pass.cpp
@@ -32,7 +32,6 @@
#include <cassert>
#include <concepts>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_extents.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_extents.pass.cpp
index 4d9f91f63d54c..4b94dcfed169b 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_extents.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_extents.pass.cpp
@@ -26,7 +26,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp
index 381b2d3a8bc2a..ebed92da74138 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_integers.pass.cpp
@@ -33,7 +33,6 @@
#include <cassert>
#include <concepts>
#include <mdspan>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map.pass.cpp
index f5e9c1b7e2a4c..2260e679aa288 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map.pass.cpp
@@ -24,7 +24,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map_acc.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map_acc.pass.cpp
index 3239c1d65deb9..8ca1bf5eafb57 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map_acc.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.dh_map_acc.pass.cpp
@@ -21,7 +21,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.move.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.move.pass.cpp
index 46ba2b2096c40..71b119567cd33 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/ctor.move.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/ctor.move.pass.cpp
@@ -16,7 +16,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/move.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/move.pass.cpp
index 5ce2d06712bf6..70ca0d580ac1e 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/move.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/move.pass.cpp
@@ -16,7 +16,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/properties.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/properties.pass.cpp
index 6368acd0b0f41..504af33783721 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/properties.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/properties.pass.cpp
@@ -54,7 +54,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/swap.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/swap.pass.cpp
index 47f2abecade8f..3d5de0c49b814 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/swap.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/swap.pass.cpp
@@ -19,7 +19,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
diff --git a/libcxx/test/std/containers/views/mdspan/mdspan/types.pass.cpp b/libcxx/test/std/containers/views/mdspan/mdspan/types.pass.cpp
index 69bce593bd363..b576419828b71 100644
--- a/libcxx/test/std/containers/views/mdspan/mdspan/types.pass.cpp
+++ b/libcxx/test/std/containers/views/mdspan/mdspan/types.pass.cpp
@@ -30,7 +30,6 @@
#include <mdspan>
#include <cassert>
#include <concepts>
-#include <span> // dynamic_extent
#include <type_traits>
#include "test_macros.h"
>From b33a541a669b9deb809ee8fca701bcd3a5dc7c9e Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 5 Jun 2025 08:43:05 +0000
Subject: [PATCH 4/7] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20ch?=
=?UTF-8?q?anges=20introduced=20through=20rebase?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.4
[skip ci]
---
libcxx/include/mdspan | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcxx/include/mdspan b/libcxx/include/mdspan
index 06d2fb6fcd026..32468a128dc9a 100644
--- a/libcxx/include/mdspan
+++ b/libcxx/include/mdspan
@@ -450,8 +450,8 @@ namespace std {
# include <__config>
# if _LIBCPP_STD_VER >= 23
-# include <__fwd/span.h>
# include <__fwd/mdspan.h>
+# include <__fwd/span.h>
# include <__mdspan/default_accessor.h>
# include <__mdspan/extents.h>
# include <__mdspan/layout_left.h>
>From 26a48b3ba70c829862788335f4b5b610dfd5dd3a Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Thu, 5 Jun 2025 08:55:00 +0000
Subject: [PATCH 5/7] feedback
Created using spr 1.3.4
---
.ci/compute_projects.py | 20 ++++++++++----------
.ci/compute_projects_test.py | 32 ++++++++++++++++----------------
.ci/monolithic-linux.sh | 8 ++++----
.github/workflows/premerge.yaml | 4 ++--
4 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/.ci/compute_projects.py b/.ci/compute_projects.py
index 8134e1e2c29fb..50a64cb15a937 100644
--- a/.ci/compute_projects.py
+++ b/.ci/compute_projects.py
@@ -66,7 +66,7 @@
DEPENDENT_RUNTIMES_TO_TEST = {
"clang": {"compiler-rt"},
}
-DEPENDENT_RUNTIMES_TO_TEST_MULTICONFIG = {
+DEPENDENT_RUNTIMES_TO_TEST_NEEDS_RECONFIG = {
"llvm": {"libcxx", "libcxxabi", "libunwind"},
"clang": {"libcxx", "libcxxabi", "libunwind"},
".ci": {"libcxx", "libcxxabi", "libunwind"},
@@ -201,15 +201,15 @@ def _compute_runtimes_to_test(modified_projects: Set[str], platform: str) -> Set
return _exclude_projects(runtimes_to_test, platform)
-def _compute_runtimes_to_test_multiconfig(
+def _compute_runtimes_to_test_needs_reconfig(
modified_projects: Set[str], platform: str
) -> Set[str]:
runtimes_to_test = set()
for modified_project in modified_projects:
- if modified_project not in DEPENDENT_RUNTIMES_TO_TEST_MULTICONFIG:
+ if modified_project not in DEPENDENT_RUNTIMES_TO_TEST_NEEDS_RECONFIG:
continue
runtimes_to_test.update(
- DEPENDENT_RUNTIMES_TO_TEST_MULTICONFIG[modified_project]
+ DEPENDENT_RUNTIMES_TO_TEST_NEEDS_RECONFIG[modified_project]
)
return _exclude_projects(runtimes_to_test, platform)
@@ -246,17 +246,17 @@ def get_env_variables(modified_files: list[str], platform: str) -> Set[str]:
modified_projects = _get_modified_projects(modified_files)
projects_to_test = _compute_projects_to_test(modified_projects, platform)
runtimes_to_test = _compute_runtimes_to_test(modified_projects, platform)
- runtimes_to_test_multiconfig = _compute_runtimes_to_test_multiconfig(
+ runtimes_to_test_needs_reconfig = _compute_runtimes_to_test_needs_reconfig(
modified_projects, platform
)
runtimes_to_build = _compute_runtimes_to_build(
- runtimes_to_test | runtimes_to_test_multiconfig, modified_projects, platform
+ runtimes_to_test | runtimes_to_test_needs_reconfig, modified_projects, platform
)
projects_to_build = _compute_projects_to_build(projects_to_test, runtimes_to_build)
projects_check_targets = _compute_project_check_targets(projects_to_test)
runtimes_check_targets = _compute_project_check_targets(runtimes_to_test)
- runtimes_check_targets_multiconfig = _compute_project_check_targets(
- runtimes_to_test_multiconfig
+ runtimes_check_targets_needs_reconfig = _compute_project_check_targets(
+ runtimes_to_test_needs_reconfig
)
# We use a semicolon to separate the projects/runtimes as they get passed
# to the CMake invocation and thus we need to use the CMake list separator
@@ -267,8 +267,8 @@ def get_env_variables(modified_files: list[str], platform: str) -> Set[str]:
"project_check_targets": " ".join(sorted(projects_check_targets)),
"runtimes_to_build": ";".join(sorted(runtimes_to_build)),
"runtimes_check_targets": " ".join(sorted(runtimes_check_targets)),
- "runtimes_check_targets_multiconfig": " ".join(
- sorted(runtimes_check_targets_multiconfig)
+ "runtimes_check_targets_needs_reconfig": " ".join(
+ sorted(runtimes_check_targets_needs_reconfig)
),
}
diff --git a/.ci/compute_projects_test.py b/.ci/compute_projects_test.py
index dc57a1a1f3fbc..46abc754f0353 100644
--- a/.ci/compute_projects_test.py
+++ b/.ci/compute_projects_test.py
@@ -29,7 +29,7 @@ def test_llvm(self):
"",
)
self.assertEqual(
- env_variables["runtimes_check_targets_multiconfig"],
+ env_variables["runtimes_check_targets_needs_reconfig"],
"check-cxx check-cxxabi check-unwind",
)
@@ -53,7 +53,7 @@ def test_llvm_windows(self):
"",
)
self.assertEqual(
- env_variables["runtimes_check_targets_multiconfig"],
+ env_variables["runtimes_check_targets_needs_reconfig"],
"check-cxx check-cxxabi check-unwind",
)
@@ -77,7 +77,7 @@ def test_llvm_mac(self):
"",
)
self.assertEqual(
- env_variables["runtimes_check_targets_multiconfig"],
+ env_variables["runtimes_check_targets_needs_reconfig"],
"check-cxx check-cxxabi check-unwind",
)
@@ -101,7 +101,7 @@ def test_clang(self):
"check-compiler-rt",
)
self.assertEqual(
- env_variables["runtimes_check_targets_multiconfig"],
+ env_variables["runtimes_check_targets_needs_reconfig"],
"check-cxx check-cxxabi check-unwind",
)
@@ -123,7 +123,7 @@ def test_clang_windows(self):
"",
)
self.assertEqual(
- env_variables["runtimes_check_targets_multiconfig"],
+ env_variables["runtimes_check_targets_needs_reconfig"],
"check-cxx check-cxxabi check-unwind",
)
@@ -135,7 +135,7 @@ def test_bolt(self):
self.assertEqual(env_variables["project_check_targets"], "check-bolt")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_lldb(self):
env_variables = compute_projects.get_env_variables(
@@ -145,7 +145,7 @@ def test_lldb(self):
self.assertEqual(env_variables["project_check_targets"], "check-lldb")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_mlir(self):
env_variables = compute_projects.get_env_variables(
@@ -157,7 +157,7 @@ def test_mlir(self):
)
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_flang(self):
env_variables = compute_projects.get_env_variables(
@@ -167,7 +167,7 @@ def test_flang(self):
self.assertEqual(env_variables["project_check_targets"], "check-flang")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_invalid_subproject(self):
env_variables = compute_projects.get_env_variables(
@@ -177,7 +177,7 @@ def test_invalid_subproject(self):
self.assertEqual(env_variables["project_check_targets"], "")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_top_level_file(self):
env_variables = compute_projects.get_env_variables(["README.md"], "Linux")
@@ -185,7 +185,7 @@ def test_top_level_file(self):
self.assertEqual(env_variables["project_check_targets"], "")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_exclude_runtiems_in_projects(self):
env_variables = compute_projects.get_env_variables(
@@ -195,7 +195,7 @@ def test_exclude_runtiems_in_projects(self):
self.assertEqual(env_variables["project_check_targets"], "")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_exclude_docs(self):
env_variables = compute_projects.get_env_variables(
@@ -205,7 +205,7 @@ def test_exclude_docs(self):
self.assertEqual(env_variables["project_check_targets"], "")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_exclude_gn(self):
env_variables = compute_projects.get_env_variables(
@@ -215,7 +215,7 @@ def test_exclude_gn(self):
self.assertEqual(env_variables["project_check_targets"], "")
self.assertEqual(env_variables["runtimes_to_build"], "")
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
def test_ci(self):
env_variables = compute_projects.get_env_variables(
@@ -235,7 +235,7 @@ def test_ci(self):
"",
)
self.assertEqual(
- env_variables["runtimes_check_targets_multiconfig"],
+ env_variables["runtimes_check_targets_needs_reconfig"],
"check-cxx check-cxxabi check-unwind",
)
@@ -249,7 +249,7 @@ def test_lldb(self):
env_variables["runtimes_to_build"], "libcxx;libcxxabi;libunwind"
)
self.assertEqual(env_variables["runtimes_check_targets"], "")
- self.assertEqual(env_variables["runtimes_check_targets_multiconfig"], "")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
if __name__ == "__main__":
diff --git a/.ci/monolithic-linux.sh b/.ci/monolithic-linux.sh
index aa558017ae76a..c350a58679140 100755
--- a/.ci/monolithic-linux.sh
+++ b/.ci/monolithic-linux.sh
@@ -57,7 +57,7 @@ projects="${1}"
targets="${2}"
runtimes="${3}"
runtime_targets="${4}"
-runtime_targets_multiconfig="${5}"
+runtime_targets_needs_reconfig="${5}"
lit_args="-v --xunit-xml-output ${BUILD_DIR}/test-results.xml --use-unique-output-file-name --timeout=1200 --time-tests"
@@ -102,7 +102,7 @@ fi
# Compiling runtimes with just-built Clang and running their tests
# as an additional testing for Clang.
-if [[ "${runtime_targets_multiconfig}" != "" ]]; then
+if [[ "${runtime_targets_needs_reconfig}" != "" ]]; then
echo "--- cmake runtimes C++26"
cmake \
@@ -112,7 +112,7 @@ if [[ "${runtime_targets_multiconfig}" != "" ]]; then
echo "--- ninja runtimes C++26"
- ninja -C "${BUILD_DIR}" ${runtime_targets_multiconfig}
+ ninja -C "${BUILD_DIR}" ${runtime_targets_needs_reconfig}
echo "--- cmake runtimes clang modules"
@@ -123,5 +123,5 @@ if [[ "${runtime_targets_multiconfig}" != "" ]]; then
echo "--- ninja runtimes clang modules"
- ninja -C "${BUILD_DIR}" ${runtime_targets_multiconfig}
+ ninja -C "${BUILD_DIR}" ${runtime_targets_needs_reconfig}
fi
diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 8bf8d35abf0cf..4435a3e905768 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -56,12 +56,12 @@ jobs:
echo "Running project checks targets: ${project_check_targets}"
echo "Building runtimes: ${runtimes_to_build}"
echo "Running runtimes checks targets: ${runtimes_check_targets}"
- echo "Running multiconfig runtimes checks targets: ${runtimes_check_targets_multiconfig}"
+ echo "Running runtimes checks requiring reconfiguring targets: ${runtimes_check_targets_needs_reconfig}"
export CC=/opt/llvm/bin/clang
export CXX=/opt/llvm/bin/clang++
- ./.ci/monolithic-linux.sh "${projects_to_build}" "${project_check_targets}" "${runtimes_to_build}" "${runtimes_check_targets}" "${runtimes_check_targets_multiconfig}"
+ ./.ci/monolithic-linux.sh "${projects_to_build}" "${project_check_targets}" "${runtimes_to_build}" "${runtimes_check_targets}" "${runtimes_check_targets_needs_reconfig}"
- name: Upload Artifacts
uses: actions/upload-artifact at 65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
with:
>From 89db4b3b4498ed0c1bf3dbea307031fd285c7b01 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 7 Jun 2025 13:06:33 -0700
Subject: [PATCH 6/7] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20ch?=
=?UTF-8?q?anges=20introduced=20through=20rebase?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.6
[skip ci]
---
libcxx/include/mdspan | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/libcxx/include/mdspan b/libcxx/include/mdspan
index 32468a128dc9a..5aeec1bcbfc39 100644
--- a/libcxx/include/mdspan
+++ b/libcxx/include/mdspan
@@ -450,7 +450,11 @@ namespace std {
# include <__config>
# if _LIBCPP_STD_VER >= 23
-# include <__fwd/mdspan.h>
+# include <__fwd/mdspan.h> // TODO(boomanaiden154): This is currently a
+ // non-standard extension to include
+ // std::dynamic_extent tracked by LWG issue 4275.
+ // This comment should be deleted or the include
+ // deleted upon resolution.
# include <__fwd/span.h>
# include <__mdspan/default_accessor.h>
# include <__mdspan/extents.h>
>From a5c242ce772763e847e3b70d0970b5b7f5322f87 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Mon, 9 Jun 2025 22:30:37 -0700
Subject: [PATCH 7/7] feedback
Created using spr 1.3.6
---
.ci/compute_projects.py | 1 +
.ci/compute_projects_test.py | 12 ++++++++++++
2 files changed, 13 insertions(+)
diff --git a/.ci/compute_projects.py b/.ci/compute_projects.py
index 50a64cb15a937..e61b8dc5021f3 100644
--- a/.ci/compute_projects.py
+++ b/.ci/compute_projects.py
@@ -65,6 +65,7 @@
# touched.
DEPENDENT_RUNTIMES_TO_TEST = {
"clang": {"compiler-rt"},
+ "clang-tools-extra": {"libc"},
}
DEPENDENT_RUNTIMES_TO_TEST_NEEDS_RECONFIG = {
"llvm": {"libcxx", "libcxxabi", "libunwind"},
diff --git a/.ci/compute_projects_test.py b/.ci/compute_projects_test.py
index 46abc754f0353..6bc2e34a1cbe1 100644
--- a/.ci/compute_projects_test.py
+++ b/.ci/compute_projects_test.py
@@ -251,6 +251,18 @@ def test_lldb(self):
self.assertEqual(env_variables["runtimes_check_targets"], "")
self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
+ def test_clang_tools_extra(self):
+ env_variables = compute_projects.get_env_variables(
+ ["clang-tools-extra/CMakeLists.txt"], "Linux"
+ )
+ self.assertEqual(
+ env_variables["projects_to_build"], "clang;clang-tools-extra;lld;llvm"
+ )
+ self.assertEqual(env_variables["project_check_targets"], "check-clang-tools")
+ self.assertEqual(env_variables["runtimes_to_build"], "libc")
+ self.assertEqual(env_variables["runtimes_check_targets"], "check-libc")
+ self.assertEqual(env_variables["runtimes_check_targets_needs_reconfig"], "")
+
if __name__ == "__main__":
unittest.main()
More information about the llvm-commits
mailing list