Skip to content
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

Store actual signature types in CallArg and normalize to that type #69969

Merged

Conversation

jakobbotsch
Copy link
Member

Previously, for struct args, we would use the class handle of the
argument (from the IL stack) instead of the class handle from the
signature. These may sometimes differ in __Canon when inlining shared
code. This change switches the class handle stored in CallArg to always
be the type reported back by the EE when asking about the signature.

This should no longer have the positive diffs the comment talks about; those positive diffs (and more) were realized in #68986 by the removal of fgMorphCanUseLclFldForCopy.

Previously, for struct args, we would use the class handle of the
argument (from the IL stack) instead of the class handle from the
signature. These may sometimes differ in __Canon when inlining shared
code. This change switches the class handle stored in CallArg to always
be the type reported back by the EE when asking about the signature.
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label May 29, 2022
@ghost ghost assigned jakobbotsch May 29, 2022
@ghost
Copy link

ghost commented May 29, 2022

Tagging subscribers to this area: @JulieLeeMSFT
See info in area-owners.md if you want to be subscribed.

Issue Details

Previously, for struct args, we would use the class handle of the
argument (from the IL stack) instead of the class handle from the
signature. These may sometimes differ in __Canon when inlining shared
code. This change switches the class handle stored in CallArg to always
be the type reported back by the EE when asking about the signature.

This should no longer have the positive diffs the comment talks about; those positive diffs (and more) were realized in #68986 by the removal of fgMorphCanUseLclFldForCopy.

Author: jakobbotsch
Assignees: jakobbotsch
Labels:

area-CodeGen-coreclr

Milestone: -

@jakobbotsch
Copy link
Member Author

cc @dotnet/jit-contrib, some tiny diffs.

@jakobbotsch jakobbotsch merged commit 2659885 into dotnet:main May 31, 2022
@jakobbotsch jakobbotsch deleted the remove-args-signature-class-handle-quirk branch May 31, 2022 08:51
@ghost ghost locked as resolved and limited conversation to collaborators Jun 30, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants