Uh oh!
There was an error while loading. Please reload this page.
Enable TYP_STRUCTLCL_VAR/LCL_FLD call args on ARM - #71598
Conversation
ghost
commented
Jul 3, 2022
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsEnables the folding for our last target. As usual, we have diffs, mostly improvements, but there is one kind of regression unique to ARM. It happens when we forward-substitute a promoted struct local as a non-first parameter. On ARM, we copy promoted struct arguments into outgoing temps, which then means we copy things before it in the parameter list: CALLARG_1ARG_2<promoted LCL_VAR>
==>CALLASGLCL_VAR arg0temp
ARG_1COMMAs<field assignments for ARG_2>
LCL_VAR arg0temp
LCL_VAR arg1tempWhere without forward subtituion we would have: COMMAs<field assignments for ARG_2>
CALLARG_1ARG_2The right fix for this is to drop the copying of promoted temps; and I have the changes necessary for that ready (the first is #71399, then there will be two more), and we can decide it's important to wait them, or it is ok to merge this PR as-is.
|
SingleAccretion
commented
Jul 4, 2022
@dotnet/jit-contrib |
jakobbotsch
commented
Jul 7, 2022
Is this just one PR away now? |
Yep. Edit: barring unforeseen bugs, etc. |
jakobbotsch
commented
Jul 7, 2022
Ah, just saw #71780. Let's wait for that one then, those diffs did look a bit scary even if they were in some unrealistic test cases. |
jakobbotsch
commented
Jul 8, 2022
/azp run runtime-coreclr superpmi-diffs |
|
Azure Pipelines successfully started running 1 pipeline(s). |
jakobbotsch
commented
Jul 8, 2022
Looks like there are still some large regressions in those tests. Unexpected? |
SingleAccretion
commented
Jul 8, 2022
It's the same issue as in #70861 - 11K struct sources for |
jakobbotsch
commented
Jul 9, 2022
Ok, seems fine then. |
Enables the folding for our last target.
As usual, we have diffs, mostly improvements, but there is one kind of regression unique to ARM.
It happens when we forward-substitute a promoted struct local as a non-first parameter. On ARM, we copy promoted struct arguments into outgoing temps, which then means we copy things before it in the parameter list:
Where without forward subtituion we would have:
The right fix for this is to drop the copying of promoted temps; and I have the changes necessary for that ready (#71780); we can decide if it's important to wait for them, or ok to merge this PR as-is.
Also we have some regressions in test methods with huge structs and on non-ARM platforms from the last commit.