Skip to content

Update the minimum external LLVM to 22 - #163572

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
cuviper:min-llvm-22
Oct 3, 2026
Merged

rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
cuviper:min-llvm-22

Conversation

@cuviper

@cuviper cuviper commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

With this change, we'll have stable support for LLVM 22 and 23.
For reference, the previous increase to LLVM 21 was #153684.

cc @rust-lang/wg-llvm @durin42
r? nikic

@rustbot

rustbot commented Sep 30, 2026

Copy link
Copy Markdown
Collaborator

This PR changes how LLVM is built. Consider updating src/bootstrap/download-ci-llvm-stamp.

Warning

If you are changing how CI LLVM is built or linked, make sure to bump
src/bootstrap/download-ci-llvm-stamp.

cc @jieyouxu

@rustbot rustbot added A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-testsuite Area: The testsuite used to check the correctness of rustc F-explicit_tail_calls `#![feature(explicit_tail_calls)]` 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-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. labels Sep 30, 2026
@Kobzol

Kobzol commented Sep 30, 2026

Copy link
Copy Markdown
Member

CC @Walnut356 About the minimum LLVM version update - maybe we should bump minimal LLDB too? Not sure if we really need to do anything there, outside of maybe removing some workarounds for old LLDB from the debugger scripts.

@cuviper

cuviper commented Sep 30, 2026

Copy link
Copy Markdown
Member Author

I don't know if we want LLDB requirements to be in lock-step here -- the user may be getting that from some other place out of their control, like an SDK.

@Walnut356

Copy link
Copy Markdown
Contributor

I don't know if we want LLDB requirements to be in lock-step here

Due to the complexity of testing debuggers in CI, we pretty much have to constrain the LLDB versions that we guarantee will work to ~1-3. Whatever version CI is running needs to be one of those 1-3, so we don't end up with silent regressions like we used to.

About the minimum LLVM version update - maybe we should bump minimal LLDB too?

In this instance I don't think we have to do anything since I originally wrote everything using LLDB 22 anyway. 21 was what we used in CI and it happened to work, so I enabled it there, but I don't think I ever added a minimum version requirement in compiletest for the test suite as a whole (CI or otherwise). I probably should though, or at least offer a warning if using something that doesn't match current CI.

@Walnut356

Copy link
Copy Markdown
Contributor

Btw, we need external LLVM bumped on the Windows runners anyway, would that be reasonable for this PR, or should we do that in its own? (tbh I'm not sure how to go about it since it requires updating the mirrored LLVM installer)

@cuviper

cuviper commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

Btw, we need external LLVM bumped on the Windows runners anyway, would that be reasonable for this PR, or should we do that in its own? (tbh I'm not sure how to go about it since it requires updating the mirrored LLVM installer)

This can be done independently -- see https://github.com/rust-lang/ci-mirrors

But I think we're also conflating two different ideas of "external LLVM" here. There's the external toolchain we use to compile C and C++ code, including our internal LLVM submodule, and there's the possibility of bringing your own external LLVM library instead of using the submodule. The minimum in this PR is about the latter.

@nikic

nikic commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

@bors r+

@rust-bors

rust-bors Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

📌 Commit b66a6bd 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 1, 2026
@cuviper cuviper added the relnotes Marks issues that should be documented in the release notes of the next release. label Oct 1, 2026
Comment on lines 398 to 391

@tgross35 tgross35 Oct 2, 2026 •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉 🎉 that's almost everything blocking f16, if we can figure out something to do with MinGW GCC.

(Not pictured: technically some things are still broken on i586)

View changes since the review

rust-bors Bot pushed a commit that referenced this pull request Oct 2, 2026
Rollup of 8 pull requests

Successful merges:

 - #162556 (Refactor CodeGen Pipeline Setup into a Single Function)
 - #163254 (rustdoc: Fix where-clause placement of free const items & checked type aliases)
 - #163621 (core: Unstably constify `abort_immediate`)
 - #161904 (declare C and C-unwind as mutually ABI-compatible)
 - #163144 (Add Tier 3 targets for Hyperlight guests)
 - #163537 (remove unnecessary panic from opsem inhabitedness calculation)
 - #163570 (Add tests for `!` and `bool`'s size and alignment to `coretests`.)
 - #163606 (ignore hanging next-solver tests, remove unnecessary ignore test)

Failed merges:

 - #163572 (Update the minimum external LLVM to 22)
@rust-bors rust-bors Bot 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-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Oct 2, 2026
@rust-bors

This comment was marked as resolved.

Co-authored-by: Augie Fackler <augie@google.com>
@rustbot

rustbot commented Oct 2, 2026

Copy link
Copy Markdown
Collaborator

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@cuviper

cuviper commented Oct 2, 2026

Copy link
Copy Markdown
Member Author

@bors r=nikic

@rust-bors

rust-bors Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

📌 Commit c76b523 has been tentatively approved by nikic

It will be put into the queue for this repository once PR CI succeeds.

@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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Oct 2, 2026
rust-bors Bot pushed a commit that referenced this pull request Oct 2, 2026
…uwer

Rollup of 9 pull requests

Successful merges:

 - #163655 (explicitly handle tests that pass with -Znext-solver)
 - #159924 (Send -fno-lto when linker plugin LTO is not requested to avoid having GCC do LTO when using rustc_codegen_gcc)
 - #163572 (Update the minimum external LLVM to 22)
 - #129822 (Docs - type guarantees update)
 - #157973 (Distinguish `repr(C)` ZSTs from others in ABI compatibility rules)
 - #162332 (preserve overflow in builtin Field candidates)
 - #163574 (intrinsics: Rename `abort` to `abort_immediate`)
 - #163638 (avoid trivial `fn map_bound` validations)
 - #163660 (yeet compare-mode-coherence)
rust-bors Bot pushed a commit that referenced this pull request Oct 3, 2026
…uwer

Rollup of 9 pull requests

Successful merges:

 - #163655 (explicitly handle tests that pass with -Znext-solver)
 - #159924 (Send -fno-lto when linker plugin LTO is not requested to avoid having GCC do LTO when using rustc_codegen_gcc)
 - #163572 (Update the minimum external LLVM to 22)
 - #129822 (Docs - type guarantees update)
 - #157973 (Distinguish `repr(C)` ZSTs from others in ABI compatibility rules)
 - #162332 (preserve overflow in builtin Field candidates)
 - #163574 (intrinsics: Rename `abort` to `abort_immediate`)
 - #163638 (avoid trivial `fn map_bound` validations)
 - #163660 (yeet compare-mode-coherence)
@rust-bors
rust-bors Bot merged commit e70aee9 into rust-lang:main Oct 3, 2026
14 checks passed
@rustbot rustbot added this to the 1.101.0 milestone Oct 3, 2026
rust-bors Bot pushed a commit that referenced this pull request Oct 3, 2026
Rollup merge of #163572 - cuviper:min-llvm-22, r=nikic

Update the minimum external LLVM to 22

With this change, we'll have stable support for LLVM 22 and 23.
For reference, the previous increase to LLVM 21 was #153684.

cc @rust-lang/wg-llvm @durin42
r? nikic
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-testsuite Area: The testsuite used to check the correctness of rustc F-explicit_tail_calls `#![feature(explicit_tail_calls)]` relnotes Marks issues that should be documented in the release notes of the next release. 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-infra Relevant to the infrastructure team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants