Rollup of 9 pull requests#155911
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.
|
@bors r+ rollup=never p=5 |
This comment has been minimized.
This comment has been minimized.
|
📌 Perf builds for each rolled up PR:
previous master: 4ddb0b7f8e In the case of a perf regression, run the following command for each PR you suspect might be the cause: |
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing 4ddb0b7 (parent) -> 03c609a (this PR) Test differencesShow 234 test diffsStage 1
Stage 2
Additionally, 194 doctest diffs were found. These are ignored, as they are noisy. Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 03c609abb6638f9d7f49f34326d4137d07f5cd61 --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
Finished benchmarking commit (03c609a): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis perf run didn't have relevant results for this metric. Max RSS (memory usage)Results (primary 1.8%, secondary -1.4%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -2.7%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary -0.0%, secondary -0.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 489.39s -> 487.089s (-0.47%) |
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