Skip to content

Rollup of 17 pull requests#159444

Merged
rust-bors[bot] merged 43 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-sLmd8Fq
Jul 17, 2026
Merged

Rollup of 17 pull requests#159444
rust-bors[bot] merged 43 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-sLmd8Fq

Conversation

@JonathanBrouwer

@JonathanBrouwer JonathanBrouwer commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

jdonszelmann and others added 30 commits June 25, 2026 15:27
Signed-off-by: Connor Tsui <connor.tsui20@gmail.com>
…type diverges

a mismatch on `-> impl Iterator<Item = Ty>` only pointed at the signature, not at the call in the returned chain where `Item` actually changed. the failed predicate is useless for this, its already rewritten through the impls it was derived from, so the expected assoc types are read from the opaques own bounds and probed against the returned expression. on divergence the existing `point_at_chain` walk kicks in, same as it does for function arguments. handles the chain at the tail expression, behind a `let` binding, and derived through adapters like `flatten`. unrelated failures stay silent since the probe just doesnt resolve there.

fixes rust-lang#106993
There is now only a single "module asm", not one before each line.
The assume here is not really relevant to the purpose of the test,
and it's position changed in LLVM 23.
These now have additional !guid metadata.
See RUST-159073, this test has been flaky with

```
/checkout/obj/build/x86_64-unknown-linux-gnu/test/debuginfo/function-call.gdb/function-call.debugger.script:11: Error in sourced command file:
Couldn't write extended state status: Bad address.
```

on linux CI jobs under various environments and hosts/targets. I tried
running this under GDB 15.1 locally (WSL, `x86_64-unknown-linux-gnu`)
but could not reproduce. CI typically uses GDB 12.1 with Ubuntu 22.04.
So gate this test with min GDB 15.1 which prevents it from running in CI
to workaround the flakiness but still allow running it locally under
GDB >= 15.1.

It's *possible* there's a genuine problem here.
On Arm64EC the variadic portion of a c-variadic call must follow the MS
x64 ABI: any argument that does not fit in 8 bytes, or whose size is not
1, 2, 4, or 8 bytes, is passed by reference. rustc's `va_arg`
implementation already reads such arguments indirectly, but the caller
side in `aarch64::compute_abi_info` passed a scalar `i128` by value (it
is not an aggregate, so it bypassed `classify_arg`). The callee then
dereferenced the inline value as a pointer, causing an access violation
(0xC0000005) at runtime.

Mark variadic-tail arguments larger than 8 bytes, or whose size is not a
power of two, as indirect on Arm64EC so the caller and the `va_arg`
reader agree. Fixed arguments are unaffected: a fixed `i128` is still
passed by value, matching MSVC and Clang.

Add a codegen test verifying that a variadic `i128` is passed as a
pointer while a fixed `i128` is passed by value.
Forwards `clone_from` to `DenseBitSet`'s manual implementation.

I don't believe this is currently used but I think it doesn't hurt,
since it could be a small performance footgun.
We deprecated these awhile ago, and now all the usages are changed.
Update Enzyme to handle LLVM23

Enzyme just gained support for LLVM23, so update it to unblock our LLVM update.
r? nikic
…rn-position, r=estebank

fix: point at method call chain when a return-position `impl Trait` assoc type diverges

a mismatch on `-> impl Iterator<Item = Ty>` only pointed at the signature, not at the call in the returned chain where `Item` actually changed. the failed predicate is useless for this, its already rewritten through the impls it was derived from, so the expected assoc types are read from the opaques own bounds and probed against the returned expression. on divergence the existing `point_at_chain` walk kicks in, same as it does for function arguments. handles the chain at the tail expression, behind a `let` binding and derived through adapters like `flatten`. unrelated failures stay silent since the probe just doesnt resolve there.

fixes rust-lang#106993

r? @estebank
…jake

Clarify safety requirements for SIMD shl/shr and masked load/store

This PR fixes some safety documentation of SIMD functions. These functions are talked in Zulip topic: [Maybe some safety doc need fixs in intrinsics::simd](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Maybe.20some.20safety.20doc.20need.20fixs.20in.20intrinsics.3A.3Asimd/with/609693756).

Brief explanation: `simd_shl` and `simd_shr` may accept a `rhs` of negative value, but that value will be interpreted as unsigned and thus violate the requirement that `rhs` is less than `<int>::BITS`. So it's better to add a supplement that `rhs` must be in 0..`<int>::BITS`. Also, the `simd_shl` refer that `shifting in sign bits for signed types`, but left shift always shifts in zero bits.

And `simd_masked_load` and `simd_masked_store` need to explicitly state that the corresponding `ptr` must be readable/writable as if by `ptr::read/write`, refering to [portable-simd::core_simd::load_select_ptr](https://doc.rust-lang.org/src/core/portable-simd/crates/core_simd/src/vector.rs.html#451) and [portable-simd::core_simd::store_select_ptr](https://doc.rust-lang.org/src/core/portable-simd/crates/core_simd/src/vector.rs.html#710)
rustc_data_structures: Expand documentation for rustc jobserver APIs

And do a couple of other minor jobserver refactorings.

r? @bjorn3 cc @Zoxc
@rustbot rustbot added the T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. label Jul 17, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor Author

@bors r+ rollup=never p=5

Trying commonly failed jobs
@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 Jul 17, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 139b0fb has been approved by JonathanBrouwer

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

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Jul 17, 2026
Rollup of 17 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

rust-bors Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: ba85613 (ba85613a441e24fc00aaa43a5ba811e2496eed91)
Base parent: 4a9d536 (4a9d5368df6450bbd2fc8dde4508c3e5d83bb19d)

@rust-bors

This comment has been minimized.

@rust-highfive

Copy link
Copy Markdown
Contributor

📣 Toolstate changed by #159444!

Tested on commit 421875f.
Direct link to PR: #159444

🎉 edition-guide on linux: test-fail → test-pass (cc @ehuss).

rust-highfive added a commit to rust-lang-nursery/rust-toolstate that referenced this pull request Jul 17, 2026
Tested on commit rust-lang/rust@421875f.
Direct link to PR: <rust-lang/rust#159444>

🎉 edition-guide on linux: test-fail → test-pass (cc @ehuss).
@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 Jul 17, 2026
@rust-bors

rust-bors Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 18m 24s
Pushing 421875f 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 656ccbe (parent) -> 421875f (this PR)

Test differences

Show 189 test diffs

Stage 1

  • [assembly] tests/assembly-llvm/simd-intrinsic-mask-reduce.rs#aarch64-llvm22: [missing] -> pass (J0)
  • [run-make] tests/run-make/export/write-interface-nonexistent-dir: [missing] -> pass (J0)
  • [rustdoc-html] tests/rustdoc-html/merge-cross-crate-info/single-merge-none-useless-write/quebec.rs: pass -> [missing] (J0)
  • [rustdoc-html] tests/rustdoc-html/merge-cross-crate-info/transitive-finalize/sierra.rs: pass -> [missing] (J0)
  • [ui (polonius)] tests/ui/iterators/invalid-iterator-chain-in-return-position.rs: [missing] -> pass (J8)
  • [ui (polonius)] tests/ui/lint/non-snake-case/field-lint-expectation-issue-159323.rs: [missing] -> pass (J8)
  • [ui] tests/ui/iterators/invalid-iterator-chain-in-return-position.rs: [missing] -> pass (J9)
  • [ui] tests/ui/lint/non-snake-case/field-lint-expectation-issue-159323.rs: [missing] -> pass (J9)
  • [assembly] tests/assembly-llvm/simd-intrinsic-mask-reduce.rs#aarch64: pass -> ignore (ignored when the LLVM version 22.1.2 is older than 23.0.0) (J10)
  • [codegen] tests/codegen-llvm/arm64ec-c-variadic-i128.rs: [missing] -> pass (J12)
  • [assembly] tests/assembly-llvm/simd-intrinsic-mask-reduce.rs#aarch64: pass -> ignore (ignored when the LLVM version 21.1.2 is older than 23.0.0) (J15)

Stage 2

  • [assembly] tests/assembly-llvm/simd-intrinsic-mask-reduce.rs#aarch64: pass -> ignore (ignored when the LLVM version 22.1.8 is older than 23.0.0) (J1)
  • [run-make] tests/run-make/export/write-interface-nonexistent-dir: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/simd-intrinsic-mask-reduce.rs#aarch64: pass -> ignore (ignored when the LLVM version 21.1.2 is older than 23.0.0) (J3)
  • [ui] tests/ui/iterators/invalid-iterator-chain-in-return-position.rs: [missing] -> pass (J4)
  • [ui] tests/ui/lint/non-snake-case/field-lint-expectation-issue-159323.rs: [missing] -> pass (J4)
  • [debuginfo-gdb] tests/debuginfo/function-call.rs: pass -> ignore (ignored when the GDB version is lower than 15.1) (J5)
  • [run-make] tests/run-make/export/write-interface-nonexistent-dir: [missing] -> ignore (skipping test as target does not support all of the crate types ["dylib"]) (J6)
  • [rustdoc-html] tests/rustdoc-html/merge-cross-crate-info/single-merge-none-useless-write/quebec.rs: pass -> [missing] (J7)
  • [rustdoc-html] tests/rustdoc-html/merge-cross-crate-info/transitive-finalize/sierra.rs: pass -> [missing] (J7)
  • [assembly] tests/assembly-llvm/simd-intrinsic-mask-reduce.rs#aarch64-llvm22: [missing] -> pass (J11)
  • [codegen] tests/codegen-llvm/arm64ec-c-variadic-i128.rs: [missing] -> pass (J11)
  • [run-make] tests/run-make/export/write-interface-nonexistent-dir: [missing] -> ignore (ignored when cross-compiling) (J13)
  • [assembly] tests/assembly-llvm/simd-intrinsic-mask-reduce.rs#aarch64: pass -> ignore (ignored when the LLVM version 22.1.2 is older than 23.0.0) (J14)
  • [debuginfo-gdb (split-dwarf)] tests/debuginfo/function-call.rs: pass -> ignore (ignored when the GDB version is lower than 15.1) (J16)

Additionally, 164 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 421875f8d2bbb9a9a47db179092a3266b87106d4 --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-nopt-1: 1h 29m -> 2h 19m (+56.1%)
  2. i686-msvc-2: 1h 28m -> 2h 5m (+41.3%)
  3. dist-apple-various: 2h 11m -> 1h 23m (-36.3%)
  4. dist-powerpc64le-linux-musl: 1h 10m -> 1h 34m (+34.8%)
  5. i686-gnu-1: 1h 48m -> 2h 25m (+33.8%)
  6. dist-i686-mingw: 2h 3m -> 2h 42m (+31.9%)
  7. dist-powerpc64-linux-gnu: 1h 34m -> 1h 5m (-30.7%)
  8. dist-loongarch64-musl: 1h 49m -> 1h 17m (-29.9%)
  9. dist-armhf-linux: 1h 26m -> 1h 1m (-29.2%)
  10. x86_64-gnu-gcc-core-tests: 11m 22s -> 14m 14s (+25.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
#159301 Update Enzyme to handle LLVM23 b23482889d8061463d7c966321bdc1eec017c7b7 (link)
#159365 fix: point at method call chain when a return-position `imp… e9398a9bdd07e755b1bfb3a662dc85e5954214b4 (link)
#159402 Clarify safety requirements for SIMD shl/shr and masked loa… 928fc4498eb07e2e7030fd5ababa3037d44f02c4 (link)
#159408 rustc_data_structures: Expand documentation for rustc jobse… 228578e3abc4b77336fd38a4954c8d72821a26c5 (link)
#159410 rustdoc: remove old --emit types f8817eb76429fda07ea8c56ce42302040805932b (link)
#158398 Comment about empty run_passes, fixup of #158040 56a7f9917f4270027108b0e435e91997866bcfa2 (link)
#158843 Fix ICE in write_interface when the interface file can't … 2374a537a0d32b105dba0b65618811353bbcd051 (link)
#159302 Implement Debug helpers via Cell d8d7a18870c3bdecb7d2af584cde6090c45a2cbd (link)
#159332 Honor field-level lint attributes in non_snake_case 1e04fdf55f92518afebb36b7b1db6fa1806fb930 (link)
#159340 Rename errors.rs file to diagnostics.rs (14/N) c6802b9f21484320b828734d0e18351e9cd0f815 (link)
#159386 add a fallback for fmuladdf* 7f769b09b8f5028809a449945f202d256ce2d8c7 (link)
#159391 Update tests for LLVM 23 5da424eb29bd675632976d6668f05e953551fb46 (link)
#159400 Update books 1c65c65f7772f07dcee07f357da4f1699fa774f8 (link)
#159401 Gate tests/debuginfo/function-call.rs on min GDB 15.1 2e7c8ef44b84582c37ace3a087a9387ac6bdfd53 (link)
#159404 [aarch64][win] Pass oversized c-variadic args indirectly on… d72e7ade00f2625883df3c14eed5db2a8c2f080a (link)
#159405 Manually implement Clone for GrowableBitSet 97af0c344b9b3b76baa18ad84ed995c21a440082 (link)
#159415 rustdoc: rename the doc parts metadata params f26d56ee7e34a9f4db7e66ea3c3fa90ad7de97da (link)

previous master: 656ccbe796

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 (421875f): 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.2%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -4.3%, secondary 4.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)
4.2% [2.9%, 5.1%] 3
Improvements ✅
(primary)
-4.3% [-6.1%, -2.9%] 3
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -4.3% [-6.1%, -2.9%] 3

Cycles

Results (secondary -2.4%)

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

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.0% [0.0%, 0.0%] 27
Regressions ❌
(secondary)
0.0% [0.0%, 0.1%] 5
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.0% [0.0%, 0.0%] 27

Bootstrap: 490.561s -> 491.802s (0.25%)
Artifact size: 390.05 MiB -> 389.50 MiB (-0.14%)

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

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-run-make Area: port run-make Makefiles to rmake.rs A-rustdoc-js Area: Rustdoc's JS front-end A-rustdoc-search Area: Rustdoc's search feature F-autodiff `#![feature(autodiff)]` merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup 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. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.