Skip to content

Conversation

jhpratt
Copy link
Member

@jhpratt jhpratt commented Aug 28, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

ivmarkov and others added 11 commits August 23, 2025 12:32
…n` for structs of different sizes.

This test covers:
* The callee side, making sure that the structs are correctly loaded into registers when `-Zreg-struct-return` is enabled
* The caller side, making sure that callers do receive returned structs in registers when `-Zreg-struct-return` is enabled

Structs of the size of up to 2 registers (8 bytes) can be returned in registers in x86_32.
Therefore, the tests are done with 3 different struct sizes:
* 2 bytes (register returns should happen)
* 8 bytes (last value where register returns should happen)
* 12 bytes (register returns should not happen even when `-Zreg-struct-return` is enabled)
The Cargo style guide says to put dependencies on a single line if they
fit.
…test, r=tgross35

Add assembly test for `-Zreg-struct-return` option

r? `@tgross35`

As discussed in rust-lang#145309 with `@tgross35` and `@ojeda,` I added assembly tests for the `-Zreg-struct-return` option verifying that it changes the ABI from hidden pointer to register-return on x86_32.

The test covers:
- Direct struct construction, showing register return vs hidden pointer
- External function calls returning structs, showing ABI mismatch handling

Different memory layouts affect ABI mismatch handling, but register returns use the same register allocation regardless of struct field layout (apart from the fact that they use smaller registers for smaller structs, of course).

[Here](https://godbolt.org/z/dcW6rnMG3) is a compiler explorer with 2 examples. Let me know if there is anything more I could add. Since register returns only happen for structs up to the size of 2 registers, I figured testing the pivot value (8 bytes) would be most critical.
…raheemdev

Fix STD build failing for target_os = "espidf"

A regression from rust-lang#142938

cc `@lolbinarycat`
cc `@ibraheemdev`

ESP-IDF (and a few other embedded Tier-3 systems) is considered `cfg(unix)`, but it does not have the `O_NOFOLLOW` flag because neither of its three supported filesystems (FATFS, LitteLF and Spiffs) has symbolic links in the first place.

What this fix does is to keep the `set_permissions_nofollow` method available and non-failing for ESP-IDF, but it behaves as if no `O_NONFOLLOW` was set. This should be fine as there is nothing to follow in the first place, as there are no symbolic links there.

EDIT: Also added the same fix for Horizon, as requested by `@Meziu.`
…szelmann

Use AcceptContext in AttribueParser::check_target
…Lapkin

Ensure the coordinator thread terminates before its channels drop

Fixes rust-lang#142949

Explanation: rust-lang#142949 (comment)
…lmann

Remove unnecessary `[dependencies.unicode-properties]` entries.

The Cargo style guide says to put dependencies on a single line if they fit.

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

jhpratt commented Aug 28, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Aug 28, 2025

📌 Commit 27d6005 has been approved by jhpratt

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 Aug 28, 2025
@bors
Copy link
Collaborator

bors commented Aug 28, 2025

⌛ Testing commit 27d6005 with merge 43a2166...

@bors
Copy link
Collaborator

bors commented Aug 28, 2025

☀️ Test successful - checks-actions
Approved by: jhpratt
Pushing 43a2166 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Aug 28, 2025
@bors bors merged commit 43a2166 into rust-lang:master Aug 28, 2025
11 checks passed
@rustbot rustbot added this to the 1.91.0 milestone Aug 28, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#145382 Add assembly test for -Zreg-struct-return option 4bb89c4a93e5b09694c053f11c92a6ff07e66c44 (link)
#145746 Fix STD build failing for target_os = "espidf" bc7a1b7c86cd3418af82eb60f8392b62dd87e282 (link)
#145826 Use AcceptContext in AttribueParser::check_target b5513cbd9ed4dc5bc806b5d848c729ebcf1c8768 (link)
#145894 Ensure the coordinator thread terminates before its channel… 6d6191d5a5f0a9f4e23f6a9bb5eb943db0ec67ad (link)
#145946 Remove unnecessary [dependencies.unicode-properties] entr… 678166b96dd8cbf687e07b2f281c55c7dcc9f65f (link)

previous master: d36f964125

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

Copy link
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 d36f964 (parent) -> 43a2166 (this PR)

Test differences

Show 4 test diffs

Stage 1

  • [assembly] tests/assembly-llvm/reg-struct-return.rs#WITH: [missing] -> pass (J1)
  • [assembly] tests/assembly-llvm/reg-struct-return.rs#WITHOUT: [missing] -> pass (J1)

Stage 2

  • [assembly] tests/assembly-llvm/reg-struct-return.rs#WITH: [missing] -> pass (J0)
  • [assembly] tests/assembly-llvm/reg-struct-return.rs#WITHOUT: [missing] -> pass (J0)

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 43a216604a7fc98deb0744513341fc0d09e461d4 --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: 1695.3s -> 1405.0s (-17.1%)
  2. x86_64-gnu-llvm-19: 2887.1s -> 2412.5s (-16.4%)
  3. aarch64-apple: 6816.4s -> 6003.2s (-11.9%)
  4. i686-gnu-2: 6353.9s -> 5686.9s (-10.5%)
  5. arm-android: 6742.0s -> 6048.6s (-10.3%)
  6. dist-aarch64-msvc: 5380.8s -> 5904.1s (9.7%)
  7. dist-aarch64-apple: 7330.2s -> 6636.2s (-9.5%)
  8. dist-i686-mingw: 8604.1s -> 9255.4s (7.6%)
  9. x86_64-gnu-aux: 6625.1s -> 7056.0s (6.5%)
  10. x86_64-gnu-llvm-20-1: 3615.3s -> 3388.3s (-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.

@jhpratt jhpratt deleted the rollup-smzd7tr branch August 28, 2025 06:24
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (43a2166): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

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

Max RSS (memory usage)

Results (primary 2.3%, secondary 1.7%)

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.2%, 2.3%] 2
Regressions ❌
(secondary)
1.7% [1.4%, 2.1%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.3% [2.2%, 2.3%] 2

Cycles

Results (primary 2.1%, secondary 2.5%)

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

Binary size

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

Bootstrap: 469.595s -> 468.052s (-0.33%)
Artifact size: 390.67 MiB -> 390.65 MiB (-0.01%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-attributes Area: Attributes (`#[…]`, `#![…]`) merged-by-bors This PR was explicitly merged by bors. 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-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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants