-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
1.14.0 mipsel test failures: f32 #39013
Comments
This could potentially be the the Loongson FPU bug which we see every so often. I'm currently building it on a non-Loongson machine to see if it passes there. |
It looks like this was the Loongson FPU bug. After building it on a different machine those tests pass. The tests in #39014 also pass (so those must be big-endian specific). It now gets to the concurrency docs tests where
|
The hang occurs in this loop in
This code is highly dodgy. It executes 3 loads and 1 store within an LL/SC block which is probably why the SC instruction always fails and the loop goes around forever. I guess this is a bug in LLVM's atomics implementation. |
FYI the LLVM atomics bug was fixed here: https://bugs.llvm.org/show_bug.cgi?id=32020 I haven't tested rust with a fixed LLVM yet though. |
Just noting that at the time of writing, the LLVM bug was reopened, the previous fix was not good. |
bump mipsel isa leval and enable fpxx This PR: * Bumps the default ISA level of the mipsel targets to `mips32r2`. The big endian mips targets are already built with `mips32r2`. This is the usual baseline for the MIPS ISA these days used by other projects, although it does drop support for the 4K processor (which was the only processor released with mips32 r1). Debian no longer supports pre-R2 processors. Using R2 also improves code generation in FPXX in certain circumstances. * Enables the FPXX floating point ABI[1] on 32-bit hard-float targets by default. This ABI adds some extra restrictions to the existing ABI which allows code to run on the two main floating point modes found on MIPS (FR0 and FR1) and remains compatible with the FR32 ABI currently in use. All code within an executable (including all shared libraries) must be compiled with FPXX/FP64 to be able to use MSA on 32-bit MIPS. * Enables the "nooddspreg" feature with FPXX. This feature is usually enabled whenever FPXX is. It also helps workaround some issues on Loongson processors. I'm hoping this will fix some test failures mentioned in rust-lang#39013. * Adds the `fp64` feature to the MIPS whitelist. This feature must be enabled to use MSA on 32-bit MIPS, otherwise LLVM will complain. [1] See https://dmz-portal.mips.com/wiki/MIPS_O32_ABI_-_FR0_and_FR1_Interlinking
Triage: Is this still a problem? Wanted to check since 6 years have passed and circumstances might have changed. |
Triage: Assuming this is not a problem any longer. Closing. |
Build machine: https://db.debian.org/machines.cgi?host=mipsel-aql-02
Build log: https://buildd.debian.org/status/fetch.php?pkg=rustc&arch=mipsel&ver=1.14.0%2Bdfsg1-3&stamp=1484088148
Raw build log: https://buildd.debian.org/status/fetch.php?pkg=rustc&arch=mipsel&ver=1.14.0%2Bdfsg1-3&stamp=1484088148&raw=1
This is after applying #38650 and #38675. The LLVM diff between Debian vs Rust is here.
Note that, because of these failures, the whole-compiler tests (e.g. run-pass etc) have not been run, but they probably also have failures.
Relevant links:
https://github.com/rust-lang/rust/blob/1.14.0/src/librustc_back/target/mipsel_unknown_linux_gnu.rs
https://github.com/rust-lang/rust/blob/1.14.0/mk/cfg/mipsel-unknown-linux-gnu.mk
The text was updated successfully, but these errors were encountered: