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

Fewer AddressExposedReason::TOO_CONSERVATIVE #59429

Merged
merged 6 commits into from
Sep 28, 2021

Conversation

sandreenko
Copy link
Contributor

A few improvements here and there, no actual regressions. The good benefit is that we can tail-call more methods and it should affect the performance better than just the size decrease.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x64\coreclr_tests.pmi.windows.x64.checked.mch
 Total bytes of delta: -392 (-2.39% of base)
 85 total files with Code Size differences (80 improved, 5 regressed), 7 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x64\libraries.crossgen2.windows.x64.checked.mch
 Total bytes of delta: -70 (-2.86% of base)
 10 total files with Code Size differences (10 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x64\libraries.pmi.windows.x64.checked.mch
 Total bytes of delta: -69 (-2.33% of base)
 10 total files with Code Size differences (10 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x64\libraries_tests.pmi.windows.x64.checked.mch
 Total bytes of delta: -68 (-1.01% of base)
 20 total files with Code Size differences (17 improved, 3 regressed), 1 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm64\coreclr_tests.pmi.Linux.arm64.checked.mch
 Total bytes of delta: -184 (-0.81% of base)
 46 total files with Code Size differences (46 improved, 0 regressed), 5 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm64\libraries.crossgen2.Linux.arm64.checked.mch
 Total bytes of delta: -8 (-0.85% of base)
 2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm64\libraries.pmi.Linux.arm64.checked.mch
 Total bytes of delta: -24 (-0.20% of base)
 6 total files with Code Size differences (6 improved, 0 regressed), 1 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm64\libraries_tests.pmi.Linux.arm64.checked.mch
 Total bytes of delta: -56 (-0.34% of base)
 17 total files with Code Size differences (15 improved, 2 regressed), 7 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\benchmarks.run.Linux.x64.checked.mch
 Total bytes of delta: -17 (-0.56% of base)
 5 total files with Code Size differences (5 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\coreclr_tests.pmi.Linux.x64.checked.mch
 Total bytes of delta: -466 (-2.44% of base)
 39 total files with Code Size differences (38 improved, 1 regressed), 8 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\libraries.crossgen2.Linux.x64.checked.mch
 Total bytes of delta: -16 (-2.36% of base)
 2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\libraries.pmi.Linux.x64.checked.mch
 Total bytes of delta: -34 (-0.60% of base)
 6 total files with Code Size differences (6 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\libraries_tests.pmi.Linux.x64.checked.mch
 Total bytes of delta: -216 (-1.30% of base)
 23 total files with Code Size differences (22 improved, 1 regressed), 1 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\benchmarks.run.windows.arm64.checked.mch
 Total bytes of delta: -20 (-0.72% of base)
 5 total files with Code Size differences (5 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\coreclr_tests.pmi.windows.arm64.checked.mch
 Total bytes of delta: -392 (-1.21% of base)
 98 total files with Code Size differences (98 improved, 0 regressed), 11 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\libraries.crossgen2.windows.arm64.checked.mch
 Total bytes of delta: -44 (-1.14% of base)
 11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\libraries.pmi.windows.arm64.checked.mch
 Total bytes of delta: -48 (-0.32% of base)
 10 total files with Code Size differences (10 improved, 0 regressed), 7 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\libraries_tests.pmi.windows.arm64.checked.mch
 Total bytes of delta: -80 (-0.51% of base)
 23 total files with Code Size differences (21 improved, 2 regressed), 5 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\benchmarks.run.windows.x86.checked.mch
 Total bytes of delta: -63 (-0.74% of base)
 16 total files with Code Size differences (15 improved, 1 regressed), 2 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\coreclr_tests.pmi.windows.x86.checked.mch
 Total bytes of delta: -400 (-0.45% of base)
 87 total files with Code Size differences (82 improved, 5 regressed), 45 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\libraries.crossgen2.windows.x86.checked.mch
 Total bytes of delta: -140 (-0.41% of base)
 61 total files with Code Size differences (48 improved, 13 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\libraries.pmi.windows.x86.checked.mch
 Total bytes of delta: -161 (-0.29% of base)
 77 total files with Code Size differences (58 improved, 19 regressed), 7 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\libraries_tests.pmi.windows.x86.checked.mch
 Total bytes of delta: -582 (-0.56% of base)
 187 total files with Code Size differences (173 improved, 14 regressed), 19 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm\coreclr_tests.pmi.Linux.arm.checked.mch
 Total bytes of delta: -74 (-0.42% of base)
 38 total files with Code Size differences (33 improved, 5 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm\libraries.crossgen2.Linux.arm.checked.mch
 Total bytes of delta: -4 (-0.54% of base)
 2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm\libraries.pmi.Linux.arm.checked.mch
 Total bytes of delta: -4 (-0.57% of base)
 2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm\libraries_tests.pmi.Linux.arm.checked.mch
 Total bytes of delta: -28 (-0.46% of base)
 14 total files with Code Size differences (13 improved, 1 regressed), 1 unchanged.

Enreg stat:

Locals enregistration statistics:
-total number of locals: 346731, number of enregistered: 309775, notEnreg: 36956, ratio: 0.89
+total number of locals: 346731, number of enregistered: 309776, notEnreg: 36955, ratio: 0.89
total number of struct locals: 10920, number of enregistered: 86, notEnreg: 10834, ratio: 0.01
-total number of primitive locals: 335811, number of enregistered: 309689, notEnreg: 26122, ratio: 0.92
+total number of primitive locals: 335811, number of enregistered: 309690, notEnreg: 26121, ratio: 0.92
-m_addrExposed 16176, ratio: 0.44
+m_addrExposed 14059, ratio: 0.38
m_notRegSizeStruct 403, ratio: 0.01
m_localField 3219, ratio: 0.09
+m_VMNeedsStackAddr 2116, ratio: 0.06
                                    
m_liveInOutHndlr 642, ratio: 0.02
m_blockOp 449, ratio: 0.01
m_structArg 26, ratio: 0.00
m_depField 952, ratio: 0.03
m_noRegVars 14819, ratio: 0.40
m_castTakesAddr 12, ratio: 0.00
m_swizzleArg 171, ratio: 0.00
m_blockOpRet 87, ratio: 0.00

Addr exposed details:
-m_parentExposed 5123, ratio: 0.32
+m_parentExposed 5123, ratio: 0.36
-m_tooConservative 3434, ratio: 0.21
+m_tooConservative 235, ratio: 0.02
-m_escapeAddress 7384, ratio: 0.46
+m_escapeAddress 8466, ratio: 0.60
m_wideIndir 7, ratio: 0.00
-m_copyFldByFld 228, ratio: 0.01
+m_copyFldByFld 228, ratio: 0.02

Diff example:

Before, tail call is blocked because JIT thinks there is an address exposed var:

IN0004: 000031 call     hackishModuleName:hackishMethodName()
IN0005: 000036 nop      

G_M57568_IG03:        ; offs=000037H, size=0005H, bbWeight=1    PerfScore 1.25, epilog, nogc, extend

IN000c: 000037 add      rsp, 40
IN000d: 00003B ret      

After, do tailcall.

G_M57568_IG03:        ; offs=000028H, size=0005H, bbWeight=1    PerfScore 2.00, epilog, nogc, extend

IN0008: 000028 jmp      hackishModuleName:hackishMethodName()

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

ghost commented Sep 21, 2021

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

Issue Details

A few improvements here and there, no actual regressions. The good benefit is that we can tail-call more methods and it should affect the performance better than just the size decrease.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x64\coreclr_tests.pmi.windows.x64.checked.mch
 Total bytes of delta: -392 (-2.39% of base)
 85 total files with Code Size differences (80 improved, 5 regressed), 7 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x64\libraries.crossgen2.windows.x64.checked.mch
 Total bytes of delta: -70 (-2.86% of base)
 10 total files with Code Size differences (10 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x64\libraries.pmi.windows.x64.checked.mch
 Total bytes of delta: -69 (-2.33% of base)
 10 total files with Code Size differences (10 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x64\libraries_tests.pmi.windows.x64.checked.mch
 Total bytes of delta: -68 (-1.01% of base)
 20 total files with Code Size differences (17 improved, 3 regressed), 1 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm64\coreclr_tests.pmi.Linux.arm64.checked.mch
 Total bytes of delta: -184 (-0.81% of base)
 46 total files with Code Size differences (46 improved, 0 regressed), 5 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm64\libraries.crossgen2.Linux.arm64.checked.mch
 Total bytes of delta: -8 (-0.85% of base)
 2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm64\libraries.pmi.Linux.arm64.checked.mch
 Total bytes of delta: -24 (-0.20% of base)
 6 total files with Code Size differences (6 improved, 0 regressed), 1 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm64\libraries_tests.pmi.Linux.arm64.checked.mch
 Total bytes of delta: -56 (-0.34% of base)
 17 total files with Code Size differences (15 improved, 2 regressed), 7 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\benchmarks.run.Linux.x64.checked.mch
 Total bytes of delta: -17 (-0.56% of base)
 5 total files with Code Size differences (5 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\coreclr_tests.pmi.Linux.x64.checked.mch
 Total bytes of delta: -466 (-2.44% of base)
 39 total files with Code Size differences (38 improved, 1 regressed), 8 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\libraries.crossgen2.Linux.x64.checked.mch
 Total bytes of delta: -16 (-2.36% of base)
 2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\libraries.pmi.Linux.x64.checked.mch
 Total bytes of delta: -34 (-0.60% of base)
 6 total files with Code Size differences (6 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.x64\libraries_tests.pmi.Linux.x64.checked.mch
 Total bytes of delta: -216 (-1.30% of base)
 23 total files with Code Size differences (22 improved, 1 regressed), 1 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\benchmarks.run.windows.arm64.checked.mch
 Total bytes of delta: -20 (-0.72% of base)
 5 total files with Code Size differences (5 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\coreclr_tests.pmi.windows.arm64.checked.mch
 Total bytes of delta: -392 (-1.21% of base)
 98 total files with Code Size differences (98 improved, 0 regressed), 11 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\libraries.crossgen2.windows.arm64.checked.mch
 Total bytes of delta: -44 (-1.14% of base)
 11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\libraries.pmi.windows.arm64.checked.mch
 Total bytes of delta: -48 (-0.32% of base)
 10 total files with Code Size differences (10 improved, 0 regressed), 7 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.arm64\libraries_tests.pmi.windows.arm64.checked.mch
 Total bytes of delta: -80 (-0.51% of base)
 23 total files with Code Size differences (21 improved, 2 regressed), 5 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\benchmarks.run.windows.x86.checked.mch
 Total bytes of delta: -63 (-0.74% of base)
 16 total files with Code Size differences (15 improved, 1 regressed), 2 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\coreclr_tests.pmi.windows.x86.checked.mch
 Total bytes of delta: -400 (-0.45% of base)
 87 total files with Code Size differences (82 improved, 5 regressed), 45 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\libraries.crossgen2.windows.x86.checked.mch
 Total bytes of delta: -140 (-0.41% of base)
 61 total files with Code Size differences (48 improved, 13 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\libraries.pmi.windows.x86.checked.mch
 Total bytes of delta: -161 (-0.29% of base)
 77 total files with Code Size differences (58 improved, 19 regressed), 7 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.windows.x86\libraries_tests.pmi.windows.x86.checked.mch
 Total bytes of delta: -582 (-0.56% of base)
 187 total files with Code Size differences (173 improved, 14 regressed), 19 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm\coreclr_tests.pmi.Linux.arm.checked.mch
 Total bytes of delta: -74 (-0.42% of base)
 38 total files with Code Size differences (33 improved, 5 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm\libraries.crossgen2.Linux.arm.checked.mch
 Total bytes of delta: -4 (-0.54% of base)
 2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm\libraries.pmi.Linux.arm.checked.mch
 Total bytes of delta: -4 (-0.57% of base)
 2 total files with Code Size differences (2 improved, 0 regressed), 0 unchanged.

Running asm diffs of D:\Sergey\git\runtime\artifacts\spmi\mch\5ed35c58-857b-48dd-a818-7c0136dc9f73.Linux.arm\libraries_tests.pmi.Linux.arm.checked.mch
 Total bytes of delta: -28 (-0.46% of base)
 14 total files with Code Size differences (13 improved, 1 regressed), 1 unchanged.

Enreg stat:

Locals enregistration statistics:
-total number of locals: 346731, number of enregistered: 309775, notEnreg: 36956, ratio: 0.89
+total number of locals: 346731, number of enregistered: 309776, notEnreg: 36955, ratio: 0.89
total number of struct locals: 10920, number of enregistered: 86, notEnreg: 10834, ratio: 0.01
-total number of primitive locals: 335811, number of enregistered: 309689, notEnreg: 26122, ratio: 0.92
+total number of primitive locals: 335811, number of enregistered: 309690, notEnreg: 26121, ratio: 0.92
-m_addrExposed 16176, ratio: 0.44
+m_addrExposed 14059, ratio: 0.38
m_notRegSizeStruct 403, ratio: 0.01
m_localField 3219, ratio: 0.09
+m_VMNeedsStackAddr 2116, ratio: 0.06
                                    
m_liveInOutHndlr 642, ratio: 0.02
m_blockOp 449, ratio: 0.01
m_structArg 26, ratio: 0.00
m_depField 952, ratio: 0.03
m_noRegVars 14819, ratio: 0.40
m_castTakesAddr 12, ratio: 0.00
m_swizzleArg 171, ratio: 0.00
m_blockOpRet 87, ratio: 0.00

Addr exposed details:
-m_parentExposed 5123, ratio: 0.32
+m_parentExposed 5123, ratio: 0.36
-m_tooConservative 3434, ratio: 0.21
+m_tooConservative 235, ratio: 0.02
-m_escapeAddress 7384, ratio: 0.46
+m_escapeAddress 8466, ratio: 0.60
m_wideIndir 7, ratio: 0.00
-m_copyFldByFld 228, ratio: 0.01
+m_copyFldByFld 228, ratio: 0.02

Diff example:

Before, tail call is blocked because JIT thinks there is an address exposed var:

IN0004: 000031 call     hackishModuleName:hackishMethodName()
IN0005: 000036 nop      

G_M57568_IG03:        ; offs=000037H, size=0005H, bbWeight=1    PerfScore 1.25, epilog, nogc, extend

IN000c: 000037 add      rsp, 40
IN000d: 00003B ret      

After, do tailcall.

G_M57568_IG03:        ; offs=000028H, size=0005H, bbWeight=1    PerfScore 2.00, epilog, nogc, extend

IN0008: 000028 jmp      hackishModuleName:hackishMethodName()
Author: sandreenko
Assignees: -
Labels:

area-CodeGen-coreclr, community-contribution

Milestone: -

@JulieLeeMSFT JulieLeeMSFT added this to the 7.0.0 milestone Sep 21, 2021
@@ -4348,6 +4347,7 @@ void Compiler::lvaMarkLocalVars()
lvaPSPSym = lvaGrabTempWithImplicitUse(false DEBUGARG("PSPSym"));
LclVarDsc* lclPSPSym = &lvaTable[lvaPSPSym];
lclPSPSym->lvType = TYP_I_IMPL;
lvaSetVarDoNotEnregister(lvaPSPSym DEBUGARG(DoNotEnregisterReason::VMNeedsStackAddr));
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

now this is the main reason for VMNeedsStackAddr but if I understand correctly we actually report this to VM so we can't do anything about it.

@jakobbotsch
Copy link
Member

There is an x86 test failure related to varargs it seems, is it unrelated?

@sandreenko
Copy link
Contributor Author

There is an x86 test failure related to varargs it seems, is it unrelated?

looks related, there are no asm diffs for this method but maybe we tell VM something differently. I will check.

@sandreenko
Copy link
Contributor Author

sandreenko commented Sep 28, 2021

The failure was fixed and I have improved the dump a little.

@jakobbotsch
Copy link
Member

Failures are #59541

@jakobbotsch jakobbotsch merged commit 181da3b into dotnet:main Sep 28, 2021
@ghost ghost locked as resolved and limited conversation to collaborators Nov 3, 2021
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.

3 participants