Skip to content

Regression: native builds broken on s390x #133177

Closed
@uweigand

Description

@uweigand
Contributor

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.

Activity

added
needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.
on Nov 18, 2024
changed the title [-]Regression: native builds broken on s309x[/-] [+]Regression: native builds broken on s390x[/+] on Nov 18, 2024
RalfJung

RalfJung commented on Nov 18, 2024

@RalfJung
Member

Does adding an #[inline] in this line help?

} else #[track_caller] { // Do not inline this, it makes perf worse

added
T-infraRelevant to the infrastructure team, which will review and decide on the PR/issue.
T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
O-SystemZTarget: SystemZ processors (s390x)
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.
A-testsuiteArea: The testsuite used to check the correctness of rustc
on Nov 18, 2024
uweigand

uweigand commented on Nov 18, 2024

@uweigand
ContributorAuthor

Does adding an #[inline] in this line help?

Yes, it does! With that change the native build completes successfully again.

saethlin

saethlin commented on Nov 18, 2024

@saethlin
Member

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.

removed
needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.
on Nov 18, 2024
uweigand

uweigand commented on Nov 18, 2024

@uweigand
ContributorAuthor

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:

  • For temporary access (limited to 120 days), you can register with the "LinuxONE Community Cloud" hosted by Marist College, Poughkeepsie, and then have access to a self-service portal where you can create a s390x machine instance: https://linuxone.cloud.marist.edu/
  • For permanent access, you can request a s390x machine here: https://community.ibm.com/zsystems/form/l1cc-oss-vm-request/ (you'll need to describe the open-source project work this machine will be used for, and it'll have to be approved by IBM - but for the purpose of regular testing of the Rust compiler that approval would certainly happen, feel free to mention my name in the request)

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

RalfJung commented on Nov 18, 2024

@RalfJung
Member

Yes, it does! With that change the native build completes successfully again.

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

RalfJung commented on Nov 18, 2024

@RalfJung
Member

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

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-testsuiteArea: The testsuite used to check the correctness of rustcO-SystemZTarget: SystemZ processors (s390x)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-infraRelevant to the infrastructure team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @RalfJung@uweigand@saethlin@tgross35@rustbot

      Issue actions

        Regression: native builds broken on s390x · Issue #133177 · rust-lang/rust