-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Simplify handling of multi-reg returns #74499
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
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsKeep the return descriptor for the method being compiled and use it in various places. Deletes the dependence of multi-reg Fixes #36868. Depends on #72887.
|
20bd20a to
85abb89
Compare
85abb89 to
f46440e
Compare
45bd7f9 to
a5828eb
Compare
|
@dotnet/jit-contrib |
|
@dotnet/jit-contrib anyone up for reviewing this? Looks like a nice cleanup but cuts across a lot of code. |
|
I can take a look, but it'll probably take me some time to get familiar with multi-reg returns. |
Add the return type descriptor to compiler and use it. Delete target-specific code from "impFixupStructReturnType". The main target of this change is getting rid of the dependency of multi-reg RETURN backend code on exact struct handles on temps it expects as the sources.
Due to the buggy nature of the old code, the matrix for what
substititions were allowed was as follows:
ARM x86
LONG not-LCL_VAR NONE
STRUCT LCL_VAR LCL_VAR
This commit preserves this extremely quirky behavior.
Unfortunately, just enabling the propagation is a CQ regression
due to some RA issues.
030d67c to
e4a948e
Compare
| // TODO-Review: this seems unnecessary. Return ABI doesn't change under varargs. | ||
| && !op->AsCall()->IsVarargs() | ||
| #endif // defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) | ||
| ) |
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.
Seems likely this check is not necessary at all anymore after #73059.
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.
Ah, not really.
jakobbotsch
left a comment
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.
This looks great to me, very nice cleanup. I'll trigger some stress legs.
|
/azp run runtime-coreclr jitstress |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Thanks! |
Keep the return descriptor for the method being compiled and use it in various places.
Deletes the dependence of multi-reg
RETURNbackend code on precise handles ofLCL_VARoperands.Fixes #36868.
Tiny amount of diffs on ARM64: some forward substitutions of non-multireg SIMDs are now allowed.