Description
I just spun up an aarch64 (c6g.metal) instance to look at codegen, and I noticed that two of our UI tests do not pass:
[ui] tests/ui/consts/large_const_alloc.rs
[ui] tests/ui/consts/promoted_running_out_of_memory_issue-130687.rs
I can reduce one of the failing tests to this:
#![crate_type = "lib"]
pub const FOO: &[u8] = &[0_u8; (1 << 47) - 1];
If I am on an x86_64 host targeting aarch64-unknown-linux-gnu, using stable or nightly, this will immediately fail to compile with:
error[E0080]: evaluation of constant value failed
--> demo.rs:2:25
|
2 | pub const FOO: &[u8] = &[0_u8; (1 << 47) - 1];
| ^^^^^^^^^^^^^^^^^^^^^ tried to allocate more memory than available to compiler
error: aborting due to 1 previous error
If my host is aarch64-unknown-linux-gnu using stable, I also get that diagnostic. But nightly toolchains on an aarch64 host allocate more and more memory, eventually dying with SIGKILL.
Bisection points to #135262 as the cause, which suggests that this is a miscompile.
searched nightlies: from nightly-2024-01-01 to nightly-2025-01-23
regressed nightly: nightly-2025-01-13
searched commit range: eb54a50...48a426e
regressed commit: c0f6a1c
bisected with cargo-bisect-rustc v0.6.9
Host triple: aarch64-unknown-linux-gnu
Reproduce with:
cargo bisect-rustc --script script.sh --start 2024-01-01
This is worth further investigation. Of course it is plausible that a change to the CI configuration would alter the build artifacts from CI, but bisecting a test failure from a stage1 and stage2 toolchain to a CI change is odd.