Skip to content

ci: build modules with Clang 23 only; document modular-build support - #2243

Open
ispeters wants to merge 1 commit into
NVIDIA:mainfrom
ispeters:add-clang-23-to-CI
Open

ci: build modules with Clang 23 only; document modular-build support#2243
ispeters wants to merge 1 commit into
NVIDIA:mainfrom
ispeters:add-clang-23-to-CI

Conversation

@ispeters

Copy link
Copy Markdown
Contributor

Clang's module-serialization ICE (a crash inside
ASTReader::readTypeRecord / FunctionProtoType::Profile while deserializing from a BMI) makes the modular build unreliable on Clang
22. It reproduces on every released 22.1.x, including 22.1.8, which is the last planned 22.1.x release, so no released Clang 22 will ever build the modular tests. Which translation unit crashes is not stable -- it shifts with incidental state such as the build environment or unrelated source changes -- so an unrelated contribution can fail CI for reasons that have nothing to do with it, and the exclusion list cannot be made reliable by adding entries to it.

The crash is gone in Clang 23.1.0. Move the modular CI job to Clang 23, declare Clang 23 the supported toolchain for modular builds in the README, and drop the ICE exclusion list: those tests all build once the compiler is fixed.

rapidsai/devcontainers does not publish an llvm23 image yet, so the job installs Clang 23 from apt.llvm.org on top of the llvm22 image. The install step no-ops once the image tag matches the requested LLVM version, so de-hacking is a two-line matrix change.

test/stdexec/detail/test_any_allocator.cpp stays excluded in modules mode for an unrelated, stdexec-side reason: __any_allocator is reachable but not exported from the stdexec module.

Clang's module-serialization ICE (a crash inside
ASTReader::readTypeRecord / FunctionProtoType::Profile while
deserializing from a BMI) makes the modular build unreliable on Clang
22. It reproduces on every released 22.1.x, including 22.1.8, which is
the last planned 22.1.x release, so no released Clang 22 will ever
build the modular tests. Which translation unit crashes is not stable
-- it shifts with incidental state such as the build environment or
unrelated source changes -- so an unrelated contribution can fail CI
for reasons that have nothing to do with it, and the exclusion list
cannot be made reliable by adding entries to it.

The crash is gone in Clang 23.1.0. Move the modular CI job to Clang 23,
declare Clang 23 the supported toolchain for modular builds in the
README, and drop the ICE exclusion list: those tests all build once the
compiler is fixed.

rapidsai/devcontainers does not publish an llvm23 image yet, so the job
installs Clang 23 from apt.llvm.org on top of the llvm22 image. The
install step no-ops once the image tag matches the requested LLVM
version, so de-hacking is a two-line matrix change.

test/stdexec/detail/test_any_allocator.cpp stays excluded in modules
mode for an unrelated, stdexec-side reason: __any_allocator is
reachable but not exported from the stdexec module.
@copy-pr-bot

copy-pr-bot Bot commented Aug 31, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@ericniebler

Copy link
Copy Markdown
Collaborator

/ok to test 98d0b76

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants