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

Improve and simplify MakeTmpArgNode #71019

Merged
merged 1 commit into from
Jun 27, 2022

Conversation

SingleAccretion
Copy link
Contributor

@SingleAccretion SingleAccretion commented Jun 20, 2022

Use the ABI info stored in the call arg instead of bespoke logic and do not address-expose temps which will be passed by value.

We're expecting diffs:

  1. GC info: GT_LCL_VAR_ADDRs are typed TYP_I_IMPL as opposed to TYP_BYREF.
  2. Improvements from the lack of address-exposure, especially on ARM (regressions from CSE/etc).
  3. One small Unix x64 regression because the old code would retype an on-stack arg to long/int even if the "base type" of it was double/float, and FP movs are slightly larger than GPR ones.

Also fixes a potential LA-specific bug where we could retype struct { float, int } as TYP_LONG.

Diffs.

@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 Jun 20, 2022
@ghost ghost added the community-contribution Indicates that the PR has been added by a community member label Jun 20, 2022
@ghost
Copy link

ghost commented Jun 20, 2022

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

Issue Details

Use the ABI info stored in the call arg instead of bespoke logic and do not address-expose temps which will be passed by value.

We're expecting diffs:

  1. GC info: GT_LCL_VAR_ADDRs are typed TYP_I_IMPL as opposed to TYP_BYREF.
  2. Improvements from the lack of address-exposure, especially on ARM (regressions from CSE/etc).
  3. One small Unix x64 regression because the old code would retype an on-stack arg to long/int even if the "base type" of it was double/float, and FP movs are slightly larger than GPR ones.

Also fixes a potential LA-specific bug where we could retype struct { float, int } as TYP_LONG.

Author: SingleAccretion
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@SingleAccretion SingleAccretion marked this pull request as ready for review June 21, 2022 10:31
@SingleAccretion
Copy link
Contributor Author

SingleAccretion commented Jun 21, 2022

@dotnet/jit-contrib

Use the ABI info stored in the call arg instead of bespoke logic.
@jakobbotsch
Copy link
Member

/azp run runtime-coreclr superpmi-replay

@azure-pipelines
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@jakobbotsch jakobbotsch merged commit 601ef26 into dotnet:main Jun 27, 2022
@SingleAccretion SingleAccretion deleted the MakeTmpArgNode-Amendments branch June 28, 2022 13:47
@ghost ghost locked as resolved and limited conversation to collaborators Jul 28, 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 community-contribution Indicates that the PR has been added by a community member
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants