Skip to content

Rollup of 12 pull requests - #161208

Merged
rust-bors[bot] merged 35 commits into
rust-lang:mainfrom
jhpratt:rollup-bgWoX3a
Aug 17, 2026
Merged

Rollup of 12 pull requests#161208
rust-bors[bot] merged 35 commits into
rust-lang:mainfrom
jhpratt:rollup-bgWoX3a

Conversation

@jhpratt

@jhpratt jhpratt commented Aug 17, 2026

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

Alexander Zaitsev and others added 30 commits May 31, 2026 07:50
- remove pages from the Unstable book for -Zprofile-sample-use and
  -Zdebuginfo-for-profiling
- add corresponding pages to the Rustc codegen docs
- update all related to the flags entities from unstable to stable ones:
  internal structs, tests
Co-authored-by: 许杰友 Jieyou Xu (Joe) <39484203+jieyouxu@users.noreply.github.com>
The previous implementation of this check would incorrectly inspect any file
whose path contains a component named "core", causing false positives in
bootstrap.
For `Call` and `InlineAsm` we currently pass `pred` to
`apply_call_return_effect`, but for `Yield` we pass `block`. This
appears to be a copy/paste error. This currently has no effect because
no existing backward analyses look at this argument, but it's worth
fixing.

There's also a similar case in graphviz.rs.
The edge computation for `Call`, `InlineAsm`, and `Yield` exactly
duplicates what is done by `TerminatorKind::edges()`. This commit
changes it to use `edges()`; this makes the backward analysis more
similar to the forward analysis, which also matches on
`TerminatorEdges`.

Note: the bug fixed in the previous commit would have been less likely
with this new code.
Make ShardedHashMap::with_capacity split capacity between shards

This makes `ShardedHashMap::with_capacity` split capacity between shards. The callers in `CtxtInterners::new` did not divide these by the shard count, so it reserved 32 times greater capacity, significantly contributing to startup costs.

Spotted by Claude Opus while investigating startup stack usage.
…estebank

avoid pointless spans in target modifier errors

Fixes rust-lang#161174.

Currently the diagnostics for target modifier issues always point at the beginning of the first non-empty line in the file. That makes no sense at all IMO since the error has nothing to do with that line: the error is in the CLI flags. So let's just remove this pointless span.

While doing this I realized there are other errors also doing this, e.g. `report_incompatible_partial_mitigations` and `report_incompatible_async_drop_feature`.  Cc @arielb1 @azhogin why was this done?
@rust-lang/wg-diagnostics do you see any reason to have these diagnostics point at `krate.spans.inner_span.shrink_to_lo()`? IMO that is just never a useful thing to do.
…jgillot

Analysis cleanups

Three small dataflow analysis cleanups. Details in individual commits.

r? @cjgillot
…e-use-and-debug-info-for-profiling, r=folkertdev

Stabilize `-Zprofile-sample-use`

Tracking issue: rust-lang#155668

# Stabilization report

## Summary

Sample Profile-Guided Optimization (Sample PGO or SPGO) is an alternative way to perform feedback-directed optimization (FDO). Rustc already supports Instrumented PGO (with the `-Cprofile-generate` / `-Cprofile-use` flags). Downside of the instrumented approach include that it requires a separate compilation and that the instrumentation has significant runtime overhead. SPGO instead uses the output of external profilers like `perf` during the compilation process to perform more aggressive compiler optimizations. This approach is described in [this paper](https://dl.acm.org/doi/abs/10.1145/2854038.2854044).

I propose stabilizing `-Zprofile-sample-use` as `-Cprofile-sample-use`

More information can be found in the updated by the PR "Profile-guided Optimization" guide or Clang PGO [guide](https://clang.llvm.org/docs/UsersManual.html#using-sampling-profilers).

These flags are documented as:

> - `profile-sample-use`:
>
> This flag specifies the profiling data file to be used for sample-based
> profile-guided optimization (SPGO). The flag takes a mandatory argument which
> is the path to a valid `.prof` file. See the chapter on
> [profile-guided optimization] for more information.
> The `-Zdebuginfo-for-profiling` flag can be used to
> improve the quality of the profiling data.

For more details about the flag and their usage - check the Profile-guided Optimization guide [change](https://github.com/rust-lang/rust/pull/155942/changes#diff-da79c0293559274602ced76b0d50ab4d56d4eec4dcbb8b59d515b9ae94f26c42).

### What is stabilized

One compiler flag: `-Zprofile-sample-use`.

### What isn't stabilized

I think this is the right section to compare Sample-based PGO (SPGO) implementation in Rustc vs its "big brother" - Sample-based PGO in Clang.

Besides `-Zprofile-sample-use` in Rustc / `-fprofile_sample_use` in Clang and `-Zdebug-info-for-profiling` in Rustc (which we decided to **not** stabilize at the moment) / `-fdebug-info-for-profiling, -fno-debug-info-for-profiling` in Clang, Clang additionally supports the following SPGO-related switches:

* `-fpseudo-probe-for-profiling, -fno-pseudo-probe-for-profiling` [flags](https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fpseudo-probe-for-profiling). According to the Clang's PGO [guide](https://clang.llvm.org/docs/UsersManual.html#using-sampling-profilers), this switch is optional for SPGO. This switch has originals from an extension of SPGO that is called "Context-sensitive Sample PGO with Pseudo-Instrumentation" or simply "CSSPGO". Here is original [RFC](https://groups.google.com/g/llvm-dev/c/1p1rdYbL93s?pli=1) for the thing, also I can link some LLVM commits/discussions about the topic. This flag is not required for regular SPGO - it's just an improvement idea over regular SPGO, and could be added later to the Rustc in a different process (initially to unstable, than later promoted to stable). But that's another story and we can consider it later.
* `-f[no-]unique-internal-linkage-names` [switch](https://clang.llvm.org/docs/UsersManual.html#cmdoption-f-no-unique-internal-linkage-names) is also mentioned in the Clang PGO guide. I don't think that the switch is applicable to Rustc. Correct me if I am wrong pls.
* `-fsample-profile-use-profi, -fno-sample-profile-use-profi` [switch](https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fsample-profile-use-profi). This switch is also marked as optional in the Clang PGO guide. This switch is an attempt to improve some inaccuracies in SPGO profile with some heuristics. SPGO in Rustc can be easily stabilized without this flag, since it's just a non-critical for regular SPGO usage heuristic. If we decide to add support for this switch to Rustc too - we can do in a separate activity without blocking with stabilization process. Check rust-lang#156898 for more details.
* `-fprofile-sample-accurate, -fauto-profile-accurate, -fno-profile-sample-accurate` [switch](https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fprofile-sample-accurate). This switch is not mentioned even by the Clang PGO guide :) This flag resolves [this](llvm/llvm-project#63024) issue/feature request from LLVM upstream in SPGO use case. According to the description from Clang: "Specifies that the sample profile is accurate. If the sample profile is accurate, callsites without profile samples are marked as cold. Otherwise, treat callsites without profile samples as if we have no profile". Since we don't specify the flag in Rustc, branches without profile samples are now considered as branches without a profile and optimized as regular release code. Having support for this in Rustc would be definitely a nice addition to be on par with Clang, since there are good use cases for that. But I do not think that this could be a blocker for stabilization of SPGO in Rustc without this functionality - we can add it later. As a proof that SPGO in Rustc works completely okay without it you can use Rust-for-Linux bench [results](https://lore.kernel.org/rust-for-linux/20260331-autofdo-v2-1-eb5c5964820d@google.com/) with SPGO via AutoFDO.

I am not aware about any other SPGO-related flags in Clang.

We definitely have a gap in SPGO-related flags in Rustc compared to Clang, but none of these gaps is a blocker for stabilization `-Zprofile-sample-use` right now. However, it would be nice to resolve these gaps later: add them in unstable form, test, and later stabilize them to be on par with Clang from SPGO optimization perspective. Right now all the flags above are missing in Rustc even in the unstable form. Stabilization of `-Zprofile-sample-use` **does not** prevent adding all missing SPGO related features later.

## Design

### RFC history

No RFC was created for these options. All original discussions for Unstable were done in the original Unstable PR: rust-lang#87918

### Post-RFC changes

> What other user-visible changes have occurred since the RFC was accepted? Describe both changes that the lang team accepted (and link to those decisions) as well as changes that are being presented to the team for the first time in this stabilization report.

Compared to the unstable (RFC-like) state, I've made the following changes:

* I extended the Rustc's PGO [guide](https://doc.rust-lang.org/beta/rustc/profile-guided-optimization.html) with Sample-based PGO information and instructions, how to use it. This change will resolve rust-lang#117023 . My changes are highly-inspired / cautiously copy-pasted (only needed parts) from the Clang guide. From licensing perspective it should be fine. If it's a problem in any way - I can do some rewording (but I would like to avoid such things). I decided to do some documentation copy due to Sample-based PGO incompatibilities between Clang and Rustc (Clang supports more options at very least). I believe that current version is more user-friendly and easier to use, compared to just referring to the Clang PGO guide.
* I changed help message and corresponding documentation for `-Zdebug_info_for_profiling` switch to be in the same way as Clang already [has](https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-fdebug-info-for-profiling). It's kinda difficult to describe clearly, what the option does without exposing too much LLVM details - that's why I linked the documentation to the corresponding LLVM pass in the Reference for this option.

### Key points

No arguments were raised during stabilization discussion of the feature in any place yet, including Zulip discussion: [#t-compiler > Stabilizing Sample PGO (SPGO): &rust-lang#96;-Zprofile-sample-use&rust-lang#96;](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Stabilizing.20Sample.20PGO.20.28SPGO.29.3A.20.60-Zprofile-sample-use.60/with/590356923)

### Nightly extensions

I am not aware of any other unstable SPGO-related switches.

### Doors closed

> What doors does this stabilization close for later changes to the language? E.g., does this stabilization make any other RFCs, lang experiments, or known in-flight proposals more difficult or impossible to do later?

* Removing Sample-based PGO support from Rustc will be harder. But the technology itself is used on large scales in other ecosystems like Clang (heavily-used in big tech companies internally), and Rust-for-Linux already started to use it even with Rustc. I don't think will be a need to remove it in near future.
* Renaming flags will be harder. But current naming is done to be consistent with Clang. Clang proved robustness of this naming, so it shouldn't be a concern either.

No other proposals/experiments/etc. are affected.

## Feedback

### Call for testing

Call for testing **wasn't** done - it was slightly discussed [#t-compiler > Stabilizing Sample PGO (SPGO): &rust-lang#96;-Zprofile-sample-use&rust-lang#96; @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Stabilizing.20Sample.20PGO.20.28SPGO.29.3A.20.60-Zprofile-sample-use.60/near/590581795). However, no negative feedback was received for stabilization of this feature.

Right now this feature is already tested personally by me (local experiments with assembly changes verification before/after applying SPGO on an Intel-based (with LBR) Linux machine in some sample apps with `llvm-profgen` tool and by Rust-for-Linux project in this [patch](https://lore.kernel.org/rust-for-linux/20260331-autofdo-v2-1-eb5c5964820d@google.com/). Additionally, this feature was in unstable state for 5 years (since 2021) with no concerns (due to no bugs or no users - who knows. At least it was implemented for a reason 5 years ).

I think that's enough verification for such kind of feature.

### Nightly use

The only publicly-known user of this feature is Rust-for-Linux project (see [this](https://lore.kernel.org/rust-for-linux/20260331-autofdo-v2-1-eb5c5964820d@google.com/) commit). Besides that, no other users were found on GitHub via GitHub search for `"-Zprofile-sample-use"` query: almost all found entries are various copies of the Unstable book with the documentation for the option, and other places are related to the Linux kernel. Two found issues are related to the tracking [issue](rust-lang#155668) of these two flags, and corresponding tracking [issue](Rust-for-Linux/linux#2) in Rust-for-Linux.

I am not personally aware of any closed-source users of this feature. Probably Google (Sampled-based PGO biggest user at least for C++) and other big techs use it somewhere internally too but it's just a guess.

## Implementation

### Major parts

- rust-lang#87918 - unstable original implementation
- rust-lang#155942 - this PR, stabilization with some minor changes

No significant developments on the Rustc side - just propagating in a proper way SPGO profile to the LLVM part of the compiler.

### Coverage

* For `-Cprofile-sample-use` we have only UI tests. We haven't implemented e2e tests since it's will be hard to add them to the current test suite (see the [comment](rust-lang#155942 (comment)))

### Breaking changes

No breaking changes are expected from this stabilization.

## History

- rust-lang#87918 - initial implementation
- rust-lang#156887 - renaming `-Zdebug_info_for_profiling` into `-Zdebuginfo_for_profiling` + adding more tests for the feature (left for the history)
- rust-lang#155668 - tracking issue

## Acknowledgments

* [Michael Benfield](https://github.com/mikebenfield) - author of the original PR for Unstable
* [Jakub Beránek](https://github.com/Kobzol/) - the "PGO guy" in Rustc and `cargo-pgo` author
* [Miguel Ojeda](https://github.com/ojeda) - Rust-for-Linux maintainer (they already use Sample-based PGO in Rust-for-Linux)
* [Alexander Zaitsev](https://github.com/zamazan4ik) - me

I am not aware of any person, who is against stabilization of these two flags.

## Open items

I am not aware of any open issue, that is a blocker for stabilization of this feature.

List of SPGO-related things, which are **not** stabilization blockers in my opinion:

* rust-lang#155525 - this could improve SPGO UX with Rustc, but it's not a strict requirement - an externally-installed `llvm-profgen` can be used instead (I've tested it locally by using `llvm-profgen-21` for SPGO with Rustc 1.95, which is LLVM 22-based
…lacrum

Fix std-features example in bootstrap.example.toml
…cote

Add regression test for test_case attribute on a use item

Closes rust-lang#129765
… r=nnethercote

Add regression test for dyn impl missing type

closes rust-lang#152668
Add regression test for trait on next solver

Closes rust-lang#151306.

The new test crashes on commit 37d85e5 (nightly-2026-04-29).
The new test fails (but not crashes) due to different stderr since c935696 (nightly-2026-04-30).
Ofc the test passes on current version.

Also, I took the liberty of adding a few bits of code to the minimal reproduction shared in the original issue just to make the stderr less verbose and we can focus on the issue that really matters. So I added main, removed the lifetimes, etc.

It's more code, but I'd argue is easier to reason for a test, although I'd obviously revert back to the minimal example if the reviewer thinks it's best.
tidy: Properly restrict undocumented-unsafe to `library/core`

The previous implementation of this check would incorrectly inspect any file whose path contains a component named "core", causing false positives in bootstrap.

I noticed this while trying to move some bootstrap code out of `lib.rs` and into a submodule in `crate::core`.
…mprove, r=folkertdev

Improve `powerpc-types.rs` test

This makes the changes from rust-lang#161135 (except the `min-llvm-version`) that don't require actually adding `f16`/`f128` support.

r? @folkertdev
ping me when target ABI checks are being changed

The first commit moves the target checks into a separate file, so that the second commit can set up triagebot to ping me when that file gets changed.
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Aug 17, 2026
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-tidy Area: The tidy tool S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Aug 17, 2026
@jhpratt

jhpratt commented Aug 17, 2026

Copy link
Copy Markdown
Member Author

@bors r+ p=5

@bors try jobs=dist-various-1,test-various,x86_64-gnu-aux,x86_64-gnu-llvm-21-3,x86_64-msvc-1,aarch64-apple-,x86_64-mingw-1,i686-msvc-

@rust-bors

rust-bors Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 069c0b3 has been approved by jhpratt

It is now in the queue for this repository.

@rust-bors rust-bors Bot 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 Aug 17, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Aug 17, 2026
Rollup of 12 pull requests


try-job: dist-various-1
try-job: test-various
try-job: x86_64-gnu-aux
try-job: x86_64-gnu-llvm-21-3
try-job: x86_64-msvc-1
try-job: aarch64-apple-*
try-job: x86_64-mingw-1
try-job: i686-msvc-*
@rust-bors

This comment has been minimized.

@rust-bors

rust-bors Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 4d2a6f2 (4d2a6f2f5fe1d73cd26871099299df2d893da7f7)
Base parent: 2c39ff4 (2c39ff499469be916d4e45506d1afed69bbaddb7)

@rust-bors rust-bors Bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Aug 17, 2026
@rust-bors

rust-bors Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: jhpratt
Duration: 3h 9m 27s
Pushing 8962dda to main...

@rust-bors
rust-bors Bot merged commit 8962dda into rust-lang:main Aug 17, 2026
15 checks passed
@rustbot rustbot added this to the 1.100.0 milestone Aug 17, 2026
@rust-bors rust-bors Bot mentioned this pull request Aug 17, 2026
6 tasks
@github-actions

Copy link
Copy Markdown
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 eaa160c (parent) -> 8962dda (this PR)

Test differences

Show 41 test diffs

Stage 1

  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc64_power8: pass -> [missing] (J0)
  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc64_power9: [missing] -> pass (J0)
  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc64le_power9: [missing] -> pass (J0)
  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc_power8: pass -> [missing] (J0)
  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc_power9: [missing] -> pass (J0)
  • [crashes] tests/crashes/126725.rs: [missing] -> pass (J0)
  • [crashes] tests/crashes/141590.rs: [missing] -> pass (J0)
  • [crashes] tests/crashes/142229.rs: [missing] -> pass (J0)
  • [crashes] tests/crashes/145217.rs: [missing] -> pass (J0)
  • [crashes] tests/crashes/148094.rs: [missing] -> pass (J0)
  • [crashes] tests/crashes/148095.rs: [missing] -> pass (J0)
  • [crashes] tests/crashes/152410.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/associated-types/dyn-impl-missing-assoc-type-ice-152668.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/compile-flags/invalid/pgo-sample-use-and-generate-conflicting-flags.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/compile-flags/invalid/pgo-sample-use-and-instrument-use-conflicting-flags.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/custom_test_frameworks/test-case-on-use-item-129765.rs: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/traits/next-solver/assertion-left-right-goal.rs: [missing] -> pass (J3)
  • [ui] tests/ui/associated-types/dyn-impl-missing-assoc-type-ice-152668.rs: [missing] -> pass (J4)
  • [ui] tests/ui/compile-flags/invalid/pgo-sample-use-and-generate-conflicting-flags.rs: [missing] -> pass (J4)
  • [ui] tests/ui/compile-flags/invalid/pgo-sample-use-and-instrument-use-conflicting-flags.rs: [missing] -> pass (J4)
  • [ui] tests/ui/custom_test_frameworks/test-case-on-use-item-129765.rs: [missing] -> pass (J4)
  • [ui] tests/ui/traits/next-solver/assertion-left-right-goal.rs: [missing] -> pass (J4)

Stage 2

  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc64_power8: pass -> [missing] (J1)
  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc64_power9: [missing] -> pass (J1)
  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc64le_power9: [missing] -> pass (J1)
  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc_power8: pass -> [missing] (J1)
  • [assembly] tests/assembly-llvm/asm/powerpc-types.rs#powerpc_power9: [missing] -> pass (J1)
  • [crashes] tests/crashes/126725.rs: [missing] -> pass (J2)
  • [crashes] tests/crashes/141590.rs: [missing] -> pass (J2)
  • [crashes] tests/crashes/142229.rs: [missing] -> pass (J2)
  • [crashes] tests/crashes/145217.rs: [missing] -> pass (J2)
  • [crashes] tests/crashes/148094.rs: [missing] -> pass (J2)
  • [crashes] tests/crashes/148095.rs: [missing] -> pass (J2)
  • [crashes] tests/crashes/152410.rs: [missing] -> pass (J2)
  • [ui] tests/ui/associated-types/dyn-impl-missing-assoc-type-ice-152668.rs: [missing] -> pass (J5)
  • [ui] tests/ui/compile-flags/invalid/pgo-sample-use-and-generate-conflicting-flags.rs: [missing] -> pass (J5)
  • [ui] tests/ui/compile-flags/invalid/pgo-sample-use-and-instrument-use-conflicting-flags.rs: [missing] -> pass (J5)
  • [ui] tests/ui/custom_test_frameworks/test-case-on-use-item-129765.rs: [missing] -> pass (J5)
  • [ui] tests/ui/traits/next-solver/assertion-left-right-goal.rs: [missing] -> pass (J5)

Additionally, 2 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 8962ddaf8ee41101345dcbb63de048f3fa10791e --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. i686-msvc-2: 1h 23m -> 2h 8m (+54.9%)
  2. x86_64-gnu-nopt: 1h 34m -> 2h 21m (+49.9%)
  3. x86_64-msvc-ext1: 1h 34m -> 2h 15m (+42.6%)
  4. dist-powerpc64le-linux-gnu: 1h 8m -> 1h 34m (+38.8%)
  5. x86_64-msvc-1: 2h -> 2h 38m (+31.7%)
  6. i686-gnu-nopt-1: 1h 41m -> 2h 12m (+31.1%)
  7. dist-various-2: 34m 4s -> 43m 51s (+28.7%)
  8. dist-x86_64-illumos: 1h 51m -> 1h 22m (-25.7%)
  9. x86_64-gnu-gcc-core-tests: 14m 35s -> 10m 53s (-25.4%)
  10. x86_64-gnu-aux: 2h 39m -> 1h 59m (-25.2%)
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.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (8962dda): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

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
Regressions ❌
(secondary)
0.2% [0.2%, 0.3%] 4
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -1.0%, secondary -8.9%)

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

mean range count
Regressions ❌
(primary)
3.2% [3.2%, 3.2%] 1
Regressions ❌
(secondary)
2.8% [0.6%, 5.0%] 3
Improvements ✅
(primary)
-1.5% [-2.2%, -0.6%] 7
Improvements ✅
(secondary)
-11.4% [-15.7%, -1.3%] 14
All ❌✅ (primary) -1.0% [-2.2%, 3.2%] 8

Cycles

Results (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
Regressions ❌
(secondary)
3.5% [2.5%, 5.5%] 4
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.6% [-4.4%, -1.9%] 6
All ❌✅ (primary) - - 0

Binary size

Results (secondary -0.0%)

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)
-0.0% [-0.0%, -0.0%] 1
All ❌✅ (primary) - - 0

Bootstrap: 468.329s -> 457.572s (-2.30%)
Artifact size: 398.91 MiB -> 398.91 MiB (0.00%)

@rust-bors

rust-bors Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#161127 Make ShardedHashMap::with_capacity split capacity between s… 7a248aaf6ebdea9a255ff36335102078669a94b7
(link)
#161183 avoid pointless spans in target modifier errors 18e5375fe1bf68ed22eea3aeba09675aa0436f50
(link)
#161203 Analysis cleanups f88285cc40b286f2c8371584a8cb9cd1660c9e15
(link)
#155942 Stabilize -Zprofile-sample-use 11cf4e571d9527c25b9045740c26dface202cc9c
(link)
#160939 Fix std-features example in bootstrap.example.toml f90b543ff362670f0e0183abbbc5a93400097a0d
(link)
#161084 Add regression test for test_case attribute on a use item 503a95feeaec1277140249c1f931f3c114b1c346
(link)
#161139 Add regression test for dyn impl missing type 54660519809bdf618fd30c4536424e12f6a764c3
(link)
#161150 add crashtests [4/N] 5abaeaca4a5c887bb09e8f12eec153093c272703
(link)
#161170 Add regression test for trait on next solver 2c207bf49c3cb606d02d74069a628dd73ce7ed6b
(link)
#161173 tidy: Properly restrict undocumented-unsafe to `library/cor… 5180a86377947c10b692646f9644d7453ddb75d2
(link)
#161191 Improve powerpc-types.rs test afa092e51ab3ef41892266be0c34eb147982da0a
(link)
#161198 ping me when target ABI checks are being changed c1b2f418ed5df487e851c2cd455dcd2f27b3d4c3
(link)

parent commit: eaa160c49d

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

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

Labels

A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-tidy Area: The tidy tool merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.