Skip to content

Update LLVM submodule to latest release/23.x branch - #163615

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
madsmtm:update-llvm
Oct 4, 2026
Merged

rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
madsmtm:update-llvm

Conversation

@madsmtm

@madsmtm madsmtm commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

View all comments

Updates to rust-lang/llvm-project#200.

This includes LLVM 23.1.2, and a bunch of commits from LLVM 23.1.3 (which is yet unreleased).

In particular, it includes llvm/llvm-project#224185 (llvm/llvm-project#222721), which should fix #162928.

r? nikic
@bors rollup=never

@madsmtm madsmtm added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Oct 1, 2026
@rustbot rustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 1, 2026
@rustbot

rustbot commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator

⚠️ Warning ⚠️

@madsmtm
madsmtm marked this pull request as draft October 1, 2026 16:33
@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 1, 2026
@madsmtm

madsmtm commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

I'm gonna beta-nominate this, since I believe that getting this out relatively quickly would be nice:
@rustbot label beta-nominated

(it's IMO not important enough to warrant a stable point release, so I'm not going to stable nominate)

@rustbot rustbot added the beta-nominated Nominated for backporting to the compiler in the beta channel. label Oct 1, 2026
@madsmtm
madsmtm marked this pull request as ready for review October 1, 2026 19:04
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Oct 1, 2026
@rust-log-analyzer

This comment was marked as outdated.

@nikic

nikic commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

@bors r+

@rust-bors

rust-bors Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

📌 Commit a7709ec has been approved by nikic

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 Oct 2, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Oct 2, 2026
Update LLVM submodule to latest release/23.x branch

Updates to rust-lang/llvm-project#200.

This includes LLVM 23.1.2, and a bunch of commits from LLVM 23.1.3 (which is yet unreleased).

In particular, it includes llvm/llvm-project#224185 (llvm/llvm-project#222721), which should fix #162928.

r? nikic
@bors rollup=never
@rust-bors rust-bors Bot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Oct 2, 2026
@rust-bors

rust-bors Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

💔 Test for 80f1681 failed: CI. Failed job:

@nikic

nikic commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

I'm unable to retrieve the build log for that job (at least not the part where it actually) fails... Let's see if it can be reproduced.

@bors try jobs=dist-aarch64-freebsd

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Oct 3, 2026
Update LLVM submodule to latest release/23.x branch


try-job: dist-aarch64-freebsd
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors retry

@rust-bors rust-bors Bot added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Oct 3, 2026
@rust-bors rust-bors Bot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 3, 2026
@rust-bors

rust-bors Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 835e0c1 (835e0c18139e8e5fd5cdd9eb2229115510360de7)
Base parent: b6e4b5c (b6e4b5c4e954f26d2ac32d2fb11d92192bf905ee)

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Oct 3, 2026
Update LLVM submodule to latest release/23.x branch

Updates to rust-lang/llvm-project#200.

This includes LLVM 23.1.2, and a bunch of commits from LLVM 23.1.3 (which is yet unreleased).

In particular, it includes llvm/llvm-project#224185 (llvm/llvm-project#222721), which should fix #162928.

r? nikic
@bors rollup=never
@JonathanBrouwer

Copy link
Copy Markdown
Member

@bors cancel
@bors retry

@rust-bors

rust-bors Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

Auto build was cancelled. Cancelled workflows:

The next pull request likely to be tested is #163615.

@rust-bors

rust-bors Bot commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

❗ You can only retry pull requests that are approved and have a previously failed auto build.

Hint: If you wanted to retry pull request CI instead, push the latest commit again, or close and then reopen this PR.

@rust-bors

This comment has been minimized.

@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 Oct 4, 2026
@rust-bors

rust-bors Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: nikic
Duration: 4h 35m 47s
Pushing 1d9e680 to main...

@rust-bors
rust-bors Bot merged commit 1d9e680 into rust-lang:main Oct 4, 2026
28 of 29 checks passed
@rustbot rustbot added this to the 1.101.0 milestone Oct 4, 2026
@github-actions

github-actions Bot commented Oct 4, 2026

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 db8f076 (parent) -> 1d9e680 (this PR)

Test differences

Show 52 test diffs

Stage 1

  • [ui (polonius)] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32e_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J1)
  • [ui (polonius)] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32em_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J1)
  • [ui (polonius)] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32emc_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J1)
  • [ui (polonius)] tests/ui/explicit-tail-calls/support/bystack.rs#loongarch32: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J1)
  • [ui (polonius)] tests/ui/explicit-tail-calls/support/bystack.rs#loongarch64: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J1)
  • [ui (polonius)] tests/ui/explicit-tail-calls/support/byval.rs#loongarch32: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J1)
  • [ui (polonius)] tests/ui/explicit-tail-calls/support/byval.rs#loongarch64: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J1)
  • [ui] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32e_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J1)
  • [ui] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32em_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J1)
  • [ui] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32emc_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J1)
  • [ui] tests/ui/explicit-tail-calls/support/bystack.rs#loongarch32: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J1)
  • [ui] tests/ui/explicit-tail-calls/support/bystack.rs#loongarch64: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J1)
  • [ui] tests/ui/explicit-tail-calls/support/byval.rs#loongarch32: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J1)
  • [ui] tests/ui/explicit-tail-calls/support/byval.rs#loongarch64: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J1)
  • [codegen] tests/codegen-llvm/array-cmp.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)
  • [codegen] tests/codegen-llvm/asm-aarch64-x30.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)
  • [codegen] tests/codegen-llvm/enum/enum-match.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)
  • [codegen] tests/codegen-llvm/float/abi-flag.rs#aarch64sf: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J2)
  • [codegen] tests/codegen-llvm/float/abi-flag.rs#armhf: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J2)
  • [codegen] tests/codegen-llvm/float/abi-flag.rs#armsf: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J2)
  • [codegen] tests/codegen-llvm/function-arguments.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)
  • [codegen] tests/codegen-llvm/gpu-launch-sized-workgroup-memory.rs#nvptx-pre-llvm-23: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)
  • [codegen] tests/codegen-llvm/issues/issue-118306.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)
  • [codegen] tests/codegen-llvm/issues/issue-37945.rs#old: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)
  • [codegen] tests/codegen-llvm/llvm-writable.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)
  • [codegen] tests/codegen-llvm/pow_known_base.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J2)

Stage 2

  • [ui] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32e_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J0)
  • [ui] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32em_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J0)
  • [ui] tests/ui/asm/riscv/riscv32e-registers.rs#riscv32emc_llvm24: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J0)
  • [run-make] tests/run-make/compressed-debuginfo-zstd: pass -> ignore (ignored if LLVM wasn't build with zstd for ELF section compression or LLVM is not the default codegen backend) (J3)
  • [assembly] tests/assembly-llvm/simd-bitmask.rs#aarch64-llvm-pre-23: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [assembly] tests/assembly-llvm/simd-intrinsic-mask-reduce.rs#aarch64-llvm22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [assembly] tests/assembly-llvm/simd-intrinsic-select.rs#x86-avx-512: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J4)
  • [assembly] tests/assembly-llvm/slice-is_ascii.rs#LIN: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [assembly] tests/assembly-llvm/slice-is_ascii.rs#WIN: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/array-cmp.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/asm-aarch64-x30.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/enum/enum-match.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/float/abi-flag.rs#aarch64sf: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J4)
  • [codegen] tests/codegen-llvm/float/abi-flag.rs#armhf: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J4)
  • [codegen] tests/codegen-llvm/float/abi-flag.rs#armsf: ignore (ignored when the LLVM version 23.1.1 is older than 24.0.0) -> ignore (ignored when the LLVM version 23.1.3 is older than 24.0.0) (J4)
  • [codegen] tests/codegen-llvm/function-arguments.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/gpu-launch-sized-workgroup-memory.rs#nvptx-pre-llvm-23: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/issues/issue-118306.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/issues/issue-37945.rs#old: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/llvm-writable.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [codegen] tests/codegen-llvm/pow_known_base.rs#LLVM22: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J4)
  • [ui] tests/ui/explicit-tail-calls/support/bystack.rs#loongarch32: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J5)
  • [ui] tests/ui/explicit-tail-calls/support/bystack.rs#loongarch64: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J5)
  • [ui] tests/ui/explicit-tail-calls/support/byval.rs#loongarch32: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J5)
  • [ui] tests/ui/explicit-tail-calls/support/byval.rs#loongarch64: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 21) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 21) (J5)
  • [codegen] tests/codegen-llvm/array-equality.rs#llvm-current: ignore (ignored when the LLVM version (23.1.1) is newer than majorversion 22) -> ignore (ignored when the LLVM version (23.1.3) is newer than majorversion 22) (J6)

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard 1d9e68013afd163e05032b507400ff74d007ed72 --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-x86_64-apple: 2h 18m -> 4h 33m (+97.7%)
  2. test-x86_64-gnu-miri: 53m 51s -> 1h 38m (+82.9%)
  3. test-x86_64-gnu-gcc-core-tests: 14m 9s -> 24m 44s (+74.8%)
  4. test-x86_64-gnu-parallel-frontend: 1h 16m -> 2h 8m (+68.9%)
  5. test-x86_64-gnu-stdlib-semver-check: 14m 2s -> 23m 2s (+64.1%)
  6. dist-x86_64-llvm-mingw: 1h 14m -> 1h 58m (+60.5%)
  7. dist-arm-linux-musl: 1h 13m -> 1h 54m (+56.6%)
  8. dist-powerpc64le-linux-musl: 1h 5m -> 1h 38m (+51.7%)
  9. test-x86_64-msvc-ext3: 1h 17m -> 1h 57m (+51.3%)
  10. test-i686-gnu-1: 1h 28m -> 2h 13m (+51.2%)
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

Finished benchmarking commit (1d9e680): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

This perf run didn't have relevant results for this metric.

Max RSS (memory usage)

Results (secondary 4.0%)

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

Cycles

Results (primary -1.8%, secondary 4.0%)

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

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 492.227s -> 488.976s (-0.66%)
Artifact size: 408.66 MiB -> 408.69 MiB (0.01%)

@madsmtm
madsmtm deleted the update-llvm branch October 4, 2026 19:45
byAbas added a commit to byAbas/archgram that referenced this pull request Oct 7, 2026
…SDK (#99)

## What and why

On a Mac whose Command Line Tools default to the macOS 27 SDK, nothing
in this repository links. `cargo build` fails with `rust-lld: error:
could not load TAPI file … libSystem.tbd: malformed file … unknown
architecture arm64e.x1`.

- **The cause:** the SDK's `.tbd` stubs list a new target, `arm64e.x1`.
LLVM's linker rejects a stub it cannot read
([rust-lang/rust#162928](rust-lang/rust#162928)).
- **The fix upstream:** in LLVM
([llvm/llvm-project#222721](llvm/llvm-project#222721),
backported in
[#224185](llvm/llvm-project#224185)). It reaches
Rust only in 1.101.0, due on 2026-12-24
([rust-lang/rust#163615](rust-lang/rust#163615),
milestone 1.101.0; [releases.rs](https://releases.rs/)).
- **Tested on this Mac:** the `rust-lld` of 1.98.1 (pinned), 1.99.0 and
1.100.0-beta.4 all fail; 1.101.0-nightly links.
- **CI:** it passes today only because `macos-latest` is the
`macos-26-arm64` image, with Xcode 26. When it moves to the 27 SDK, CI
and the macOS release builds fail the same way.

`.cargo/config.toml` now leaves macOS to rustc's default, Apple's
linker. It ships with Apple's SDK, so it reads it, and a new SDK cannot
outrun it the way it outran `rust-lld`. Windows keeps `rust-lld`.

The reasons the file gave for `rust-lld` do not hold on macOS:
- **Speed:** a release rebuild took 0.55 s with Apple's linker, against
0.53 s.
- **"The same linker everywhere":** Linux already used its system
linker.

The comment now says why each platform links as it does.

## Not in this change

- Moving to Rust 1.101 once it is out. With Apple's linker, nothing here
waits for it.
- Linux and Windows, which are unchanged.

## How it was checked

On this Mac, with the default SDK (`xcrun --show-sdk-version`: 27.0),
and no `SDKROOT` or linker set in the environment:
- From `cargo clean`: `cargo fmt --check`, `cargo clippy --workspace
--all-targets --locked -- -D warnings` and `cargo test --workspace
--locked` pass (177 tests).
- The launcher's tests, the README copy check and the three
`scripts/*.test` pass.
- A release build, `archgram 0.7.0`, draws `examples/linkshort.json` to
the same bytes as archgram 0.7.0 from npm, which CI built with
`rust-lld`. The linker changes nothing archgram draws.
- CI's macOS jobs run on Xcode 26, where Apple's linker reads that SDK
too.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@rustbot

rustbot commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

beta backport approved as per compiler team on Zulip. A backport PR will be authored by the release team at the end of the current development cycle. Backport labels are handled by them.

@rustbot rustbot added the beta-accepted Accepted for backporting to the compiler in the beta channel. label Oct 8, 2026
@cuviper cuviper mentioned this pull request Oct 13, 2026
@cuviper cuviper modified the milestones: 1.101.0, 1.100.0 Oct 13, 2026
@cuviper cuviper removed the beta-nominated Nominated for backporting to the compiler in the beta channel. label Oct 13, 2026
rust-bors Bot pushed a commit that referenced this pull request Oct 13, 2026
[beta] backports

- Fix ICE for ambiguous candidates on method probing #162904
- Don't imply incorrect things about `Global` in the docs of `System` #163342
- make semicolon_in_expressions_from_non_local_macros not report-in-deps #163364
- Force the correct type variable to never for method resolution on an adjusted never type #163450
- Update LLVM submodule to latest release/23.x branch #163615
- Switch TLS implementation for wasi and bump SDK version to 34 #163809
- use the type name instead of `Self` in constructor paths again #163863
- Re-enable extension of bool return values on x86_64 #163917
- Add `synchronization` import lib to windows-gnullvm dist #163933
- fix(bootstrap/darwin): fix rpath for distributed LLD #163954

r? me
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. beta-accepted Accepted for backporting to the compiler in the beta channel. merged-by-bors This PR was explicitly merged by bors. 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.

macOS 27: "rust-lld: error: could not load TAPI file"

7 participants