-
Notifications
You must be signed in to change notification settings - Fork 5k
JIT: Use precise multireg arg check for old promotion #112883
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
Conversation
`lvaIsMultiregStruct` does not account for whether the argument was _actually_ passed in multiple regs, it just checks if the type is a type that could sometimes be passed in multiple registers. Change this to a precise check.
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.
Copilot reviewed 1 out of 1 changed files in this pull request and generated no comments.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
// | ||
bool Compiler::StructPromotionHelper::IsSysVMultiRegType(ClassLayout* layout) | ||
{ | ||
#ifdef UNIX_AMD64_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.
not the case for arm64 (sysv/win)?
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.
Not according to diffs... To be honest I did not spend too much time looking at why this turns out to be a good heuristic for SysV, since I hope to remove all of this in this or next release.
lvaIsMultiregStruct
does not account for whether the argument was actually passed in multiple regs, it just checks if the type is a type that could sometimes be passed in multiple registers. Change this to a precise check. Add a quirk for SysV where it seems the previous check provided a somewhat good heuristic.