Skip to content

Conversation

@matthiaskrgr
Copy link
Member

@matthiaskrgr matthiaskrgr commented Dec 19, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Urgau and others added 17 commits December 14, 2025 17:29
This is done by making the `local` part of `RealFileName` none.

This works because `maybe_remapped` is equal to `local` when no
remapping happened.
This commit adds basic `efiapi` ABI support for LoongArch by recognizing
`extern "efiapi"` in the ABI map and inline asm clobber handling, and
mapping it to the C calling convention.

This change is intentionally submitted ahead of the full LoongArch UEFI
target support. While UEFI binaries are ultimately produced as PE images,
LoongArch UEFI applications can already be developed by building ELF
objects, applying relocation fixups, and converting them to PE in a
later step. For such workflows, having `efiapi` properly recognized by
the compiler is a prerequisite, even without a dedicated UEFI target.

Landing this ABI support early helps unblock LoongArch UEFI application
and driver development, and allows the remaining UEFI-specific pieces to
be introduced incrementally in follow-up patches.

MCP: rust-lang/compiler-team#953
Many aarch64 targets without LSE in the baseline enable the
`outline-atomics` feature, which uses runtime detection of LSE for its
faster atomic ops. This provides nontrivial performance improvements on
most hardware from the past decade, at a small cost to anything pre-LSE.

This matches what Clang does [1].

[1]: llvm/llvm-project@e24f901
All usages of `memory_index` start by calling `invert_bijective_mapping`, so
storing the inverted mapping directly saves some work and simplifies the code.
…r=davidtwco

Enable `outline-atomics` by default on AArch64 FreeBSD

Many aarch64 targets without LSE in the baseline enable the
`outline-atomics` feature, which uses runtime detection of LSE for its
faster atomic ops. This provides nontrivial performance improvements on
most hardware from the past decade, at a small cost to anything pre-LSE.

This matches what Clang does [1].

Context: rust-lang#144938

[1]: llvm/llvm-project@e24f901

try-job: dist-x86_64-freebsd
Move shared offload globals and define per-kernel globals once

This PR moves the shared LLVM global variables logic out of the `offload` intrinsic codegen and generates kernel-specific variables only ont he first call of the intrinsic.

r? `@ZuseZ4`

tracking:
- rust-lang#131513
… r=davidtwco

Improve filenames encoding and misc

This PR is a follow-up to rust-lang#149709, it aims at preventing a double encoding when there are no remapping, as well as making some small improvements to the code.

Best reviewed commit by commit.
rustc_target: Add `efiapi` ABI support for LoongArch

This commit adds basic `efiapi` ABI support for LoongArch by recognizing `extern "efiapi"` in the ABI map and inline asm clobber handling, and mapping it to the C calling convention.

This change is intentionally submitted ahead of the full LoongArch UEFI target support. While UEFI binaries are ultimately produced as PE images, LoongArch UEFI applications can already be developed by building ELF objects, applying relocation fixups, and converting them to PE in a later step. For such workflows, having `efiapi` properly recognized by the compiler is a prerequisite, even without a dedicated UEFI target.

Landing this ABI support early helps unblock LoongArch UEFI application and driver development, and allows the remaining UEFI-specific pieces to be introduced incrementally in follow-up patches.

MCP: rust-lang/compiler-team#953
…=workingjubilee

layout: Store inverse memory index in `FieldsShape::Arbitrary`

All usages of `memory_index` start by calling `invert_bijective_mapping`, so storing the inverted mapping directly saves some work and simplifies the code.
…nathanbrouwer

Split eii macro expansion code

r? jonathanbrouwer (since you did the last one too, should be quite trivial)

While investigating rust-lang#149980 I decided this code deserved some splitting :)
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. 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. rollup A PR which is a rollup labels Dec 19, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Dec 19, 2025

📌 Commit 8022c68 has been approved by matthiaskrgr

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 Dec 19, 2025
@bors
Copy link
Collaborator

bors commented Dec 20, 2025

⌛ Testing commit 8022c68 with merge 838a912...

@bors
Copy link
Collaborator

bors commented Dec 20, 2025

☀️ Test successful - checks-actions
Approved by: matthiaskrgr
Pushing 838a912 to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 20, 2025
@bors bors merged commit 838a912 into rust-lang:main Dec 20, 2025
12 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Dec 20, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#149633 Enable outline-atomics by default on AArch64 FreeBSD ea1ba951202c2d1dac2cea24acd84332b7fc14ba (link)
#149788 Move shared offload globals and define per-kernel globals o… 1cedbba6a35070cf5bec76306e1072dc314c397b (link)
#149989 Improve filenames encoding and misc d779f0cf85d5d5be160141fb401a4feb81d8541c (link)
#150012 rustc_target: Add efiapi ABI support for LoongArch 9877ab86aa13794cf4ae0b59f69420395677d1e7 (link)
#150116 layout: Store inverse memory index in `FieldsShape::Arbitra… 2c702d80771bd1bcc28c4bcc432f92efa3aed1ff (link)
#150159 Split eii macro expansion code 086a0646610cc2fa0c453a4d0f3a56537c4d94ee (link)

previous master: f51d1bcdc6

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

@github-actions
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 f51d1bc (parent) -> 838a912 (this PR)

Test differences

Show 2 test diffs

2 doctest diffs were found. These are ignored, as they are noisy.

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 838a912ced37a9f089e7c1a643d63ab5bc83f11b --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. dist-aarch64-apple: 8019.5s -> 6252.5s (-22.0%)
  2. dist-s390x-linux: 5672.0s -> 4909.6s (-13.4%)
  3. x86_64-mingw-2: 9926.7s -> 8721.7s (-12.1%)
  4. dist-loongarch64-musl: 6012.7s -> 5304.2s (-11.8%)
  5. dist-aarch64-msvc: 6303.1s -> 5561.9s (-11.8%)
  6. x86_64-gnu-llvm-21-3: 6435.1s -> 7032.0s (+9.3%)
  7. armhf-gnu: 5040.3s -> 5435.8s (+7.8%)
  8. x86_64-msvc-2: 8769.2s -> 8131.8s (-7.3%)
  9. dist-arm-linux-gnueabi: 4798.6s -> 5140.8s (+7.1%)
  10. x86_64-gnu-distcheck: 7636.2s -> 8171.2s (+7.0%)
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

Finished benchmarking commit (838a912): 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 (secondary -1.3%)

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

Cycles

Results (secondary 2.3%)

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

Binary size

Results (primary -0.1%, secondary -0.1%)

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.1% [-0.2%, -0.0%] 68
Improvements ✅
(secondary)
-0.1% [-0.3%, -0.0%] 43
All ❌✅ (primary) -0.1% [-0.2%, -0.0%] 68

Bootstrap: 480.387s -> 479.839s (-0.11%)
Artifact size: 390.53 MiB -> 390.55 MiB (0.00%)

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

Labels

A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants