Rollup of 9 pull requests#155911
Open
jhpratt wants to merge 20 commits intorust-lang:mainfrom
Open
Conversation
The bcdtor mode affects how the AIX linker choose to pull in static constructors and destructors (https://www.ibm.com/docs/en/aix/7.2.0?topic=l-ld-command) to the link. The current setting of all makes static init in archive members live regardless of if the archive member would be otherwise referenced, causing that whole archive member to become part of the link. This default was initially retained for compatibility purposes with historical compilers on the platform which defaulted to this setting. Unfortunately this greedy pulling in of static init can have unintended consequences for applications, for example for programs linked against parts of compiler-rt which contain optional instrumentation (containing static initializers) which may be unused as these now become live in all programs regardless of use. For that reason and similar reasons, this PR switches the default to mbr, which only extracts static init from archive members which would otherwise be referenced. This gives a behaviour very consistent with linkers on other platforms (e.g. Linux). Users requiring the old default behaviour can manually pass -bcdtors:all on the link step which will override any default we pass here.
It results in `b64` having many fewer bits set than it should. LLM disclosure: this bug was identified by Claude Code. I did everything else.
It does a masking operation but the mask is computed incorrectly due to operator precedence. The mask is of the form `1 << N - 1` but it should be `(1 << N) - 1` because `-` binds tighter than `1 << N`. This commit fixes the problem, not by adjusting the precedence, but by instead using the existing `clear_excess_bits_in_final_word`, which is consistent with other similar operations. LLM disclosure: this bug was identified by Claude Code. I did everything else.
Same as in Vec::push_mut, we get `.len()` once at the start since it won't change in the `reserve()` call. Saves reloading the length after the allocation: https://godbolt.org/z/W3G165Gd7
This ensures the length calculation will always be self-consistent even if the real length changes when we actually come to use them.
`MpscReceiver` aligns with `MpscSender`. The original name appears to not actually have been in use, for better or worse. Along the way, sprinkle the attribute onto `mpmc::Receiver` and `mpmc::Sender` too.
…ract, r=Zalathar Fix a bug in `ChunkedBitSet::subtract` An operator precedence bug means an incorrect mask is used in `ChunkedBitSet::subtract`. Details in individual commits. r? @dingxiangfei2009
Don't reload length in String::push Same as in `Vec::push_mut`, we get `.len()` once at the start since it won't change in the `reserve()` call. Saves reloading the length after the allocation: https://godbolt.org/z/W3G165Gd7
`slice::join`: borrow only once during length calc This ensures the length calculation will always be self-consistent even if the real length changes when we actually come to use them. This is a follow up to rust-lang#155708
enable pipe tests in Miri
Update LLVM to 22.1.4 (again) rust-lang#155756 undoes rust-lang#155645. cc @weihanglo r? @nikic
…twco [AIX] update linker default to bcdtors The bcdtor mode affects how the AIX linker choose to pull in static constructors and destructors (https://www.ibm.com/docs/en/aix/7.2.0?topic=l-ld-command) to the link. The current setting of all makes static init in archive members live regardless of if the archive member would be otherwise referenced, causing that whole archive member to become part of the link. This default was initially retained for compatibility purposes with historical compilers on the platform which defaulted to this setting. Unfortunately this greedy pulling in of static init can have unintended consequences for applications, for example for programs linked against parts of compiler-rt which contain optional instrumentation (containing static initializers) which may be unused as these now become live in all programs regardless of use. For that reason and similar reasons, this PR switches the default to mbr, which only extracts static init from archive members which would otherwise be referenced. This gives a behaviour very consistent with linkers on other platforms (e.g. Linux). Users requiring the old default behaviour can manually pass `-bcdtors:all` on the link step which will override any default we pass here. (Note: this mirrors LLVM change: llvm/llvm-project#191265)
…2277, r=petrochenkov [codex] tests: mark migrated UI tests as check-pass ## Summary Migrate a small set of UI tests left behind by the `compile-pass` migration from `build-pass` to `check-pass`. These tests exercise attributes, cfg_attr, range trait type checking, and reachable-code diagnostics. None of the changed tests need codegen or linking, so `check-pass` matches the intended coverage and removes the stale `FIXME(rust-lang#62277)` notes. ## Validation - `python x.py test tests/ui/attributes/attr-before-view-item.rs tests/ui/attributes/attr-before-view-item2.rs tests/ui/attributes/attr-mix-new.rs tests/ui/attributes/class-attributes-1.rs tests/ui/attributes/class-attributes-2.rs tests/ui/attributes/method-attributes.rs tests/ui/attributes/unrestricted-attribute-tokens.rs tests/ui/attributes/variant-attributes.rs tests/ui/conditional-compilation/cfg-attr-multi-false.rs tests/ui/conditional-compilation/cfg-attr-multi-true.rs tests/ui/range/range_traits-4.rs tests/ui/range/range_traits-5.rs tests/ui/range/range_traits-7.rs tests/ui/reachable/expr_andand.rs tests/ui/reachable/expr_oror.rs` - `python x.py test tidy`
…r=mejrs Rename the diagnostic item for `std::sync::mpsc::Receiver` `MpscReceiver` aligns with `MpscSender`. The original name appears to not actually have been in use, for better or worse. r? mejrs
Add regression test for rust-lang#101363 Adds test for rust-lang#101363 Since it's my first time adding tests, I'm not sure if the test itself, its location, or its name are appropriate.
Member
Author
|
@bors r+ rollup=never p=5 |
Contributor
Contributor
|
⌛ Testing commit 8759017 with merge 03c609a... Workflow: https://github.com/rust-lang/rust/actions/runs/25048601827 |
rust-bors Bot
pushed a commit
that referenced
this pull request
Apr 28, 2026
Rollup of 9 pull requests Successful merges: - #155381 (Fix a bug in `ChunkedBitSet::subtract`) - #155847 (Don't reload length in String::push) - #155858 (`slice::join`: borrow only once during length calc) - #155879 (enable pipe tests in Miri) - #155905 (Update LLVM to 22.1.4 (again)) - #155247 ([AIX] update linker default to bcdtors) - #155812 ([codex] tests: mark migrated UI tests as check-pass) - #155854 (Rename the diagnostic item for `std::sync::mpsc::Receiver`) - #155882 (Add regression test for #101363)
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.
Successful merges:
ChunkedBitSet::subtract#155381 (Fix a bug inChunkedBitSet::subtract)slice::join: borrow only once during length calc #155858 (slice::join: borrow only once during length calc)std::sync::mpsc::Receiver#155854 (Rename the diagnostic item forstd::sync::mpsc::Receiver)r? @ghost
Create a similar rollup