Skip to content

[infra] Add clang-cuda-21 in C++23 job for libcu++#8988

Open
davebayer wants to merge 2 commits into
NVIDIA:mainfrom
davebayer:add_clang_cxx23_testing
Open

[infra] Add clang-cuda-21 in C++23 job for libcu++#8988
davebayer wants to merge 2 commits into
NVIDIA:mainfrom
davebayer:add_clang_cxx23_testing

Conversation

@davebayer
Copy link
Copy Markdown
Contributor

No description provided.

@davebayer davebayer requested review from a team as code owners May 14, 2026 18:18
@davebayer davebayer requested a review from jrhemstad May 14, 2026 18:18
@github-project-automation github-project-automation Bot moved this to Todo in CCCL May 14, 2026
@cccl-authenticator-app cccl-authenticator-app Bot moved this from Todo to In Review in CCCL May 14, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 14, 2026

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 647bf0f3-0f53-49c1-a32d-0acbee4f1c8c

📥 Commits

Reviewing files that changed from the base of the PR and between c4c839a and 8b000b5.

📒 Files selected for processing (27)
  • CMakePresets.json
  • ci/matrix.yaml
  • libcudacxx/include/cuda/std/__cmath/fpclassify.h
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_cluster.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/cp_async_bulk_tensor.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/expect_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/device_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/host_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/managed_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/restrict_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/shared_mem_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/memcpy_async/memcpy_async_tx.pass.cpp
  • libcudacxx/test/libcudacxx/std/containers/views/mdspan/mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/cstdlib/calloc.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits/default.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/round.style/check_values.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_manip/copysign.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/fpclassify.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isfinite.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isinf.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnan.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnormal.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/signbit.pass.cpp
✅ Files skipped from review due to trivial changes (3)
  • libcudacxx/test/libcudacxx/cuda/barrier/cp_async_bulk_tensor.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnormal.pass.cpp
  • CMakePresets.json
🚧 Files skipped from review as they are similar to previous changes (20)
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/round.style/check_values.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/managed_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/memcpy_async/memcpy_async_tx.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_cluster.runfail.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isfinite.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
  • libcudacxx/include/cuda/std/__cmath/fpclassify.h
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/fpclassify.pass.cpp
  • ci/matrix.yaml
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/restrict_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits/default.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnan.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/signbit.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isinf.pass.cpp
  • libcudacxx/test/libcudacxx/std/containers/views/mdspan/mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/device_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/shared_mem_mdspan/index_operator.pass.cpp

📝 Walkthrough

Summary by CodeRabbit

  • New Features

    • Added C++23 build/config support and CI coverage for C++23 toolchains.
  • Tests

    • Modernized tests to use C++20 constraint syntax for multi-index subscripting.
    • Suppressed C++23 deprecation warnings in numeric-limits tests.
    • Flagged/guarded tests for specific compiler/toolchain combinations and silenced unused-variable diagnostics.
  • Bug Fixes

    • Adjusted host/device accessor checks and floating-point classification logic for improved correctness in edge cases.

suggestion:

Walkthrough

Modernizes mdspan multi-argument operator[] constraints to a C++20 requires check; scopes deprecation suppression in a copysign numeric_limits test; makes calloc failure assertion device-only; and annotates an unused test global with [[maybe_unused]].

Changes

mdspan Constraints and Test Fixes

Layer / File(s) Summary
mdspan operator[] requires constraint
libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/host_mdspan/index_operator.pass.cpp
Replaces SFINAE enable_if_t return-type check with a requires-clause that mds[indices...] is well-formed for the multi-argument operator[] probe.
Copysign test: deprecation-suppression scope
libcudacxx/test/libcudacxx/std/numerics/c.math/fp_manip/copysign.pass.cpp
Surrounds deprecated numeric_limits<T>::has_denorm usage with _CCCL_SUPPRESS_DEPRECATED_PUSH/_CCCL_SUPPRESS_DEPRECATED_POP, adjusting scope relative to denorm_min() test.
Target-aware calloc failure assertion
libcudacxx/test/libcudacxx/std/language.support/cstdlib/calloc.pass.cpp
Makes assert(ptr == nullptr) conditional on device target via NV_IF_TARGET(NV_IS_DEVICE, ...) and documents host behavior as implementation-defined.
Test global maybe-unused annotation
libcudacxx/test/libcudacxx/cuda/barrier/expect_tx_device.runfail.cpp
Annotates bar_storage with [[maybe_unused]] to suppress unused-variable diagnostics.

Suggested reviewers

  • miscco

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (1)
CMakePresets.json (1)

162-170: ⚡ Quick win

suggestion: Add matching buildPresets and testPresets entries for libcudacxx-cpp23.

Only the configure preset was added on Line 162. The cpp17/cpp20 variants have paired build/ctest/lit presets; mirroring that for cpp23 keeps preset-based build/test flows consistent.

As per coding guidelines, "Use CMake Presets defined in CMakePresets.json for configuring, building, and testing the project".


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: bc677a62-230d-4b53-b125-8a5d55f49f3c

📥 Commits

Reviewing files that changed from the base of the PR and between d16bcf1 and 99f4025.

📒 Files selected for processing (28)
  • CMakePresets.json
  • ci/matrix.yaml
  • libcudacxx/include/cuda/__mdspan/host_device_accessor.h
  • libcudacxx/include/cuda/std/__cmath/fpclassify.h
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_cluster.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/cp_async_bulk_tensor.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/expect_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/device_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/host_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/managed_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/restrict_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/shared_mem_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/memcpy_async/memcpy_async_tx.pass.cpp
  • libcudacxx/test/libcudacxx/std/containers/views/mdspan/mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/cstdlib/calloc.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits/default.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/round.style/check_values.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_manip/copysign.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/fpclassify.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isfinite.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isinf.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnan.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnormal.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/signbit.pass.cpp

Comment thread ci/matrix.yaml Outdated
@github-actions
Copy link
Copy Markdown
Contributor

🥳 CI Workflow Results

🟩 Finished in 1h 30m: Pass: 100%/1 | Total: 1h 30m | Max: 1h 30m | Hits: 5%/4975

See results here.

@davebayer davebayer force-pushed the add_clang_cxx23_testing branch from 99f4025 to c4c839a Compare May 14, 2026 19:54
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
ci/matrix.yaml (1)

97-97: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

important: C++23 jobs are declared here but still blocked by matrix capability limits.

Line 97, Line 233, and Line 326 request std: 23, while all_stds, ctk_versions.12.9.stds, host_compilers.clang.versions.21.stds, and projects.libcudacxx.stds are still capped at [17, 20]. That can prevent these lanes from being generated/executed, so the libcu++ C++23 coverage objective is not reliably met.

Also applies to: 233-233, 326-326


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: f2455719-4b8b-4f9c-a9ed-0616fd7ebe69

📥 Commits

Reviewing files that changed from the base of the PR and between 99f4025 and c4c839a.

📒 Files selected for processing (27)
  • CMakePresets.json
  • ci/matrix.yaml
  • libcudacxx/include/cuda/std/__cmath/fpclassify.h
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_cluster.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/cp_async_bulk_tensor.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/expect_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/device_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/host_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/managed_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/restrict_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/shared_mem_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/memcpy_async/memcpy_async_tx.pass.cpp
  • libcudacxx/test/libcudacxx/std/containers/views/mdspan/mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/cstdlib/calloc.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits/default.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/round.style/check_values.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_manip/copysign.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/fpclassify.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isfinite.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isinf.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnan.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnormal.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/signbit.pass.cpp
✅ Files skipped from review due to trivial changes (5)
  • libcudacxx/test/libcudacxx/cuda/barrier/expect_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_cluster.runfail.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm_loss.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/barrier/arrive_tx_device.runfail.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isfinite.pass.cpp
🚧 Files skipped from review as they are similar to previous changes (18)
  • libcudacxx/include/cuda/std/__cmath/fpclassify.h
  • libcudacxx/test/libcudacxx/cuda/barrier/cp_async_bulk_tensor.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/has_denorm.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/signbit.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/managed_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/restrict_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/round.style/check_values.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits.members/const_data_members.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isnormal.pass.cpp
  • libcudacxx/test/libcudacxx/std/language.support/support.limits/limits/numeric.limits/default.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/fpclassify.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/host_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/device_mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_manip/copysign.pass.cpp
  • CMakePresets.json
  • libcudacxx/test/libcudacxx/std/numerics/c.math/fp_traits/isinf.pass.cpp
  • libcudacxx/test/libcudacxx/std/containers/views/mdspan/mdspan/index_operator.pass.cpp
  • libcudacxx/test/libcudacxx/cuda/containers/views/mdspan/shared_mem_mdspan/index_operator.pass.cpp

@davebayer davebayer force-pushed the add_clang_cxx23_testing branch from c4c839a to 8b000b5 Compare May 14, 2026 20:00
Copy link
Copy Markdown
Contributor

@alliepiper alliepiper left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

infra +1

@davebayer davebayer enabled auto-merge (squash) May 14, 2026 20:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

3 participants