Rollup of 7 pull requests - #161849
Merged
Merged
Conversation
So that they cannot diverge.
To slightly speed up bootstrap.
It was just calling `--print sysroot` on the initial rustc, which we do during build initialization anyway.
To use consistent "external binary" nomenclature.
This check is called from a few different places when coverage is enabled, so we should probably let the query system take care of memoizing results and tracking dependencies.
``` warning: explicit `package.readme` can be inferred --> compiler/rustc_thread_pool/Cargo.toml:11:1 | 11 | readme = "README.md" | ^^^^^^^^^^^^^^^^^^^^ | = note: `cargo::manual_readme` is set to `warn` by default help: consider removing `package.readme` warning: `rustc_thread_pool` (manifest) generated 1 warning ``` See <https://triage.rust-lang.org/gha-logs/rust-lang/rust/98030530980#L2026-08-26T03:05:00.5401170Z-L2026-08-26T03:05:00.5402963Z>
``` warning: unused dependency `unified-diff` --> src/tools/compiletest/Cargo.toml:37:1 | 37 | unified-diff = "0.2.1" | ^^^^^^^^^^^^^^^^^^^^^^ | = note: `cargo::unused_dependencies` is set to `warn` by default help: consider removing the dependency on `unified-diff` warning: `compiletest` (manifest) generated 1 warning ``` See <https://triage.rust-lang.org/gha-logs/rust-lang/rust/98030530980#L2026-08-26T03:05:07.8912904Z-L2026-08-26T03:05:07.8915112Z>
``` warning: binary `rustdoc_tool_binary` should have a kebab-case name | 1 | /checkout/obj/build/x86_64-unknown-linux-gnu/bootstrap-tools/.../rustdoc_tool_binary | ^^^^^^^^^^^^^^^^^^^ | = note: `cargo::non_kebab_case_bins` is set to `warn` by default help: to change the binary name to `rustdoc-tool-binary`, convert `bin.name` --> src/tools/rustdoc/Cargo.toml:10:8 | 10 - name = "rustdoc_tool_binary" 10 + name = "rustdoc-tool-binary" | warning: `rustdoc-tool` (manifest) generated 1 warning ``` See <https://triage.rust-lang.org/gha-logs/rust-lang/rust/98030530980#L2026-08-26T03:05:00.5389265Z-L2026-08-26T03:05:00.5392627Z>
Add SVE-accelerated Vec::retain_mut for aarch64 The PR adds SVE support for specified width types(8, 16, 32 and 64 bits) in `Vec::retain_mut`. Due to [pointer provenance being stripped by intrinsics](https://rust-lang.zulipchat.com/#narrow/channel/208962-t-libs.2Fstdarch/topic/MaybeUninit.20lane.20variants.20for.20vector.20data-movement.20intrinsic/with/615526760)) here it has to use inline asm instead of sve intrinsics. ## 1. retain half (ns/iter) | Elements | u32 SVE | u32 scalar | Change | u64 SVE | u64 scalar | Change | |---|---|---|---|---|---|---| | 4 | 10.32 | 12.36 | / | 10.25 | 11.83 | / | | 8 | 12.93 | 15.08 | / | 13.40 | 14.74 | / | | 16 | 18.66 | 19.46 | / | 19.08 | 18.89 | / | | 32 | 31.84 | 31.12 |/ | 31.78 | 31.26 | / | | 64 | 32.99 | 59.17 | **-44.2%** | 59.86 | 59.44 | / | | 1,000 | 471.51 | 811.71 | **-41.9%** | 820.98 | 827.16 | / | | 10,000 | 4,660 | 7,990 | **-41.7%** | 5,836 | 8,242 | **-29.2%** | | 100,000 | 46,414 | 79,608 | **-41.7%** | 57,561 | 82,861 | **-30.5%** | ## 2. retain whole | Elements | u32 SVE | u32 scalar | Change | u64 SVE | u64 scalar | Change | |---|---|---|---|---|---|---| | 4 | 3.46 | 3.11 | / | 3.45 | 3.45 | / | | 8 | 4.90 | 4.49 | / | 4.83 | 6.22 | / | | 16 | 8.44 | 8.14 | / | 8.44 | 11.74 | / | | 32 | 15.83 | 15.51 | / | 15.83 | 22.79 | / | | 64 | 21.57 | 30.66 | **-29.6%** | 30.72 | 44.89 | / | | 1,000 | 358.53 | 483.33 | **-25.8%** | 469.18 | 696.43 | / | | 10,000 | 3,127 | 4,745 | **-34.1%** | 5,082 | 6,912 | **-26.5%** | | 100,000 | 32,509 | 49,501 | **-34.3%** | 49,484 | 79,749 | **-38.0%** | r? @Amanieu
…ethlin interpret: ensure that calls via no-unwind ABIs do not unwind According to our [ABI docs](https://doc.rust-lang.org/nightly/std/primitive.fn.html#abi-compatibility), programs like this are okay: ```rust extern "C-unwind" fn does_not_unwind_but_could() {} fn main() { let f: extern "C-unwind" fn() = does_not_unwind_but_could; let f: extern "C" fn() = unsafe { std::mem::transmute(f) }; f(); } ``` So let's add a test for that. And also, let's adjust the checks in Miri's shims accordingly (see `src/tools/miri/src/shims/sig.rs`). We used to reject calls to functions that *might* unwind with a signature that does not allow unwinding, even if no unwinding occurred. I don't think we have an actual example of a potentially-unwinding shim with an ABI that has a compatible ABI that does not allow unwinding ("C-unwind" and "C"), so we can't add a test for this.
…_aliases, r=adwinwhite borrowck: Normalize non-rigid aliases in NLL type relating Fixes rust-lang#160652 With `-Znext-solver=globally`, yielding from an `impl Iterator` without an explicit `Item` bound ICEs in borrowck. The coroutine defining type returned by `type_of` is unnormalized, so its yield type remains `<impl Iterator as Iterator>::Item`. Skipping normalization propagates that non-rigid alias into both MIR's `CoroutineInfo` and borrowck's `UniversalRegions`; NLL type relating then hits its invariant that non-rigid aliases must already have been normalized. Deeply normalize the instantiated defining type when MIR construction creates `CoroutineInfo` and when borrowck reconstructs `DefiningTy`. That makes the coroutine yield and resume types rigid before NLL compares them. This is intentionally gated to the next solver. The old solver keeps the existing skip-normalization path because deeply normalizing defining types there causes regressions.
…r=jieyouxu Assorted bootstrap config refactors (part 1/N) Related to my current LLVM refactoring in bootstrap, and some of it was unblocked by it. The goal is to remove as much command execution and I/O (mainly network I/O) from config parsing, and turn the "impure derived computation" part to `Session` instead. Eventually this will require restructuring `download-ci-rustc`. As a side note, combining `--print sysroot` and `--print target-libdir`, plus one other cleanup, made cache-primed `./x build compiler` ~40ms faster for me locally. The first commit removed duplicated fields between `Session` and `Config`. It cheats a bit, I implemented `Deref` to get from `Session` to `Config`, to avoid having to update 100+ use sites across bootstrap. But I think it's fine, because it is read only, and adding `.config` everywhere doesn't really add much. CC @Zalathar r? jieyouxu
…ouwer Change `is_eligible_for_coverage` from a hook to a query - Inspired by seeing rust-lang#161808 add more eligibility conditions --- This check is called from a few different places when coverage is enabled, so we should probably let the query system take care of memoizing results and tracking dependencies. (It was made a hook in rust-lang#122322, but I didn't have strong reasons for making it a hook and not a query, other than it being relatively small and simple.) There should be no user-visible change to compiler behaviour.
chore: fix cargo lints Fixes two cargo lint erros found during <rust-lang#161789 (comment)>. See each commit message respectively for details.
…ieyouxu rustdoc: fix lint `cargo::non_kebab_case_bins` ``` warning: binary `rustdoc_tool_binary` should have a kebab-case name | 1 | /checkout/obj/build/x86_64-unknown-linux-gnu/bootstrap-tools/.../rustdoc_tool_binary | ^^^^^^^^^^^^^^^^^^^ | = note: `cargo::non_kebab_case_bins` is set to `warn` by default help: to change the binary name to `rustdoc-tool-binary`, convert `bin.name` --> src/tools/rustdoc/Cargo.toml:10:8 | 10 - name = "rustdoc_tool_binary" 10 + name = "rustdoc-tool-binary" | warning: `rustdoc-tool` (manifest) generated 1 warning ``` See <https://triage.rust-lang.org/gha-logs/rust-lang/rust/98030530980#L2026-08-26T03:05:00.5389265Z-L2026-08-26T03:05:00.5392627Z> This was found in <rust-lang#161789>.
Member
Author
|
@bors r+ p=5 |
Contributor
This comment has been minimized.
This comment has been minimized.
Contributor
This was referenced Aug 27, 2026
Contributor
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 d9dd070 (parent) -> e457a7b (this PR) Test differencesShow 795 test diffsStage 1
Stage 2
(and 101 additional test diffs) Additionally, 594 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 e457a7b0d326d67b4322ef0d11bd715cfaeda48f --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 |
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:
is_eligible_for_coveragefrom a hook to a query #161813 (Changeis_eligible_for_coveragefrom a hook to a query)cargo::non_kebab_case_bins#161843 (rustdoc: fix lintcargo::non_kebab_case_bins)r? @ghost
Create a similar rollup