Closed
Description
After #133050 was merged, all native builds on s390x fail very early during stage0 library build:
Building stage0 library artifacts (s390x-unknown-linux-gnu)
Compiling core v0.0.0 (/home/uweigand/rust/library/core)
Compiling rustc-std-workspace-core v1.99.0 (/home/uweigand/rust/library/rustc-std-workspace-core)
Compiling compiler_builtins v0.1.138
Compiling libc v0.2.161
Compiling alloc v0.0.0 (/home/uweigand/rust/library/alloc)
Compiling cfg-if v1.0.0
Compiling adler v1.0.2
rustc-LLVM ERROR: Cannot select: 0x3ff58190770: ch = store<(store (s16) into %ir.6), trunc to f16> 0x3ff580a4768, 0x3ff58190850, FrameIndex:i64<2>, undef:i64
0x3ff58190850: f32,ch = CopyFromReg 0x3ff580a4768, Register:f32 %1
0x3ff580bdff0: f32 = Register %1
0x3ff581905b0: i64 = FrameIndex<2>
0x3ff58190fc0: i64 = undef
In function: _ZN4core3f1621_$LT$impl$u20$f16$GT$5clamp8do_panic7runtime17ha09a9a0f7fcbf036E
Specifically, it looks like the problem was introduced by commit b77dbbd, which adds passing of an argument of type f16
by value.
Metadata
Metadata
Assignees
Labels
Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: The testsuite used to check the correctness of rustcTarget: SystemZ processors (s390x)Relevant to the compiler team, which will review and decide on the PR/issue.Relevant to the infrastructure team, which will review and decide on the PR/issue.
Activity
[-]Regression: native builds broken on s309x[/-][+]Regression: native builds broken on s390x[/+]f16
orf128
#133050RalfJung commentedon Nov 18, 2024
Does adding an
#[inline]
in this line help?rust/library/core/src/panic.rs
Line 218 in c00d642
uweigand commentedon Nov 18, 2024
Yes, it does! With that change the native build completes successfully again.
saethlin commentedon Nov 18, 2024
s390x-unknown-linux-gnu is a Tier 2 With Host Tools target, so it should not have been possible for this breakage to merge.
@uweigand You are reporting this as a native build failure. I can of course compile a sysroot with
-Zbuild-std
from x86_64, and I bet that's what we are doing in CI. Do you have any advice on how an interested contributor could get an s390x host to build on? I found some suggestions on how to do this via some casual searching, so I'm just curious if you have a recommended workflow that's publicly available.uweigand commentedon Nov 18, 2024
Yes, I also assume this may be a difference between native builds and cross-builds. Do you generally perform native builds for the whole set of supported architectures (even just the Tier 2 With Host Tools ones)?
As to access to a s390x host for test purposes, there are various options; I'd recommend one of the following:
In addition, we're currently investigating options of making native s390x builds more directly available via GitHub actions (without you having to set up and manage the host yourself), but that is not yet available today.
RalfJung commentedon Nov 18, 2024
That is very strange, since #133050 should do exactly that automatically...
... ah! But since you are doing a native build, and #133050 is not applied in the bootstrap compiler, things still break in the stage 0 build.
RalfJung commentedon Nov 18, 2024
We could add a
#[cfg_attr(bootstrap, inline)]
to fix this; that shouldn't affect the actually distributed sysroots since those are built at a later stage.10 remaining items