Skip to content

Rollup of 12 pull requests#147512

Merged
bors merged 29 commits intorust-lang:masterfrom
Zalathar:rollup-p8kb5f7
Oct 9, 2025
Merged

Rollup of 12 pull requests#147512
bors merged 29 commits intorust-lang:masterfrom
Zalathar:rollup-p8kb5f7

Conversation

@Zalathar
Copy link
Copy Markdown
Member

@Zalathar Zalathar commented Oct 9, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

cyrgani and others added 29 commits October 5, 2025 13:58
When building with `rust.rpath = false`, every `rustc` invocation needs
to include the library path as well. I particularly ran into this in
`generate_target_spec_json_schema` when testing 1.91-beta in Fedora,
where we do disable rpath for our system builds. The new helper function
will hopefully encourage the right thing going forward.
Users who build `core` for the sole purpose of enabling `panic_immediate_abort` might expect
"`panic_immediate_abort` is now a real panic strategy" to mean that setting `panic =
"immediate-abort"` in `Cargo.toml` or `-Cpanic=immediate-abort` in `RUSTFLAGS` to be sufficient for
migration. But this is not the case, `core` still needs to be built for those changes to take
effect.

See rust-lang#146974 for additional context.
LLVM generally can do this on its own, but it helps miri and other backends.
…obal`

Since it can easily be implemented using the existing LLVM C API in
terms of `LLVMAddGlobal` and `LLVMSetLinkage` and `define_private_global`
was only used in one place.
All APIs used from outside the compiletest library crate have been isolated to
the `cli` and `rustdoc_gui_test` modules, so no other items need to be publicly
exported.
Port the implemention of SIMD intrinsics from Miri to const-eval

Ported the implementation of most SIMD intrinsics from Miri to rustc_const_eval. Remaining are

 - Math functions (as per `@RalfJung's` suggestions)
 - FMA (non-deterministic)
 - Funnel Shifts (not implemented in Miri yet)
 - Unordered reduction intrinsics (not implemented in Miri yet)
…mdev

give a better example why `std` modules named like primitives are needed

A small update to the `std` `lib.rs` introduction to replace mentions of `std::i32` (never needed) with `std::char` (sometimes needed).
Related to rust-lang#146882.
…lathar,jieyouxu

bootstrap: add `Builder::rustc_cmd` that includes the lib path

When building with `rust.rpath = false`, every `rustc` invocation needs
to include the library path as well. I particularly ran into this in
`generate_target_spec_json_schema` when testing 1.91-beta in Fedora,
where we do disable rpath for our system builds. The new helper function
will hopefully encourage the right thing going forward.
…d, r=joboet

Add diagnostic items for `pub mod consts` of FP types

They will be used in Clippy.
…Jung,joboet

specialize slice::fill to use memset when possible

It helps const eval performance rust-lang/miri#4616, debug builds and the gcc backend.

Previously attempted in rust-lang#83245 but reverted due to unsoundness rust-lang#87891 around potentially-uninitialized types. This PR only handles primitives where the problem does not arise.

split off from rust-lang#147294
…=JonathanBrouwer

Fix double warnings on `#[no_mangle]`

Fixes 2 out of 3 cases in rust-lang#147417
The fix on closures removes the old error and marks closures as an error target.
The fix on consts adds `AllowSilent` to to ignore a target, and uses the old error because that one has a nice suggestion.

r? ````@jdonszelmann````
…crum

Clarify how to remediate the panic_immediate_abort error

Users who build `core` for the sole purpose of enabling `panic_immediate_abort` might expect "`panic_immediate_abort` is now a real panic strategy" to mean that setting `panic = "immediate-abort"` in `Cargo.toml` or `-Cpanic=immediate-abort` in `RUSTFLAGS` to be sufficient for migration. But this is not the case, `core` still needs to be built for those changes to take effect.

See rust-lang#146974 for additional context.

See rust-lang#147286 and rust-lang/cargo#16042 for the revelant tracking issues.
…miasko

Do not invalidate CFG caches in CtfeLimit.

This does not matter much, as no optimization pass runs after `CtfeLimit`, but I still find the code cleaner.
format: some small cleanup

Some small cleanup and some additional comments I did while trying to understand this code.
…ate_global, r=nikic

refactor: Remove `LLVMRustInsertPrivateGlobal` and `define_private_global`

Since it can easily be implemented using the existing LLVM C API in
terms of `LLVMAddGlobal` and `LLVMSetLinkage` and `define_private_global`
was only used in one place.

Work towards rust-lang#46437
… r=Kivooeo,oli-obk

Prefer to use repeat_n over repeat().take()

More from rust-lang#147464, but batch processed with `ast-grep` to find and replace.

second commit add notes for library: rust-lang@affaf53

r? ``@RalfJung``
compiletest: Isolate public APIs and minimize public surface area

As part of my ongoing efforts to improve directive parsing, I would like to be able to make internal changes without worrying about whether they're going to break the rustdoc-gui-test tool. That tool currently uses compiletest as a dependency to help with directive parsing.

This PR therefore isolates all of compiletest's public APIs into two dedicated modules, one used by rustdoc-gui-test, and one used by the compiletest binary in `compiletest/src/bin/main.rs`.

All other modules (and crate-root items) are then made non-`pub` to achieve the API isolation. Doing so reveals some unused items, which have been removed.

(To reduce the amount of immediate textual churn, this PR does not comprehensively replace `pub` with `pub(crate)` throughout the whole crate; that could be done in a follow-up PR.)

---

Ideally, rustdoc-gui-test would not depend on compiletest at all, but properly fixing that is out of scope for this PR.
- rust-lang#143827

r? jieyouxu
@rustbot rustbot added the A-attributes Area: Attributes (`#[…]`, `#![…]`) label Oct 9, 2025
@rustbot rustbot added 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. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Oct 9, 2025
@Zalathar
Copy link
Copy Markdown
Member Author

Zalathar commented Oct 9, 2025

Rollup of everything.

@bors r+ rollup=never p=5

@bors
Copy link
Copy Markdown
Collaborator

bors commented Oct 9, 2025

📌 Commit 76d4f37 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 Oct 9, 2025
@bors
Copy link
Copy Markdown
Collaborator

bors commented Oct 9, 2025

⌛ Testing commit 76d4f37 with merge acf2437...

@bors
Copy link
Copy Markdown
Collaborator

bors commented Oct 9, 2025

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

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Oct 9, 2025
@bors bors merged commit acf2437 into rust-lang:master Oct 9, 2025
11 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Oct 9, 2025
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Oct 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 bd34871 (parent) -> acf2437 (this PR)

Test differences

Show 742 test diffs

Stage 0

  • errors::verify_codegen_ssa_dynamic_linking_with_lto_135: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_dynamic_linking_with_lto_136: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_feature_not_valid_131: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_feature_not_valid_132: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_lto_disallowed_132: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_lto_disallowed_133: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_lto_dylib_133: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_lto_dylib_134: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_lto_proc_macro_134: [missing] -> pass (J1)
  • errors::verify_codegen_ssa_lto_proc_macro_135: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_no_mangle_nameless_131: pass -> [missing] (J1)

Stage 1

  • errors::verify_codegen_ssa_dynamic_linking_with_lto_135: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_dynamic_linking_with_lto_136: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_feature_not_valid_131: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_feature_not_valid_132: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_lto_disallowed_132: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_lto_disallowed_133: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_lto_dylib_133: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_lto_dylib_134: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_lto_proc_macro_134: [missing] -> pass (J0)
  • errors::verify_codegen_ssa_lto_proc_macro_135: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_no_mangle_nameless_131: pass -> [missing] (J0)
  • [codegen] tests/codegen-llvm/lib-optimizations/slice_fill.rs: [missing] -> pass (J1)

Stage 2

  • [codegen] tests/codegen-llvm/lib-optimizations/slice_fill.rs: [missing] -> pass (J2)

Additionally, 718 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 acf243778e6c54cb7d54bee4be88e510e4be123e --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. pr-check-1: 1374.7s -> 1819.1s (32.3%)
  2. dist-various-1: 3851.9s -> 4431.7s (15.1%)
  3. dist-aarch64-apple: 7510.3s -> 8374.8s (11.5%)
  4. dist-aarch64-msvc: 6345.8s -> 5760.2s (-9.2%)
  5. aarch64-apple: 9864.4s -> 8955.6s (-9.2%)
  6. tidy: 196.9s -> 179.7s (-8.7%)
  7. dist-x86_64-windows-gnullvm: 5281.0s -> 4903.8s (-7.1%)
  8. i686-gnu-nopt-2: 8433.6s -> 7849.4s (-6.9%)
  9. dist-aarch64-linux: 6545.5s -> 6105.3s (-6.7%)
  10. dist-ohos-x86_64: 4579.7s -> 4292.7s (-6.3%)
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# Message Perf Build Sha
#146568 Port the implemention of SIMD intrinsics from Miri to const… 8be29f9c31da7027491f64dd2f767df538f20958 (link)
#147373 give a better example why std modules named like primitiv… c55ce14ec06cf5ef910749ebcd064420bd277388 (link)
#147419 bootstrap: add Builder::rustc_cmd that includes the lib p… afc08cc9370c2843947dc685a93b0d325c05bef6 (link)
#147420 Add diagnostic items for pub mod consts of FP types 1df4e25505420715208a0dab7db052699c4a6698 (link)
#147457 specialize slice::fill to use memset when possible 2a13e85cba290817869186d22212735e98e2777f (link)
#147467 Fix double warnings on #[no_mangle] 22d9c29f5f9e5914239bf63187872efc965ebfe1 (link)
#147470 Clarify how to remediate the panic_immediate_abort error 353b018ecdcffc45df829e3089c92e7ce6eeb305 (link)
#147480 Do not invalidate CFG caches in CtfeLimit. b4682559135938801b44f996d93f6cee3cff7293 (link)
#147481 format: some small cleanup 450baa272879a916fb2db705f6ef8794c136ce3d (link)
#147488 refactor: Remove LLVMRustInsertPrivateGlobal and `define_… fb1ab40bcb47fa487de24a8f59a633af46e686c7 (link)
#147489 Prefer to use repeat_n over repeat().take() f12d66bea26051630d4b43d3bee409a16456cbdf (link)
#147506 compiletest: Isolate public APIs and minimize public surfac… 3ff58195cf6f32c3b7b3f411b865b072d8370f87 (link)

previous master: bd3487101f

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

@Zalathar Zalathar deleted the rollup-p8kb5f7 branch October 9, 2025 11:05
@rust-timer
Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (acf2437): comparison URL.

Overall result: ❌ regressions - 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
Regressions ❌
(secondary)
0.4% [0.0%, 0.8%] 10
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (secondary 1.8%)

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

Cycles

Results (primary 2.1%, secondary -2.6%)

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

mean range count
Regressions ❌
(primary)
2.1% [2.1%, 2.1%] 1
Regressions ❌
(secondary)
2.4% [2.4%, 2.4%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.3% [-4.3%, -2.2%] 8
All ❌✅ (primary) 2.1% [2.1%, 2.1%] 1

Binary size

Results (primary 0.0%, 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.1% [0.1%, 0.1%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.0% [-0.0%, -0.0%] 3
Improvements ✅
(secondary)
-0.0% [-0.0%, -0.0%] 17
All ❌✅ (primary) 0.0% [-0.0%, 0.1%] 4

Bootstrap: 474.495s -> 471.876s (-0.55%)
Artifact size: 388.40 MiB -> 388.40 MiB (-0.00%)

@rustbot rustbot added the perf-regression Performance regression. label Oct 9, 2025
@Zalathar
Copy link
Copy Markdown
Member Author

Zalathar commented Oct 9, 2025

Some of the secondary regressions are bimodal noise, but the coercions ones look real enough to raise an eyebrow.

@Zalathar
Copy link
Copy Markdown
Member Author

Zalathar commented Oct 9, 2025

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (b468255): comparison URL.

Overall result: ❌ regressions - no action needed

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.6% [0.6%, 0.6%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results (primary 2.3%)

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

mean range count
Regressions ❌
(primary)
2.3% [2.3%, 2.3%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.3% [2.3%, 2.3%] 1

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 474.495s -> 473.918s (-0.12%)
Artifact size: 388.40 MiB -> 388.39 MiB (-0.00%)

@Zalathar
Copy link
Copy Markdown
Member Author

Zalathar commented Oct 9, 2025

Coercions rebounded in #147519 (comment), so this is probably nothing after all.

@Kobzol
Copy link
Copy Markdown
Member

Kobzol commented Oct 13, 2025

Thanks for investigating! This seems like noise, yeah.

@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Oct 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-compiletest Area: The compiletest test runner A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. 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-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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.