-
Notifications
You must be signed in to change notification settings - Fork 212
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
Configure which platforms have f16
and f128
enabled by default
#652
Conversation
9e31b97
to
773969c
Compare
773969c
to
2b6a371
Compare
For reference, I've locally tested compiling on every target Rust currently supports, and the only architectures/targets that I couldn't compile
The only targets I wasn't able to compile (even with the
I was able to build |
I was going to ping you once I figured this out but you beat me to it. Thanks, that is incredibly helpful. Do you think it is reasonable to configure disabling those targets here? As I mentioned in the diff I think it would be better in |
Are you testing on a version with LLVM19? I know llvm/llvm-project#93894 caused a problem when we were updating builtins but that has since been resolved. I am pleasantly surprised if that was the only selection failure for interfaces. |
I think doing it here is probably the best solution at this point, given the issues with switching to the v2 resolver in rust-lang/rust#128359. Ultimately, as
|
Agreed. I am just not looking forward to the cycle of PR here -> release -> Rust PR -> Rust CI, if there are failures. But maybe this won't be much of an issue if there aren't too many completely broken targets. I think the 7-31 nightly is the first one since rust-lang/rust#127513, so I guess that was all. Awesome. |
5ffcbd8
to
2381247
Compare
Does this one actually crash or does it just have runtime issues? |
It fails to compile with |
f16
and f128` enabled by default
f16
and f128` enabled by default f16
and f128
enabled by default
aa0135b
to
869c8ce
Compare
Intrinsics marked with `arm_aeabi_alias = ...` were having the rest of their attributes eaten. Add them back.
By moving the logic for which platforms get symbols to `compiler_builtins` rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in [1]. This will help resolve errors like [2]. [1]: rust-lang/rust#128358 [2]: rust-lang/rust#128401
Change from `not(feature = "no-f16-f128")` to `f16_enabled` or `f128_disabled`, as applicable.
Previously we were building the C versions of these symbols. Since we added the Rust version and updated compiler builtins, these are no longer available by default. This is unintentional, but it gives a better indicator of which symbol versions are not actually provided by the system. Use the list of build failures to correct the list of platforms that do not have `f16` symbols.
The `sys_available` gate was incorrect. Update it.
The latest version has a convenient `.unwrap()`. Increase the version so we can use this.
91b8469
to
4872d5e
Compare
Since there are more platforms that do not have symbols present, we need to use `rustc_apfloat` for more conversion tests. Make use of the fallback like other tests, and refactor so each test gets its own function. Previously we were testing both apfloat and system conversion methods when possible. This changes to only test one or the other, depending on whether or not the system version is available. This seems reasonable because it is consistent with all other tests, but we should consider updating all tests to check both at some point. This also includes an adjustment of PowerPC configuration to account for the linking errors at [1]. [1]: rust-lang#655
4872d5e
to
c6f95d7
Compare
Alright, I think this should be good to go. There were a handful of small changes needed to get CI passing again after the builtins update in rustc, there are more details in the commit messages. |
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
Update `compiler-builtins` to 0.1.115 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
Update `compiler-builtins` to 0.1.115 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652
Update `compiler-builtins` to 0.1.117 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
Update `compiler-builtins` to 0.1.117 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
Update `compiler-builtins` to 0.1.117 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
Rollup merge of rust-lang#128691 - tgross35:update-builtins, r=Amanieu Update `compiler-builtins` to 0.1.117 This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang#128401. [1]: rust-lang/compiler-builtins#652 try-job: dist-various-1
I noticed that Lines 275 to 288 in 3ad4d9c
Was this omission intentional? I'm encountering the same build failures described here: compiler-builtins/testcrate/build.rs Lines 56 to 58 in 3ad4d9c
when building for |
We do seem to build successfully in rust-lang/rust for this target so I’m not sure what the difference is. But it makes sense to omit wasm32 for now if it is causing failures, mind putting up a PR? |
I just opened (draft) PR #665 for this. |
This includes [1] which means we can remove the (nonworking) configuration of `no-f16-f128`. Fixes rust-lang/rust#128401. [1]: rust-lang/compiler-builtins#652 Ferrocene-backport-of: #128691
By moving the logic for which platforms get symbols to
compiler_builtins
rather than rust-lang/rust, we can control where symbols get enabled without relying on Cargo features. Using Cargo features turned out to be a problem in 1.This will help resolve errors like 2.