-
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
Enable f16
tests on non-GNU Windows
#130959
Conversation
…nu, r=<try> Enable `f16` tests on non-GNU Windows There is a MinGW ABI bug that prevents `f16` and `f128` from being usable on `windows-gnu` targets. This does not affect MSVC; however, we have `f16` and `f128` tests disabled on all Windows targets. Update the gating to only affect `windows-gnu`, which means `f16` tests will be enabled. There is no effect for `f128` since the default fallback is `false`. try-job: x86_64-msvc try-job: i686-msvc
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
💔 Test failed - checks-actions |
a8902f0
to
83d56df
Compare
@bors try |
…nu, r=<try> Enable `f16` tests on non-GNU Windows There is a MinGW ABI bug that prevents `f16` and `f128` from being usable on `windows-gnu` targets. This does not affect MSVC; however, we have `f16` and `f128` tests disabled on all Windows targets. Update the gating to only affect `windows-gnu`, which means `f16` tests will be enabled. There is no effect for `f128` since the default fallback is `false`. try-job: x86_64-msvc try-job: i686-msvc
This comment has been minimized.
This comment has been minimized.
💔 Test failed - checks-actions |
float tests + Windows, I can think of few more exciting combinations. already getting mysterious failures... @bors rollup=iffy |
@@ -104,7 +104,7 @@ fn main() { | |||
// Unsupported <https://github.com/llvm/llvm-project/issues/94434> | |||
("arm64ec", _) => false, | |||
// MinGW ABI bugs <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054> | |||
("x86_64", "windows") => false, | |||
("x86_64", "windows") if target_env == "gnu" => false, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't it also check for target_abi == ""
or target_abi != "llvm"
to enable it for gnullvm targets since it works fine with Clang?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do gnullvm
targets avoid linking MinGW/GCC libraries at all? I'm honestly not positive how those works.
If you are suggesting updating the gate to if target_env == "gnu" && target_abi == "" => false
I can do that after figuring out what is currently failing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gnullvm
targets are based on mingw-w64 just like regular gnu
targets but built using the Clang / LLVM toolchain. In https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115054 you've said Clang is using proper ABI, so this feature should be fine. Doesn't have to be done in this PR though.
The same for f128.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clang uses the correct ABI, but the problem is it can link symbols from libgcc which means things wind up broken. Maybe this isn't the case for gnullvm for some reason?
In any case I'll plan to leave this PR as-is for now unless you are able to check that things work on gnullvm (or I'll try to do that at some point after this merges).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
gnullvm targets don't use anything from GCC/GNU, so this is not a problem. FWIW libgcc is replaced by compiler-rt and libgcc_{s,eh} is replaced by libunwind.
I'm trying to tests that, but I have troubles cross-compiling full toolchain because workspace resolver = "2"
exposed Cargo bug:
Building tool rustdoc (stage1 -> stage2, x86_64-pc-windows-gnullvm)
thread 'main' panicked at src/cargo\core\resolver\features.rs:323:14:
activated_features for invalid package: features did not find PackageId { name: "windows_x86_64_gnullvm", version: "0.52.6", source: "registry `crates-io`" } HostDep
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
That might get a fix soon: rust-lang/cargo#14593
Otherwise I'll work around it another way, so I'll take care of that change then.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh that's really interesting. compiler-rt
may have been part of the problem too since GCC was being used to build it - but I don't really remember exactly what I was testing, and sounds like that might not be a problem anyway.
Anyway, totally your discretion since you're probably the main one testing this target :) feel free to r? me if you wind up putting up a followup PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LLVM mingw-w64 toolchains are purely LLVM + mingw-w64 based, no GNU tools like GCC or Binutils are used at any point.
EDIT: feel free to resolve this discussion, my button has disappeared.
I have no clue what the error was and raw logs don't work - did the runner just die? @bors try |
…nu, r=<try> Enable `f16` tests on non-GNU Windows There is a MinGW ABI bug that prevents `f16` and `f128` from being usable on `windows-gnu` targets. This does not affect MSVC; however, we have `f16` and `f128` tests disabled on all Windows targets. Update the gating to only affect `windows-gnu`, which means `f16` tests will be enabled. There is no effect for `f128` since the default fallback is `false`. try-job: x86_64-msvc try-job: i686-msvc
☀️ Try build successful - checks-actions |
This comment was marked as outdated.
This comment was marked as outdated.
83d56df
to
58559fc
Compare
☔ The latest upstream changes (presumably #131078) made this pull request unmergeable. Please resolve the merge conflicts. |
There is a MinGW ABI bug that prevents `f16` and `f128` from being usable on `windows-gnu` targets. This does not affect MSVC; however, we have `f16` and `f128` tests disabled on all Windows targets. Update the gating to only affect `windows-gnu`, which means `f16` tests will be enabled. There is no effect for `f128` since the default fallback is `false`.
58559fc
to
6b09a93
Compare
That appears to work, let's merge it. |
☀️ Test successful - checks-actions |
Finished benchmarking commit (c4f7176): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)Results (primary 1.4%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResults (secondary -5.1%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 771.18s -> 771.847s (0.09%) |
enable f16 and f128 on windows-gnullvm targets Continuation of rust-lang#130959
Rollup merge of rust-lang#131308 - mati865:gnullvm-f16-f128, r=tgross35 enable f16 and f128 on windows-gnullvm targets Continuation of rust-lang#130959
There is a MinGW ABI bug that prevents
f16
andf128
from being usable onwindows-gnu
targets. This does not affect MSVC; however, we havef16
andf128
tests disabled on all Windows targets.Update the gating to only affect
windows-gnu
, which meansf16
tests will be enabled. There is no effect forf128
since the default fallback isfalse
.try-job: x86_64-msvc
try-job: i686-msvc