-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update the minimum external LLVM to 16. #117947
Conversation
r? @davidtwco (rustbot has picked a reviewer for you, use r? to override) |
525c979
to
90a8c02
Compare
This PR changes how LLVM is built. Consider updating src/bootstrap/download-ci-llvm-stamp. These commits modify compiler targets. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm good with this update both as a wg-llvm member and downstream for Fedora compatibility. I'll still give @davidtwco a chance to review though, in case he sees any reason to hold on to LLVM 15 longer.
There's one more version test that can be removed here:
tests/ui/numbers-arithmetic/issue-105626.rs:3:// min-system-llvm-version: 16
// LLVM X86 targets (ix86 and x86_64) can use inline-asm stack probes starting with LLVM 16. | ||
// Notable past issues were rust#83139 (fixed in 14) and rust#84667 (fixed in 16). | ||
const X86: Self = Self::InlineOrCall { min_llvm_version_for_inline: (16, 0, 0) }; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In some followup, we might want to remove the __rust_probestack
stuff altogether, but that doesn't need to happen now.
a10e092
to
9464f43
Compare
removed. |
☔ The latest upstream changes (presumably #117364) made this pull request unmergeable. Please resolve the merge conflicts. |
9464f43
to
6fd84ff
Compare
☔ The latest upstream changes (presumably #118134) made this pull request unmergeable. Please resolve the merge conflicts. |
6fd84ff
to
7de6d04
Compare
@bors r+ |
☀️ Test successful - checks-actions |
Finished benchmarking commit (49b3924): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)ResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 675.422s -> 675.837s (0.06%) |
Looking at diff between x86_64-gnu-llvm-15 and x86_64-gnu-llvm-16 dockerfiles, there was things added in #117313, they no longer needed in 16? Then P.S. Is codegen_gcc tests even run? Can't find it in logs. |
Sorry! I missed that difference -- would you mind opening a PR to restore that bit? |
I opened #118463 to restore (and hopefully fix) those tests. |
…,GuillaumeGomez Re-enable `rustc_codegen_gcc` tests in CI When rust-lang#117947 dropped llvm-15 from CI, we neglected to copy rust-lang#117313's changes to enable `rustc_codegen_gcc` testing to the new base llvm-16. This is now restored, as well as copying the setup to llvm-17 as well so we hopefully won't miss it next time. In addition, due to case mismatch in `$extra_env` updates in `docker/run.sh`, I think it wasn't actually getting enabled before, but this should now be fixed. I also avoided the linker hack for `libgccjit.so` that was present before, because that's not needed if the version matches the base `gcc` used for linking. r? GuillaumeGomez
Pkgsrc changes: * Adapt checksums and patches. Upstream chnages: Version 1.76.0 (2024-02-08) ========================== Language -------- - [Document Rust ABI compatibility between various types] (rust-lang/rust#115476) - [Also: guarantee that char and u32 are ABI-compatible] (rust-lang/rust#118032) - [Warn against ambiguous wide pointer comparisons] (rust-lang/rust#117758) Compiler -------- - [Lint pinned `#[must_use]` pointers (in particular, `Box<T>` where `T` is `#[must_use]`) in `unused_must_use`.] (rust-lang/rust#118054) - [Soundness fix: fix computing the offset of an unsized field in a packed struct] (rust-lang/rust#118540) - [Soundness fix: fix dynamic size/align computation logic for packed types with dyn Trait tail] (rust-lang/rust#118538) - [Add `$message_type` field to distinguish json diagnostic outputs] (rust-lang/rust#115691) - [Enable Rust to use the EHCont security feature of Windows] (rust-lang/rust#118013) - [Add tier 3 {x86_64,i686}-win7-windows-msvc targets] (rust-lang/rust#118150) - [Add tier 3 aarch64-apple-watchos target] (rust-lang/rust#119074) - [Add tier 3 arm64e-apple-ios & arm64e-apple-darwin targets] (rust-lang/rust#115526) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. Libraries --------- - [Add a column number to `dbg!()`] (rust-lang/rust#114962) - [Add `std::hash::{DefaultHasher, RandomState}` exports] (rust-lang/rust#115694) - [Fix rounding issue with exponents in fmt] (rust-lang/rust#116301) - [Add T: ?Sized to `RwLockReadGuard` and `RwLockWriteGuard`'s Debug impls.] (rust-lang/rust#117138) - [Windows: Allow `File::create` to work on hidden files] (rust-lang/rust#116438) Stabilized APIs --------------- - [`Arc::unwrap_or_clone`] (https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#method.unwrap_or_clone) - [`Rc::unwrap_or_clone`] (https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#method.unwrap_or_clone) - [`Result::inspect`] (https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.inspect) - [`Result::inspect_err`] (https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.inspect_err) - [`Option::inspect`] (https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.inspect) - [`type_name_of_val`] (https://doc.rust-lang.org/stable/std/any/fn.type_name_of_val.html) - [`std::hash::{DefaultHasher, RandomState}`] (https://doc.rust-lang.org/stable/std/hash/index.html#structs) These were previously available only through `std::collections::hash_map`. - [`ptr::{from_ref, from_mut}`] (https://doc.rust-lang.org/stable/std/ptr/fn.from_ref.html) - [`ptr::addr_eq`](https://doc.rust-lang.org/stable/std/ptr/fn.addr_eq.html) Cargo ----- See [Cargo release notes] (https://github.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-176-2024-02-08). Rustdoc ------- - [Don't merge cfg and doc(cfg) attributes for re-exports] (rust-lang/rust#113091) - [rustdoc: allow resizing the sidebar / hiding the top bar] (rust-lang/rust#115660) - [rustdoc-search: add support for traits and associated types] (rust-lang/rust#116085) - [rustdoc: Add highlighting for comments in items declaration] (rust-lang/rust#117869) Compatibility Notes ------------------- - [Add allow-by-default lint for unit bindings] (rust-lang/rust#112380) This is expected to be upgraded to a warning by default in a future Rust release. Some macros emit bindings with type `()` with user-provided spans, which means that this lint will warn for user code. - [Remove x86_64-sun-solaris target.] (rust-lang/rust#118091) - [Remove asmjs-unknown-emscripten target] (rust-lang/rust#117338) - [Report errors in jobserver inherited through environment variables] (rust-lang/rust#113730) This [may warn](rust-lang/rust#120515) on benign problems too. - [Update the minimum external LLVM to 16.] (rust-lang/rust#117947) - [Improve `print_tts`](rust-lang/rust#114571) This change can break some naive manual parsing of token trees in proc macro code which expect a particular structure after `.to_string()`, rather than just arbitrary Rust code. - [Make `IMPLIED_BOUNDS_ENTAILMENT` into a hard error from a lint] (rust-lang/rust#117984) - [Vec's allocation behavior was changed when collecting some iterators] (rust-lang/rust#110353) Allocation behavior is currently not specified, nevertheless changes can be surprising. See [`impl FromIterator for Vec`] (https://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#impl-FromIterator%3CT%3E-for-Vec%3CT%3E) for more details. - [Properly reject `default` on free const items] (rust-lang/rust#117818)
ci: add a runner for vanilla LLVM 18 For CI cost, this can be seen as replacing the llvm-15 runner we dropped in rust-lang#117947. Also, I've set `IS_NOT_LATEST_LLVM` in the llvm-17 runner, since that's not the latest anymore.
ci: add a runner for vanilla LLVM 18 For CI cost, this can be seen as replacing the llvm-15 runner we dropped in rust-lang#117947. Also, I've set `IS_NOT_LATEST_LLVM` in the llvm-17 runner, since that's not the latest anymore.
ci: add a runner for vanilla LLVM 18 For CI cost, this can be seen as replacing the llvm-15 runner we dropped in rust-lang#117947. Also, I've set `IS_NOT_LATEST_LLVM` in the llvm-17 runner, since that's not the latest anymore.
Rollup merge of rust-lang#122178 - cuviper:ci-llvm-18, r=Kobzol ci: add a runner for vanilla LLVM 18 For CI cost, this can be seen as replacing the llvm-15 runner we dropped in rust-lang#117947. Also, I've set `IS_NOT_LATEST_LLVM` in the llvm-17 runner, since that's not the latest anymore.
Update the minimum external LLVM to 17 With this change, we'll have stable support for LLVM 17 and 18. For reference, the previous increase to LLVM 16 was rust-lang#117947.
Update the minimum external LLVM to 17 With this change, we'll have stable support for LLVM 17 and 18. For reference, the previous increase to LLVM 16 was rust-lang#117947.
Rollup merge of rust-lang#122649 - cuviper:min-llvm-17, r=nikic Update the minimum external LLVM to 17 With this change, we'll have stable support for LLVM 17 and 18. For reference, the previous increase to LLVM 16 was rust-lang#117947.
Update FIXME comment in s390x_unknown_linux_*.rs - Remove comment about "LLVM < 16" since the minimum external LLVM version is 16+ since rust-lang#117947 - Reflect rename of cabi_s390x.rs in rust-lang@030244c (renamed to [abi/call/s390x.rs](rust-lang@030244c#diff-20136d4a18fa0ef9bd4fc2e6f92e88daad6be88bfb156e5702af39ee87ca4879), and it is currently [still in the same location](https://github.com/rust-lang/rust/blob/9e394f551c050ff03c6fc57f190e0761cf0be6e8/compiler/rustc_target/src/abi/call/s390x.rs)). r? `@cuviper` `@rustbot` label +O-SystemZ
Update FIXME comment in s390x_unknown_linux_*.rs - Remove comment about "LLVM < 16" since the minimum external LLVM version is 16+ since rust-lang#117947 - Reflect rename of cabi_s390x.rs in rust-lang@030244c (renamed to [abi/call/s390x.rs](rust-lang@030244c#diff-20136d4a18fa0ef9bd4fc2e6f92e88daad6be88bfb156e5702af39ee87ca4879), and it is currently [still in the same location](https://github.com/rust-lang/rust/blob/9e394f551c050ff03c6fc57f190e0761cf0be6e8/compiler/rustc_target/src/abi/call/s390x.rs)). r? ``@cuviper`` ``@rustbot`` label +O-SystemZ
Update FIXME comment in s390x_unknown_linux_*.rs - Remove comment about "LLVM < 16" since the minimum external LLVM version is 16+ since rust-lang#117947 - Reflect rename of cabi_s390x.rs in rust-lang@030244c (renamed to [abi/call/s390x.rs](rust-lang@030244c#diff-20136d4a18fa0ef9bd4fc2e6f92e88daad6be88bfb156e5702af39ee87ca4879), and it is currently [still in the same location](https://github.com/rust-lang/rust/blob/9e394f551c050ff03c6fc57f190e0761cf0be6e8/compiler/rustc_target/src/abi/call/s390x.rs)). r? ```@cuviper``` ```@rustbot``` label +O-SystemZ
Update FIXME comment in s390x_unknown_linux_*.rs - Remove comment about "LLVM < 16" since the minimum external LLVM version is 16+ since rust-lang#117947 - Reflect rename of cabi_s390x.rs in rust-lang@030244c (renamed to [abi/call/s390x.rs](rust-lang@030244c#diff-20136d4a18fa0ef9bd4fc2e6f92e88daad6be88bfb156e5702af39ee87ca4879), and it is currently [still in the same location](https://github.com/rust-lang/rust/blob/9e394f551c050ff03c6fc57f190e0761cf0be6e8/compiler/rustc_target/src/abi/call/s390x.rs)). r? ````@cuviper```` ````@rustbot```` label +O-SystemZ
Update FIXME comment in s390x_unknown_linux_*.rs - Remove comment about "LLVM < 16" since the minimum external LLVM version is 16+ since rust-lang#117947 - Reflect rename of cabi_s390x.rs in rust-lang@030244c (renamed to [abi/call/s390x.rs](rust-lang@030244c#diff-20136d4a18fa0ef9bd4fc2e6f92e88daad6be88bfb156e5702af39ee87ca4879), and it is currently [still in the same location](https://github.com/rust-lang/rust/blob/9e394f551c050ff03c6fc57f190e0761cf0be6e8/compiler/rustc_target/src/abi/call/s390x.rs)). r? `````@cuviper````` `````@rustbot````` label +O-SystemZ
Update FIXME comment in s390x_unknown_linux_*.rs - Remove comment about "LLVM < 16" since the minimum external LLVM version is 16+ since rust-lang#117947 - Reflect rename of cabi_s390x.rs in rust-lang@030244c (renamed to [abi/call/s390x.rs](rust-lang@030244c#diff-20136d4a18fa0ef9bd4fc2e6f92e88daad6be88bfb156e5702af39ee87ca4879), and it is currently [still in the same location](https://github.com/rust-lang/rust/blob/9e394f551c050ff03c6fc57f190e0761cf0be6e8/compiler/rustc_target/src/abi/call/s390x.rs)). r? ``````@cuviper`````` ``````@rustbot`````` label +O-SystemZ
Rollup merge of rust-lang#130868 - taiki-e:s390x-fixme, r=jieyouxu Update FIXME comment in s390x_unknown_linux_*.rs - Remove comment about "LLVM < 16" since the minimum external LLVM version is 16+ since rust-lang#117947 - Reflect rename of cabi_s390x.rs in rust-lang@030244c (renamed to [abi/call/s390x.rs](rust-lang@030244c#diff-20136d4a18fa0ef9bd4fc2e6f92e88daad6be88bfb156e5702af39ee87ca4879), and it is currently [still in the same location](https://github.com/rust-lang/rust/blob/9e394f551c050ff03c6fc57f190e0761cf0be6e8/compiler/rustc_target/src/abi/call/s390x.rs)). r? ``````@cuviper`````` ``````@rustbot`````` label +O-SystemZ
With this change, we'll have stable support for LLVM 16 and 17.
For reference, the previous increase to LLVM 15 was #114148
Relevant zulip discussion