Skip to content

Rollup of 21 pull requests - #158795

Merged
rust-bors[bot] merged 59 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-vhfdJ4m
Jul 5, 2026
Merged

Rollup of 21 pull requests#158795
rust-bors[bot] merged 59 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-vhfdJ4m

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

mati865and others added 30 commits June 17, 2026 13:17
Before mingw-w64/mingw-w64@dbfdf80
mkstemp used by Binutils was not sufficiently
collision resilient and that led to CI errors for
us.
Our new baseline mingw-w64 toolchain's Binutils
are built using mingw-w64 with the fix:
niXman/mingw-builds#682
So, we should be able to get rid of it.
Add a tier 3 bare-metal target for RV32IMFC cores that have hardware
single-precision floating point (the `F` extension, `ilp32f` ABI) but no
atomic (`A`) extension.
This is `riscv32imafc-unknown-none-elf` minus the atomic extension,
handled the same way `riscv32imc-unknown-none-elf` handles a no-`a` core:
`+forced-atomics` lowers atomic load/store to plain load/store (sound on a
single hart) while `atomic_cas = false` keeps RMW/CAS off, so no
`lr.w`/`sc.w`/`amo*` are ever emitted and the target does not trap on a
core without the `A` extension. Downstream crates use a critical-section
polyfill (e.g. `portable-atomic`) for compare-and-swap.
This combination has no builtin target today: cores that pair a
hardware-float application core with no atomic extension otherwise need a
custom target spec plus `-Zbuild-std` on nightly, which is unavailable on
stable. The motivating hardware is the application core of vendor SoCs such
as the HiSilicon WS63/BS2X family, but the target is vendor-neutral.
Register the target, add it to the `targets-elf` assembly sanity test, and
document it on the shared `riscv32-unknown-none-elf` platform-support page.
In many cases where we are flattening `option::IntoIter<I>`, we can use
`into_flat_iter()` instead for a simpler implementation.
This tool is part of the main workspace, so its own lock file is unused,
and the file is clearly outdated for its current dependencies anyway.
Splitting assembling the return value over multiple let-bindings enables
pedagogic discussion of each named let-binding.
The `slice` arg was renamed to remove any chance of visual confusion
with use of `core::slice` functions or "slice" per se.
This starts with `StatementKind` and `TerminatorKind`; they don't need
hashing. That then allows the removal of the `Hash` impl of various
other types.
Signed-off-by: Ajay Singh <ajaykripa8736968359@gmail.com>
@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Jul 5, 2026
@JonathanBrouwer

Copy link
Copy Markdown
MemberAuthor

@bors r+ rollup=never p=5

@rust-bors

rust-borsBot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 3755fd9 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-borsrust-borsBot 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 Jul 5, 2026
@rust-bors

This comment has been minimized.

@rust-borsrust-borsBot 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 Jul 5, 2026
@rust-bors

rust-borsBot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 30m 1s
Pushing 4eb6253 to main...

@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 ea088e0 (parent) -> 4eb6253 (this PR)

Test differences

Show 399 test diffs

Stage 0

  • spec::tests::riscv32imfc_unknown_none_elf: [missing] -> pass (J5)

Stage 1

  • [ui (polonius)] tests/ui/associated-inherent-types/next-solver-unsatisfied-bounds-inherent-tait.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/feature-gates/feature-gate-diagnostic-on-type-error-malformed-args.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/impl-trait/rpit/dyn-in-nested-rpit.rs#current: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/impl-trait/rpit/dyn-in-nested-rpit.rs#next: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/lint/improper-ctypes/nonzero-char.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/resolve/too-many-super-issue-158275.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/splat/run-splat.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/splat/splat-fn-ptr-cast-fail.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/splat/splat-self.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/traits/error_reporting/conditionally-implemented-trait-158423.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/traits/next-solver/consider_builtin_pointee_candidate-instantiate-result-fail.rs: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/traits/next-solver/nested-rerun-not-erased-in-normalizes-to.rs: [missing] -> pass (J0)
  • spec::tests::riscv32imfc_unknown_none_elf: [missing] -> pass (J2)
  • [ui] tests/ui/associated-inherent-types/next-solver-unsatisfied-bounds-inherent-tait.rs: [missing] -> pass (J3)
  • [ui] tests/ui/feature-gates/feature-gate-diagnostic-on-type-error-malformed-args.rs: [missing] -> pass (J3)
  • [ui] tests/ui/impl-trait/rpit/dyn-in-nested-rpit.rs#current: [missing] -> pass (J3)
  • [ui] tests/ui/impl-trait/rpit/dyn-in-nested-rpit.rs#next: [missing] -> pass (J3)
  • [ui] tests/ui/lint/improper-ctypes/nonzero-char.rs: [missing] -> pass (J3)
  • [ui] tests/ui/resolve/too-many-super-issue-158275.rs: [missing] -> pass (J3)
  • [ui] tests/ui/splat/run-splat.rs: [missing] -> pass (J3)
  • [ui] tests/ui/splat/splat-fn-ptr-cast-fail.rs: [missing] -> pass (J3)
  • [ui] tests/ui/splat/splat-self.rs: [missing] -> pass (J3)
  • [ui] tests/ui/traits/error_reporting/conditionally-implemented-trait-158423.rs: [missing] -> pass (J3)
  • [ui] tests/ui/traits/next-solver/consider_builtin_pointee_candidate-instantiate-result-fail.rs: [missing] -> pass (J3)
  • [ui] tests/ui/traits/next-solver/nested-rerun-not-erased-in-normalizes-to.rs: [missing] -> pass (J3)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#riscv32imfc_unknown_none_elf: [missing] -> pass (J5)

Stage 2

  • [ui] tests/ui/associated-inherent-types/next-solver-unsatisfied-bounds-inherent-tait.rs: [missing] -> pass (J1)
  • [ui] tests/ui/feature-gates/feature-gate-diagnostic-on-type-error-malformed-args.rs: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/rpit/dyn-in-nested-rpit.rs#current: [missing] -> pass (J1)
  • [ui] tests/ui/impl-trait/rpit/dyn-in-nested-rpit.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/lint/improper-ctypes/nonzero-char.rs: [missing] -> pass (J1)
  • [ui] tests/ui/resolve/too-many-super-issue-158275.rs: [missing] -> pass (J1)
  • [ui] tests/ui/splat/run-splat.rs: [missing] -> pass (J1)
  • [ui] tests/ui/splat/splat-fn-ptr-cast-fail.rs: [missing] -> pass (J1)
  • [ui] tests/ui/splat/splat-self.rs: [missing] -> pass (J1)
  • [ui] tests/ui/traits/error_reporting/conditionally-implemented-trait-158423.rs: [missing] -> pass (J1)
  • [ui] tests/ui/traits/next-solver/consider_builtin_pointee_candidate-instantiate-result-fail.rs: [missing] -> pass (J1)
  • [ui] tests/ui/traits/next-solver/nested-rerun-not-erased-in-normalizes-to.rs: [missing] -> pass (J1)
  • [run-make] tests/run-make/compressed-debuginfo-zstd: pass -> ignore (ignored if LLVM wasn't build with zstd for ELF section compression or LLVM is not the default codegen backend) (J4)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#riscv32imfc_unknown_none_elf: [missing] -> pass (J6)

Additionally, 358 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 4eb62535fc12dd1a63fd43a4173e224e79313c4d --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-gnu-1: 1h 26m -> 2h 30m (+73.2%)
  2. x86_64-gnu-llvm-21: 48m 11s -> 1h 21m (+68.7%)
  3. x86_64-gnu-gcc-core-tests: 15m 41s -> 25m 21s (+61.5%)
  4. x86_64-gnu-stable: 1h 56m -> 2h 50m (+46.6%)
  5. pr-check-1: 28m 14s -> 39m 40s (+40.5%)
  6. dist-x86_64-solaris: 1h 42m -> 1h 1m (-39.9%)
  7. x86_64-gnu-tools: 1h 6m -> 1h 26m (+29.9%)
  8. pr-check-2: 38m 50s -> 50m 19s (+29.5%)
  9. x86_64-gnu-next-trait-solver-polonius: 58m 43s -> 1h 14m (+26.0%)
  10. dist-aarch64-apple: 1h 55m -> 1h 25m (-25.8%)
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

📌 Perf builds for each rolled up PR:

PR#MessagePerf Build Sha
#158100Emit retags in codegen to support BorrowSanitizer (part 4)6c00b94ceede0fa74ad8a92ce9b918785c13194b (link)
#158494Improve E0277 diagnostics for conditionally implemented tra…752cc4a9f164b9289e2cfe2446b2f346cac1a7c9 (link)
#158606use ProjectionPredicate instead of AliasRelate7e089bbe6581108a1f8146fd1bd291dff445715d (link)
#158627Simplify option-iterator flattening in the compiler34a8e7a0a0442687ab07688838419cee41267ee8 (link)
#158658Update LLVM submodule9872f6449a3c2b9196485f9788499ffc961a6796 (link)
#158665Revert "Remove redundant dyn-compatibility check."7017bac6dc0325f4d9692f4704ec5eb04824e66b (link)
#158021Remove old MinGW workarounda324a7b8896aad6cc48a541e871cd3344594e040 (link)
#158473Add riscv32imfc-unknown-none-elf bare-metal target58f3b4e9c9afc349727f95e3ca032cf107ba3d15 (link)
#158549process::exec: using appropriate exit code on vxworks.6d2eb85f53bb6bdb5905c77a8e2f68f26a4cb76e (link)
#158585Improve diagnostic for too many super keywords17623252a2f2d4d049be4162c6da970ef47d0768 (link)
#158637hir_ty_lowering: avoid self type lookup for inherent aliasesbc69e118bafe9dd004f7ebb7e9f19711a7af8946 (link)
#158651ptr doc: reduce use of unsafe block to where needed954c0a0dabc56701cd829f8e3fdb9765e7dee81c (link)
#158669Remove src/tools/test-float-parse/Cargo.lockb5091786826064ff5184b296cbd604894186d4b1 (link)
#158674library: Polish transmute's split_at_stdlib example39b626406b0af39a2ee9e09a7d1ce3f9c0c45f56 (link)
#158677Add extra splat tests43a251e9d4478932864367cdd45cb1ebb20b0291 (link)
#158680Avoid ICE for NonZero<char> in improper_ctypes3b7d720ce89f2fe1eb78a54fb6e56af932eb9704 (link)
#158681Remove unnecessary Hash derives from MIR typese770092884a8aeb37c6d626d1079c8879a527b2e (link)
#158682Avoid delayed bug for disabled on_type_error arguments09bb180c6f72554d400a3d60ee62c4c117ba831c (link)
#158684Add missing generic test coverage for #[splat]ae4547de45a31326217365458d894aeeee7e7044 (link)
#158687Streamline MacEagerb64c8a936aaabc94881610b5b5534684176eeb2e (link)
#158688Cleanup attribute docs and add links to other mentioned att…63f1c70075b5cabdff13ef5bf77af0dd2f2ba5da (link)

previous master: ea088e0a3d

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
Copy Markdown
Collaborator

Finished benchmarking commit (4eb6253): comparison URL.

Overall result: ❌✅ regressions and improvements - please read:

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.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
441.1%[0.2%, 1116.0%]7
Improvements ✅
(primary)
-0.3%[-0.3%, -0.2%]2
Improvements ✅
(secondary)
-0.6%[-1.2%, -0.3%]6
All ❌✅ (primary)-0.3%[-0.3%, -0.2%]2

Max RSS (memory usage)

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

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

meanrangecount
Regressions ❌
(primary)
5.5%[5.5%, 5.5%]1
Regressions ❌
(secondary)
4.2%[2.2%, 5.0%]4
Improvements ✅
(primary)
-1.6%[-2.6%, -0.8%]8
Improvements ✅
(secondary)
-2.7%[-4.0%, -0.7%]7
All ❌✅ (primary)-0.8%[-2.6%, 5.5%]9

Cycles

Results (secondary 572.0%)

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

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
572.0%[2.1%, 828.3%]4
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
--0
All ❌✅ (primary)--0

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 489.274s -> 489.956s (0.14%)
Artifact size: 393.40 MiB -> 393.31 MiB (-0.02%)

@rustbotrustbot added the perf-regression Performance regression. label Jul 5, 2026
@panstromek

panstromek commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Regressions caused by #158606 (comment)

Regressions are limited to new-solver, which is not enabled by default. I think we can mark this as triaged and let the types team folluwup on this as they see fit.

@rustbot label: +perf-regression-triaged

@rustbotrustbot added the perf-regression-triaged The performance regression has been triaged. label Jul 6, 2026
@JonathanBrouwer
JonathanBrouwer deleted the rollup-vhfdJ4m branch August 21, 2026 08:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributesArea: Attributes (`#[…]`, `#![…]`)A-CIArea: Our Github Actions CIA-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-testsuiteArea: The testsuite used to check the correctness of rustcmerged-by-borsThis PR was explicitly merged by bors.perf-regressionPerformance regression.perf-regression-triagedThe performance regression has been triaged.rollupA PR which is a rollupT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-infraRelevant to the infrastructure team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.WG-trait-system-refactorThe Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

20 participants

@JonathanBrouwer@rust-timer@panstromek@rustbot@mati865@sanchuanhehe@devnexen@andrewkernel@raushan728@khyperia@cuviper@tshepang@nikic@theemathas@Dnreikronos@workingjubilee@teor2345@TaKO8Ki@nnethercote@Ajay-singh1