Skip to content

Conversation

@Zalathar
Copy link
Member

@Zalathar Zalathar commented Nov 9, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Walnut356 and others added 30 commits October 2, 2025 04:23
This adds to the existing proxy impl for &T.
lld is a great choice for a default linker.
This patch enables the std locking functions on AIX by including AIX on the list
of supported targets for the locking functions. Excluding AIX from the std
locking functions results to compilation errors such as: ("try_lock() not supported").
Updated email addresses for several contributors in the mailmap.
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
Signed-off-by: Jonathan Brouwer <jonathantbrouwer@gmail.com>
…=BoxyUwU

Add `overflow_checks` intrinsic

This adds an intrinsic which allows code in a pre-built library to inherit the overflow checks option from a crate depending on it. This enables code in the standard library to explicitly change behavior based on whether `overflow_checks` are enabled, regardless of the setting used when standard library was compiled.

This is very similar to the `ub_checks` intrinsic, and refactors the two to use a common mechanism.

The primary use case for this is to allow the new `RangeFrom` iterator to yield the maximum element before overflowing, as requested [here](rust-lang#125687 (comment)). This PR includes a working `IterRangeFrom` implementation based on this new intrinsic that exhibits the desired behavior.

[Prior discussion on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/Ability.20to.20select.20code.20based.20on.20.60overflow_checks.60.3F)
…f, r=JonathanBrouwer

Add correct suggestion for multi-references for self type in method

Currently the suggestion for this code

```rust
fn main() {}

struct A {
    field: i32,
}

impl A {
    fn f(&&self) {}
}
```

looks like this, which is incorrect and missleading

```rust
   Compiling playground v0.0.1 (/playground)
error: expected one of `!`, `(`, `...`, `..=`, `..`, `::`, `:`, `{`, or `|`, found `)`
 --> src/main.rs:8:16
  |
8 |     fn f(&&self) {}
  |                ^ expected one of 9 possible tokens
  |
  = note: anonymous parameters are removed in the 2018 edition (see RFC 1685)
help: explicitly ignore the parameter name
  |
8 |     fn f(_: &&self) {}
  |          ++
```

So this fixes it and make more correct suggestions

```rust
error: expected one of `!`, `(`, `...`, `..=`, `..`, `::`, `:`, `{`, or `|`, found `)`
 --> /home/gh-Kivooeo/test_/src/main.rs:8:16
  |
8 |     fn f(&&self) {}
  |                ^ expected one of 9 possible tokens
  |
help: `self` should be `self`, `&self` or `&mut self`, please remove extra references
  |
8 -     fn f(&&self) {}
8 +     fn f(&self) {}
```

Implementation is pretty self-documenting, but if you have suggestions on how to improve this (according to current test, which may be not fully covering all cases, this is works very well) or have some funny edge cases to show, I would appreciate it

r? compiler
…Simulacrum

[DebugInfo] Fix container types failing to find template args

This is a less pervasive (but also less powerful) alternative to rust-lang#144394.

This change *only* provides benefits to container types on MSVC. The TL;DR is that nodes that don't populate/aren't discoverable in the PDB for various reasons are given an alternate lookup path that generates the nodes by acquiring the base-type via some gross string manipulation and then asking clang for the node it wants (e.g. `"ref$<i32>"` -> `"i32"` -> `target.FindFirstType("i32").GetPointerType()` -> `i32 *`, which is a valid type for the container to use)

The before/afters are the same as in the above PR's `*-msvc` LLDB screenshots. This works as a stopgap while the above PR is evaluated, but I think that PR is still a much better solution.
…Jung

Show packed field alignment in mir_transform_unaligned_packed_ref

Fixes rust-lang#147528

I left the expected padding for the field out of the error message so the message would be the same on all platforms. It also isn't always possible to know the expected alignment, so this makes the message simpler.
Rename `downcast_[ref|mut]_unchecked` -> `downcast_unchecked_[ref|mut]`

## Intent

Renames `downcast_[ref|mut]_unchecked` to `downcast_unchecked_[ref|mut]` because we want to emphasise that it is the downcast that is unsafe, not the aliasing per:

rust-lang#90850 (comment)

## Tracking Issue: rust-lang#90850 (comment)

cc `@marc0246`
@rustbot rustbot added T-libs Relevant to the library team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Nov 9, 2025
@Zalathar
Copy link
Member Author

Zalathar commented Nov 9, 2025

Rollup of almost everything not in #148692, except for a second iffy, and a second debuginfo-related PR that I would prefer not to rollup with the first one.

I expect such a large rollup fail with some kind of unforeseen error, but that's fine. Flushing out problems is part of CI's job.

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Nov 9, 2025

📌 Commit 4cf1d39 has been approved by Zalathar

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Nov 9, 2025
@Zalathar
Copy link
Member Author

Zalathar commented Nov 9, 2025

Queue is getting pretty big, so let's use try jobs to help flush out failures.

@bors try jobs=x86_64-msvc-1,i686-msvc-1,x86_64-mingw-1,test-various,armhf-gnu,aarch64-apple

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Nov 9, 2025
Rollup of 22 pull requests

try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: x86_64-mingw-1
try-job: test-various
try-job: armhf-gnu
try-job: aarch64-apple
@rust-bors
Copy link

rust-bors bot commented Nov 9, 2025

☀️ Try build successful (CI)
Build commit: a87c285 (a87c2853ed7a75754ff2f40c314be3c919b63595, parent: 72b21e1a64dbbbb3b59ac7ce21363c366a894b79)

@bors
Copy link
Collaborator

bors commented Nov 9, 2025

⌛ Testing commit 4cf1d39 with merge 20f1c04...

@bors
Copy link
Collaborator

bors commented Nov 9, 2025

☀️ Test successful - checks-actions
Approved by: Zalathar
Pushing 20f1c04 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Nov 9, 2025
@bors bors merged commit 20f1c04 into rust-lang:master Nov 9, 2025
13 checks passed
@rustbot rustbot added this to the 1.93.0 milestone Nov 9, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Nov 9, 2025

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 acda5e9 (parent) -> 20f1c04 (this PR)

Test differences

Show 426 test diffs

Stage 1

  • [codegen] tests/codegen-llvm/overflow-checks.rs#DEBUG: [missing] -> pass (J2)
  • [codegen] tests/codegen-llvm/overflow-checks.rs#NOCHECKS: [missing] -> pass (J2)
  • [ui] tests/ui/consts/const-eval/overflow_checks.rs: [missing] -> pass (J2)
  • [ui] tests/ui/lint/lint-invalid-atomic-ordering-fetch-update.rs: pass -> [missing] (J2)
  • [ui] tests/ui/lint/lint-invalid-atomic-ordering-update.rs: [missing] -> pass (J2)
  • [ui] tests/ui/macros/macro-hygiene-help-issue-148580.rs: [missing] -> pass (J2)
  • [ui] tests/ui/packed/packed-union-borrow-element.rs: [missing] -> pass (J2)
  • [ui] tests/ui/self/lot-of-references-self.rs: [missing] -> pass (J2)
  • path::bench_path_components_iter: [missing] -> pass (J4)
  • path::bench_path_file_name: [missing] -> pass (J4)

Stage 2

  • [codegen] tests/codegen-llvm/overflow-checks.rs#DEBUG: [missing] -> pass (J0)
  • [codegen] tests/codegen-llvm/overflow-checks.rs#NOCHECKS: [missing] -> pass (J0)
  • path::bench_path_components_iter: [missing] -> pass (J0)
  • path::bench_path_file_name: [missing] -> pass (J0)
  • [ui] tests/ui/lint/lint-invalid-atomic-ordering-fetch-update.rs: pass -> [missing] (J1)
  • [ui] tests/ui/lint/lint-invalid-atomic-ordering-update.rs: [missing] -> pass (J1)
  • [ui] tests/ui/consts/const-eval/overflow_checks.rs: [missing] -> pass (J3)
  • [ui] tests/ui/macros/macro-hygiene-help-issue-148580.rs: [missing] -> pass (J3)
  • [ui] tests/ui/packed/packed-union-borrow-element.rs: [missing] -> pass (J3)
  • [ui] tests/ui/self/lot-of-references-self.rs: [missing] -> pass (J3)
  • [ui] tests/ui/lint/lint-invalid-atomic-ordering-fetch-update.rs: ignore (only executed when the architecture is x86_64) -> [missing] (J5)
  • [ui] tests/ui/lint/lint-invalid-atomic-ordering-update.rs: [missing] -> ignore (only executed when the architecture is x86_64) (J5)

Additionally, 404 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 20f1c045c46aecba6a6aeda55fe6659b26871c87 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. dist-aarch64-apple: 12431.4s -> 7016.3s (-43.6%)
  2. dist-x86_64-apple: 8806.5s -> 6413.0s (-27.2%)
  3. dist-apple-various: 3934.8s -> 3124.1s (-20.6%)
  4. aarch64-apple: 8346.7s -> 9623.6s (+15.3%)
  5. tidy: 189.1s -> 167.4s (-11.5%)
  6. pr-check-1: 1997.5s -> 1773.7s (-11.2%)
  7. x86_64-gnu-llvm-20: 2472.8s -> 2202.8s (-10.9%)
  8. dist-loongarch64-musl: 5530.4s -> 5011.1s (-9.4%)
  9. dist-armhf-linux: 4717.4s -> 5149.1s (+9.2%)
  10. dist-x86_64-illumos: 5709.9s -> 6216.8s (+8.9%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@Zalathar Zalathar deleted the rollup-398va3y branch November 9, 2025 11:47
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#128666 Add overflow_checks intrinsic d33ff44072623e704a2aa11c16c01672ac8e5bfe (link)
#146305 Add correct suggestion for multi-references for self type i… 77cc94114caeabf13426f0d81ee3f0f13a425030 (link)
#147179 [DebugInfo] Fix container types failing to find template ar… 00f56b7b387f1fabea289e2a50ebe115c025d6ce (link)
#147743 Show packed field alignment in mir_transform_unaligned_pack… 4ddaa5f34054db6a3c7ec11dd42821e335ed087f (link)
#148079 Rename downcast_[ref|mut]_unchecked -> `downcast_unchecke… edbb8771f0058eeb0315d453e4db210750eb174f (link)
#148084 Optimize path components iteration on platforms that don't … 190039d802f764aff07758bcb287bd1cdc84f745 (link)
#148126 Fix rust stdlib build failing for VxWorks 7cd5f19517faeb6dbc57a9c54a357f0c80ed9450 (link)
#148204 Modify contributor email entries in .mailmap 6f55cd4c746a29303100258f80ae4919d09e4c83 (link)
#148279 rustc_builtin_macros: rename bench parameter to avoid colli… 1d05800939cb5c762b1416d903c9e4e6016ee2a6 (link)
#148333 constify result unwrap unchecked 6704031f5bcef3670303b1716e40d52d47acaecb (link)
#148539 Add Allocator proxy impls for Box, Rc, and Arc b1740398a8c5e08c86f5be1d827ea0d8bef1aacc (link)
#148601 invalid_atomic_ordering: also lint update & try_update dbb0ca0e1562321f63469eccc194534238d353f8 (link)
#148612 Add note for identifier with attempted hygiene violation 310b14a423a8bb3f9f06a8df757ddadd8d46224e (link)
#148613 Switch hexagon targets to rust-lld 9434ded015691f6766a8b4795c3da39b0e41a4db (link)
#148619 Enable std locking functions on AIX d48c68b7cde6e30dd66ce360cd1c5e36f6913af8 (link)
#148644 [bootstrap] Make --open option work with `doc src/tools/e… f43907d7a228f41d5fcb40e079961e1f0533830b (link)
#148649 don't completely reset HeadUsages 49148ce152fe17b4a82c661931f9e9579db14f67 (link)
#148673 Remove a remnant of dyn* from the parser 40d24ceda0709e5de093e73b2f7a38b6fa4e1363 (link)
#148675 Remove eslint-js from npm dependencies 3278bb9bab04209d3333f6e1aea46e9b825c0d5d (link)
#148680 Recover [T: N] as [T; N] 9ec4b87a79a5fbefc94b3c2d8a8951a746b1e9eb (link)
#148688 Remove unused argument features from eval_config_entry fca87eb0df6e2f2a42608a0f19b563bbdd15676b (link)
#148711 Use the current lint note id when parsing cfg!() 32907f0476731b62591b8dbd2232ece84f24d11e (link)

previous master: acda5e9f9a

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (20f1c04): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
0.8% [0.8%, 0.8%] 2
Regressions ❌
(secondary)
0.2% [0.0%, 0.3%] 5
Improvements ✅
(primary)
-0.2% [-0.3%, -0.1%] 2
Improvements ✅
(secondary)
-0.5% [-0.8%, -0.2%] 2
All ❌✅ (primary) 0.3% [-0.3%, 0.8%] 4

Max RSS (memory usage)

Results (primary -2.4%, secondary -3.5%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
2.9% [2.9%, 2.9%] 1
Improvements ✅
(primary)
-2.4% [-2.4%, -2.4%] 1
Improvements ✅
(secondary)
-4.0% [-5.7%, -1.7%] 13
All ❌✅ (primary) -2.4% [-2.4%, -2.4%] 1

Cycles

Results (secondary -6.9%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-6.9% [-12.5%, -2.4%] 5
All ❌✅ (primary) - - 0

Binary size

Results (primary -0.1%, secondary -0.2%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
0.1% [0.1%, 0.1%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.2% [-0.3%, -0.0%] 10
Improvements ✅
(secondary)
-0.2% [-0.3%, -0.1%] 41
All ❌✅ (primary) -0.1% [-0.3%, 0.1%] 11

Bootstrap: 474.157s -> 477.048s (0.61%)
Artifact size: 390.96 MiB -> 391.28 MiB (0.08%)

@Zalathar
Copy link
Member Author

Zalathar commented Nov 9, 2025

@rust-timer
Copy link
Collaborator

Queued 49148ce with parent acda5e9, future comparison URL.
There is currently 1 preceding artifact in the queue.
It will probably take at least ~2.3 hours until the benchmark run finishes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-meta Area: Issues & PRs about the rust-lang/rust repository itself merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.