Skip to content

Conversation

Zalathar
Copy link
Contributor

@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 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 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
Contributor Author

Zalathar commented Oct 9, 2025

Rollup of everything.

@bors r+ rollup=never p=5

@bors
Copy link
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
Collaborator

bors commented Oct 9, 2025

⌛ Testing commit 76d4f37 with merge acf2437...

@bors
Copy link
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
Copy link
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
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
@bors bors mentioned this pull request Oct 9, 2025
5 tasks
@rust-timer
Copy link
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
Contributor 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
Contributor Author

Zalathar commented Oct 9, 2025

@rust-timer
Copy link
Collaborator

Queued b468255 with parent bd34871, future comparison URL.
There is currently 1 preceding artifact in the queue.
It will probably take at least ~2.1 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-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. 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.