ci: build modules with Clang 23 only; document modular-build support - #2243
Open
ispeters wants to merge 1 commit into
Open
ci: build modules with Clang 23 only; document modular-build support#2243ispeters wants to merge 1 commit into
ispeters wants to merge 1 commit into
Conversation
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.
ericniebler
approved these changes
Aug 31, 2026
Collaborator
|
/ok to test 98d0b76 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.