Upgrade Rust toolchain to nightly-2026-01-29 - #4651
Merged
tautschnig merged 1 commit intoJul 17, 2026
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates Kani to build against Rust nightly-2026-01-29 by adapting to recent rustc layout API changes for enums and by adding support for the simd_splat intrinsic introduced in the new SwissTable lowering path.
Changes:
- Bump pinned Rust toolchain from
nightly-2026-01-27tonightly-2026-01-29. - Update enum-layout walkers to use per-variant field offsets (
variant.offsets) forVariantsShape::Multiple. - Add
simd_splatintrinsic recognition plus CPROVER codegen support, and classify it alongside other SIMD intrinsics for analyses.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| rust-toolchain.toml | Advances pinned Rust nightly toolchain version. |
| kani-compiler/src/kani_middle/transform/check_values.rs | Fixes enum field offset walking for multi-variant layouts using per-variant offsets. |
| kani-compiler/src/kani_middle/transform/check_uninit/ty_layout.rs | Fixes enum field offset walking for uninit checks using per-variant offsets. |
| kani-compiler/src/kani_middle/transform/check_uninit/ptr_uninit/uninit_visitor.rs | Treats SimdSplat as a SIMD intrinsic in uninit visitor skip logic. |
| kani-compiler/src/kani_middle/points_to/points_to_analysis.rs | Treats SimdSplat as a SIMD intrinsic in identity-aliasing classification. |
| kani-compiler/src/intrinsics.rs | Adds SimdSplat to intrinsic enum and matches "simd_splat". |
| kani-compiler/src/codegen_cprover_gotoc/codegen/intrinsic.rs | Implements codegen for SimdSplat by broadcasting scalar to all lanes. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
feliperodri
approved these changes
Jul 17, 2026
Advance from nightly-2026-01-27 to nightly-2026-01-29. Two source changes are required (both first needed at nightly-2026-01-28); 01-29 then also passes with no further changes. - rust-lang/rust#151040 ("public-variant-layout") reworked `VariantsShape::Multiple`: its `variants` are now `VariantFields` values that expose `offsets` and `fields_by_offset_order()` directly, instead of `LayoutShape`s whose `fields: FieldsShape` had to be destructured. Update the two enum-layout walkers (check_uninit/ty_layout.rs and check_values.rs) to use the per-variant `offsets` directly (the latter previously indexed the enum's top-level offsets, which only cover the tag). - nightly-2026-01-28's HashMap/SwissTable lowers `Simd::splat` through the `simd_splat` intrinsic, which Kani did not model (unsupported construct). Add `simd_splat` support: broadcast the scalar argument to every lane of the result vector. Since `simd_splat<T, U>(value: U) -> T` has independent generic parameters, an instantiation where `U` is not `T`'s element type can reach codegen; reject it with a type-mismatch error like rustc's backends (and like Kani's `simd_extract`/`simd_insert`) instead of silently casting, and add the `simd-splat-wrong-type` expected test for it. Co-authored-by: Kiro <kiro-agent@users.noreply.github.com>
tautschnig
force-pushed
the
toolchain-2026-01-29-manual
branch
from
July 17, 2026 13:58
585f1db to
42ad2a9
Compare
tautschnig
enabled auto-merge
July 17, 2026 14:20
Merged
via the queue into
model-checking:main
with commit Jul 17, 2026
39a98b6
34 of 36 checks passed
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.
Advance from nightly-2026-01-27 to nightly-2026-01-29. Two source changes are required (both first needed at nightly-2026-01-28); 01-29 then also passes with no further changes.
Don't expose redundant information in
rustc_public'sLayoutShaperust-lang/rust#151040 ("public-variant-layout") reworkedVariantsShape::Multiple: itsvariantsare nowVariantFieldsvalues that exposeoffsetsandfields_by_offset_order()directly, instead ofLayoutShapes whosefields: FieldsShapehad to be destructured. Update the two enum-layout walkers (check_uninit/ty_layout.rs and check_values.rs) to use the per-variantoffsetsdirectly (the latter previously indexed the enum's top-level offsets, which only cover the tag).nightly-2026-01-28's HashMap/SwissTable lowers
Simd::splatthrough thesimd_splatintrinsic, which Kani did not model (unsupported construct). Addsimd_splatsupport: broadcast the scalar argument to every lane of the result vector.By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.