-
Notifications
You must be signed in to change notification settings - Fork 12.9k
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
ABI checks: add support for some tier3 arches, warn on others. #133029
Conversation
"sparc" | "sparc64" => SPARC_FEATURES_FOR_CORRECT_VECTOR_ABI, | ||
"hexagon" => HEXAGON_FEATURES_FOR_CORRECT_VECTOR_ABI, | ||
"mips" | "mips32r6" | "mips64" | "mips64r6" => MIPS_FEATURES_FOR_CORRECT_VECTOR_ABI, | ||
"bpf" => &[], // no vector ABI |
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.
specifically, it only has ten 64-bit GPRs (and a frame pointer which is read-only and may not be scratched).
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 apparently generates a somewhat arbitrary on-stack ABI if presented with 6+ arguments (or crashes, depending on version?)
@@ -598,7 +598,12 @@ const S390X_FEATURES_FOR_CORRECT_VECTOR_ABI: &'static [(u64, &'static str)] = &[ | |||
const RISCV_FEATURES_FOR_CORRECT_VECTOR_ABI: &'static [(u64, &'static str)] = | |||
&[/*(64, "zvl64b"), */ (128, "v")]; | |||
// Always warn on SPARC, as the necessary target features cannot be enabled in Rust at the moment. | |||
const SPARC_FEATURES_FOR_CORRECT_VECTOR_ABI: &'static [(u64, &'static str)] = &[/*(128, "vis")*/]; | |||
const SPARC_FEATURES_FOR_CORRECT_VECTOR_ABI: &'static [(u64, &'static str)] = &[/*(64, "vis")*/]; |
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.
Based on #131800 (comment) the situation is actually even weirder than what is described here, but it seems like we can cross that bridge when we come to it, still. The main purpose here of the comment was always to leave something to hit during grepping the codebase.
@bors r+ rollup |
…jubilee ABI checks: add support for some tier3 arches, warn on others. Followup to - rust-lang#132842 - rust-lang#132173 - rust-lang#131800 r? `@workingjubilee`
The job Click to see the possible cause of the failure (guessed by this bot)
|
💔 Test failed - checks-actions |
@bors retry |
…ngjubilee ABI checks: add support for some tier3 arches, warn on others. Followup to - rust-lang#132842 - rust-lang#132173 - rust-lang#131800 r? `@workingjubilee`
Rollup of 8 pull requests Successful merges: - rust-lang#131717 (Stabilize `const_atomic_from_ptr`) - rust-lang#132449 (mark is_val_statically_known intrinsic as stably const-callable) - rust-lang#132569 (rustdoc search: allow queries to end in an empty path segment) - rust-lang#133029 (ABI checks: add support for some tier3 arches, warn on others.) - rust-lang#133093 (Let chains tests) - rust-lang#133097 (Opt out TaKO8Ki from review rotation for now) - rust-lang#133116 (stabilize const_ptr_is_null) - rust-lang#133126 (alloc: fix `String`'s doc) r? `@ghost` `@rustbot` modify labels: rollup
Rollup of 6 pull requests Successful merges: - rust-lang#133029 (ABI checks: add support for some tier3 arches, warn on others.) - rust-lang#133051 (Increase accuracy of `if` condition misparse suggestion) - rust-lang#133060 (Trim whitespace in RemoveLet primary span) - rust-lang#133093 (Let chains tests) - rust-lang#133116 (stabilize const_ptr_is_null) - rust-lang#133126 (alloc: fix `String`'s doc) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#133029 - veluca93:abi-checks-tier3, r=workingjubilee ABI checks: add support for some tier3 arches, warn on others. Followup to - rust-lang#132842 - rust-lang#132173 - rust-lang#131800 r? ``@workingjubilee``
Followup to
r? @workingjubilee
cc @RalfJung