Assembly Diffs

linux arm64

Diffs are based on 2,501,261 contexts (1,003,806 MinOpts, 1,497,455 FullOpts).

MISSED contexts: 3,956 (0.16%)

Overall (-664 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,579,780 +0
benchmarks.run_pgo.linux.arm64.checked.mch 80,916,176 -4
coreclr_tests.run.linux.arm64.checked.mch 509,788,568 -24
libraries.crossgen2.linux.arm64.checked.mch 55,736,420 -108
libraries.pmi.linux.arm64.checked.mch 75,995,180 -128
libraries_tests.run.linux.arm64.Release.mch 381,263,920 -300
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 162,531,076 -80
realworld.run.linux.arm64.checked.mch 15,906,972 -20

FullOpts (-664 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 15,276,772 +0
benchmarks.run_pgo.linux.arm64.checked.mch 55,979,716 -4
coreclr_tests.run.linux.arm64.checked.mch 160,563,512 -24
libraries.crossgen2.linux.arm64.checked.mch 55,734,784 -108
libraries.pmi.linux.arm64.checked.mch 75,875,196 -128
libraries_tests.run.linux.arm64.Release.mch 165,966,780 -300
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 149,049,864 -80
realworld.run.linux.arm64.checked.mch 15,321,604 -20

Example diffs

benchmarks.run.linux.arm64.checked.mch

+0 (0.00%) : 18653.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

benchmarks.run_pgo.linux.arm64.checked.mch

-4 (-0.33%) : 85059.dasm - System.Linq.Enumerable:TryGetSingleSystem.__Canon:System.__Canon (Tier1)

@@ -53,7 +53,6 @@
 ;  V41 rat1         [V41,T29] (  3,  0.17)    long  ->  x24         "runtime lookup"
 ;  V42 rat2         [V42,T27] (  3,  0.24)    long  ->   x1         "spilling expr"
 ;  V43 rat3         [V43,T28] (  3,  0.19)    long  ->  x24         "fgMakeTemp is creating a new local variable"
-;  TEMP_01                                   byref  ->  [fp+0x10]
 ;
 ; Lcl frame size = 40
 
@@ -65,7 +64,7 @@ G_M35688_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x25, x26, [sp, #0x68]
             str     x27, [sp, #0x78]
             mov     fp, sp
-            stp     xzr, xzr, [fp, #0x10]  // [V06 loc2]
+            str     xzr, [fp, #0x18]   // [V06 loc2]
             add     x4, sp, #128
             stp     x0, x4, [fp, #0x28]    // [V31 PSPSym]
             mov     x19, x0
@@ -362,10 +361,10 @@ G_M35688_IG29:        ; bbWeight=0.04, gcrefRegs=2800000 {x23 x25}, byrefRegs=40
             ; gcrRegs +[x0]
             b       G_M35688_IG27
                        ;; size=8 bbWeight=0.04 PerfScore 0.07
-G_M35688_IG30:        ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
-            ; gcrRegs -[x0 x23] +[x21]
+G_M35688_IG30:        ; bbWeight=0.01, gcrefRegs=2A00000 {x21 x23 x25}, byrefRegs=400000 {x22}, byref, isz
+            ; gcrRegs -[x0] +[x21]
             mov     x11, x24
-            ldr     x0, [fp, #0x20]    // [V04 loc0]
+            mov     x0, x23
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
@@ -373,8 +372,8 @@ G_M35688_IG30:        ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=40
             ldr     x1, [x21, #0x18]
             cmp     x1, x26
             beq     G_M35688_IG38
-                       ;; size=28 bbWeight=0.01 PerfScore 0.08
-G_M35688_IG31:        ; bbWeight=0, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref
+                       ;; size=28 bbWeight=0.01 PerfScore 0.07
+G_M35688_IG31:        ; bbWeight=0, gcrefRegs=2A00001 {x0 x21 x23 x25}, byrefRegs=400000 {x22}, byref
             mov     x1, x0
             ; gcrRegs +[x1]
             ldr     x0, [x21, #0x08]
@@ -383,14 +382,12 @@ G_M35688_IG31:        ; bbWeight=0, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=40
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M35688_IG32:        ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
+G_M35688_IG32:        ; bbWeight=0.01, gcrefRegs=2A00000 {x21 x23 x25}, byrefRegs=400000 {x22}, byref, isz
             cbz     w0, G_M35688_IG34
                        ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M35688_IG33:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35688_IG33:        ; bbWeight=0, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x21 x25]
             ; byrRegs -[x22]
-            ldr     x23, [fp, #0x20]   // [V04 loc0]
-            ; gcrRegs +[x23]
             movz    x0, #0xD1FFAB1E      // code for System.Linq.ThrowHelper:ThrowMoreThanOneMatchException()
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -398,7 +395,7 @@ G_M35688_IG33:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             blr     x0
             ; gcr arg pop 0
             brk_unix #0
-                       ;; size=28 bbWeight=0 PerfScore 0.00
+                       ;; size=24 bbWeight=0 PerfScore 0.00
 G_M35688_IG34:        ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=400000 {x22}, byref, isz
             ; gcrRegs -[x23] +[x21 x25]
             ; byrRegs +[x22]
@@ -417,16 +414,18 @@ G_M35688_IG34:        ; bbWeight=0.01, gcrefRegs=2200000 {x21 x25}, byrefRegs=40
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
+            ldr     x23, [fp, #0x20]   // [V04 loc0]
+            ; gcrRegs +[x23]
             cbnz    w0, G_M35688_IG30
-                       ;; size=52 bbWeight=0.01 PerfScore 0.11
-G_M35688_IG35:        ; bbWeight=0.04, gcrefRegs=2000000 {x25}, byrefRegs=400000 {x22}, byref
+                       ;; size=56 bbWeight=0.01 PerfScore 0.12
+G_M35688_IG35:        ; bbWeight=0.04, gcrefRegs=2800000 {x23 x25}, byrefRegs=400000 {x22}, byref
             ; gcrRegs -[x21]
-            ldr     x0, [fp, #0x20]    // [V04 loc0]
+            mov     x0, x23
             ; gcrRegs +[x0]
             b       G_M35688_IG27
-                       ;; size=8 bbWeight=0.04 PerfScore 0.13
+                       ;; size=8 bbWeight=0.04 PerfScore 0.07
 G_M35688_IG36:        ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref, isz
-            ; gcrRegs +[x21]
+            ; gcrRegs -[x23] +[x21]
             ldr     x1, [x0, #0x18]
             ; gcrRegs +[x1]
             ldr     w2, [x0, #0x14]
@@ -438,9 +437,6 @@ G_M35688_IG36:        ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs
 G_M35688_IG37:        ; bbWeight=0.06, gcrefRegs=2200003 {x0 x1 x21 x25}, byrefRegs=400000 {x22}, byref
             add     w2, w2, #1
             str     w2, [x0, #0x14]
-            add     x14, x0, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x10]   // [TEMP_01]
             ldr     x19, [x0, #0x20]
             ; gcrRegs +[x19]
             add     x1, x1, #16
@@ -453,9 +449,10 @@ G_M35688_IG37:        ; bbWeight=0.06, gcrefRegs=2200003 {x0 x1 x21 x25}, byrefR
             ldr     x2, [x19, #0x18]
             blr     x2
             ; gcrRegs -[x1 x19]
-            ; byrRegs -[x14]
             ; gcr arg pop 0
-            ldr     x14, [fp, #0x10]   // [TEMP_01]
+            ldr     x23, [fp, #0x20]   // [V04 loc0]
+            ; gcrRegs +[x23]
+            add     x14, x23, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -463,8 +460,8 @@ G_M35688_IG37:        ; bbWeight=0.06, gcrefRegs=2200003 {x0 x1 x21 x25}, byrefR
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             b       G_M35688_IG30
-                       ;; size=56 bbWeight=0.06 PerfScore 1.24
-G_M35688_IG38:        ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs=400000 {x22}, byref
+                       ;; size=52 bbWeight=0.06 PerfScore 1.18
+G_M35688_IG38:        ; bbWeight=0.01, gcrefRegs=2A00001 {x0 x21 x23 x25}, byrefRegs=400000 {x22}, byref
             ; gcrRegs +[x0]
             ldr     x27, [x21, #0x08]
             ; gcrRegs +[x27]
@@ -487,7 +484,7 @@ G_M35688_IG38:        ; bbWeight=0.01, gcrefRegs=2200001 {x0 x21 x25}, byrefRegs
             b       G_M35688_IG32
                        ;; size=56 bbWeight=0.01 PerfScore 0.18
 G_M35688_IG39:        ; bbWeight=0.01, gcrefRegs=2000001 {x0 x25}, byrefRegs=400000 {x22}, byref
-            ; gcrRegs -[x21] +[x0]
+            ; gcrRegs -[x21 x23] +[x0]
             str     xzr, [x0, #0x08]
             movn    w11, #0
             str     w11, [x0, #0x14]
@@ -607,7 +604,7 @@ G_M35688_IG52:        ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ret     lr
                        ;; size=28 bbWeight=0.04 PerfScore 0.78
 
-; Total bytes of code 1224, prolog size 56, PerfScore 237.68, instruction count 306, allocated bytes for code 1224 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 1220, prolog size 56, PerfScore 237.56, instruction count 305, allocated bytes for code 1220 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -618,7 +615,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 277 (0x00115) Actual length = 1108 (0x000454)
+  Function Length   : 276 (0x00114) Actual length = 1104 (0x000450)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

coreclr_tests.run.linux.arm64.checked.mch

-24 (-2.33%) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]):this (FullOpts)

@@ -8,78 +8,74 @@
 ; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] ( 14,1267   )     ref  ->  x19         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T08] ( 18,1118   )     ref  ->  x20         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T09] ( 13,1139   )     ref  ->  x20         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T07] ( 18,1118   )     ref  ->  x19         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T04] (  8,1328   )     ref  ->  x23         class-hnd <<unknown class>>
 ;* V03 loc1         [V03    ] (  0,   0   )  struct (16) zero-ref    multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;* V04 loc2         [V04    ] (  0,   0   )  struct (16) zero-ref    multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct (16) zero-ref    multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T09] (  9,1216   )     ref  ->  x23         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T08] (  9,1216   )     ref  ->  x23         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T10] (  5, 896   )     ref  ->  x25         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;# V08 OutArgs      [V08    ] (  1,   1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T34] (  3,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T30] (  3,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V13 tmp5         [V13    ] (  0,   0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V14 tmp6         [V14,T22] (  3, 192   )     ref  ->  x23         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V14 tmp6         [V14,T18] (  3, 192   )     ref  ->  x23         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V15 tmp7         [V15    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp8         [V16    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp9         [V17,T31] (  4,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T27] (  4,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V18 tmp10        [V18    ] (  0,   0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V19 tmp11        [V19,T36] (  3,  44.41)     int  ->  x24         "impAppendStmt"
-;  V20 tmp12        [V20,T30] (  7,  64   )     ref  ->  x23         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V21 tmp13        [V21,T43] (  4,  20   )     int  ->  x24         "Inline stloc first use temp"
-;  V22 tmp14        [V22,T44] (  3,  18   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V23 tmp15        [V23,T45] (  3,  16   )     int  ->   x0         "Inline return value spill temp"
-;  V24 tmp16        [V24,T39] (  3,  35.59)     int  ->   x0         "Inlining Arg"
-;  V25 tmp17        [V25,T24] (  7, 160   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V26 tmp18        [V26,T32] (  4,  48   )     int  ->   x3         "Inline stloc first use temp"
-;  V27 tmp19        [V27,T37] (  3,  40   )     ref  ->  x14         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T32] (  3,  44.41)     int  ->  x24         "impAppendStmt"
+;  V20 tmp12        [V20,T26] (  7,  64   )     ref  ->  x23         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V21 tmp13        [V21,T39] (  4,  20   )     int  ->  x24         "Inline stloc first use temp"
+;  V22 tmp14        [V22,T40] (  3,  18   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V23 tmp15        [V23,T41] (  3,  16   )     int  ->   x0         "Inline return value spill temp"
+;  V24 tmp16        [V24,T35] (  3,  35.59)     int  ->   x0         "Inlining Arg"
+;  V25 tmp17        [V25,T20] (  7, 160   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V26 tmp18        [V26,T28] (  4,  48   )     int  ->   x3         "Inline stloc first use temp"
+;  V27 tmp19        [V27,T33] (  3,  40   )     ref  ->  x14         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V28 tmp20        [V28    ] (  0,   0   )  struct (16) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V29 tmp21        [V29,T20] (  3, 256   )     int  ->  x11         "Inline return value spill temp"
-;  V30 tmp22        [V30,T13] (  3, 710.54)     int  ->   x0         "Inlining Arg"
-;  V31 tmp23        [V31,T17] (  3, 569.46)     int  ->  x11         "Inlining Arg"
-;  V32 tmp24        [V32,T14] (  3, 629.97)     ref  ->   x2         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V29 tmp21        [V29,T17] (  3, 256   )     int  ->  x11         "Inline return value spill temp"
+;  V30 tmp22        [V30,T12] (  3, 710.54)     int  ->   x0         "Inlining Arg"
+;  V31 tmp23        [V31,T14] (  3, 569.46)     int  ->  x11         "Inlining Arg"
+;  V32 tmp24        [V32,T13] (  3, 629.97)     ref  ->   x2         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V33 tmp25        [V33,T11] (  4, 747.94)     int  ->   x0         "Inline stloc first use temp"
-;  V34 tmp26        [V34,T19] (  7, 384   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V35 tmp27        [V35,T29] (  3,  93.49)     ref  ->   x3         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V36 tmp28        [V36,T28] (  4, 122.99)     int  ->   x2         "Inline stloc first use temp"
+;  V34 tmp26        [V34,T16] (  7, 384   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V35 tmp27        [V35,T25] (  3,  93.49)     ref  ->   x3         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V36 tmp28        [V36,T24] (  4, 122.99)     int  ->   x2         "Inline stloc first use temp"
 ;* V37 tmp29        [V37    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V38 tmp30        [V38,T46] (  2,  16   )     ref  ->  x20         "field V03.Vertex (fldOffset=0x0)" P-INDEP
-;  V39 tmp31        [V39,T47] (  2,  16   )     ref  ->  x23         "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V38 tmp30        [V38,T42] (  2,  16   )     ref  ->  x19         "field V03.Vertex (fldOffset=0x0)" P-INDEP
+;  V39 tmp31        [V39,T43] (  2,  16   )     ref  ->  x23         "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;  V40 tmp32        [V40,T05] (  5,1424   )     ref  ->  x25         "field V04.Destination (fldOffset=0x0)" P-INDEP
-;  V41 tmp33        [V41,T18] (  1, 512   )   ubyte  ->   x1         "field V04.Flagged (fldOffset=0x8)" P-INDEP
-;  V42 tmp34        [V42,T41] (  3,  32   )     ref  ->   x1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V43 tmp35        [V43,T42] (  3,  32   )     ref  ->   x2         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V41 tmp33        [V41,T15] (  1, 512   )   ubyte  ->   x1         "field V04.Flagged (fldOffset=0x8)" P-INDEP
+;  V42 tmp34        [V42,T37] (  3,  32   )     ref  ->   x1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V43 tmp35        [V43,T38] (  3,  32   )     ref  ->   x2         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;* V44 tmp36        [V44    ] (  0,   0   )     ref  ->  zero-ref    "field V13.Destination (fldOffset=0x0)" P-DEP
 ;* V45 tmp37        [V45    ] (  0,   0   )   ubyte  ->  zero-ref    "field V13.Flagged (fldOffset=0x8)" P-DEP
-;  V46 tmp38        [V46,T48] (  2,  16   )     ref  ->   x0         "field V18.Destination (fldOffset=0x0)" P-INDEP
-;  V47 tmp39        [V47,T51] (  1,   8   )   ubyte  ->   x1         "field V18.Flagged (fldOffset=0x8)" P-INDEP
+;  V46 tmp38        [V46,T44] (  2,  16   )     ref  ->   x0         "field V18.Destination (fldOffset=0x0)" P-INDEP
+;  V47 tmp39        [V47,T47] (  1,   8   )   ubyte  ->   x1         "field V18.Flagged (fldOffset=0x8)" P-INDEP
 ;* V48 tmp40        [V48    ] (  0,   0   )     ref  ->  zero-ref    "field V28.Vertex (fldOffset=0x0)" P-INDEP
 ;* V49 tmp41        [V49    ] (  0,   0   )     ref  ->  zero-ref    "field V28.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-;  V50 tmp42        [V50,T33] (  3,  48   )   byref  ->   x4         "BlockOp address local"
-;  V51 cse0         [V51,T50] (  2,   9   )    long  ->  x22         hoist "CSE - moderate"
-;  V52 cse1         [V52,T40] (  4,  32   )     int  ->   x1         "CSE - moderate"
+;  V50 tmp42        [V50,T29] (  3,  48   )   byref  ->   x4         "BlockOp address local"
+;  V51 cse0         [V51,T46] (  2,   9   )    long  ->  x22         hoist "CSE - moderate"
+;  V52 cse1         [V52,T36] (  4,  32   )     int  ->   x1         "CSE - moderate"
 ;  V53 cse2         [V53,T06] (  3,1280   )    long  ->  x24         "CSE - aggressive"
-;  V54 cse3         [V54,T49] (  4,  12.88)    long  ->  x21         hoist "CSE - moderate"
-;  V55 rat0         [V55,T53] (  3,   4.72)    long  ->   x0         "Spilling to split statement for tree"
-;  V56 rat1         [V56,T55] (  3,   4   )    long  ->  x22         "runtime lookup"
-;  V57 rat2         [V57,T52] (  3,   5.60)    long  ->   x1         "spilling expr"
-;  V58 rat3         [V58,T54] (  3,   4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V59 rat4         [V59,T35] (  3,  44.80)    long  ->   x0         "spilling expr"
-;  V60 rat5         [V60,T38] (  3,  35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V61 rat6         [V61,T15] (  2, 512   )    long  ->   x0         "Spilling to split statement for tree"
-;* V62 rat7         [V62,T21] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;  V63 rat8         [V63,T12] (  2, 512   )    long  ->   x0         "spilling expr"
-;* V64 rat9         [V64,T16] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V65 rat10        [V65,T02] (  3,2416.64)    long  ->   x0         "Spilling to split statement for tree"
-;  V66 rat11        [V66,T01] (  3,2867.20)    long  ->   x1         "spilling expr"
-;  V67 rat12        [V67,T03] (  3,2293.76)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V68 rat13        [V68,T25] (  3, 151.04)    long  ->   x0         "Spilling to split statement for tree"
-;  V69 rat14        [V69,T27] (  3, 128   )    long  ->   x1         "runtime lookup"
-;  V70 rat15        [V70,T23] (  3, 179.20)    long  ->   x1         "spilling expr"
-;  V71 rat16        [V71,T26] (  3, 143.36)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V54 cse3         [V54,T45] (  4,  12.88)    long  ->  x21         "CSE - moderate"
+;  V55 rat0         [V55,T49] (  3,   4.72)    long  ->   x0         "Spilling to split statement for tree"
+;  V56 rat1         [V56,T51] (  3,   4   )    long  ->  x22         "runtime lookup"
+;  V57 rat2         [V57,T48] (  3,   5.60)    long  ->   x1         "spilling expr"
+;  V58 rat3         [V58,T50] (  3,   4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
+;  V59 rat4         [V59,T31] (  3,  44.80)    long  ->   x0         "spilling expr"
+;  V60 rat5         [V60,T34] (  3,  35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V61 rat6         [V61,T02] (  3,2416.64)    long  ->   x0         "Spilling to split statement for tree"
+;  V62 rat7         [V62,T01] (  3,2867.20)    long  ->   x1         "spilling expr"
+;  V63 rat8         [V63,T03] (  3,2293.76)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V64 rat9         [V64,T21] (  3, 151.04)    long  ->   x0         "Spilling to split statement for tree"
+;  V65 rat10        [V65,T23] (  3, 128   )    long  ->   x1         "runtime lookup"
+;  V66 rat11        [V66,T19] (  3, 179.20)    long  ->   x1         "spilling expr"
+;  V67 rat12        [V67,T22] (  3, 143.36)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 8
 
@@ -91,13 +87,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             str     x25, [sp, #0x48]
             mov     fp, sp
             str     x0, [fp, #0x10]
-            mov     x19, x0
-            ; gcrRegs +[x19]
-            mov     x20, x1
+            mov     x20, x0
             ; gcrRegs +[x20]
+            mov     x19, x1
+            ; gcrRegs +[x19]
                        ;; size=36 bbWeight=1 PerfScore 7.50
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x21, [x19]
+            ldr     x21, [x20]
             mov     x0, x21
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
@@ -121,11 +117,11 @@ G_M1799_IG05:        ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
             mov     x22, x0
                        ;; size=20 bbWeight=0.36 PerfScore 1.08
 G_M1799_IG06:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     w1, [x19, #0x28]
-            stp     w1, w1, [x20, #0x18]
+            ldr     w1, [x20, #0x28]
+            stp     w1, w1, [x19, #0x18]
             add     w1, w1, #1
-            str     w1, [x19, #0x28]
-            ldr     x23, [x19, #0x08]
+            str     w1, [x20, #0x28]
+            ldr     x23, [x20, #0x08]
             ; gcrRegs +[x23]
             ldr     w24, [x23, #0x10]
             ldr     x0, [x23, #0x08]
@@ -136,7 +132,7 @@ G_M1799_IG06:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
                        ;; size=40 bbWeight=8 PerfScore 152.00
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
             sxtw    x1, w24
-            mov     x2, x20
+            mov     x2, x19
             ; gcrRegs +[x2]
             bl      CORINFO_HELP_ARRADDR_ST
             ; gcrRegs -[x0 x2]
@@ -151,7 +147,7 @@ G_M1799_IG07:        ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=
 G_M1799_IG08:        ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
             mov     x0, x23
             ; gcrRegs +[x0]
-            mov     x1, x20
+            mov     x1, x19
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
@@ -163,9 +159,9 @@ G_M1799_IG08:        ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
                        ;; size=28 bbWeight=2 PerfScore 13.00
 G_M1799_IG09:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     w0, #1
-            strb    w0, [x20, #0x22]
+            strb    w0, [x19, #0x22]
             mov     x11, x22
-            ldr     x0, [x20, #0x10]
+            ldr     x0, [x19, #0x10]
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
@@ -174,9 +170,9 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
             ; gcrRegs +[x23]
             cbnz    x23, G_M1799_IG17
                        ;; size=32 bbWeight=8 PerfScore 84.00
-G_M1799_IG10:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x20 x23]
-            ldr     x0, [x19, #0x20]
+G_M1799_IG10:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0 x19 x23]
+            ldr     x0, [x20, #0x20]
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
             movk    x1, #0xD1FFAB1E LSL #16
@@ -186,8 +182,8 @@ G_M1799_IG10:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
             blr     x1
             ; gcrRegs +[x1]
             ; gcr arg pop 0
-            mov     x20, x0
-            ; gcrRegs +[x20]
+            mov     x19, x0
+            ; gcrRegs +[x19]
             mov     x23, x1
             ; gcrRegs +[x23]
             ldr     x0, [x21, #0x38]
@@ -203,7 +199,7 @@ G_M1799_IG11:        ; bbWeight=6.40, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
             cbz     x11, G_M1799_IG14
                        ;; size=8 bbWeight=6.40 PerfScore 25.60
 G_M1799_IG12:        ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     w24, [x20, #0x1C]
+            ldr     w24, [x19, #0x1C]
             mov     x0, x23
             ; gcrRegs +[x0]
             ldr     x1, [x11]
@@ -231,7 +227,7 @@ G_M1799_IG15:        ; bbWeight=6.20, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
             sxtw    w0, w24
                        ;; size=4 bbWeight=6.20 PerfScore 3.10
 G_M1799_IG16:        ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
-            str     w0, [x20, #0x1C]
+            str     w0, [x19, #0x1C]
                        ;; size=4 bbWeight=8 PerfScore 8.00
 G_M1799_IG17:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
             mov     x0, x23
@@ -244,32 +240,24 @@ G_M1799_IG17:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M1799_IG30
+            cbz     w0, G_M1799_IG29
                        ;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG18:        ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x19]
-            ldr     x0, [x0, #0x38]
-            ldr     x0, [x0]
-            ldr     x0, [x0, #0x08]
-            cmp     x0, #48
-            ble     G_M1799_IG19
-                       ;; size=24 bbWeight=128 PerfScore 1728.00
-G_M1799_IG19:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x19]
+G_M1799_IG18:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x20]
...

+0 (0.00%) : 532835.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

libraries.crossgen2.linux.arm64.checked.mch

-8 (-1.82%) : 165127.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V06 tmp1         [V06,T00] (  6, 20   )   byref  ->  x25         "impAppendStmt"
 ;  V07 tmp2         [V07,T05] (  6,  8   )   byref  ->  x26        
 ;  V08 tmp3         [V08,T02] (  6, 12   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V09 tmp4         [V09,T11] (  4,  4   )     int  ->  registers  
+;  V09 tmp4         [V09,T11] (  2,  3.96)     int  ->   x0        
 ;  V10 tmp5         [V10,T06] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V11 cse0         [V11,T03] (  4, 11.88)    long  ->  x21         "CSE - aggressive"
 ;  V12 cse1         [V12,T08] (  5,  7   )     int  ->  x23         "CSE - aggressive"
@@ -109,8 +109,8 @@ G_M22994_IG06:        ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
             ; byrRegs -[x26]
             ; gcr arg pop 0
             cmp     w0, #0
-            cset    x21, eq
-            cbnz    w21, G_M22994_IG16
+            cset    x0, eq
+            cbnz    w0, G_M22994_IG16
                        ;; size=56 bbWeight=1.98 PerfScore 36.63
 G_M22994_IG07:        ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
             add     w22, w22, #1
@@ -187,10 +187,8 @@ G_M22994_IG12:        ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             ; gcrRegs -[x0-x1]
             ; byrRegs -[x26]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x0, eq
-            cbnz    w0, G_M22994_IG16
-                       ;; size=68 bbWeight=0.02 PerfScore 0.46
+            cbz     w0, G_M22994_IG16
+                       ;; size=60 bbWeight=0.02 PerfScore 0.44
 G_M22994_IG13:        ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             add     w22, w22, #1
             cmp     w23, w22
@@ -228,7 +226,7 @@ G_M22994_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_unix #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 440, prolog size 40, PerfScore 120.21, instruction count 110, allocated bytes for code 440 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 432, prolog size 40, PerfScore 120.19, instruction count 108, allocated bytes for code 432 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -239,7 +237,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 110 (0x0006e) Actual length = 440 (0x0001b8)
+  Function Length   : 108 (0x0006c) Actual length = 432 (0x0001b0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-0.73%) : 101054.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport

@@ -68,7 +68,6 @@
 ;  V56 cse0         [V56,T04] ( 17, 12.50)   byref  ->  x23         "CSE - aggressive"
 ;  V57 cse1         [V57,T26] (  4,  5   )    long  ->  x26         "CSE - moderate"
 ;  V58 cse2         [V58,T13] (  8,  8   )    long  ->  [fp+0x70]  multi-def "CSE - moderate"
-;  TEMP_01                                   byref  ->  [fp+0x10]
 ;
 ; Lcl frame size = 160
 
@@ -80,19 +79,17 @@ G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x25, x26, [sp, #0xE0]
             stp     x27, x28, [sp, #0xF0]
             mov     fp, sp
-            add     x9, fp, #16
+            add     x9, fp, #120
             movi    v16.16b, #0
             stp     q16, q16, [x9]
-            stp     q16, q16, [x9, #0x20]
-            stp     q16, q16, [x9, #0x40]
-            stp     q16, q16, [x9, #0x60]
-            stp     q16, q16, [x9, #0x80]
+            stp     xzr, xzr, [x9, #0x20]
+            str     xzr, [x9, #0x30]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
             mov     x21, xzr
-                       ;; size=68 bbWeight=1 PerfScore 14.00
+                       ;; size=60 bbWeight=1 PerfScore 12.00
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x21]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
@@ -880,8 +877,8 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ldr     x1, [x11]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x0
-            ; gcrRegs +[x1]
+            str     x0, [fp, #0x50]    // [V32 tmp17]
+            ; GC ptr vars +{V32}
             ldr     w0, [x22, #0x08]
             ; gcrRegs -[x0]
             cmp     w28, w0
@@ -892,11 +889,6 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ; gcrRegs +[x15]
             str     x15, [fp, #0x18]   // [V45 tmp30]
             ; GC ptr vars +{V45}
-            str     x1, [fp, #0x50]    // [V32 tmp17]
-            ; GC ptr vars +{V32}
-            add     x14, x1, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x10]   // [TEMP_01]
             ldr     x0, [fp, #0x68]    // [V12 loc10]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
@@ -904,8 +896,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x3, [x11]
             blr     x3
-            ; gcrRegs -[x1 x15]
-            ; byrRegs -[x14]
+            ; gcrRegs -[x15]
             ldr     x1, [fp, #0x68]    // [V12 loc10]
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -915,18 +906,19 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ; GC ptr vars -{V12}
             blr     x2
             ; gcrRegs -[x1]
-            ldr     x14, [fp, #0x10]   // [TEMP_01]
+            ldr     x11, [fp, #0x50]   // [V32 tmp17]
+            ; gcrRegs +[x11]
+            add     x14, x11, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             adrp    x12, [HIGH RELOC #0xD1FFAB1E]      // CORINFO_HELP_ASSIGN_REF
             add     x12, x12, [LOW RELOC #0xD1FFAB1E]
             ldr     x12, [x12]
+            ; GC ptr vars -{V32}
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x11, [fp, #0x50]   // [V32 tmp17]
-            ; gcrRegs +[x11]
             add     x14, x11, #16
             ; byrRegs +[x14]
             ldr     x15, [fp, #0x18]   // [V45 tmp30]
@@ -934,7 +926,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             adrp    x12, [HIGH RELOC #0xD1FFAB1E]      // CORINFO_HELP_ASSIGN_REF
             add     x12, x12, [LOW RELOC #0xD1FFAB1E]
             ldr     x12, [x12]
-            ; GC ptr vars -{V32 V45}
+            ; GC ptr vars -{V45}
             blr     x12
             ; gcrRegs -[x15]
             ; byrRegs -[x14]
@@ -997,7 +989,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ldr     x2, [x23, #0xD1FFAB1E]
             ; gcrRegs +[x2]
             b       G_M28747_IG21
-                       ;; size=312 bbWeight=0.02 PerfScore 2.02
+                       ;; size=300 bbWeight=0.02 PerfScore 1.95
 G_M28747_IG20:        ; bbWeight=0.02, gcrefRegs=3780000 {x19 x20 x21 x22 x24 x25}, byrefRegs=800000 {x23}, byref
             ; gcrRegs -[x2 x11]
             ldr     x1, [x23, #0xD1FFAB1E]
@@ -1107,7 +1099,7 @@ G_M28747_IG26:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_unix #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2740, prolog size 56, PerfScore 783.17, instruction count 685, allocated bytes for code 2740 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
+; Total bytes of code 2720, prolog size 48, PerfScore 781.10, instruction count 680, allocated bytes for code 2720 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1118,7 +1110,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 685 (0x002ad) Actual length = 2740 (0x000ab4)
+  Function Length   : 680 (0x002a8) Actual length = 2720 (0x000aa0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.68%) : 81351.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -12,7 +12,7 @@
 ;  V00 arg0         [V00,T19] (  5,  5   )     ref  ->   x0         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T10] (  6, 11   )     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T13] (  4,  6   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
 ;  V04 loc1         [V04,T11] (  7, 10.04)     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T20] (  5,  7   )     int  ->  x23         single-def
 ;  V06 loc3         [V06,T03] ( 16, 25.04)     int  ->  x24        
@@ -20,13 +20,13 @@
 ;  V08 loc5         [V08,T08] ( 10, 16   )     ref  ->  x27         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
 ;  V10 loc7         [V10,T12] (  8,  8   )     ref  ->  x26         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T22] (  3,  6   )     int  ->  x20         single-def
 ;  V13 loc10        [V13,T04] (  7, 21   )     int  ->  x21        
 ;  V14 loc11        [V14,T01] (  6, 72   )     ref  ->  x24         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
 ;  V15 loc12        [V15,T00] (  6, 86   )     int  ->   x0        
 ;  V16 loc13        [V16,T23] (  2,  4   )     ref  ->  x24         class-hnd <<unknown class>>
-;  V17 loc14        [V17    ] (  4,  8   )  struct ( 8) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
+;  V17 loc14        [V17    ] (  4,  8   )  struct ( 8) [fp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
 ;  V18 loc15        [V18,T24] (  2,  4   )     ref  ->  x24         class-hnd <<unknown class>>
 ;# V19 OutArgs      [V19    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V20 tmp1         [V20,T05] ( 10, 20   )     ref  ->  x27         class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
@@ -35,7 +35,7 @@
 ;* V23 tmp4         [V23    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;  V24 tmp5         [V24,T14] (  4,  8   )     ref  ->   x0         class-hnd "Inlining Arg" <System.String>
 ;* V25 tmp6         [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.AliasSymbol>
-;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
 ;  V27 tmp8         [V27,T25] (  2,  4   )     ref  ->   x1         "field V22.array (fldOffset=0x0)" P-INDEP
 ;  V28 tmp9         [V28,T26] (  2,  4   )     ref  ->   x1         "field V23.array (fldOffset=0x0)" P-INDEP
 ;  V29 tmp10        [V29,T27] (  2,  4   )     ref  ->   x0         single-def "argument with side effect"
@@ -47,27 +47,27 @@
 ;  V35 tmp16        [V35,T18] (  2,  8   )     ref  ->   x2         "argument with side effect"
 ;  V36 cse0         [V36,T21] (  5,  7   )    long  ->  x21         "CSE - moderate"
 ;  V37 cse1         [V37,T02] (  2, 33   )    long  ->  x23         hoist "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 72
+; Lcl frame size = 56
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0xA0]!
-            stp     x19, x20, [sp, #0x58]
-            stp     x21, x22, [sp, #0x68]
-            stp     x23, x24, [sp, #0x78]
-            stp     x25, x26, [sp, #0x88]
-            str     x27, [sp, #0x98]
+            stp     fp, lr, [sp, #-0x90]!
+            stp     x19, x20, [sp, #0x48]
+            stp     x21, x22, [sp, #0x58]
+            stp     x23, x24, [sp, #0x68]
+            stp     x25, x26, [sp, #0x78]
+            str     x27, [sp, #0x88]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #16
             movi    v16.16b, #0
             stp     q16, q16, [x9]
-            stp     q16, q16, [x9, #0x20]
+            stp     xzr, xzr, [x9, #0x20]
+            str     xzr, [x9, #0x30]
             mov     x19, x1
             ; gcrRegs +[x19]
             mov     x20, x2
             ; gcrRegs +[x20]
-                       ;; size=52 bbWeight=1 PerfScore 10.50
+                       ;; size=56 bbWeight=1 PerfScore 11.50
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             ldrsb   wzr, [x0]
@@ -85,7 +85,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             ldr     x4, [x11]
             blr     x4
             ; byrRegs -[x2]
-            add     x8, fp, #64    // [V03 loc0]
+            add     x8, fp, #48    // [V03 loc0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     wzr, [x0]
@@ -96,7 +96,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x21, [x1]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x2, [x11]
@@ -110,7 +110,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             mov     x22, x0
             ; gcrRegs +[x22]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -125,7 +125,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
                        ;; size=184 bbWeight=1 PerfScore 54.00
 G_M1087_IG03:        ; bbWeight=3.96, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             mov     w2, w24
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -160,7 +160,7 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x25]
             mov     x26, x0
             ; gcrRegs +[x26]
-            add     x8, fp, #40    // [V11 loc8]
+            add     x8, fp, #24    // [V11 loc8]
             mov     x0, x26
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -175,7 +175,7 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs +[x0]
             mov     x27, x0
             ; gcrRegs +[x27]
-            add     x0, fp, #40    // [V11 loc8]
+            add     x0, fp, #24    // [V11 loc8]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -302,7 +302,7 @@ G_M1087_IG07:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}
 G_M1087_IG08:        ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x20]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             mov     w2, w24
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -337,7 +337,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x25]
             mov     x26, x0
             ; gcrRegs +[x26]
-            add     x8, fp, #40    // [V11 loc8]
+            add     x8, fp, #24    // [V11 loc8]
             mov     x0, x26
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -352,7 +352,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs +[x0]
             mov     x27, x0
             ; gcrRegs +[x27]
-            add     x0, fp, #40    // [V11 loc8]
+            add     x0, fp, #24    // [V11 loc8]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -370,16 +370,12 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            add     x14, x27, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x26
             ; gcrRegs +[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x11]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x26
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -388,7 +384,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1 x26]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x27, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -399,7 +395,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             b       G_M1087_IG11
-                       ;; size=200 bbWeight=0.02 PerfScore 1.14
+                       ;; size=192 bbWeight=0.02 PerfScore 1.08
 G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x27] +[x25]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -423,16 +419,12 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            add     x14, x27, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x25
             ; gcrRegs +[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x11]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x25
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -441,7 +433,7 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1 x25]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x27, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -451,7 +443,7 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-                       ;; size=136 bbWeight=0.02 PerfScore 0.84
+                       ;; size=128 bbWeight=0.02 PerfScore 0.78
 G_M1087_IG11:        ; bbWeight=0.04, gcrefRegs=8580000 {x19 x20 x22 x27}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [x22, #0x08]
             cmp     w24, w14
@@ -569,11 +561,11 @@ G_M1087_IG18:        ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1] +[x0]
-            str     x0, [fp, #0x20]    // [V17 loc14]
+            str     x0, [fp, #0x10]    // [V17 loc14]
             adrp    x1, [HIGH RELOC #0xD1FFAB1E]      // <unknown method>
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x1]
-            add     x0, fp, #32    // [V17 loc14]
+            add     x0, fp, #16    // [V17 loc14]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -622,11 +614,11 @@ G_M1087_IG19:        ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1] +[x0]
-            str     x0, [fp, #0x20]    // [V17 loc14]
+            str     x0, [fp, #0x10]    // [V17 loc14]
             adrp    x1, [HIGH RELOC #0xD1FFAB1E]      // <unknown method>
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x1]
-            add     x0, fp, #32    // [V17 loc14]
+            add     x0, fp, #16    // [V17 loc14]
             ; gcrRegs -[x0]
...

-4 (-0.15%) : 165507.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -35,13 +35,13 @@
 ;  V23 tmp2         [V23,T55] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V24 tmp3         [V24,T46] (  3,  2   )     int  ->  x26        
 ;  V25 tmp4         [V25,T22] (  4, 16   )     int  ->  x25         "impSpillLclRefs"
-;  V26 tmp5         [V26,T33] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V26 tmp5         [V26,T32] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V27 tmp6         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp7         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V29 tmp8         [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V30 tmp9         [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <<unknown class>>
 ;  V31 tmp10        [V31,T54] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V32 tmp11        [V32,T29] (  2,  0.16)   ubyte  ->   x0         "Inline return value spill temp"
+;* V32 tmp11        [V32,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V33 tmp12        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V34 tmp13        [V34,T14] (  6, 24   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V35 tmp14        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,18 +57,18 @@
 ;  V45 tmp24        [V45,T09] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V46 tmp25        [V46,T10] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V47 tmp26        [V47,T11] (  4, 32   )     ref  ->  [fp+0x30]  "argument with side effect"
-;  V48 tmp27        [V48,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V49 tmp28        [V49,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V50 tmp29        [V50,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V51 tmp30        [V51,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V52 tmp31        [V52,T38] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V53 tmp32        [V53,T39] (  2,  8   )     ref  ->   x1         "argument with side effect"
-;  V54 tmp33        [V54,T40] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
+;  V48 tmp27        [V48,T33] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V49 tmp28        [V49,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V50 tmp29        [V50,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V51 tmp30        [V51,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V52 tmp31        [V52,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V53 tmp32        [V53,T38] (  2,  8   )     ref  ->   x1         "argument with side effect"
+;  V54 tmp33        [V54,T39] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
 ;  V55 tmp34        [V55,T20] (  4, 16   )     ref  ->  [fp+0x20]  "argument with side effect"
 ;  V56 tmp35        [V56,T21] (  4, 16   )     ref  ->   x1         "argument with side effect"
-;  V57 tmp36        [V57,T30] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
-;  V58 tmp37        [V58,T31] (  4,  8   )     ref  ->   x3         "argument with side effect"
-;  V59 tmp38        [V59,T32] (  4,  8   )     ref  ->   x0         "argument with side effect"
+;  V57 tmp36        [V57,T29] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
+;  V58 tmp37        [V58,T30] (  4,  8   )     ref  ->   x3         "argument with side effect"
+;  V59 tmp38        [V59,T31] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V60 cse0         [V60,T13] (  8, 28   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
 ;  V61 cse1         [V61,T00] (  6, 71.28)    long  ->  [fp+0x70]  spill-single-def "CSE - aggressive"
 ;  V62 cse2         [V62,T26] (  4, 11.88)    long  ->  [fp+0x68]  spill-single-def "CSE - moderate"
@@ -478,14 +478,11 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ldr     x11, [x20, x1]
             ; gcrRegs +[x11]
             cmp     x0, x11
-            cset    x0, eq
-            ; gcrRegs -[x0]
-            cbz     w0, G_M58711_IG21
+            bne     G_M58711_IG21
             ldr     x1, [fp, #0x10]    // [V67 cse7]
             ; byrRegs +[x1]
             ldr     x2, [fp, #0x58]    // [V64 cse4]
             ldr     x0, [x1, x2]
-            ; gcrRegs +[x0]
             ldr     x11, [fp, #0x40]   // [V71 cse11]
             ; gcrRegs -[x11]
             ldr     wzr, [x0]
@@ -513,7 +510,7 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ; gcr arg pop 0
             cbnz    w0, G_M58711_IG20
             b       G_M58711_IG21
-                       ;; size=296 bbWeight=0.08 PerfScore 8.96
+                       ;; size=292 bbWeight=0.08 PerfScore 8.92
 G_M58711_IG19:        ; bbWeight=0.08, gcVars=0000000000000014 {V19 V67}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars +{V02 V04 V19 V67}
             ldr     x1, [fp, #0x10]    // [V67 cse7]
@@ -1134,7 +1131,7 @@ G_M58711_IG55:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             brk_unix #0
                        ;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2628, prolog size 40, PerfScore 2218.63, instruction count 657, allocated bytes for code 2628 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2624, prolog size 40, PerfScore 2218.59, instruction count 656, allocated bytes for code 2624 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1145,7 +1142,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 657 (0x00291) Actual length = 2628 (0x000a44)
+  Function Length   : 656 (0x00290) Actual length = 2624 (0x000a40)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.15%) : 177787.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -34,7 +34,7 @@
 ;  V22 tmp2         [V22,T55] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V23 tmp3         [V23,T46] (  3,  2   )     int  ->  x26        
 ;  V24 tmp4         [V24,T22] (  4, 16   )     int  ->  x25         "impSpillLclRefs"
-;  V25 tmp5         [V25,T33] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V25 tmp5         [V25,T32] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V26 tmp6         [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V27 tmp7         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp8         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
 ;  V30 tmp10        [V30,T53] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V31 tmp11        [V31,T56] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V32 tmp12        [V32,T54] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V33 tmp13        [V33,T29] (  2,  0.16)   ubyte  ->   x0         "Inline return value spill temp"
+;* V33 tmp13        [V33,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V34 tmp14        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V35 tmp15        [V35,T14] (  6, 24   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V36 tmp16        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -58,18 +58,18 @@
 ;  V46 tmp26        [V46,T09] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V47 tmp27        [V47,T10] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V48 tmp28        [V48,T11] (  4, 32   )     ref  ->  [fp+0x30]  "argument with side effect"
-;  V49 tmp29        [V49,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V50 tmp30        [V50,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V51 tmp31        [V51,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V52 tmp32        [V52,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V53 tmp33        [V53,T38] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V54 tmp34        [V54,T39] (  2,  8   )     ref  ->   x1         "argument with side effect"
-;  V55 tmp35        [V55,T40] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
+;  V49 tmp29        [V49,T33] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V50 tmp30        [V50,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V51 tmp31        [V51,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V52 tmp32        [V52,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V53 tmp33        [V53,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V54 tmp34        [V54,T38] (  2,  8   )     ref  ->   x1         "argument with side effect"
+;  V55 tmp35        [V55,T39] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
 ;  V56 tmp36        [V56,T20] (  4, 16   )     ref  ->  [fp+0x20]  "argument with side effect"
 ;  V57 tmp37        [V57,T21] (  4, 16   )     ref  ->   x1         "argument with side effect"
-;  V58 tmp38        [V58,T30] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
-;  V59 tmp39        [V59,T31] (  4,  8   )     ref  ->   x3         "argument with side effect"
-;  V60 tmp40        [V60,T32] (  4,  8   )     ref  ->   x0         "argument with side effect"
+;  V58 tmp38        [V58,T29] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
+;  V59 tmp39        [V59,T30] (  4,  8   )     ref  ->   x3         "argument with side effect"
+;  V60 tmp40        [V60,T31] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V61 cse0         [V61,T13] (  8, 28   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
 ;  V62 cse1         [V62,T00] (  6, 71.28)    long  ->  [fp+0x70]  spill-single-def "CSE - aggressive"
 ;  V63 cse2         [V63,T26] (  4, 11.88)    long  ->  [fp+0x68]  spill-single-def "CSE - moderate"
@@ -479,14 +479,11 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ldr     x11, [x20, x1]
             ; gcrRegs +[x11]
             cmp     x0, x11
-            cset    x0, eq
-            ; gcrRegs -[x0]
-            cbz     w0, G_M58711_IG21
+            bne     G_M58711_IG21
             ldr     x1, [fp, #0x10]    // [V68 cse7]
             ; byrRegs +[x1]
             ldr     x2, [fp, #0x58]    // [V65 cse4]
             ldr     x0, [x1, x2]
-            ; gcrRegs +[x0]
             ldr     x11, [fp, #0x40]   // [V72 cse11]
             ; gcrRegs -[x11]
             ldr     wzr, [x0]
@@ -514,7 +511,7 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ; gcr arg pop 0
             cbnz    w0, G_M58711_IG20
             b       G_M58711_IG21
-                       ;; size=296 bbWeight=0.08 PerfScore 8.96
+                       ;; size=292 bbWeight=0.08 PerfScore 8.92
 G_M58711_IG19:        ; bbWeight=0.08, gcVars=0000000000000014 {V18 V68}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars +{V02 V04 V18 V68}
             ldr     x1, [fp, #0x10]    // [V68 cse7]
@@ -1156,7 +1153,7 @@ G_M58711_IG55:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=84 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2676, prolog size 40, PerfScore 2218.63, instruction count 669, allocated bytes for code 2676 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2672, prolog size 40, PerfScore 2218.59, instruction count 668, allocated bytes for code 2672 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1167,7 +1164,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 669 (0x0029d) Actual length = 2676 (0x000a74)
+  Function Length   : 668 (0x0029c) Actual length = 2672 (0x000a70)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.10%) : 101327.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

@@ -54,7 +54,7 @@
 ;  V42 tmp8         [V42,T10] (  6, 48   )     ref  ->  [fp+0x38]  class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V43 tmp9         [V43    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp10        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-;  V45 tmp11        [V45,T41] (  2,  0.16)   ubyte  ->   x1         "Inline return value spill temp"
+;* V45 tmp11        [V45,T42] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V46 tmp12        [V46,T16] (  4, 32   )     ref  ->  [fp+0x30]  class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V47 tmp13        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
 ;  V48 tmp14        [V48,T30] (  4, 16   )   ubyte  ->   x2         "Inline return value spill temp"
@@ -100,7 +100,7 @@
 ;* V88 tmp54        [V88,T57] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;  V89 tmp55        [V89,T45] (  2,  8   )     int  ->   x1         "argument with side effect"
 ;  V90 cse0         [V90,T04] ( 14, 72   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
-;  V91 cse1         [V91,T42] (  4,  8   )     int  ->  [fp+0x74]  spill-single-def "CSE - moderate"
+;  V91 cse1         [V91,T41] (  4,  8   )     int  ->  [fp+0x74]  spill-single-def "CSE - moderate"
 ;  V92 cse2         [V92,T15] (  9, 38   )    long  ->  x27         "CSE - aggressive"
 ;  V93 cse3         [V93,T09] ( 10, 56   )    long  ->  [fp+0x68]  multi-def "CSE - aggressive"
 ;  V94 cse4         [V94,T02] ( 18, 72   )    long  ->  [fp+0x60]  multi-def "CSE - aggressive"
@@ -805,10 +805,9 @@ G_M30062_IG27:        ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byref
             blr     x1
             ; gcrRegs -[x0]
             cmp     w0, #32
-            cset    x1, ne
-            cbz     w1, G_M30062_IG34
+            beq     G_M30062_IG34
             b       G_M30062_IG38
-                       ;; size=260 bbWeight=0.08 PerfScore 7.72
+                       ;; size=256 bbWeight=0.08 PerfScore 7.68
 G_M30062_IG28:        ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=2200000 {x21 x25}, byref, isz
             ldr     x1, [fp, #0x78]    // [V90 cse0]
             add     x0, fp, #0xD1FFAB1E    // [V19 loc12]
@@ -1420,7 +1419,7 @@ G_M30062_IG71:        ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
             brk_unix #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3844, prolog size 64, PerfScore 3960.13, instruction count 961, allocated bytes for code 3844 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 3840, prolog size 64, PerfScore 3960.09, instruction count 960, allocated bytes for code 3840 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1431,7 +1430,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 961 (0x003c1) Actual length = 3844 (0x000f04)
+  Function Length   : 960 (0x003c0) Actual length = 3840 (0x000f00)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.linux.arm64.checked.mch

-20 (-1.06%) : 87058.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 arg0         [V00,T29] (  7,  5.50)     ref  ->  x21         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T14] (  6, 11   )     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T15] (  6, 10   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
 ;  V04 loc1         [V04,T20] (  7, 10.04)     ref  ->  x21         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T31] (  5,  7   )     int  ->  x22         single-def
 ;  V06 loc3         [V06,T05] ( 16, 25.04)     int  ->  x23        
@@ -19,7 +19,7 @@
 ;  V08 loc5         [V08,T10] ( 10, 16   )     ref  ->  x26         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T33] (  3,  6   )     int  ->  x24         single-def
 ;  V13 loc10        [V13,T06] (  9, 25   )     int  ->  x20        
 ;  V14 loc11        [V14,T00] ( 10,106   )     ref  ->  x22         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
@@ -68,10 +68,10 @@
 ;* V57 tmp38        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;  V58 tmp39        [V58,T28] (  2,  8   )     ref  ->   x2         class-hnd "Inlining Arg" <<unknown class>>
 ;  V59 tmp40        [V59,T19] (  3, 12   )     ref  ->   x0         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-;  V60 tmp41        [V60    ] (  2,  2   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
-;  V61 tmp42        [V61    ] (  4,  4   )     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
-;  V62 tmp43        [V62    ] (  2,  2   )     int  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
-;  V63 tmp44        [V63    ] (  2,  2   )     int  ->  [fp+0x34]  do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
+;  V60 tmp41        [V60    ] (  2,  2   )     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
+;  V61 tmp42        [V61    ] (  4,  4   )     ref  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
+;  V62 tmp43        [V62    ] (  2,  2   )     int  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
+;  V63 tmp44        [V63    ] (  2,  2   )     int  ->  [fp+0x24]  do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
 ;* V64 tmp45        [V64    ] (  0,  0   )     ref  ->  zero-ref    "field V17.array (fldOffset=0x0)" P-INDEP
 ;* V65 tmp46        [V65    ] (  0,  0   )     ref  ->  zero-ref    "field V26.array (fldOffset=0x0)" P-INDEP
 ;* V66 tmp47        [V66    ] (  0,  0   )     ref  ->  zero-ref    "field V29.array (fldOffset=0x0)" P-INDEP
@@ -86,29 +86,27 @@
 ;  V75 tmp56        [V75,T16] (  6, 12   )     ref  ->   x0         "argument with side effect"
 ;  V76 tmp57        [V76,T17] (  6, 12   )     ref  ->   x0         "argument with side effect"
 ;  V77 cse0         [V77,T01] (  7, 88   )    long  ->  x23         "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 64
+; Lcl frame size = 48
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x90]!
-            stp     x19, x20, [sp, #0x50]
-            stp     x21, x22, [sp, #0x60]
-            stp     x23, x24, [sp, #0x70]
-            stp     x25, x26, [sp, #0x80]
+            stp     fp, lr, [sp, #-0x80]!
+            stp     x19, x20, [sp, #0x40]
+            stp     x21, x22, [sp, #0x50]
+            stp     x23, x24, [sp, #0x60]
+            stp     x25, x26, [sp, #0x70]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #16
             movi    v16.16b, #0
             stp     q16, q16, [x9]
             stp     xzr, xzr, [x9, #0x20]
-            str     xzr, [x9, #0x30]
             mov     x21, x0
             ; gcrRegs +[x21]
             mov     x19, x1
             ; gcrRegs +[x19]
             mov     x20, x2
             ; gcrRegs +[x20]
-                       ;; size=56 bbWeight=1 PerfScore 11.00
+                       ;; size=52 bbWeight=1 PerfScore 10.00
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ldrsb   wzr, [x21]
             add     x22, x21, #40
@@ -179,7 +177,7 @@ G_M1087_IG05:        ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=4
 G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ; byrRegs -[x22]
-            add     x8, fp, #56    // [V03 loc0]
+            add     x8, fp, #40    // [V03 loc0]
             mov     x0, x23
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this
@@ -189,7 +187,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ldr     wzr, [x0]
             blr     x1
             ; gcrRegs -[x0 x23]
-            ldrsw   x1, [fp, #0x38]    // [V03 loc0]
+            ldrsw   x1, [fp, #0x28]    // [V03 loc0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -197,7 +195,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ; gcrRegs +[x0]
             mov     x21, x0
             ; gcrRegs +[x21]
-            ldr     w0, [fp, #0x38]    // [V03 loc0]
+            ldr     w0, [fp, #0x28]    // [V03 loc0]
             ; gcrRegs -[x0]
             sub     w22, w0, #1
             mov     w23, wzr
@@ -207,7 +205,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ble     G_M1087_IG17
                        ;; size=84 bbWeight=1 PerfScore 23.00
 G_M1087_IG07:        ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
-            add     x0, fp, #56    // [V03 loc0]
+            add     x0, fp, #40    // [V03 loc0]
             mov     w2, w23
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -237,7 +235,7 @@ G_M1087_IG08:        ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x8, x0
             bne     G_M1087_IG45
-            add     x8, fp, #32    // [V11 loc8]
+            add     x8, fp, #16    // [V11 loc8]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -246,7 +244,7 @@ G_M1087_IG08:        ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x28]    // [V61 tmp42]
+            ldr     x0, [fp, #0x18]    // [V61 tmp42]
             ; gcrRegs +[x0]
             cbnz    x0, G_M1087_IG09
             mov     x25, xzr
@@ -396,7 +394,7 @@ G_M1087_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M1087_IG17:        ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x20]
-            add     x0, fp, #56    // [V03 loc0]
+            add     x0, fp, #40    // [V03 loc0]
             mov     w2, w23
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -426,7 +424,7 @@ G_M1087_IG18:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x8, x0
             bne     G_M1087_IG45
-            add     x8, fp, #32    // [V11 loc8]
+            add     x8, fp, #16    // [V11 loc8]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -435,7 +433,7 @@ G_M1087_IG18:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x28]    // [V61 tmp42]
+            ldr     x0, [fp, #0x18]    // [V61 tmp42]
             ; gcrRegs +[x0]
             cbnz    x0, G_M1087_IG19
             mov     x25, xzr
@@ -476,9 +474,6 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15 x25]
             ; byrRegs -[x14]
-            add     x14, x26, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -486,7 +481,6 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x24
             ; gcrRegs +[x1]
             ldr     x2, [x0]
@@ -494,7 +488,7 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             ldr     x2, [x2, #0x38]
             blr     x2
             ; gcrRegs -[x1 x24]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x26, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -502,7 +496,7 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             b       G_M1087_IG23
-                       ;; size=104 bbWeight=0.02 PerfScore 0.57
+                       ;; size=96 bbWeight=0.02 PerfScore 0.51
 G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x26] +[x24]
             movz    x0, #0xD1FFAB1E
@@ -518,9 +512,6 @@ G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             str     x0, [x26, #0x28]
-            add     x14, x26, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -528,7 +519,6 @@ G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x24
             ; gcrRegs +[x1]
             ldr     x2, [x0]
@@ -536,14 +526,14 @@ G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x2, [x2, #0x38]
             blr     x2
             ; gcrRegs -[x1 x24]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x26, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-                       ;; size=104 bbWeight=0.02 PerfScore 0.56
+                       ;; size=96 bbWeight=0.02 PerfScore 0.50
 G_M1087_IG23:        ; bbWeight=0.04, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [x21, #0x08]
             cmp     w23, w14
@@ -775,11 +765,11 @@ G_M1087_IG40:        ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
                        ;; size=12 bbWeight=4 PerfScore 8.00
 G_M1087_IG41:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x19 x21]
-            ldp     x25, x26, [sp, #0x80]
-            ldp     x23, x24, [sp, #0x70]
-            ldp     x21, x22, [sp, #0x60]
-            ldp     x19, x20, [sp, #0x50]
-            ldp     fp, lr, [sp], #0x90
+            ldp     x25, x26, [sp, #0x70]
+            ldp     x23, x24, [sp, #0x60]
+            ldp     x21, x22, [sp, #0x50]
+            ldp     x19, x20, [sp, #0x40]
+            ldp     fp, lr, [sp], #0x80
             ret     lr
                        ;; size=24 bbWeight=1 PerfScore 6.00
 G_M1087_IG42:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -830,7 +820,7 @@ G_M1087_IG47:        ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, by
             brk_unix #0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1892, prolog size 44, PerfScore 1114.05, instruction count 473, allocated bytes for code 1892 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
+; Total bytes of code 1872, prolog size 40, PerfScore 1112.93, instruction count 468, allocated bytes for code 1872 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -841,7 +831,7 @@ Unwind Info:
...

-32 (-0.78%) : 109400.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport

@@ -14,15 +14,15 @@
 ;  V03 loc1         [V03,T42] (  7,  5.02)     ref  ->  x23         class-hnd exact single-def <<unknown class>>
 ;  V04 loc2         [V04,T51] (  4,  3   )     ref  ->  x27         class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
 ;  V05 loc3         [V05,T20] ( 14, 11.00)     ref  ->  x28         class-hnd exact single-def <<unknown class>>
-;  V06 loc4         [V06    ] (  5,  5.50)  struct ( 8) [fp+0xC8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+;  V06 loc4         [V06    ] (  5,  5.50)  struct ( 8) [fp+0xB8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
 ;* V07 loc5         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Threading.CancellationToken>
 ;  V08 loc6         [V08,T41] (  5,  5.50)     int  ->  x26         single-def
-;  V09 loc7         [V09,T04] ( 12, 18.52)     int  ->  [fp+0xC4] 
-;  V10 loc8         [V10    ] ( 12, 14   )  struct (24) [fp+0xA8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+;  V09 loc7         [V09,T04] ( 12, 18.52)     int  ->  [fp+0xB4] 
+;  V10 loc8         [V10    ] ( 12, 14   )  struct (24) [fp+0x98]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
 ;  V11 loc9         [V11,T14] ( 12, 12   )     ref  ->  x21         must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
 ;* V12 loc10        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-;  V13 loc11        [V13,T21] ( 10, 10   )     ref  ->  [fp+0x88]  class-hnd <<unknown class>>
-;  V14 loc12        [V14,T37] (  6,  6   )     ref  ->  [fp+0x80]  class-hnd <<unknown class>>
+;  V13 loc11        [V13,T21] ( 10, 10   )     ref  ->  [fp+0x78]  class-hnd <<unknown class>>
+;  V14 loc12        [V14,T37] (  6,  6   )     ref  ->  [fp+0x70]  class-hnd <<unknown class>>
 ;# V15 OutArgs      [V15    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V16 tmp1         [V16,T24] (  5, 10   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V17 tmp2         [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -38,14 +38,14 @@
 ;  V27 tmp12        [V27,T62] (  2,  2   )     ref  ->   x2         class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
 ;  V28 tmp13        [V28,T52] (  3,  3   )     ref  ->  x28         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V29 tmp14        [V29,T15] (  6, 12   )     ref  ->  registers   class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-;  V30 tmp15        [V30,T06] (  8, 16   )     ref  ->  [fp+0x78]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+;  V30 tmp15        [V30,T06] (  8, 16   )     ref  ->  [fp+0x68]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
 ;  V31 tmp16        [V31,T07] (  8, 16   )     ref  ->   x0         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V32 tmp17        [V32    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V33 tmp18        [V33,T02] ( 10, 20   )     ref  ->   x2         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V34 tmp19        [V34    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V35 tmp20        [V35,T38] (  6,  6   )     ref  ->   x2        
-;  V36 tmp21        [V36,T00] ( 16, 32   )     ref  ->  [fp+0x70]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-;  V37 tmp22        [V37,T03] ( 10, 20   )     ref  ->  [fp+0x68]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+;  V36 tmp21        [V36,T00] ( 16, 32   )     ref  ->  [fp+0x60]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+;  V37 tmp22        [V37,T03] ( 10, 20   )     ref  ->  [fp+0x58]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
 ;  V38 tmp23        [V38,T53] (  3,  3   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V39 tmp24        [V39,T54] (  3,  3   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;* V40 tmp25        [V40    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Threading.CancellationToken>
@@ -54,9 +54,9 @@
 ;* V43 tmp28        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;* V44 tmp29        [V44    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
 ;* V45 tmp30        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;  V46 tmp31        [V46,T46] (  5,  5   )   byref  ->  [fp+0x60]  spill-single-def "Inlining Arg"
-;  V47 tmp32        [V47,T56] (  4,  2   )     ref  ->  [fp+0x58]  class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;  V48 tmp33        [V48,T57] (  4,  2   )     ref  ->  [fp+0x50]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+;  V46 tmp31        [V46,T46] (  5,  5   )   byref  ->  [fp+0x50]  spill-single-def "Inlining Arg"
+;  V47 tmp32        [V47,T56] (  4,  2   )     ref  ->  [fp+0x48]  class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+;  V48 tmp33        [V48,T57] (  4,  2   )     ref  ->  [fp+0x40]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
 ;  V49 tmp34        [V49,T63] (  2,  2   )     ref  ->   x1         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V50 tmp35        [V50,T58] (  4,  2   )     int  ->  x26         "Inline return value spill temp"
 ;  V51 tmp36        [V51,T64] (  2,  2   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -64,7 +64,7 @@
 ;* V53 tmp38        [V53,T78] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V54 tmp39        [V54,T47] (  4,  4   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;  V55 tmp40        [V55,T59] (  4,  2   )     int  ->  x26         "Inline stloc first use temp"
-;  V56 tmp41        [V56,T11] ( 15, 14.02)     ref  ->  [fp+0x48]  class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V56 tmp41        [V56,T11] ( 15, 14.02)     ref  ->  [fp+0x38]  class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V57 tmp42        [V57,T12] ( 16, 14   )     ref  ->   x3         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V58 tmp43        [V58,T81] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V59 tmp44        [V59,T26] (  6,  9   )     ref  ->   x1         "CASTCLASS eval op1"
@@ -74,27 +74,27 @@
 ;  V63 tmp48        [V63,T28] (  6,  8   )     ref  ->  registers   class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V64 tmp49        [V64,T31] (  4,  8   )     ref  ->   x4         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;* V65 tmp50        [V65    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-;  V66 tmp51        [V66    ] ( 11, 10.02)  struct (24) [fp+0x90]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+;  V66 tmp51        [V66    ] ( 11, 10.02)  struct (24) [fp+0x80]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V67 tmp52        [V67    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V68 tmp53        [V68    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-;  V69 tmp54        [V69,T16] (  6, 12   )     ref  ->  [fp+0x40]  class-hnd exact "Inlining Arg" <<unknown class>>
-;  V70 tmp55        [V70,T32] (  4,  8   )     ref  ->  [fp+0x38]  class-hnd "Inlining Arg" <System.Object[]>
+;  V69 tmp54        [V69,T16] (  6, 12   )     ref  ->  [fp+0x30]  class-hnd exact "Inlining Arg" <<unknown class>>
+;  V70 tmp55        [V70,T32] (  4,  8   )     ref  ->  [fp+0x28]  class-hnd "Inlining Arg" <System.Object[]>
 ;* V71 tmp56        [V71    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V72 tmp57        [V72,T22] ( 10, 10   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V73 tmp58        [V73,T82] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V74 tmp59        [V74,T17] (  6, 12   )     ref  ->   x1         "CASTCLASS eval op1"
 ;  V75 tmp60        [V75,T30] (  6,  8   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V76 tmp61        [V76,T05] ( 10, 18   )     ref  ->  [fp+0x30]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V76 tmp61        [V76,T05] ( 10, 18   )     ref  ->  [fp+0x20]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V77 tmp62        [V77,T33] (  4,  8   )     ref  ->   x3         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;  V78 tmp63        [V78,T34] (  4,  8   )     ref  ->   x0         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
 ;  V79 tmp64        [V79,T83] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V80 tmp65        [V80,T01] ( 12, 24   )     ref  ->  [fp+0x28]  class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V81 tmp66        [V81,T35] (  4,  8   )     ref  ->  [fp+0x20]  class-hnd exact "Inlining Arg" <System.String>
+;  V80 tmp65        [V80,T01] ( 12, 24   )     ref  ->  [fp+0x18]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V81 tmp66        [V81,T35] (  4,  8   )     ref  ->  [fp+0x10]  class-hnd exact "Inlining Arg" <System.String>
 ;  V82 tmp67        [V82,T18] (  6, 12   )     ref  ->  x15         class-hnd exact "Inlining Arg" <<unknown class>>
 ;  V83 tmp68        [V83,T36] (  8,  7.69)     ref  ->   x3         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
 ;  V84 tmp69        [V84,T25] ( 10,  9.53)     int  ->   x2         "Inline stloc first use temp"
 ;  V85 tmp70        [V85,T29] (  6,  8.00)     ref  ->   x1         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-;  V86 tmp71        [V86    ] (  5,  5.50)     ref  ->  [fp+0xC8]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+;  V86 tmp71        [V86    ] (  5,  5.50)     ref  ->  [fp+0xB8]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
 ;* V87 tmp72        [V87,T79] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._source (fldOffset=0x0)" P-INDEP
 ;* V88 tmp73        [V88    ] (  0,  0   )     ref  ->  zero-ref    "field V40._source (fldOffset=0x0)" P-INDEP
 ;* V89 tmp74        [V89    ] (  0,  0   )     ref  ->  zero-ref    "field V41._node (fldOffset=0x0)" P-INDEP
@@ -119,33 +119,27 @@
 ;  V108 cse4        [V108,T10] ( 14, 14.50)    long  ->  x22         "CSE - aggressive"
 ;  V109 cse5        [V109,T13] ( 18, 13   )    long  ->  x25         "CSE - moderate"
 ;  V110 rat0        [V110,T77] (  2,  1   )    long  ->   x0         "Spilling to split statement for tree"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 192
+; Lcl frame size = 176
 
 G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #0xD1FFAB1E]!
-            stp     x19, x20, [sp, #0xD0]
-            stp     x21, x22, [sp, #0xE0]
-            stp     x23, x24, [sp, #0xF0]
-            stp     x25, x26, [sp, #0xD1FFAB1E]
+            stp     x19, x20, [sp, #0xC0]
+            stp     x21, x22, [sp, #0xD0]
+            stp     x23, x24, [sp, #0xE0]
+            stp     x25, x26, [sp, #0xF0]
             stp     x27, x28, [sp, #0xD1FFAB1E]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #128
             movi    v16.16b, #0
             stp     q16, q16, [x9]
             stp     q16, q16, [x9, #0x20]
-            stp     q16, q16, [x9, #0x40]
-            stp     q16, q16, [x9, #0x60]
-            stp     q16, q16, [x9, #0x80]
-            stp     xzr, xzr, [x9, #0xA0]
-            str     xzr, [x9, #0xB0]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
             mov     x21, xzr
-                       ;; size=76 bbWeight=1 PerfScore 16.00
+                       ;; size=56 bbWeight=1 PerfScore 11.00
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x21]
             movz    x0, #0xD1FFAB1E
@@ -379,11 +373,11 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ldrsb   wzr, [x26]
             add     x2, x26, #48
             ; byrRegs +[x2]
-            str     x2, [fp, #0x60]    // [V46 tmp31]
+            str     x2, [fp, #0x50]    // [V46 tmp31]
             ; GC ptr vars +{V46}
             ldr     x3, [x2]
             ; gcrRegs +[x3]
-            str     x3, [fp, #0x58]    // [V47 tmp32]
+            str     x3, [fp, #0x48]    // [V47 tmp32]
             ; GC ptr vars +{V47}
             cbnz    x3, G_M28747_IG12
             ldr     x0, [x26, #0x18]
@@ -396,7 +390,7 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; byrRegs -[x2]
             mov     x2, x0
             ; gcrRegs +[x2]
-            str     x2, [fp, #0x50]    // [V48 tmp33]
+            str     x2, [fp, #0x40]    // [V48 tmp33]
             ; GC ptr vars +{V48}
             cbz     x2, G_M28747_IG12
             mov     x0, x26
@@ -411,7 +405,7 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             sxtw    w2, w0
             mov     x1, x26
             ; gcrRegs +[x1]
-            ldr     x0, [fp, #0x50]    // [V48 tmp33]
+            ldr     x0, [fp, #0x40]    // [V48 tmp33]
             ; gcrRegs +[x0]
             ldr     x3, [x0]
             ldr     x3, [x3, #0x68]
@@ -421,7 +415,7 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x1 x26]
             mov     x1, x0
             ; gcrRegs +[x1]
-            ldr     x26, [fp, #0x60]   // [V46 tmp31]
+            ldr     x26, [fp, #0x50]   // [V46 tmp31]
             ; byrRegs +[x26]
             cbz     x26, G_M28747_IG72
             mov     x0, x26
@@ -436,19 +430,19 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             mov     x26, x3
             ; gcrRegs +[x26]
             ; byrRegs -[x26]
-            str     x26, [fp, #0x58]   // [V47 tmp32]
+            str     x26, [fp, #0x48]   // [V47 tmp32]
             ; GC ptr vars +{V47}
                        ;; size=300 bbWeight=0.50 PerfScore 43.00
 G_M28747_IG12:        ; bbWeight=0.50, gcVars=00000000000000000100000000000000 {V47}, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0 x3 x26]
             ; GC ptr vars -{V46}
-            ldr     x3, [fp, #0x58]    // [V47 tmp32]
+            ldr     x3, [fp, #0x48]    // [V47 tmp32]
             ; gcrRegs +[x3]
-            str     x3, [fp, #0xC8]    // [V86 tmp71]
-            ldr     x0, [fp, #0xC8]    // [V86 tmp71]
+            str     x3, [fp, #0xB8]    // [V86 tmp71]
+            ldr     x0, [fp, #0xB8]    // [V86 tmp71]
             ; gcrRegs +[x0]
             cbz     x0, G_M28747_IG15
-            ldr     x0, [fp, #0xC8]    // [V86 tmp71]
+            ldr     x0, [fp, #0xB8]    // [V86 tmp71]
             ldr     x0, [x0, #0x18]
             mov     x1, x0
             ; gcrRegs +[x1]
@@ -487,8 +481,8 @@ G_M28747_IG16:        ; bbWeight=0.50, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
             ble     G_M28747_IG41
                        ;; size=24 bbWeight=0.50 PerfScore 3.25
 G_M28747_IG17:        ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
-            add     x0, fp, #200   // [V06 loc4]
-            str     w3, [fp, #0xC4]    // [V09 loc7]
+            add     x0, fp, #184   // [V06 loc4]
+            str     w3, [fp, #0xB4]    // [V09 loc7]
             mov     w2, w3
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -499,7 +493,7 @@ G_M28747_IG17:        ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
             ldr     x4, [x4]
             blr     x4
             ; gcrRegs +[x0]
-            add     x8, fp, #168   // [V10 loc8]
+            add     x8, fp, #152   // [V10 loc8]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax:get_ImportsClauses():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]:this
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -539,7 +533,7 @@ G_M28747_IG18:        ; bbWeight=1.98, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
 G_M28747_IG19:        ; bbWeight=1.98, gcrefRegs=18980004 {x2 x19 x20 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
             mov     x21, x2
             ; gcrRegs +[x21]
-            ldr     x3, [fp, #0xB0]    // [V10 loc8+0x08]
+            ldr     x3, [fp, #0xA0]    // [V10 loc8+0x08]
             ; gcrRegs +[x3]
             cbz     x3, G_M28747_IG77
             ldr     x4, [x3, #0x18]
@@ -578,7 +572,7 @@ G_M28747_IG22:        ; bbWeight=1.98, gcrefRegs=18B80004 {x2 x19 x20 x21 x23 x2
                        ;; size=8 bbWeight=1.98 PerfScore 2.97
 G_M28747_IG23:        ; bbWeight=1.98, gcrefRegs=18B80008 {x3 x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2 x4] +[x3]
-            ldr     w0, [fp, #0xA8]    // [V10 loc8]
+            ldr     w0, [fp, #0x98]    // [V10 loc8]
             cbz     w0, G_M28747_IG77
             mov     x0, x3
             ; gcrRegs +[x0]
@@ -620,15 +614,15 @@ G_M28747_IG27:        ; bbWeight=1.98, gcrefRegs=18B80010 {x4 x19 x20 x21 x23 x2
             ; gcrRegs -[x2]
             ldrsb   wzr, [x4]
             ldr     w2, [x4, #0x20]
-            str     x4, [fp, #0x48]    // [V56 tmp41]
+            str     x4, [fp, #0x38]    // [V56 tmp41]
             ; GC ptr vars +{V56}
             mov     x3, x4
             ; gcrRegs +[x3]
...

-8 (-0.72%) : 266853.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T21] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -303,10 +303,8 @@ G_M10809_IG19:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG26
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG26
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG20:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -538,7 +536,7 @@ G_M10809_IG27:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_unix #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1112, prolog size 36, PerfScore 149.74, instruction count 278, allocated bytes for code 1112 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1104, prolog size 36, PerfScore 149.72, instruction count 276, allocated bytes for code 1104 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -549,7 +547,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 278 (0x00116) Actual length = 1112 (0x000458)
+  Function Length   : 276 (0x00114) Actual length = 1104 (0x000450)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 214376.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable1[int]]:TrimExcess(int):this (FullOpts)

@@ -10,9 +10,9 @@
 ;
 ;  V00 this         [V00,T02] ( 17, 19.50)     ref  ->  x19         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T16] (  4,  4   )     int  ->   x1         single-def
-;  V02 loc0         [V02,T28] (  3,  2.50)     int  ->  x20         single-def
+;  V02 loc0         [V02,T27] (  3,  2.50)     int  ->  x20         single-def
 ;  V03 loc1         [V03    ] (  5, 12   )  struct (16) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-;  V04 loc2         [V04,T30] (  2,  2   )     int  ->   x0         single-def
+;  V04 loc2         [V04,T28] (  2,  2   )     int  ->   x0         single-def
 ;  V05 loc3         [V05,T23] (  3,  5   )     int  ->  x22         single-def
 ;  V06 loc4         [V06    ] (  2,  2.50)  struct (16) [fp+0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
 ;  V07 loc5         [V07,T15] (  5,  7   )     int  ->  x20        
@@ -48,18 +48,15 @@
 ;  V37 tmp26        [V37,T10] (  3, 12   )     int  ->   x0         "index expr"
 ;  V38 tmp27        [V38,T11] (  3, 12   )     int  ->   x1         "index expr"
 ;  V39 cse0         [V39,T12] (  4,  9   )    long  ->  x21         "CSE - aggressive"
-;* V40 cse1         [V40,T31] (  0,  0   )    long  ->  zero-ref    "CSE - moderate"
+;* V40 cse1         [V40,T29] (  0,  0   )    long  ->  zero-ref    "CSE - moderate"
 ;  V41 cse2         [V41,T19] (  3,  6   )    long  ->   x0         "CSE - moderate"
 ;  V42 cse3         [V42,T20] (  3,  6   )     int  ->  x20         "CSE - moderate"
 ;  V43 rat0         [V43,T24] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
 ;  V44 rat1         [V44,T25] (  3,  4   )    long  ->  x21         "runtime lookup"
 ;  V45 rat2         [V45,T22] (  3,  5.60)    long  ->  x21         "fgMakeTemp is creating a new local variable"
-;* V46 rat3         [V46,T29] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V47 rat4         [V47,T32] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V48 rat5         [V48,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V49 rat6         [V49,T03] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V50 rat7         [V50,T04] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V51 rat8         [V51,T01] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V46 rat3         [V46,T03] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V47 rat4         [V47,T04] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V48 rat5         [V48,T01] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 48
 

+0 (0.00%) : 230844.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable1[int]]:TrimExcess(int):this (FullOpts)

@@ -10,9 +10,9 @@
 ;
 ;  V00 this         [V00,T02] ( 17, 19.50)     ref  ->  x19         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T17] (  4,  4   )     int  ->   x1         single-def
-;  V02 loc0         [V02,T28] (  3,  2.50)     int  ->  x20         single-def
+;  V02 loc0         [V02,T27] (  3,  2.50)     int  ->  x20         single-def
 ;  V03 loc1         [V03    ] (  5, 12   )  struct (16) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-;  V04 loc2         [V04,T30] (  2,  2   )     int  ->   x0         single-def
+;  V04 loc2         [V04,T28] (  2,  2   )     int  ->   x0         single-def
 ;  V05 loc3         [V05,T22] (  3,  5   )     int  ->  x22         single-def
 ;  V06 loc4         [V06    ] (  2,  2.50)  struct (16) [fp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
 ;  V07 loc5         [V07,T16] (  5,  7   )     int  ->  x20        
@@ -33,9 +33,9 @@
 ;  V22 tmp11        [V22,T08] (  3, 12   )     ref  ->   x0         class-hnd "impAppendStmt" <<unknown class>>
 ;  V23 tmp12        [V23,T09] (  3, 12   )     ref  ->   x0         class-hnd "impAppendStmt" <<unknown class>>
 ;* V24 tmp13        [V24    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V25 tmp14        [V25,T31] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V25 tmp14        [V25,T29] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V26 tmp15        [V26    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V27 tmp16        [V27,T32] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V27 tmp16        [V27,T30] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V28 tmp17        [V28    ] (  4, 11   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V29 tmp18        [V29    ] (  5, 12   )     int  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
 ;  V30 tmp19        [V30    ] (  2,  2.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -53,12 +53,9 @@
 ;  V42 rat0         [V42,T23] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
 ;  V43 rat1         [V43,T24] (  3,  4   )    long  ->  x21         "runtime lookup"
 ;  V44 rat2         [V44,T21] (  3,  5.60)    long  ->  x21         "fgMakeTemp is creating a new local variable"
-;* V45 rat3         [V45,T29] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V46 rat4         [V46,T33] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V47 rat5         [V47,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V48 rat6         [V48,T03] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V49 rat7         [V49,T04] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V50 rat8         [V50,T01] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V45 rat3         [V45,T03] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V46 rat4         [V46,T04] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V47 rat5         [V47,T01] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 

+0 (0.00%) : 230992.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

libraries_tests.run.linux.arm64.Release.mch

-12 (-0.89%) : 229613.dasm - System.Collections.Generic.PriorityQueue`2[System.Canon,System.Canon]:Heapify():this (Tier1)

@@ -9,16 +9,16 @@
 ; 2 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T08] ( 16, 193.58)     ref  ->  x19         this class-hnd single-def <System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]>
-;  V01 loc0         [V01,T37] (  8,  20.84)     ref  ->  x20         class-hnd exact single-def <<unknown class>>
-;  V02 loc1         [V02,T45] (  3,   2   )     int  ->  x21        
-;  V03 loc2         [V03,T53] (  7,   0   )     int  ->  x23        
-;  V04 loc3         [V04,T31] ( 14,  91.51)     int  ->  x21        
+;  V00 this         [V00,T09] ( 16, 193.58)     ref  ->  x19         this class-hnd single-def <System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]>
+;  V01 loc0         [V01,T34] (  8,  20.84)     ref  ->  x20         class-hnd exact single-def <<unknown class>>
+;  V02 loc1         [V02,T42] (  3,   2   )     int  ->  x21        
+;  V03 loc2         [V03,T47] (  7,   0   )     int  ->  x23        
+;  V04 loc3         [V04,T30] ( 14,  91.51)     int  ->  x21        
 ;# V05 OutArgs      [V05    ] (  1,   1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V06 tmp1         [V06    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V07 tmp2         [V07    ] (  0,   0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V08 tmp3         [V08,T20] (  6, 153.24)     ref  ->  x26         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V09 tmp4         [V09,T09] ( 14, 255.38)     ref  ->  x27         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V09 tmp4         [V09,T08] ( 14, 255.38)     ref  ->  x27         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;  V10 tmp5         [V10,T23] (  8, 137.11)     int  ->  x28         "Inline stloc first use temp"
 ;  V11 tmp6         [V11,T06] ( 14, 395.96)     int  ->  x25         "Inlining Arg"
 ;* V12 tmp7         [V12    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
@@ -34,45 +34,39 @@
 ;* V22 tmp17        [V22    ] (  0,   0   )  struct (16) zero-ref    "Inlining Arg" <System.ValueTuple`2[System.__Canon,System.__Canon]>
 ;* V23 tmp18        [V23    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V24 tmp19        [V24,T14] (  8, 209.85)    long  ->  x11         "VirtualCall with runtime lookup"
-;  V25 tmp20        [V25,T34] (  6,  69.95)     int  ->  x22         "Inline return value spill temp"
+;  V25 tmp20        [V25,T32] (  6,  69.95)     int  ->  x22         "Inline return value spill temp"
 ;  V26 tmp21        [V26,T22] (  6, 139.90)     int  ->  x22         "Inlining Arg"
 ;  V27 tmp22        [V27,T28] (  6, 101.46)     ref  ->  [fp+0x28]  "field V15.Item1 (fldOffset=0x0)" P-INDEP
 ;  V28 tmp23        [V28,T10] ( 10, 237.03)     ref  ->  [fp+0x20]  "field V15.Item2 (fldOffset=0x8)" P-INDEP
 ;  V29 tmp24        [V29,T25] (  4, 135.25)     ref  ->  [fp+0x18]  "field V19.Item1 (fldOffset=0x0)" P-INDEP
 ;  V30 tmp25        [V30,T11] (  6, 235.85)     ref  ->  [fp+0x10]  "field V19.Item2 (fldOffset=0x8)" P-INDEP
-;  V31 tmp26        [V31,T35] (  4,  35.33)     ref  ->  x23         "field V22.Item1 (fldOffset=0x0)" P-INDEP
-;  V32 tmp27        [V32,T33] (  6,  70.31)     ref  ->  x24         "field V22.Item2 (fldOffset=0x8)" P-INDEP
+;  V31 tmp26        [V31,T33] (  4,  35.33)     ref  ->  x23         "field V22.Item1 (fldOffset=0x0)" P-INDEP
+;  V32 tmp27        [V32,T31] (  6,  70.31)     ref  ->  x24         "field V22.Item2 (fldOffset=0x8)" P-INDEP
 ;  V33 tmp28        [V33,T26] (  6, 106   )   byref  ->  x22         "BlockOp address local"
 ;  V34 tmp29        [V34,T15] (  6, 209.85)   byref  ->  registers   "BlockOp address local"
 ;  V35 tmp30        [V35,T03] (  6, 603.60)   byref  ->   x9         "BlockOp address local"
 ;  V36 tmp31        [V36,T18] (  6, 190.97)   byref  ->   x2         "BlockOp address local"
 ;  V37 tmp32        [V37,T27] (  6, 106   )   byref  ->  x22         "BlockOp address local"
-;  V38 tmp33        [V38,T54] (  3,   0   )  struct (16) [fp+0x38]  do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ValueTuple`2[System.__Canon,System.__Canon]>
+;  V38 tmp33        [V38,T48] (  3,   0   )  struct (16) [fp+0x38]  do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ValueTuple`2[System.__Canon,System.__Canon]>
 ;  V39 cse0         [V39,T12] (  6, 235.34)     int  ->  [fp+0x34]  multi-def "CSE - aggressive"
-;  V40 cse1         [V40,T43] (  6,   2.38)     int  ->  [fp+0x30]  multi-def "CSE - moderate"
-;* V41 rat0         [V41,T41] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V42 rat1         [V42,T46] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;* V43 rat2         [V43,T39] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V44 rat3         [V44,T32] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V45 rat4         [V45,T36] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;* V46 rat5         [V46,T30] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V47 rat6         [V47,T05] (  3, 438.21)    long  ->   x0         "Spilling to split statement for tree"
-;  V48 rat7         [V48,T04] (  3, 557.73)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V49 rat8         [V49,T21] (  3, 152.35)    long  ->   x0         "Spilling to split statement for tree"
-;  V50 rat9         [V50,T17] (  3, 193.91)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V51 rat10        [V51,T13] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V52 rat11        [V52,T29] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;* V53 rat12        [V53,T07] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V54 rat13        [V54,T51] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V55 rat14        [V55,T52] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;* V56 rat15        [V56,T50] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V57 rat16        [V57,T40] (  3,   4.43)    long  ->   x0         "Spilling to split statement for tree"
-;  V58 rat17        [V58,T38] (  3,   5.63)    long  ->  x13         "fgMakeTemp is creating a new local variable"
-;  V59 rat18        [V59,T48] (  3,   1.54)    long  ->   x0         "Spilling to split statement for tree"
-;  V60 rat19        [V60,T47] (  3,   1.96)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V61 rat20        [V61,T44] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V62 rat21        [V62,T49] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;* V63 rat22        [V63,T42] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V40 cse1         [V40,T40] (  6,   2.38)     int  ->  [fp+0x30]  multi-def "CSE - moderate"
+;* V41 rat0         [V41,T38] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V42 rat1         [V42,T43] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
+;* V43 rat2         [V43,T36] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V44 rat3         [V44,T05] (  3, 438.21)    long  ->   x0         "Spilling to split statement for tree"
+;  V45 rat4         [V45,T04] (  3, 557.73)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V46 rat5         [V46,T21] (  3, 152.35)    long  ->   x0         "Spilling to split statement for tree"
+;  V47 rat6         [V47,T17] (  3, 193.91)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V48 rat7         [V48,T13] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V49 rat8         [V49,T29] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
+;* V50 rat9         [V50,T07] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V51 rat10        [V51,T37] (  3,   4.43)    long  ->   x0         "Spilling to split statement for tree"
+;  V52 rat11        [V52,T35] (  3,   5.63)    long  ->  x13         "fgMakeTemp is creating a new local variable"
+;  V53 rat12        [V53,T45] (  3,   1.54)    long  ->   x0         "Spilling to split statement for tree"
+;  V54 rat13        [V54,T44] (  3,   1.96)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V55 rat14        [V55,T41] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V56 rat15        [V56,T46] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
+;* V57 rat16        [V57,T39] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 80
 
@@ -433,21 +427,46 @@ G_M37971_IG29:        ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=180
             ldp     x27, x26, [x19, #0x08]
             ; gcrRegs +[x26-x27]
             ldr     w28, [x19, #0x20]
-            b       G_M37971_IG44
+            b       G_M37971_IG41
                        ;; size=44 bbWeight=0.18 PerfScore 3.36
-G_M37971_IG30:        ; bbWeight=0.35, gcVars=0000000010000000 {V27}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x5]
+G_M37971_IG30:        ; bbWeight=0.35, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[x22]
-            ; GC ptr vars +{V27 V28}
+            ldr     w3, [x27, #0x08]
+            cmp     w22, w3
+            bhs     G_M37971_IG49
+            ubfiz   x0, x22, #4, #32
+            add     x0, x0, #16
+            add     x0, x27, x0
+            ; byrRegs +[x0]
+            ldr     x15, [x0]
+            ; gcrRegs +[x15]
+            str     x15, [fp, #0x28]   // [V27 tmp22]
+            ; GC ptr vars +{V27}
+            ldr     x15, [x0, #0x08]
+            str     x15, [fp, #0x20]   // [V28 tmp23]
+            ; GC ptr vars +{V28}
+            sxtw    w6, w22
+            add     w22, w22, #4
+            cmp     w22, w28
+            bgt     G_M37971_IG46
+                       ;; size=56 bbWeight=0.35 PerfScore 5.95
+G_M37971_IG31:        ; bbWeight=0, gcVars=0000000010000400 {V27 V28}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[x15]
+            ; byrRegs -[x0]
+            ldr     x5, [fp, #0x20]    // [V28 tmp23]
+            ; gcrRegs +[x5]
+                       ;; size=4 bbWeight=0 PerfScore 0.00
+G_M37971_IG32:        ; bbWeight=0.35, gcVars=0000000010000000 {V27}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; GC ptr vars -{V28}
             str     w6, [fp, #0x50]    // [V16 tmp11]
             add     w0, w6, #1
             sxtw    w2, w0
             sxtw    w7, w2
             str     w7, [fp, #0x54]    // [V14 tmp9]
             cmp     w7, w22
-            bge     G_M37971_IG32
+            bge     G_M37971_IG45
                        ;; size=28 bbWeight=0.35 PerfScore 1.75
-G_M37971_IG31:        ; bbWeight=1.01, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
+G_M37971_IG33:        ; bbWeight=1.01, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
             str     w3, [fp, #0x30]    // [V40 cse1]
             cmp     w2, w3
             bhs     G_M37971_IG49
@@ -468,72 +487,15 @@ G_M37971_IG31:        ; bbWeight=1.01, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
             ldr     x13, [x1, #0x48]
-            cbz     x13, G_M37971_IG36
-            b       G_M37971_IG38
-                       ;; size=68 bbWeight=1.01 PerfScore 27.66
-G_M37971_IG32:        ; bbWeight=0.17, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref
+            cbz     x13, G_M37971_IG47
+                       ;; size=64 bbWeight=1.01 PerfScore 26.66
+G_M37971_IG34:        ; bbWeight=0.80, gcVars=0000000012000800 {V27 V29 V30}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[x9]
-            ; GC ptr vars -{V28 V29 V30}
-            str     w3, [fp, #0x30]    // [V40 cse1]
-            mov     x3, x5
-            ; gcrRegs +[x3]
-            b       G_M37971_IG41
-                       ;; size=12 bbWeight=0.17 PerfScore 0.44
-G_M37971_IG33:        ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[x3 x5]
-            ; GC ptr vars -{V27}
-            ldr     w3, [x27, #0x08]
-            cmp     w22, w3
-            bhs     G_M37971_IG49
-            ubfiz   x0, x22, #4, #32
-            add     x0, x0, #16
-            add     x0, x27, x0
-            ; byrRegs +[x0]
-            ldr     x15, [x0]
-            ; gcrRegs +[x15]
-            str     x15, [fp, #0x28]   // [V27 tmp22]
-            ; GC ptr vars +{V27}
-            ldr     x15, [x0, #0x08]
-            str     x15, [fp, #0x20]   // [V28 tmp23]
-            ; GC ptr vars +{V28}
-            sxtw    w6, w22
-            add     w22, w22, #4
-            cmp     w22, w28
-            bgt     G_M37971_IG35
-                       ;; size=56 bbWeight=0.35 PerfScore 5.95
-G_M37971_IG34:        ; bbWeight=0, gcVars=0000000010000400 {V27 V28}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x15]
-            ; byrRegs -[x0]
-            ldr     x5, [fp, #0x20]    // [V28 tmp23]
-            ; gcrRegs +[x5]
-            b       G_M37971_IG30
-                       ;; size=8 bbWeight=0 PerfScore 0.00
-G_M37971_IG35:        ; bbWeight=0.35, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x5]
-            ldr     x5, [fp, #0x20]    // [V28 tmp23]
-            ; gcrRegs +[x5]
-            sxtw    w22, w28
-            b       G_M37971_IG30
-                       ;; size=12 bbWeight=0.35 PerfScore 1.22
-G_M37971_IG36:        ; bbWeight=0.20, gcVars=0000000012000800 {V27 V29 V30}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
-            ; GC ptr vars -{V28} +{V11 V25 V29 V30}
-            str     x5, [fp, #0x20]    // [V28 tmp23]
-            ; GC ptr vars +{V28}
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            ; GC ptr vars -{V11 V25}
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            ; gcrRegs -[x5]
-            ; gcr arg pop 0
-            mov     x13, x0
-            ldr     x5, [fp, #0x20]    // [V28 tmp23]
-            ; gcrRegs +[x5]
             ldr     x9, [fp, #0x10]    // [V30 tmp25]
             ; gcrRegs +[x9]
-                       ;; size=32 bbWeight=0.20 PerfScore 1.61
-G_M37971_IG37:        ; bbWeight=1.01, gcVars=0000000012000000 {V27 V29}, gcrefRegs=D980220 {x5 x9 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; GC ptr vars -{V28 V30}
+                       ;; size=4 bbWeight=0.80 PerfScore 1.61
+G_M37971_IG35:        ; bbWeight=1.01, gcVars=0000000012000000 {V27 V29}, gcrefRegs=D980220 {x5 x9 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; GC ptr vars -{V30}
             mov     x0, x26
             ; gcrRegs +[x0]
             mov     x11, x13
@@ -551,19 +513,11 @@ G_M37971_IG37:        ; bbWeight=1.01, gcVars=0000000012000000 {V27 V29}, gcrefR
             ; gcr arg pop 0
             ldr     x3, [fp, #0x20]    // [V28 tmp23]
             ; gcrRegs +[x3]
-            tbz     w0, #31, G_M37971_IG40
-            b       G_M37971_IG39
-                       ;; size=44 bbWeight=1.01 PerfScore 12.07
-G_M37971_IG38:        ; bbWeight=0.80, gcVars=0000000012000800 {V27 V29 V30}, gcrefRegs=D980020 {x5 x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x3] +[x5]
-            ; GC ptr vars -{V28}
-            ldr     x9, [fp, #0x10]    // [V30 tmp25]
-            ; gcrRegs +[x9]
-            b       G_M37971_IG37
-                       ;; size=8 bbWeight=0.80 PerfScore 2.41
-G_M37971_IG39:        ; bbWeight=0.35, gcVars=0000000002000800 {V29 V30}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[x5 x9]
-            ; GC ptr vars -{V27}
+            tbz     w0, #31, G_M37971_IG37
+                       ;; size=40 bbWeight=1.01 PerfScore 11.07
+G_M37971_IG36:        ; bbWeight=0.35, gcVars=0000000002000800 {V29 V30}, gcrefRegs=D980000 {x19 x20 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[x3]
+            ; GC ptr vars -{V27 V28}
             ldr     x4, [fp, #0x18]    // [V29 tmp24]
             ; gcrRegs +[x4]
             str     x4, [fp, #0x28]    // [V27 tmp22]
@@ -577,7 +531,7 @@ G_M37971_IG39:        ; bbWeight=0.35, gcVars=0000000002000800 {V29 V30}, gcrefR
             ldr     x3, [fp, #0x20]    // [V28 tmp23]
...

-8 (-0.69%) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,int]:FindValue(System.Canon):byref:this (Tier1)

@@ -11,35 +11,35 @@
 ;
 ;  V00 this         [V00,T00] ( 19,  9.75)     ref  ->  x19         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]>
 ;  V01 arg1         [V01,T01] ( 12,  5.51)     ref  ->  x20         ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 loc0         [V02,T15] ( 14,  4.10)   byref  ->  x25        
-;  V03 loc1         [V03,T25] (  3,  2   )   byref  ->   x0        
-;  V04 loc2         [V04,T31] (  4,  1.64)     ref  ->  x21         class-hnd single-def <<unknown class>>
-;  V05 loc3         [V05,T24] (  4,  2.46)     int  ->  x21         single-def
-;  V06 loc4         [V06,T14] (  9,  4.12)     int  ->  x22        
+;  V02 loc0         [V02,T14] ( 14,  4.10)   byref  ->  x25        
+;  V03 loc1         [V03,T23] (  3,  2   )   byref  ->   x0        
+;  V04 loc2         [V04,T28] (  4,  1.64)     ref  ->  x21         class-hnd single-def <<unknown class>>
+;  V05 loc3         [V05,T22] (  4,  2.46)     int  ->  x21         single-def
+;  V06 loc4         [V06,T13] (  9,  4.12)     int  ->  x22        
 ;  V07 loc5         [V07    ] (  7,  2.47)  struct (16) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]>
-;  V08 loc6         [V08,T33] (  7,  0.82)     int  ->  x23        
-;  V09 loc7         [V09,T23] (  6,  2.47)     ref  ->  x24         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-;  V10 loc8         [V10,T49] (  3,  0   )     int  ->  x22         single-def
-;  V11 loc9         [V11,T42] (  6,  0   )     int  ->  x23        
+;  V08 loc6         [V08,T30] (  7,  0.82)     int  ->  x23        
+;  V09 loc7         [V09,T21] (  6,  2.47)     ref  ->  x24         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+;  V10 loc8         [V10,T46] (  3,  0   )     int  ->  x22         single-def
+;  V11 loc9         [V11,T39] (  6,  0   )     int  ->  x23        
 ;  V12 loc10        [V12    ] (  4,  0   )  struct (16) [fp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]>
-;  V13 loc11        [V13,T43] (  4,  0   )     int  ->  x24        
+;  V13 loc11        [V13,T40] (  4,  0   )     int  ->  x24        
 ;# V14 OutArgs      [V14    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V15 tmp1         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp2         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp3         [V17,T44] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V17 tmp3         [V17,T41] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V18 tmp4         [V18    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V19 tmp5         [V19    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V20 tmp6         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp7         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V22 tmp8         [V22,T45] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V22 tmp8         [V22,T42] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V23 tmp9         [V23    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V24 tmp10        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp11        [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V26 tmp12        [V26    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V27 tmp13        [V27,T30] (  3,  1.64)     int  ->  x21         "guarded devirt return temp"
+;  V27 tmp13        [V27,T27] (  3,  1.64)     int  ->  x21         "guarded devirt return temp"
 ;* V28 tmp14        [V28    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt arg temp"
 ;* V29 tmp15        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.Interop.Analyzers.ConvertComImportToGeneratedComInterfaceAnalyzer>
-;  V30 tmp16        [V30,T46] (  2,  0   )     int  ->   x0         "guarded devirt return temp"
+;  V30 tmp16        [V30,T43] (  2,  0   )     int  ->   x0         "guarded devirt return temp"
 ;  V31 tmp17        [V31,T08] (  7,  4.92)     ref  ->   x1         "guarded devirt arg temp"
 ;* V32 tmp18        [V32    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer]>
 ;* V33 tmp19        [V33    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
@@ -50,76 +50,73 @@
 ;  V38 tmp24        [V38,T03] (  3,  4.93)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V39 tmp25        [V39,T04] (  3,  4.93)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V40 tmp26        [V40    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V41 tmp27        [V41,T34] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V41 tmp27        [V41,T31] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V42 tmp28        [V42    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V43 tmp29        [V43,T35] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V43 tmp29        [V43,T32] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V44 tmp30        [V44    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
 ;* V45 tmp31        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
 ;* V46 tmp32        [V46    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Diagnostics.DiagnosticAnalyzer>
 ;* V47 tmp33        [V47    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V48 tmp34        [V48    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V49 tmp35        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V50 tmp36        [V50,T50] (  3,  0   )     int  ->   x1         "Inlining Arg"
-;  V51 tmp37        [V51,T47] (  3,  0   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V52 tmp38        [V52,T48] (  3,  0   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V50 tmp36        [V50,T47] (  3,  0   )     int  ->   x1         "Inlining Arg"
+;  V51 tmp37        [V51,T44] (  3,  0   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V52 tmp38        [V52,T45] (  3,  0   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V53 tmp39        [V53    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V54 tmp40        [V54,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V54 tmp40        [V54,T72] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V55 tmp41        [V55    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V56 tmp42        [V56,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V56 tmp42        [V56,T73] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V57 tmp43        [V57    ] (  3,  1.64)     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V07._items (fldOffset=0x0)" P-DEP
 ;  V58 tmp44        [V58    ] (  7,  2.47)     int  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V07._length (fldOffset=0x8)" P-DEP
 ;  V59 tmp45        [V59    ] (  2,  0   )     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V12._items (fldOffset=0x0)" P-DEP
 ;  V60 tmp46        [V60    ] (  4,  0   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x8)" P-DEP
-;  V61 tmp47        [V61,T27] (  2,  1.64)     ref  ->   x0         single-def "field V34._items (fldOffset=0x0)" P-INDEP
-;  V62 tmp48        [V62,T28] (  2,  1.64)     int  ->   x1         single-def "field V34._length (fldOffset=0x8)" P-INDEP
-;  V63 tmp49        [V63,T68] (  2,  0   )     ref  ->   x0         single-def "field V47._items (fldOffset=0x0)" P-INDEP
-;  V64 tmp50        [V64,T69] (  2,  0   )     int  ->   x1         single-def "field V47._length (fldOffset=0x8)" P-INDEP
-;  V65 tmp51        [V65,T51] (  3,  0   )     int  ->   x2         "index expr"
-;  V66 tmp52        [V66,T52] (  3,  0   )     int  ->   x1         "index expr"
-;  V67 tmp53        [V67,T70] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V61 tmp47        [V61,T25] (  2,  1.64)     ref  ->   x0         single-def "field V34._items (fldOffset=0x0)" P-INDEP
+;  V62 tmp48        [V62,T26] (  2,  1.64)     int  ->   x1         single-def "field V34._length (fldOffset=0x8)" P-INDEP
+;  V63 tmp49        [V63,T65] (  2,  0   )     ref  ->   x0         single-def "field V47._items (fldOffset=0x0)" P-INDEP
+;  V64 tmp50        [V64,T66] (  2,  0   )     int  ->   x1         single-def "field V47._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp51        [V65,T48] (  3,  0   )     int  ->   x2         "index expr"
+;  V66 tmp52        [V66,T49] (  3,  0   )     int  ->   x1         "index expr"
+;  V67 tmp53        [V67,T67] (  2,  0   )    long  ->   x1         "argument with side effect"
 ;  V68 tmp54        [V68,T06] (  3,  4.93)     int  ->   x2         "index expr"
 ;  V69 tmp55        [V69,T07] (  3,  4.93)     int  ->   x1         "index expr"
-;  V70 tmp56        [V70,T21] (  4,  3.28)    long  ->   x1         "argument with side effect"
-;* V71 rat0         [V71,T13] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V72 rat1         [V72,T26] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;  V70 tmp56        [V70,T19] (  4,  3.28)    long  ->   x1         "argument with side effect"
+;* V71 rat0         [V71,T12] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V72 rat1         [V72,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
 ;* V73 rat2         [V73,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V74 rat3         [V74,T16] (  3,  3.62)    long  ->   x0         "Spilling to split statement for tree"
-;  V75 rat4         [V75,T20] (  3,  3.29)    long  ->   x1         "runtime lookup"
+;  V74 rat3         [V74,T15] (  3,  3.62)    long  ->   x0         "Spilling to split statement for tree"
+;  V75 rat4         [V75,T18] (  3,  3.29)    long  ->   x1         "runtime lookup"
 ;  V76 rat5         [V76,T09] (  3,  4.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V77 rat6         [V77,T17] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V77 rat6         [V77,T16] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
 ;* V78 rat7         [V78,T29] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
 ;* V79 rat8         [V79,T10] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V80 rat9         [V80,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V81 rat10        [V81,T32] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V82 rat11        [V82,T11] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V83 rat12        [V83,T19] (  3,  3.57)    long  ->   x0         "Spilling to split statement for tree"
-;  V84 rat13        [V84,T22] (  3,  3.24)    long  ->   x1         "runtime lookup"
-;  V85 rat14        [V85,T12] (  3,  4.54)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V86 rat15        [V86,T53] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat16        [V87,T71] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat17        [V88,T54] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V89 rat18        [V89,T38] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V90 rat19        [V90,T41] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V91 rat20        [V91,T36] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V92 rat21        [V92,T39] (  3,  0.04)    long  ->   x0         "Spilling to split statement for tree"
-;  V93 rat22        [V93,T40] (  3,  0.03)    long  ->   x1         "runtime lookup"
-;  V94 rat23        [V94,T37] (  3,  0.05)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V95 rat24        [V95,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V96 rat25        [V96,T72] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V97 rat26        [V97,T56] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V98 rat27        [V98,T57] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V99 rat28        [V99,T58] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V100 rat29       [V100,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V101 rat30       [V101,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V102 rat31       [V102,T60] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V80 rat9         [V80,T17] (  3,  3.57)    long  ->   x0         "Spilling to split statement for tree"
+;  V81 rat10        [V81,T20] (  3,  3.24)    long  ->   x1         "runtime lookup"
+;  V82 rat11        [V82,T11] (  3,  4.54)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V83 rat12        [V83,T50] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V84 rat13        [V84,T68] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V85 rat14        [V85,T51] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;* V86 rat15        [V86,T35] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V87 rat16        [V87,T38] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V88 rat17        [V88,T33] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V89 rat18        [V89,T36] (  3,  0.04)    long  ->   x0         "Spilling to split statement for tree"
+;  V90 rat19        [V90,T37] (  3,  0.03)    long  ->   x1         "runtime lookup"
+;  V91 rat20        [V91,T34] (  3,  0.05)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V92 rat21        [V92,T52] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V93 rat22        [V93,T69] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V94 rat23        [V94,T53] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V95 rat24        [V95,T54] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat25        [V96,T55] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V97 rat26        [V97,T56] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V98 rat27        [V98,T70] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V99 rat28        [V99,T57] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V100 rat29       [V100,T58] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
+;  V101 rat30       [V101,T59] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V102 rat31       [V102,T60] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;  V103 rat32       [V103,T61] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V104 rat33       [V104,T62] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V105 rat34       [V105,T63] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V106 rat35       [V106,T64] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V107 rat36       [V107,T65] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V108 rat37       [V108,T66] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V109 rat38       [V109,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V110 rat39       [V110,T67] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V104 rat33       [V104,T62] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V105 rat34       [V105,T63] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat35       [V106,T71] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat36       [V107,T64] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 40
 
@@ -250,39 +247,21 @@ G_M50578_IG12:        ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=000
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
             bne     G_M50578_IG25
-            b       G_M50578_IG15
-                       ;; size=64 bbWeight=0.82 PerfScore 12.33
-G_M50578_IG13:        ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref
-            ; gcrRegs -[x20 x24]
-            ; byrRegs +[x25]
-            ldrsb   wzr, [x25]
-            add     x0, x25, #16
-            ; byrRegs +[x0]
-                       ;; size=8 bbWeight=0.82 PerfScore 2.87
-G_M50578_IG14:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, epilog, nogc
-            ; byrRegs -[x25]
-            ldr     x25, [sp, #0x68]
-            ldp     x23, x24, [sp, #0x58]
-            ldp     x21, x22, [sp, #0x48]
-            ldp     x19, x20, [sp, #0x38]
-            ldp     fp, lr, [sp], #0x70
-            ret     lr
-                       ;; size=24 bbWeight=1 PerfScore 7.00
-G_M50578_IG15:        ; bbWeight=0.82, gcVars=00000000000000000000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[x20]
-            ; byrRegs -[x0]
+                       ;; size=60 bbWeight=0.82 PerfScore 11.51
+G_M50578_IG13:        ; bbWeight=0.82, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x24]
             ldr     w0, [fp, #0x28]    // [V58 tmp44]
             cmp     w22, w0
             bhs     G_M50578_IG21
                        ;; size=12 bbWeight=0.82 PerfScore 2.88
-G_M50578_IG16:        ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M50578_IG14:        ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x19]
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
             ldr     x1, [x1, #0x30]
             cbz     x1, G_M50578_IG23
                        ;; size=20 bbWeight=0.81 PerfScore 10.54
-G_M50578_IG17:        ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M50578_IG15:        ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             add     x0, fp, #32    // [V07 loc5]
             mov     w2, w22
             movz    x3, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,int]]:get_Item(int):byref:this
@@ -296,29 +275,42 @@ G_M50578_IG17:        ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=000
             ldr     w0, [x25, #0x08]
             ; byrRegs -[x0]
             cmp     w0, w21
-            beq     G_M50578_IG19
+            beq     G_M50578_IG17
                        ;; size=44 bbWeight=0.81 PerfScore 9.33
-G_M50578_IG18:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
+G_M50578_IG16:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref
             ldr     w22, [x25, #0x0C]
             add     w23, w23, #1
             b       G_M50578_IG47
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M50578_IG19:        ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M50578_IG17:        ; bbWeight=0.81, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
             ldr     x1, [x25]
             ; gcrRegs +[x1]
-            cbz     x1, G_M50578_IG18
+            cbz     x1, G_M50578_IG16
                        ;; size=8 bbWeight=0.81 PerfScore 3.24
-G_M50578_IG20:        ; bbWeight=0.81, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=2000000 {x25}, byref, isz
+G_M50578_IG18:        ; bbWeight=0.81, gcrefRegs=180002 {x1 x19 x20}, byrefRegs=2000000 {x25}, byref, isz
             cmp     x1, x20
-            beq     G_M50578_IG13
-            b       G_M50578_IG18
-                       ;; size=12 bbWeight=0.81 PerfScore 2.03
-G_M50578_IG21:        ; bbWeight=0.18, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            bne     G_M50578_IG16
+                       ;; size=8 bbWeight=0.81 PerfScore 1.22
+G_M50578_IG19:        ; bbWeight=0.82, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref
             ; gcrRegs -[x1 x20]
...

-20 (-0.60%) : 170023.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

@@ -168,7 +168,6 @@
 ;  V156 cse15       [V156,T67] (  3,  0.08)     int  ->  x27         "CSE - conservative"
 ;  V157 cse16       [V157,T74] (  2,  0.00)     int  ->   x1         "CSE - conservative"
 ;  V158 rat0        [V158,T24] (  5,  7.43)     ref  ->  x21         class-hnd "replacement local" <System.Collections.Generic.List`1[System.String]>
-;  TEMP_01                                   byref  ->  [fp-0x90]
 ;
 ; Lcl frame size = 64
 
@@ -181,11 +180,8 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0x80]
             stp     fp, lr, [sp, #0x90]
             add     fp, sp, #144
-            sub     x9, fp, #144
-            movi    v16.16b, #0
-            stp     q16, q16, [x9]
-            stp     xzr, xzr, [x9, #0x20]
-            str     xzr, [x9, #0x30]
+            str     xzr, [fp, #-0x78]  // [V06 loc4]
+            str     xzr, [fp, #-0x68]  // [V06 loc4+0x10]
             add     x2, sp, #160
             str     x2, [fp, #-0x58]   // [V140 PSPSym]
             movz    x2, #0xD1FFAB1E
@@ -197,7 +193,7 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
-                       ;; size=88 bbWeight=1 PerfScore 16.50
+                       ;; size=76 bbWeight=1 PerfScore 14.50
 G_M8186_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x21, x20
             ; gcrRegs +[x21]
@@ -1259,9 +1255,6 @@ G_M8186_IG86:        ; bbWeight=0.02, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
                        ;; size=48 bbWeight=0.02 PerfScore 0.38
 G_M8186_IG87:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x26 x28]
-            add     x14, x20, #32
-            ; byrRegs +[x14]
-            str     x14, [fp, #-0x90]  // [TEMP_01]
             mov     x0, x26
             ; gcrRegs +[x0]
             mov     x1, xzr
@@ -1270,7 +1263,6 @@ G_M8186_IG87:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             ldr     x2, [x2, #0x28]
             blr     x2
             ; gcrRegs -[x26]
-            ; byrRegs -[x14]
             ; gcr arg pop 0
             ldr     w2, [x28, #0x08]
             mov     x1, x28
@@ -1283,7 +1275,7 @@ G_M8186_IG87:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             blr     x3
             ; gcrRegs -[x1 x28]
             ; gcr arg pop 0
-            ldr     x14, [fp, #-0x90]  // [TEMP_01]
+            add     x14, x20, #32
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -1298,7 +1290,7 @@ G_M8186_IG87:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             ; gcrRegs -[x15]
             cmp     w14, w15
             blt     G_M8186_IG91
-                       ;; size=100 bbWeight=0.00 PerfScore 0.01
+                       ;; size=92 bbWeight=0.00 PerfScore 0.01
 G_M8186_IG88:        ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
             str     xzr, [x20, #0x20]
@@ -1510,7 +1502,7 @@ G_M8186_IG106:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
                        ;; size=32 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3352, prolog size 88, PerfScore 573.07, instruction count 838, allocated bytes for code 3352 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3332, prolog size 76, PerfScore 571.07, instruction count 833, allocated bytes for code 3332 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -1521,7 +1513,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 802 (0x00322) Actual length = 3208 (0x000c88)
+  Function Length   : 797 (0x0031d) Actual length = 3188 (0x000c74)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 228232.dasm - System.Collections.Generic.SortedSet1[System.__Canon]:IsSupersetOf(System.Collections.Generic.IEnumerable1[System.__Canon]):ubyte:this (Tier1)

@@ -19,24 +19,24 @@
 ;  V07 loc5         [V07,T47] (  2,  1.49)   ubyte  ->  [fp+0x3C]  do-not-enreg[Z] EH-live
 ;# V08 OutArgs      [V08    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T59] (  2,  0.16)     int  ->  x19         "impAppendStmt"
+;  V10 tmp2         [V10,T57] (  2,  0.16)     int  ->  x19         "impAppendStmt"
 ;* V11 tmp3         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impAppendStmt" <System.__Canon>
 ;* V12 tmp4         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "spilling ret_expr" <System.__Canon>
 ;* V13 tmp5         [V13    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V14 tmp6         [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V15 tmp7         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V16 tmp8         [V16,T57] (  6,  0.16)    long  ->   x2         "Indirect call through function pointer"
+;  V16 tmp8         [V16,T55] (  6,  0.16)    long  ->   x2         "Indirect call through function pointer"
 ;  V17 tmp9         [V17,T49] (  3,  1.10)     int  ->  x20         "guarded devirt return temp"
 ;* V18 tmp10        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1[System.String]>
-;  V19 tmp11        [V19,T65] (  3,  0.08)     ref  ->  x22         "guarded devirt return temp"
+;  V19 tmp11        [V19,T63] (  3,  0.08)     ref  ->  x22         "guarded devirt return temp"
 ;* V20 tmp12        [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
 ;  V21 tmp13        [V21,T39] (  2,  2.98)     int  ->   x0         "guarded devirt return temp"
 ;  V22 tmp14        [V22,T06] ( 10, 14.90)     ref  ->  x20         class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
 ;* V23 tmp15        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
 ;* V24 tmp16        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
-;  V25 tmp17        [V25,T62] (  4,  0.11)     ref  ->  x19         "guarded devirt return temp"
+;  V25 tmp17        [V25,T60] (  4,  0.11)     ref  ->  x19         "guarded devirt return temp"
 ;* V26 tmp18        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1[System.String]>
-;  V27 tmp19        [V27,T64] (  4,  0.08)     ref  ->   x2         "guarded devirt return temp"
+;  V27 tmp19        [V27,T62] (  4,  0.08)     ref  ->   x2         "guarded devirt return temp"
 ;* V28 tmp20        [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1[System.String]>
 ;  V29 tmp21        [V29    ] (  3,  0.24)  struct (32) [fp+0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.SortedSet`1+Enumerator[System.__Canon]>
 ;* V30 tmp22        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -44,7 +44,7 @@
 ;* V32 tmp24        [V32    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.__Canon>
 ;* V33 tmp25        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Generic.SortedSet`1+Node[System.__Canon]>
 ;  V34 tmp26        [V34,T37] (  2,  2.98)     ref  ->  x20         class-hnd "Inline return value spill temp" <<unknown class>>
-;* V35 tmp27        [V35,T67] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V35 tmp27        [V35,T64] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V36 tmp28        [V36,T36] (  2,  2.98)     int  ->   x0        
 ;* V37 tmp29        [V37    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V38 tmp30        [V38,T35] (  2,  2.98)     int  ->   x0        
@@ -63,7 +63,7 @@
 ;  V51 tmp43        [V51,T02] (  9, 24.50)     ref  ->  x24         class-hnd "impAppendStmt" <System.Collections.Generic.SortedSet`1[System.__Canon]>
 ;  V52 tmp44        [V52,T10] (  4, 10.89)     ref  ->  x25         class-hnd "spilling ret_expr" <System.__Canon>
 ;* V53 tmp45        [V53    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <System.Collections.Generic.SortedSet`1[System.__Canon]>
-;  V54 tmp46        [V54,T68] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V54 tmp46        [V54,T65] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V55 tmp47        [V55,T11] (  5,  9.18)     ref  ->   x0         "guarded devirt arg temp"
 ;* V56 tmp48        [V56    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.SortedSet`1+TreeSubSet[System.String]>
 ;  V57 tmp49        [V57,T41] (  2,  2.72)     int  ->   x0         "guarded devirt return temp"
@@ -79,11 +79,11 @@
 ;  V67 tmp59        [V67,T27] (  3,  4.08)     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V68 tmp60        [V68,T31] (  3,  3.45)     int  ->   x0         "Single return block return value"
 ;  V69 tmp61        [V69,T30] (  2,  3.61)    long  ->   x2         "argument with side effect"
-;  V70 tmp62        [V70,T60] (  2,  0.16)    long  ->   x1         "argument with side effect"
-;  V71 tmp63        [V71,T71] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V70 tmp62        [V70,T58] (  2,  0.16)    long  ->   x1         "argument with side effect"
+;  V71 tmp63        [V71,T68] (  2,  0   )     ref  ->   x1         "argument with side effect"
 ;  V72 PSPSym       [V72,T50] (  1,  1   )    long  ->  [fp+0x68]  do-not-enreg[V] "PSPSym"
-;  V73 cse0         [V73,T63] (  3,  0.08)    long  ->  x22         "CSE - conservative"
-;  V74 cse1         [V74,T61] (  3,  0.12)    long  ->  x22         "CSE - conservative"
+;  V73 cse0         [V73,T61] (  3,  0.08)    long  ->  x22         "CSE - conservative"
+;  V74 cse1         [V74,T59] (  3,  0.12)    long  ->  x22         "CSE - conservative"
 ;  V75 cse2         [V75,T03] ( 12, 22.98)    long  ->  registers   hoist multi-def "CSE - aggressive"
 ;  V76 cse3         [V76,T19] (  8,  6.07)    long  ->  x21         multi-def "CSE - moderate"
 ;  V77 cse4         [V77,T22] (  3,  4.57)     ref  ->   x0         "CSE - moderate"
@@ -93,23 +93,20 @@
 ;  V81 rat0         [V81,T28] (  3,  3.97)    long  ->   x1         "Spilling to split statement for tree"
 ;  V82 rat1         [V82,T29] (  3,  3.61)    long  ->  registers   "runtime lookup"
 ;  V83 rat2         [V83,T21] (  3,  5.05)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V84 rat3         [V84,T54] (  3,  0.17)    long  ->   x1         "Spilling to split statement for tree"
-;  V85 rat4         [V85,T58] (  3,  0.16)    long  ->   x1         "runtime lookup"
+;  V84 rat3         [V84,T53] (  3,  0.17)    long  ->   x1         "Spilling to split statement for tree"
+;  V85 rat4         [V85,T56] (  3,  0.16)    long  ->   x1         "runtime lookup"
 ;  V86 rat5         [V86,T51] (  3,  0.22)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;* V87 rat6         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat7         [V88,T66] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat8         [V89,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V90 rat9         [V90,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V91 rat10        [V91,T40] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V92 rat11        [V92,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V93 rat12        [V93,T17] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat13        [V94,T33] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat14        [V95,T13] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat15        [V96,T56] (  3,  0.17)    long  ->   x1         "Spilling to split statement for tree"
-;  V97 rat16        [V97,T53] (  3,  0.22)    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V98 rat17        [V98,T69] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
-;  V99 rat18        [V99,T70] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V100 rat19       [V100,T16] (  6,  8   )     ref  ->   x0         class-hnd "replacement local" <System.Collections.ICollection>
+;* V87 rat6         [V87,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V88 rat7         [V88,T40] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V89 rat8         [V89,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;* V90 rat9         [V90,T17] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat10        [V91,T33] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat11        [V92,T13] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat12        [V93,T54] (  3,  0.17)    long  ->   x1         "Spilling to split statement for tree"
+;  V94 rat13        [V94,T52] (  3,  0.22)    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V95 rat14        [V95,T66] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
+;  V96 rat15        [V96,T67] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V97 rat16        [V97,T16] (  6,  8   )     ref  ->   x0         class-hnd "replacement local" <System.Collections.ICollection>
 ;
 ; Lcl frame size = 96
 
@@ -491,30 +488,17 @@ G_M55414_IG37:        ; bbWeight=0.04, nogc, extend
 G_M55414_IG38:        ; bbWeight=0.04, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
             b       G_M55414_IG55
                        ;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M55414_IG39:        ; bbWeight=2.22, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
-            ; gcrRegs +[x19-x20]
-            ldr     x0, [x20, #0x10]
-            ; gcrRegs +[x0]
-                       ;; size=4 bbWeight=2.22 PerfScore 6.66
-G_M55414_IG40:        ; bbWeight=11.48, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x20]
-            mov     x20, x0
-            ; gcrRegs +[x20]
-            cbnz    x20, G_M55414_IG48
-            b       G_M55414_IG56
-                       ;; size=12 bbWeight=11.48 PerfScore 28.70
-G_M55414_IG41:        ; bbWeight=1.49, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x19-x20]
+G_M55414_IG39:        ; bbWeight=1.49, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [fp, #0x50]    // [V05 loc3+0x10]
             ; gcrRegs +[x0]
-            cbnz    x0, G_M55414_IG45
+            cbnz    x0, G_M55414_IG43
                        ;; size=8 bbWeight=1.49 PerfScore 4.47
-G_M55414_IG42:        ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
+G_M55414_IG40:        ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0]
             mov     x1, xzr
             ; gcrRegs +[x1]
                        ;; size=4 bbWeight=0 PerfScore 0.00
-G_M55414_IG43:        ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref, isz
+G_M55414_IG41:        ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref, isz
             mov     x19, x1
             ; gcrRegs +[x19]
             ldr     x20, [x22]
@@ -534,7 +518,7 @@ G_M55414_IG43:        ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
             ; gcrRegs -[x0]
             ; gcr arg pop 0
             ldrb    w0, [x20, #0x44]
-            cbz     w0, G_M55414_IG49
+            cbz     w0, G_M55414_IG47
             ldr     x0, [x20, #0x10]
             ; gcrRegs +[x0]
             ldr     x1, [x20, #0x30]
@@ -550,20 +534,32 @@ G_M55414_IG43:        ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000
             ; gcrRegs -[x0-x2]
             ; gcr arg pop 0
             cmp     w0, #0
-            ble     G_M55414_IG49
+            ble     G_M55414_IG47
                        ;; size=100 bbWeight=1.49 PerfScore 44.71
-G_M55414_IG44:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M55414_IG42:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19-x20 x22]
             b       G_M55414_IG74
                        ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M55414_IG45:        ; bbWeight=1.49, gcrefRegs=400001 {x0 x22}, byrefRegs=0000 {}, byref
+G_M55414_IG43:        ; bbWeight=1.49, gcrefRegs=400001 {x0 x22}, byrefRegs=0000 {}, byref
             ; gcrRegs +[x0 x22]
             ldr     x1, [x0, #0x08]
             ; gcrRegs +[x1]
-            b       G_M55414_IG43
+            b       G_M55414_IG41
                        ;; size=8 bbWeight=1.49 PerfScore 5.96
-G_M55414_IG46:        ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M55414_IG44:        ; bbWeight=2.22, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x0-x1] +[x19-x20]
+            ldr     x0, [x20, #0x10]
+            ; gcrRegs +[x0]
+                       ;; size=4 bbWeight=2.22 PerfScore 6.66
+G_M55414_IG45:        ; bbWeight=11.48, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x20]
+            mov     x20, x0
+            ; gcrRegs +[x20]
+            cbnz    x20, G_M55414_IG50
+            b       G_M55414_IG56
+                       ;; size=12 bbWeight=11.48 PerfScore 28.70
+G_M55414_IG46:        ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0]
             mov     x0, x20
             ; gcrRegs +[x0]
             mov     w1, wzr
@@ -576,13 +572,21 @@ G_M55414_IG46:        ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
             ; gcr arg pop 0
             ldr     x20, [x20, #0x08]
             cbz     x20, G_M55414_IG56
-                       ;; size=36 bbWeight=1.49 PerfScore 15.65
-G_M55414_IG47:        ; bbWeight=1.31, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+            b       G_M55414_IG49
+                       ;; size=40 bbWeight=1.49 PerfScore 17.14
+G_M55414_IG47:        ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            ldrb    w0, [x20, #0x45]
+            cbnz    w0, G_M55414_IG51
+                       ;; size=8 bbWeight=1.49 PerfScore 5.96
+G_M55414_IG48:        ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
+            b       G_M55414_IG46
+                       ;; size=4 bbWeight=0.03 PerfScore 0.03
+G_M55414_IG49:        ; bbWeight=1.31, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
             movz    x21, #0xD1FFAB1E
             movk    x21, #0xD1FFAB1E LSL #16
             movk    x21, #0xD1FFAB1E LSL #32
                        ;; size=12 bbWeight=1.31 PerfScore 1.97
-G_M55414_IG48:        ; bbWeight=10.13, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M55414_IG50:        ; bbWeight=10.13, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x22, #0x10]
             ; gcrRegs +[x0]
             ldr     x2, [x20, #0x08]
@@ -595,20 +599,9 @@ G_M55414_IG48:        ; bbWeight=10.13, gcrefRegs=580000 {x19 x20 x22}, byrefReg
             ; gcrRegs -[x0-x2]
             ; gcr arg pop 0
             cbz     w0, G_M55414_IG58
-            b       G_M55414_IG51
+            b       G_M55414_IG52
                        ;; size=32 bbWeight=10.13 PerfScore 131.63
-G_M55414_IG49:        ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            ldrb    w0, [x20, #0x45]
-            cbnz    w0, G_M55414_IG52
-                       ;; size=8 bbWeight=1.49 PerfScore 5.96
-G_M55414_IG50:        ; bbWeight=0.03, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
-            b       G_M55414_IG46
-                       ;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M55414_IG51:        ; bbWeight=9.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
-            tbnz    w0, #31, G_M55414_IG39
-            b       G_M55414_IG53
-                       ;; size=8 bbWeight=9.99 PerfScore 19.98
-G_M55414_IG52:        ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M55414_IG51:        ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [x20, #0x10]
             ; gcrRegs +[x0]
             ldr     x1, [x20, #0x38]
@@ -626,10 +619,13 @@ G_M55414_IG52:        ; bbWeight=1.49, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
             tbnz    w0, #31, G_M55414_IG74
             b       G_M55414_IG46
                        ;; size=44 bbWeight=1.49 PerfScore 21.61
+G_M55414_IG52:        ; bbWeight=9.99, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+            tbnz    w0, #31, G_M55414_IG44
+                       ;; size=4 bbWeight=9.99 PerfScore 9.99
 G_M55414_IG53:        ; bbWeight=7.77, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref
             ldr     x0, [x20, #0x18]
             ; gcrRegs +[x0]
-            b       G_M55414_IG40
+            b       G_M55414_IG45
                        ;; size=8 bbWeight=7.77 PerfScore 31.07
 G_M55414_IG54:        ; bbWeight=1.49, gcrefRegs=400002 {x1 x22}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0 x19-x20] +[x1]
@@ -749,7 +745,7 @@ G_M55414_IG66:        ; bbWeight=1.36, gcrefRegs=480000 {x19 x22}, byrefRegs=000
                        ;; size=4 bbWeight=1.36 PerfScore 1.36
 G_M55414_IG67:        ; bbWeight=1.53, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
...

+4 (+0.18%) : 52405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)

@@ -11,30 +11,30 @@
 ;
 ;  V00 this         [V00,T00] ( 29, 13.15)     ref  ->  x19         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T02] ( 15,  6.18)     ref  ->  x20         ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T14] (  5,  3   )     ref  ->  x21         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T16] (  6,  2.50)   ubyte  ->  x22         single-def
+;  V02 arg2         [V02,T13] (  5,  3   )     ref  ->  x21         class-hnd single-def <System.__Canon>
+;  V03 arg3         [V03,T15] (  6,  2.50)   ubyte  ->  x22         single-def
 ;  V04 loc0         [V04    ] ( 17,  7.10)  struct (16) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-;  V05 loc1         [V05,T26] (  5,  3.02)     ref  ->  x23         class-hnd single-def <<unknown class>>
-;  V06 loc2         [V06,T23] (  6,  3.55)     int  ->  x25         single-def
-;  V07 loc3         [V07,T33] (  7,  2.57)     int  ->  x26        
-;  V08 loc4         [V08,T25] (  5,  3.03)   byref  ->  x27        
-;  V09 loc5         [V09,T13] ( 13,  5.60)     int  ->  x28        
-;  V10 loc6         [V10,T46] (  5,  2.00)     int  ->  x28        
-;  V11 loc7         [V11,T52] (  4,  1.51)     ref  ->  x23         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-;  V12 loc8         [V12,T53] (  3,  1.50)     int  ->  x28         single-def
+;  V05 loc1         [V05,T24] (  5,  3.02)     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V06 loc2         [V06,T21] (  6,  3.55)     int  ->  x25         single-def
+;  V07 loc3         [V07,T31] (  7,  2.57)     int  ->  x26        
+;  V08 loc4         [V08,T23] (  5,  3.03)   byref  ->  x27        
+;  V09 loc5         [V09,T12] ( 13,  5.60)     int  ->  x28        
+;  V10 loc6         [V10,T43] (  5,  2.00)     int  ->  x28        
+;  V11 loc7         [V11,T49] (  4,  1.51)     ref  ->  x23         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+;  V12 loc8         [V12,T50] (  3,  1.50)     int  ->  x28         single-def
 ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T40] (  3,  2.01)     int  ->  x25        
+;  V14 tmp1         [V14,T38] (  3,  2.01)     int  ->  x25        
 ;* V15 tmp2         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp3         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V17 tmp4         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T15] (  5,  4.99)   byref  ->   x0         single-def "dup spill"
-;  V19 tmp6         [V19,T77] (  3,  0.00)    long  ->   x1         "spilling helperCall"
+;  V18 tmp5         [V18,T14] (  5,  4.99)   byref  ->   x0         single-def "dup spill"
+;  V19 tmp6         [V19,T74] (  3,  0.00)    long  ->   x1         "spilling helperCall"
 ;* V20 tmp7         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp8         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp9         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V23 tmp10        [V23,T81] (  3,  0   )    long  ->  [fp+0x20]  "spilling helperCall"
+;  V23 tmp10        [V23,T78] (  3,  0   )    long  ->  [fp+0x20]  "spilling helperCall"
 ;* V24 tmp11        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T80] (  4,  0   )    long  ->  [fp+0x18]  "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T77] (  4,  0   )    long  ->  [fp+0x18]  "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V27 tmp14        [V27    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V28 tmp15        [V28    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,12 +47,12 @@
 ;* V35 tmp22        [V35    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp23        [V36    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V37 tmp24        [V37    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V38 tmp25        [V38,T67] (  4,  0.05)    long  ->  x11         "VirtualCall with runtime lookup"
-;  V39 tmp26        [V39,T49] (  3,  1.99)     int  ->  x25         "guarded devirt return temp"
+;  V38 tmp25        [V38,T64] (  4,  0.05)    long  ->  x11         "VirtualCall with runtime lookup"
+;  V39 tmp26        [V39,T46] (  3,  1.99)     int  ->  x25         "guarded devirt return temp"
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt arg temp"
 ;* V41 tmp28        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[Microsoft.Interop.DiagnosticInfo,Microsoft.Interop.DiagnosticInfo]>
-;  V42 tmp29        [V42,T58] (  3,  1.00)     int  ->   x3         "guarded devirt return temp"
-;  V43 tmp30        [V43,T19] (  7,  4.14)     ref  ->  x24         "guarded devirt arg temp"
+;  V42 tmp29        [V42,T55] (  3,  1.00)     int  ->   x3         "guarded devirt return temp"
+;  V43 tmp30        [V43,T17] (  7,  4.14)     ref  ->  x24         "guarded devirt arg temp"
 ;* V44 tmp31        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
 ;* V45 tmp32        [V45    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp33        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,98 +62,95 @@
 ;  V50 tmp37        [V50,T05] (  3,  6.04)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V51 tmp38        [V51,T06] (  3,  6.04)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V53 tmp40        [V53,T56] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V53 tmp40        [V53,T53] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V55 tmp42        [V55,T57] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V55 tmp42        [V55,T54] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V56 tmp43        [V56    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <System.Object>
 ;* V57 tmp44        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V58 tmp45        [V58,T59] (  3,  1.00)     int  ->   x3         "guarded devirt return temp"
+;  V58 tmp45        [V58,T56] (  3,  1.00)     int  ->   x3         "guarded devirt return temp"
 ;* V59 tmp46        [V59    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V60 tmp47        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolGeneric>
-;  V61 tmp48        [V61,T50] (  2,  1.74)     ref  ->   x1         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V61 tmp48        [V61,T47] (  2,  1.74)     ref  ->   x1         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;* V62 tmp49        [V62    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
-;  V63 tmp50        [V63,T61] (  3,  0.87)   ubyte  ->   x3         "Inline return value spill temp"
-;  V64 tmp51        [V64,T54] (  3,  1.31)     ref  ->   x1         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-;  V65 tmp52        [V65,T51] (  2,  1.74)     int  ->  [fp+0x14]  spill-single-def "Inlining Arg"
+;  V63 tmp50        [V63,T58] (  3,  0.87)   ubyte  ->   x3         "Inline return value spill temp"
+;  V64 tmp51        [V64,T51] (  3,  1.31)     ref  ->   x1         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+;  V65 tmp52        [V65,T48] (  2,  1.74)     int  ->  [fp+0x14]  spill-single-def "Inlining Arg"
 ;* V66 tmp53        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V67 tmp54        [V67    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V68 tmp55        [V68    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V69 tmp56        [V69,T64] (  3,  0.10)     int  ->   x1         "Inlining Arg"
-;  V70 tmp57        [V70,T62] (  3,  0.10)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V71 tmp58        [V71,T63] (  3,  0.10)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V69 tmp56        [V69,T61] (  3,  0.10)     int  ->   x1         "Inlining Arg"
+;  V70 tmp57        [V70,T59] (  3,  0.10)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V71 tmp58        [V71,T60] (  3,  0.10)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V72 tmp59        [V72    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V73 tmp60        [V73,T72] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V73 tmp60        [V73,T69] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V74 tmp61        [V74    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V75 tmp62        [V75,T73] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V75 tmp62        [V75,T70] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V76 tmp63        [V76    ] ( 12,  4.55)     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
 ;  V77 tmp64        [V77    ] ( 17,  7.10)     int  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-;  V78 tmp65        [V78,T38] (  2,  2.01)     ref  ->   x0         single-def "field V46._items (fldOffset=0x0)" P-INDEP
-;  V79 tmp66        [V79,T39] (  2,  2.01)     int  ->   x1         single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;  V80 tmp67        [V80,T70] (  2,  0.03)     ref  ->   x0         single-def "field V66._items (fldOffset=0x0)" P-INDEP
-;  V81 tmp68        [V81,T71] (  2,  0.03)     int  ->   x1         single-def "field V66._length (fldOffset=0x8)" P-INDEP
+;  V78 tmp65        [V78,T36] (  2,  2.01)     ref  ->   x0         single-def "field V46._items (fldOffset=0x0)" P-INDEP
+;  V79 tmp66        [V79,T37] (  2,  2.01)     int  ->   x1         single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;  V80 tmp67        [V80,T67] (  2,  0.03)     ref  ->   x0         single-def "field V66._items (fldOffset=0x0)" P-INDEP
+;  V81 tmp68        [V81,T68] (  2,  0.03)     int  ->   x1         single-def "field V66._length (fldOffset=0x8)" P-INDEP
 ;  V82 tmp69        [V82,T08] (  3,  6.04)     int  ->   x2         "index expr"
 ;  V83 tmp70        [V83,T09] (  3,  6.04)     int  ->   x1         "index expr"
-;  V84 tmp71        [V84,T21] (  2,  4.09)    long  ->   x1         "argument with side effect"
-;  V85 tmp72        [V85,T44] (  2,  2.00)    long  ->   x1         "argument with side effect"
-;  V86 tmp73        [V86,T37] (  2,  2.08)    long  ->   x1         "argument with side effect"
-;  V87 tmp74        [V87,T65] (  3,  0.10)     int  ->   x2         "index expr"
-;  V88 tmp75        [V88,T66] (  3,  0.10)     int  ->   x1         "index expr"
-;  V89 tmp76        [V89,T48] (  2,  2.00)    long  ->   x1         "argument with side effect"
-;  V90 tmp77        [V90,T97] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V91 tmp78        [V91,T96] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V92 tmp79        [V92,T98] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V93 tmp80        [V93,T99] (  2,  0   )    long  ->   x0         "argument with side effect"
-;  V94 tmp81        [V94,T100] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V95 tmp82        [V95,T101] (  2,  0   )    long  ->   x0         "argument with side effect"
-;  V96 tmp83        [V96,T45] (  2,  2.00)    long  ->   x1         "argument with side effect"
-;  V97 cse0         [V97,T78] (  3,  0.00)     int  ->  x26         "CSE - conservative"
+;  V84 tmp71        [V84,T19] (  2,  4.09)    long  ->   x1         "argument with side effect"
+;  V85 tmp72        [V85,T41] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V86 tmp73        [V86,T35] (  2,  2.08)    long  ->   x1         "argument with side effect"
+;  V87 tmp74        [V87,T62] (  3,  0.10)     int  ->   x2         "index expr"
+;  V88 tmp75        [V88,T63] (  3,  0.10)     int  ->   x1         "index expr"
+;  V89 tmp76        [V89,T45] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V90 tmp77        [V90,T94] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V91 tmp78        [V91,T93] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V92 tmp79        [V92,T95] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V93 tmp80        [V93,T96] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V94 tmp81        [V94,T97] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V95 tmp82        [V95,T98] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V96 tmp83        [V96,T42] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V97 cse0         [V97,T75] (  3,  0.00)     int  ->  x26         "CSE - conservative"
 ;  V98 cse1         [V98,T03] ( 31,  6.49)    long  ->  x24         multi-def "CSE - aggressive"
-;  V99 rat0         [V99,T69] (  3,  0.03)    long  ->   x0         "Spilling to split statement for tree"
-;  V100 rat1        [V100,T68] (  3,  0.04)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V101 rat2        [V101,T17] (  3,  4.42)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat3        [V102,T22] (  3,  4.02)    long  ->   x1         "runtime lookup"
+;  V99 rat0         [V99,T66] (  3,  0.03)    long  ->   x0         "Spilling to split statement for tree"
+;  V100 rat1        [V100,T65] (  3,  0.04)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V101 rat2        [V101,T16] (  3,  4.42)    long  ->   x0         "Spilling to split statement for tree"
+;  V102 rat3        [V102,T20] (  3,  4.02)    long  ->   x1         "runtime lookup"
 ;  V103 rat4        [V103,T11] (  3,  5.62)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V104 rat5        [V104,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat6        [V105,T41] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V106 rat7        [V106,T12] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V107 rat8        [V107,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V108 rat9        [V108,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V109 rat10       [V109,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V110 rat11       [V110,T20] (  3,  4.09)    long  ->   x1         "runtime lookup"
-;  V111 rat12       [V111,T10] (  3,  5.72)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V112 rat13       [V112,T42] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V113 rat14       [V113,T29] (  3,  2.81)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V114 rat15       [V114,T34] (  3,  2.29)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat16       [V115,T36] (  3,  2.08)    long  ->   x1         "runtime lookup"
-;  V116 rat17       [V116,T27] (  3,  2.92)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V117 rat18       [V117,T55] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V118 rat19       [V118,T28] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V119 rat20       [V119,T35] (  3,  2.21)    long  ->   x0         "Spilling to split statement for tree"
-;  V120 rat21       [V120,T43] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V121 rat22       [V121,T30] (  3,  2.81)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V122 rat23       [V122,T82] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V123 rat24       [V123,T83] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V124 rat25       [V124,T84] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;* V125 rat26       [V125,T76] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V126 rat27       [V126,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V127 rat28       [V127,T74] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V128 rat29       [V128,T85] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V129 rat30       [V129,T86] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V130 rat31       [V130,T87] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V131 rat32       [V131,T88] (  3,  0   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V132 rat33       [V132,T89] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V133 rat34       [V133,T90] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V134 rat35       [V134,T102] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V135 rat36       [V135,T91] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V136 rat37       [V136,T92] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V137 rat38       [V137,T93] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V138 rat39       [V138,T94] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V139 rat40       [V139,T95] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V140 rat41       [V140,T75] (  3,  0.00)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V141 rat42       [V141,T60] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V142 rat43       [V142,T31] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V143 rat44       [V143,T47] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V144 rat45       [V144,T32] (  3,  2.79)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V104 rat5        [V104,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat6        [V105,T22] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat7        [V106,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat8        [V107,T18] (  3,  4.09)    long  ->   x1         "runtime lookup"
+;  V108 rat9        [V108,T10] (  3,  5.72)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V109 rat10       [V109,T39] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V110 rat11       [V110,T27] (  3,  2.81)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V111 rat12       [V111,T32] (  3,  2.29)    long  ->   x0         "Spilling to split statement for tree"
+;  V112 rat13       [V112,T34] (  3,  2.08)    long  ->   x1         "runtime lookup"
+;  V113 rat14       [V113,T25] (  3,  2.92)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V114 rat15       [V114,T52] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V115 rat16       [V115,T26] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V116 rat17       [V116,T33] (  3,  2.21)    long  ->   x0         "Spilling to split statement for tree"
+;  V117 rat18       [V117,T40] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V118 rat19       [V118,T28] (  3,  2.81)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V119 rat20       [V119,T79] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
+;  V120 rat21       [V120,T80] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V121 rat22       [V121,T81] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;* V122 rat23       [V122,T73] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V123 rat24       [V123,T76] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V124 rat25       [V124,T71] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V125 rat26       [V125,T82] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V126 rat27       [V126,T83] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V127 rat28       [V127,T84] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V128 rat29       [V128,T85] (  3,  0   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
+;  V129 rat30       [V129,T86] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V130 rat31       [V130,T87] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V131 rat32       [V131,T99] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V132 rat33       [V132,T88] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V133 rat34       [V133,T89] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V134 rat35       [V134,T90] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V135 rat36       [V135,T91] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V136 rat37       [V136,T92] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V137 rat38       [V137,T72] (  3,  0.00)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V138 rat39       [V138,T57] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V139 rat40       [V139,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V140 rat41       [V140,T44] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V141 rat42       [V141,T30] (  3,  2.79)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 48
 
@@ -176,7 +173,7 @@ G_M33517_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     w22, w3
                        ;; size=52 bbWeight=1 PerfScore 10.50
 G_M33517_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
-            cbz     x20, G_M33517_IG59
+            cbz     x20, G_M33517_IG60
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M33517_IG03:        ; bbWeight=1.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     w0, [x19, #0x40]
@@ -197,7 +194,7 @@ G_M33517_IG06:        ; bbWeight=1.00, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M33517_IG17
+            bne     G_M33517_IG19
                        ;; size=24 bbWeight=1.00 PerfScore 5.98
...

+4 (+0.25%) : 54451.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

@@ -27,10 +27,10 @@
 ;  V15 tmp8         [V15,T13] (  6,  4   )    long  ->   x2         "Indirect call through function pointer"
 ;* V16 tmp9         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.HashSet`1+Enumerator[Roslyn.Utilities.AsyncLazy`1+Request[Microsoft.CodeAnalysis.TreeAndVersion]]>
 ;* V17 tmp10        [V17,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V18 tmp11        [V18,T41] (  2,  0.01)     ref  ->   x0         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+;  V18 tmp11        [V18,T38] (  2,  0.01)     ref  ->   x0         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
 ;  V19 tmp12        [V19,T24] (  3,  2   )     ref  ->   x1         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V20 tmp13        [V20,T22] (  4,  2.25)     int  ->  x14         single-def "Inline stloc first use temp"
-;* V21 tmp14        [V21,T39] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V21 tmp14        [V21,T37] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V22 tmp15        [V22,T03] ( 10,  7.77)     ref  ->  x21         class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
 ;* V23 tmp16        [V23,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V24 tmp17        [V24,T19] (  3,  3.11)   byref  ->  x15         "Inlining Arg"
@@ -44,12 +44,12 @@
 ;  V32 tmp25        [V32,T29] (  3,  1.55)     ref  ->  x23         class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
 ;  V33 tmp26        [V33,T35] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
 ;  V34 tmp27        [V34,T14] (  5,  3.89)     int  ->  x14         "Inline stloc first use temp"
-;  V35 tmp28        [V35,T42] (  3,  0   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V35 tmp28        [V35,T39] (  3,  0   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V36 tmp29        [V36,T23] (  3,  2.21)     ref  ->   x1         class-hnd "Inline stloc first use temp" <System.Object>
 ;  V37 tmp30        [V37,T10] (  3,  4.57)   byref  ->   x0         "Inlining Arg"
 ;  V38 tmp31        [V38,T21] (  2,  3.05)     ref  ->   x1         class-hnd exact "Inlining Arg" <System.Object>
 ;  V39 tmp32        [V39    ] (  2,  0   )  struct ( 8) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
-;  V40 tmp33        [V40,T43] (  3,  0   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+;  V40 tmp33        [V40,T40] (  3,  0   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;* V41 tmp34        [V41    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V42 tmp35        [V42,T17] (  4,  3.26)   byref  ->  x20         "Inlining Arg"
 ;  V43 tmp36        [V43,T26] (  5,  1.71)     ref  ->  x24         class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
@@ -57,11 +57,11 @@
 ;  V45 tmp38        [V45    ] (  7,  5.00)     ref  ->  [fp+0x38]  do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
 ;  V46 tmp39        [V46    ] (  3,  2   )     ref  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
 ;  V47 tmp40        [V47    ] (  2,  0   )     int  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V39._count (fldOffset=0x0)" P-DEP
-;  V48 tmp41        [V48,T46] (  2,  0   )     ref  ->   x0         "argument with side effect"
-;  V49 tmp42        [V49,T47] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V50 tmp43        [V50,T48] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V48 tmp41        [V48,T43] (  2,  0   )     ref  ->   x0         "argument with side effect"
+;  V49 tmp42        [V49,T44] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V50 tmp43        [V50,T45] (  2,  0   )     ref  ->   x1         "argument with side effect"
 ;  V51 PSPSym       [V51,T32] (  1,  1   )    long  ->  [fp+0x48]  do-not-enreg[V] "PSPSym"
-;  V52 cse0         [V52,T49] (  2,  0   )   byref  ->  x24         hoist "CSE - moderate"
+;  V52 cse0         [V52,T46] (  2,  0   )   byref  ->  x24         hoist "CSE - moderate"
 ;  V53 cse1         [V53,T20] (  4,  3.11)   byref  ->  x14         "CSE - moderate"
 ;  V54 cse2         [V54,T09] (  6,  4.66)   byref  ->   x0         multi-def "CSE - aggressive"
 ;  V55 cse3         [V55,T07] ( 10,  5.20)    long  ->  x21         multi-def "CSE - aggressive"
@@ -71,13 +71,10 @@
 ;  V59 rat3         [V59,T11] (  3,  4.40)    long  ->   x1         "Spilling to split statement for tree"
 ;  V60 rat4         [V60,T05] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;  V61 rat5         [V61,T06] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V62 rat6         [V62,T38] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V63 rat7         [V63,T40] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V64 rat8         [V64,T37] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V65 rat9         [V65,T16] (  3,  3.42)    long  ->   x1         "Spilling to split statement for tree"
-;  V66 rat10        [V66,T12] (  3,  4.35)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V67 rat11        [V67,T44] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
-;  V68 rat12        [V68,T45] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V62 rat6         [V62,T16] (  3,  3.42)    long  ->   x1         "Spilling to split statement for tree"
+;  V63 rat7         [V63,T12] (  3,  4.35)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V64 rat8         [V64,T41] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
+;  V65 rat9         [V65,T42] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 64
 
@@ -226,7 +223,7 @@ G_M38013_IG15:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=000
             ldr     x2, [x1, #0x38]
             ldr     x2, [x2]
             ldr     x2, [x2, #0x20]
-            cbz     x2, G_M38013_IG49
+            cbz     x2, G_M38013_IG50
                        ;; size=24 bbWeight=1 PerfScore 13.50
 G_M38013_IG16:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
@@ -236,7 +233,7 @@ G_M38013_IG16:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             ldr     x0, [x21, #0x38]
             ldr     x0, [x0]
             ldr     x11, [x0, #0x58]
-            cbz     x11, G_M38013_IG50
+            cbz     x11, G_M38013_IG51
                        ;; size=24 bbWeight=1 PerfScore 11.50
 G_M38013_IG17:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
             mov     x0, x20
@@ -256,7 +253,7 @@ G_M38013_IG18:        ; bbWeight=1, gcVars=0000000000008001 {V00 V06}, gcrefRegs
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M38013_IG51
+            cbz     w0, G_M38013_IG52
                        ;; size=24 bbWeight=1 PerfScore 6.50
 G_M38013_IG19:        ; bbWeight=0.78, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ldr     x0, [fp, #0x20]    // [V00 this]
@@ -299,7 +296,7 @@ G_M38013_IG21:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
             blr     x2
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            b       G_M38013_IG35
+            b       G_M38013_IG45
                        ;; size=32 bbWeight=0 PerfScore 0.00
 G_M38013_IG22:        ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
             ; byrRegs +[x14]
@@ -307,7 +304,7 @@ G_M38013_IG22:        ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             ; byrRegs +[x15]
             ldr     x12, [x15]
             ; gcrRegs +[x12]
-            cbz     x12, G_M38013_IG30
+            cbz     x12, G_M38013_IG39
                        ;; size=12 bbWeight=0.78 PerfScore 3.50
 G_M38013_IG23:        ; bbWeight=0.00, gcrefRegs=280000 {x19 x21}, byrefRegs=C000 {x14 x15}, byref, isz
             ; gcrRegs -[x12]
@@ -319,7 +316,7 @@ G_M38013_IG23:        ; bbWeight=0.00, gcrefRegs=280000 {x19 x21}, byrefRegs=C00
             ; byrRegs +[x15]
             ldapr   w15, [x15]
             ; byrRegs -[x15]
-            cbz     w15, G_M38013_IG30
+            cbz     w15, G_M38013_IG39
             b       G_M38013_IG21
                        ;; size=20 bbWeight=0.00 PerfScore 0.02
 G_M38013_IG24:        ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
@@ -329,7 +326,7 @@ G_M38013_IG24:        ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             and     w14, w14, w15
             mov     w15, #0xD1FFAB1E
             cmp     w14, w15
-            beq     G_M38013_IG29
+            beq     G_M38013_IG38
                        ;; size=24 bbWeight=0.78 PerfScore 4.66
 G_M38013_IG25:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             mov     x0, x19
@@ -354,176 +351,44 @@ G_M38013_IG26:        ; bbWeight=0.78, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
             ldapr   w14, [x0]
             mov     w15, #0xD1FFAB1E
             tst     w14, w15
-            beq     G_M38013_IG28
+            beq     G_M38013_IG37
                        ;; size=28 bbWeight=0.78 PerfScore 6.99
 G_M38013_IG27:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x20 x22]
             ; byrRegs -[x0]
-            b       G_M38013_IG44
+            b       G_M38013_IG29
                        ;; size=4 bbWeight=0 PerfScore 0.00
-G_M38013_IG28:        ; bbWeight=0.78, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0001 {x0}, byref, isz
-            ; gcrRegs +[x20 x22]
-            ; byrRegs +[x0]
-            orr     w15, w14, #0xD1FFAB1E
-            mov     w12, w14
-            casal   w12, w15, [x0]
-            cmp     w12, w14
-            beq     G_M38013_IG31
-            b       G_M38013_IG43
-                       ;; size=24 bbWeight=0.78 PerfScore 5.05
-G_M38013_IG29:        ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x20 x22]
-            ; byrRegs -[x0]
-            ldr     x20, [x19, #0x38]
-            ; gcrRegs +[x20]
-            b       G_M38013_IG26
-                       ;; size=8 bbWeight=0.78 PerfScore 3.11
-G_M38013_IG30:        ; bbWeight=0.78, gcrefRegs=280000 {x19 x21}, byrefRegs=4000 {x14}, byref, isz
-            ; gcrRegs -[x20]
-            ; byrRegs +[x14]
-            ldapr   w15, [x14]
-            tbz     w15, #21, G_M38013_IG24
+G_M38013_IG28:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x19 x21]
+            movz    x0, #0xD1FFAB1E      // code for System.ThrowHelper:ThrowNullReferenceException()
+            movk    x0, #0xD1FFAB1E LSL #16
+            movk    x0, #0xD1FFAB1E LSL #32
+            ldr     x0, [x0]
+            blr     x0
+            ; gcr arg pop 0
+            brk_unix #0
+                       ;; size=24 bbWeight=0 PerfScore 0.00
+G_M38013_IG29:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[x19 x21]
+            cbnz    w23, G_M38013_IG45
+                       ;; size=4 bbWeight=0 PerfScore 0.00
+G_M38013_IG30:        ; bbWeight=0, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+            ldr     x0, [x21, #0x08]
+            ; gcrRegs +[x0]
+            ldrsb   wzr, [x0]
+            str     wzr, [fp, #0x28]   // [V39 tmp32]
+            add     x24, x0, #52
+            ; byrRegs +[x24]
+            b       G_M38013_IG36
+                       ;; size=20 bbWeight=0 PerfScore 0.00
+G_M38013_IG31:        ; bbWeight=0, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0] +[x20 x22]
+            ; byrRegs -[x24]
+            cbz     w0, G_M38013_IG30
             b       G_M38013_IG41
-                       ;; size=12 bbWeight=0.78 PerfScore 3.89
-G_M38013_IG31:        ; bbWeight=0.78, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x20 x22]
-            ; byrRegs -[x14]
-            add     x14, x22, #56
-            ; byrRegs +[x14]
-            mov     x15, x20
-            ; gcrRegs +[x15]
-            bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x20]
-            ; byrRegs -[x14]
-            add     x0, x22, #52
-            ; byrRegs +[x0]
-            ldapr   w1, [x0]
-            orr     w1, w1, #0xD1FFAB1E
-            swpal   w1, w0, [x0]
-            ; byrRegs -[x0]
-            ldr     x23, [x22, #0x28]
-            ; gcrRegs +[x23]
-            cbz     x23, G_M38013_IG33
-                       ;; size=36 bbWeight=0.78 PerfScore 10.10
-G_M38013_IG32:        ; bbWeight=0, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz
-            mov     x0, x22
-            ; gcrRegs +[x0]
-            movz    x1, #0xD1FFAB1E      // code for <unknown method>
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            ldr     x1, [x1]
-            blr     x1
-            ; gcrRegs -[x0]
-            ; gcr arg pop 0
-            add     x0, x23, #16
-            ; byrRegs +[x0]
-            ldapr   x0, [x0]
-            ; gcrRegs +[x0]
-            ; byrRegs -[x0]
-            cbz     x0, G_M38013_IG33
-            movz    x1, #0xD1FFAB1E      // code for <unknown method>
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            ldr     x1, [x1]
-            blr     x1
-            ; gcrRegs -[x0 x23]
-            ; gcr arg pop 0
-                       ;; size=56 bbWeight=0 PerfScore 0.00
-G_M38013_IG33:        ; bbWeight=0.76, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
-            add     x0, x22, #32
-            ; byrRegs +[x0]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            ldr     x1, [x1]
-            ; gcrRegs +[x1]
-            cbz     x0, G_M38013_IG48
-            bl      <unknown method>
-            ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0]
-            ; gcr arg pop 0
-            mov     x1, x0
-            ; gcrRegs +[x1]
-            cbz     x1, G_M38013_IG35
-                       ;; size=36 bbWeight=0.76 PerfScore 6.47
...

librariestestsnotieredcompilation.run.linux.arm64.Release.mch

-8 (-1.74%) : 96241.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V07 tmp2         [V07,T06] (  6,  8   )   byref  ->  x26        
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V09 tmp4         [V09,T02] (  8, 12   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V10 tmp5         [V10,T12] (  4,  4   )     int  ->  registers  
+;  V10 tmp5         [V10,T12] (  2,  3.96)     int  ->   x0        
 ;  V11 tmp6         [V11,T07] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V12 cse0         [V12,T03] (  4, 11.88)    long  ->  x21         "CSE - aggressive"
 ;  V13 cse1         [V13,T09] (  5,  7   )     int  ->  x23         "CSE - aggressive"
@@ -121,8 +121,8 @@ G_M22994_IG09:        ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
             ; byrRegs -[x26]
             ; gcr arg pop 0
             cmp     w0, #0
-            cset    x21, eq
-            cbnz    w21, G_M22994_IG22
+            cset    x0, eq
+            cbnz    w0, G_M22994_IG22
                        ;; size=32 bbWeight=1.98 PerfScore 24.75
 G_M22994_IG10:        ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
             add     w22, w22, #1
@@ -209,10 +209,8 @@ G_M22994_IG18:        ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             ; gcrRegs -[x0-x1]
             ; byrRegs -[x26]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x0, eq
-            cbnz    w0, G_M22994_IG22
-                       ;; size=44 bbWeight=0.02 PerfScore 0.34
+            cbz     w0, G_M22994_IG22
+                       ;; size=36 bbWeight=0.02 PerfScore 0.32
 G_M22994_IG19:        ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             add     w22, w22, #1
             cmp     w23, w22
@@ -247,7 +245,7 @@ G_M22994_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_unix #0
                        ;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 460, prolog size 40, PerfScore 125.20, instruction count 115, allocated bytes for code 460 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 452, prolog size 40, PerfScore 125.18, instruction count 113, allocated bytes for code 452 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -258,7 +256,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 115 (0x00073) Actual length = 460 (0x0001cc)
+  Function Length   : 113 (0x00071) Actual length = 452 (0x0001c4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.78%) : 148202.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T21] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -274,10 +274,8 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG21
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG21
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -499,7 +497,7 @@ G_M10809_IG22:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_unix #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1032, prolog size 36, PerfScore 144.49, instruction count 258, allocated bytes for code 1032 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1024, prolog size 36, PerfScore 144.47, instruction count 256, allocated bytes for code 1024 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -510,7 +508,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 258 (0x00102) Actual length = 1032 (0x000408)
+  Function Length   : 256 (0x00100) Actual length = 1024 (0x000400)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.77%) : 151282.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T21] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -275,10 +275,8 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG21
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG21
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -500,7 +498,7 @@ G_M10809_IG22:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_unix #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1036, prolog size 40, PerfScore 145.49, instruction count 259, allocated bytes for code 1036 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1028, prolog size 40, PerfScore 145.47, instruction count 257, allocated bytes for code 1028 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -511,7 +509,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 259 (0x00103) Actual length = 1036 (0x00040c)
+  Function Length   : 257 (0x00101) Actual length = 1028 (0x000404)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 6027.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T14] (  4,  5   )     int  ->  x21        
 ;  V07 loc4         [V07,T15] (  4,  5   )     int  ->  x24        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  x19        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  x19        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [fp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->   x0        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [fp-0x50]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T18] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T24] (  3,  3   )     int  ->   x1         "Inlining Arg"
-;  V31 tmp19        [V31,T34] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V31 tmp19        [V31,T32] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V32 tmp20        [V32,T23] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,24 +51,24 @@
 ;  V40 tmp28        [V40,T19] (  5,  4.00)    long  ->  [fp-0x58]  spill-single-def "Inlining Arg"
 ;* V41 tmp29        [V41    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V42 tmp30        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V43 tmp31        [V43,T35] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V43 tmp31        [V43,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V44 tmp32        [V44,T11] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V45 tmp33        [V45,T12] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V46 tmp34        [V46,T06] (  3, 12   )   byref  ->   x1         "dup spill"
 ;* V47 tmp35        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V49 tmp37        [V49,T44] (  4,  1.50)   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V49 tmp37        [V49,T42] (  4,  1.50)   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V51 tmp39        [V51    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V52 tmp40        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V53 tmp41        [V53,T40] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V54 tmp42        [V54,T41] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V53 tmp41        [V53,T38] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V54 tmp42        [V54,T39] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V55 tmp43        [V55    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V56 tmp44        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V57 tmp45        [V57,T42] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V58 tmp46        [V58,T43] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V59 tmp47        [V59,T45] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V60 tmp48        [V60,T46] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V57 tmp45        [V57,T40] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V58 tmp46        [V58,T41] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V59 tmp47        [V59,T43] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V60 tmp48        [V60,T44] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp50        [V62    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V63 tmp51        [V63    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
 ;* V66 tmp54        [V66    ] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x8)" P-INDEP
 ;  V67 tmp55        [V67,T16] (  3,  4.50)   byref  ->  x23         single-def "V05.[000..008)"
 ;  V68 tmp56        [V68,T17] (  3,  4.50)     int  ->  x22         single-def "V05.[008..012)"
-;  V69 tmp57        [V69,T36] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
-;  V70 tmp58        [V70,T39] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
+;  V69 tmp57        [V69,T34] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
+;  V70 tmp58        [V70,T37] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
 ;  V71 tmp59        [V71,T03] (  2, 16   )     ref  ->   x1         "argument with side effect"
 ;  V72 GsCookie     [V72    ] (  1,  1   )    long  ->  [fp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V73 PSPSym       [V73,T48] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
+;  V73 PSPSym       [V73,T45] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
 ;  V74 cse0         [V74,T08] (  5, 10   )     int  ->  x11         "CSE - aggressive"
 ;  V75 cse1         [V75,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V76 cse2         [V76,T37] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
-;  V77 rat0         [V77,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V76 cse2         [V76,T35] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V77 rat0         [V77,T29] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V78 rat1         [V78,T26] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V79 rat2         [V79,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V79 rat2         [V79,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V80 rat3         [V80,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V81 rat4         [V81,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V81 rat4         [V81,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V82 rat5         [V82,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V83 rat6         [V83,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V84 rat7         [V84,T47] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V85 rat8         [V85,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V86 rat9         [V86,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V87 rat10        [V87,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V88 rat11        [V88,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V83 rat6         [V83,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V84 rat7         [V84,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V85 rat8         [V85,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 64
 

+0 (0.00%) : 3328.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

+0 (0.00%) : 64480.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:CopyToObjects(System.Object[],int):this (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 this         [V00,T10] (  4,  4   )     ref  ->  x20         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->  x21         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T06] (  5, 50   )     int  ->  x19        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->  x23        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
 ;  V06 loc3         [V06,T02] (  7, 88   )     ref  ->  x26         class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->  x27         class-hnd "Inlining Arg" <System.__Canon>
 ;  V13 tmp6         [V13,T05] (  2, 64   )     ref  ->  x28         class-hnd "Inlining Arg" <System.__Canon>
-;  V14 tmp7         [V14,T16] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T07] (  2, 32   )     ref  ->  x27         "field V08.key (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T08] (  2, 32   )     ref  ->  x28         "field V08.value (fldOffset=0x8)" P-INDEP
 ;  V17 cse0         [V17,T13] (  2, 17   )    long  ->  x25         hoist "CSE - aggressive"
-;  V18 cse1         [V18,T18] (  3,  6   )     int  ->  x24         "CSE - aggressive"
-;  V19 rat0         [V19,T20] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V20 rat1         [V20,T21] (  3,  4   )    long  ->  x25         "runtime lookup"
-;  V21 rat2         [V21,T19] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
-;* V22 rat3         [V22,T15] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V23 rat4         [V23,T22] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V24 rat5         [V24,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V25 rat6         [V25,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat7         [V26,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V27 rat8         [V27,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V18 cse1         [V18,T16] (  3,  6   )     int  ->  x24         "CSE - aggressive"
+;  V19 rat0         [V19,T18] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V20 rat1         [V20,T19] (  3,  4   )    long  ->  x25         "runtime lookup"
+;  V21 rat2         [V21,T17] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
+;* V22 rat3         [V22,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V23 rat4         [V23,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V24 rat5         [V24,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 

realworld.run.linux.arm64.checked.mch

-12 (-0.14%) : 14476.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)

@@ -288,7 +288,6 @@
 ;  V277 cse13       [V277,T204] (  3,  0.12)     ref  ->   x1         "CSE - conservative"
 ;  V278 cse14       [V278,T205] (  3,  0.12)     ref  ->   x1         "CSE - conservative"
 ;  V279 cse15       [V279,T19] (  8, 16   )   byref  ->  [fp+0x18]  multi-def "CSE - moderate"
-;  TEMP_01                                   byref  ->  [fp+0x10]
 ;
 ; Lcl frame size = 352
 
@@ -300,12 +299,11 @@ G_M30044_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x25, x26, [sp, #0xD1FFAB1E]
             stp     x27, x28, [sp, #0xD1FFAB1E]
             mov     fp, sp
-            str     xzr, [fp, #0x10]   // [TEMP_01]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
-                       ;; size=40 bbWeight=1 PerfScore 8.50
+                       ;; size=36 bbWeight=1 PerfScore 7.50
 G_M30044_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19, #0x40]
             ; gcrRegs +[x21]
@@ -1784,11 +1782,6 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ldr     x1, [x1, x4]
             ; gcrRegs +[x1]
             ; byrRegs -[x1]
-            ldr     x5, [fp, #0xE8]    // [V22 loc20]
-            ; gcrRegs +[x5]
-            add     x14, x5, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x10]   // [TEMP_01]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
@@ -1796,13 +1789,12 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
-            movz    x6, #0xD1FFAB1E      // code for <unknown method>
-            movk    x6, #0xD1FFAB1E LSL #16
-            movk    x6, #0xD1FFAB1E LSL #32
-            ldr     x6, [x6]
-            blr     x6
-            ; gcrRegs -[x1 x5] +[x0]
-            ; byrRegs -[x14]
+            movz    x5, #0xD1FFAB1E      // code for <unknown method>
+            movk    x5, #0xD1FFAB1E LSL #16
+            movk    x5, #0xD1FFAB1E LSL #32
+            ldr     x5, [x5]
+            blr     x5
+            ; gcrRegs -[x1] +[x0]
             mov     x1, x0
             ; gcrRegs +[x1]
             ldr     x0, [fp, #0x40]    // [V131 tmp97]
@@ -1813,15 +1805,18 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ; GC ptr vars -{V131}
             blr     x2
             ; gcrRegs -[x1]
-            ldr     x14, [fp, #0x10]   // [TEMP_01]
+            ldr     x2, [fp, #0xE8]    // [V22 loc20]
+            ; gcrRegs +[x2]
+            add     x14, x2, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
+            ; GC ptr vars -{V22}
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x2, [fp, #0xE8]    // [V22 loc20]
-            ; gcrRegs +[x2]
+            str     x2, [fp, #0xE8]    // [V22 loc20]
+            ; GC ptr vars +{V22}
             ldr     x1, [x2, #0x08]
             ; gcrRegs +[x1]
             mov     x15, x1
@@ -1847,7 +1842,7 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ldr     w14, [x6, #0x08]
             cmp     w14, w15
             bls     G_M30044_IG52
-                       ;; size=264 bbWeight=0.04 PerfScore 3.16
+                       ;; size=256 bbWeight=0.04 PerfScore 3.00
 G_M30044_IG51:        ; bbWeight=0.02, gcrefRegs=1FF80042 {x1 x6 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref
             add     w14, w15, #1
             str     w14, [x27, #0x10]
@@ -3725,7 +3720,7 @@ G_M30044_IG114:        ; bbWeight=0, gcrefRegs=1BF80000 {x19 x20 x21 x22 x23 x24
             b       G_M30044_IG100
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 8856, prolog size 32, PerfScore 2225.47, instruction count 2214, allocated bytes for code 8856 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
+; Total bytes of code 8844, prolog size 28, PerfScore 2224.31, instruction count 2211, allocated bytes for code 8844 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -3736,7 +3731,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 2214 (0x008a6) Actual length = 8856 (0x002298)
+  Function Length   : 2211 (0x008a3) Actual length = 8844 (0x00228c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.10%) : 32226.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

@@ -1681,38 +1681,36 @@ G_M4474_IG49:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
             ; byrRegs -[x4]
             str     x0, [fp, #0x90]    // [V18 loc13]
             ; GC ptr vars +{V18}
-            ldr     x2, [fp, #0x98]    // [V17 loc12]
+            ldr     x2, [fp, #0xA8]    // [V10 loc5]
             ; gcrRegs +[x2]
-            add     x14, x2, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
-            ldr     x3, [fp, #0xA8]    // [V10 loc5]
-            ; gcrRegs +[x3]
-            ldr     w0, [x3, #0x08]
+            ldr     w0, [x2, #0x08]
             ; gcrRegs -[x0]
-            ldr     w4, [fp, #0xEC]    // [V16 loc11]
-            cmp     w4, w0
+            ldr     w3, [fp, #0xEC]    // [V16 loc11]
+            cmp     w3, w0
             bhs     G_M4474_IG100
-            ldr     x5, [fp, #0x20]    // [V229 cse10]
-            ; byrRegs +[x5]
-            ldr     x6, [fp, #0xB0]    // [V226 cse7]
-            ldr     x0, [x5, x6]
+            ldr     x4, [fp, #0x20]    // [V229 cse10]
+            ; byrRegs +[x4]
+            ldr     x5, [fp, #0xB0]    // [V226 cse7]
+            ldr     x0, [x4, x5]
             ; gcrRegs +[x0]
-            ldr     x7, [x0]
-            ldr     x7, [x7, #0x48]
-            ldr     x7, [x7, #0x30]
-            blr     x7
-            ; gcrRegs -[x2-x3]
-            ; byrRegs -[x5 x14]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            ldr     x6, [x0]
+            ldr     x6, [x6, #0x48]
+            ldr     x6, [x6, #0x30]
+            blr     x6
+            ; gcrRegs -[x2]
+            ; byrRegs -[x4]
+            ldr     x1, [fp, #0x98]    // [V17 loc12]
+            ; gcrRegs +[x1]
+            add     x14, x1, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
+            ; GC ptr vars -{V17}
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x1, [fp, #0x98]    // [V17 loc12]
-            ; gcrRegs +[x1]
+            str     x1, [fp, #0x98]    // [V17 loc12]
+            ; GC ptr vars +{V17}
             ldr     x0, [x1, #0x08]
             ; gcrRegs +[x0]
             movz    x2, #0xD1FFAB1E      // code for System.String:IsNullOrWhiteSpace(System.String):ubyte
@@ -1722,7 +1720,7 @@ G_M4474_IG49:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
             blr     x2
             ; gcrRegs -[x0-x1]
             cbz     w0, G_M4474_IG56
-                       ;; size=200 bbWeight=0.04 PerfScore 3.06
+                       ;; size=192 bbWeight=0.04 PerfScore 2.90
 G_M4474_IG50:        ; bbWeight=0.02, gcrefRegs=EA80000 {x19 x21 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
             movz    x0, #0xD1FFAB1E      // code for <unknown method>
             movk    x0, #0xD1FFAB1E LSL #16
@@ -3235,7 +3233,7 @@ G_M4474_IG100:        ; bbWeight=0, gcVars=0000000000000000000000000000000000000
             brk_unix #0
                        ;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 7784, prolog size 32, PerfScore 2093.60, instruction count 1946, allocated bytes for code 7784 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 7776, prolog size 32, PerfScore 2093.44, instruction count 1944, allocated bytes for code 7776 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -3246,7 +3244,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 1946 (0x0079a) Actual length = 7784 (0x001e68)
+  Function Length   : 1944 (0x00798) Actual length = 7776 (0x001e60)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 18229.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

+0 (0.00%) : 18389.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T15] (  4,  5   )     int  ->  x21        
 ;  V07 loc4         [V07,T16] (  4,  5   )     int  ->  x24        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  x19        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  x19        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [fp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->   x0        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [fp-0x50]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T19] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T24] (  3,  3   )     int  ->   x1         "Inlining Arg"
-;  V31 tmp19        [V31,T35] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V31 tmp19        [V31,T33] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V32 tmp20        [V32,T23] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
 ;  V38 tmp26        [V38,T13] (  5,  5   )    long  ->  [fp-0x58]  spill-single-def "Inlining Arg"
 ;* V39 tmp27        [V39    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V40 tmp28        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V41 tmp29        [V41,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V41 tmp29        [V41,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V42 tmp30        [V42,T11] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V43 tmp31        [V43,T12] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V44 tmp32        [V44,T06] (  3, 12   )   byref  ->   x1         "dup spill"
 ;* V45 tmp33        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp34        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V47 tmp35        [V47,T34] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp35        [V47,T32] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V49 tmp37        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V51 tmp39        [V51,T40] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V52 tmp40        [V52,T41] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V51 tmp39        [V51,T38] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V52 tmp40        [V52,T39] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V53 tmp41        [V53    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V54 tmp42        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V55 tmp43        [V55,T42] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V56 tmp44        [V56,T43] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V57 tmp45        [V57,T44] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp46        [V58,T45] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V55 tmp43        [V55,T40] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V56 tmp44        [V56,T41] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V57 tmp45        [V57,T42] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp46        [V58,T43] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V59 tmp47        [V59    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V60 tmp48        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
 ;* V64 tmp52        [V64    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x8)" P-INDEP
 ;  V65 tmp53        [V65,T17] (  3,  4.50)   byref  ->  x23         single-def "V05.[000..008)"
 ;  V66 tmp54        [V66,T18] (  3,  4.50)     int  ->  x22         single-def "V05.[008..012)"
-;  V67 tmp55        [V67,T37] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
-;  V68 tmp56        [V68,T39] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
+;  V67 tmp55        [V67,T35] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
+;  V68 tmp56        [V68,T37] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
 ;  V69 tmp57        [V69,T03] (  2, 16   )     ref  ->   x1         "argument with side effect"
 ;  V70 GsCookie     [V70    ] (  1,  1   )    long  ->  [fp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V71 PSPSym       [V71,T47] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
+;  V71 PSPSym       [V71,T44] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
 ;  V72 cse0         [V72,T08] (  5, 10   )     int  ->  x11         "CSE - aggressive"
 ;  V73 cse1         [V73,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V74 rat0         [V74,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V74 rat0         [V74,T29] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V75 rat1         [V75,T26] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V76 rat2         [V76,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V76 rat2         [V76,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V77 rat3         [V77,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V78 rat4         [V78,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V78 rat4         [V78,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V79 rat5         [V79,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V80 rat6         [V80,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V81 rat7         [V81,T46] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V82 rat8         [V82,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V83 rat9         [V83,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V84 rat10        [V84,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V85 rat11        [V85,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V80 rat6         [V80,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V81 rat7         [V81,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V82 rat8         [V82,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 64
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 1 0 0 1 -0 +0
benchmarks.run_pgo.linux.arm64.checked.mch 1 1 0 0 -4 +0
benchmarks.run_tiered.linux.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.arm64.checked.mch 2 1 0 1 -24 +0
libraries.crossgen2.linux.arm64.checked.mch 11 11 0 0 -108 +0
libraries.pmi.linux.arm64.checked.mch 24 12 0 12 -128 +0
libraries_tests.run.linux.arm64.Release.mch 42 30 2 10 -308 +8
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 11 7 0 4 -80 +0
realworld.run.linux.arm64.checked.mch 4 2 0 2 -20 +0
smoke_tests.nativeaot.linux.arm64.checked.mch 0 0 0 0 -0 +0
96 64 2 30 -672 +8

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm64.checked.mch 33,636 2,755 30,881 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.arm64.checked.mch 153,704 60,106 93,598 152 (0.10%) 152 (0.10%)
benchmarks.run_tiered.linux.arm64.checked.mch 63,983 47,942 16,041 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.arm64.checked.mch 628,058 383,770 244,288 413 (0.07%) 413 (0.07%)
libraries.crossgen2.linux.arm64.checked.mch 233,777 15 233,762 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm64.checked.mch 294,239 6 294,233 1 (0.00%) 1 (0.00%)
libraries_tests.run.linux.arm64.Release.mch 737,454 487,495 249,959 3,384 (0.46%) 3,384 (0.46%)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 304,065 21,560 282,505 6 (0.00%) 6 (0.00%)
realworld.run.linux.arm64.checked.mch 33,304 151 33,153 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.arm64.checked.mch 19,041 6 19,035 0 (0.00%) 0 (0.00%)
2,501,261 1,003,806 1,497,455 3,956 (0.16%) 3,956 (0.16%)

jit-analyze output

benchmarks.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15579780 (overridden on cmd)
Total bytes of diff: 15579780 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.

0 total methods with Code Size differences (0 improved, 0 regressed).


benchmarks.run_pgo.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 80916176 (overridden on cmd)
Total bytes of diff: 80916172 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
          -4 : 85059.dasm (-0.33 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
          -4 (-0.33 % of base) : 85059.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)

Top method improvements (percentages):
          -4 (-0.33 % of base) : 85059.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)

1 total methods with Code Size differences (1 improved, 0 regressed).


coreclr_tests.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 509788568 (overridden on cmd)
Total bytes of diff: 509788544 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 612648.dasm (-2.33 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -24 (-2.33 % of base) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

Top method improvements (percentages):
         -24 (-2.33 % of base) : 612648.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

1 total methods with Code Size differences (1 improved, 0 regressed).


libraries.crossgen2.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 55736420 (overridden on cmd)
Total bytes of diff: 55736312 (overridden on cmd)
Total bytes of delta: -108 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 164633.dasm (-0.36 % of base)
         -20 : 101054.dasm (-0.73 % of base)
         -12 : 81351.dasm (-0.68 % of base)
         -12 : 8200.dasm (-0.53 % of base)
         -12 : 10298.dasm (-0.56 % of base)
          -8 : 165127.dasm (-1.82 % of base)
          -4 : 101327.dasm (-0.10 % of base)
          -4 : 165506.dasm (-0.19 % of base)
          -4 : 177787.dasm (-0.15 % of base)
          -4 : 177786.dasm (-0.19 % of base)
          -4 : 165507.dasm (-0.15 % of base)

11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -24 (-0.36 % of base) : 164633.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -20 (-0.73 % of base) : 101054.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -12 (-0.68 % of base) : 81351.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -12 (-0.56 % of base) : 10298.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -12 (-0.53 % of base) : 8200.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
          -8 (-1.82 % of base) : 165127.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -4 (-0.10 % of base) : 101327.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -4 (-0.19 % of base) : 165506.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.19 % of base) : 177786.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.15 % of base) : 177787.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.15 % of base) : 165507.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

Top method improvements (percentages):
          -8 (-1.82 % of base) : 165127.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -20 (-0.73 % of base) : 101054.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -12 (-0.68 % of base) : 81351.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -12 (-0.56 % of base) : 10298.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -12 (-0.53 % of base) : 8200.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
         -24 (-0.36 % of base) : 164633.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.19 % of base) : 165506.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.19 % of base) : 177786.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.15 % of base) : 165507.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.15 % of base) : 177787.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.10 % of base) : 101327.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

11 total methods with Code Size differences (11 improved, 0 regressed).


libraries.pmi.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 75995180 (overridden on cmd)
Total bytes of diff: 75995052 (overridden on cmd)
Total bytes of delta: -128 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -32 : 109400.dasm (-0.78 % of base)
         -20 : 143677.dasm (-0.25 % of base)
         -20 : 87058.dasm (-1.06 % of base)
         -12 : 26655.dasm (-0.68 % of base)
          -8 : 93646.dasm (-0.18 % of base)
          -8 : 93649.dasm (-0.15 % of base)
          -8 : 266853.dasm (-0.72 % of base)
          -4 : 198327.dasm (-0.16 % of base)
          -4 : 247055.dasm (-0.21 % of base)
          -4 : 109680.dasm (-0.10 % of base)
          -4 : 198326.dasm (-0.20 % of base)
          -4 : 247056.dasm (-0.16 % of base)

12 total files with Code Size differences (12 improved, 0 regressed), 12 unchanged.

Top method improvements (bytes):
         -32 (-0.78 % of base) : 109400.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -20 (-1.06 % of base) : 87058.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -20 (-0.25 % of base) : 143677.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -12 (-0.68 % of base) : 26655.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-0.15 % of base) : 93649.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -8 (-0.18 % of base) : 93646.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -8 (-0.72 % of base) : 266853.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -4 (-0.10 % of base) : 109680.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -4 (-0.21 % of base) : 247055.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.20 % of base) : 198326.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.16 % of base) : 198327.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.16 % of base) : 247056.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

Top method improvements (percentages):
         -20 (-1.06 % of base) : 87058.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -32 (-0.78 % of base) : 109400.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
          -8 (-0.72 % of base) : 266853.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -12 (-0.68 % of base) : 26655.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -20 (-0.25 % of base) : 143677.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.21 % of base) : 247055.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.20 % of base) : 198326.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.18 % of base) : 93646.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -4 (-0.16 % of base) : 247056.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.16 % of base) : 198327.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.15 % of base) : 93649.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -4 (-0.10 % of base) : 109680.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

12 total methods with Code Size differences (12 improved, 0 regressed).


libraries_tests.run.linux.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 381263920 (overridden on cmd)
Total bytes of diff: 381263620 (overridden on cmd)
Total bytes of delta: -300 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 52405.dasm (0.18 % of base)
           4 : 54451.dasm (0.25 % of base)

Top file improvements (bytes):
         -20 : 170023.dasm (-0.60 % of base)
         -12 : 713368.dasm (-0.35 % of base)
         -12 : 134066.dasm (-0.37 % of base)
         -12 : 175765.dasm (-0.56 % of base)
         -12 : 229613.dasm (-0.89 % of base)
         -12 : 281903.dasm (-0.35 % of base)
         -12 : 310065.dasm (-0.36 % of base)
         -12 : 334811.dasm (-0.35 % of base)
         -12 : 341080.dasm (-0.35 % of base)
         -12 : 356184.dasm (-0.35 % of base)
         -12 : 367256.dasm (-0.35 % of base)
         -12 : 379278.dasm (-0.35 % of base)
         -12 : 394412.dasm (-0.35 % of base)
         -12 : 438287.dasm (-0.35 % of base)
         -12 : 446391.dasm (-0.35 % of base)
         -12 : 515234.dasm (-0.35 % of base)
         -12 : 584429.dasm (-0.35 % of base)
         -12 : 96994.dasm (-0.35 % of base)
          -8 : 132857.dasm (-0.06 % of base)
          -8 : 711230.dasm (-0.12 % of base)

32 total files with Code Size differences (30 improved, 2 regressed), 10 unchanged.

Top method regressions (bytes):
           4 (0.18 % of base) : 52405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
           4 (0.25 % of base) : 54451.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

Top method improvements (bytes):
         -20 (-0.60 % of base) : 170023.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.56 % of base) : 175765.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -12 (-0.89 % of base) : 229613.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
         -12 (-0.35 % of base) : 713368.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.37 % of base) : 134066.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 281903.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.36 % of base) : 310065.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 334811.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 341080.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 356184.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 367256.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 379278.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 394412.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 438287.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 515234.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 584429.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 96994.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 446391.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
          -8 (-0.27 % of base) : 277475.dasm - Interop+procfs:ParseMapsModulesCore(System.Collections.Generic.IEnumerable`1[System.String]):System.Diagnostics.ProcessModuleCollection (Tier1)
          -8 (-0.69 % of base) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)

Top method regressions (percentages):
           4 (0.25 % of base) : 54451.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
           4 (0.18 % of base) : 52405.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)

Top method improvements (percentages):
         -12 (-0.89 % of base) : 229613.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,System.__Canon]:Heapify():this (Tier1)
          -8 (-0.69 % of base) : 66233.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
         -20 (-0.60 % of base) : 170023.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.56 % of base) : 175765.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
          -4 (-0.48 % of base) : 234143.dasm - System.Collections.Generic.PriorityQueue`2[System.__Canon,int]:Heapify():this (Tier1)
          -8 (-0.38 % of base) : 669519.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -12 (-0.37 % of base) : 134066.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.36 % of base) : 310065.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 341080.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 584429.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 367256.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 281903.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 334811.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 379278.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 356184.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 515234.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 446391.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
         -12 (-0.35 % of base) : 438287.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 713368.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 96994.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

32 total methods with Code Size differences (30 improved, 2 regressed).


librariestestsnotieredcompilation.run.linux.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 162531076 (overridden on cmd)
Total bytes of diff: 162530996 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -20 : 299819.dasm (-0.49 % of base)
         -20 : 96157.dasm (-0.25 % of base)
         -12 : 163424.dasm (-0.67 % of base)
          -8 : 148202.dasm (-0.78 % of base)
          -8 : 151282.dasm (-0.77 % of base)
          -8 : 96241.dasm (-1.74 % of base)
          -4 : 179187.dasm (-0.21 % of base)

7 total files with Code Size differences (7 improved, 0 regressed), 4 unchanged.

Top method improvements (bytes):
         -20 (-0.25 % of base) : 96157.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -20 (-0.49 % of base) : 299819.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -12 (-0.67 % of base) : 163424.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-1.74 % of base) : 96241.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -8 (-0.78 % of base) : 148202.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -8 (-0.77 % of base) : 151282.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -4 (-0.21 % of base) : 179187.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

Top method improvements (percentages):
          -8 (-1.74 % of base) : 96241.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -8 (-0.78 % of base) : 148202.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -8 (-0.77 % of base) : 151282.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -12 (-0.67 % of base) : 163424.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -20 (-0.49 % of base) : 299819.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -20 (-0.25 % of base) : 96157.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.21 % of base) : 179187.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

7 total methods with Code Size differences (7 improved, 0 regressed).


realworld.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15906972 (overridden on cmd)
Total bytes of diff: 15906952 (overridden on cmd)
Total bytes of delta: -20 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -12 : 14476.dasm (-0.14 % of base)
          -8 : 32226.dasm (-0.10 % of base)

2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.

Top method improvements (bytes):
         -12 (-0.14 % of base) : 14476.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
          -8 (-0.10 % of base) : 32226.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

Top method improvements (percentages):
         -12 (-0.14 % of base) : 14476.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
          -8 (-0.10 % of base) : 32226.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

2 total methods with Code Size differences (2 improved, 0 regressed).



linux x64

Diffs are based on 2,595,036 contexts (1,052,329 MinOpts, 1,542,707 FullOpts).

MISSED contexts: 3,599 (0.14%)

Overall (-1,262 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,736,868 +0
benchmarks.run_pgo.linux.x64.checked.mch 66,799,627 -16
coreclr_tests.run.linux.x64.checked.mch 458,907,683 -28
libraries.crossgen2.linux.x64.checked.mch 38,668,470 -218
libraries.pmi.linux.x64.checked.mch 59,972,922 -183
libraries_tests.run.linux.x64.Release.mch 330,797,007 -575
librariestestsnotieredcompilation.run.linux.x64.Release.mch 129,999,045 -203
realworld.run.linux.x64.checked.mch 13,194,305 -39

FullOpts (-1,262 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 13,470,075 +0
benchmarks.run_pgo.linux.x64.checked.mch 46,969,870 -16
coreclr_tests.run.linux.x64.checked.mch 132,349,548 -28
libraries.crossgen2.linux.x64.checked.mch 38,667,268 -218
libraries.pmi.linux.x64.checked.mch 59,860,052 -183
libraries_tests.run.linux.x64.Release.mch 146,407,486 -575
librariestestsnotieredcompilation.run.linux.x64.Release.mch 119,340,574 -203
realworld.run.linux.x64.checked.mch 12,805,199 -39

Example diffs

benchmarks.run.linux.x64.checked.mch

+0 (0.00%) : 20427.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rbp-0x68]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [rbp-0x4C] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rbp-0x70]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  r12         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  r12         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  rax        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  rax        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rsi         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r13        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rsi         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r13        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rdi         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rsi         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rdi         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rsi         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rdi         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rsi         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rdi         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rsi         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rdi         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rsi         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rdi         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rsi         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rcx         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rsi         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rsi         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rsi         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rsi         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rsi         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rsi         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rsi         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rsi         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rdi         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r13         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rsi         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rsi         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rdi         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r13         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rsi         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rdi         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rdi         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rsi         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rsi         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -235,8 +229,8 @@ G_M18379_IG11:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000
        mov      gword ptr [rbp-0x60], rax
        ; GC ptr vars +{V11}
        cmp      dword ptr [rbp-0x48], 0
-       jl       SHORT G_M18379_IG14
        mov      ecx, dword ptr [rbp-0x48]
+       jl       SHORT G_M18379_IG14
                        ;; size=22 bbWeight=0.50 PerfScore 4.12
 G_M18379_IG12:        ; bbWeight=4, gcVars=00000000000000000000000028000000 {V07 V11}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
        ; gcrRegs -[rax]

benchmarks.run_pgo.linux.x64.checked.mch

-16 (-1.63%) : 92706.dasm - System.Linq.Enumerable:TryGetSingleSystem.__Canon:System.__Canon (Tier1)

@@ -40,7 +40,7 @@
 ;  V28 tmp20        [V28,T29] (  2,  0.27)     ref  ->  rdi         "argument with side effect"
 ;  V29 tmp21        [V29,T00] (  6, 54.40)     ref  ->  rdx         "argument with side effect"
 ;  V30 tmp22        [V30,T14] (  4,  4.27)     ref  ->  rax         "argument with side effect"
-;  V31 PSPSym       [V31,T24] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[V] "PSPSym"
+;  V31 PSPSym       [V31,T24] (  1,  1   )    long  ->  [rbp-0x60]  do-not-enreg[V] "PSPSym"
 ;  V32 cse0         [V32,T22] (  4,  1.20)    long  ->  registers   "CSE - moderate"
 ;  V33 cse1         [V33,T05] (  3, 11.22)     int  ->  rsi         "CSE - aggressive"
 ;  V34 cse2         [V34,T16] (  3,  2.79)     int  ->  r12         "CSE - moderate"
@@ -51,9 +51,8 @@
 ;  V39 rat1         [V39,T28] (  3,  0.27)    long  ->  r12         "runtime lookup"
 ;  V40 rat2         [V40,T26] (  3,  0.37)    long  ->  rdi         "spilling expr"
 ;  V41 rat3         [V41,T27] (  3,  0.30)    long  ->  r12         "fgMakeTemp is creating a new local variable"
-;  TEMP_01                                   byref  ->  [rbp-0x60]
 ;
-; Lcl frame size = 72
+; Lcl frame size = 56
 
 G_M35688_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
@@ -62,12 +61,11 @@ G_M35688_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 72
-       lea      rbp, [rsp+0x70]
+       sub      rsp, 56
+       lea      rbp, [rsp+0x60]
        xor      eax, eax
        mov      qword ptr [rbp-0x48], rax
-       mov      qword ptr [rbp-0x60], rax
-       mov      qword ptr [rbp-0x70], rsp
+       mov      qword ptr [rbp-0x60], rsp
        mov      qword ptr [rbp-0x30], rdi
        mov      rbx, rdi
        mov      r13, rsi
@@ -76,7 +74,7 @@ G_M35688_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[r15]
        mov      r14, rcx
        ; byrRegs +[r14]
-                       ;; size=49 bbWeight=1 PerfScore 12.00
+                       ;; size=45 bbWeight=1 PerfScore 11.00
 G_M35688_IG02:        ; bbWeight=1, gcVars=0000000000800000 {V06}, gcrefRegs=A000 {r13 r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
        ; GC ptr vars +{V06}
        test     r13, r13
@@ -345,7 +343,7 @@ G_M35688_IG28:        ; bbWeight=0.07, gcrefRegs=3000 {r12 r13}, byrefRegs=4000
        ; gcrRegs -[r15]
        jmp      SHORT G_M35688_IG26
                        ;; size=2 bbWeight=0.07 PerfScore 0.13
-G_M35688_IG29:        ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4000 {r14}, byref
+G_M35688_IG29:        ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4000 {r14}, byref, isz
        ; gcrRegs +[r15]
        mov      r11, rbx
        mov      rdi, r13
@@ -355,8 +353,8 @@ G_M35688_IG29:        ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4
        ; gcr arg pop 0
        mov      rdi, 0xD1FFAB1E      ; function address
        cmp      qword ptr [r15+0x18], rdi
-       je       G_M35688_IG37
-                       ;; size=29 bbWeight=0.01 PerfScore 0.08
+       je       SHORT G_M35688_IG37
+                       ;; size=25 bbWeight=0.01 PerfScore 0.08
 G_M35688_IG30:        ; bbWeight=0, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=4000 {r14}, byref
        mov      rsi, rax
        ; gcrRegs +[rsi]
@@ -409,9 +407,6 @@ G_M35688_IG35:        ; bbWeight=0.01, gcrefRegs=B000 {r12 r13 r15}, byrefRegs=4
 G_M35688_IG36:        ; bbWeight=0.09, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=4000 {r14}, byref
        inc      esi
        mov      dword ptr [r13+0x14], esi
-       lea      rdi, bword ptr [r13+0x08]
-       ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0x60], rdi
        mov      rdx, gword ptr [r13+0x20]
        ; gcrRegs +[rdx]
        mov      esi, ecx
@@ -419,11 +414,10 @@ G_M35688_IG36:        ; bbWeight=0.09, gcrefRegs=B001 {rax r12 r13 r15}, byrefRe
        ; gcrRegs +[rsi]
        mov      rdi, gword ptr [rdx+0x08]
        ; gcrRegs +[rdi]
-       ; byrRegs -[rdi]
        call     [rdx+0x18]<unknown method>
        ; gcrRegs -[rdx rsi rdi]
        ; gcr arg pop 0
-       mov      rdi, bword ptr [rbp-0x60]
+       lea      rdi, bword ptr [r13+0x08]
        ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
@@ -431,7 +425,7 @@ G_M35688_IG36:        ; bbWeight=0.09, gcrefRegs=B001 {rax r12 r13 r15}, byrefRe
        ; gcrRegs -[rax rsi]
        ; byrRegs -[rdi]
        jmp      G_M35688_IG29
-                       ;; size=49 bbWeight=0.09 PerfScore 1.47
+                       ;; size=41 bbWeight=0.09 PerfScore 1.29
 G_M35688_IG37:        ; bbWeight=0.01, gcrefRegs=B001 {rax r12 r13 r15}, byrefRegs=4000 {r14}, byref
        ; gcrRegs +[rax]
        mov      rdi, gword ptr [r15+0x08]
@@ -498,7 +492,7 @@ G_M35688_IG42:        ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=4000 {r14},
        ; gcrRegs +[rax]
                        ;; size=6 bbWeight=0.93 PerfScore 1.17
 G_M35688_IG43:        ; bbWeight=0.93, epilog, nogc, extend
-       add      rsp, 72
+       add      rsp, 56
        pop      rbx
        pop      r12
        pop      r13
@@ -524,7 +518,7 @@ G_M35688_IG46:        ; bbWeight=0.07, gcVars=0000000000800000 {V06}, gcrefRegs=
        ; gcrRegs +[rax]
                        ;; size=4 bbWeight=0.07 PerfScore 0.07
 G_M35688_IG47:        ; bbWeight=0.07, epilog, nogc, extend
-       add      rsp, 72
+       add      rsp, 56
        pop      rbx
        pop      r12
        pop      r13
@@ -544,7 +538,7 @@ G_M35688_IG48:        ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        push     rax
        mov      rbp, qword ptr [rdi]
        mov      qword ptr [rsp], rbp
-       lea      rbp, [rbp+0x70]
+       lea      rbp, [rbp+0x60]
                        ;; size=22 bbWeight=0.07 PerfScore 0.70
 G_M35688_IG49:        ; bbWeight=0.07, gcVars=0000000000800002 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V01 V04}
@@ -579,7 +573,7 @@ G_M35688_IG52:        ; bbWeight=0.07, funclet epilog, nogc, extend
        ret      
                        ;; size=15 bbWeight=0.07 PerfScore 0.28
 
-; Total bytes of code 981, prolog size 49, PerfScore 242.92, instruction count 265, allocated bytes for code 981 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 965, prolog size 45, PerfScore 241.74, instruction count 262, allocated bytes for code 965 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -592,7 +586,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 8 * 8 + 8 = 72 = 0x48
+    CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 6 * 8 + 8 = 56 = 0x38
     CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r12 (12)
     CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r13 (13)

coreclr_tests.run.linux.x64.checked.mch

-28 (-3.73%) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]):this (FullOpts)

@@ -8,77 +8,73 @@
 ; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T06] ( 15,1275   )     ref  ->  rbx         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T07] ( 18,1118   )     ref  ->  registers   class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T08] ( 14,1147   )     ref  ->  r15         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T06] ( 18,1118   )     ref  ->  registers   class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T04] (  8,1328   )     ref  ->  r13         class-hnd <<unknown class>>
 ;* V03 loc1         [V03    ] (  0,   0   )  struct (16) zero-ref    multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;* V04 loc2         [V04    ] (  0,   0   )  struct (16) zero-ref    multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct (16) zero-ref    multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T08] (  9,1216   )     ref  ->  r13         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T07] (  9,1216   )     ref  ->  r13         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T09] (  5, 896   )     ref  ->  r12         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;# V08 OutArgs      [V08    ] (  1,   1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T33] (  3,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T29] (  3,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V13 tmp5         [V13    ] (  0,   0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V14 tmp6         [V14,T21] (  3, 192   )     ref  ->  r13         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V14 tmp6         [V14,T17] (  3, 192   )     ref  ->  r13         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V15 tmp7         [V15    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp8         [V16    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp9         [V17,T30] (  4,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T26] (  4,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V18 tmp10        [V18    ] (  0,   0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V19 tmp11        [V19,T35] (  3,  43.88)     int  ->  r12         "impAppendStmt"
-;  V20 tmp12        [V20,T29] (  7,  64   )     ref  ->  r13         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V21 tmp13        [V21,T43] (  4,  20   )     int  ->  r12         "Inline stloc first use temp"
-;  V22 tmp14        [V22,T44] (  3,  18   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V23 tmp15        [V23,T45] (  3,  16   )     int  ->  rdi         "Inline return value spill temp"
-;  V24 tmp16        [V24,T38] (  3,  36.12)     int  ->  rdi         "Inlining Arg"
-;  V25 tmp17        [V25,T23] (  7, 160   )     ref  ->  r15         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V26 tmp18        [V26,T31] (  4,  48   )     int  ->  [rbp-0x34]  spill-single-def "Inline stloc first use temp"
-;  V27 tmp19        [V27,T36] (  3,  40   )     ref  ->  rdi         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T31] (  3,  43.88)     int  ->  r12         "impAppendStmt"
+;  V20 tmp12        [V20,T25] (  7,  64   )     ref  ->  r13         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V21 tmp13        [V21,T39] (  4,  20   )     int  ->  r12         "Inline stloc first use temp"
+;  V22 tmp14        [V22,T40] (  3,  18   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V23 tmp15        [V23,T41] (  3,  16   )     int  ->  rdi         "Inline return value spill temp"
+;  V24 tmp16        [V24,T34] (  3,  36.12)     int  ->  rdi         "Inlining Arg"
+;  V25 tmp17        [V25,T19] (  7, 160   )     ref  ->  rbx         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V26 tmp18        [V26,T27] (  4,  48   )     int  ->  [rbp-0x34]  spill-single-def "Inline stloc first use temp"
+;  V27 tmp19        [V27,T32] (  3,  40   )     ref  ->  rdi         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V28 tmp20        [V28    ] (  0,   0   )  struct (16) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V29 tmp21        [V29,T19] (  3, 256   )     int  ->  r11         "Inline return value spill temp"
-;  V30 tmp22        [V30,T12] (  3, 702.09)     int  ->  rdi         "Inlining Arg"
-;  V31 tmp23        [V31,T15] (  3, 577.91)     int  ->  r11         "Inlining Arg"
-;  V32 tmp24        [V32,T13] (  3, 628.79)     ref  ->  rdi         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V29 tmp21        [V29,T16] (  3, 256   )     int  ->  r11         "Inline return value spill temp"
+;  V30 tmp22        [V30,T11] (  3, 702.09)     int  ->  rdi         "Inlining Arg"
+;  V31 tmp23        [V31,T13] (  3, 577.91)     int  ->  r11         "Inlining Arg"
+;  V32 tmp24        [V32,T12] (  3, 628.79)     ref  ->  rdi         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V33 tmp25        [V33,T10] (  4, 745.57)     int  ->  rsi         "Inline stloc first use temp"
-;  V34 tmp26        [V34,T18] (  7, 384   )     ref  ->  rdi         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V35 tmp27        [V35,T28] (  3,  93.20)     ref  ->  rdx         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V36 tmp28        [V36,T27] (  4, 122.39)     int  ->  rsi         "Inline stloc first use temp"
+;  V34 tmp26        [V34,T15] (  7, 384   )     ref  ->  rdi         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V35 tmp27        [V35,T24] (  3,  93.20)     ref  ->  rdx         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V36 tmp28        [V36,T23] (  4, 122.39)     int  ->  rsi         "Inline stloc first use temp"
 ;* V37 tmp29        [V37    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V38 tmp30        [V38,T46] (  2,  16   )     ref  ->  r15         "field V03.Vertex (fldOffset=0x0)" P-INDEP
-;  V39 tmp31        [V39,T47] (  2,  16   )     ref  ->  r13         "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V38 tmp30        [V38,T42] (  2,  16   )     ref  ->  rbx         "field V03.Vertex (fldOffset=0x0)" P-INDEP
+;  V39 tmp31        [V39,T43] (  2,  16   )     ref  ->  r13         "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;  V40 tmp32        [V40,T05] (  5,1424   )     ref  ->  r12         "field V04.Destination (fldOffset=0x0)" P-INDEP
-;  V41 tmp33        [V41,T17] (  1, 512   )   ubyte  ->  rdx         "field V04.Flagged (fldOffset=0x8)" P-INDEP
-;  V42 tmp34        [V42,T41] (  3,  32   )     ref  ->  rsi         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V43 tmp35        [V43,T42] (  3,  32   )     ref  ->  r13         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V41 tmp33        [V41,T14] (  1, 512   )   ubyte  ->  rdx         "field V04.Flagged (fldOffset=0x8)" P-INDEP
+;  V42 tmp34        [V42,T37] (  3,  32   )     ref  ->  rsi         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V43 tmp35        [V43,T38] (  3,  32   )     ref  ->  r13         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;* V44 tmp36        [V44    ] (  0,   0   )     ref  ->  zero-ref    "field V13.Destination (fldOffset=0x0)" P-DEP
 ;* V45 tmp37        [V45    ] (  0,   0   )   ubyte  ->  zero-ref    "field V13.Flagged (fldOffset=0x8)" P-DEP
-;  V46 tmp38        [V46,T48] (  2,  16   )     ref  ->  rax         "field V18.Destination (fldOffset=0x0)" P-INDEP
-;  V47 tmp39        [V47,T50] (  1,   8   )   ubyte  ->  rdx         "field V18.Flagged (fldOffset=0x8)" P-INDEP
+;  V46 tmp38        [V46,T44] (  2,  16   )     ref  ->  rax         "field V18.Destination (fldOffset=0x0)" P-INDEP
+;  V47 tmp39        [V47,T46] (  1,   8   )   ubyte  ->  rdx         "field V18.Flagged (fldOffset=0x8)" P-INDEP
 ;* V48 tmp40        [V48    ] (  0,   0   )     ref  ->  zero-ref    "field V28.Vertex (fldOffset=0x0)" P-INDEP
 ;* V49 tmp41        [V49    ] (  0,   0   )     ref  ->  zero-ref    "field V28.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-;  V50 tmp42        [V50,T32] (  3,  48   )   byref  ->  [rbp-0x40]  spill-single-def "BlockOp address local"
-;  V51 cse0         [V51,T49] (  2,   9   )    long  ->  r14         hoist "CSE - conservative"
-;  V52 cse1         [V52,T40] (  4,  32   )     int  ->  rsi         "CSE - moderate"
-;  V53 rat0         [V53,T52] (  3,   4.72)    long  ->  rdi         "Spilling to split statement for tree"
-;  V54 rat1         [V54,T54] (  3,   4   )    long  ->  r14         "runtime lookup"
-;  V55 rat2         [V55,T51] (  3,   5.60)    long  ->  rsi         "spilling expr"
-;  V56 rat3         [V56,T53] (  3,   4.48)    long  ->  r14         "fgMakeTemp is creating a new local variable"
-;  V57 rat4         [V57,T37] (  3,  37.76)    long  ->  rdi         "Spilling to split statement for tree"
-;  V58 rat5         [V58,T34] (  3,  44.80)    long  ->  rsi         "spilling expr"
-;  V59 rat6         [V59,T39] (  3,  35.84)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V60 rat7         [V60,T14] (  2, 512   )    long  ->  rdi         "Spilling to split statement for tree"
-;* V61 rat8         [V61,T20] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;  V62 rat9         [V62,T11] (  2, 512   )    long  ->  rdi         "spilling expr"
-;* V63 rat10        [V63,T16] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V64 rat11        [V64,T02] (  3,2416.64)    long  ->  rdi         "Spilling to split statement for tree"
-;  V65 rat12        [V65,T01] (  3,2867.20)    long  ->  rsi         "spilling expr"
-;  V66 rat13        [V66,T03] (  3,2293.76)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V67 rat14        [V67,T24] (  3, 151.04)    long  ->  rdi         "Spilling to split statement for tree"
-;  V68 rat15        [V68,T26] (  3, 128   )    long  ->  rsi         "runtime lookup"
-;  V69 rat16        [V69,T22] (  3, 179.20)    long  ->  rsi         "spilling expr"
-;  V70 rat17        [V70,T25] (  3, 143.36)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V50 tmp42        [V50,T28] (  3,  48   )   byref  ->  [rbp-0x40]  spill-single-def "BlockOp address local"
+;  V51 cse0         [V51,T45] (  2,   9   )    long  ->  r14         hoist "CSE - conservative"
+;  V52 cse1         [V52,T36] (  4,  32   )     int  ->  rsi         "CSE - moderate"
+;  V53 rat0         [V53,T48] (  3,   4.72)    long  ->  rdi         "Spilling to split statement for tree"
+;  V54 rat1         [V54,T50] (  3,   4   )    long  ->  r14         "runtime lookup"
+;  V55 rat2         [V55,T47] (  3,   5.60)    long  ->  rsi         "spilling expr"
+;  V56 rat3         [V56,T49] (  3,   4.48)    long  ->  r14         "fgMakeTemp is creating a new local variable"
+;  V57 rat4         [V57,T33] (  3,  37.76)    long  ->  rdi         "Spilling to split statement for tree"
+;  V58 rat5         [V58,T30] (  3,  44.80)    long  ->  rsi         "spilling expr"
+;  V59 rat6         [V59,T35] (  3,  35.84)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V60 rat7         [V60,T02] (  3,2416.64)    long  ->  rdi         "Spilling to split statement for tree"
+;  V61 rat8         [V61,T01] (  3,2867.20)    long  ->  rsi         "spilling expr"
+;  V62 rat9         [V62,T03] (  3,2293.76)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V63 rat10        [V63,T20] (  3, 151.04)    long  ->  rdi         "Spilling to split statement for tree"
+;  V64 rat11        [V64,T22] (  3, 128   )    long  ->  rsi         "runtime lookup"
+;  V65 rat12        [V65,T18] (  3, 179.20)    long  ->  rsi         "spilling expr"
+;  V66 rat13        [V66,T21] (  3, 143.36)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 
@@ -92,13 +88,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        sub      rsp, 24
        lea      rbp, [rsp+0x40]
        mov      qword ptr [rbp-0x30], rdi
-       mov      rbx, rdi
-       ; gcrRegs +[rbx]
-       mov      r15, rsi
+       mov      r15, rdi
        ; gcrRegs +[r15]
+       mov      rbx, rsi
+       ; gcrRegs +[rbx]
                        ;; size=29 bbWeight=1 PerfScore 8.25
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
-       mov      rdi, qword ptr [rbx]
+       mov      rdi, qword ptr [r15]
        mov      rsi, qword ptr [rdi+0x38]
        mov      rsi, qword ptr [rsi]
        cmp      qword ptr [rsi+0x08], 40
@@ -119,12 +115,12 @@ G_M1799_IG05:        ; bbWeight=0.36, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {
        mov      r14, rax
                        ;; size=18 bbWeight=0.36 PerfScore 0.54
 G_M1799_IG06:        ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
-       mov      esi, dword ptr [rbx+0x28]
-       mov      dword ptr [r15+0x18], esi
-       mov      dword ptr [r15+0x1C], esi
+       mov      esi, dword ptr [r15+0x28]
+       mov      dword ptr [rbx+0x18], esi
+       mov      dword ptr [rbx+0x1C], esi
        inc      esi
-       mov      dword ptr [rbx+0x28], esi
-       mov      r13, gword ptr [rbx+0x08]
+       mov      dword ptr [r15+0x28], esi
+       mov      r13, gword ptr [r15+0x08]
        ; gcrRegs +[r13]
        mov      r12d, dword ptr [r13+0x10]
        mov      rdi, gword ptr [r13+0x08]
@@ -134,7 +130,7 @@ G_M1799_IG06:        ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
                        ;; size=34 bbWeight=8 PerfScore 122.00
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0000 {}, byref, isz
        movsxd   rsi, r12d
-       mov      rdx, r15
+       mov      rdx, rbx
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[rdx rdi]
@@ -147,16 +143,16 @@ G_M1799_IG07:        ; bbWeight=2, gcrefRegs=A088 {rbx rdi r13 r15}, byrefRegs=0
 G_M1799_IG08:        ; bbWeight=2, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
        mov      rdi, r13
        ; gcrRegs +[rdi]
-       mov      rsi, r15
+       mov      rsi, rbx
        ; gcrRegs +[rsi]
        call     [<unknown method>]
        ; gcrRegs -[rsi rdi r13]
        ; gcr arg pop 0
                        ;; size=12 bbWeight=2 PerfScore 7.00
 G_M1799_IG09:        ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
-       mov      byte  ptr [r15+0x22], 1
+       mov      byte  ptr [rbx+0x22], 1
        mov      r11, r14
-       mov      rdi, gword ptr [r15+0x10]
+       mov      rdi, gword ptr [rbx+0x10]
        ; gcrRegs +[rdi]
        call     [r11]
        ; gcrRegs -[rdi] +[rax]
@@ -165,20 +161,20 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
        ; gcrRegs +[r13]
        test     r13, r13
        jne      SHORT G_M1799_IG17
-                       ;; size=23 bbWeight=8 PerfScore 62.00
-G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax r13 r15]
-       mov      rdi, gword ptr [rbx+0x20]
+                       ;; size=22 bbWeight=8 PerfScore 62.00
+G_M1799_IG10:        ; bbWeight=8, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax rbx r13]
+       mov      rdi, gword ptr [r15+0x20]
        ; gcrRegs +[rdi]
        cmp      dword ptr [rdi], edi
        call     [System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this]
        ; gcrRegs -[rdi] +[rax rdx]
        ; gcr arg pop 0
-       mov      r15, rax
-       ; gcrRegs +[r15]
+       mov      rbx, rax
+       ; gcrRegs +[rbx]
        mov      r13, rdx
        ; gcrRegs +[r13]
-       mov      rdi, qword ptr [rbx]
+       mov      rdi, qword ptr [r15]
        mov      rsi, qword ptr [rdi+0x38]
        mov      rsi, qword ptr [rsi]
        cmp      qword ptr [rsi+0x08], 48
@@ -191,7 +187,7 @@ G_M1799_IG11:        ; bbWeight=6.40, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=00
        je       SHORT G_M1799_IG14
                        ;; size=9 bbWeight=6.40 PerfScore 20.80
 G_M1799_IG12:        ; bbWeight=8, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
-       mov      r12d, dword ptr [r15+0x1C]
+       mov      r12d, dword ptr [rbx+0x1C]
        mov      rdi, r13
        ; gcrRegs +[rdi]
        call     [r11]
@@ -216,9 +212,9 @@ G_M1799_IG15:        ; bbWeight=5.94, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=00
        mov      edi, r12d
                        ;; size=3 bbWeight=5.94 PerfScore 1.49
 G_M1799_IG16:        ; bbWeight=8, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
-       mov      dword ptr [r15+0x1C], edi
-                       ;; size=4 bbWeight=8 PerfScore 8.00
-G_M1799_IG17:        ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref
+       mov      dword ptr [rbx+0x1C], edi
+                       ;; size=3 bbWeight=8 PerfScore 8.00
+G_M1799_IG17:        ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
        mov      rdi, r13
        ; gcrRegs +[rdi]
        mov      r11, 0xD1FFAB1E      ; function address
@@ -226,37 +222,30 @@ G_M1799_IG17:        ; bbWeight=512, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=000
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
        test     eax, eax
-       je       G_M1799_IG30
-                       ;; size=24 bbWeight=512 PerfScore 2432.00
-G_M1799_IG18:        ; bbWeight=128, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
-       mov      rdi, qword ptr [rbx]
-       mov      rdi, qword ptr [rdi+0x38]
-       mov      rdi, qword ptr [rdi]
-       cmp      qword ptr [rdi+0x08], 48
...

+0 (0.00%) : 593072.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rbp-0x68]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [rbp-0x4C] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rbp-0x70]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  r12         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  r12         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  rax        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  rax        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rsi         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r13        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rsi         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r13        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rdi         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rsi         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rdi         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rsi         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rdi         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rsi         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rdi         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rsi         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rdi         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rsi         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rdi         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rsi         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rcx         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rsi         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rsi         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rsi         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rsi         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rsi         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rsi         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rsi         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rsi         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rdi         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r13         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rsi         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rsi         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rdi         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r13         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rsi         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rdi         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rdi         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rsi         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rsi         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -235,8 +229,8 @@ G_M18379_IG11:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000
        mov      gword ptr [rbp-0x60], rax
        ; GC ptr vars +{V11}
        cmp      dword ptr [rbp-0x48], 0
-       jl       SHORT G_M18379_IG14
        mov      ecx, dword ptr [rbp-0x48]
+       jl       SHORT G_M18379_IG14
                        ;; size=22 bbWeight=0.50 PerfScore 4.12
 G_M18379_IG12:        ; bbWeight=4, gcVars=00000000000000000000000028000000 {V07 V11}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
        ; gcrRegs -[rax]

libraries.crossgen2.linux.x64.checked.mch

-8 (-2.22%) : 122495.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V06 tmp1         [V06,T00] (  6, 20   )   byref  ->  rcx         "impAppendStmt"
 ;  V07 tmp2         [V07,T06] (  6,  8   )   byref  ->  [rbp-0x48] 
 ;  V08 tmp3         [V08,T02] (  6, 12   )    long  ->  rax         "VirtualCall with runtime lookup"
-;  V09 tmp4         [V09,T10] (  4,  4   )     int  ->  rax        
+;  V09 tmp4         [V09,T10] (  2,  3.96)     int  ->  rdi        
 ;  V10 tmp5         [V10,T07] (  4,  8   )     ref  ->  rdi         "argument with side effect"
 ;  V11 cse0         [V11,T09] (  5,  7   )     int  ->  r12         "CSE - moderate"
 ;  V12 cse1         [V12,T03] (  4, 11.88)    long  ->  [rbp-0x40]  spill-single-def "CSE - aggressive"
@@ -111,10 +111,10 @@ G_M22994_IG07:        ; bbWeight=1.98, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
        ; gcrRegs -[rsi rdi]
        ; byrRegs -[rcx]
        ; gcr arg pop 0
+       xor      edi, edi
        test     eax, eax
-       sete     al
-       movzx    rax, al
-       test     eax, eax
+       sete     dil
+       test     edi, edi
        jne      G_M22994_IG17
                        ;; size=46 bbWeight=1.98 PerfScore 30.20
 G_M22994_IG08:        ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
@@ -189,11 +189,8 @@ G_M22994_IG13:        ; bbWeight=0.02, gcVars=0000000000000040 {V07}, gcrefRegs=
        ; gcrRegs -[rsi rdi]
        ; gcr arg pop 0
        test     eax, eax
-       sete     al
-       movzx    rax, al
-       test     eax, eax
-       jne      SHORT G_M22994_IG17
-                       ;; size=47 bbWeight=0.02 PerfScore 0.37
+       je       SHORT G_M22994_IG17
+                       ;; size=39 bbWeight=0.02 PerfScore 0.34
 G_M22994_IG14:        ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        inc      r13d
        cmp      r12d, r13d
@@ -232,7 +229,7 @@ G_M22994_IG19:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 360, prolog size 38, PerfScore 116.62, instruction count 116, allocated bytes for code 360 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 352, prolog size 38, PerfScore 116.59, instruction count 113, allocated bytes for code 352 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:

-23 (-1.49%) : 204659.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

@@ -55,7 +55,6 @@
 ;  V43 cse3         [V43,T23] (  3,  7.92)     ref  ->  rcx         "CSE - moderate"
 ;  V44 cse4         [V44,T28] (  4,  3   )     ref  ->  rdi         "CSE - moderate"
 ;  V45 cse5         [V45,T25] (  6,  6   )     int  ->  r13         "CSE - moderate"
-;  TEMP_01                                   byref  ->  [rbp-0xB0]
 ;
 ; Lcl frame size = 152
 
@@ -68,13 +67,11 @@ G_M44608_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbx
        sub      rsp, 152
        lea      rbp, [rsp+0xC0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0xB0], rax
        mov      rbx, rdi
        ; gcrRegs +[rbx]
        mov      r15, rsi
        ; gcrRegs +[r15]
-                       ;; size=40 bbWeight=1 PerfScore 8.50
+                       ;; size=31 bbWeight=1 PerfScore 7.25
 G_M44608_IG02:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[rax]
@@ -498,22 +495,15 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000000080000004 {V08 V42}, gcrefR
        ; byrRegs -[rdi]
        mov      rax, gword ptr [rbp-0x48]
        ; gcrRegs +[rax]
-       lea      rdi, bword ptr [rax+0x08]
-       ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0xB0], rdi
-       mov      gword ptr [rbp-0x48], rax
-       mov      r11, gword ptr [rax+0x10]
-       ; gcrRegs +[r11]
-       mov      r11, gword ptr [r11+0x10]
-       mov      r11, gword ptr [r11+0x10]
-       mov      gword ptr [rbp-0x90], r11
-       ; GC ptr vars +{V39}
-       mov      r11, gword ptr [rbp-0xA8]
-       mov      rdi, gword ptr [r11+0x50]
+       mov      rdi, gword ptr [rax+0x10]
        ; gcrRegs +[rdi]
-       ; byrRegs -[rdi]
+       mov      rdi, gword ptr [rdi+0x10]
+       mov      rdi, gword ptr [rdi+0x10]
+       mov      gword ptr [rbp-0x90], rdi
+       ; GC ptr vars +{V39}
+       mov      rdi, gword ptr [rbp-0xA8]
+       mov      rdi, gword ptr [rdi+0x50]
        lea      r11, [(reloc)]
-       ; gcrRegs -[r11]
        cmp      dword ptr [rdi], edi
        ; GC ptr vars -{V42}
        call     [r11]<unknown method>
@@ -527,12 +517,14 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000000080000004 {V08 V42}, gcrefR
        call     [<unknown method>]
        ; gcrRegs -[rsi rdi]
        ; gcr arg pop 0
-       mov      rdi, bword ptr [rbp-0xB0]
+       mov      rcx, gword ptr [rbp-0x48]
+       ; gcrRegs +[rcx]
+       lea      rdi, bword ptr [rcx+0x08]
        ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        call     [CORINFO_HELP_ASSIGN_REF]
-       ; gcrRegs -[rax rsi]
+       ; gcrRegs -[rax rcx rsi]
        ; byrRegs -[rdi]
        mov      rax, gword ptr [rbp-0x48]
        ; gcrRegs +[rax]
@@ -566,7 +558,7 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000000080000004 {V08 V42}, gcrefR
        ; gcrRegs -[rsi]
        ; byrRegs -[rdi]
        jmp      SHORT G_M44608_IG20
-                       ;; size=186 bbWeight=0.02 PerfScore 1.26
+                       ;; size=172 bbWeight=0.02 PerfScore 1.22
 G_M44608_IG18:        ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      rax, gword ptr [rbp-0x38]
        ; gcrRegs +[rax]
@@ -848,7 +840,7 @@ G_M44608_IG29:        ; bbWeight=0, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
        int3     
                        ;; size=27 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1540, prolog size 40, PerfScore 643.62, instruction count 369, allocated bytes for code 1540 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1517, prolog size 31, PerfScore 642.33, instruction count 365, allocated bytes for code 1517 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
 ; ============================================================
 
 Unwind Info:

-23 (-1.47%) : 202570.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)

@@ -66,7 +66,6 @@
 ;  V54 tmp37        [V54,T37] (  2, 16   )     ref  ->  rdx         "argument with side effect"
 ;  V55 tmp38        [V55,T38] (  2, 16   )     ref  ->  [rbp-0xB8]  spill-single-def "argument with side effect"
 ;  V56 tmp39        [V56,T30] (  4, 16   )     ref  ->  rsi         "argument with side effect"
-;  TEMP_01                                   byref  ->  [rbp-0xC0]
 ;
 ; Lcl frame size = 152
 
@@ -79,15 +78,13 @@ G_M15781_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbx
        sub      rsp, 152
        lea      rbp, [rsp+0xC0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0xC0], rax
        mov      rbx, rdi
        ; gcrRegs +[rbx]
        mov      r14, rsi
        ; gcrRegs +[r14]
        mov      r15, rdx
        ; gcrRegs +[r15]
-                       ;; size=43 bbWeight=1 PerfScore 8.75
+                       ;; size=34 bbWeight=1 PerfScore 7.50
 G_M15781_IG02:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[rax]
@@ -697,14 +694,8 @@ G_M15781_IG29:        ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
        call     [CORINFO_HELP_ASSIGN_REF]
        ; gcrRegs -[rax rsi]
        ; byrRegs -[rdi]
-       mov      rax, gword ptr [rbp-0x48]
-       ; gcrRegs +[rax]
-       lea      rdi, bword ptr [rax+0x10]
-       ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0xC0], rdi
        call     [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
-       ; gcrRegs -[rax]
-       ; byrRegs -[rdi] +[rax]
+       ; byrRegs +[rax]
        mov      rsi, gword ptr [rax]
        ; gcrRegs +[rsi]
        mov      rdi, gword ptr [rbp-0x90]
@@ -715,12 +706,14 @@ G_M15781_IG29:        ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
        call     [r11]<unknown method>
        ; gcrRegs -[rsi rdi] +[rax]
        ; byrRegs -[rax]
-       mov      rdi, bword ptr [rbp-0xC0]
+       mov      rcx, gword ptr [rbp-0x48]
+       ; gcrRegs +[rcx]
+       lea      rdi, bword ptr [rcx+0x10]
        ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        call     [CORINFO_HELP_ASSIGN_REF]
-       ; gcrRegs -[rax rsi]
+       ; gcrRegs -[rax rcx rsi]
        ; byrRegs -[rdi]
        mov      rdi, gword ptr [rbp-0x40]
        ; gcrRegs +[rdi]
@@ -739,7 +732,7 @@ G_M15781_IG29:        ; bbWeight=0.04, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
        inc      r12d
        cmp      r12d, r13d
        jl       G_M15781_IG29
-                       ;; size=189 bbWeight=0.04 PerfScore 2.35
+                       ;; size=175 bbWeight=0.04 PerfScore 2.27
 G_M15781_IG30:        ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx r15]
        mov      rdi, r14
@@ -777,7 +770,7 @@ G_M15781_IG33:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
                        ;; size=28 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1567, prolog size 34, PerfScore 1499.61, instruction count 383, allocated bytes for code 1567 (MethodHash=127bc25a) for method System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
+; Total bytes of code 1544, prolog size 25, PerfScore 1498.28, instruction count 379, allocated bytes for code 1544 (MethodHash=127bc25a) for method System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
 ; ============================================================
 
 Unwind Info:

-10 (-0.49%) : 135209.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -35,13 +35,13 @@
 ;  V23 tmp2         [V23,T43] (  2,  0   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V24 tmp3         [V24,T37] (  3,  2   )     int  ->  rcx        
 ;  V25 tmp4         [V25,T18] (  4, 16   )     int  ->  rdi         "impSpillLclRefs"
-;  V26 tmp5         [V26,T27] (  2,  8   )     ref  ->  rsi         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V26 tmp5         [V26,T26] (  2,  8   )     ref  ->  rsi         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V27 tmp6         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp7         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V29 tmp8         [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V30 tmp9         [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <<unknown class>>
 ;  V31 tmp10        [V31,T42] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V32 tmp11        [V32,T23] (  2,  0.16)   ubyte  ->  rdi         "Inline return value spill temp"
+;* V32 tmp11        [V32,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V33 tmp12        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V34 tmp13        [V34,T10] (  6, 24   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V35 tmp14        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -56,17 +56,17 @@
 ;  V44 tmp23        [V44,T05] (  4, 32   )     ref  ->  rax         "argument with side effect"
 ;  V45 tmp24        [V45,T06] (  4, 32   )     ref  ->  [rbp-0x68]  "argument with side effect"
 ;  V46 tmp25        [V46,T07] (  4, 32   )     ref  ->  rax         "argument with side effect"
-;  V47 tmp26        [V47,T28] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V48 tmp27        [V48,T29] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V49 tmp28        [V49,T30] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V50 tmp29        [V50,T31] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V51 tmp30        [V51,T32] (  2,  8   )     ref  ->  [rbp-0x70]  spill-single-def "argument with side effect"
-;  V52 tmp31        [V52,T33] (  2,  8   )     ref  ->  rsi         "argument with side effect"
+;  V47 tmp26        [V47,T27] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V48 tmp27        [V48,T28] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V49 tmp28        [V49,T29] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V50 tmp29        [V50,T30] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V51 tmp30        [V51,T31] (  2,  8   )     ref  ->  [rbp-0x70]  spill-single-def "argument with side effect"
+;  V52 tmp31        [V52,T32] (  2,  8   )     ref  ->  rsi         "argument with side effect"
 ;  V53 tmp32        [V53,T16] (  4, 16   )     ref  ->  [rbp-0x78]  "argument with side effect"
 ;  V54 tmp33        [V54,T17] (  4, 16   )     ref  ->  rax         "argument with side effect"
-;  V55 tmp34        [V55,T24] (  4,  8   )     ref  ->  [rbp-0x80]  "argument with side effect"
-;  V56 tmp35        [V56,T25] (  4,  8   )     ref  ->  rax         "argument with side effect"
-;  V57 tmp36        [V57,T26] (  4,  8   )     ref  ->  rdi         "argument with side effect"
+;  V55 tmp34        [V55,T23] (  4,  8   )     ref  ->  [rbp-0x80]  "argument with side effect"
+;  V56 tmp35        [V56,T24] (  4,  8   )     ref  ->  rax         "argument with side effect"
+;  V57 tmp36        [V57,T25] (  4,  8   )     ref  ->  rdi         "argument with side effect"
 ;  V58 cse0         [V58,T20] ( 10, 13.54)     int  ->  [rbp-0x3C]  spill-single-def "CSE - moderate"
 ;  V59 cse1         [V59,T00] (  6, 71.28)    long  ->  [rbp-0x48]  spill-single-def "CSE - aggressive"
 ;
@@ -400,12 +400,9 @@ G_M58711_IG22:        ; bbWeight=0.08, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
        ; gcrRegs +[rdi]
        mov      r11, qword ptr [(reloc)]
        cmp      rdi, gword ptr [r15+r11]
-       sete     dil
-       ; gcrRegs -[rdi]
-       movzx    rdi, dil
-       test     edi, edi
-       je       SHORT G_M58711_IG26
+       jne      SHORT G_M58711_IG26
        mov      edi, r12d
+       ; gcrRegs -[rdi]
        mov      rdi, gword ptr [rbx+8*rdi+0x10]
        ; gcrRegs +[rdi]
        lea      r11, [(reloc)]
@@ -417,9 +414,9 @@ G_M58711_IG22:        ; bbWeight=0.08, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
        ; GC ptr vars +{V45}
        mov      rdi, gword ptr [rbp-0x60]
        ; gcrRegs +[rdi]
-                       ;; size=183 bbWeight=0.08 PerfScore 5.12
-G_M58711_IG23:        ; bbWeight=0.08, isz, extend
        lea      r11, [(reloc)]
+                       ;; size=180 bbWeight=0.08 PerfScore 5.04
+G_M58711_IG23:        ; bbWeight=0.08, isz, extend
        ; GC ptr vars -{V19}
        call     [r11]<unknown method>
        ; gcrRegs -[rdi]
@@ -435,7 +432,7 @@ G_M58711_IG23:        ; bbWeight=0.08, isz, extend
        test     eax, eax
        jne      SHORT G_M58711_IG25
        jmp      SHORT G_M58711_IG26
-                       ;; size=29 bbWeight=0.08 PerfScore 0.88
+                       ;; size=22 bbWeight=0.08 PerfScore 0.84
 G_M58711_IG24:        ; bbWeight=0.08, gcVars=0000000000002010 {V18 V19}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V04 V19}
        mov      esi, r12d
@@ -1045,7 +1042,7 @@ G_M58711_IG68:        ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
        int3     
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2042, prolog size 31, PerfScore 1669.33, instruction count 550, allocated bytes for code 2042 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2032, prolog size 31, PerfScore 1669.21, instruction count 547, allocated bytes for code 2032 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:

-10 (-0.48%) : 127543.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -34,7 +34,7 @@
 ;  V22 tmp2         [V22,T43] (  2,  0   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V23 tmp3         [V23,T37] (  3,  2   )     int  ->  rcx        
 ;  V24 tmp4         [V24,T18] (  4, 16   )     int  ->  rdi         "impSpillLclRefs"
-;  V25 tmp5         [V25,T27] (  2,  8   )     ref  ->  rsi         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V25 tmp5         [V25,T26] (  2,  8   )     ref  ->  rsi         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V26 tmp6         [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V27 tmp7         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp8         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
 ;  V30 tmp10        [V30,T41] (  3,  0   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V31 tmp11        [V31,T44] (  2,  0   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V32 tmp12        [V32,T42] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V33 tmp13        [V33,T23] (  2,  0.16)   ubyte  ->  rdi         "Inline return value spill temp"
+;* V33 tmp13        [V33,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V34 tmp14        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V35 tmp15        [V35,T10] (  6, 24   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V36 tmp16        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,17 +57,17 @@
 ;  V45 tmp25        [V45,T05] (  4, 32   )     ref  ->  rax         "argument with side effect"
 ;  V46 tmp26        [V46,T06] (  4, 32   )     ref  ->  [rbp-0x68]  "argument with side effect"
 ;  V47 tmp27        [V47,T07] (  4, 32   )     ref  ->  rax         "argument with side effect"
-;  V48 tmp28        [V48,T28] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V49 tmp29        [V49,T29] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V50 tmp30        [V50,T30] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V51 tmp31        [V51,T31] (  2,  8   )     ref  ->  rdi         "argument with side effect"
-;  V52 tmp32        [V52,T32] (  2,  8   )     ref  ->  [rbp-0x70]  spill-single-def "argument with side effect"
-;  V53 tmp33        [V53,T33] (  2,  8   )     ref  ->  rsi         "argument with side effect"
+;  V48 tmp28        [V48,T27] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V49 tmp29        [V49,T28] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V50 tmp30        [V50,T29] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V51 tmp31        [V51,T30] (  2,  8   )     ref  ->  rdi         "argument with side effect"
+;  V52 tmp32        [V52,T31] (  2,  8   )     ref  ->  [rbp-0x70]  spill-single-def "argument with side effect"
+;  V53 tmp33        [V53,T32] (  2,  8   )     ref  ->  rsi         "argument with side effect"
 ;  V54 tmp34        [V54,T16] (  4, 16   )     ref  ->  [rbp-0x78]  "argument with side effect"
 ;  V55 tmp35        [V55,T17] (  4, 16   )     ref  ->  rax         "argument with side effect"
-;  V56 tmp36        [V56,T24] (  4,  8   )     ref  ->  [rbp-0x80]  "argument with side effect"
-;  V57 tmp37        [V57,T25] (  4,  8   )     ref  ->  rax         "argument with side effect"
-;  V58 tmp38        [V58,T26] (  4,  8   )     ref  ->  rdi         "argument with side effect"
+;  V56 tmp36        [V56,T23] (  4,  8   )     ref  ->  [rbp-0x80]  "argument with side effect"
+;  V57 tmp37        [V57,T24] (  4,  8   )     ref  ->  rax         "argument with side effect"
+;  V58 tmp38        [V58,T25] (  4,  8   )     ref  ->  rdi         "argument with side effect"
 ;  V59 cse0         [V59,T20] ( 10, 13.54)     int  ->  [rbp-0x3C]  spill-single-def "CSE - moderate"
 ;  V60 cse1         [V60,T00] (  6, 71.28)    long  ->  [rbp-0x48]  spill-single-def "CSE - aggressive"
 ;
@@ -401,12 +401,9 @@ G_M58711_IG22:        ; bbWeight=0.08, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
        ; gcrRegs +[rdi]
        mov      r11, qword ptr [(reloc)]
        cmp      rdi, gword ptr [r15+r11]
-       sete     dil
-       ; gcrRegs -[rdi]
-       movzx    rdi, dil
-       test     edi, edi
-       je       SHORT G_M58711_IG26
+       jne      SHORT G_M58711_IG26
        mov      edi, r12d
+       ; gcrRegs -[rdi]
        mov      rdi, gword ptr [rbx+8*rdi+0x10]
        ; gcrRegs +[rdi]
        lea      r11, [(reloc)]
@@ -418,9 +415,9 @@ G_M58711_IG22:        ; bbWeight=0.08, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe
        ; GC ptr vars +{V46}
        mov      rdi, gword ptr [rbp-0x60]
        ; gcrRegs +[rdi]
-                       ;; size=183 bbWeight=0.08 PerfScore 5.12
-G_M58711_IG23:        ; bbWeight=0.08, isz, extend
        lea      r11, [(reloc)]
+                       ;; size=180 bbWeight=0.08 PerfScore 5.04
+G_M58711_IG23:        ; bbWeight=0.08, isz, extend
        ; GC ptr vars -{V18}
        call     [r11]<unknown method>
        ; gcrRegs -[rdi]
@@ -436,7 +433,7 @@ G_M58711_IG23:        ; bbWeight=0.08, isz, extend
        test     eax, eax
        jne      SHORT G_M58711_IG25
        jmp      SHORT G_M58711_IG26
-                       ;; size=29 bbWeight=0.08 PerfScore 0.88
+                       ;; size=22 bbWeight=0.08 PerfScore 0.84
 G_M58711_IG24:        ; bbWeight=0.08, gcVars=0000000000002010 {V17 V18}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V04 V18}
        mov      esi, r12d
@@ -1056,7 +1053,7 @@ G_M58711_IG68:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
                        ;; size=40 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2063, prolog size 31, PerfScore 1669.21, instruction count 555, allocated bytes for code 2063 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2053, prolog size 31, PerfScore 1669.09, instruction count 552, allocated bytes for code 2053 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:

-8 (-0.19%) : 44551.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

@@ -54,7 +54,7 @@
 ;  V42 tmp8         [V42,T07] (  6, 48   )     ref  ->  [rbp-0x3A0]  class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V43 tmp9         [V43    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp10        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-;  V45 tmp11        [V45,T36] (  2,  0.16)   ubyte  ->  rdi         "Inline return value spill temp"
+;* V45 tmp11        [V45,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V46 tmp12        [V46,T11] (  4, 32   )     ref  ->  [rbp-0x3A8]  class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V47 tmp13        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
 ;  V48 tmp14        [V48,T25] (  4, 16   )   ubyte  ->  rax         "Inline return value spill temp"
@@ -708,13 +708,10 @@ G_M30062_IG32:        ; bbWeight=0.08, extend
        cmp      dword ptr [rdi], edi
        call     [r11]<unknown method>
        ; gcrRegs -[rax rdi]
-       xor      edi, edi
        cmp      eax, 32
-       setne    dil
-       test     edi, edi
        je       G_M30062_IG41
        jmp      G_M30062_IG44
-                       ;; size=37 bbWeight=0.08 PerfScore 0.92
+                       ;; size=29 bbWeight=0.08 PerfScore 0.80
 G_M30062_IG33:        ; bbWeight=0.08, gcrefRegs=B008 {rbx r12 r13 r15}, byrefRegs=4000 {r14}, byref, isz
        lea      rdi, [rbp-0x1D8]
        mov      rsi, qword ptr [rbp-0x380]
@@ -1495,7 +1492,7 @@ G_M30062_IG73:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 4277, prolog size 83, PerfScore 3137.91, instruction count 998, allocated bytes for code 4277 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 4269, prolog size 83, PerfScore 3137.79, instruction count 995, allocated bytes for code 4269 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:

libraries.pmi.linux.x64.checked.mch

-38 (-2.39%) : 14177.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -86,7 +86,6 @@
 ;  V75 tmp56        [V75,T16] (  6, 12   )     ref  ->  rax         "argument with side effect"
 ;  V76 tmp57        [V76,T17] (  6, 12   )     ref  ->  rax         "argument with side effect"
 ;  V77 cse0         [V77,T01] (  7, 88   )    long  ->  [rbp-0x60]  spill-single-def "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [rbp-0xA0]
 ;
 ; Lcl frame size = 120
 
@@ -99,12 +98,10 @@ G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbx
        sub      rsp, 120
        lea      rbp, [rsp+0xA0]
-       vxorps   xmm8, xmm8, xmm8
-       vmovdqu  ymmword ptr [rbp-0xA0], ymm8
-       vmovdqu  ymmword ptr [rbp-0x80], ymm8
-       vmovdqu  ymmword ptr [rbp-0x60], ymm8
-       vmovdqa  xmmword ptr [rbp-0x40], xmm8
        xor      eax, eax
+       mov      qword ptr [rbp-0x58], rax
+       vxorps   xmm8, xmm8, xmm8
+       vmovdqu  ymmword ptr [rbp-0x50], ymm8
        mov      qword ptr [rbp-0x30], rax
        mov      r14, rdi
        ; gcrRegs +[r14]
@@ -112,7 +109,7 @@ G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rbx]
        mov      r15, rdx
        ; gcrRegs +[r15]
-                       ;; size=65 bbWeight=1 PerfScore 17.08
+                       ;; size=51 bbWeight=1 PerfScore 12.08
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
        cmp      byte  ptr [r14], r14b
        lea      r13, bword ptr [r14+0x28]
@@ -477,16 +474,10 @@ G_M1087_IG22:        ; bbWeight=0.02, gcVars=0000000002000800 {V22 V44}, gcrefRe
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rsi]
        ; byrRegs -[rdi]
-       mov      rax, gword ptr [rbp-0x88]
-       ; gcrRegs +[rax]
-       lea      rdi, bword ptr [rax+0x30]
-       ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0xA0], rdi
        mov      rdi, gword ptr [rbp-0x80]
        ; gcrRegs +[rdi]
-       ; byrRegs -[rdi]
        call     [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
-       ; gcrRegs -[rdi]
+       ; gcrRegs -[rdi] +[rax]
        mov      rdi, rax
        ; gcrRegs +[rdi]
        mov      rsi, gword ptr [rbp-0x80]
@@ -497,17 +488,19 @@ G_M1087_IG22:        ; bbWeight=0.02, gcVars=0000000002000800 {V22 V44}, gcrefRe
        ; GC ptr vars -{V22}
        call     [rax+0x38]<unknown method>
        ; gcrRegs -[rsi rdi] +[rax]
-       mov      rdi, bword ptr [rbp-0xA0]
+       mov      rcx, gword ptr [rbp-0x88]
+       ; gcrRegs +[rcx]
+       lea      rdi, bword ptr [rcx+0x30]
        ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rsi]
+       ; gcrRegs -[rax rcx rsi]
        ; byrRegs -[rdi]
        mov      rax, gword ptr [rbp-0x88]
        ; gcrRegs +[rax]
        jmp      SHORT G_M1087_IG24
-                       ;; size=111 bbWeight=0.02 PerfScore 0.52
+                       ;; size=97 bbWeight=0.02 PerfScore 0.48
 G_M1087_IG23:        ; bbWeight=0.02, gcVars=0000000000000200 {V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax]
        ; GC ptr vars -{V23} +{V07}
@@ -517,16 +510,10 @@ G_M1087_IG23:        ; bbWeight=0.02, gcVars=0000000000000200 {V07}, gcrefRegs=C
        mov      dword ptr [rax+0x38], r12d
        mov      rdi, 0xD1FFAB1E
        ; gcrRegs +[rdi]
-       mov      gword ptr [rax+0x28], rdi
        mov      gword ptr [rbp-0x78], rax
        ; GC ptr vars +{V20}
-       lea      rdi, bword ptr [rax+0x30]
-       ; gcrRegs -[rdi]
-       ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0xA0], rdi
+       mov      gword ptr [rax+0x28], rdi
        mov      rdi, gword ptr [rbp-0x68]
-       ; gcrRegs +[rdi]
-       ; byrRegs -[rdi]
        call     [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
        ; gcrRegs -[rdi]
        mov      rdi, rax
@@ -539,16 +526,18 @@ G_M1087_IG23:        ; bbWeight=0.02, gcVars=0000000000000200 {V07}, gcrefRegs=C
        ; GC ptr vars -{V07}
        call     [rax+0x38]<unknown method>
        ; gcrRegs -[rsi rdi] +[rax]
-       mov      rdi, bword ptr [rbp-0xA0]
+       mov      rcx, gword ptr [rbp-0x78]
+       ; gcrRegs +[rcx]
+       lea      rdi, bword ptr [rcx+0x30]
        ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rsi]
+       ; gcrRegs -[rax rcx rsi]
        ; byrRegs -[rdi]
        mov      rax, gword ptr [rbp-0x78]
        ; gcrRegs +[rax]
-                       ;; size=94 bbWeight=0.02 PerfScore 0.43
+                       ;; size=84 bbWeight=0.02 PerfScore 0.41
 G_M1087_IG24:        ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars -{V20}
        cmp      r12d, dword ptr [r14+0x08]
@@ -792,7 +781,7 @@ G_M1087_IG46:        ; bbWeight=0, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byre
        int3     
                        ;; size=9 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1590, prolog size 56, PerfScore 913.00, instruction count 372, allocated bytes for code 1590 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
+; Total bytes of code 1552, prolog size 42, PerfScore 907.94, instruction count 367, allocated bytes for code 1552 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
 ; ============================================================
 
 Unwind Info:

-26 (-1.40%) : 260701.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

@@ -46,7 +46,7 @@
 ;* V35 tmp23        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
 ;* V36 tmp24        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
 ;* V37 tmp25        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
-;  V38 tmp26        [V38,T15] (  6, 12   )     ref  ->  registers   "argument with side effect"
+;  V38 tmp26        [V38,T15] (  6, 12   )     ref  ->  rdi         "argument with side effect"
 ;  V39 tmp27        [V39,T25] (  4,  8   )     ref  ->  rax         "argument with side effect"
 ;  V40 tmp28        [V40,T26] (  4,  8   )     ref  ->  [rbp-0xA0]  "argument with side effect"
 ;  V41 tmp29        [V41,T34] (  3,  3   )     ref  ->  rdi         single-def "argument with side effect"
@@ -62,7 +62,6 @@
 ;  V51 cse3         [V51,T33] (  4,  3   )     ref  ->  rdi         "CSE - conservative"
 ;  V52 cse4         [V52,T28] (  6,  6   )     int  ->  r13         "CSE - moderate"
 ;  V53 cse5         [V53,T31] (  4,  5   )    long  ->  r13         "CSE - moderate"
-;  TEMP_01                                   byref  ->  [rbp-0xC0]
 ;
 ; Lcl frame size = 168
 
@@ -75,13 +74,11 @@ G_M44608_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbx
        sub      rsp, 168
        lea      rbp, [rsp+0xD0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0xC0], rax
        mov      rbx, rdi
        ; gcrRegs +[rbx]
        mov      r15, rsi
        ; gcrRegs +[r15]
-                       ;; size=40 bbWeight=1 PerfScore 8.50
+                       ;; size=31 bbWeight=1 PerfScore 7.25
 G_M44608_IG02:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        mov      rdi, 0xD1FFAB1E      ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_0
        call     CORINFO_HELP_NEWSFAST
@@ -119,7 +116,7 @@ G_M44608_IG04:        ; bbWeight=0.50, epilog, nogc, extend
 G_M44608_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax] +[rbx rdi r14-r15]
        test     byte  ptr [rdi+0x64], 1
-       jne      G_M44608_IG30
+       jne      G_M44608_IG29
        mov      rdi, gword ptr [rdi+0x40]
        call     [System.Xml.Serialization.ReflectionXmlSerializationReader:ReflectionCreateObject(System.Type):System.Object]
        ; gcrRegs -[rdi] +[rax]
@@ -149,7 +146,7 @@ G_M44608_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C08
        ; gcrRegs -[rax]
        mov      dword ptr [rbp-0x2C], eax
        test     r13d, r13d
-       jle      G_M44608_IG22
+       jle      G_M44608_IG21
        cmp      dword ptr [r12+0x08], r13d
        jl       G_M44608_IG14
                        ;; size=94 bbWeight=0.50 PerfScore 12.25
@@ -415,7 +412,7 @@ G_M44608_IG12:        ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
                        ;; size=38 bbWeight=3.96 PerfScore 37.62
 G_M44608_IG13:        ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r15]
-       jmp      G_M44608_IG22
+       jmp      G_M44608_IG21
                        ;; size=5 bbWeight=0.50 PerfScore 1.00
 G_M44608_IG14:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[r15]
@@ -514,13 +511,13 @@ G_M44608_IG16:        ; bbWeight=0.02, gcVars=0000000000000008 {V08}, gcrefRegs=
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rsi]
        ; byrRegs -[rdi]
-       jmp      G_M44608_IG21
+       jmp      G_M44608_IG20
                        ;; size=86 bbWeight=0.02 PerfScore 0.32
 G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000008 {V08 V49}, gcrefRegs=D009 {rax rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rax]
        ; GC ptr vars +{V08 V39 V49}
        cmp      byte  ptr [rax+0x72], 0
-       jne      G_M44608_IG19
+       jne      G_M44608_IG18
        mov      rdi, 0xD1FFAB1E      ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_2
        call     CORINFO_HELP_NEWSFAST
        ; gcr arg pop 0
@@ -536,28 +533,19 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000008 {V08 V49}, gcrefR
        ; byrRegs -[rdi]
        mov      rax, gword ptr [rbp-0x48]
        ; gcrRegs +[rax]
-       lea      rdi, bword ptr [rax+0x08]
-       ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0xC0], rdi
-       mov      gword ptr [rbp-0x48], rax
-       mov      rcx, gword ptr [rax+0x10]
-       ; gcrRegs +[rcx]
-       mov      rcx, gword ptr [rcx+0x10]
-       mov      rcx, gword ptr [rcx+0x10]
-       mov      gword ptr [rbp-0xA0], rcx
-       ; GC ptr vars +{V40}
-       mov      rdx, gword ptr [rbp-0xB0]
-       ; gcrRegs +[rdx]
-       mov      rdx, gword ptr [rdx+0x50]
-       mov      rdi, rdx
+       mov      rdi, gword ptr [rax+0x10]
        ; gcrRegs +[rdi]
-       ; byrRegs -[rdi]
-       mov      rdx, qword ptr [rdx]
-       ; gcrRegs -[rdx]
+       mov      rdi, gword ptr [rdi+0x10]
+       mov      rdi, gword ptr [rdi+0x10]
+       mov      gword ptr [rbp-0xA0], rdi
+       ; GC ptr vars +{V40}
+       mov      rdi, gword ptr [rbp-0xB0]
+       mov      rdi, gword ptr [rdi+0x50]
+       mov      rdx, qword ptr [rdi]
        mov      rdx, qword ptr [rdx+0x48]
        ; GC ptr vars -{V49}
        call     [rdx+0x30]<unknown method>
-       ; gcrRegs -[rcx rdi]
+       ; gcrRegs -[rdi]
        ; gcr arg pop 0
        mov      rsi, rax
        ; gcrRegs +[rsi]
@@ -567,12 +555,14 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000008 {V08 V49}, gcrefR
        call     [<unknown method>]
        ; gcrRegs -[rsi rdi]
        ; gcr arg pop 0
-       mov      rdi, bword ptr [rbp-0xC0]
+       mov      rcx, gword ptr [rbp-0x48]
+       ; gcrRegs +[rcx]
+       lea      rdi, bword ptr [rcx+0x08]
        ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rsi]
+       ; gcrRegs -[rax rcx rsi]
        ; byrRegs -[rdi]
        mov      rdi, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
@@ -611,11 +601,9 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000008 {V08 V49}, gcrefR
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rsi]
        ; byrRegs -[rdi]
-                       ;; size=216 bbWeight=0.02 PerfScore 1.02
-G_M44608_IG18:        ; bbWeight=0.02, extend
-       jmp      G_M44608_IG21
-                       ;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M44608_IG19:        ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+       jmp      G_M44608_IG20
+                       ;; size=204 bbWeight=0.02 PerfScore 1.02
+G_M44608_IG18:        ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      rax, gword ptr [rbp-0x38]
        ; gcrRegs +[rax]
        mov      rcx, gword ptr [rax+0x08]
@@ -626,7 +614,7 @@ G_M44608_IG19:        ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
        mov      rsi, gword ptr [rdi]
        ; gcrRegs +[rsi]
        test     rsi, rsi
-       jne      SHORT G_M44608_IG20
+       jne      SHORT G_M44608_IG19
        mov      rdi, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs -[rcx rsi]
@@ -653,7 +641,7 @@ G_M44608_IG19:        ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
        mov      rsi, gword ptr [rbp-0x70]
        ; gcrRegs +[rsi]
                        ;; size=116 bbWeight=0.02 PerfScore 0.37
-G_M44608_IG20:        ; bbWeight=0.02, gcVars=0000000000800008 {V08 V20}, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M44608_IG19:        ; bbWeight=0.02, gcVars=0000000000800008 {V08 V20}, gcrefRegs=D048 {rbx rsi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; GC ptr vars -{V23}
        mov      rcx, gword ptr [rbp-0x68]
        ; gcrRegs +[rcx]
@@ -664,14 +652,14 @@ G_M44608_IG20:        ; bbWeight=0.02, gcVars=0000000000800008 {V08 V20}, gcrefR
        ; gcrRegs -[rcx rsi]
        ; byrRegs -[rdi]
                        ;; size=13 bbWeight=0.02 PerfScore 0.05
-G_M44608_IG21:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M44608_IG20:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [rbp-0x38]
        ; gcrRegs +[rdi]
        mov      rsi, gword ptr [rdi+0x08]
        ; gcrRegs +[rsi]
        mov      eax, dword ptr [rbp-0x2C]
        cmp      eax, dword ptr [r12+0x08]
-       jae      G_M44608_IG29
+       jae      G_M44608_IG28
        mov      dword ptr [rbp-0x2C], eax
        mov      edi, eax
        ; gcrRegs -[rdi]
@@ -687,7 +675,7 @@ G_M44608_IG21:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
        mov      dword ptr [rbp-0x2C], edx
        jg       G_M44608_IG14
                        ;; size=54 bbWeight=0.04 PerfScore 0.59
-G_M44608_IG22:        ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
+G_M44608_IG21:        ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r15]
        mov      rdx, gword ptr [r14+0x10]
        ; gcrRegs +[rdx]
@@ -745,7 +733,7 @@ G_M44608_IG22:        ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M44608_IG24
+       je       SHORT G_M44608_IG23
        mov      rdi, gword ptr [rbx+0x08]
        ; gcrRegs +[rdi]
        mov      rax, qword ptr [rdi]
@@ -756,7 +744,7 @@ G_M44608_IG22:        ; bbWeight=0.50, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
        mov      rax, gword ptr [r14+0x10]
        ; gcrRegs +[rax]
                        ;; size=150 bbWeight=0.50 PerfScore 23.38
-G_M44608_IG23:        ; bbWeight=0.50, epilog, nogc, extend
+G_M44608_IG22:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 168
        pop      rbx
        pop      r12
@@ -766,7 +754,7 @@ G_M44608_IG23:        ; bbWeight=0.50, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=18 bbWeight=0.50 PerfScore 2.12
-G_M44608_IG24:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M44608_IG23:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs -[rax] +[rbx r12 r15]
        mov      rdi, gword ptr [rbx+0x08]
        ; gcrRegs +[rdi]
@@ -775,9 +763,9 @@ G_M44608_IG24:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D00
        call     [rax+0x20]<unknown method>
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
-       jmp      G_M44608_IG26
+       jmp      G_M44608_IG25
                        ;; size=22 bbWeight=0.50 PerfScore 5.50
-G_M44608_IG25:        ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M44608_IG24:        ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, r13
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -831,7 +819,7 @@ G_M44608_IG25:        ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
        ; gcrRegs -[rcx rdx rsi rdi r8-r9]
        ; gcr arg pop 0
                        ;; size=132 bbWeight=2 PerfScore 39.50
-G_M44608_IG26:        ; bbWeight=4, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M44608_IG25:        ; bbWeight=4, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      rdi, gword ptr [rbx+0x08]
        ; gcrRegs +[rdi]
        mov      rax, qword ptr [rdi]
@@ -847,7 +835,7 @@ G_M44608_IG26:        ; bbWeight=4, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
        cmp      eax, 15
-       je       SHORT G_M44608_IG27
+       je       SHORT G_M44608_IG26
        mov      rdi, gword ptr [rbx+0x08]
        ; gcrRegs +[rdi]
        mov      rax, qword ptr [rdi]
@@ -856,9 +844,9 @@ G_M44608_IG26:        ; bbWeight=4, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=
        ; gcrRegs -[rdi]
        ; gcr arg pop 0
        test     eax, eax
...

-11 (-1.34%) : 281851.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  rdx         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T20] (  2,  0.04)   ubyte  ->  rdi         "Inline return value spill temp"
+;* V19 tmp13        [V19,T20] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -234,10 +234,10 @@ G_M10809_IG15:        ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
        cmp      r13d, eax
        jg       SHORT G_M10809_IG12
                        ;; size=35 bbWeight=3.96 PerfScore 33.66
-G_M10809_IG16:        ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M10809_IG16:        ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r14]
-       jmp      G_M10809_IG21
-                       ;; size=5 bbWeight=0.50 PerfScore 1.00
+       jmp      SHORT G_M10809_IG21
+                       ;; size=2 bbWeight=0.50 PerfScore 1.00
 G_M10809_IG17:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[r14]
        mov      dword ptr [rbp-0x2C], eax
@@ -277,12 +277,9 @@ G_M10809_IG19:        ; bbWeight=0.02, gcrefRegs=D00C {rdx rbx r12 r14 r15}, byr
        ; gcrRegs -[rax rcx]
        ; byrRegs -[rdi]
        ; gcr arg pop 0
-       xor      edi, edi
        test     eax, eax
-       sete     dil
-       test     edi, edi
-       je       G_M10809_IG26
-                       ;; size=61 bbWeight=0.02 PerfScore 0.33
+       jne      G_M10809_IG26
+                       ;; size=53 bbWeight=0.02 PerfScore 0.30
 G_M10809_IG20:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        cmp      dword ptr [rbp-0x38], 0xFFFF
        ja       G_M10809_IG27
@@ -455,7 +452,7 @@ G_M10809_IG27:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        int3     
                        ;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 821, prolog size 25, PerfScore 124.63, instruction count 208, allocated bytes for code 821 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 810, prolog size 25, PerfScore 124.60, instruction count 205, allocated bytes for code 810 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:

+0 (0.00%) : 237399.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable1[int]]:TrimExcess(int):this (FullOpts)

@@ -10,9 +10,9 @@
 ;
 ;  V00 this         [V00,T02] ( 17, 19.50)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T16] (  4,  4   )     int  ->  rsi         single-def
-;  V02 loc0         [V02,T27] (  3,  2.50)     int  ->  r15         single-def
+;  V02 loc0         [V02,T26] (  3,  2.50)     int  ->  r15         single-def
 ;  V03 loc1         [V03    ] (  5, 12   )  struct (16) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-;  V04 loc2         [V04,T29] (  2,  2   )     int  ->  rdi         single-def
+;  V04 loc2         [V04,T27] (  2,  2   )     int  ->  rdi         single-def
 ;  V05 loc3         [V05,T22] (  3,  5   )     int  ->  r13         single-def
 ;  V06 loc4         [V06    ] (  2,  2.50)  struct (16) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
 ;  V07 loc5         [V07,T15] (  5,  7   )     int  ->  r15        
@@ -48,17 +48,14 @@
 ;  V37 tmp26        [V37,T10] (  3, 12   )     int  ->  rcx         "index expr"
 ;  V38 tmp27        [V38,T11] (  3, 12   )     int  ->  rdi         "index expr"
 ;  V39 cse0         [V39,T12] (  4,  9   )    long  ->  r14         "CSE - moderate"
-;* V40 cse1         [V40,T30] (  0,  0   )    long  ->  zero-ref    "CSE - moderate"
+;* V40 cse1         [V40,T28] (  0,  0   )    long  ->  zero-ref    "CSE - moderate"
 ;  V41 cse2         [V41,T19] (  3,  6   )     int  ->  r15         "CSE - moderate"
 ;  V42 rat0         [V42,T23] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
 ;  V43 rat1         [V43,T24] (  3,  4   )    long  ->  r14         "runtime lookup"
 ;  V44 rat2         [V44,T21] (  3,  5.60)    long  ->  r14         "fgMakeTemp is creating a new local variable"
-;* V45 rat3         [V45,T28] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V46 rat4         [V46,T31] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V47 rat5         [V47,T26] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V48 rat6         [V48,T03] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V49 rat7         [V49,T04] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V50 rat8         [V50,T01] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V45 rat3         [V45,T03] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V46 rat4         [V46,T04] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V47 rat5         [V47,T01] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 

+0 (0.00%) : 211824.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:TrimExcess():this (FullOpts)

@@ -9,10 +9,10 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] ( 17, 19.50)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
-;  V01 loc0         [V01,T27] (  3,  2.50)     int  ->  r15         single-def
-;  V02 loc1         [V02,T28] (  3,  2.50)     int  ->  r14         single-def
+;  V01 loc0         [V01,T26] (  3,  2.50)     int  ->  r15         single-def
+;  V02 loc1         [V02,T27] (  3,  2.50)     int  ->  r14         single-def
 ;  V03 loc2         [V03    ] (  5, 12   )  struct (16) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1+Entry[System.__Canon]]>
-;  V04 loc3         [V04,T30] (  2,  2   )     int  ->  rdi         single-def
+;  V04 loc3         [V04,T28] (  2,  2   )     int  ->  rdi         single-def
 ;  V05 loc4         [V05,T21] (  3,  5   )     int  ->  r12         single-def
 ;  V06 loc5         [V06    ] (  2,  2.50)  struct (16) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1+Entry[System.__Canon]]>
 ;  V07 loc6         [V07,T16] (  4,  6.50)     int  ->  r14        
@@ -33,9 +33,9 @@
 ;  V22 tmp11        [V22,T08] (  3, 12   )     ref  ->  rax         class-hnd "impAppendStmt" <<unknown class>>
 ;  V23 tmp12        [V23,T09] (  3, 12   )     ref  ->  rax         class-hnd "impAppendStmt" <<unknown class>>
 ;* V24 tmp13        [V24    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V25 tmp14        [V25,T31] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V25 tmp14        [V25,T29] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V26 tmp15        [V26    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V27 tmp16        [V27,T32] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V27 tmp16        [V27,T30] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V28 tmp17        [V28    ] (  4, 11   )     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V29 tmp18        [V29    ] (  5, 12   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
 ;  V30 tmp19        [V30    ] (  2,  2.50)     ref  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -53,12 +53,9 @@
 ;  V42 rat0         [V42,T22] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
 ;  V43 rat1         [V43,T23] (  3,  4   )    long  ->  r13         "runtime lookup"
 ;  V44 rat2         [V44,T20] (  3,  5.60)    long  ->  r13         "fgMakeTemp is creating a new local variable"
-;* V45 rat3         [V45,T29] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V46 rat4         [V46,T33] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V47 rat5         [V47,T26] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V48 rat6         [V48,T03] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V49 rat7         [V49,T04] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V50 rat8         [V50,T01] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V45 rat3         [V45,T03] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V46 rat4         [V46,T04] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V47 rat5         [V47,T01] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 56
 
@@ -138,8 +135,8 @@ G_M32039_IG11:        ; bbWeight=0.50, extend
        xor      eax, eax
        mov      dword ptr [rbp-0x54], eax
        test     r12d, r12d
-       jle      G_M32039_IG18
        mov      eax, dword ptr [rbp-0x54]
+       jle      G_M32039_IG18
                        ;; size=20 bbWeight=0.50 PerfScore 1.88
 G_M32039_IG12:        ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rdi, qword ptr [rbx]

+0 (0.00%) : 292892.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.Nullable1[int]]:CopyToObjects(System.Object[],int):this (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 this         [V00,T10] (  4,  4   )     ref  ->  r15         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->  r14         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T05] (  5, 50   )     int  ->  rbx        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->  r13         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->  r13         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->  r12        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.Nullable`1[int]]>
 ;  V06 loc3         [V06,T01] (  8,104   )     ref  ->  [rbp-0x50]  class-hnd <<unknown class>>
@@ -22,23 +22,20 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
 ;* V13 tmp6         [V13    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Nullable`1[int]>
-;  V14 tmp7         [V14,T16] (  2,  8   )     ref  ->  rdx         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->  rdx         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T06] (  2, 32   )   ubyte  ->   r8         "field V13.hasValue (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T07] (  2, 32   )     int  ->  [rbp-0x34]  spill-single-def "field V13.value (fldOffset=0x4)" P-INDEP
 ;* V17 tmp10        [V17    ] (  0,  0   )     ref  ->  zero-ref    "V08.[000..008)"
 ;  V18 tmp11        [V18,T08] (  2, 32   )   ubyte  ->  [rbp-0x38]  spill-single-def "V08.[008..009)"
 ;* V19 tmp12        [V19    ] (  0,  0   )     int  ->  zero-ref    "V08.[012..016)"
 ;  V20 cse0         [V20,T13] (  2, 17   )    long  ->  [rbp-0x40]  spill-single-def hoist "CSE - moderate"
-;  V21 cse1         [V21,T18] (  3,  6   )     int  ->  [rbp-0x44]  spill-single-def "CSE - moderate"
-;  V22 rat0         [V22,T20] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V23 rat1         [V23,T21] (  3,  4   )    long  ->  registers   "runtime lookup"
-;  V24 rat2         [V24,T19] (  3,  5.60)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
-;* V25 rat3         [V25,T15] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat4         [V26,T22] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V27 rat5         [V27,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V28 rat6         [V28,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V29 rat7         [V29,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V30 rat8         [V30,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V21 cse1         [V21,T16] (  3,  6   )     int  ->  [rbp-0x44]  spill-single-def "CSE - moderate"
+;  V22 rat0         [V22,T18] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V23 rat1         [V23,T19] (  3,  4   )    long  ->  registers   "runtime lookup"
+;  V24 rat2         [V24,T17] (  3,  5.60)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
+;* V25 rat3         [V25,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V26 rat4         [V26,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V27 rat5         [V27,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 56
 

libraries_tests.run.linux.x64.Release.mch

-22 (-1.81%) : 726995.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

@@ -26,11 +26,11 @@
 ;* V14 tmp7         [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V15 tmp8         [V15,T16] (  6,  4   )    long  ->  rax         "Indirect call through function pointer"
 ;* V16 tmp9         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.HashSet`1+Enumerator[Roslyn.Utilities.AsyncLazy`1+Request[Microsoft.CodeAnalysis.TreeAndVersion]]>
-;  V17 tmp10        [V17,T29] (  2,  0   )   ubyte  ->  rdi         "Inline return value spill temp"
-;  V18 tmp11        [V18,T41] (  2,  0   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+;  V17 tmp10        [V17,T28] (  2,  0   )   ubyte  ->  rdi         "Inline return value spill temp"
+;  V18 tmp11        [V18,T38] (  2,  0   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
 ;  V19 tmp12        [V19,T22] (  3,  2   )     ref  ->  registers   class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V20 tmp13        [V20,T03] ( 10, 10   )     ref  ->  r15         class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-;  V21 tmp14        [V21,T30] (  2,  0   )   ubyte  ->  rsi         "Inline return value spill temp"
+;  V21 tmp14        [V21,T29] (  2,  0   )   ubyte  ->  rsi         "Inline return value spill temp"
 ;  V22 tmp15        [V22,T17] (  3,  4   )   byref  ->  r13         "Inlining Arg"
 ;* V23 tmp16        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
 ;* V24 tmp17        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
@@ -40,14 +40,14 @@
 ;  V28 tmp21        [V28,T25] (  2,  1   )   ubyte  ->  rcx         "Inline stloc first use temp"
 ;  V29 tmp22        [V29,T00] ( 11, 16.59)     ref  ->  r13         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V30 tmp23        [V30,T24] (  3,  2   )     ref  ->  r12         class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V31 tmp24        [V31,T28] (  2,  0   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V31 tmp24        [V31,T27] (  2,  0   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V32 tmp25        [V32,T10] (  5,  5   )     int  ->  [rbp-0x44]  spill-single-def "Inline stloc first use temp"
-;  V33 tmp26        [V33,T34] (  3,  0   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V33 tmp26        [V33,T31] (  3,  0   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V34 tmp27        [V34,T20] (  3,  2.30)     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Object>
 ;  V35 tmp28        [V35,T06] (  3,  6   )   byref  ->  rdi         "Inlining Arg"
 ;  V36 tmp29        [V36,T18] (  2,  4   )     ref  ->  rsi         class-hnd exact "Inlining Arg" <System.Object>
 ;  V37 tmp30        [V37    ] (  2,  0   )  struct ( 8) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
-;  V38 tmp31        [V38,T35] (  3,  0   )     ref  ->  r13         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+;  V38 tmp31        [V38,T32] (  3,  0   )     ref  ->  r13         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;* V39 tmp32        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V40 tmp33        [V40,T14] (  4,  4.20)   byref  ->  r15         "Inlining Arg"
 ;  V41 tmp34        [V41,T21] (  5,  2.20)     ref  ->  r12         class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
@@ -55,24 +55,21 @@
 ;  V43 tmp36        [V43    ] (  7,  5   )     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
 ;  V44 tmp37        [V44    ] (  3,  2   )     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
 ;  V45 tmp38        [V45    ] (  2,  0   )     int  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-;  V46 tmp39        [V46,T42] (  2,  0   )     ref  ->  rdi         "argument with side effect"
-;  V47 tmp40        [V47,T43] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V48 tmp41        [V48,T44] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V49 PSPSym       [V49,T31] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[V] "PSPSym"
-;  V50 rat0         [V50,T36] (  3,  0   )    long  ->  rsi         "Spilling to split statement for tree"
-;  V51 rat1         [V51,T37] (  3,  0   )    long  ->  rax         "runtime lookup"
-;  V52 rat2         [V52,T38] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V46 tmp39        [V46,T39] (  2,  0   )     ref  ->  rdi         "argument with side effect"
+;  V47 tmp40        [V47,T40] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V48 tmp41        [V48,T41] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V49 PSPSym       [V49,T30] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[V] "PSPSym"
+;  V50 rat0         [V50,T33] (  3,  0   )    long  ->  rsi         "Spilling to split statement for tree"
+;  V51 rat1         [V51,T34] (  3,  0   )    long  ->  rax         "runtime lookup"
+;  V52 rat2         [V52,T35] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;  V53 rat3         [V53,T11] (  3,  4.40)    long  ->  rsi         "Spilling to split statement for tree"
 ;  V54 rat4         [V54,T07] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;  V55 rat5         [V55,T12] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
 ;  V56 rat6         [V56,T08] (  3,  5.60)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V57 rat7         [V57,T32] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V58 rat8         [V58,T33] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V59 rat9         [V59,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V60 rat10        [V60,T13] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V61 rat11        [V61,T09] (  3,  5.60)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V62 rat12        [V62,T39] (  3,  0   )    long  ->  rdi         "Spilling to split statement for tree"
-;  V63 rat13        [V63,T40] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V57 rat7         [V57,T13] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V58 rat8         [V58,T09] (  3,  5.60)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V59 rat9         [V59,T36] (  3,  0   )    long  ->  rdi         "Spilling to split statement for tree"
+;  V60 rat10        [V60,T37] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -267,14 +264,14 @@ G_M38013_IG20:        ; bbWeight=1, gcVars=0000000000008002 {V00 V06}, gcrefRegs
        test     eax, eax
        je       G_M38013_IG53
                        ;; size=24 bbWeight=1 PerfScore 4.75
-G_M38013_IG21:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M38013_IG21:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        mov      rdi, qword ptr [r14]
        mov      rsi, qword ptr [rdi+0x38]
        mov      rsi, qword ptr [rsi]
        mov      r11, qword ptr [rsi+0x60]
        test     r11, r11
-       je       G_M38013_IG28
-                       ;; size=23 bbWeight=1 PerfScore 9.25
+       je       SHORT G_M38013_IG26
+                       ;; size=19 bbWeight=1 PerfScore 9.25
 G_M38013_IG22:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        mov      rdi, gword ptr [rbp-0x60]
        ; gcrRegs +[rdi]
@@ -304,23 +301,32 @@ G_M38013_IG24:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
        lea      r13, bword ptr [r15+0x10]
        ; byrRegs +[r13]
        cmp      gword ptr [r13], 0
-       je       SHORT G_M38013_IG26
+       je       SHORT G_M38013_IG27
                        ;; size=11 bbWeight=1 PerfScore 4.50
-G_M38013_IG25:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
+G_M38013_IG25:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
        mov      rsi, gword ptr [r13]
        ; gcrRegs +[rsi]
        cmp      dword ptr [rsi+0x20], 0
        setne    sil
        ; gcrRegs -[rsi]
        movzx    rsi, sil
-       jmp      G_M38013_IG37
-                       ;; size=21 bbWeight=0 PerfScore 0.00
-G_M38013_IG26:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+       jmp      SHORT G_M38013_IG29
+                       ;; size=18 bbWeight=0 PerfScore 0.00
+G_M38013_IG26:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[r15]
        ; byrRegs -[r13]
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       ; gcr arg pop 0
+       mov      r11, rax
+       jmp      SHORT G_M38013_IG22
+                       ;; size=20 bbWeight=0.20 PerfScore 0.70
+G_M38013_IG27:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs +[r15]
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       je       SHORT G_M38013_IG29
+       je       SHORT G_M38013_IG31
                        ;; size=9 bbWeight=1 PerfScore 4.00
-G_M38013_IG27:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M38013_IG28:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        call     [System.Threading.Tasks.Task:get_Exception():System.AggregateException:this]
@@ -339,7 +345,7 @@ G_M38013_IG27:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
        ; gcrRegs -[rax rdi]
        ; gcr arg pop 0
        test     eax, eax
-       jle      G_M38013_IG38
+       jle      SHORT G_M38013_IG30
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        call     [System.Threading.Tasks.Task:get_Exception():System.AggregateException:this]
@@ -359,93 +365,13 @@ G_M38013_IG27:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
        ; gcrRegs -[rax rsi rdi]
        ; gcr arg pop 0
        jmp      G_M38013_IG46
-                       ;; size=82 bbWeight=0 PerfScore 0.00
-G_M38013_IG28:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r15]
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       ; gcr arg pop 0
-       mov      r11, rax
-       jmp      G_M38013_IG22
-                       ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M38013_IG29:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs +[r15]
-       mov      eax, dword ptr [rbx+0x34]
-       and      eax, 0xD1FFAB1E
-       cmp      eax, 0xD1FFAB1E
-       je       G_M38013_IG41
-                       ;; size=19 bbWeight=1 PerfScore 3.50
-G_M38013_IG30:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
-       mov      rdi, rbx
-       ; gcrRegs +[rdi]
-       mov      esi, 1
-       call     [System.Threading.Tasks.Task`1[System.__Canon]:GetResultCore(ubyte):System.__Canon:this]
-       ; gcrRegs -[rdi] +[rax]
-       ; gcr arg pop 0
-       mov      r12, rax
-       ; gcrRegs +[r12]
-                       ;; size=17 bbWeight=0 PerfScore 0.00
-G_M38013_IG31:        ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       mov      r13, gword ptr [r15+0x08]
-       ; gcrRegs +[r13]
-       xor      ecx, ecx
-       mov      eax, dword ptr [r13+0x34]
-       mov      dword ptr [rbp-0x44], eax
-       test     eax, 0xD1FFAB1E
-       jne      SHORT G_M38013_IG34
-       lea      rdi, bword ptr [r13+0x34]
-       ; byrRegs +[rdi]
-       mov      esi, eax
-       or       esi, 0xD1FFAB1E
-       lock     
-       cmpxchg  dword ptr [rdi], esi
-       cmp      eax, dword ptr [rbp-0x44]
-       je       G_M38013_IG42
-                       ;; size=45 bbWeight=1 PerfScore 28.50
-G_M38013_IG32:        ; bbWeight=0, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; byrRegs -[rdi]
-       mov      rdi, r13
-       ; gcrRegs +[rdi]
-       mov      esi, 0xD1FFAB1E
-       mov      edx, 0xD1FFAB1E
-       call     [System.Threading.Tasks.Task:AtomicStateUpdateSlow(int,int):ubyte:this]
-       ; gcrRegs -[rdi]
-       ; gcr arg pop 0
-       jmp      SHORT G_M38013_IG36
-                       ;; size=21 bbWeight=0 PerfScore 0.00
-G_M38013_IG33:        ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rbx r12-r13 r15]
-       call     [System.ThrowHelper:ThrowNullReferenceException()]
-       ; gcr arg pop 0
-       int3     
-                       ;; size=7 bbWeight=0 PerfScore 0.00
-G_M38013_IG34:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs +[rbx r15]
-       test     ecx, ecx
-       jne      G_M38013_IG46
-                       ;; size=8 bbWeight=0 PerfScore 0.00
-G_M38013_IG35:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
-       mov      r13, gword ptr [r15+0x08]
-       ; gcrRegs +[r13]
-       cmp      byte  ptr [r13], r13b
-       xor      edi, edi
-       mov      dword ptr [rbp-0x50], edi
-       jmp      SHORT G_M38013_IG40
-                       ;; size=15 bbWeight=0 PerfScore 0.00
-G_M38013_IG36:        ; bbWeight=0, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[r12]
-       test     eax, eax
-       je       SHORT G_M38013_IG35
-       jmp      SHORT G_M38013_IG42
-                       ;; size=6 bbWeight=0 PerfScore 0.00
-G_M38013_IG37:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r12-r13]
+                       ;; size=78 bbWeight=0 PerfScore 0.00
+G_M38013_IG29:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
        test     esi, esi
-       je       G_M38013_IG26
+       je       SHORT G_M38013_IG27
        jmp      G_M38013_IG23
-                       ;; size=13 bbWeight=0 PerfScore 0.00
-G_M38013_IG38:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+                       ;; size=9 bbWeight=0 PerfScore 0.00
+G_M38013_IG30:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, rbx
        ; gcrRegs +[rdi]
        call     [System.Threading.Tasks.Task:get_Exception():System.AggregateException:this]
@@ -460,8 +386,78 @@ G_M38013_IG38:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
        ; gcr arg pop 0
        jmp      G_M38013_IG46
                        ;; size=26 bbWeight=0 PerfScore 0.00
-G_M38013_IG39:        ; bbWeight=0, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M38013_IG31:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+       mov      eax, dword ptr [rbx+0x34]
+       and      eax, 0xD1FFAB1E
+       cmp      eax, 0xD1FFAB1E
+       je       G_M38013_IG41
+                       ;; size=19 bbWeight=1 PerfScore 3.50
+G_M38013_IG32:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+       mov      rdi, rbx
+       ; gcrRegs +[rdi]
+       mov      esi, 1
...

-34 (-1.32%) : 733262.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

@@ -180,7 +180,6 @@
 ;  V168 cse14       [V168,T65] (  3,  0.07)     int  ->  r15         "CSE - conservative"
 ;  V169 cse15       [V169,T66] (  3,  0.07)     int  ->  r15         "CSE - conservative"
 ;  V170 rat0        [V170,T24] (  6,  8   )     ref  ->  r14         class-hnd "replacement local" <<unknown class>>
-;  TEMP_01                                   byref  ->  [rbp-0xA8]
 ;
 ; Lcl frame size = 136
 
@@ -194,13 +193,10 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        sub      rsp, 136
        vzeroupper 
        lea      rbp, [rsp+0xB0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0xA8], rax
        vxorps   xmm8, xmm8, xmm8
-       vmovdqu  ymmword ptr [rbp-0xA0], ymm8
-       vmovdqu  ymmword ptr [rbp-0x80], ymm8
        vmovdqu  ymmword ptr [rbp-0x60], ymm8
        vmovdqa  xmmword ptr [rbp-0x40], xmm8
+       xor      eax, eax
        mov      qword ptr [rbp-0x30], rax
        mov      qword ptr [rbp-0xB0], rsp
        mov      rax, 0xD1FFAB1E
@@ -209,7 +205,7 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rbx]
        mov      r15, rsi
        ; gcrRegs +[r15]
-                       ;; size=99 bbWeight=1 PerfScore 21.08
+                       ;; size=79 bbWeight=1 PerfScore 16.08
 G_M8186_IG02:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        mov      r14, r15
        ; gcrRegs +[r14]
@@ -1016,15 +1012,11 @@ G_M8186_IG71:        ; bbWeight=0.19, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {
        sub      eax, esi
        cmp      eax, r13d
        jle      G_M8186_IG89
-       lea      rdi, bword ptr [r14+0x08]
-       ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0xA8], rdi
        mov      r15, gword ptr [r14+0x20]
        ; gcrRegs +[r15]
        add      esi, r13d
        mov      rdi, gword ptr [r14+0x18]
        ; gcrRegs +[rdi]
-       ; byrRegs -[rdi]
        mov      r11, 0xD1FFAB1E      ; function address
        call     [r11]<unknown method>
        ; gcrRegs -[rdi] +[rax]
@@ -1036,7 +1028,7 @@ G_M8186_IG71:        ; bbWeight=0.19, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {
        call     [r15+0x18]<unknown method>
        ; gcrRegs -[rsi rdi r15]
        ; gcr arg pop 0
-       mov      rdi, bword ptr [rbp-0xA8]
+       lea      rdi, bword ptr [r14+0x08]
        ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
@@ -1045,7 +1037,7 @@ G_M8186_IG71:        ; bbWeight=0.19, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {
        ; byrRegs -[rdi]
        inc      dword ptr [r14+0x14]
        jmp      G_M8186_IG64
-                       ;; size=102 bbWeight=0.19 PerfScore 5.65
+                       ;; size=88 bbWeight=0.19 PerfScore 5.27
 G_M8186_IG72:        ; bbWeight=0.02, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
        ; gcrRegs +[r13]
        mov      r15d, dword ptr [rbp-0x40]
@@ -1366,7 +1358,7 @@ G_M8186_IG102:        ; bbWeight=0, funclet epilog, nogc, extend
        ret      
                        ;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2581, prolog size 99, PerfScore 987.71, instruction count 665, allocated bytes for code 2581 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 2547, prolog size 79, PerfScore 982.33, instruction count 660, allocated bytes for code 2547 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:

-16 (-1.29%) : 185770.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

@@ -14,7 +14,7 @@
 ;  V02 arg2         [V02    ] (  7,  5   )  struct ( 8) [rbp-0x38]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <<unknown class>>
 ;  V04 loc1         [V04    ] (  3,  2   )  struct ( 8) [rbp-0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.AsyncLazy`1+WaitThatValidatesInvariants[System.__Canon]>
-;  V05 loc2         [V05,T30] (  2,  2   )     ref  ->  r15         class-hnd single-def <<unknown class>>
+;  V05 loc2         [V05,T28] (  2,  2   )     ref  ->  r15         class-hnd single-def <<unknown class>>
 ;  V06 loc3         [V06,T18] (  9,  4   )     ref  ->  [rbp-0x60]  class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T22] (  4,  3   )     ref  ->  r15        
@@ -26,54 +26,51 @@
 ;* V14 tmp7         [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V15 tmp8         [V15,T19] (  6,  4   )    long  ->  rax         "Indirect call through function pointer"
 ;* V16 tmp9         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.HashSet`1+Enumerator[Roslyn.Utilities.AsyncLazy`1+Request[Microsoft.CodeAnalysis.TreeAndVersion]]>
-;  V17 tmp10        [V17,T33] (  2,  0   )   ubyte  ->  rdi         "Inline return value spill temp"
-;  V18 tmp11        [V18,T42] (  2,  0   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-;  V19 tmp12        [V19,T28] (  3,  2   )     ref  ->  registers   class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+;  V17 tmp10        [V17,T31] (  2,  0   )   ubyte  ->  rdi         "Inline return value spill temp"
+;  V18 tmp11        [V18,T39] (  2,  0   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+;  V19 tmp12        [V19,T26] (  3,  2   )     ref  ->  registers   class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V20 tmp13        [V20,T02] ( 10, 11   )     ref  ->  r15         class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-;  V21 tmp14        [V21,T34] (  2,  0   )   ubyte  ->  rsi         "Inline return value spill temp"
+;  V21 tmp14        [V21,T32] (  2,  0   )   ubyte  ->  rsi         "Inline return value spill temp"
 ;  V22 tmp15        [V22,T20] (  3,  4   )   byref  ->  r13         "Inlining Arg"
 ;* V23 tmp16        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
 ;* V24 tmp17        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
 ;  V25 tmp18        [V25,T12] (  3,  5   )     ref  ->  r12         class-hnd "Inline return value spill temp" <System.__Canon>
 ;* V26 tmp19        [V26    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;* V27 tmp20        [V27    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V28 tmp21        [V28,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
+;* V28 tmp21        [V28,T29] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V29 tmp22        [V29,T00] ( 10, 34.43)     ref  ->  r13         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V30 tmp23        [V30,T04] (  3,  9   )     ref  ->  r12         class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V31 tmp24        [V31,T32] (  2,  0   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V31 tmp24        [V31,T30] (  2,  0   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V32 tmp25        [V32,T13] (  5,  5.00)     int  ->  [rbp-0x44]  spill-single-def "Inline stloc first use temp"
-;  V33 tmp26        [V33,T29] (  3,  2   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V34 tmp27        [V34,T25] (  3,  2.21)     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Object>
+;  V33 tmp26        [V33,T27] (  3,  2   )     ref  ->  rdi         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V34 tmp27        [V34,T24] (  3,  2.21)     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Object>
 ;  V35 tmp28        [V35,T07] (  3,  6   )   byref  ->  rdi         "Inlining Arg"
 ;  V36 tmp29        [V36,T21] (  2,  4   )     ref  ->  rsi         class-hnd exact "Inlining Arg" <System.Object>
 ;  V37 tmp30        [V37    ] (  2,  0.50)  struct ( 8) [rbp-0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
 ;  V38 tmp31        [V38,T23] (  3,  3   )     ref  ->  r13         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;* V39 tmp32        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V40 tmp33        [V40,T17] (  4,  4.19)   byref  ->  r15         "Inlining Arg"
-;  V41 tmp34        [V41,T27] (  5,  2.19)     ref  ->  r12         class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+;  V41 tmp34        [V41,T25] (  5,  2.19)     ref  ->  r12         class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
 ;* V42 tmp35        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V43 tmp36        [V43    ] (  7,  5   )     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
 ;  V44 tmp37        [V44    ] (  3,  2   )     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
 ;  V45 tmp38        [V45    ] (  2,  0.50)     int  ->  [rbp-0x50]  do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-;  V46 tmp39        [V46,T43] (  2,  0   )     ref  ->  rdi         "argument with side effect"
-;  V47 tmp40        [V47,T44] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V48 tmp41        [V48,T45] (  2,  0   )     ref  ->  rsi         "argument with side effect"
-;  V49 PSPSym       [V49,T36] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[V] "PSPSym"
+;  V46 tmp39        [V46,T40] (  2,  0   )     ref  ->  rdi         "argument with side effect"
+;  V47 tmp40        [V47,T41] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V48 tmp41        [V48,T42] (  2,  0   )     ref  ->  rsi         "argument with side effect"
+;  V49 PSPSym       [V49,T33] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[V] "PSPSym"
 ;  V50 cse0         [V50,T08] (  3,  6.00)   byref  ->  [rbp-0x68]  spill-single-def "CSE - moderate"
-;  V51 rat0         [V51,T37] (  3,  0   )    long  ->  rsi         "Spilling to split statement for tree"
-;  V52 rat1         [V52,T38] (  3,  0   )    long  ->  rax         "runtime lookup"
-;  V53 rat2         [V53,T39] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V51 rat0         [V51,T34] (  3,  0   )    long  ->  rsi         "Spilling to split statement for tree"
+;  V52 rat1         [V52,T35] (  3,  0   )    long  ->  rax         "runtime lookup"
+;  V53 rat2         [V53,T36] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;  V54 rat3         [V54,T14] (  3,  4.40)    long  ->  rsi         "Spilling to split statement for tree"
 ;  V55 rat4         [V55,T09] (  3,  5.60)    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;  V56 rat5         [V56,T15] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
 ;  V57 rat6         [V57,T10] (  3,  5.60)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V58 rat7         [V58,T26] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V59 rat8         [V59,T35] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V60 rat9         [V60,T24] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V61 rat10        [V61,T16] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V62 rat11        [V62,T11] (  3,  5.60)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V63 rat12        [V63,T40] (  3,  0   )    long  ->  rdi         "Spilling to split statement for tree"
-;  V64 rat13        [V64,T41] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V58 rat7         [V58,T16] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V59 rat8         [V59,T11] (  3,  5.60)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V60 rat9         [V60,T37] (  3,  0   )    long  ->  rdi         "Spilling to split statement for tree"
+;  V61 rat10        [V61,T38] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -233,7 +230,7 @@ G_M38013_IG17:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
        mov      rax, qword ptr [rax]
        mov      rax, qword ptr [rax+0x20]
        test     rax, rax
-       je       G_M38013_IG53
+       je       G_M38013_IG52
                        ;; size=27 bbWeight=1 PerfScore 10.25
 G_M38013_IG18:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdi]
@@ -247,7 +244,7 @@ G_M38013_IG18:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
        mov      rsi, qword ptr [rsi]
        mov      r11, qword ptr [rsi+0x58]
        test     r11, r11
-       je       G_M38013_IG54
+       je       G_M38013_IG53
                        ;; size=33 bbWeight=1 PerfScore 13.75
 G_M38013_IG19:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
        mov      rdi, r15
@@ -266,16 +263,16 @@ G_M38013_IG20:        ; bbWeight=1, gcVars=0000000000040002 {V00 V06}, gcrefRegs
        ; gcrRegs -[rax rdi]
        ; gcr arg pop 0
        test     eax, eax
-       je       G_M38013_IG55
+       je       G_M38013_IG54
                        ;; size=24 bbWeight=1 PerfScore 4.75
-G_M38013_IG21:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M38013_IG21:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        mov      rdi, qword ptr [r14]
        mov      rsi, qword ptr [rdi+0x38]
        mov      rsi, qword ptr [rsi]
        mov      r11, qword ptr [rsi+0x60]
        test     r11, r11
-       je       G_M38013_IG27
-                       ;; size=23 bbWeight=1 PerfScore 9.25
+       je       SHORT G_M38013_IG26
+                       ;; size=19 bbWeight=1 PerfScore 9.25
 G_M38013_IG22:        ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        mov      rdi, gword ptr [rbp-0x60]
        ; gcrRegs +[rdi]
@@ -299,14 +296,14 @@ G_M38013_IG23:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
        call     [System.Threading.Tasks.TaskCompletionSource`1[System.__Canon]:TrySetCanceled(System.Threading.CancellationToken):ubyte:this]
        ; gcrRegs -[rsi rdi]
        ; gcr arg pop 0
-       jmp      G_M38013_IG39
+       jmp      G_M38013_IG43
                        ;; size=18 bbWeight=0 PerfScore 0.00
-G_M38013_IG24:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M38013_IG24:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
        lea      r13, bword ptr [r15+0x10]
        ; byrRegs +[r13]
        cmp      gword ptr [r13], 0
-       je       G_M38013_IG34
-                       ;; size=15 bbWeight=1 PerfScore 4.50
+       je       SHORT G_M38013_IG28
+                       ;; size=11 bbWeight=1 PerfScore 4.50
 G_M38013_IG25:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
        mov      rsi, gword ptr [r13]
        ; gcrRegs +[rsi]
@@ -314,11 +311,19 @@ G_M38013_IG25:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000
        setne    sil
        ; gcrRegs -[rsi]
        movzx    rsi, sil
-       jmp      G_M38013_IG50
+       jmp      G_M38013_IG32
                        ;; size=21 bbWeight=0 PerfScore 0.00
-G_M38013_IG26:        ; bbWeight=4, gcVars=0000000000040102 {V00 V06 V50}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs +[r12-r13]
+G_M38013_IG26:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[r15]
        ; byrRegs -[r13]
+       mov      rsi, 0xD1FFAB1E      ; global ptr
+       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       ; gcr arg pop 0
+       mov      r11, rax
+       jmp      SHORT G_M38013_IG22
+                       ;; size=20 bbWeight=0.20 PerfScore 0.70
+G_M38013_IG27:        ; bbWeight=4, gcVars=0000000000040102 {V00 V06 V50}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs +[r12-r13 r15]
        ; GC ptr vars +{V08 V50}
        lea      rdi, bword ptr [r13+0x38]
        ; byrRegs +[rdi]
@@ -336,200 +341,16 @@ G_M38013_IG26:        ; bbWeight=4, gcVars=0000000000040102 {V00 V06 V50}, gcref
        ; gcrRegs +[r12]
        ; byrRegs -[r12]
        test     r12, r12
-       je       G_M38013_IG37
-       jmp      G_M38013_IG35
+       je       G_M38013_IG41
+       jmp      G_M38013_IG40
                        ;; size=48 bbWeight=4 PerfScore 121.00
-G_M38013_IG27:        ; bbWeight=0.20, gcVars=0000000000040002 {V00 V06}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[r12-r13 r15]
+G_M38013_IG28:        ; bbWeight=1, gcVars=0000000000040002 {V00 V06}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[r12-r13]
        ; GC ptr vars -{V08 V50}
-       mov      rsi, 0xD1FFAB1E      ; global ptr
-       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       ; gcr arg pop 0
-       mov      r11, rax
-       jmp      G_M38013_IG22
-                       ;; size=23 bbWeight=0.20 PerfScore 0.70
-G_M38013_IG28:        ; bbWeight=1.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[r15]
-       mov      eax, dword ptr [rbx+0x34]
-       and      eax, 0xD1FFAB1E
-       cmp      eax, 0xD1FFAB1E
-       je       SHORT G_M38013_IG33
-                       ;; size=15 bbWeight=1.00 PerfScore 3.50
-G_M38013_IG29:        ; bbWeight=0, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
-       mov      rdi, rbx
-       ; gcrRegs +[rdi]
-       mov      esi, 1
-       call     [System.Threading.Tasks.Task`1[System.__Canon]:GetResultCore(ubyte):System.__Canon:this]
-       ; gcrRegs -[rdi] +[rax]
-       ; gcr arg pop 0
-       mov      r12, rax
-       ; gcrRegs +[r12]
-                       ;; size=17 bbWeight=0 PerfScore 0.00
-G_M38013_IG30:        ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax]
-       mov      r13, gword ptr [r15+0x08]
-       ; gcrRegs +[r13]
-       mov      eax, dword ptr [r13+0x34]
-       mov      dword ptr [rbp-0x44], eax
-       test     eax, 0xD1FFAB1E
-       je       SHORT G_M38013_IG32
-                       ;; size=18 bbWeight=1 PerfScore 6.25
-G_M38013_IG31:        ; bbWeight=0.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r12-r13]
-       jmp      G_M38013_IG44
-                       ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M38013_IG32:        ; bbWeight=1.00, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs +[r12-r13]
-       lea      rcx, bword ptr [r13+0x34]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0x68], rcx
-       ; GC ptr vars +{V50}
-       mov      edi, eax
-       or       edi, 0xD1FFAB1E
-       lock     
-       cmpxchg  dword ptr [rcx], edi
-       cmp      eax, dword ptr [rbp-0x44]
-       je       G_M38013_IG26
-       jmp      G_M38013_IG52
-                       ;; size=34 bbWeight=1.00 PerfScore 24.99
-G_M38013_IG33:        ; bbWeight=1.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[r12-r13]
-       ; byrRegs -[rcx]
-       ; GC ptr vars -{V50}
-       mov      r12, gword ptr [rbx+0x38]
-       ; gcrRegs +[r12]
-       jmp      SHORT G_M38013_IG30
-                       ;; size=6 bbWeight=1.00 PerfScore 4.00
-G_M38013_IG34:        ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[r12]
        test     dword ptr [rbx+0x34], 0xD1FFAB1E
-       jne      G_M38013_IG49
-       jmp      SHORT G_M38013_IG28
-                       ;; size=15 bbWeight=1 PerfScore 6.00
-G_M38013_IG35:        ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[r12-r13]
-       mov      rdi, r13
-       ; gcrRegs +[rdi]
-       call     [<unknown method>]
-       ; gcrRegs -[rdi]
-       ; gcr arg pop 0
...

+16 (+0.17%) : 38696.dasm - Microsoft.CodeAnalysis.CommonReferenceManager2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager2+BoundInputAssembly[System.Canon,System.Canon][],System.Canon[],System.Collections.Immutable.ImmutableArray`1[System.Canon],int):this (Tier1-OSR)

@@ -10,28 +10,28 @@
 ; 19 inlinees with PGO data; 55 single block inlinees; 15 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T47] ( 23,   25.06)     ref  ->  [rbp+0x338]  this class-hnd EH-live single-def tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
-;  V01 arg1         [V01,T69] ( 16,   40.99)     ref  ->  r15         class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
+;  V00 this         [V00,T50] ( 23,   25.06)     ref  ->  [rbp+0x338]  this class-hnd EH-live single-def tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
+;  V01 arg1         [V01,T67] ( 16,   40.99)     ref  ->  r15         class-hnd single-def <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
 ;  V02 arg2         [V02,T43] ( 19,  114.53)     ref  ->  [rbp+0x328]  class-hnd single-def tier0-frame <System.__Canon[]>
-;  V03 arg3         [V03,T151] (  4,    4   )  struct ( 8) [rbp+0x320]  do-not-enreg[SF] ld-addr-op single-def tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-;  V04 arg4         [V04,T70] ( 12,   38.93)     int  ->  r14         single-def
+;  V03 arg3         [V03,T148] (  4,    4   )  struct ( 8) [rbp+0x320]  do-not-enreg[SF] ld-addr-op single-def tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
+;  V04 arg4         [V04,T68] ( 12,   38.93)     int  ->  r14         single-def
 ;  V05 loc0         [V05,T14] ( 84, 4909.31)     ref  ->  [rbp+0x310]  do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]>
-;  V06 loc1         [V06,T107] ( 23,   14.86)     ref  ->  [rbp+0x308]  do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc1         [V06,T104] ( 23,   14.86)     ref  ->  [rbp+0x308]  do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc2         [V07,T44] (  7,  111.88)     int  ->  [rbp+0x304]  tier0-frame
 ;  V08 loc3         [V08,T46] (  9,   82.25)     int  ->  [rbp+0x300]  tier0-frame
-;  V09 loc4         [V09,T79] (  5,   32.08)  struct (16) [rbp+0x2F0]  do-not-enreg[SFR] multireg-ret ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]>
+;  V09 loc4         [V09,T77] (  5,   32.08)  struct (16) [rbp+0x2F0]  do-not-enreg[SFR] multireg-ret ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]>
 ;  V10 loc5         [V10    ] (  3,   21.31)  struct ( 8) [rbp+0x2E8]  do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-;  V11 loc6         [V11,T180] (  2,    1.23)     ref  ->  [rbp+0x2E0]  class-hnd spill-single-def tier0-frame <System.__Canon>
-;  V12 loc7         [V12,T108] (  8,   13.12)   ubyte  ->  [rbp+0x2DC]  tier0-frame
+;  V11 loc6         [V11,T177] (  2,    1.23)     ref  ->  [rbp+0x2E0]  class-hnd spill-single-def tier0-frame <System.__Canon>
+;  V12 loc7         [V12,T109] (  8,   13.12)   ubyte  ->  [rbp+0x2DC]  tier0-frame
 ;* V13 loc8         [V13    ] (  0,    0   )  struct (16) zero-ref    multireg-ret <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;* V14 loc9         [V14    ] (  0,    0   )     int  ->  zero-ref   
-;  V15 loc10        [V15,T84] ( 10,   28.40)     ref  ->  rdx         class-hnd <System.__Canon>
-;  V16 loc11        [V16,T129] ( 11,    9.25)     ref  ->  [rbp+0x2B0]  class-hnd exact tier0-frame <<unknown class>>
-;  V17 loc12        [V17,T127] (  8,    9.66)     int  ->  [rbp+0x2AC]  tier0-frame
-;  V18 loc13        [V18,T76] ( 36,   33.48)     int  ->  [rbp+0x2A8]  tier0-frame
+;  V15 loc10        [V15,T82] ( 10,   28.40)     ref  ->  rdx         class-hnd <System.__Canon>
+;  V16 loc11        [V16,T126] ( 11,    9.25)     ref  ->  [rbp+0x2B0]  class-hnd exact tier0-frame <<unknown class>>
+;  V17 loc12        [V17,T124] (  8,    9.66)     int  ->  [rbp+0x2AC]  tier0-frame
+;  V18 loc13        [V18,T74] ( 36,   33.48)     int  ->  [rbp+0x2A8]  tier0-frame
 ;  V19 loc14        [V19,T05] ( 31,27107.47)     ref  ->  [rbp+0x2A0]  class-hnd tier0-frame <System.__Canon>
-;  V20 loc15        [V20,T80] ( 25,   31.03)     int  ->  [rbp+0x29C]  tier0-frame
-;  V21 loc16        [V21,T112] ( 11,   13.28)     ref  ->  [rbp+0x290]  class-hnd tier0-frame <System.__Canon>
+;  V20 loc15        [V20,T78] ( 25,   31.03)     int  ->  [rbp+0x29C]  tier0-frame
+;  V21 loc16        [V21,T108] ( 11,   13.28)     ref  ->  [rbp+0x290]  class-hnd tier0-frame <System.__Canon>
 ;  V22 loc17        [V22,T31] ( 18,  403.99)     int  ->  r13        
 ;# V23 OutArgs      [V23    ] (  1,    1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V24 tmp1         [V24    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,102 +47,102 @@
 ;* V34 tmp11        [V34    ] (  0,    0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;* V35 tmp12        [V35    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp13        [V36    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
-;  V37 tmp14        [V37,T144] (  5,    7.70)     int  ->  [rbp-0x2C]  "impAppendStmt"
-;  V38 tmp15        [V38,T115] ( 10,   11.55)     ref  ->  rdi         class-hnd "spilling ret_expr" <System.__Canon>
+;  V37 tmp14        [V37,T141] (  5,    7.70)     int  ->  [rbp-0x2C]  "impAppendStmt"
+;  V38 tmp15        [V38,T112] ( 10,   11.55)     ref  ->  rdi         class-hnd "spilling ret_expr" <System.__Canon>
 ;* V39 tmp16        [V39    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V40 tmp17        [V40    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V41 tmp18        [V41    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V42 tmp19        [V42,T03] ( 44,36180.11)     ref  ->  [rbp-0x60]  class-hnd "spilling ret_expr" <System.__Canon>
 ;* V43 tmp20        [V43    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
-;  V44 tmp21        [V44,T86] ( 15,   26.45)     ref  ->  rdi         class-hnd "spilling ret_expr" <System.__Canon>
+;  V44 tmp21        [V44,T84] ( 15,   26.45)     ref  ->  rdi         class-hnd "spilling ret_expr" <System.__Canon>
 ;* V45 tmp22        [V45    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
-;  V46 tmp23        [V46,T106] (  7,   17.63)     int  ->  [rbp-0x30]  "impAppendStmt"
-;  V47 tmp24        [V47,T87] ( 15,   26.45)     ref  ->  rdi         class-hnd "spilling ret_expr" <System.__Canon>
+;  V46 tmp23        [V46,T103] (  7,   17.63)     int  ->  [rbp-0x30]  "impAppendStmt"
+;  V47 tmp24        [V47,T85] ( 15,   26.45)     ref  ->  rdi         class-hnd "spilling ret_expr" <System.__Canon>
 ;* V48 tmp25        [V48    ] (  0,    0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;* V49 tmp26        [V49    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V50 tmp27        [V50    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
-;  V51 tmp28        [V51,T116] ( 10,   11.66)     ref  ->  registers   class-hnd "spilling ret_expr" <System.__Canon>
+;  V51 tmp28        [V51,T113] ( 10,   11.66)     ref  ->  registers   class-hnd "spilling ret_expr" <System.__Canon>
 ;* V52 tmp29        [V52    ] (  0,    0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;* V53 tmp30        [V53    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V54 tmp31        [V54    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V55 tmp32        [V55    ] (  0,    0   )    long  ->  zero-ref    "spilling helperCall"
-;  V56 tmp33        [V56,T100] (  3,   20.29)     int  ->   r8         "guarded devirt return temp"
+;  V56 tmp33        [V56,T97] (  3,   20.29)     int  ->   r8         "guarded devirt return temp"
 ;* V57 tmp34        [V57    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;* V58 tmp35        [V58    ] (  0,    0   )  struct ( 8) zero-ref    multireg-ret "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;* V59 tmp36        [V59    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;* V60 tmp37        [V60    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-;  V61 tmp38        [V61,T158] (  6,    3.85)     int  ->   r9         "guarded devirt return temp"
+;  V61 tmp38        [V61,T155] (  6,    3.85)     int  ->   r9         "guarded devirt return temp"
 ;* V62 tmp39        [V62    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;* V63 tmp40        [V63    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-;  V64 tmp41        [V64,T132] (  9,    8.82)     int  ->  registers   "guarded devirt return temp"
+;  V64 tmp41        [V64,T129] (  9,    8.82)     int  ->  registers   "guarded devirt return temp"
 ;* V65 tmp42        [V65    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
-;  V66 tmp43        [V66,T133] (  9,    8.82)     int  ->  registers   "guarded devirt return temp"
+;  V66 tmp43        [V66,T130] (  9,    8.82)     int  ->  registers   "guarded devirt return temp"
 ;* V67 tmp44        [V67    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;* V68 tmp45        [V68    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-;  V69 tmp46        [V69,T134] (  9,    8.82)     int  ->  rsi         "guarded devirt return temp"
+;  V69 tmp46        [V69,T131] (  9,    8.82)     int  ->  rsi         "guarded devirt return temp"
 ;* V70 tmp47        [V70    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;  V71 tmp48        [V71,T40] (  9,  128.94)     ref  ->  registers   "guarded devirt return temp"
 ;* V72 tmp49        [V72    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-;  V73 tmp50        [V73,T159] (  6,    3.89)     int  ->  registers   "guarded devirt return temp"
+;  V73 tmp50        [V73,T156] (  6,    3.89)     int  ->  registers   "guarded devirt return temp"
 ;  V74 tmp51        [V74,T29] ( 24,  513.46)     ref  ->  [rbp-0x68]  class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
-;* V75 tmp52        [V75,T182] (  0,    0   )     int  ->  zero-ref    single-def "OSR entry state var"
-;  V76 tmp53        [V76,T101] (  3,   20.29)   ubyte  ->   r8         "Inline return value spill temp"
-;  V77 tmp54        [V77,T50] (  6,   69.50)     ref  ->  r13         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
+;* V75 tmp52        [V75,T179] (  0,    0   )     int  ->  zero-ref    single-def "OSR entry state var"
+;  V76 tmp53        [V76,T98] (  3,   20.29)   ubyte  ->   r8         "Inline return value spill temp"
+;  V77 tmp54        [V77,T49] (  6,   69.50)     ref  ->  r13         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
 ;* V78 tmp55        [V78    ] (  0,    0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
 ;* V79 tmp56        [V79    ] (  0,    0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
 ;* V80 tmp57        [V80    ] (  0,    0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
 ;* V81 tmp58        [V81    ] (  0,    0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
 ;* V82 tmp59        [V82    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon[]>
-;  V83 tmp60        [V83,T140] (  4,    8.64)     int  ->  rsi         "Inline stloc first use temp"
+;  V83 tmp60        [V83,T137] (  4,    8.64)     int  ->  rsi         "Inline stloc first use temp"
 ;* V84 tmp61        [V84    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V85 tmp62        [V85    ] (  0,    0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V86 tmp63        [V86    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <<unknown class>>
 ;  V87 tmp64        [V87,T51] (  4,   60.94)     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "Inlining Arg" <<unknown class>>
 ;  V88 tmp65        [V88,T53] (  7,   59.60)     ref  ->  [rbp-0x78]  class-hnd "Inline stloc first use temp" <<unknown class>>
 ;* V89 tmp66        [V89    ] (  0,    0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
-;  V90 tmp67        [V90,T63] (  3,   52.93)   byref  ->  rdx         "impAppendStmt"
+;  V90 tmp67        [V90,T62] (  3,   52.93)   byref  ->  rdx         "impAppendStmt"
 ;* V91 tmp68        [V91    ] (  0,    0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <<unknown class>>
 ;* V92 tmp69        [V92    ] (  0,    0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
-;  V93 tmp70        [V93,T48] (  4,   78.59)     int  ->  [rbp-0x34]  spill-single-def "Inlining Arg"
-;  V94 tmp71        [V94,T49] (  9,   69.71)     int  ->  rsi         "Inline stloc first use temp"
-;  V95 tmp72        [V95,T123] (  3,   10.44)     int  ->  rdi         "Inline return value spill temp"
-;  V96 tmp73        [V96,T168] (  3,    3.02)     int  ->  rdi         "Inlining Arg"
-;  V97 tmp74        [V97,T74] (  3,   40.52)   byref  ->  rdi         "Inlining Arg"
-;  V98 tmp75        [V98,T82] (  4,   30.09)     int  ->  rcx         "Inline stloc first use temp"
+;  V93 tmp70        [V93,T47] (  4,   78.59)     int  ->  [rbp-0x34]  spill-single-def "Inlining Arg"
+;  V94 tmp71        [V94,T48] (  9,   69.71)     int  ->  rsi         "Inline stloc first use temp"
+;  V95 tmp72        [V95,T120] (  3,   10.44)     int  ->  rdi         "Inline return value spill temp"
+;  V96 tmp73        [V96,T165] (  3,    3.02)     int  ->  rdi         "Inlining Arg"
+;  V97 tmp74        [V97,T72] (  3,   40.52)   byref  ->  rdi         "Inlining Arg"
+;  V98 tmp75        [V98,T80] (  4,   30.09)     int  ->  rcx         "Inline stloc first use temp"
 ;* V99 tmp76        [V99    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
 ;* V100 tmp77       [V100    ] (  0,    0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V101 tmp78       [V101    ] (  0,    0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V102 tmp79       [V102,T111] (  0,    0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
+;* V102 tmp79       [V102,T107] (  0,    0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
 ;  V103 tmp80       [V103,T13] (  9, 5646.29)   ubyte  ->  registers   "Inline return value spill temp"
 ;  V104 tmp81       [V104,T06] (  9,18062.83)     int  ->  registers   "impAppendStmt"
-;  V105 tmp82       [V105,T85] ( 15,   27.31)     ref  ->  [rbp-0x80]  class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
-;  V106 tmp83       [V106,T110] (  6,   13.92)     ref  ->  [rbp-0x88]  class-hnd exact "Inlining Arg" <System.String>
+;  V105 tmp82       [V105,T83] ( 15,   27.31)     ref  ->  [rbp-0x80]  class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
+;  V106 tmp83       [V106,T106] (  6,   13.92)     ref  ->  [rbp-0x88]  class-hnd exact "Inlining Arg" <System.String>
 ;* V107 tmp84       [V107    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]]>
-;  V108 tmp85       [V108,T146] (  9,    6.96)     ref  ->  rdi         ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
+;  V108 tmp85       [V108,T143] (  9,    6.96)     ref  ->  rdi         ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
 ;* V109 tmp86       [V109    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V110 tmp87       [V110,T109] ( 12,   13.92)     ref  ->  rdi        
-;  V111 tmp88       [V111,T126] (  9,    9.66)   byref  ->  [rbp-0x90]  "non-inline candidate call"
-;  V112 tmp89       [V112,T147] (  6,    6.44)     ref  ->  rax         class-hnd "Inlining Arg" <<unknown class>>
+;  V110 tmp87       [V110,T105] ( 12,   13.92)     ref  ->  rdi        
+;  V111 tmp88       [V111,T123] (  9,    9.66)   byref  ->  [rbp-0x90]  "non-inline candidate call"
+;  V112 tmp89       [V112,T144] (  6,    6.44)     ref  ->  rax         class-hnd "Inlining Arg" <<unknown class>>
 ;* V113 tmp90       [V113    ] (  0,    0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V114 tmp91       [V114,T94] (  9,   20.87)     ref  ->  registers   class-hnd "Inlining Arg" <<unknown class>>
-;  V115 tmp92       [V115,T130] (  9,    9.34)   byref  ->  rax         "Inline stloc first use temp"
+;  V114 tmp91       [V114,T92] (  9,   20.87)     ref  ->  registers   class-hnd "Inlining Arg" <<unknown class>>
+;  V115 tmp92       [V115,T127] (  9,    9.34)   byref  ->  rax         "Inline stloc first use temp"
 ;  V116 tmp93       [V116,T04] (  7,36108.03)     ref  ->  registers   "CASTCLASS eval op1"
 ;  V117 tmp94       [V117,T08] (  7, 9027.01)    long  ->  registers   "fgMakeTemp is creating a new local variable"
 ;  V118 tmp95       [V118,T00] ( 12,58675.55)     ref  ->  registers   class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
 ;* V119 tmp96       [V119    ] (  0,    0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V120 tmp97       [V120,T135] (  9,    8.82)   ubyte  ->  registers   "Inline return value spill temp"
-;  V121 tmp98       [V121,T81] ( 18,   30.20)     ref  ->  [rbp-0x98]  class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
+;  V120 tmp97       [V120,T132] (  9,    8.82)   ubyte  ->  registers   "Inline return value spill temp"
+;  V121 tmp98       [V121,T79] ( 18,   30.20)     ref  ->  [rbp-0x98]  class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
 ;* V122 tmp99       [V122    ] (  0,    0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
 ;* V123 tmp100      [V123    ] (  0,    0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
 ;* V124 tmp101      [V124    ] (  0,    0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
 ;* V125 tmp102      [V125    ] (  0,    0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
 ;* V126 tmp103      [V126    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon[]>
-;  V127 tmp104      [V127,T162] ( 14,    3.77)     int  ->  registers   "Inline stloc first use temp"
+;  V127 tmp104      [V127,T159] ( 14,    3.77)     int  ->  registers   "Inline stloc first use temp"
 ;* V128 tmp105      [V128    ] (  0,    0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;  V129 tmp106      [V129,T07] ( 12, 9027.01)     int  ->  [rbp-0x38]  "Inlining Arg"
 ;  V130 tmp107      [V130,T09] ( 27, 7905.41)     int  ->  rsi         "Inline stloc first use temp"
 ;  V131 tmp108      [V131,T23] (  9, 1132.78)     int  ->  rax         "Inline return value spill temp"
-;  V132 tmp109      [V132,T92] (  9,   21.70)     int  ->  rax         "Inlining Arg"
+;  V132 tmp109      [V132,T90] (  9,   21.70)     int  ->  rax         "Inlining Arg"
 ;  V133 tmp110      [V133,T15] (  9, 4522.32)   byref  ->  rsi         "Inlining Arg"
 ;  V134 tmp111      [V134,T16] ( 12, 3389.54)     int  ->   r8         "Inline stloc first use temp"
 ;* V135 tmp112      [V135    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
@@ -151,17 +151,17 @@
 ;  V138 tmp115      [V138,T21] (  8, 1487.58)     ref  ->  [rbp-0xA8]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
 ;  V139 tmp116      [V139,T38] (  6,  157.44)   ubyte  ->  registers   "Inline return value spill temp"
 ;  V140 tmp117      [V140,T30] (  6,  501.49)     int  ->  registers   "impAppendStmt"
-;  V141 tmp118      [V141,T114] ( 10,   12.04)     ref  ->  [rbp-0xB0]  class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
-;  V142 tmp119      [V142,T150] (  4,    6.14)     ref  ->  [rbp-0xB8]  class-hnd exact "Inlining Arg" <System.String>
+;  V141 tmp118      [V141,T111] ( 10,   12.04)     ref  ->  [rbp-0xB0]  class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
+;  V142 tmp119      [V142,T147] (  4,    6.14)     ref  ->  [rbp-0xB8]  class-hnd exact "Inlining Arg" <System.String>
 ;* V143 tmp120      [V143    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <System.Collections.Generic.IEnumerable`1[System.Collections.Immutable.ImmutableArray`1[ubyte]]>
-;  V144 tmp121      [V144,T167] (  6,    3.07)     ref  ->  rdi         ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
+;  V144 tmp121      [V144,T164] (  6,    3.07)     ref  ->  rdi         ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
 ;* V145 tmp122      [V145    ] (  0,    0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V146 tmp123      [V146,T149] (  8,    6.14)     ref  ->  rdi        
-;  V147 tmp124      [V147,T156] (  6,    4.26)   byref  ->  [rbp-0xC0]  "non-inline candidate call"
-;  V148 tmp125      [V148,T170] (  4,    2.84)     ref  ->  rax         class-hnd "Inlining Arg" <<unknown class>>
+;  V146 tmp123      [V146,T146] (  8,    6.14)     ref  ->  rdi        
+;  V147 tmp124      [V147,T153] (  6,    4.26)   byref  ->  [rbp-0xC0]  "non-inline candidate call"
+;  V148 tmp125      [V148,T167] (  4,    2.84)     ref  ->  rax         class-hnd "Inlining Arg" <<unknown class>>
 ;* V149 tmp126      [V149    ] (  0,    0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V150 tmp127      [V150,T131] (  6,    9.20)     ref  ->  registers   class-hnd "Inlining Arg" <<unknown class>>
-;  V151 tmp128      [V151,T157] (  6,    4.12)   byref  ->  rax         "Inline stloc first use temp"
+;  V150 tmp127      [V150,T128] (  6,    9.20)     ref  ->  registers   class-hnd "Inlining Arg" <<unknown class>>
+;  V151 tmp128      [V151,T154] (  6,    4.12)   byref  ->  rax         "Inline stloc first use temp"
 ;  V152 tmp129      [V152,T28] (  5,  995.20)     ref  ->  r10         "CASTCLASS eval op1"
 ;  V153 tmp130      [V153,T33] (  5,  248.80)    long  ->  registers   "fgMakeTemp is creating a new local variable"
 ;  V154 tmp131      [V154,T18] (  8, 1617.21)     ref  ->  registers   class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
@@ -169,177 +169,174 @@
 ;* V156 tmp133      [V156    ] (  0,    0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;  V157 tmp134      [V157,T32] (  8,  248.80)     int  ->  [rbp-0x3C]  "Inlining Arg"
 ;  V158 tmp135      [V158,T34] ( 18,  220.69)     int  ->  rsi         "Inline stloc first use temp"
-;  V159 tmp136      [V159,T77] (  6,   33.04)     int  ->  rax         "Inline return value spill temp"
-;  V160 tmp137      [V160,T128] (  6,    9.57)     int  ->  rax         "Inlining Arg"
+;  V159 tmp136      [V159,T75] (  6,   33.04)     int  ->  rax         "Inline return value spill temp"
+;  V160 tmp137      [V160,T125] (  6,    9.57)     int  ->  rax         "Inlining Arg"
 ;  V161 tmp138      [V161,T41] (  6,  128.29)   byref  ->  rdx         "Inlining Arg"
 ;  V162 tmp139      [V162,T45] (  8,   95.24)     int  ->  rsi         "Inline stloc first use temp"
-;  V163 tmp140      [V163,T96] (  2,   20.31)     int  ->  r13         "Inline stloc first use temp"
-;  V164 tmp141      [V164,T93] ( 17,   21.35)     ref  ->  [rbp+0x2C8]  tier0-frame "field V13.AssemblySymbol (fldOffset=0x0)" P-INDEP
-;  V165 tmp142      [V165,T75] ( 19,   34.25)     int  ->  [rbp+0x2D0]  tier0-frame "field V13.DefinitionIndex (fldOffset=0x8)" P-INDEP
-;  V166 tmp143      [V166,T124] (  2,   10.44)     ref  ->  [rbp-0xC8]  spill-single-def "field V34.AssemblySymbol (fldOffset=0x0)" P-INDEP
-;  V167 tmp144      [V167,T125] (  2,   10.44)     int  ->  [rbp-0x40]  spill-single-def "field V34.DefinitionIndex (fldOffset=0x8)" P-INDEP
+;  V163 tmp140      [V163,T94] (  2,   20.31)     int  ->  r13         "Inline stloc first use temp"
+;  V164 tmp141      [V164,T91] ( 17,   21.35)     ref  ->  [rbp+0x2C8]  tier0-frame "field V13.AssemblySymbol (fldOffset=0x0)" P-INDEP
+;  V165 tmp142      [V165,T73] ( 19,   34.25)     int  ->  [rbp+0x2D0]  tier0-frame "field V13.DefinitionIndex (fldOffset=0x8)" P-INDEP
+;  V166 tmp143      [V166,T121] (  2,   10.44)     ref  ->  [rbp-0xC8]  spill-single-def "field V34.AssemblySymbol (fldOffset=0x0)" P-INDEP
+;  V167 tmp144      [V167,T122] (  2,   10.44)     int  ->  [rbp-0x40]  spill-single-def "field V34.DefinitionIndex (fldOffset=0x8)" P-INDEP
 ;  V168 tmp145      [V168,T24] (  6, 1132.78)     ref  ->  [rbp-0xD0]  "field V48.AssemblySymbol (fldOffset=0x0)" P-INDEP
 ;  V169 tmp146      [V169,T25] (  6, 1132.78)     int  ->  [rbp-0x44]  "field V48.DefinitionIndex (fldOffset=0x8)" P-INDEP
-;  V170 tmp147      [V170,T78] (  4,   33.04)     ref  ->  [rbp-0xD8]  "field V52.AssemblySymbol (fldOffset=0x0)" P-INDEP
-;* V171 tmp148      [V171,T177] (  0,    0   )     int  ->  zero-ref    "field V52.DefinitionIndex (fldOffset=0x8)" P-INDEP
-;  V172 tmp149      [V172,T95] (  3,   20.31)     ref  ->  rdx         "field V58.array (fldOffset=0x0)" P-INDEP
+;  V170 tmp147      [V170,T76] (  4,   33.04)     ref  ->  [rbp-0xD8]  "field V52.AssemblySymbol (fldOffset=0x0)" P-INDEP
+;* V171 tmp148      [V171,T174] (  0,    0   )     int  ->  zero-ref    "field V52.DefinitionIndex (fldOffset=0x8)" P-INDEP
+;  V172 tmp149      [V172,T93] (  3,   20.31)     ref  ->  rdx         "field V58.array (fldOffset=0x0)" P-INDEP
 ;* V173 tmp150      [V173    ] (  0,    0   )     ref  ->  zero-ref    "field V78.array (fldOffset=0x0)" P-INDEP
-;  V174 tmp151      [V174,T139] (  4,    8.64)     ref  ->  [rbp-0xE0]  spill-single-def "field V79._array (fldOffset=0x0)" P-INDEP
-;  V175 tmp152      [V175,T119] (  4,    8.64)     int  ->  [rbp-0x48]  "field V79._index (fldOffset=0x8)" P-INDEP
-;  V176 tmp153      [V176,T148] (  3,    6.48)     ref  ->  rdx         "field V80.array (fldOffset=0x0)" P-INDEP
-;  V177 tmp154      [V177,T155] (  2,    4.32)     ref  ->  rdx         "field V81._array (fldOffset=0x0)" P-INDEP
-;* V178 tmp155      [V178,T175] (  0,    0   )     int  ->  zero-ref    "field V81._index (fldOffset=0x8)" P-INDEP
+;  V174 tmp151      [V174,T136] (  4,    8.64)     ref  ->  [rbp-0xE0]  spill-single-def "field V79._array (fldOffset=0x0)" P-INDEP
+;  V175 tmp152      [V175,T116] (  4,    8.64)     int  ->  [rbp-0x48]  "field V79._index (fldOffset=0x8)" P-INDEP
+;  V176 tmp153      [V176,T145] (  3,    6.48)     ref  ->  rdx         "field V80.array (fldOffset=0x0)" P-INDEP
+;  V177 tmp154      [V177,T152] (  2,    4.32)     ref  ->  rdx         "field V81._array (fldOffset=0x0)" P-INDEP
+;* V178 tmp155      [V178,T172] (  0,    0   )     int  ->  zero-ref    "field V81._index (fldOffset=0x8)" P-INDEP
 ;* V179 tmp156      [V179    ] (  0,    0   )     ref  ->  zero-ref    "field V92.AssemblySymbol (fldOffset=0x0)" P-INDEP
 ;* V180 tmp157      [V180    ] (  0,    0   )     int  ->  zero-ref    "field V92.DefinitionIndex (fldOffset=0x8)" P-INDEP
 ;* V181 tmp158      [V181    ] (  0,    0   )     ref  ->  zero-ref    "field V122.array (fldOffset=0x0)" P-INDEP
...

+4 (+0.51%) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -10,23 +10,23 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 38, 13.17)     ref  ->  rbx         this class-hnd single-def <System.Linq.Enumerable+UnionIterator`1[System.__Canon]>
-;  V01 loc0         [V01,T16] (  5,  1   )     ref  ->  r14         class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V02 loc1         [V02,T23] (  5,  0.80)     ref  ->  r14         class-hnd <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+;  V01 loc0         [V01,T15] (  5,  1   )     ref  ->  r14         class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V02 loc1         [V02,T21] (  5,  0.80)     ref  ->  r14         class-hnd <System.Collections.Generic.IEnumerator`1[System.__Canon]>
 ;* V03 loc2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Collections.Generic.IEnumerable`1[System.__Canon]>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V06 tmp2         [V06,T11] (  4,  1.20)    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V08 tmp4         [V08,T12] (  4,  1.20)    long  ->  r11         "VirtualCall with runtime lookup"
-;  V09 tmp5         [V09,T26] (  3,  0.40)     ref  ->  r14         "guarded devirt return temp"
+;  V09 tmp5         [V09,T24] (  3,  0.40)     ref  ->  r14         "guarded devirt return temp"
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Linq.Enumerable+UnionIterator2`1[System.String]>
-;  V11 tmp7         [V11,T28] (  3,  0.40)     int  ->  rax         "guarded devirt return temp"
+;  V11 tmp7         [V11,T26] (  3,  0.40)     int  ->  rax         "guarded devirt return temp"
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13>
-;  V13 tmp9         [V13,T17] (  4,  1   )     ref  ->  r15         "guarded devirt return temp"
+;  V13 tmp9         [V13,T16] (  4,  1   )     ref  ->  r15         "guarded devirt return temp"
 ;  V14 tmp10        [V14,T04] (  4,  3.33)     int  ->  rsi         "guarded devirt arg temp"
 ;* V15 tmp11        [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Linq.Enumerable+UnionIterator2`1[System.String]>
 ;* V16 tmp12        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V17 tmp13        [V17,T18] (  4,  1   )     ref  ->  rdi         class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+;  V17 tmp13        [V17,T17] (  4,  1   )     ref  ->  rdi         class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
 ;* V18 tmp14        [V18    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V19 tmp15        [V19    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13>
 ;* V20 tmp16        [V20,T10] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
@@ -38,23 +38,20 @@
 ;  V26 tmp22        [V26,T01] (  4,  6   )     ref  ->  rdi         "guarded devirt arg temp"
 ;* V27 tmp23        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13>
 ;  V28 tmp24        [V28    ] (  1,  0.60)     int  ->  [rbp-0x28]  do-not-enreg[X] addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-;  V29 tmp25        [V29,T24] (  4,  0.80)     ref  ->  r15         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V30 tmp26        [V30,T19] (  4,  1   )     ref  ->  rdi         class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+;  V29 tmp25        [V29,T22] (  4,  0.80)     ref  ->  r15         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V30 tmp26        [V30,T18] (  4,  1   )     ref  ->  rdi         class-hnd "dup spill" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
 ;* V31 tmp27        [V31    ] (  0,  0   )     ref  ->  zero-ref   
-;  V32 tmp28        [V32,T25] (  2,  0.80)     ref  ->  r15         class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+;  V32 tmp28        [V32,T23] (  2,  0.80)     ref  ->  r15         class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
 ;* V33 tmp29        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13>
-;  V34 tmp30        [V34,T27] (  3,  0.40)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V34 tmp30        [V34,T25] (  3,  0.40)     ref  ->  rdi         single-def "guarded devirt arg temp"
 ;* V35 tmp31        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetUncData>d__15>
 ;  V36 cse0         [V36,T05] (  3,  2.80)     int  ->  r15         "CSE - aggressive"
-;* V37 rat0         [V37,T20] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V38 rat1         [V38,T29] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V39 rat2         [V39,T13] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V40 rat3         [V40,T21] (  3,  0.88)    long  ->  rdi         "Spilling to split statement for tree"
-;  V41 rat4         [V41,T14] (  3,  1.12)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V42 rat5         [V42,T06] (  3,  2.64)    long  ->  rdi         "Spilling to split statement for tree"
-;  V43 rat6         [V43,T03] (  3,  3.36)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V44 rat7         [V44,T22] (  3,  0.88)    long  ->  rdi         "Spilling to split statement for tree"
-;  V45 rat8         [V45,T15] (  3,  1.12)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V37 rat0         [V37,T19] (  3,  0.88)    long  ->  rdi         "Spilling to split statement for tree"
+;  V38 rat1         [V38,T13] (  3,  1.12)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V39 rat2         [V39,T06] (  3,  2.64)    long  ->  rdi         "Spilling to split statement for tree"
+;  V40 rat3         [V40,T03] (  3,  3.36)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V41 rat4         [V41,T20] (  3,  0.88)    long  ->  rdi         "Spilling to split statement for tree"
+;  V42 rat5         [V42,T14] (  3,  1.12)    long  ->  r11         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 
@@ -77,7 +74,7 @@ G_M26324_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
 G_M26324_IG03:        ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Enumerable+UnionIterator2`1[System.String]
        cmp      qword ptr [rbx], rdi
-       je       G_M26324_IG28
+       je       G_M26324_IG25
                        ;; size=19 bbWeight=0.20 PerfScore 0.85
 G_M26324_IG04:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      rdi, rbx
@@ -93,7 +90,7 @@ G_M26324_IG04:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
 G_M26324_IG05:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        test     r14, r14
-       je       G_M26324_IG41
+       je       G_M26324_IG40
                        ;; size=9 bbWeight=0.20 PerfScore 0.25
 G_M26324_IG06:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        mov      rdi, qword ptr [rbx]
@@ -118,14 +115,14 @@ G_M26324_IG08:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
        mov      rdi, gword ptr [rbx+0x20]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       G_M26324_IG33
+       je       G_M26324_IG29
                        ;; size=22 bbWeight=0.20 PerfScore 1.35
 G_M26324_IG09:        ; bbWeight=0.10, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        mov      rsi, 0xD1FFAB1E      ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
        cmp      qword ptr [rdi], rsi
-       je       G_M26324_IG33
-       jmp      G_M26324_IG51
+       je       G_M26324_IG29
+       jmp      G_M26324_IG50
                        ;; size=24 bbWeight=0.10 PerfScore 0.62
 G_M26324_IG10:        ; bbWeight=0.16, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rdi]
@@ -134,7 +131,7 @@ G_M26324_IG10:        ; bbWeight=0.16, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
 G_M26324_IG11:        ; bbWeight=0.80, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r14]
        test     r15d, r15d
-       jle      G_M26324_IG41
+       jle      G_M26324_IG40
                        ;; size=9 bbWeight=0.80 PerfScore 1.00
 G_M26324_IG12:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      r15, gword ptr [rbx+0x28]
@@ -145,7 +142,7 @@ G_M26324_IG13:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
        ; gcrRegs +[rdi]
        mov      rax, 0xD1FFAB1E      ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
        cmp      qword ptr [rdi], rax
-       jne      G_M26324_IG39
+       jne      G_M26324_IG38
                        ;; size=23 bbWeight=1 PerfScore 6.25
 G_M26324_IG14:        ; bbWeight=0.80, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
        call     [System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13:MoveNext():ubyte:this]
@@ -174,7 +171,7 @@ G_M26324_IG16:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
 G_M26324_IG17:        ; bbWeight=0.40, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        test     r15, r15
-       je       G_M26324_IG41
+       je       G_M26324_IG40
                        ;; size=9 bbWeight=0.40 PerfScore 0.50
 G_M26324_IG18:        ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        mov      rdi, qword ptr [rbx]
@@ -199,14 +196,14 @@ G_M26324_IG20:        ; bbWeight=0.20, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
        mov      rdi, gword ptr [rbx+0x20]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       G_M26324_IG40
+       je       G_M26324_IG39
                        ;; size=22 bbWeight=0.20 PerfScore 1.35
 G_M26324_IG21:        ; bbWeight=0.10, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        mov      rsi, 0xD1FFAB1E      ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
        cmp      qword ptr [rdi], rsi
-       je       G_M26324_IG40
-       jmp      G_M26324_IG52
+       je       G_M26324_IG39
+       jmp      G_M26324_IG51
                        ;; size=24 bbWeight=0.10 PerfScore 0.62
 G_M26324_IG22:        ; bbWeight=0.16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rdi]
@@ -218,17 +215,21 @@ G_M26324_IG23:        ; bbWeight=0.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
        mov      rsi, qword ptr [rsi+0x08]
        mov      r11, qword ptr [rsi+0x28]
        test     r11, r11
-       je       G_M26324_IG42
-       jmp      SHORT G_M26324_IG27
+       je       G_M26324_IG41
+       jmp      SHORT G_M26324_IG28
                        ;; size=26 bbWeight=0.60 PerfScore 6.75
-G_M26324_IG24:        ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG24:        ; bbWeight=0.40, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r15]
        test     esi, esi
-       je       G_M26324_IG47
-       jmp      SHORT G_M26324_IG31
-                       ;; size=10 bbWeight=0.40 PerfScore 1.30
-G_M26324_IG25:        ; bbWeight=0.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+       je       G_M26324_IG46
+       jmp      G_M26324_IG35
+                       ;; size=13 bbWeight=0.40 PerfScore 1.30
+G_M26324_IG25:        ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       mov      r14, gword ptr [rbx+0x30]
        ; gcrRegs +[r14]
+       jmp      G_M26324_IG05
+                       ;; size=9 bbWeight=0.20 PerfScore 0.80
+G_M26324_IG26:        ; bbWeight=0.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
        lea      rdi, bword ptr [rbx+0x08]
        ; byrRegs +[rdi]
        mov      rsi, r14
@@ -238,7 +239,7 @@ G_M26324_IG25:        ; bbWeight=0.60, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
        ; byrRegs -[rdi]
        mov      eax, 1
                        ;; size=17 bbWeight=0.60 PerfScore 1.20
-G_M26324_IG26:        ; bbWeight=0.60, epilog, nogc, extend
+G_M26324_IG27:        ; bbWeight=0.60, epilog, nogc, extend
        add      rsp, 24
        pop      rbx
        pop      r14
@@ -246,7 +247,7 @@ G_M26324_IG26:        ; bbWeight=0.60, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=11 bbWeight=0.60 PerfScore 1.95
-G_M26324_IG27:        ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26324_IG28:        ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs +[r15]
        mov      rdi, gword ptr [rbx+0x20]
        ; gcrRegs +[rdi]
@@ -263,33 +264,11 @@ G_M26324_IG27:        ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=800
        call     [<unknown method>]
        ; gcrRegs -[rax rsi rdi]
        test     eax, eax
-       jne      SHORT G_M26324_IG25
-       jmp      G_M26324_IG13
-                       ;; size=38 bbWeight=0.60 PerfScore 9.30
-G_M26324_IG28:        ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r14-r15]
-       mov      r14, gword ptr [rbx+0x30]
-       ; gcrRegs +[r14]
-       jmp      G_M26324_IG05
-                       ;; size=9 bbWeight=0.20 PerfScore 0.80
-G_M26324_IG29:        ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r14]
-       xor      r15, r15
-       ; gcrRegs +[r15]
-                       ;; size=3 bbWeight=0.13 PerfScore 0.03
-G_M26324_IG30:        ; bbWeight=0.40, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
-       jmp      G_M26324_IG17
-                       ;; size=5 bbWeight=0.40 PerfScore 0.80
-G_M26324_IG31:        ; bbWeight=0.27, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       je       G_M26324_IG13
+       jmp      SHORT G_M26324_IG26
+                       ;; size=39 bbWeight=0.60 PerfScore 9.30
+G_M26324_IG29:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r15]
-       cmp      esi, 1
-       je       G_M26324_IG48
-                       ;; size=9 bbWeight=0.27 PerfScore 0.33
-G_M26324_IG32:        ; bbWeight=0.13, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M26324_IG29
-                       ;; size=2 bbWeight=0.13 PerfScore 0.27
-G_M26324_IG33:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs +[r14]
        lea      rdi, bword ptr [rbx+0x20]
        ; byrRegs +[rdi]
        mov      rsi, r14
@@ -300,18 +279,18 @@ G_M26324_IG33:        ; bbWeight=0.20, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
        inc      dword ptr [rbx+0x14]
        mov      rdi, 0xD1FFAB1E      ; System.IO.Tests.BaseSymbolicLinks+<get_PathToTargetData>d__13
        cmp      qword ptr [r14], rdi
-       je       SHORT G_M26324_IG36
+       je       SHORT G_M26324_IG32
                        ;; size=30 bbWeight=0.20 PerfScore 1.80
-G_M26324_IG34:        ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+G_M26324_IG30:        ; bbWeight=0, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
        mov      rdi, r14
        ; gcrRegs +[rdi]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        call     [r11]<unknown method>
        ; gcrRegs -[rdi r14]
                        ;; size=16 bbWeight=0 PerfScore 0.00
-G_M26324_IG35:        ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG31:        ; bbWeight=0.20, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        test     eax, eax
-       jne      SHORT G_M26324_IG37
+       jne      SHORT G_M26324_IG36
...

+13 (+1.68%) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

@@ -18,9 +18,9 @@
 ;  V06 tmp2         [V06,T13] (  4,  1.35)    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V07 tmp3         [V07    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V08 tmp4         [V08,T14] (  4,  1.35)    long  ->  r11         "VirtualCall with runtime lookup"
-;  V09 tmp5         [V09,T29] (  3,  0.45)     ref  ->  r14         "guarded devirt return temp"
+;  V09 tmp5         [V09,T27] (  3,  0.45)     ref  ->  r14         "guarded devirt return temp"
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Linq.Enumerable+UnionIterator2`1[System.String]>
-;  V11 tmp7         [V11,T30] (  3,  0.45)     int  ->  rax         "guarded devirt return temp"
+;  V11 tmp7         [V11,T28] (  3,  0.45)     int  ->  rax         "guarded devirt return temp"
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
 ;  V13 tmp9         [V13,T20] (  4,  1.13)     ref  ->  r15         "guarded devirt return temp"
 ;  V14 tmp10        [V14,T07] (  4,  3.51)     int  ->  rsi         "guarded devirt arg temp"
@@ -44,19 +44,16 @@
 ;* V32 tmp28        [V32    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V33 tmp29        [V33,T25] (  2,  0.90)     ref  ->  r15         class-hnd "Inlining Arg" <System.Collections.Generic.IEnumerator`1[System.__Canon]>
 ;* V34 tmp30        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
-;  V35 tmp31        [V35,T27] (  3,  0.55)     ref  ->  rdi         single-def "guarded devirt arg temp"
+;  V35 tmp31        [V35,T26] (  3,  0.55)     ref  ->  rdi         single-def "guarded devirt arg temp"
 ;* V36 tmp32        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.SZGenericArrayEnumerator`1[System.String]>
 ;  V37 cse0         [V37,T08] (  3,  2.77)     int  ->  r15         "CSE - moderate"
 ;  V38 cse1         [V38,T03] (  3, 12.54)     int  ->  r14         "CSE - moderate"
-;* V39 rat0         [V39,T28] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V40 rat1         [V40,T31] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V41 rat2         [V41,T26] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V42 rat3         [V42,T21] (  3,  0.99)    long  ->  rdi         "Spilling to split statement for tree"
-;  V43 rat4         [V43,T15] (  3,  1.26)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V44 rat5         [V44,T06] (  3,  3.69)    long  ->  rdi         "Spilling to split statement for tree"
-;  V45 rat6         [V45,T05] (  3,  4.70)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V46 rat7         [V46,T22] (  3,  0.99)    long  ->  rdi         "Spilling to split statement for tree"
-;  V47 rat8         [V47,T16] (  3,  1.26)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V39 rat0         [V39,T21] (  3,  0.99)    long  ->  rdi         "Spilling to split statement for tree"
+;  V40 rat1         [V40,T15] (  3,  1.26)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V41 rat2         [V41,T06] (  3,  3.69)    long  ->  rdi         "Spilling to split statement for tree"
+;  V42 rat3         [V42,T05] (  3,  4.70)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V43 rat4         [V43,T22] (  3,  0.99)    long  ->  rdi         "Spilling to split statement for tree"
+;  V44 rat5         [V44,T16] (  3,  1.26)    long  ->  r11         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
@@ -75,13 +72,13 @@ G_M26324_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M26324_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      r15d, dword ptr [rbx+0x14]
        cmp      r15d, 1
-       jne      G_M26324_IG29
+       jne      G_M26324_IG28
                        ;; size=14 bbWeight=1 PerfScore 3.25
-G_M26324_IG03:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG03:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      rdi, 0xD1FFAB1E      ; System.Linq.Enumerable+UnionIterator2`1[System.String]
        cmp      qword ptr [rbx], rdi
-       je       SHORT G_M26324_IG07
-                       ;; size=15 bbWeight=0.23 PerfScore 0.96
+       je       G_M26324_IG13
+                       ;; size=19 bbWeight=0.23 PerfScore 0.96
 G_M26324_IG04:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      rdi, rbx
        ; gcrRegs +[rdi]
@@ -96,40 +93,17 @@ G_M26324_IG04:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
 G_M26324_IG05:        ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        test     r14, r14
-       je       G_M26324_IG42
+       je       G_M26324_IG41
                        ;; size=9 bbWeight=0.23 PerfScore 0.28
-G_M26324_IG06:        ; bbWeight=0.11, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M26324_IG10
-                       ;; size=2 bbWeight=0.11 PerfScore 0.23
-G_M26324_IG07:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[r14]
-       mov      r14, gword ptr [rbx+0x30]
-       ; gcrRegs +[r14]
-       jmp      SHORT G_M26324_IG05
-                       ;; size=6 bbWeight=0.23 PerfScore 0.90
-G_M26324_IG08:        ; bbWeight=11.15, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r14] +[rdi]
-       mov      dword ptr [rdi+0x08], r14d
-                       ;; size=4 bbWeight=11.15 PerfScore 11.15
-G_M26324_IG09:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdi]
-       mov      esi, dword ptr [rbx+0x14]
-       dec      esi
-       mov      rdi, 0xD1FFAB1E      ; System.Linq.Enumerable+UnionIterator2`1[System.String]
-       cmp      qword ptr [rbx], rdi
-       jne      G_M26324_IG52
-       jmp      G_M26324_IG33
-                       ;; size=29 bbWeight=1 PerfScore 8.50
-G_M26324_IG10:        ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs +[r14]
+G_M26324_IG06:        ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
        mov      rdi, qword ptr [rbx]
        mov      rsi, qword ptr [rdi+0x38]
        mov      rsi, qword ptr [rsi+0x08]
        mov      r11, qword ptr [rsi+0x20]
        test     r11, r11
-       je       G_M26324_IG17
+       je       G_M26324_IG16
                        ;; size=24 bbWeight=0.23 PerfScore 2.09
-G_M26324_IG11:        ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG07:        ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
        mov      rdi, r14
        ; gcrRegs +[rdi]
        call     [r11]
@@ -139,20 +113,20 @@ G_M26324_IG11:        ; bbWeight=0.23, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
        mov      rdi, gword ptr [rbx+0x20]
        ; gcrRegs +[rdi]
        test     rdi, rdi
-       je       SHORT G_M26324_IG14
+       je       SHORT G_M26324_IG10
                        ;; size=18 bbWeight=0.23 PerfScore 1.52
-G_M26324_IG12:        ; bbWeight=0.11, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG08:        ; bbWeight=0.11, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax]
        mov      r11, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.String]
        cmp      qword ptr [rdi], r11
-       je       SHORT G_M26324_IG14
+       je       SHORT G_M26324_IG10
                        ;; size=15 bbWeight=0.11 PerfScore 0.48
-G_M26324_IG13:        ; bbWeight=0.05, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
+G_M26324_IG09:        ; bbWeight=0.05, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        call     [r11]<unknown method>
        ; gcrRegs -[rdi]
                        ;; size=13 bbWeight=0.05 PerfScore 0.17
-G_M26324_IG14:        ; bbWeight=0.23, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG10:        ; bbWeight=0.23, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        lea      rdi, bword ptr [rbx+0x20]
        ; byrRegs +[rdi]
        mov      rsi, r15
@@ -163,17 +137,17 @@ G_M26324_IG14:        ; bbWeight=0.23, gcrefRegs=8008 {rbx r15}, byrefRegs=0000
        inc      dword ptr [rbx+0x14]
        mov      rdi, 0xD1FFAB1E      ; System.SZGenericArrayEnumerator`1[System.String]
        cmp      qword ptr [r15], rdi
-       jne      SHORT G_M26324_IG20
-                       ;; size=30 bbWeight=0.23 PerfScore 2.03
-G_M26324_IG15:        ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+       jne      G_M26324_IG19
+                       ;; size=34 bbWeight=0.23 PerfScore 2.03
+G_M26324_IG11:        ; bbWeight=0.13, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        mov      rdi, r15
        ; gcrRegs +[rdi]
        call     [System.SZGenericArrayEnumeratorBase:MoveNext():ubyte:this]
        ; gcrRegs -[rdi r15]
                        ;; size=9 bbWeight=0.13 PerfScore 0.43
-G_M26324_IG16:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG12:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        test     eax, eax
-       jne      SHORT G_M26324_IG22
+       jne      G_M26324_IG21
        mov      esi, dword ptr [rbx+0x14]
        dec      esi
        mov      rdi, rbx
@@ -185,45 +159,64 @@ G_M26324_IG16:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        mov      r14, rax
        ; gcrRegs +[r14]
        test     r14, r14
-       je       G_M26324_IG42
-       jmp      G_M26324_IG10
-                       ;; size=39 bbWeight=0.23 PerfScore 3.22
-G_M26324_IG17:        ; bbWeight=0.05, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax]
+       je       G_M26324_IG41
+       jmp      G_M26324_IG06
+                       ;; size=43 bbWeight=0.23 PerfScore 3.22
+G_M26324_IG13:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax r14]
+       mov      r14, gword ptr [rbx+0x30]
+       ; gcrRegs +[r14]
+       jmp      G_M26324_IG05
+                       ;; size=9 bbWeight=0.23 PerfScore 0.90
+G_M26324_IG14:        ; bbWeight=11.15, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[r14] +[rdi]
+       mov      dword ptr [rdi+0x08], r14d
+                       ;; size=4 bbWeight=11.15 PerfScore 11.15
+G_M26324_IG15:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rdi]
+       mov      esi, dword ptr [rbx+0x14]
+       dec      esi
+       mov      rdi, 0xD1FFAB1E      ; System.Linq.Enumerable+UnionIterator2`1[System.String]
+       cmp      qword ptr [rbx], rdi
+       jne      G_M26324_IG51
+       jmp      G_M26324_IG32
+                       ;; size=29 bbWeight=1 PerfScore 8.50
+G_M26324_IG16:        ; bbWeight=0.05, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref
+       ; gcrRegs +[r14]
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      r11, rax
-       jmp      G_M26324_IG11
+       jmp      G_M26324_IG07
                        ;; size=23 bbWeight=0.05 PerfScore 0.16
-G_M26324_IG18:        ; bbWeight=1.29, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M26324_IG17:        ; bbWeight=1.29, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r14] +[rdi r15]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        call     [r11]<unknown method>
        ; gcrRegs -[rdi]
        test     eax, eax
-       jne      SHORT G_M26324_IG24
+       jne      SHORT G_M26324_IG23
                        ;; size=17 bbWeight=1.29 PerfScore 5.81
-G_M26324_IG19:        ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M26324_IG18:        ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r15]
-       jmp      G_M26324_IG09
-                       ;; size=5 bbWeight=4 PerfScore 8.00
-G_M26324_IG20:        ; bbWeight=0.09, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+       jmp      SHORT G_M26324_IG15
+                       ;; size=2 bbWeight=4 PerfScore 8.00
+G_M26324_IG19:        ; bbWeight=0.09, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        ; gcrRegs +[r15]
        mov      rdi, r15
        ; gcrRegs +[rdi]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        call     [r11]<unknown method>
        ; gcrRegs -[rdi r15]
-       jmp      SHORT G_M26324_IG16
-                       ;; size=18 bbWeight=0.09 PerfScore 0.52
-G_M26324_IG21:        ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+       jmp      G_M26324_IG12
+                       ;; size=21 bbWeight=0.09 PerfScore 0.52
+G_M26324_IG20:        ; bbWeight=0.17, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[r15]
        mov      rsi, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        mov      r11, rax
-       jmp      SHORT G_M26324_IG25
+       jmp      SHORT G_M26324_IG24
                        ;; size=20 bbWeight=0.17 PerfScore 0.59
-G_M26324_IG22:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M26324_IG21:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r15]
        mov      rdi, rbx
        ; gcrRegs +[rdi]
@@ -231,7 +224,7 @@ G_M26324_IG22:        ; bbWeight=0.23, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
        ; gcrRegs -[rdi]
        mov      eax, 1
                        ;; size=14 bbWeight=0.23 PerfScore 0.79
-G_M26324_IG23:        ; bbWeight=0.23, epilog, nogc, extend
+G_M26324_IG22:        ; bbWeight=0.23, epilog, nogc, extend
        add      rsp, 16
        pop      rbx
        pop      r13
@@ -240,16 +233,16 @@ G_M26324_IG23:        ; bbWeight=0.23, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=13 bbWeight=0.23 PerfScore 0.85
-G_M26324_IG24:        ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26324_IG23:        ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs +[r15]
        mov      rdi, qword ptr [rbx]
...

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-8 (-1.83%) : 97920.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V07 tmp2         [V07,T07] (  6,  8   )   byref  ->  [rbp-0x48] 
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V09 tmp4         [V09,T02] (  8, 12   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V10 tmp5         [V10,T11] (  4,  4   )     int  ->  rax        
+;  V10 tmp5         [V10,T11] (  2,  3.96)     int  ->  rdi        
 ;  V11 tmp6         [V11,T08] (  4,  8   )     ref  ->  rdi         "argument with side effect"
 ;  V12 cse0         [V12,T10] (  5,  7   )     int  ->  r12         "CSE - moderate"
 ;  V13 cse1         [V13,T03] (  4, 11.88)    long  ->  [rbp-0x40]  spill-single-def "CSE - aggressive"
@@ -124,10 +124,10 @@ G_M22994_IG09:        ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=800
        ; gcrRegs -[rsi rdi]
        ; byrRegs -[rdx]
        ; gcr arg pop 0
+       xor      edi, edi
        test     eax, eax
-       sete     al
-       movzx    rax, al
-       test     eax, eax
+       sete     dil
+       test     edi, edi
        jne      G_M22994_IG22
                        ;; size=27 bbWeight=1.98 PerfScore 19.30
 G_M22994_IG10:        ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
@@ -215,11 +215,8 @@ G_M22994_IG18:        ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=800
        ; byrRegs -[rax]
        ; gcr arg pop 0
        test     eax, eax
-       sete     al
-       movzx    rax, al
-       test     eax, eax
-       jne      SHORT G_M22994_IG22
-                       ;; size=32 bbWeight=0.02 PerfScore 0.28
+       je       SHORT G_M22994_IG22
+                       ;; size=24 bbWeight=0.02 PerfScore 0.25
 G_M22994_IG19:        ; bbWeight=0.04, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
        inc      r13d
        cmp      r12d, r13d
@@ -258,7 +255,7 @@ G_M22994_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 436, prolog size 38, PerfScore 119.24, instruction count 129, allocated bytes for code 436 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 428, prolog size 38, PerfScore 119.21, instruction count 126, allocated bytes for code 428 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:

-11 (-1.44%) : 149488.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  rdx         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T20] (  2,  0.04)   ubyte  ->  rdi         "Inline return value spill temp"
+;* V19 tmp13        [V19,T20] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -207,10 +207,10 @@ G_M10809_IG11:        ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
        cmp      r13d, eax
        jg       SHORT G_M10809_IG08
                        ;; size=35 bbWeight=3.96 PerfScore 33.66
-G_M10809_IG12:        ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M10809_IG12:        ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r14]
-       jmp      G_M10809_IG17
-                       ;; size=5 bbWeight=0.50 PerfScore 1.00
+       jmp      SHORT G_M10809_IG17
+                       ;; size=2 bbWeight=0.50 PerfScore 1.00
 G_M10809_IG13:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[r14]
        mov      dword ptr [rbp-0x2C], eax
@@ -250,12 +250,9 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=D00C {rdx rbx r12 r14 r15}, byr
        ; gcrRegs -[rax rcx]
        ; byrRegs -[rdi]
        ; gcr arg pop 0
-       xor      edi, edi
        test     eax, eax
-       sete     dil
-       test     edi, edi
-       je       G_M10809_IG21
-                       ;; size=61 bbWeight=0.02 PerfScore 0.33
+       jne      G_M10809_IG21
+                       ;; size=53 bbWeight=0.02 PerfScore 0.30
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        cmp      dword ptr [rbp-0x38], 0xFFFF
        ja       G_M10809_IG22
@@ -420,7 +417,7 @@ G_M10809_IG22:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        int3     
                        ;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 762, prolog size 25, PerfScore 120.62, instruction count 192, allocated bytes for code 762 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 751, prolog size 25, PerfScore 120.59, instruction count 189, allocated bytes for code 751 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:

-11 (-1.43%) : 152537.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  rdx         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T20] (  2,  0.04)   ubyte  ->  rdi         "Inline return value spill temp"
+;* V19 tmp13        [V19,T20] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -209,10 +209,10 @@ G_M10809_IG11:        ; bbWeight=3.96, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRe
        cmp      r13d, eax
        jg       SHORT G_M10809_IG08
                        ;; size=35 bbWeight=3.96 PerfScore 33.66
-G_M10809_IG12:        ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref
+G_M10809_IG12:        ; bbWeight=0.50, gcrefRegs=9008 {rbx r12 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r14]
-       jmp      G_M10809_IG17
-                       ;; size=5 bbWeight=0.50 PerfScore 1.00
+       jmp      SHORT G_M10809_IG17
+                       ;; size=2 bbWeight=0.50 PerfScore 1.00
 G_M10809_IG13:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[r14]
        mov      dword ptr [rbp-0x2C], eax
@@ -252,12 +252,9 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=D00C {rdx rbx r12 r14 r15}, byr
        ; gcrRegs -[rax rcx]
        ; byrRegs -[rdi]
        ; gcr arg pop 0
-       xor      edi, edi
        test     eax, eax
-       sete     dil
-       test     edi, edi
-       je       G_M10809_IG21
-                       ;; size=61 bbWeight=0.02 PerfScore 0.33
+       jne      G_M10809_IG21
+                       ;; size=53 bbWeight=0.02 PerfScore 0.30
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
        cmp      dword ptr [rbp-0x38], 0xFFFF
        ja       G_M10809_IG22
@@ -422,7 +419,7 @@ G_M10809_IG22:        ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        int3     
                        ;; size=83 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 768, prolog size 31, PerfScore 121.87, instruction count 194, allocated bytes for code 768 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 757, prolog size 31, PerfScore 121.84, instruction count 191, allocated bytes for code 757 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:

+0 (0.00%) : 9834.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T13] (  4,  5   )     int  ->  r14        
 ;  V07 loc4         [V07,T14] (  4,  5   )     int  ->  [rbp-0x34] 
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  rbx        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [rbp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->  rax        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [rbp-0x48]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T17] (  8,  4   )     int  ->  r13         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T23] (  3,  3   )     int  ->  r14         "Inlining Arg"
-;  V31 tmp19        [V31,T34] (  2,  2   )    long  ->  r14         "Inlining Arg"
+;  V31 tmp19        [V31,T32] (  2,  2   )    long  ->  r14         "Inlining Arg"
 ;  V32 tmp20        [V32,T22] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,24 +51,24 @@
 ;  V40 tmp28        [V40,T18] (  5,  4.00)    long  ->  [rbp-0x50]  spill-single-def "Inlining Arg"
 ;* V41 tmp29        [V41    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V42 tmp30        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V43 tmp31        [V43,T35] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V43 tmp31        [V43,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V44 tmp32        [V44,T09] (  3,  6   )     int  ->  r11         "Inline stloc first use temp"
 ;  V45 tmp33        [V45,T10] (  3,  6   )     int  ->  rdi         "Inline stloc first use temp"
 ;  V46 tmp34        [V46,T06] (  3, 12   )   byref  ->  rdi         "dup spill"
 ;* V47 tmp35        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V49 tmp37        [V49,T44] (  4,  1.50)   byref  ->  r14         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V49 tmp37        [V49,T42] (  4,  1.50)   byref  ->  r14         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V51 tmp39        [V51    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V52 tmp40        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V53 tmp41        [V53,T40] (  2,  1.50)     int  ->  [rbp-0x40]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V54 tmp42        [V54,T41] (  2,  1.50)     int  ->  [rbp-0x3C]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V53 tmp41        [V53,T38] (  2,  1.50)     int  ->  [rbp-0x40]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V54 tmp42        [V54,T39] (  2,  1.50)     int  ->  [rbp-0x3C]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V55 tmp43        [V55    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V56 tmp44        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V57 tmp45        [V57,T42] (  2,  1.50)     int  ->  [rbp-0x48]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V58 tmp46        [V58,T43] (  2,  1.50)     int  ->  [rbp-0x44]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V59 tmp47        [V59,T45] (  2,  1   )   byref  ->  r12         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V60 tmp48        [V60,T46] (  2,  1   )     int  ->  r13         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V57 tmp45        [V57,T40] (  2,  1.50)     int  ->  [rbp-0x48]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V58 tmp46        [V58,T41] (  2,  1.50)     int  ->  [rbp-0x44]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V59 tmp47        [V59,T43] (  2,  1   )   byref  ->  r12         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V60 tmp48        [V60,T44] (  2,  1   )     int  ->  r13         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp50        [V62    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V63 tmp51        [V63    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
 ;* V66 tmp54        [V66    ] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x8)" P-INDEP
 ;  V67 tmp55        [V67,T15] (  3,  4.50)   byref  ->  r12         single-def "V05.[000..008)"
 ;  V68 tmp56        [V68,T16] (  3,  4.50)     int  ->  r13         single-def "V05.[008..012)"
-;  V69 tmp57        [V69,T36] (  3,  1.50)   byref  ->  r12         "V16.[000..008)"
-;  V70 tmp58        [V70,T39] (  3,  1.50)     int  ->  r13         "V16.[008..012)"
+;  V69 tmp57        [V69,T34] (  3,  1.50)   byref  ->  r12         "V16.[000..008)"
+;  V70 tmp58        [V70,T37] (  3,  1.50)     int  ->  r13         "V16.[008..012)"
 ;  V71 tmp59        [V71,T03] (  2, 16   )     ref  ->  rsi         "argument with side effect"
 ;  V72 GsCookie     [V72    ] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V73 PSPSym       [V73,T48] (  1,  1   )    long  ->  [rbp-0x80]  do-not-enreg[V] "PSPSym"
+;  V73 PSPSym       [V73,T45] (  1,  1   )    long  ->  [rbp-0x80]  do-not-enreg[V] "PSPSym"
 ;  V74 cse0         [V74,T11] (  3,  6   )     int  ->  rdi         "CSE - moderate"
-;  V75 cse1         [V75,T37] (  3,  1.50)     ref  ->  rsi         "CSE - moderate"
-;  V76 rat0         [V76,T30] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
+;  V75 cse1         [V75,T35] (  3,  1.50)     ref  ->  rsi         "CSE - moderate"
+;  V76 rat0         [V76,T29] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
 ;  V77 rat1         [V77,T26] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V78 rat2         [V78,T31] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
+;  V78 rat2         [V78,T30] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
 ;  V79 rat3         [V79,T27] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V80 rat4         [V80,T32] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
+;  V80 rat4         [V80,T31] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
 ;  V81 rat5         [V81,T28] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V82 rat6         [V82,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V83 rat7         [V83,T47] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V84 rat8         [V84,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V85 rat9         [V85,T02] (  3, 17.60)    long  ->  rsi         "Spilling to split statement for tree"
-;  V86 rat10        [V86,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V87 rat11        [V87,T24] (  3,  3   )     int  ->  r14         "ReplaceWithLclVar is creating a new local variable"
-;  V88 rat12        [V88,T25] (  3,  3   )    long  ->  [rbp-0x58]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V82 rat6         [V82,T02] (  3, 17.60)    long  ->  rsi         "Spilling to split statement for tree"
+;  V83 rat7         [V83,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V84 rat8         [V84,T24] (  3,  3   )     int  ->  r14         "ReplaceWithLclVar is creating a new local variable"
+;  V85 rat9         [V85,T25] (  3,  3   )    long  ->  [rbp-0x58]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 88
 

+0 (0.00%) : 67335.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:CopyToObjects(System.Object[],int):this (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 this         [V00,T10] (  4,  4   )     ref  ->  r15         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->  r14         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T06] (  5, 50   )     int  ->  rbx        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->  r13         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->  r13         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->  r12        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
 ;  V06 loc3         [V06,T02] (  7, 88   )     ref  ->  [rbp-0x48]  class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->  rsi         class-hnd "Inlining Arg" <System.__Canon>
 ;  V13 tmp6         [V13,T05] (  2, 64   )     ref  ->   r8         class-hnd "Inlining Arg" <System.__Canon>
-;  V14 tmp7         [V14,T16] (  2,  8   )     ref  ->  rdx         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->  rdx         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T07] (  2, 32   )     ref  ->  [rbp-0x58]  spill-single-def "field V08.key (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T08] (  2, 32   )     ref  ->  [rbp-0x60]  spill-single-def "field V08.value (fldOffset=0x8)" P-INDEP
 ;  V17 cse0         [V17,T13] (  2, 17   )    long  ->  [rbp-0x38]  spill-single-def hoist "CSE - moderate"
-;  V18 cse1         [V18,T18] (  3,  6   )     int  ->  [rbp-0x3C]  spill-single-def "CSE - moderate"
-;  V19 rat0         [V19,T20] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
-;  V20 rat1         [V20,T21] (  3,  4   )    long  ->  registers   "runtime lookup"
-;  V21 rat2         [V21,T19] (  3,  5.60)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
-;* V22 rat3         [V22,T15] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V23 rat4         [V23,T22] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V24 rat5         [V24,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V25 rat6         [V25,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat7         [V26,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V27 rat8         [V27,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V18 cse1         [V18,T16] (  3,  6   )     int  ->  [rbp-0x3C]  spill-single-def "CSE - moderate"
+;  V19 rat0         [V19,T18] (  3,  4.40)    long  ->  rdi         "Spilling to split statement for tree"
+;  V20 rat1         [V20,T19] (  3,  4   )    long  ->  registers   "runtime lookup"
+;  V21 rat2         [V21,T17] (  3,  5.60)    long  ->  rcx         "fgMakeTemp is creating a new local variable"
+;* V22 rat3         [V22,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V23 rat4         [V23,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V24 rat5         [V24,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 56
 

+0 (0.00%) : 4860.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rbp-0x68]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [rbp-0x4C] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rbp-0x70]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  r12         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  r12         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  rax        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  rax        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rsi         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r13        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rsi         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r13        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rdi         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rsi         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rdi         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rsi         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rdi         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rsi         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rdi         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rsi         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rdi         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rsi         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rdi         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rsi         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rcx         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rsi         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rsi         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rsi         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rsi         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rsi         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rsi         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rsi         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rsi         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rdi         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r13         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rsi         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rsi         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rdi         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r13         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rsi         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rdi         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rdi         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rsi         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rsi         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -235,8 +229,8 @@ G_M18379_IG11:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000
        mov      gword ptr [rbp-0x60], rax
        ; GC ptr vars +{V11}
        cmp      dword ptr [rbp-0x48], 0
-       jl       SHORT G_M18379_IG14
        mov      ecx, dword ptr [rbp-0x48]
+       jl       SHORT G_M18379_IG14
                        ;; size=22 bbWeight=0.50 PerfScore 4.12
 G_M18379_IG12:        ; bbWeight=4, gcVars=00000000000000000000000028000000 {V07 V11}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
        ; gcrRegs -[rax]

realworld.run.linux.x64.checked.mch

-23 (-0.30%) : 13016.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)

@@ -288,9 +288,8 @@
 ;  V277 cse13       [V277,T203] (  4,  0.16)    long  ->  [rbp-0x70]  spill-single-def "CSE - conservative"
 ;  V278 cse14       [V278,T204] (  3,  0.12)     ref  ->  [rbp-0x2A0]  spill-single-def "CSE - conservative"
 ;  V279 cse15       [V279,T205] (  3,  0.12)     ref  ->  [rbp-0x2A8]  spill-single-def "CSE - conservative"
-;  TEMP_01                                   byref  ->  [rbp-0x2B0]
 ;
-; Lcl frame size = 664
+; Lcl frame size = 648
 
 G_M30044_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
@@ -299,15 +298,13 @@ G_M30044_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     r13
        push     r12
        push     rbx
-       sub      rsp, 664
-       lea      rbp, [rsp+0x2C0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x2B0], rax
+       sub      rsp, 648
+       lea      rbp, [rsp+0x2B0]
        mov      rbx, rdi
        ; gcrRegs +[rbx]
        mov      r15, rsi
        ; gcrRegs +[r15]
-                       ;; size=40 bbWeight=1 PerfScore 8.50
+                       ;; size=31 bbWeight=1 PerfScore 7.25
 G_M30044_IG02:        ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
        mov      r14, gword ptr [rbx+0x40]
        ; gcrRegs +[r14]
@@ -1596,18 +1593,12 @@ G_M30044_IG55:        ; bbWeight=0.04, gcVars=0000000000000000000000000000000000
        ; gcrRegs +[r8]
        mov      rsi, gword ptr [r8+8*rsi+0x10]
        ; gcrRegs +[rsi]
-       mov      r9, gword ptr [rbp-0xE0]
-       ; gcrRegs +[r9]
-       lea      rdi, bword ptr [r9+0x08]
-       ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0x2B0], rdi
        mov      rdi, 0xD1FFAB1E
        ; gcrRegs +[rdi]
-       ; byrRegs -[rdi]
        mov      rdx, 0xD1FFAB1E
        ; gcrRegs +[rdx]
        call     [<unknown method>]
-       ; gcrRegs -[rdx rsi rdi r8-r9]
+       ; gcrRegs -[rdx rsi rdi r8]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        mov      rdi, gword ptr [rbp-0x1F8]
@@ -1615,12 +1606,14 @@ G_M30044_IG55:        ; bbWeight=0.04, gcVars=0000000000000000000000000000000000
        ; GC ptr vars -{V131}
        call     [Microsoft.ML.Data.DataViewUtils:GetTempColumnName(Microsoft.ML.DataViewSchema,System.String):System.String]
        ; gcrRegs -[rsi rdi]
-       mov      rdi, bword ptr [rbp-0x2B0]
+       mov      rcx, gword ptr [rbp-0xE0]
+       ; gcrRegs +[rcx]
+       lea      rdi, bword ptr [rcx+0x08]
        ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rsi]
+       ; gcrRegs -[rax rcx rsi]
        ; byrRegs -[rdi]
        mov      rax, gword ptr [rbp-0xE0]
        ; gcrRegs +[rax]
@@ -1653,7 +1646,7 @@ G_M30044_IG55:        ; bbWeight=0.04, gcVars=0000000000000000000000000000000000
        ; gcrRegs +[rcx]
        mov      edx, dword ptr [rax+0x10]
        cmp      dword ptr [rcx+0x08], edx
-                       ;; size=242 bbWeight=0.04 PerfScore 2.19
+                       ;; size=228 bbWeight=0.04 PerfScore 2.11
 G_M30044_IG56:        ; bbWeight=0.04, isz, extend
        jbe      SHORT G_M30044_IG58
                        ;; size=2 bbWeight=0.04 PerfScore 0.04
@@ -3146,7 +3139,7 @@ G_M30044_IG108:        ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs
        ; gcrRegs +[rax]
                        ;; size=135 bbWeight=1 PerfScore 28.00
 G_M30044_IG109:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 664
+       add      rsp, 648
        pop      rbx
        pop      r12
        pop      r13
@@ -3256,7 +3249,7 @@ G_M30044_IG117:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
                        ;; size=38 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 7734, prolog size 34, PerfScore 1697.74, instruction count 1564, allocated bytes for code 7734 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
+; Total bytes of code 7711, prolog size 25, PerfScore 1696.41, instruction count 1560, allocated bytes for code 7711 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -3270,7 +3263,7 @@ Unwind Info:
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
     CodeOffset: 0x11 UnwindOp: UWOP_ALLOC_LARGE (1)     OpInfo: 0 - Scaled small  
-      Size: 83 * 8 = 664 = 0x00298
+      Size: 81 * 8 = 648 = 0x00288
     CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r12 (12)
     CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r13 (13)

-16 (-0.25%) : 32808.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

@@ -1468,34 +1468,29 @@ G_M4474_IG52:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000100
        ; gcrRegs -[rcx rdi] +[rax]
        mov      gword ptr [rbp-0xB0], rax
        ; GC ptr vars +{V18}
+       mov      ecx, dword ptr [rbp-0x30]
+       mov      rdx, gword ptr [rbp-0x88]
+       ; gcrRegs +[rdx]
+       cmp      ecx, dword ptr [rdx+0x08]
+       jae      G_M4474_IG106
+       mov      dword ptr [rbp-0x30], ecx
+       mov      edi, ecx
+       mov      r8, gword ptr [rdx+8*rdi+0x10]
+       ; gcrRegs +[r8]
+       mov      rdi, r8
+       ; gcrRegs +[rdi]
+       mov      rsi, qword ptr [r8]
+       mov      rsi, qword ptr [rsi+0x48]
+       call     [rsi+0x30]<unknown method>
+       ; gcrRegs -[rdx rdi r8]
        mov      rcx, gword ptr [rbp-0xA8]
        ; gcrRegs +[rcx]
        lea      rdi, bword ptr [rcx+0x08]
        ; byrRegs +[rdi]
-       mov      bword ptr [rbp-0x140], rdi
-       mov      edx, dword ptr [rbp-0x30]
-       mov      rsi, gword ptr [rbp-0x88]
-       ; gcrRegs +[rsi]
-       cmp      edx, dword ptr [rsi+0x08]
-       jae      G_M4474_IG106
-       mov      dword ptr [rbp-0x30], edx
-       mov      r8d, edx
-       mov      r8, gword ptr [rsi+8*r8+0x10]
-       ; gcrRegs +[r8]
-       mov      rdi, r8
-       ; gcrRegs +[rdi]
-       ; byrRegs -[rdi]
-       mov      r8, qword ptr [r8]
-       ; gcrRegs -[r8]
-       mov      r8, qword ptr [r8+0x48]
-       call     [r8+0x30]<unknown method>
-       ; gcrRegs -[rcx rsi rdi]
-       mov      rdi, bword ptr [rbp-0x140]
-       ; byrRegs +[rdi]
        mov      rsi, rax
        ; gcrRegs +[rsi]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rsi]
+       ; gcrRegs -[rax rcx rsi]
        ; byrRegs -[rdi]
        mov      rax, gword ptr [rbp-0xA8]
        ; gcrRegs +[rax]
@@ -1505,7 +1500,7 @@ G_M4474_IG52:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000100
        ; gcrRegs -[rax rdi]
        test     eax, eax
        je       SHORT G_M4474_IG59
-                       ;; size=178 bbWeight=0.04 PerfScore 1.99
+                       ;; size=162 bbWeight=0.04 PerfScore 1.91
 G_M4474_IG53:        ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0000 {}, byref, isz
        call     [<unknown method>]
        ; gcrRegs +[rax]
@@ -2761,7 +2756,7 @@ G_M4474_IG106:        ; bbWeight=0, gcVars=0000000000000000000000000000000000000
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 6351, prolog size 34, PerfScore 1464.70, instruction count 1383, allocated bytes for code 6351 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 6335, prolog size 34, PerfScore 1464.62, instruction count 1381, allocated bytes for code 6335 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
 ; ============================================================
 
 Unwind Info:

+0 (0.00%) : 18117.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rbp-0x68]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [rbp-0x4C] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rbp-0x70]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  r12         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  r12         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  rax        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  rax        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rsi         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r13        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rsi         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r13        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rbp-0x40]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rdi         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rsi         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rdi         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rsi         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rdi         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rsi         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rdi         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rsi         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rdi         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rsi         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rdi         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rsi         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rcx         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rsi         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rsi         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rsi         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rsi         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rsi         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rsi         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rsi         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rsi         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rdi         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r13         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rsi         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rsi         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rdi         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r13         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rsi         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rsi         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rdi         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rdi         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rsi         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rdi         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rsi         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rdi         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rsi         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rsi         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -235,8 +229,8 @@ G_M18379_IG11:        ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=4000
        mov      gword ptr [rbp-0x60], rax
        ; GC ptr vars +{V11}
        cmp      dword ptr [rbp-0x48], 0
-       jl       SHORT G_M18379_IG14
        mov      ecx, dword ptr [rbp-0x48]
+       jl       SHORT G_M18379_IG14
                        ;; size=22 bbWeight=0.50 PerfScore 4.12
 G_M18379_IG12:        ; bbWeight=4, gcVars=00000000000000000000000028000000 {V07 V11}, gcrefRegs=8008 {rbx r15}, byrefRegs=4000 {r14}, gcvars, byref, isz
        ; gcrRegs -[rax]

+0 (0.00%) : 18277.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T14] (  4,  5   )     int  ->  r14        
 ;  V07 loc4         [V07,T15] (  4,  5   )     int  ->  [rbp-0x34] 
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  rbx        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [rbp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->  rax        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [rbp-0x48]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T18] (  8,  4   )     int  ->  r13         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T23] (  3,  3   )     int  ->  r14         "Inlining Arg"
-;  V31 tmp19        [V31,T35] (  2,  2   )    long  ->  r14         "Inlining Arg"
+;  V31 tmp19        [V31,T33] (  2,  2   )    long  ->  r14         "Inlining Arg"
 ;  V32 tmp20        [V32,T22] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
 ;  V38 tmp26        [V38,T12] (  5,  5   )    long  ->  [rbp-0x50]  spill-single-def "Inlining Arg"
 ;* V39 tmp27        [V39    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V40 tmp28        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V41 tmp29        [V41,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V41 tmp29        [V41,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V42 tmp30        [V42,T09] (  3,  6   )     int  ->  r11         "Inline stloc first use temp"
 ;  V43 tmp31        [V43,T10] (  3,  6   )     int  ->  rdi         "Inline stloc first use temp"
 ;  V44 tmp32        [V44,T06] (  3, 12   )   byref  ->  rdi         "dup spill"
 ;* V45 tmp33        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp34        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V47 tmp35        [V47,T34] (  4,  2   )   byref  ->  r14         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp35        [V47,T32] (  4,  2   )   byref  ->  r14         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V49 tmp37        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V51 tmp39        [V51,T40] (  2,  1.50)     int  ->  [rbp-0x40]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V52 tmp40        [V52,T41] (  2,  1.50)     int  ->  [rbp-0x3C]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V51 tmp39        [V51,T38] (  2,  1.50)     int  ->  [rbp-0x40]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V52 tmp40        [V52,T39] (  2,  1.50)     int  ->  [rbp-0x3C]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V53 tmp41        [V53    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V54 tmp42        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V55 tmp43        [V55,T42] (  2,  1.50)     int  ->  [rbp-0x48]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V56 tmp44        [V56,T43] (  2,  1.50)     int  ->  [rbp-0x44]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V57 tmp45        [V57,T44] (  2,  1   )   byref  ->  r12         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp46        [V58,T45] (  2,  1   )     int  ->  r13         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V55 tmp43        [V55,T40] (  2,  1.50)     int  ->  [rbp-0x48]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V56 tmp44        [V56,T41] (  2,  1.50)     int  ->  [rbp-0x44]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V57 tmp45        [V57,T42] (  2,  1   )   byref  ->  r12         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp46        [V58,T43] (  2,  1   )     int  ->  r13         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V59 tmp47        [V59    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V60 tmp48        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
 ;* V64 tmp52        [V64    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x8)" P-INDEP
 ;  V65 tmp53        [V65,T16] (  3,  4.50)   byref  ->  r12         single-def "V05.[000..008)"
 ;  V66 tmp54        [V66,T17] (  3,  4.50)     int  ->  r13         single-def "V05.[008..012)"
-;  V67 tmp55        [V67,T37] (  3,  1.50)   byref  ->  r12         "V16.[000..008)"
-;  V68 tmp56        [V68,T39] (  3,  1.50)     int  ->  r13         "V16.[008..012)"
+;  V67 tmp55        [V67,T35] (  3,  1.50)   byref  ->  r12         "V16.[000..008)"
+;  V68 tmp56        [V68,T37] (  3,  1.50)     int  ->  r13         "V16.[008..012)"
 ;  V69 tmp57        [V69,T03] (  2, 16   )     ref  ->  rsi         "argument with side effect"
 ;  V70 GsCookie     [V70    ] (  1,  1   )    long  ->  [rbp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V71 PSPSym       [V71,T47] (  1,  1   )    long  ->  [rbp-0x80]  do-not-enreg[V] "PSPSym"
+;  V71 PSPSym       [V71,T44] (  1,  1   )    long  ->  [rbp-0x80]  do-not-enreg[V] "PSPSym"
 ;  V72 cse0         [V72,T11] (  3,  6   )     int  ->  rdi         "CSE - moderate"
-;  V73 rat0         [V73,T30] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
+;  V73 rat0         [V73,T29] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
 ;  V74 rat1         [V74,T26] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V75 rat2         [V75,T31] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
+;  V75 rat2         [V75,T30] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
 ;  V76 rat3         [V76,T27] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V77 rat4         [V77,T32] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
+;  V77 rat4         [V77,T31] (  3,  2.20)    long  ->  rsi         "Spilling to split statement for tree"
 ;  V78 rat5         [V78,T28] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V79 rat6         [V79,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V80 rat7         [V80,T46] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V81 rat8         [V81,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V82 rat9         [V82,T02] (  3, 17.60)    long  ->  rsi         "Spilling to split statement for tree"
-;  V83 rat10        [V83,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V84 rat11        [V84,T24] (  3,  3   )     int  ->  r14         "ReplaceWithLclVar is creating a new local variable"
-;  V85 rat12        [V85,T25] (  3,  3   )    long  ->  [rbp-0x58]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V79 rat6         [V79,T02] (  3, 17.60)    long  ->  rsi         "Spilling to split statement for tree"
+;  V80 rat7         [V80,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V81 rat8         [V81,T24] (  3,  3   )     int  ->  r14         "ReplaceWithLclVar is creating a new local variable"
+;  V82 rat9         [V82,T25] (  3,  3   )    long  ->  [rbp-0x58]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 88
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 1 0 0 1 -0 +0
benchmarks.run_pgo.linux.x64.checked.mch 1 1 0 0 -16 +0
benchmarks.run_tiered.linux.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.linux.x64.checked.mch 2 1 0 1 -28 +0
libraries.crossgen2.linux.x64.checked.mch 11 11 0 0 -218 +0
libraries.pmi.linux.x64.checked.mch 24 13 0 11 -183 +0
libraries_tests.run.linux.x64.Release.mch 42 33 3 6 -608 +33
librariestestsnotieredcompilation.run.linux.x64.Release.mch 11 7 0 4 -203 +0
realworld.run.linux.x64.checked.mch 4 2 0 2 -39 +0
smoke_tests.nativeaot.linux.x64.checked.mch 0 0 0 0 -0 +0
96 68 3 25 -1,295 +33

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.x64.checked.mch 34,999 3,164 31,835 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.linux.x64.checked.mch 155,971 58,399 97,572 149 (0.10%) 149 (0.10%)
benchmarks.run_tiered.linux.x64.checked.mch 58,890 44,312 14,578 0 (0.00%) 0 (0.00%)
coreclr_tests.run.linux.x64.checked.mch 694,088 429,241 264,847 325 (0.05%) 325 (0.05%)
libraries.crossgen2.linux.x64.checked.mch 233,626 15 233,611 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 295,421 6 295,415 1 (0.00%) 1 (0.00%)
libraries_tests.run.linux.x64.Release.mch 756,825 495,271 261,554 3,118 (0.41%) 3,118 (0.41%)
librariestestsnotieredcompilation.run.linux.x64.Release.mch 304,609 21,873 282,736 6 (0.00%) 6 (0.00%)
realworld.run.linux.x64.checked.mch 33,167 39 33,128 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.linux.x64.checked.mch 27,440 9 27,431 0 (0.00%) 0 (0.00%)
2,595,036 1,052,329 1,542,707 3,599 (0.14%) 3,599 (0.14%)

jit-analyze output

benchmarks.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13736868 (overridden on cmd)
Total bytes of diff: 13736868 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.

0 total methods with Code Size differences (0 improved, 0 regressed).


benchmarks.run_pgo.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 66799627 (overridden on cmd)
Total bytes of diff: 66799611 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -16 : 92706.dasm (-1.63 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -16 (-1.63 % of base) : 92706.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)

Top method improvements (percentages):
         -16 (-1.63 % of base) : 92706.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)

1 total methods with Code Size differences (1 improved, 0 regressed).


coreclr_tests.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 458907683 (overridden on cmd)
Total bytes of diff: 458907655 (overridden on cmd)
Total bytes of delta: -28 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -28 : 677717.dasm (-3.73 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -28 (-3.73 % of base) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

Top method improvements (percentages):
         -28 (-3.73 % of base) : 677717.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

1 total methods with Code Size differences (1 improved, 0 regressed).


libraries.crossgen2.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 38668470 (overridden on cmd)
Total bytes of diff: 38668252 (overridden on cmd)
Total bytes of delta: -218 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -50 : 24209.dasm (-3.85 % of base)
         -37 : 122000.dasm (-0.79 % of base)
         -29 : 44278.dasm (-1.34 % of base)
         -23 : 202570.dasm (-1.47 % of base)
         -23 : 204659.dasm (-1.49 % of base)
         -10 : 135209.dasm (-0.49 % of base)
         -10 : 135208.dasm (-0.60 % of base)
         -10 : 127542.dasm (-0.60 % of base)
         -10 : 127543.dasm (-0.48 % of base)
          -8 : 122495.dasm (-2.22 % of base)
          -8 : 44551.dasm (-0.19 % of base)

11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -50 (-3.85 % of base) : 24209.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -37 (-0.79 % of base) : 122000.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -29 (-1.34 % of base) : 44278.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -23 (-1.49 % of base) : 204659.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -23 (-1.47 % of base) : 202570.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
         -10 (-0.60 % of base) : 135208.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.60 % of base) : 127542.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.49 % of base) : 135209.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-0.48 % of base) : 127543.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.19 % of base) : 44551.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -8 (-2.22 % of base) : 122495.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)

Top method improvements (percentages):
         -50 (-3.85 % of base) : 24209.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
          -8 (-2.22 % of base) : 122495.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -23 (-1.49 % of base) : 204659.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -23 (-1.47 % of base) : 202570.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
         -29 (-1.34 % of base) : 44278.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -37 (-0.79 % of base) : 122000.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -10 (-0.60 % of base) : 135208.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.60 % of base) : 127542.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.49 % of base) : 135209.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-0.48 % of base) : 127543.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.19 % of base) : 44551.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

11 total methods with Code Size differences (11 improved, 0 regressed).


libraries.pmi.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 59972922 (overridden on cmd)
Total bytes of diff: 59972739 (overridden on cmd)
Total bytes of delta: -183 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -38 : 14177.dasm (-2.39 % of base)
         -27 : 36963.dasm (-0.67 % of base)
         -26 : 260701.dasm (-1.40 % of base)
         -12 : 37243.dasm (-0.27 % of base)
         -11 : 281851.dasm (-1.34 % of base)
         -10 : 138592.dasm (-0.48 % of base)
         -10 : 147195.dasm (-0.59 % of base)
         -10 : 147196.dasm (-0.49 % of base)
         -10 : 138591.dasm (-0.58 % of base)
          -8 : 20949.dasm (-0.15 % of base)
          -8 : 20946.dasm (-0.18 % of base)
          -7 : 84554.dasm (-1.00 % of base)
          -6 : 195324.dasm (-0.10 % of base)

13 total files with Code Size differences (13 improved, 0 regressed), 11 unchanged.

Top method improvements (bytes):
         -38 (-2.39 % of base) : 14177.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -27 (-0.67 % of base) : 36963.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -26 (-1.40 % of base) : 260701.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -12 (-0.27 % of base) : 37243.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
         -11 (-1.34 % of base) : 281851.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -10 (-0.59 % of base) : 147195.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.58 % of base) : 138591.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.48 % of base) : 138592.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-0.49 % of base) : 147196.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.15 % of base) : 20949.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -8 (-0.18 % of base) : 20946.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -7 (-1.00 % of base) : 84554.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
          -6 (-0.10 % of base) : 195324.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

Top method improvements (percentages):
         -38 (-2.39 % of base) : 14177.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -26 (-1.40 % of base) : 260701.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -11 (-1.34 % of base) : 281851.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -7 (-1.00 % of base) : 84554.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
         -27 (-0.67 % of base) : 36963.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -10 (-0.59 % of base) : 147195.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.58 % of base) : 138591.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.49 % of base) : 147196.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-0.48 % of base) : 138592.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -12 (-0.27 % of base) : 37243.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -8 (-0.18 % of base) : 20946.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -8 (-0.15 % of base) : 20949.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -6 (-0.10 % of base) : 195324.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

13 total methods with Code Size differences (13 improved, 0 regressed).


libraries_tests.run.linux.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 330797007 (overridden on cmd)
Total bytes of diff: 330796432 (overridden on cmd)
Total bytes of delta: -575 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          16 : 38696.dasm (0.17 % of base)
          13 : 375790.dasm (1.68 % of base)
           4 : 338153.dasm (0.51 % of base)

Top file improvements (bytes):
         -51 : 290466.dasm (-1.93 % of base)
         -34 : 733262.dasm (-1.32 % of base)
         -30 : 98224.dasm (-1.15 % of base)
         -30 : 347447.dasm (-1.16 % of base)
         -30 : 407618.dasm (-1.16 % of base)
         -30 : 369617.dasm (-1.17 % of base)
         -30 : 451471.dasm (-1.15 % of base)
         -30 : 454105.dasm (-1.15 % of base)
         -27 : 242113.dasm (-1.08 % of base)
         -27 : 247849.dasm (-1.04 % of base)
         -27 : 381820.dasm (-1.09 % of base)
         -27 : 602983.dasm (-1.04 % of base)
         -26 : 460619.dasm (-0.78 % of base)
         -23 : 71201.dasm (-0.18 % of base)
         -22 : 726995.dasm (-1.81 % of base)
         -17 : 177905.dasm (-1.01 % of base)
         -17 : 690002.dasm (-0.99 % of base)
         -17 : 137245.dasm (-0.68 % of base)
         -17 : 183403.dasm (-0.99 % of base)
         -16 : 185770.dasm (-1.29 % of base)

35 total files with Code Size differences (32 improved, 3 regressed), 6 unchanged.

Top method regressions (bytes):
          16 (0.17 % of base) : 38696.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
          13 (1.68 % of base) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
           4 (0.51 % of base) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method improvements (bytes):
         -51 (-1.93 % of base) : 290466.dasm - Interop+procfs:ParseMapsModulesCore(System.Collections.Generic.IEnumerable`1[System.String]):System.Diagnostics.ProcessModuleCollection (Tier1)
         -34 (-1.32 % of base) : 733262.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.15 % of base) : 98224.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.16 % of base) : 347447.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.16 % of base) : 407618.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.17 % of base) : 369617.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.15 % of base) : 451471.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.15 % of base) : 454105.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -27 (-1.08 % of base) : 242113.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -27 (-1.04 % of base) : 247849.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -27 (-1.09 % of base) : 381820.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -27 (-1.04 % of base) : 602983.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -26 (-0.78 % of base) : 460619.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
         -23 (-0.18 % of base) : 71201.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
         -22 (-1.81 % of base) : 726995.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
         -17 (-1.01 % of base) : 177905.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -17 (-0.99 % of base) : 690002.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -17 (-0.99 % of base) : 183403.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -17 (-0.68 % of base) : 137245.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -16 (-1.29 % of base) : 185770.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

Top method regressions (percentages):
          13 (1.68 % of base) : 375790.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
           4 (0.51 % of base) : 338153.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          16 (0.17 % of base) : 38696.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)

Top method improvements (percentages):
         -51 (-1.93 % of base) : 290466.dasm - Interop+procfs:ParseMapsModulesCore(System.Collections.Generic.IEnumerable`1[System.String]):System.Diagnostics.ProcessModuleCollection (Tier1)
         -22 (-1.81 % of base) : 726995.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
         -34 (-1.32 % of base) : 733262.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -16 (-1.29 % of base) : 185770.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
         -30 (-1.17 % of base) : 369617.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.16 % of base) : 347447.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.16 % of base) : 407618.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.15 % of base) : 451471.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.15 % of base) : 454105.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -30 (-1.15 % of base) : 98224.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -27 (-1.09 % of base) : 381820.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -27 (-1.08 % of base) : 242113.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -27 (-1.04 % of base) : 247849.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -27 (-1.04 % of base) : 602983.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -17 (-1.01 % of base) : 177905.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -17 (-0.99 % of base) : 690002.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -17 (-0.99 % of base) : 183403.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -11 (-0.91 % of base) : 91661.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
         -26 (-0.78 % of base) : 460619.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
         -17 (-0.68 % of base) : 137245.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)


librariestestsnotieredcompilation.run.linux.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 129999045 (overridden on cmd)
Total bytes of diff: 129998842 (overridden on cmd)
Total bytes of delta: -203 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
        -131 : 300445.dasm (-4.39 % of base)
         -26 : 61464.dasm (-1.40 % of base)
         -11 : 152537.dasm (-1.43 % of base)
         -11 : 149488.dasm (-1.44 % of base)
         -10 : 178586.dasm (-0.59 % of base)
          -8 : 97920.dasm (-1.83 % of base)
          -6 : 97771.dasm (-0.10 % of base)

7 total files with Code Size differences (7 improved, 0 regressed), 4 unchanged.

Top method improvements (bytes):
        -131 (-4.39 % of base) : 300445.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -26 (-1.40 % of base) : 61464.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -11 (-1.43 % of base) : 152537.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -11 (-1.44 % of base) : 149488.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -10 (-0.59 % of base) : 178586.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-1.83 % of base) : 97920.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -6 (-0.10 % of base) : 97771.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

Top method improvements (percentages):
        -131 (-4.39 % of base) : 300445.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
          -8 (-1.83 % of base) : 97920.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -11 (-1.44 % of base) : 149488.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -11 (-1.43 % of base) : 152537.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -26 (-1.40 % of base) : 61464.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -10 (-0.59 % of base) : 178586.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -6 (-0.10 % of base) : 97771.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

7 total methods with Code Size differences (7 improved, 0 regressed).


realworld.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13194305 (overridden on cmd)
Total bytes of diff: 13194266 (overridden on cmd)
Total bytes of delta: -39 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -23 : 13016.dasm (-0.30 % of base)
         -16 : 32808.dasm (-0.25 % of base)

2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.

Top method improvements (bytes):
         -23 (-0.30 % of base) : 13016.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         -16 (-0.25 % of base) : 32808.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

Top method improvements (percentages):
         -23 (-0.30 % of base) : 13016.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         -16 (-0.25 % of base) : 32808.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

2 total methods with Code Size differences (2 improved, 0 regressed).



osx arm64

Diffs are based on 2,262,764 contexts (930,876 MinOpts, 1,331,888 FullOpts).

MISSED contexts: 3,201 (0.14%)

Overall (-672 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,180,928 +0
coreclr_tests.run.osx.arm64.checked.mch 485,345,676 -24
libraries.crossgen2.osx.arm64.checked.mch 55,620,496 -108
libraries.pmi.osx.arm64.checked.mch 79,959,756 -124
libraries_tests.run.osx.arm64.Release.mch 312,760,116 -316
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 160,789,980 -80
realworld.run.osx.arm64.checked.mch 15,071,744 -20

FullOpts (-672 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,180,392 +0
coreclr_tests.run.osx.arm64.checked.mch 153,039,220 -24
libraries.crossgen2.osx.arm64.checked.mch 55,618,868 -108
libraries.pmi.osx.arm64.checked.mch 79,838,628 -124
libraries_tests.run.osx.arm64.Release.mch 108,819,612 -316
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 147,652,452 -80
realworld.run.osx.arm64.checked.mch 14,503,340 -20

Example diffs

benchmarks.run.osx.arm64.checked.mch

+0 (0.00%) : 17518.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

coreclr_tests.run.osx.arm64.checked.mch

-24 (-2.33%) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]):this (FullOpts)

@@ -8,78 +8,74 @@
 ; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] ( 14,1267   )     ref  ->  x19         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T08] ( 18,1118   )     ref  ->  x20         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T09] ( 13,1139   )     ref  ->  x20         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T07] ( 18,1118   )     ref  ->  x19         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T04] (  8,1328   )     ref  ->  x23         class-hnd <<unknown class>>
 ;* V03 loc1         [V03    ] (  0,   0   )  struct (16) zero-ref    multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;* V04 loc2         [V04    ] (  0,   0   )  struct (16) zero-ref    multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct (16) zero-ref    multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T09] (  9,1216   )     ref  ->  x23         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T08] (  9,1216   )     ref  ->  x23         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T10] (  5, 896   )     ref  ->  x25         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;# V08 OutArgs      [V08    ] (  1,   1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T34] (  3,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T30] (  3,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V13 tmp5         [V13    ] (  0,   0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V14 tmp6         [V14,T22] (  3, 192   )     ref  ->  x23         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V14 tmp6         [V14,T18] (  3, 192   )     ref  ->  x23         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V15 tmp7         [V15    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp8         [V16    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp9         [V17,T31] (  4,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T27] (  4,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V18 tmp10        [V18    ] (  0,   0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V19 tmp11        [V19,T36] (  3,  43.88)     int  ->  x24         "impAppendStmt"
-;  V20 tmp12        [V20,T30] (  7,  64   )     ref  ->  x23         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V21 tmp13        [V21,T43] (  4,  20   )     int  ->  x24         "Inline stloc first use temp"
-;  V22 tmp14        [V22,T44] (  3,  18   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V23 tmp15        [V23,T45] (  3,  16   )     int  ->   x0         "Inline return value spill temp"
-;  V24 tmp16        [V24,T38] (  3,  36.12)     int  ->   x0         "Inlining Arg"
-;  V25 tmp17        [V25,T24] (  7, 160   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V26 tmp18        [V26,T32] (  4,  48   )     int  ->   x3         "Inline stloc first use temp"
-;  V27 tmp19        [V27,T37] (  3,  40   )     ref  ->  x14         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T32] (  3,  43.88)     int  ->  x24         "impAppendStmt"
+;  V20 tmp12        [V20,T26] (  7,  64   )     ref  ->  x23         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V21 tmp13        [V21,T39] (  4,  20   )     int  ->  x24         "Inline stloc first use temp"
+;  V22 tmp14        [V22,T40] (  3,  18   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V23 tmp15        [V23,T41] (  3,  16   )     int  ->   x0         "Inline return value spill temp"
+;  V24 tmp16        [V24,T34] (  3,  36.12)     int  ->   x0         "Inlining Arg"
+;  V25 tmp17        [V25,T20] (  7, 160   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V26 tmp18        [V26,T28] (  4,  48   )     int  ->   x3         "Inline stloc first use temp"
+;  V27 tmp19        [V27,T33] (  3,  40   )     ref  ->  x14         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V28 tmp20        [V28    ] (  0,   0   )  struct (16) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V29 tmp21        [V29,T20] (  3, 256   )     int  ->  x11         "Inline return value spill temp"
-;  V30 tmp22        [V30,T13] (  3, 702.09)     int  ->   x0         "Inlining Arg"
-;  V31 tmp23        [V31,T16] (  3, 577.91)     int  ->  x11         "Inlining Arg"
-;  V32 tmp24        [V32,T14] (  3, 628.79)     ref  ->   x2         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V29 tmp21        [V29,T17] (  3, 256   )     int  ->  x11         "Inline return value spill temp"
+;  V30 tmp22        [V30,T12] (  3, 702.09)     int  ->   x0         "Inlining Arg"
+;  V31 tmp23        [V31,T14] (  3, 577.91)     int  ->  x11         "Inlining Arg"
+;  V32 tmp24        [V32,T13] (  3, 628.79)     ref  ->   x2         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V33 tmp25        [V33,T11] (  4, 745.57)     int  ->   x0         "Inline stloc first use temp"
-;  V34 tmp26        [V34,T19] (  7, 384   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V35 tmp27        [V35,T29] (  3,  93.20)     ref  ->   x3         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V36 tmp28        [V36,T28] (  4, 122.39)     int  ->   x2         "Inline stloc first use temp"
+;  V34 tmp26        [V34,T16] (  7, 384   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V35 tmp27        [V35,T25] (  3,  93.20)     ref  ->   x3         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V36 tmp28        [V36,T24] (  4, 122.39)     int  ->   x2         "Inline stloc first use temp"
 ;* V37 tmp29        [V37    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V38 tmp30        [V38,T46] (  2,  16   )     ref  ->  x20         "field V03.Vertex (fldOffset=0x0)" P-INDEP
-;  V39 tmp31        [V39,T47] (  2,  16   )     ref  ->  x23         "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V38 tmp30        [V38,T42] (  2,  16   )     ref  ->  x19         "field V03.Vertex (fldOffset=0x0)" P-INDEP
+;  V39 tmp31        [V39,T43] (  2,  16   )     ref  ->  x23         "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;  V40 tmp32        [V40,T05] (  5,1424   )     ref  ->  x25         "field V04.Destination (fldOffset=0x0)" P-INDEP
-;  V41 tmp33        [V41,T18] (  1, 512   )   ubyte  ->   x1         "field V04.Flagged (fldOffset=0x8)" P-INDEP
-;  V42 tmp34        [V42,T41] (  3,  32   )     ref  ->   x1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V43 tmp35        [V43,T42] (  3,  32   )     ref  ->   x2         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V41 tmp33        [V41,T15] (  1, 512   )   ubyte  ->   x1         "field V04.Flagged (fldOffset=0x8)" P-INDEP
+;  V42 tmp34        [V42,T37] (  3,  32   )     ref  ->   x1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V43 tmp35        [V43,T38] (  3,  32   )     ref  ->   x2         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;* V44 tmp36        [V44    ] (  0,   0   )     ref  ->  zero-ref    "field V13.Destination (fldOffset=0x0)" P-DEP
 ;* V45 tmp37        [V45    ] (  0,   0   )   ubyte  ->  zero-ref    "field V13.Flagged (fldOffset=0x8)" P-DEP
-;  V46 tmp38        [V46,T48] (  2,  16   )     ref  ->   x0         "field V18.Destination (fldOffset=0x0)" P-INDEP
-;  V47 tmp39        [V47,T51] (  1,   8   )   ubyte  ->   x1         "field V18.Flagged (fldOffset=0x8)" P-INDEP
+;  V46 tmp38        [V46,T44] (  2,  16   )     ref  ->   x0         "field V18.Destination (fldOffset=0x0)" P-INDEP
+;  V47 tmp39        [V47,T47] (  1,   8   )   ubyte  ->   x1         "field V18.Flagged (fldOffset=0x8)" P-INDEP
 ;* V48 tmp40        [V48    ] (  0,   0   )     ref  ->  zero-ref    "field V28.Vertex (fldOffset=0x0)" P-INDEP
 ;* V49 tmp41        [V49    ] (  0,   0   )     ref  ->  zero-ref    "field V28.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-;  V50 tmp42        [V50,T33] (  3,  48   )   byref  ->   x4         "BlockOp address local"
-;  V51 cse0         [V51,T50] (  2,   9   )    long  ->  x22         hoist "CSE - moderate"
-;  V52 cse1         [V52,T40] (  4,  32   )     int  ->   x1         "CSE - moderate"
+;  V50 tmp42        [V50,T29] (  3,  48   )   byref  ->   x4         "BlockOp address local"
+;  V51 cse0         [V51,T46] (  2,   9   )    long  ->  x22         hoist "CSE - moderate"
+;  V52 cse1         [V52,T36] (  4,  32   )     int  ->   x1         "CSE - moderate"
 ;  V53 cse2         [V53,T06] (  3,1280   )    long  ->  x24         "CSE - aggressive"
-;  V54 cse3         [V54,T49] (  4,  12.88)    long  ->  x21         hoist "CSE - moderate"
-;  V55 rat0         [V55,T53] (  3,   4.72)    long  ->   x0         "Spilling to split statement for tree"
-;  V56 rat1         [V56,T55] (  3,   4   )    long  ->  x22         "runtime lookup"
-;  V57 rat2         [V57,T52] (  3,   5.60)    long  ->   x1         "spilling expr"
-;  V58 rat3         [V58,T54] (  3,   4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V59 rat4         [V59,T35] (  3,  44.80)    long  ->   x0         "spilling expr"
-;  V60 rat5         [V60,T39] (  3,  35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V61 rat6         [V61,T15] (  2, 512   )    long  ->   x0         "Spilling to split statement for tree"
-;* V62 rat7         [V62,T21] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;  V63 rat8         [V63,T12] (  2, 512   )    long  ->   x0         "spilling expr"
-;* V64 rat9         [V64,T17] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V65 rat10        [V65,T02] (  3,2416.64)    long  ->   x0         "Spilling to split statement for tree"
-;  V66 rat11        [V66,T01] (  3,2867.20)    long  ->   x1         "spilling expr"
-;  V67 rat12        [V67,T03] (  3,2293.76)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V68 rat13        [V68,T25] (  3, 151.04)    long  ->   x0         "Spilling to split statement for tree"
-;  V69 rat14        [V69,T27] (  3, 128   )    long  ->   x1         "runtime lookup"
-;  V70 rat15        [V70,T23] (  3, 179.20)    long  ->   x1         "spilling expr"
-;  V71 rat16        [V71,T26] (  3, 143.36)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V54 cse3         [V54,T45] (  4,  12.88)    long  ->  x21         "CSE - moderate"
+;  V55 rat0         [V55,T49] (  3,   4.72)    long  ->   x0         "Spilling to split statement for tree"
+;  V56 rat1         [V56,T51] (  3,   4   )    long  ->  x22         "runtime lookup"
+;  V57 rat2         [V57,T48] (  3,   5.60)    long  ->   x1         "spilling expr"
+;  V58 rat3         [V58,T50] (  3,   4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
+;  V59 rat4         [V59,T31] (  3,  44.80)    long  ->   x0         "spilling expr"
+;  V60 rat5         [V60,T35] (  3,  35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V61 rat6         [V61,T02] (  3,2416.64)    long  ->   x0         "Spilling to split statement for tree"
+;  V62 rat7         [V62,T01] (  3,2867.20)    long  ->   x1         "spilling expr"
+;  V63 rat8         [V63,T03] (  3,2293.76)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V64 rat9         [V64,T21] (  3, 151.04)    long  ->   x0         "Spilling to split statement for tree"
+;  V65 rat10        [V65,T23] (  3, 128   )    long  ->   x1         "runtime lookup"
+;  V66 rat11        [V66,T19] (  3, 179.20)    long  ->   x1         "spilling expr"
+;  V67 rat12        [V67,T22] (  3, 143.36)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 8
 
@@ -91,13 +87,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             str     x25, [sp, #0x48]
             mov     fp, sp
             str     x0, [fp, #0x10]
-            mov     x19, x0
-            ; gcrRegs +[x19]
-            mov     x20, x1
+            mov     x20, x0
             ; gcrRegs +[x20]
+            mov     x19, x1
+            ; gcrRegs +[x19]
                        ;; size=36 bbWeight=1 PerfScore 7.50
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x21, [x19]
+            ldr     x21, [x20]
             mov     x0, x21
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
@@ -121,11 +117,11 @@ G_M1799_IG05:        ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
             mov     x22, x0
                        ;; size=20 bbWeight=0.36 PerfScore 1.08
 G_M1799_IG06:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     w1, [x19, #0x28]
-            stp     w1, w1, [x20, #0x18]
+            ldr     w1, [x20, #0x28]
+            stp     w1, w1, [x19, #0x18]
             add     w1, w1, #1
-            str     w1, [x19, #0x28]
-            ldr     x23, [x19, #0x08]
+            str     w1, [x20, #0x28]
+            ldr     x23, [x20, #0x08]
             ; gcrRegs +[x23]
             ldr     w24, [x23, #0x10]
             ldr     x0, [x23, #0x08]
@@ -136,7 +132,7 @@ G_M1799_IG06:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
                        ;; size=40 bbWeight=8 PerfScore 152.00
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
             sxtw    x1, w24
-            mov     x2, x20
+            mov     x2, x19
             ; gcrRegs +[x2]
             bl      CORINFO_HELP_ARRADDR_ST
             ; gcrRegs -[x0 x2]
@@ -151,7 +147,7 @@ G_M1799_IG07:        ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=
 G_M1799_IG08:        ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
             mov     x0, x23
             ; gcrRegs +[x0]
-            mov     x1, x20
+            mov     x1, x19
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
@@ -163,9 +159,9 @@ G_M1799_IG08:        ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
                        ;; size=28 bbWeight=2 PerfScore 13.00
 G_M1799_IG09:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     w0, #1
-            strb    w0, [x20, #0x22]
+            strb    w0, [x19, #0x22]
             mov     x11, x22
-            ldr     x0, [x20, #0x10]
+            ldr     x0, [x19, #0x10]
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
@@ -174,9 +170,9 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
             ; gcrRegs +[x23]
             cbnz    x23, G_M1799_IG17
                        ;; size=32 bbWeight=8 PerfScore 84.00
-G_M1799_IG10:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x20 x23]
-            ldr     x0, [x19, #0x20]
+G_M1799_IG10:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0 x19 x23]
+            ldr     x0, [x20, #0x20]
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
             movk    x1, #0xD1FFAB1E LSL #16
@@ -186,8 +182,8 @@ G_M1799_IG10:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
             blr     x1
             ; gcrRegs +[x1]
             ; gcr arg pop 0
-            mov     x20, x0
-            ; gcrRegs +[x20]
+            mov     x19, x0
+            ; gcrRegs +[x19]
             mov     x23, x1
             ; gcrRegs +[x23]
             ldr     x0, [x21, #0x38]
@@ -203,7 +199,7 @@ G_M1799_IG11:        ; bbWeight=6.40, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
             cbz     x11, G_M1799_IG14
                        ;; size=8 bbWeight=6.40 PerfScore 25.60
 G_M1799_IG12:        ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     w24, [x20, #0x1C]
+            ldr     w24, [x19, #0x1C]
             mov     x0, x23
             ; gcrRegs +[x0]
             ldr     x1, [x11]
@@ -231,7 +227,7 @@ G_M1799_IG15:        ; bbWeight=5.94, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
             sxtw    w0, w24
                        ;; size=4 bbWeight=5.94 PerfScore 2.97
 G_M1799_IG16:        ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
-            str     w0, [x20, #0x1C]
+            str     w0, [x19, #0x1C]
                        ;; size=4 bbWeight=8 PerfScore 8.00
 G_M1799_IG17:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
             mov     x0, x23
@@ -244,32 +240,24 @@ G_M1799_IG17:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M1799_IG30
+            cbz     w0, G_M1799_IG29
                        ;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG18:        ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x19]
-            ldr     x0, [x0, #0x38]
-            ldr     x0, [x0]
-            ldr     x0, [x0, #0x08]
-            cmp     x0, #48
-            ble     G_M1799_IG19
-                       ;; size=24 bbWeight=128 PerfScore 1728.00
-G_M1799_IG19:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x19]
+G_M1799_IG18:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x20]
...

+0 (0.00%) : 490843.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

libraries.crossgen2.osx.arm64.checked.mch

-8 (-1.82%) : 165743.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V06 tmp1         [V06,T00] (  6, 20   )   byref  ->  x25         "impAppendStmt"
 ;  V07 tmp2         [V07,T05] (  6,  8   )   byref  ->  x26        
 ;  V08 tmp3         [V08,T02] (  6, 12   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V09 tmp4         [V09,T11] (  4,  4   )     int  ->  registers  
+;  V09 tmp4         [V09,T11] (  2,  3.96)     int  ->   x0        
 ;  V10 tmp5         [V10,T06] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V11 cse0         [V11,T03] (  4, 11.88)    long  ->  x21         "CSE - aggressive"
 ;  V12 cse1         [V12,T08] (  5,  7   )     int  ->  x23         "CSE - aggressive"
@@ -109,8 +109,8 @@ G_M22994_IG06:        ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
             ; byrRegs -[x26]
             ; gcr arg pop 0
             cmp     w0, #0
-            cset    x21, eq
-            cbnz    w21, G_M22994_IG16
+            cset    x0, eq
+            cbnz    w0, G_M22994_IG16
                        ;; size=56 bbWeight=1.98 PerfScore 36.63
 G_M22994_IG07:        ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
             add     w22, w22, #1
@@ -187,10 +187,8 @@ G_M22994_IG12:        ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             ; gcrRegs -[x0-x1]
             ; byrRegs -[x26]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x0, eq
-            cbnz    w0, G_M22994_IG16
-                       ;; size=68 bbWeight=0.02 PerfScore 0.46
+            cbz     w0, G_M22994_IG16
+                       ;; size=60 bbWeight=0.02 PerfScore 0.44
 G_M22994_IG13:        ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             add     w22, w22, #1
             cmp     w23, w22
@@ -228,7 +226,7 @@ G_M22994_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_unix #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 440, prolog size 40, PerfScore 120.21, instruction count 110, allocated bytes for code 440 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 432, prolog size 40, PerfScore 120.19, instruction count 108, allocated bytes for code 432 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -239,7 +237,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 110 (0x0006e) Actual length = 440 (0x0001b8)
+  Function Length   : 108 (0x0006c) Actual length = 432 (0x0001b0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-0.73%) : 109526.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport

@@ -68,7 +68,6 @@
 ;  V56 cse0         [V56,T04] ( 17, 12.50)   byref  ->  x23         "CSE - aggressive"
 ;  V57 cse1         [V57,T26] (  4,  5   )    long  ->  x26         "CSE - moderate"
 ;  V58 cse2         [V58,T13] (  8,  8   )    long  ->  [fp+0x70]  multi-def "CSE - moderate"
-;  TEMP_01                                   byref  ->  [fp+0x10]
 ;
 ; Lcl frame size = 160
 
@@ -80,19 +79,17 @@ G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x25, x26, [sp, #0xE0]
             stp     x27, x28, [sp, #0xF0]
             mov     fp, sp
-            add     x9, fp, #16
+            add     x9, fp, #120
             movi    v16.16b, #0
             stp     q16, q16, [x9]
-            stp     q16, q16, [x9, #0x20]
-            stp     q16, q16, [x9, #0x40]
-            stp     q16, q16, [x9, #0x60]
-            stp     q16, q16, [x9, #0x80]
+            stp     xzr, xzr, [x9, #0x20]
+            str     xzr, [x9, #0x30]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
             mov     x21, xzr
-                       ;; size=68 bbWeight=1 PerfScore 14.00
+                       ;; size=60 bbWeight=1 PerfScore 12.00
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x21]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
@@ -880,8 +877,8 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ldr     x1, [x11]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x0
-            ; gcrRegs +[x1]
+            str     x0, [fp, #0x50]    // [V32 tmp17]
+            ; GC ptr vars +{V32}
             ldr     w0, [x22, #0x08]
             ; gcrRegs -[x0]
             cmp     w28, w0
@@ -892,11 +889,6 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ; gcrRegs +[x15]
             str     x15, [fp, #0x18]   // [V45 tmp30]
             ; GC ptr vars +{V45}
-            str     x1, [fp, #0x50]    // [V32 tmp17]
-            ; GC ptr vars +{V32}
-            add     x14, x1, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x10]   // [TEMP_01]
             ldr     x0, [fp, #0x68]    // [V12 loc10]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
@@ -904,8 +896,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x3, [x11]
             blr     x3
-            ; gcrRegs -[x1 x15]
-            ; byrRegs -[x14]
+            ; gcrRegs -[x15]
             ldr     x1, [fp, #0x68]    // [V12 loc10]
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -915,18 +906,19 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ; GC ptr vars -{V12}
             blr     x2
             ; gcrRegs -[x1]
-            ldr     x14, [fp, #0x10]   // [TEMP_01]
+            ldr     x11, [fp, #0x50]   // [V32 tmp17]
+            ; gcrRegs +[x11]
+            add     x14, x11, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             adrp    x12, [HIGH RELOC #0xD1FFAB1E]      // CORINFO_HELP_ASSIGN_REF
             add     x12, x12, [LOW RELOC #0xD1FFAB1E]
             ldr     x12, [x12]
+            ; GC ptr vars -{V32}
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x11, [fp, #0x50]   // [V32 tmp17]
-            ; gcrRegs +[x11]
             add     x14, x11, #16
             ; byrRegs +[x14]
             ldr     x15, [fp, #0x18]   // [V45 tmp30]
@@ -934,7 +926,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             adrp    x12, [HIGH RELOC #0xD1FFAB1E]      // CORINFO_HELP_ASSIGN_REF
             add     x12, x12, [LOW RELOC #0xD1FFAB1E]
             ldr     x12, [x12]
-            ; GC ptr vars -{V32 V45}
+            ; GC ptr vars -{V45}
             blr     x12
             ; gcrRegs -[x15]
             ; byrRegs -[x14]
@@ -997,7 +989,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ldr     x2, [x23, #0xD1FFAB1E]
             ; gcrRegs +[x2]
             b       G_M28747_IG21
-                       ;; size=312 bbWeight=0.02 PerfScore 2.02
+                       ;; size=300 bbWeight=0.02 PerfScore 1.95
 G_M28747_IG20:        ; bbWeight=0.02, gcrefRegs=3780000 {x19 x20 x21 x22 x24 x25}, byrefRegs=800000 {x23}, byref
             ; gcrRegs -[x2 x11]
             ldr     x1, [x23, #0xD1FFAB1E]
@@ -1107,7 +1099,7 @@ G_M28747_IG26:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_unix #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2740, prolog size 56, PerfScore 783.17, instruction count 685, allocated bytes for code 2740 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
+; Total bytes of code 2720, prolog size 48, PerfScore 781.10, instruction count 680, allocated bytes for code 2720 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1118,7 +1110,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 685 (0x002ad) Actual length = 2740 (0x000ab4)
+  Function Length   : 680 (0x002a8) Actual length = 2720 (0x000aa0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.68%) : 89908.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -12,7 +12,7 @@
 ;  V00 arg0         [V00,T19] (  5,  5   )     ref  ->   x0         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T10] (  6, 11   )     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T13] (  4,  6   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
 ;  V04 loc1         [V04,T11] (  7, 10.04)     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T20] (  5,  7   )     int  ->  x23         single-def
 ;  V06 loc3         [V06,T03] ( 16, 25.04)     int  ->  x24        
@@ -20,13 +20,13 @@
 ;  V08 loc5         [V08,T08] ( 10, 16   )     ref  ->  x27         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
 ;  V10 loc7         [V10,T12] (  8,  8   )     ref  ->  x26         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T22] (  3,  6   )     int  ->  x20         single-def
 ;  V13 loc10        [V13,T04] (  7, 21   )     int  ->  x21        
 ;  V14 loc11        [V14,T01] (  6, 72   )     ref  ->  x24         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
 ;  V15 loc12        [V15,T00] (  6, 86   )     int  ->   x0        
 ;  V16 loc13        [V16,T23] (  2,  4   )     ref  ->  x24         class-hnd <<unknown class>>
-;  V17 loc14        [V17    ] (  4,  8   )  struct ( 8) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
+;  V17 loc14        [V17    ] (  4,  8   )  struct ( 8) [fp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
 ;  V18 loc15        [V18,T24] (  2,  4   )     ref  ->  x24         class-hnd <<unknown class>>
 ;# V19 OutArgs      [V19    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V20 tmp1         [V20,T05] ( 10, 20   )     ref  ->  x27         class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
@@ -35,7 +35,7 @@
 ;* V23 tmp4         [V23    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;  V24 tmp5         [V24,T14] (  4,  8   )     ref  ->   x0         class-hnd "Inlining Arg" <System.String>
 ;* V25 tmp6         [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.AliasSymbol>
-;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
 ;  V27 tmp8         [V27,T25] (  2,  4   )     ref  ->   x1         "field V22.array (fldOffset=0x0)" P-INDEP
 ;  V28 tmp9         [V28,T26] (  2,  4   )     ref  ->   x1         "field V23.array (fldOffset=0x0)" P-INDEP
 ;  V29 tmp10        [V29,T27] (  2,  4   )     ref  ->   x0         single-def "argument with side effect"
@@ -47,27 +47,27 @@
 ;  V35 tmp16        [V35,T18] (  2,  8   )     ref  ->   x2         "argument with side effect"
 ;  V36 cse0         [V36,T21] (  5,  7   )    long  ->  x21         "CSE - moderate"
 ;  V37 cse1         [V37,T02] (  2, 33   )    long  ->  x23         hoist "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 72
+; Lcl frame size = 56
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0xA0]!
-            stp     x19, x20, [sp, #0x58]
-            stp     x21, x22, [sp, #0x68]
-            stp     x23, x24, [sp, #0x78]
-            stp     x25, x26, [sp, #0x88]
-            str     x27, [sp, #0x98]
+            stp     fp, lr, [sp, #-0x90]!
+            stp     x19, x20, [sp, #0x48]
+            stp     x21, x22, [sp, #0x58]
+            stp     x23, x24, [sp, #0x68]
+            stp     x25, x26, [sp, #0x78]
+            str     x27, [sp, #0x88]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #16
             movi    v16.16b, #0
             stp     q16, q16, [x9]
-            stp     q16, q16, [x9, #0x20]
+            stp     xzr, xzr, [x9, #0x20]
+            str     xzr, [x9, #0x30]
             mov     x19, x1
             ; gcrRegs +[x19]
             mov     x20, x2
             ; gcrRegs +[x20]
-                       ;; size=52 bbWeight=1 PerfScore 10.50
+                       ;; size=56 bbWeight=1 PerfScore 11.50
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             ldrsb   wzr, [x0]
@@ -85,7 +85,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             ldr     x4, [x11]
             blr     x4
             ; byrRegs -[x2]
-            add     x8, fp, #64    // [V03 loc0]
+            add     x8, fp, #48    // [V03 loc0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     wzr, [x0]
@@ -96,7 +96,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x21, [x1]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x2, [x11]
@@ -110,7 +110,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             mov     x22, x0
             ; gcrRegs +[x22]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -125,7 +125,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
                        ;; size=184 bbWeight=1 PerfScore 54.00
 G_M1087_IG03:        ; bbWeight=3.96, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             mov     w2, w24
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -160,7 +160,7 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x25]
             mov     x26, x0
             ; gcrRegs +[x26]
-            add     x8, fp, #40    // [V11 loc8]
+            add     x8, fp, #24    // [V11 loc8]
             mov     x0, x26
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -175,7 +175,7 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs +[x0]
             mov     x27, x0
             ; gcrRegs +[x27]
-            add     x0, fp, #40    // [V11 loc8]
+            add     x0, fp, #24    // [V11 loc8]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -302,7 +302,7 @@ G_M1087_IG07:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}
 G_M1087_IG08:        ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x20]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             mov     w2, w24
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -337,7 +337,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x25]
             mov     x26, x0
             ; gcrRegs +[x26]
-            add     x8, fp, #40    // [V11 loc8]
+            add     x8, fp, #24    // [V11 loc8]
             mov     x0, x26
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -352,7 +352,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs +[x0]
             mov     x27, x0
             ; gcrRegs +[x27]
-            add     x0, fp, #40    // [V11 loc8]
+            add     x0, fp, #24    // [V11 loc8]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -370,16 +370,12 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            add     x14, x27, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x26
             ; gcrRegs +[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x11]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x26
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -388,7 +384,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1 x26]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x27, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -399,7 +395,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             b       G_M1087_IG11
-                       ;; size=200 bbWeight=0.02 PerfScore 1.14
+                       ;; size=192 bbWeight=0.02 PerfScore 1.08
 G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x27] +[x25]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -423,16 +419,12 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            add     x14, x27, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x25
             ; gcrRegs +[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x11]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x25
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -441,7 +433,7 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1 x25]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x27, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -451,7 +443,7 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-                       ;; size=136 bbWeight=0.02 PerfScore 0.84
+                       ;; size=128 bbWeight=0.02 PerfScore 0.78
 G_M1087_IG11:        ; bbWeight=0.04, gcrefRegs=8580000 {x19 x20 x22 x27}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [x22, #0x08]
             cmp     w24, w14
@@ -569,11 +561,11 @@ G_M1087_IG18:        ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1] +[x0]
-            str     x0, [fp, #0x20]    // [V17 loc14]
+            str     x0, [fp, #0x10]    // [V17 loc14]
             adrp    x1, [HIGH RELOC #0xD1FFAB1E]      // <unknown method>
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x1]
-            add     x0, fp, #32    // [V17 loc14]
+            add     x0, fp, #16    // [V17 loc14]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -622,11 +614,11 @@ G_M1087_IG19:        ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1] +[x0]
-            str     x0, [fp, #0x20]    // [V17 loc14]
+            str     x0, [fp, #0x10]    // [V17 loc14]
             adrp    x1, [HIGH RELOC #0xD1FFAB1E]      // <unknown method>
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x1]
-            add     x0, fp, #32    // [V17 loc14]
+            add     x0, fp, #16    // [V17 loc14]
             ; gcrRegs -[x0]
...

-4 (-0.15%) : 183363.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -35,13 +35,13 @@
 ;  V23 tmp2         [V23,T55] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V24 tmp3         [V24,T46] (  3,  2   )     int  ->  x26        
 ;  V25 tmp4         [V25,T22] (  4, 16   )     int  ->  x25         "impSpillLclRefs"
-;  V26 tmp5         [V26,T33] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V26 tmp5         [V26,T32] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V27 tmp6         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp7         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V29 tmp8         [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V30 tmp9         [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <<unknown class>>
 ;  V31 tmp10        [V31,T54] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V32 tmp11        [V32,T29] (  2,  0.16)   ubyte  ->   x0         "Inline return value spill temp"
+;* V32 tmp11        [V32,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V33 tmp12        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V34 tmp13        [V34,T14] (  6, 24   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V35 tmp14        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,18 +57,18 @@
 ;  V45 tmp24        [V45,T09] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V46 tmp25        [V46,T10] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V47 tmp26        [V47,T11] (  4, 32   )     ref  ->  [fp+0x30]  "argument with side effect"
-;  V48 tmp27        [V48,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V49 tmp28        [V49,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V50 tmp29        [V50,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V51 tmp30        [V51,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V52 tmp31        [V52,T38] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V53 tmp32        [V53,T39] (  2,  8   )     ref  ->   x1         "argument with side effect"
-;  V54 tmp33        [V54,T40] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
+;  V48 tmp27        [V48,T33] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V49 tmp28        [V49,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V50 tmp29        [V50,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V51 tmp30        [V51,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V52 tmp31        [V52,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V53 tmp32        [V53,T38] (  2,  8   )     ref  ->   x1         "argument with side effect"
+;  V54 tmp33        [V54,T39] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
 ;  V55 tmp34        [V55,T20] (  4, 16   )     ref  ->  [fp+0x20]  "argument with side effect"
 ;  V56 tmp35        [V56,T21] (  4, 16   )     ref  ->   x1         "argument with side effect"
-;  V57 tmp36        [V57,T30] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
-;  V58 tmp37        [V58,T31] (  4,  8   )     ref  ->   x3         "argument with side effect"
-;  V59 tmp38        [V59,T32] (  4,  8   )     ref  ->   x0         "argument with side effect"
+;  V57 tmp36        [V57,T29] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
+;  V58 tmp37        [V58,T30] (  4,  8   )     ref  ->   x3         "argument with side effect"
+;  V59 tmp38        [V59,T31] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V60 cse0         [V60,T13] (  8, 28   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
 ;  V61 cse1         [V61,T00] (  6, 71.28)    long  ->  [fp+0x70]  spill-single-def "CSE - aggressive"
 ;  V62 cse2         [V62,T26] (  4, 11.88)    long  ->  [fp+0x68]  spill-single-def "CSE - moderate"
@@ -478,14 +478,11 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ldr     x11, [x20, x1]
             ; gcrRegs +[x11]
             cmp     x0, x11
-            cset    x0, eq
-            ; gcrRegs -[x0]
-            cbz     w0, G_M58711_IG21
+            bne     G_M58711_IG21
             ldr     x1, [fp, #0x10]    // [V67 cse7]
             ; byrRegs +[x1]
             ldr     x2, [fp, #0x58]    // [V64 cse4]
             ldr     x0, [x1, x2]
-            ; gcrRegs +[x0]
             ldr     x11, [fp, #0x40]   // [V71 cse11]
             ; gcrRegs -[x11]
             ldr     wzr, [x0]
@@ -513,7 +510,7 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ; gcr arg pop 0
             cbnz    w0, G_M58711_IG20
             b       G_M58711_IG21
-                       ;; size=296 bbWeight=0.08 PerfScore 8.96
+                       ;; size=292 bbWeight=0.08 PerfScore 8.92
 G_M58711_IG19:        ; bbWeight=0.08, gcVars=0000000000000014 {V19 V67}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars +{V02 V04 V19 V67}
             ldr     x1, [fp, #0x10]    // [V67 cse7]
@@ -1134,7 +1131,7 @@ G_M58711_IG55:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             brk_unix #0
                        ;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2628, prolog size 40, PerfScore 2218.63, instruction count 657, allocated bytes for code 2628 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2624, prolog size 40, PerfScore 2218.59, instruction count 656, allocated bytes for code 2624 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1145,7 +1142,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 657 (0x00291) Actual length = 2628 (0x000a44)
+  Function Length   : 656 (0x00290) Actual length = 2624 (0x000a40)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.15%) : 124600.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -34,7 +34,7 @@
 ;  V22 tmp2         [V22,T55] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V23 tmp3         [V23,T46] (  3,  2   )     int  ->  x26        
 ;  V24 tmp4         [V24,T22] (  4, 16   )     int  ->  x25         "impSpillLclRefs"
-;  V25 tmp5         [V25,T33] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V25 tmp5         [V25,T32] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V26 tmp6         [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V27 tmp7         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp8         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
 ;  V30 tmp10        [V30,T53] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V31 tmp11        [V31,T56] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V32 tmp12        [V32,T54] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V33 tmp13        [V33,T29] (  2,  0.16)   ubyte  ->   x0         "Inline return value spill temp"
+;* V33 tmp13        [V33,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V34 tmp14        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V35 tmp15        [V35,T14] (  6, 24   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V36 tmp16        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -58,18 +58,18 @@
 ;  V46 tmp26        [V46,T09] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V47 tmp27        [V47,T10] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V48 tmp28        [V48,T11] (  4, 32   )     ref  ->  [fp+0x30]  "argument with side effect"
-;  V49 tmp29        [V49,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V50 tmp30        [V50,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V51 tmp31        [V51,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V52 tmp32        [V52,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V53 tmp33        [V53,T38] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V54 tmp34        [V54,T39] (  2,  8   )     ref  ->   x1         "argument with side effect"
-;  V55 tmp35        [V55,T40] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
+;  V49 tmp29        [V49,T33] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V50 tmp30        [V50,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V51 tmp31        [V51,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V52 tmp32        [V52,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V53 tmp33        [V53,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V54 tmp34        [V54,T38] (  2,  8   )     ref  ->   x1         "argument with side effect"
+;  V55 tmp35        [V55,T39] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
 ;  V56 tmp36        [V56,T20] (  4, 16   )     ref  ->  [fp+0x20]  "argument with side effect"
 ;  V57 tmp37        [V57,T21] (  4, 16   )     ref  ->   x1         "argument with side effect"
-;  V58 tmp38        [V58,T30] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
-;  V59 tmp39        [V59,T31] (  4,  8   )     ref  ->   x3         "argument with side effect"
-;  V60 tmp40        [V60,T32] (  4,  8   )     ref  ->   x0         "argument with side effect"
+;  V58 tmp38        [V58,T29] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
+;  V59 tmp39        [V59,T30] (  4,  8   )     ref  ->   x3         "argument with side effect"
+;  V60 tmp40        [V60,T31] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V61 cse0         [V61,T13] (  8, 28   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
 ;  V62 cse1         [V62,T00] (  6, 71.28)    long  ->  [fp+0x70]  spill-single-def "CSE - aggressive"
 ;  V63 cse2         [V63,T26] (  4, 11.88)    long  ->  [fp+0x68]  spill-single-def "CSE - moderate"
@@ -479,14 +479,11 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ldr     x11, [x20, x1]
             ; gcrRegs +[x11]
             cmp     x0, x11
-            cset    x0, eq
-            ; gcrRegs -[x0]
-            cbz     w0, G_M58711_IG21
+            bne     G_M58711_IG21
             ldr     x1, [fp, #0x10]    // [V68 cse7]
             ; byrRegs +[x1]
             ldr     x2, [fp, #0x58]    // [V65 cse4]
             ldr     x0, [x1, x2]
-            ; gcrRegs +[x0]
             ldr     x11, [fp, #0x40]   // [V72 cse11]
             ; gcrRegs -[x11]
             ldr     wzr, [x0]
@@ -514,7 +511,7 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ; gcr arg pop 0
             cbnz    w0, G_M58711_IG20
             b       G_M58711_IG21
-                       ;; size=296 bbWeight=0.08 PerfScore 8.96
+                       ;; size=292 bbWeight=0.08 PerfScore 8.92
 G_M58711_IG19:        ; bbWeight=0.08, gcVars=0000000000000014 {V18 V68}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars +{V02 V04 V18 V68}
             ldr     x1, [fp, #0x10]    // [V68 cse7]
@@ -1156,7 +1153,7 @@ G_M58711_IG55:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_unix #0
                        ;; size=84 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2676, prolog size 40, PerfScore 2218.63, instruction count 669, allocated bytes for code 2676 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2672, prolog size 40, PerfScore 2218.59, instruction count 668, allocated bytes for code 2672 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1167,7 +1164,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 669 (0x0029d) Actual length = 2676 (0x000a74)
+  Function Length   : 668 (0x0029c) Actual length = 2672 (0x000a70)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.10%) : 109800.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

@@ -54,7 +54,7 @@
 ;  V42 tmp8         [V42,T10] (  6, 48   )     ref  ->  [fp+0x38]  class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V43 tmp9         [V43    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp10        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-;  V45 tmp11        [V45,T41] (  2,  0.16)   ubyte  ->   x1         "Inline return value spill temp"
+;* V45 tmp11        [V45,T42] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V46 tmp12        [V46,T16] (  4, 32   )     ref  ->  [fp+0x30]  class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V47 tmp13        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
 ;  V48 tmp14        [V48,T30] (  4, 16   )   ubyte  ->   x2         "Inline return value spill temp"
@@ -100,7 +100,7 @@
 ;* V88 tmp54        [V88,T57] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;  V89 tmp55        [V89,T45] (  2,  8   )     int  ->   x1         "argument with side effect"
 ;  V90 cse0         [V90,T04] ( 14, 72   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
-;  V91 cse1         [V91,T42] (  4,  8   )     int  ->  [fp+0x74]  spill-single-def "CSE - moderate"
+;  V91 cse1         [V91,T41] (  4,  8   )     int  ->  [fp+0x74]  spill-single-def "CSE - moderate"
 ;  V92 cse2         [V92,T15] (  9, 38   )    long  ->  x27         "CSE - aggressive"
 ;  V93 cse3         [V93,T09] ( 10, 56   )    long  ->  [fp+0x68]  multi-def "CSE - aggressive"
 ;  V94 cse4         [V94,T02] ( 18, 72   )    long  ->  [fp+0x60]  multi-def "CSE - aggressive"
@@ -805,10 +805,9 @@ G_M30062_IG27:        ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byref
             blr     x1
             ; gcrRegs -[x0]
             cmp     w0, #32
-            cset    x1, ne
-            cbz     w1, G_M30062_IG34
+            beq     G_M30062_IG34
             b       G_M30062_IG38
-                       ;; size=260 bbWeight=0.08 PerfScore 7.72
+                       ;; size=256 bbWeight=0.08 PerfScore 7.68
 G_M30062_IG28:        ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=2200000 {x21 x25}, byref, isz
             ldr     x1, [fp, #0x78]    // [V90 cse0]
             add     x0, fp, #0xD1FFAB1E    // [V19 loc12]
@@ -1420,7 +1419,7 @@ G_M30062_IG71:        ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
             brk_unix #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3844, prolog size 64, PerfScore 3960.13, instruction count 961, allocated bytes for code 3844 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 3840, prolog size 64, PerfScore 3960.09, instruction count 960, allocated bytes for code 3840 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1431,7 +1430,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 961 (0x003c1) Actual length = 3844 (0x000f04)
+  Function Length   : 960 (0x003c0) Actual length = 3840 (0x000f00)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.osx.arm64.checked.mch

-20 (-1.07%) : 115297.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 arg0         [V00,T29] (  7,  5.50)     ref  ->  x21         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T14] (  6, 11   )     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T15] (  6, 10   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
 ;  V04 loc1         [V04,T20] (  7, 10.04)     ref  ->  x21         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T31] (  5,  7   )     int  ->  x22         single-def
 ;  V06 loc3         [V06,T05] ( 16, 25.04)     int  ->  x23        
@@ -19,7 +19,7 @@
 ;  V08 loc5         [V08,T10] ( 10, 16   )     ref  ->  x26         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T33] (  3,  6   )     int  ->  x24         single-def
 ;  V13 loc10        [V13,T06] (  9, 25   )     int  ->  x20        
 ;  V14 loc11        [V14,T00] ( 10,106   )     ref  ->  x22         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
@@ -68,10 +68,10 @@
 ;* V57 tmp38        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;  V58 tmp39        [V58,T28] (  2,  8   )     ref  ->   x2         class-hnd "Inlining Arg" <<unknown class>>
 ;  V59 tmp40        [V59,T19] (  3, 12   )     ref  ->   x0         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-;  V60 tmp41        [V60    ] (  2,  2   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
-;  V61 tmp42        [V61    ] (  4,  4   )     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
-;  V62 tmp43        [V62    ] (  2,  2   )     int  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
-;  V63 tmp44        [V63    ] (  2,  2   )     int  ->  [fp+0x34]  do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
+;  V60 tmp41        [V60    ] (  2,  2   )     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
+;  V61 tmp42        [V61    ] (  4,  4   )     ref  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
+;  V62 tmp43        [V62    ] (  2,  2   )     int  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
+;  V63 tmp44        [V63    ] (  2,  2   )     int  ->  [fp+0x24]  do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
 ;* V64 tmp45        [V64    ] (  0,  0   )     ref  ->  zero-ref    "field V17.array (fldOffset=0x0)" P-INDEP
 ;* V65 tmp46        [V65    ] (  0,  0   )     ref  ->  zero-ref    "field V26.array (fldOffset=0x0)" P-INDEP
 ;* V66 tmp47        [V66    ] (  0,  0   )     ref  ->  zero-ref    "field V29.array (fldOffset=0x0)" P-INDEP
@@ -86,29 +86,27 @@
 ;  V75 tmp56        [V75,T16] (  6, 12   )     ref  ->   x0         "argument with side effect"
 ;  V76 tmp57        [V76,T17] (  6, 12   )     ref  ->   x0         "argument with side effect"
 ;  V77 cse0         [V77,T01] (  7, 88   )    long  ->  x23         "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 64
+; Lcl frame size = 48
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x90]!
-            stp     x19, x20, [sp, #0x50]
-            stp     x21, x22, [sp, #0x60]
-            stp     x23, x24, [sp, #0x70]
-            stp     x25, x26, [sp, #0x80]
+            stp     fp, lr, [sp, #-0x80]!
+            stp     x19, x20, [sp, #0x40]
+            stp     x21, x22, [sp, #0x50]
+            stp     x23, x24, [sp, #0x60]
+            stp     x25, x26, [sp, #0x70]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #16
             movi    v16.16b, #0
             stp     q16, q16, [x9]
             stp     xzr, xzr, [x9, #0x20]
-            str     xzr, [x9, #0x30]
             mov     x21, x0
             ; gcrRegs +[x21]
             mov     x19, x1
             ; gcrRegs +[x19]
             mov     x20, x2
             ; gcrRegs +[x20]
-                       ;; size=56 bbWeight=1 PerfScore 11.00
+                       ;; size=52 bbWeight=1 PerfScore 10.00
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ldrsb   wzr, [x21]
             add     x22, x21, #40
@@ -179,7 +177,7 @@ G_M1087_IG05:        ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=4
 G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ; byrRegs -[x22]
-            add     x8, fp, #56    // [V03 loc0]
+            add     x8, fp, #40    // [V03 loc0]
             mov     x0, x23
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this
@@ -189,7 +187,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ldr     wzr, [x0]
             blr     x1
             ; gcrRegs -[x0 x23]
-            ldrsw   x1, [fp, #0x38]    // [V03 loc0]
+            ldrsw   x1, [fp, #0x28]    // [V03 loc0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
@@ -197,7 +195,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ; gcrRegs +[x0]
             mov     x21, x0
             ; gcrRegs +[x21]
-            ldr     w0, [fp, #0x38]    // [V03 loc0]
+            ldr     w0, [fp, #0x28]    // [V03 loc0]
             ; gcrRegs -[x0]
             sub     w22, w0, #1
             mov     w23, wzr
@@ -207,7 +205,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ble     G_M1087_IG15
                        ;; size=84 bbWeight=1 PerfScore 23.00
 G_M1087_IG07:        ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
-            add     x0, fp, #56    // [V03 loc0]
+            add     x0, fp, #40    // [V03 loc0]
             mov     w2, w23
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -237,7 +235,7 @@ G_M1087_IG08:        ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #1 LSL #32
             cmp     x8, x0
             bne     G_M1087_IG41
-            add     x8, fp, #32    // [V11 loc8]
+            add     x8, fp, #16    // [V11 loc8]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -246,7 +244,7 @@ G_M1087_IG08:        ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x28]    // [V61 tmp42]
+            ldr     x0, [fp, #0x18]    // [V61 tmp42]
             ; gcrRegs +[x0]
             cbnz    x0, G_M1087_IG09
             mov     x25, xzr
@@ -385,7 +383,7 @@ G_M1087_IG14:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M1087_IG15:        ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x20]
-            add     x0, fp, #56    // [V03 loc0]
+            add     x0, fp, #40    // [V03 loc0]
             mov     w2, w23
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -415,7 +413,7 @@ G_M1087_IG16:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #1 LSL #32
             cmp     x8, x0
             bne     G_M1087_IG41
-            add     x8, fp, #32    // [V11 loc8]
+            add     x8, fp, #16    // [V11 loc8]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -424,7 +422,7 @@ G_M1087_IG16:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x28]    // [V61 tmp42]
+            ldr     x0, [fp, #0x18]    // [V61 tmp42]
             ; gcrRegs +[x0]
             cbnz    x0, G_M1087_IG17
             mov     x25, xzr
@@ -465,9 +463,6 @@ G_M1087_IG19:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15 x25]
             ; byrRegs -[x14]
-            add     x14, x26, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -475,7 +470,6 @@ G_M1087_IG19:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             movk    x1, #1 LSL #32
             ldr     x1, [x1]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x24
             ; gcrRegs +[x1]
             ldr     x2, [x0]
@@ -483,7 +477,7 @@ G_M1087_IG19:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             ldr     x2, [x2, #0x38]
             blr     x2
             ; gcrRegs -[x1 x24]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x26, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -491,7 +485,7 @@ G_M1087_IG19:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             b       G_M1087_IG21
-                       ;; size=104 bbWeight=0.02 PerfScore 0.57
+                       ;; size=96 bbWeight=0.02 PerfScore 0.51
 G_M1087_IG20:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x26] +[x24]
             movz    x0, #0xD1FFAB1E
@@ -507,9 +501,6 @@ G_M1087_IG20:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #1 LSL #32
             str     x0, [x26, #0x28]
-            add     x14, x26, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -517,7 +508,6 @@ G_M1087_IG20:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x1, #1 LSL #32
             ldr     x1, [x1]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x24
             ; gcrRegs +[x1]
             ldr     x2, [x0]
@@ -525,14 +515,14 @@ G_M1087_IG20:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x2, [x2, #0x38]
             blr     x2
             ; gcrRegs -[x1 x24]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x26, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-                       ;; size=104 bbWeight=0.02 PerfScore 0.56
+                       ;; size=96 bbWeight=0.02 PerfScore 0.50
 G_M1087_IG21:        ; bbWeight=0.04, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [x21, #0x08]
             cmp     w23, w14
@@ -761,11 +751,11 @@ G_M1087_IG36:        ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
                        ;; size=12 bbWeight=4 PerfScore 8.00
 G_M1087_IG37:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x19 x21]
-            ldp     x25, x26, [sp, #0x80]
-            ldp     x23, x24, [sp, #0x70]
-            ldp     x21, x22, [sp, #0x60]
-            ldp     x19, x20, [sp, #0x50]
-            ldp     fp, lr, [sp], #0x90
+            ldp     x25, x26, [sp, #0x70]
+            ldp     x23, x24, [sp, #0x60]
+            ldp     x21, x22, [sp, #0x50]
+            ldp     x19, x20, [sp, #0x40]
+            ldp     fp, lr, [sp], #0x80
             ret     lr
                        ;; size=24 bbWeight=1 PerfScore 6.00
 G_M1087_IG38:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -816,7 +806,7 @@ G_M1087_IG43:        ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, by
             brk_unix #0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1868, prolog size 44, PerfScore 1133.05, instruction count 467, allocated bytes for code 1868 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
+; Total bytes of code 1848, prolog size 40, PerfScore 1131.93, instruction count 462, allocated bytes for code 1848 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -827,7 +817,7 @@ Unwind Info:
...

-32 (-0.78%) : 137541.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport

@@ -14,15 +14,15 @@
 ;  V03 loc1         [V03,T43] (  7,  5.02)     ref  ->  x23         class-hnd exact single-def <<unknown class>>
 ;  V04 loc2         [V04,T52] (  4,  3   )     ref  ->  x27         class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
 ;  V05 loc3         [V05,T14] ( 14, 13   )     ref  ->  x28         class-hnd exact single-def <<unknown class>>
-;  V06 loc4         [V06    ] (  5,  5.50)  struct ( 8) [fp+0xC8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+;  V06 loc4         [V06    ] (  5,  5.50)  struct ( 8) [fp+0xB8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
 ;* V07 loc5         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Threading.CancellationToken>
 ;  V08 loc6         [V08,T42] (  5,  5.50)     int  ->  x26         single-def
-;  V09 loc7         [V09,T04] ( 12, 18.52)     int  ->  [fp+0xC4] 
-;  V10 loc8         [V10    ] ( 12, 14   )  struct (24) [fp+0xA8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+;  V09 loc7         [V09,T04] ( 12, 18.52)     int  ->  [fp+0xB4] 
+;  V10 loc8         [V10    ] ( 12, 14   )  struct (24) [fp+0x98]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
 ;  V11 loc9         [V11,T15] ( 12, 12   )     ref  ->  x21         must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
 ;* V12 loc10        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-;  V13 loc11        [V13,T22] ( 10, 10   )     ref  ->  [fp+0x88]  class-hnd <<unknown class>>
-;  V14 loc12        [V14,T37] (  6,  6   )     ref  ->  [fp+0x80]  class-hnd <<unknown class>>
+;  V13 loc11        [V13,T22] ( 10, 10   )     ref  ->  [fp+0x78]  class-hnd <<unknown class>>
+;  V14 loc12        [V14,T37] (  6,  6   )     ref  ->  [fp+0x70]  class-hnd <<unknown class>>
 ;# V15 OutArgs      [V15    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V16 tmp1         [V16,T26] (  5, 10   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V17 tmp2         [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -38,14 +38,14 @@
 ;  V27 tmp12        [V27,T63] (  2,  2   )     ref  ->   x2         class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
 ;  V28 tmp13        [V28,T53] (  3,  3   )     ref  ->  x28         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V29 tmp14        [V29,T16] (  6, 12   )     ref  ->  registers   class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-;  V30 tmp15        [V30,T06] (  8, 16   )     ref  ->  [fp+0x78]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+;  V30 tmp15        [V30,T06] (  8, 16   )     ref  ->  [fp+0x68]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
 ;  V31 tmp16        [V31,T07] (  8, 16   )     ref  ->   x0         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V32 tmp17        [V32    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V33 tmp18        [V33,T02] ( 10, 20   )     ref  ->   x2         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V34 tmp19        [V34    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V35 tmp20        [V35,T38] (  6,  6   )     ref  ->   x2        
-;  V36 tmp21        [V36,T00] ( 16, 32   )     ref  ->  [fp+0x70]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-;  V37 tmp22        [V37,T03] ( 10, 20   )     ref  ->  [fp+0x68]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+;  V36 tmp21        [V36,T00] ( 16, 32   )     ref  ->  [fp+0x60]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+;  V37 tmp22        [V37,T03] ( 10, 20   )     ref  ->  [fp+0x58]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
 ;  V38 tmp23        [V38,T54] (  3,  3   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V39 tmp24        [V39,T55] (  3,  3   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;* V40 tmp25        [V40    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Threading.CancellationToken>
@@ -54,9 +54,9 @@
 ;* V43 tmp28        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;* V44 tmp29        [V44    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
 ;* V45 tmp30        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;  V46 tmp31        [V46,T47] (  5,  5   )   byref  ->  [fp+0x60]  spill-single-def "Inlining Arg"
-;  V47 tmp32        [V47,T57] (  4,  2   )     ref  ->  [fp+0x58]  class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;  V48 tmp33        [V48,T58] (  4,  2   )     ref  ->  [fp+0x50]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+;  V46 tmp31        [V46,T47] (  5,  5   )   byref  ->  [fp+0x50]  spill-single-def "Inlining Arg"
+;  V47 tmp32        [V47,T57] (  4,  2   )     ref  ->  [fp+0x48]  class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+;  V48 tmp33        [V48,T58] (  4,  2   )     ref  ->  [fp+0x40]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
 ;  V49 tmp34        [V49,T64] (  2,  2   )     ref  ->   x1         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V50 tmp35        [V50,T59] (  4,  2   )     int  ->  x26         "Inline return value spill temp"
 ;  V51 tmp36        [V51,T65] (  2,  2   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -64,7 +64,7 @@
 ;* V53 tmp38        [V53,T79] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V54 tmp39        [V54,T48] (  4,  4   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;  V55 tmp40        [V55,T60] (  4,  2   )     int  ->  x26         "Inline stloc first use temp"
-;  V56 tmp41        [V56,T10] ( 15, 14.02)     ref  ->  [fp+0x48]  class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V56 tmp41        [V56,T10] ( 15, 14.02)     ref  ->  [fp+0x38]  class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V57 tmp42        [V57,T11] ( 16, 14   )     ref  ->   x3         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V58 tmp43        [V58,T82] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V59 tmp44        [V59,T27] (  6,  9   )     ref  ->   x1         "CASTCLASS eval op1"
@@ -74,27 +74,27 @@
 ;  V63 tmp48        [V63,T29] (  6,  8   )     ref  ->  registers   class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V64 tmp49        [V64,T31] (  4,  8   )     ref  ->   x4         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;* V65 tmp50        [V65    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-;  V66 tmp51        [V66    ] ( 11, 10.02)  struct (24) [fp+0x90]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+;  V66 tmp51        [V66    ] ( 11, 10.02)  struct (24) [fp+0x80]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V67 tmp52        [V67    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V68 tmp53        [V68    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-;  V69 tmp54        [V69,T17] (  6, 12   )     ref  ->  [fp+0x40]  class-hnd exact "Inlining Arg" <<unknown class>>
-;  V70 tmp55        [V70,T32] (  4,  8   )     ref  ->  [fp+0x38]  class-hnd "Inlining Arg" <System.Object[]>
+;  V69 tmp54        [V69,T17] (  6, 12   )     ref  ->  [fp+0x30]  class-hnd exact "Inlining Arg" <<unknown class>>
+;  V70 tmp55        [V70,T32] (  4,  8   )     ref  ->  [fp+0x28]  class-hnd "Inlining Arg" <System.Object[]>
 ;* V71 tmp56        [V71    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V72 tmp57        [V72,T23] ( 10, 10   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V73 tmp58        [V73,T83] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V74 tmp59        [V74,T18] (  6, 12   )     ref  ->   x1         "CASTCLASS eval op1"
 ;  V75 tmp60        [V75,T30] (  6,  8   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V76 tmp61        [V76,T05] ( 10, 18   )     ref  ->  [fp+0x30]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V76 tmp61        [V76,T05] ( 10, 18   )     ref  ->  [fp+0x20]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V77 tmp62        [V77,T33] (  4,  8   )     ref  ->   x3         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;  V78 tmp63        [V78,T34] (  4,  8   )     ref  ->   x0         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
 ;  V79 tmp64        [V79,T84] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V80 tmp65        [V80,T01] ( 12, 24   )     ref  ->  [fp+0x28]  class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V81 tmp66        [V81,T35] (  4,  8   )     ref  ->  [fp+0x20]  class-hnd exact "Inlining Arg" <System.String>
+;  V80 tmp65        [V80,T01] ( 12, 24   )     ref  ->  [fp+0x18]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V81 tmp66        [V81,T35] (  4,  8   )     ref  ->  [fp+0x10]  class-hnd exact "Inlining Arg" <System.String>
 ;  V82 tmp67        [V82,T19] (  6, 12   )     ref  ->  x15         class-hnd exact "Inlining Arg" <<unknown class>>
 ;  V83 tmp68        [V83,T36] (  7,  6.02)     ref  ->   x3         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
 ;  V84 tmp69        [V84,T24] ( 10, 10   )     int  ->   x2         "Inline stloc first use temp"
 ;  V85 tmp70        [V85,T20] (  6, 12   )     ref  ->   x1         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-;  V86 tmp71        [V86    ] (  5,  5.50)     ref  ->  [fp+0xC8]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+;  V86 tmp71        [V86    ] (  5,  5.50)     ref  ->  [fp+0xB8]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
 ;* V87 tmp72        [V87,T80] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._source (fldOffset=0x0)" P-INDEP
 ;* V88 tmp73        [V88    ] (  0,  0   )     ref  ->  zero-ref    "field V40._source (fldOffset=0x0)" P-INDEP
 ;* V89 tmp74        [V89    ] (  0,  0   )     ref  ->  zero-ref    "field V41._node (fldOffset=0x0)" P-INDEP
@@ -120,33 +120,27 @@
 ;  V109 cse5        [V109,T12] ( 14, 14   )    long  ->  x22         "CSE - aggressive"
 ;  V110 cse6        [V110,T41] (  3,  5.94)     int  ->  x14         "CSE - moderate"
 ;  V111 rat0        [V111,T78] (  2,  1   )    long  ->   x0         "Spilling to split statement for tree"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 192
+; Lcl frame size = 176
 
 G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #0xD1FFAB1E]!
-            stp     x19, x20, [sp, #0xD0]
-            stp     x21, x22, [sp, #0xE0]
-            stp     x23, x24, [sp, #0xF0]
-            stp     x25, x26, [sp, #0xD1FFAB1E]
+            stp     x19, x20, [sp, #0xC0]
+            stp     x21, x22, [sp, #0xD0]
+            stp     x23, x24, [sp, #0xE0]
+            stp     x25, x26, [sp, #0xF0]
             stp     x27, x28, [sp, #0xD1FFAB1E]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #128
             movi    v16.16b, #0
             stp     q16, q16, [x9]
             stp     q16, q16, [x9, #0x20]
-            stp     q16, q16, [x9, #0x40]
-            stp     q16, q16, [x9, #0x60]
-            stp     q16, q16, [x9, #0x80]
-            stp     xzr, xzr, [x9, #0xA0]
-            str     xzr, [x9, #0xB0]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
             mov     x21, xzr
-                       ;; size=76 bbWeight=1 PerfScore 16.00
+                       ;; size=56 bbWeight=1 PerfScore 11.00
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x21]
             movz    x22, #0xD1FFAB1E
@@ -364,11 +358,11 @@ G_M28747_IG09:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ldrsb   wzr, [x26]
             add     x2, x26, #48
             ; byrRegs +[x2]
-            str     x2, [fp, #0x60]    // [V46 tmp31]
+            str     x2, [fp, #0x50]    // [V46 tmp31]
             ; GC ptr vars +{V46}
             ldr     x3, [x2]
             ; gcrRegs +[x3]
-            str     x3, [fp, #0x58]    // [V47 tmp32]
+            str     x3, [fp, #0x48]    // [V47 tmp32]
             ; GC ptr vars +{V47}
             cbnz    x3, G_M28747_IG10
             ldr     x0, [x26, #0x18]
@@ -381,7 +375,7 @@ G_M28747_IG09:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; byrRegs -[x2]
             mov     x2, x0
             ; gcrRegs +[x2]
-            str     x2, [fp, #0x50]    // [V48 tmp33]
+            str     x2, [fp, #0x40]    // [V48 tmp33]
             ; GC ptr vars +{V48}
             cbz     x2, G_M28747_IG10
             mov     x0, x26
@@ -396,7 +390,7 @@ G_M28747_IG09:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             sxtw    w2, w0
             mov     x1, x26
             ; gcrRegs +[x1]
-            ldr     x0, [fp, #0x50]    // [V48 tmp33]
+            ldr     x0, [fp, #0x40]    // [V48 tmp33]
             ; gcrRegs +[x0]
             ldr     x3, [x0]
             ldr     x3, [x3, #0x68]
@@ -406,7 +400,7 @@ G_M28747_IG09:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x1 x26]
             mov     x1, x0
             ; gcrRegs +[x1]
-            ldr     x26, [fp, #0x60]   // [V46 tmp31]
+            ldr     x26, [fp, #0x50]   // [V46 tmp31]
             ; byrRegs +[x26]
             cbz     x26, G_M28747_IG68
             mov     x0, x26
@@ -421,19 +415,19 @@ G_M28747_IG09:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             mov     x26, x3
             ; gcrRegs +[x26]
             ; byrRegs -[x26]
-            str     x26, [fp, #0x58]   // [V47 tmp32]
+            str     x26, [fp, #0x48]   // [V47 tmp32]
             ; GC ptr vars +{V47}
                        ;; size=300 bbWeight=0.50 PerfScore 43.00
 G_M28747_IG10:        ; bbWeight=0.50, gcVars=00000000000000000200000000000000 {V47}, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0 x3 x26]
             ; GC ptr vars -{V46 V47}
-            ldr     x3, [fp, #0x58]    // [V47 tmp32]
+            ldr     x3, [fp, #0x48]    // [V47 tmp32]
             ; gcrRegs +[x3]
-            str     x3, [fp, #0xC8]    // [V86 tmp71]
-            ldr     x0, [fp, #0xC8]    // [V86 tmp71]
+            str     x3, [fp, #0xB8]    // [V86 tmp71]
+            ldr     x0, [fp, #0xB8]    // [V86 tmp71]
             ; gcrRegs +[x0]
             cbz     x0, G_M28747_IG13
-            ldr     x0, [fp, #0xC8]    // [V86 tmp71]
+            ldr     x0, [fp, #0xB8]    // [V86 tmp71]
             ldr     x0, [x0, #0x18]
             mov     x1, x0
             ; gcrRegs +[x1]
@@ -471,8 +465,8 @@ G_M28747_IG14:        ; bbWeight=0.50, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
             ble     G_M28747_IG38
                        ;; size=24 bbWeight=0.50 PerfScore 3.25
 G_M28747_IG15:        ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
-            add     x0, fp, #200   // [V06 loc4]
-            str     w3, [fp, #0xC4]    // [V09 loc7]
+            add     x0, fp, #184   // [V06 loc4]
+            str     w3, [fp, #0xB4]    // [V09 loc7]
             mov     w2, w3
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -483,7 +477,7 @@ G_M28747_IG15:        ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
             ldr     x4, [x4]
             blr     x4
             ; gcrRegs +[x0]
-            add     x8, fp, #168   // [V10 loc8]
+            add     x8, fp, #152   // [V10 loc8]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax:get_ImportsClauses():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]:this
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
@@ -523,7 +517,7 @@ G_M28747_IG16:        ; bbWeight=1.98, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
 G_M28747_IG17:        ; bbWeight=1.98, gcrefRegs=18980004 {x2 x19 x20 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
             mov     x21, x2
             ; gcrRegs +[x21]
-            ldr     x3, [fp, #0xB0]    // [V10 loc8+0x08]
+            ldr     x3, [fp, #0xA0]    // [V10 loc8+0x08]
             ; gcrRegs +[x3]
             cbz     x3, G_M28747_IG73
             ldr     x4, [x3, #0x18]
@@ -562,7 +556,7 @@ G_M28747_IG20:        ; bbWeight=1.98, gcrefRegs=18B80004 {x2 x19 x20 x21 x23 x2
                        ;; size=8 bbWeight=1.98 PerfScore 2.97
 G_M28747_IG21:        ; bbWeight=1.98, gcrefRegs=18B80008 {x3 x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2 x4] +[x3]
-            ldr     w0, [fp, #0xA8]    // [V10 loc8]
+            ldr     w0, [fp, #0x98]    // [V10 loc8]
             cbz     w0, G_M28747_IG73
             mov     x0, x3
             ; gcrRegs +[x0]
@@ -604,15 +598,15 @@ G_M28747_IG25:        ; bbWeight=1.98, gcrefRegs=18B80010 {x4 x19 x20 x21 x23 x2
             ; gcrRegs -[x2]
             ldrsb   wzr, [x4]
             ldr     w2, [x4, #0x20]
-            str     x4, [fp, #0x48]    // [V56 tmp41]
+            str     x4, [fp, #0x38]    // [V56 tmp41]
             ; GC ptr vars +{V56}
             mov     x3, x4
             ; gcrRegs +[x3]
...

-8 (-0.73%) : 308247.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -15,9 +15,9 @@
 ;  V04 loc2         [V04,T01] ( 11, 16.58)     int  ->  x24        
 ;  V05 loc3         [V05    ] (  8, 10   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed ld-addr-op
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T23] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Net.CookieException>
-;  V08 tmp2         [V08,T24] (  3,  0   )     ref  ->  x20         class-hnd exact "NewObj constructor temp" <System.Net.CookieException>
-;  V09 tmp3         [V09,T25] (  3,  0   )     ref  ->  x20         class-hnd exact "NewObj constructor temp" <System.Net.CookieException>
+;  V07 tmp1         [V07,T22] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <System.Net.CookieException>
+;  V08 tmp2         [V08,T23] (  3,  0   )     ref  ->  x20         class-hnd exact "NewObj constructor temp" <System.Net.CookieException>
+;  V09 tmp3         [V09,T24] (  3,  0   )     ref  ->  x20         class-hnd exact "NewObj constructor temp" <System.Net.CookieException>
 ;* V10 tmp4         [V10,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V11 tmp5         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V12 tmp6         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T22] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -50,15 +50,15 @@
 ;* V39 tmp33        [V39    ] (  0,  0   )   byref  ->  zero-ref    "field V22._reference (fldOffset=0x0)" P-INDEP
 ;* V40 tmp34        [V40    ] (  0,  0   )     int  ->  zero-ref    "field V22._length (fldOffset=0x8)" P-INDEP
 ;  V41 tmp35        [V41,T04] (  4,  8   )     ref  ->   x0         "argument with side effect"
-;  V42 tmp36        [V42,T26] (  2,  0   )     ref  ->  x21         "argument with side effect"
-;  V43 tmp37        [V43,T27] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V44 tmp38        [V44,T28] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V45 tmp39        [V45,T29] (  2,  0   )     ref  ->  x21         "argument with side effect"
-;  V46 tmp40        [V46,T30] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V47 tmp41        [V47,T31] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V48 tmp42        [V48,T32] (  2,  0   )     ref  ->  x21         single-def "argument with side effect"
-;  V49 tmp43        [V49,T33] (  2,  0   )     ref  ->   x1         single-def "argument with side effect"
-;  V50 tmp44        [V50,T34] (  2,  0   )     ref  ->   x1         single-def "argument with side effect"
+;  V42 tmp36        [V42,T25] (  2,  0   )     ref  ->  x21         "argument with side effect"
+;  V43 tmp37        [V43,T26] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V44 tmp38        [V44,T27] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V45 tmp39        [V45,T28] (  2,  0   )     ref  ->  x21         "argument with side effect"
+;  V46 tmp40        [V46,T29] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V47 tmp41        [V47,T30] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V48 tmp42        [V48,T31] (  2,  0   )     ref  ->  x21         single-def "argument with side effect"
+;  V49 tmp43        [V49,T32] (  2,  0   )     ref  ->   x1         single-def "argument with side effect"
+;  V50 tmp44        [V50,T33] (  2,  0   )     ref  ->   x1         single-def "argument with side effect"
 ;  V51 cse0         [V51,T08] (  6,  6   )     int  ->  x22         "CSE - aggressive"
 ;  V52 cse1         [V52,T20] (  2,  1   )     ref  ->  x15         "CSE - aggressive"
 ;  V53 cse2         [V53,T10] (  4,  4.54)   byref  ->  x25         hoist multi-def "CSE - aggressive"
@@ -282,10 +282,8 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG24
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG24
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -524,7 +522,7 @@ G_M10809_IG25:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_unix #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1096, prolog size 36, PerfScore 149.37, instruction count 274, allocated bytes for code 1096 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1088, prolog size 36, PerfScore 149.35, instruction count 272, allocated bytes for code 1088 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -535,7 +533,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 274 (0x00112) Actual length = 1096 (0x000448)
+  Function Length   : 272 (0x00110) Actual length = 1088 (0x000440)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 247300.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T15] (  4,  5   )     int  ->  x21        
 ;  V07 loc4         [V07,T16] (  4,  5   )     int  ->  x24        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  x19        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  x19        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [fp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->   x0        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [fp-0x50]  do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T19] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T24] (  3,  3   )     int  ->   x1         "Inlining Arg"
-;  V31 tmp19        [V31,T35] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V31 tmp19        [V31,T33] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V32 tmp20        [V32,T23] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,13 +49,13 @@
 ;  V38 tmp26        [V38,T13] (  5,  5   )    long  ->  [fp-0x58]  spill-single-def "Inlining Arg"
 ;* V39 tmp27        [V39    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V40 tmp28        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V41 tmp29        [V41,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V41 tmp29        [V41,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V42 tmp30        [V42,T11] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V43 tmp31        [V43,T12] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V44 tmp32        [V44,T06] (  3, 12   )   byref  ->   x1         "dup spill"
 ;* V45 tmp33        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp34        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V47 tmp35        [V47,T34] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp35        [V47,T32] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V49 tmp37        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
@@ -65,8 +65,8 @@
 ;* V54 tmp42        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
 ;  V55 tmp43        [V55    ] (  3,  3   )     int  ->  [fp-0x50]  do-not-enreg[X] addr-exposed "field V28.Item1 (fldOffset=0x0)" P-DEP
 ;  V56 tmp44        [V56    ] (  3,  3   )     int  ->  [fp-0x4C]  do-not-enreg[X] addr-exposed "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V57 tmp45        [V57,T40] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp46        [V58,T41] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V57 tmp45        [V57,T38] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp46        [V58,T39] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V59 tmp47        [V59    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V60 tmp48        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
 ;* V64 tmp52        [V64    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x8)" P-INDEP
 ;  V65 tmp53        [V65,T17] (  3,  4.50)   byref  ->  x23         single-def "V05.[000..008)"
 ;  V66 tmp54        [V66,T18] (  3,  4.50)     int  ->  x22         single-def "V05.[008..012)"
-;  V67 tmp55        [V67,T37] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
-;  V68 tmp56        [V68,T39] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
+;  V67 tmp55        [V67,T35] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
+;  V68 tmp56        [V68,T37] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
 ;  V69 tmp57        [V69,T03] (  2, 16   )     ref  ->   x1         "argument with side effect"
 ;  V70 GsCookie     [V70    ] (  1,  1   )    long  ->  [fp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V71 PSPSym       [V71,T43] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
+;  V71 PSPSym       [V71,T40] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
 ;  V72 cse0         [V72,T08] (  5, 10   )     int  ->  x11         "CSE - aggressive"
 ;  V73 cse1         [V73,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V74 rat0         [V74,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V74 rat0         [V74,T29] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V75 rat1         [V75,T26] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V76 rat2         [V76,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V76 rat2         [V76,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V77 rat3         [V77,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V78 rat4         [V78,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V78 rat4         [V78,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V79 rat5         [V79,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V80 rat6         [V80,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V81 rat7         [V81,T42] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V82 rat8         [V82,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V83 rat9         [V83,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V84 rat10        [V84,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V85 rat11        [V85,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V80 rat6         [V80,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V81 rat7         [V81,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V82 rat8         [V82,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 64
 

+0 (0.00%) : 266824.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T15] (  4,  5   )     int  ->  x21        
 ;  V07 loc4         [V07,T16] (  4,  5   )     int  ->  x24        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  x19        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  x19        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [fp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->   x0        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [fp-0x50]  do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T19] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T24] (  3,  3   )     int  ->   x1         "Inlining Arg"
-;  V31 tmp19        [V31,T35] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V31 tmp19        [V31,T33] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V32 tmp20        [V32,T23] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,13 +49,13 @@
 ;  V38 tmp26        [V38,T13] (  5,  5   )    long  ->  [fp-0x58]  spill-single-def "Inlining Arg"
 ;* V39 tmp27        [V39    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V40 tmp28        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V41 tmp29        [V41,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V41 tmp29        [V41,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V42 tmp30        [V42,T11] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V43 tmp31        [V43,T12] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V44 tmp32        [V44,T06] (  3, 12   )   byref  ->   x1         "dup spill"
 ;* V45 tmp33        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp34        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V47 tmp35        [V47,T34] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp35        [V47,T32] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V49 tmp37        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
@@ -65,8 +65,8 @@
 ;* V54 tmp42        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
 ;  V55 tmp43        [V55    ] (  3,  3   )     int  ->  [fp-0x50]  do-not-enreg[X] addr-exposed "field V28.Item1 (fldOffset=0x0)" P-DEP
 ;  V56 tmp44        [V56    ] (  3,  3   )     int  ->  [fp-0x4C]  do-not-enreg[X] addr-exposed "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V57 tmp45        [V57,T40] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp46        [V58,T41] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V57 tmp45        [V57,T38] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp46        [V58,T39] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V59 tmp47        [V59    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V60 tmp48        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
 ;* V64 tmp52        [V64    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x8)" P-INDEP
 ;  V65 tmp53        [V65,T17] (  3,  4.50)   byref  ->  x23         single-def "V05.[000..008)"
 ;  V66 tmp54        [V66,T18] (  3,  4.50)     int  ->  x22         single-def "V05.[008..012)"
-;  V67 tmp55        [V67,T37] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
-;  V68 tmp56        [V68,T39] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
+;  V67 tmp55        [V67,T35] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
+;  V68 tmp56        [V68,T37] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
 ;  V69 tmp57        [V69,T03] (  2, 16   )     ref  ->   x1         "argument with side effect"
 ;  V70 GsCookie     [V70    ] (  1,  1   )    long  ->  [fp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V71 PSPSym       [V71,T43] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
+;  V71 PSPSym       [V71,T40] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
 ;  V72 cse0         [V72,T08] (  5, 10   )     int  ->  x11         "CSE - aggressive"
 ;  V73 cse1         [V73,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V74 rat0         [V74,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V74 rat0         [V74,T29] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V75 rat1         [V75,T26] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V76 rat2         [V76,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V76 rat2         [V76,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V77 rat3         [V77,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V78 rat4         [V78,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V78 rat4         [V78,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V79 rat5         [V79,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V80 rat6         [V80,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V81 rat7         [V81,T42] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V82 rat8         [V82,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V83 rat9         [V83,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V84 rat10        [V84,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V85 rat11        [V85,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V80 rat6         [V80,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V81 rat7         [V81,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V82 rat8         [V82,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 64
 

+0 (0.00%) : 314076.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.Nullable1[int]]:CopyToObjects(System.Object[],int):this (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 this         [V00,T10] (  4,  4   )     ref  ->  x20         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->  x21         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T05] (  5, 50   )     int  ->  x19        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->  x23        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.Nullable`1[int]]>
 ;  V06 loc3         [V06,T01] (  8,104   )     ref  ->  x26         class-hnd <<unknown class>>
@@ -22,23 +22,20 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->  x27         class-hnd "Inlining Arg" <System.__Canon>
 ;* V13 tmp6         [V13    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Nullable`1[int]>
-;  V14 tmp7         [V14,T16] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T06] (  2, 32   )   ubyte  ->  x28         "field V13.hasValue (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T07] (  2, 32   )     int  ->  [fp+0x14]  spill-single-def "field V13.value (fldOffset=0x4)" P-INDEP
 ;* V17 tmp10        [V17    ] (  0,  0   )     ref  ->  zero-ref    "V08.[000..008)"
 ;  V18 tmp11        [V18,T08] (  2, 32   )   ubyte  ->  x28         "V08.[008..009)"
 ;* V19 tmp12        [V19    ] (  0,  0   )     int  ->  zero-ref    "V08.[012..016)"
 ;  V20 cse0         [V20,T13] (  2, 17   )    long  ->  x25         hoist "CSE - aggressive"
-;  V21 cse1         [V21,T18] (  3,  6   )     int  ->  x24         "CSE - aggressive"
-;  V22 rat0         [V22,T20] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V23 rat1         [V23,T21] (  3,  4   )    long  ->  x25         "runtime lookup"
-;  V24 rat2         [V24,T19] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
-;* V25 rat3         [V25,T15] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat4         [V26,T22] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V27 rat5         [V27,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V28 rat6         [V28,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V29 rat7         [V29,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V30 rat8         [V30,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V21 cse1         [V21,T16] (  3,  6   )     int  ->  x24         "CSE - aggressive"
+;  V22 rat0         [V22,T18] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V23 rat1         [V23,T19] (  3,  4   )    long  ->  x25         "runtime lookup"
+;  V24 rat2         [V24,T17] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
+;* V25 rat3         [V25,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V26 rat4         [V26,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V27 rat5         [V27,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 

libraries_tests.run.osx.arm64.Release.mch

-20 (-0.60%) : 323886.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

@@ -169,7 +169,6 @@
 ;  V157 cse16       [V157,T59] (  3,  0.10)     int  ->  x27         "CSE - conservative"
 ;  V158 cse17       [V158,T67] (  2,  0.00)     int  ->   x1         "CSE - conservative"
 ;  V159 rat0        [V159,T26] (  5,  7.12)     ref  ->  x21         class-hnd "replacement local" <System.Collections.Generic.List`1[System.String]>
-;  TEMP_01                                   byref  ->  [fp-0x90]
 ;
 ; Lcl frame size = 64
 
@@ -182,11 +181,8 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0x80]
             stp     fp, lr, [sp, #0x90]
             add     fp, sp, #144
-            sub     x9, fp, #144
-            movi    v16.16b, #0
-            stp     q16, q16, [x9]
-            stp     xzr, xzr, [x9, #0x20]
-            str     xzr, [x9, #0x30]
+            str     xzr, [fp, #-0x78]  // [V06 loc4]
+            str     xzr, [fp, #-0x68]  // [V06 loc4+0x10]
             add     x2, sp, #160
             str     x2, [fp, #-0x58]   // [V140 PSPSym]
             movz    x2, #0xD1FFAB1E
@@ -198,7 +194,7 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
-                       ;; size=88 bbWeight=1 PerfScore 16.50
+                       ;; size=76 bbWeight=1 PerfScore 14.50
 G_M8186_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x21, x20
             ; gcrRegs +[x21]
@@ -1256,9 +1252,6 @@ G_M8186_IG85:        ; bbWeight=0.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
                        ;; size=48 bbWeight=0.03 PerfScore 0.51
 G_M8186_IG86:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x26 x28]
-            add     x14, x20, #32
-            ; byrRegs +[x14]
-            str     x14, [fp, #-0x90]  // [TEMP_01]
             mov     x0, x26
             ; gcrRegs +[x0]
             mov     x1, xzr
@@ -1267,7 +1260,6 @@ G_M8186_IG86:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             ldr     x2, [x2, #0x28]
             blr     x2
             ; gcrRegs -[x26]
-            ; byrRegs -[x14]
             ; gcr arg pop 0
             ldr     w2, [x28, #0x08]
             mov     x1, x28
@@ -1280,7 +1272,7 @@ G_M8186_IG86:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             blr     x3
             ; gcrRegs -[x1 x28]
             ; gcr arg pop 0
-            ldr     x14, [fp, #-0x90]  // [TEMP_01]
+            add     x14, x20, #32
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -1295,7 +1287,7 @@ G_M8186_IG86:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             ; gcrRegs -[x15]
             cmp     w14, w15
             blt     G_M8186_IG90
-                       ;; size=100 bbWeight=0.00 PerfScore 0.01
+                       ;; size=92 bbWeight=0.00 PerfScore 0.01
 G_M8186_IG87:        ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
             str     xzr, [x20, #0x20]
@@ -1507,7 +1499,7 @@ G_M8186_IG105:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
                        ;; size=32 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3360, prolog size 88, PerfScore 759.58, instruction count 840, allocated bytes for code 3360 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3340, prolog size 76, PerfScore 757.58, instruction count 835, allocated bytes for code 3340 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -1518,7 +1510,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 804 (0x00324) Actual length = 3216 (0x000c90)
+  Function Length   : 799 (0x0031f) Actual length = 3196 (0x000c7c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.56%) : 159796.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)

@@ -11,30 +11,30 @@
 ;
 ;  V00 this         [V00,T00] ( 31, 13.31)     ref  ->  x19         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T01] ( 15,  6.30)     ref  ->  x20         ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T15] (  5,  3   )     ref  ->  x21         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T16] (  6,  2.50)   ubyte  ->  x22         single-def
+;  V02 arg2         [V02,T14] (  5,  3   )     ref  ->  x21         class-hnd single-def <System.__Canon>
+;  V03 arg3         [V03,T15] (  6,  2.50)   ubyte  ->  x22         single-def
 ;  V04 loc0         [V04    ] ( 17,  6.78)  struct (16) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-;  V05 loc1         [V05,T25] (  5,  3   )     ref  ->  x23         class-hnd single-def <<unknown class>>
-;  V06 loc2         [V06,T23] (  6,  3.51)     int  ->  x24         single-def
-;  V07 loc3         [V07,T33] (  7,  2.34)     int  ->  x25        
-;  V08 loc4         [V08,T24] (  5,  3.07)   byref  ->  x26        
-;  V09 loc5         [V09,T13] ( 13,  5.28)     int  ->  x27        
-;  V10 loc6         [V10,T35] (  5,  2.00)     int  ->  x22        
-;  V11 loc7         [V11,T51] (  4,  1.50)     ref  ->  x23         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-;  V12 loc8         [V12,T50] (  3,  1.50)     int  ->  x22         single-def
+;  V05 loc1         [V05,T23] (  5,  3   )     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V06 loc2         [V06,T21] (  6,  3.51)     int  ->  x24         single-def
+;  V07 loc3         [V07,T31] (  7,  2.34)     int  ->  x25        
+;  V08 loc4         [V08,T22] (  5,  3.07)   byref  ->  x26        
+;  V09 loc5         [V09,T12] ( 13,  5.28)     int  ->  x27        
+;  V10 loc6         [V10,T33] (  5,  2.00)     int  ->  x22        
+;  V11 loc7         [V11,T48] (  4,  1.50)     ref  ->  x23         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+;  V12 loc8         [V12,T47] (  3,  1.50)     int  ->  x22         single-def
 ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T38] (  3,  2   )     int  ->  x24        
+;  V14 tmp1         [V14,T36] (  3,  2   )     int  ->  x24        
 ;* V15 tmp2         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp3         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V17 tmp4         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T14] (  5,  5.00)   byref  ->   x0         single-def "dup spill"
-;  V19 tmp6         [V19,T70] (  3,  0   )    long  ->   x1         "spilling helperCall"
+;  V18 tmp5         [V18,T13] (  5,  5.00)   byref  ->   x0         single-def "dup spill"
+;  V19 tmp6         [V19,T67] (  3,  0   )    long  ->   x1         "spilling helperCall"
 ;* V20 tmp7         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp8         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp9         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V23 tmp10        [V23,T71] (  3,  0   )    long  ->  [fp+0x20]  "spilling helperCall"
+;  V23 tmp10        [V23,T68] (  3,  0   )    long  ->  [fp+0x20]  "spilling helperCall"
 ;* V24 tmp11        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T68] (  4,  0   )    long  ->  [fp+0x18]  "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T65] (  4,  0   )    long  ->  [fp+0x18]  "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V27 tmp14        [V27    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V28 tmp15        [V28    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,12 +47,12 @@
 ;* V35 tmp22        [V35    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp23        [V36    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V37 tmp24        [V37    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V38 tmp25        [V38,T69] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V39 tmp26        [V39,T39] (  3,  2   )     int  ->   x0         "guarded devirt return temp"
+;  V38 tmp25        [V38,T66] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V39 tmp26        [V39,T37] (  3,  2   )     int  ->   x0         "guarded devirt return temp"
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt arg temp"
 ;* V41 tmp28        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[System.ValueTuple`2[Microsoft.CodeAnalysis.SyntaxTree,int],System.ValueTuple`2[Microsoft.CodeAnalysis.SyntaxTree,int]]>
-;  V42 tmp29        [V42,T55] (  3,  1.00)     int  ->   x2         "guarded devirt return temp"
-;  V43 tmp30        [V43,T19] (  7,  4.27)     ref  ->  x28         "guarded devirt arg temp"
+;  V42 tmp29        [V42,T52] (  3,  1.00)     int  ->   x2         "guarded devirt return temp"
+;  V43 tmp30        [V43,T17] (  7,  4.27)     ref  ->  x28         "guarded devirt arg temp"
 ;* V44 tmp31        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
 ;* V45 tmp32        [V45    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp33        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,93 +62,90 @@
 ;  V50 tmp37        [V50,T05] (  3,  6   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V51 tmp38        [V51,T06] (  3,  6   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V53 tmp40        [V53,T53] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V53 tmp40        [V53,T50] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V55 tmp42        [V55,T54] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V55 tmp42        [V55,T51] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V56 tmp43        [V56    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <System.Object>
 ;* V57 tmp44        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V58 tmp45        [V58,T56] (  3,  1.00)     int  ->   x2         "guarded devirt return temp"
+;  V58 tmp45        [V58,T53] (  3,  1.00)     int  ->   x2         "guarded devirt return temp"
 ;* V59 tmp46        [V59    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V60 tmp47        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
 ;* V61 tmp48        [V61    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V62 tmp49        [V62    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V63 tmp50        [V63    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V64 tmp51        [V64,T60] (  3,  0.41)     int  ->   x1         "Inlining Arg"
-;  V65 tmp52        [V65,T58] (  3,  0.41)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V66 tmp53        [V66,T59] (  3,  0.41)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V64 tmp51        [V64,T57] (  3,  0.41)     int  ->   x1         "Inlining Arg"
+;  V65 tmp52        [V65,T55] (  3,  0.41)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V66 tmp53        [V66,T56] (  3,  0.41)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V67 tmp54        [V67    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V68 tmp55        [V68,T66] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V68 tmp55        [V68,T63] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V69 tmp56        [V69    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V70 tmp57        [V70,T67] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V70 tmp57        [V70,T64] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V71 tmp58        [V71    ] ( 12,  4.39)     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
 ;  V72 tmp59        [V72    ] ( 17,  6.78)     int  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-;  V73 tmp60        [V73,T40] (  2,  2   )     ref  ->   x0         single-def "field V46._items (fldOffset=0x0)" P-INDEP
-;  V74 tmp61        [V74,T41] (  2,  2   )     int  ->   x1         single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;  V75 tmp62        [V75,T64] (  2,  0.14)     ref  ->   x0         single-def "field V61._items (fldOffset=0x0)" P-INDEP
-;  V76 tmp63        [V76,T65] (  2,  0.14)     int  ->   x1         single-def "field V61._length (fldOffset=0x8)" P-INDEP
+;  V73 tmp60        [V73,T38] (  2,  2   )     ref  ->   x0         single-def "field V46._items (fldOffset=0x0)" P-INDEP
+;  V74 tmp61        [V74,T39] (  2,  2   )     int  ->   x1         single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;  V75 tmp62        [V75,T61] (  2,  0.14)     ref  ->   x0         single-def "field V61._items (fldOffset=0x0)" P-INDEP
+;  V76 tmp63        [V76,T62] (  2,  0.14)     int  ->   x1         single-def "field V61._length (fldOffset=0x8)" P-INDEP
 ;  V77 tmp64        [V77,T08] (  3,  6   )     int  ->   x2         "index expr"
 ;  V78 tmp65        [V78,T09] (  3,  6   )     int  ->   x1         "index expr"
-;  V79 tmp66        [V79,T22] (  2,  3.78)    long  ->   x1         "argument with side effect"
-;  V80 tmp67        [V80,T45] (  2,  2.00)    long  ->   x1         "argument with side effect"
-;  V81 tmp68        [V81,T49] (  2,  1.78)    long  ->   x1         "argument with side effect"
-;  V82 tmp69        [V82,T63] (  2,  0.27)     int  ->   x1         "argument with side effect"
-;  V83 tmp70        [V83,T61] (  3,  0.41)     int  ->   x2         "index expr"
-;  V84 tmp71        [V84,T62] (  3,  0.41)     int  ->   x1         "index expr"
-;  V85 tmp72        [V85,T37] (  2,  2.00)    long  ->   x1         "argument with side effect"
-;  V86 tmp73        [V86,T92] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V87 tmp74        [V87,T91] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V88 tmp75        [V88,T93] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V89 tmp76        [V89,T94] (  2,  0   )    long  ->   x0         "argument with side effect"
-;  V90 tmp77        [V90,T95] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V91 tmp78        [V91,T96] (  2,  0   )    long  ->   x0         "argument with side effect"
-;  V92 tmp79        [V92,T46] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V79 tmp66        [V79,T20] (  2,  3.78)    long  ->   x1         "argument with side effect"
+;  V80 tmp67        [V80,T42] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V81 tmp68        [V81,T46] (  2,  1.78)    long  ->   x1         "argument with side effect"
+;  V82 tmp69        [V82,T60] (  2,  0.27)     int  ->   x1         "argument with side effect"
+;  V83 tmp70        [V83,T58] (  3,  0.41)     int  ->   x2         "index expr"
+;  V84 tmp71        [V84,T59] (  3,  0.41)     int  ->   x1         "index expr"
+;  V85 tmp72        [V85,T35] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V86 tmp73        [V86,T89] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V87 tmp74        [V87,T88] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V88 tmp75        [V88,T90] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V89 tmp76        [V89,T91] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V90 tmp77        [V90,T92] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V91 tmp78        [V91,T93] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V92 tmp79        [V92,T43] (  2,  2.00)    long  ->   x1         "argument with side effect"
 ;  V93 cse0         [V93,T03] ( 31,  6.22)    long  ->  x28         multi-def "CSE - aggressive"
-;  V94 rat0         [V94,T72] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V95 rat1         [V95,T73] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V96 rat2         [V96,T17] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat3         [V97,T20] (  3,  4   )    long  ->   x1         "runtime lookup"
+;  V94 rat0         [V94,T69] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
+;  V95 rat1         [V95,T70] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V96 rat2         [V96,T16] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V97 rat3         [V97,T18] (  3,  4   )    long  ->   x1         "runtime lookup"
 ;  V98 rat4         [V98,T10] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V99 rat5         [V99,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V100 rat6        [V100,T42] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V101 rat7        [V101,T11] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V102 rat8        [V102,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V103 rat9        [V103,T26] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V104 rat10       [V104,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V105 rat11       [V105,T21] (  3,  3.78)    long  ->   x1         "runtime lookup"
-;  V106 rat12       [V106,T12] (  3,  5.29)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V107 rat13       [V107,T43] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V108 rat14       [V108,T29] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V109 rat15       [V109,T47] (  3,  1.96)    long  ->   x0         "Spilling to split statement for tree"
-;  V110 rat16       [V110,T48] (  3,  1.78)    long  ->   x1         "runtime lookup"
-;  V111 rat17       [V111,T31] (  3,  2.49)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V112 rat18       [V112,T57] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat19       [V113,T32] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat20       [V114,T34] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat21       [V115,T44] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V116 rat22       [V116,T30] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V117 rat23       [V117,T74] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V118 rat24       [V118,T75] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V119 rat25       [V119,T76] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;* V120 rat26       [V120,T77] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V121 rat27       [V121,T97] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V122 rat28       [V122,T78] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V123 rat29       [V123,T79] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V124 rat30       [V124,T80] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V125 rat31       [V125,T81] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V126 rat32       [V126,T82] (  3,  0   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V127 rat33       [V127,T83] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V128 rat34       [V128,T84] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V129 rat35       [V129,T98] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V130 rat36       [V130,T85] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V131 rat37       [V131,T86] (  3,  0   )    long  ->   x1         "runtime lookup"
+;* V99 rat5         [V99,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat6        [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat7        [V101,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat8        [V102,T19] (  3,  3.78)    long  ->   x1         "runtime lookup"
+;  V103 rat9        [V103,T11] (  3,  5.29)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V104 rat10       [V104,T40] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V105 rat11       [V105,T27] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V106 rat12       [V106,T44] (  3,  1.96)    long  ->   x0         "Spilling to split statement for tree"
+;  V107 rat13       [V107,T45] (  3,  1.78)    long  ->   x1         "runtime lookup"
+;  V108 rat14       [V108,T29] (  3,  2.49)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V109 rat15       [V109,T54] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V110 rat16       [V110,T30] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V111 rat17       [V111,T32] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V112 rat18       [V112,T41] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V113 rat19       [V113,T28] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V114 rat20       [V114,T71] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
+;  V115 rat21       [V115,T72] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V116 rat22       [V116,T73] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;* V117 rat23       [V117,T74] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V118 rat24       [V118,T94] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V119 rat25       [V119,T75] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V120 rat26       [V120,T76] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V121 rat27       [V121,T77] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V122 rat28       [V122,T78] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V123 rat29       [V123,T79] (  3,  0   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
+;  V124 rat30       [V124,T80] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V125 rat31       [V125,T81] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V126 rat32       [V126,T95] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V127 rat33       [V127,T82] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V128 rat34       [V128,T83] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V129 rat35       [V129,T84] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V130 rat36       [V130,T85] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V131 rat37       [V131,T86] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;  V132 rat38       [V132,T87] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V133 rat39       [V133,T88] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V134 rat40       [V134,T89] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V135 rat41       [V135,T90] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V136 rat42       [V136,T52] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V137 rat43       [V137,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V138 rat44       [V138,T36] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V139 rat45       [V139,T28] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V133 rat39       [V133,T49] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V134 rat40       [V134,T25] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V135 rat41       [V135,T34] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V136 rat42       [V136,T26] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 48
 
@@ -171,7 +168,7 @@ G_M33517_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     w22, w3
                        ;; size=52 bbWeight=1 PerfScore 10.50
 G_M33517_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
-            cbz     x20, G_M33517_IG45
+            cbz     x20, G_M33517_IG46
             ldr     w0, [x19, #0x40]
             cbz     w0, G_M33517_IG09
                        ;; size=12 bbWeight=1 PerfScore 5.00
@@ -182,13 +179,13 @@ G_M33517_IG03:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
 G_M33517_IG04:        ; bbWeight=1, isz, extend
             ldr     x23, [x19, #0x08]
             ; gcrRegs +[x23]
-            cbnz    x23, G_M33517_IG46
+            cbnz    x23, G_M33517_IG47
             ldr     x0, [x20]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M33517_IG11
+            bne     G_M33517_IG13
                        ;; size=32 bbWeight=1 PerfScore 10.00
 G_M33517_IG05:        ; bbWeight=0.70, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
             mov     x0, x20
@@ -215,7 +212,7 @@ G_M33517_IG07:        ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
...

-12 (-0.36%) : 280433.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

@@ -196,7 +196,6 @@
 ;  V184 cse19       [V184,T81] (  5,  0.04)     int  ->   x0         multi-def "CSE - conservative"
 ;  V185 cse20       [V185,T82] (  5,  0.04)     int  ->   x0         multi-def "CSE - conservative"
 ;  V186 rat0        [V186,T17] (  6,  8   )     ref  ->  x21         class-hnd "replacement local" <<unknown class>>
-;  TEMP_01                                   byref  ->  [fp-0xA0]
 ;
 ; Lcl frame size = 80
 
@@ -209,11 +208,10 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0x90]
             stp     fp, lr, [sp, #0xA0]
             add     fp, sp, #160
-            sub     x9, fp, #160
+            sub     x9, fp, #136
             movi    v16.16b, #0
             stp     q16, q16, [x9]
-            stp     q16, q16, [x9, #0x20]
-            str     xzr, [x9, #0x40]
+            stp     xzr, xzr, [x9, #0x20]
             add     x2, sp, #176
             str     x2, [fp, #-0x58]   // [V164 PSPSym]
             movz    x2, #0xD1FFAB1E
@@ -225,7 +223,7 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
-                       ;; size=88 bbWeight=1 PerfScore 16.50
+                       ;; size=84 bbWeight=1 PerfScore 15.50
 G_M8186_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x21, x20
             ; gcrRegs +[x21]
@@ -1321,9 +1319,6 @@ G_M8186_IG78:        ; bbWeight=0.14, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
             sub     w0, w0, w1
             cmp     w0, w27
             ble     G_M8186_IG79
-            add     x14, x21, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #-0xA0]  // [TEMP_01]
             ldr     x25, [x21, #0x20]
             ; gcrRegs +[x25]
             add     w1, w1, w27
@@ -1332,7 +1327,6 @@ G_M8186_IG78:        ; bbWeight=0.14, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
             add     x11, x24, #64
             ldr     x2, [x11]
             blr     x2
-            ; byrRegs -[x14]
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
@@ -1341,7 +1335,7 @@ G_M8186_IG78:        ; bbWeight=0.14, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
             blr     x2
             ; gcrRegs -[x1 x25]
             ; gcr arg pop 0
-            ldr     x14, [fp, #-0xA0]  // [TEMP_01]
+            add     x14, x21, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -1352,7 +1346,7 @@ G_M8186_IG78:        ; bbWeight=0.14, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
             add     w0, w0, #1
             str     w0, [x21, #0x14]
             b       G_M8186_IG62
-                       ;; size=108 bbWeight=0.14 PerfScore 6.00
+                       ;; size=100 bbWeight=0.14 PerfScore 5.57
 G_M8186_IG79:        ; bbWeight=0.02, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
             str     xzr, [x21, #0x08]
@@ -1492,7 +1486,7 @@ G_M8186_IG91:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
                        ;; size=32 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3376, prolog size 88, PerfScore 975.12, instruction count 844, allocated bytes for code 3376 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3364, prolog size 84, PerfScore 973.69, instruction count 841, allocated bytes for code 3364 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -1503,7 +1497,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 808 (0x00328) Actual length = 3232 (0x000ca0)
+  Function Length   : 805 (0x00325) Actual length = 3220 (0x000c94)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 162184.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

@@ -14,7 +14,7 @@
 ;  V02 arg2         [V02    ] (  7,  5   )  struct ( 8) [fp+0x38]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <<unknown class>>
 ;  V04 loc1         [V04    ] (  3,  2   )  struct ( 8) [fp+0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.AsyncLazy`1+WaitThatValidatesInvariants[System.__Canon]>
-;  V05 loc2         [V05,T32] (  2,  2.00)     ref  ->  x20         class-hnd single-def <<unknown class>>
+;  V05 loc2         [V05,T30] (  2,  2.00)     ref  ->  x20         class-hnd single-def <<unknown class>>
 ;  V06 loc3         [V06,T21] (  9,  4   )     ref  ->  [fp+0x18]  class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T25] (  4,  3.00)     ref  ->  x20        
@@ -26,11 +26,11 @@
 ;* V14 tmp7         [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V15 tmp8         [V15,T22] (  6,  4   )    long  ->   x2         "Indirect call through function pointer"
 ;* V16 tmp9         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.HashSet`1+Enumerator[Roslyn.Utilities.AsyncLazy`1+Request[Microsoft.CodeAnalysis.TreeAndVersion]]>
-;  V17 tmp10        [V17,T34] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
-;  V18 tmp11        [V18,T43] (  2,  0   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-;  V19 tmp12        [V19,T30] (  3,  2   )     ref  ->  x21         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+;  V17 tmp10        [V17,T32] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
+;  V18 tmp11        [V18,T40] (  2,  0   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+;  V19 tmp12        [V19,T28] (  3,  2   )     ref  ->  x21         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V20 tmp13        [V20,T04] ( 10, 17   )     ref  ->  x20         class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-;  V21 tmp14        [V21,T35] (  2,  0   )   ubyte  ->   x1         "Inline return value spill temp"
+;  V21 tmp14        [V21,T33] (  2,  0   )   ubyte  ->   x1         "Inline return value spill temp"
 ;  V22 tmp15        [V22,T24] (  3,  4   )   byref  ->  x22         "Inlining Arg"
 ;* V23 tmp16        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
 ;* V24 tmp17        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
@@ -40,9 +40,9 @@
 ;* V28 tmp21        [V28,T15] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V29 tmp22        [V29,T00] (  8, 32   )     ref  ->  x24         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V30 tmp23        [V30,T07] (  3,  9   )     ref  ->  x22         class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V31 tmp24        [V31,T33] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
+;  V31 tmp24        [V31,T31] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
 ;  V32 tmp25        [V32,T16] (  5,  5.00)     int  ->  x14         "Inline stloc first use temp"
-;  V33 tmp26        [V33,T31] (  3,  2   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V33 tmp26        [V33,T29] (  3,  2   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V34 tmp27        [V34,T02] (  3, 12   )     ref  ->   x1         class-hnd "Inline stloc first use temp" <System.Object>
 ;  V35 tmp28        [V35,T03] (  3, 12   )   byref  ->   x0         "Inlining Arg"
 ;  V36 tmp29        [V36,T06] (  2, 10   )     ref  ->   x1         class-hnd exact "Inlining Arg" <System.Object>
@@ -50,31 +50,28 @@
 ;  V38 tmp31        [V38,T26] (  3,  3   )     ref  ->  x26         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;* V39 tmp32        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V40 tmp33        [V40,T20] (  4, 16.18)   byref  ->  x22         "Inlining Arg"
-;  V41 tmp34        [V41,T29] (  5,  8.18)     ref  ->  x23         class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+;  V41 tmp34        [V41,T27] (  5,  8.18)     ref  ->  x23         class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
 ;* V42 tmp35        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V43 tmp36        [V43    ] (  7,  5   )     ref  ->  [fp+0x38]  do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
 ;  V44 tmp37        [V44    ] (  3,  2   )     ref  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
 ;  V45 tmp38        [V45    ] (  2,  0.50)     int  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-;  V46 tmp39        [V46,T44] (  2,  0   )     ref  ->   x0         "argument with side effect"
-;  V47 tmp40        [V47,T45] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V48 tmp41        [V48,T46] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V49 PSPSym       [V49,T37] (  1,  1   )    long  ->  [fp+0x48]  do-not-enreg[V] "PSPSym"
+;  V46 tmp39        [V46,T41] (  2,  0   )     ref  ->   x0         "argument with side effect"
+;  V47 tmp40        [V47,T42] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V48 tmp41        [V48,T43] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V49 PSPSym       [V49,T34] (  1,  1   )    long  ->  [fp+0x48]  do-not-enreg[V] "PSPSym"
 ;  V50 cse0         [V50,T05] (  5, 11.00)   byref  ->  x25         "CSE - aggressive"
 ;  V51 cse1         [V51,T23] (  4,  4   )   byref  ->  x21         "CSE - moderate"
-;  V52 rat0         [V52,T38] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
-;  V53 rat1         [V53,T39] (  3,  0   )    long  ->   x2         "runtime lookup"
-;  V54 rat2         [V54,T40] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V52 rat0         [V52,T35] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
+;  V53 rat1         [V53,T36] (  3,  0   )    long  ->   x2         "runtime lookup"
+;  V54 rat2         [V54,T37] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;  V55 rat3         [V55,T17] (  3,  4.40)    long  ->   x1         "Spilling to split statement for tree"
 ;  V56 rat4         [V56,T11] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;  V57 rat5         [V57,T18] (  3,  4.40)    long  ->   x1         "Spilling to split statement for tree"
 ;  V58 rat6         [V58,T12] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V59 rat7         [V59,T28] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V60 rat8         [V60,T36] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V61 rat9         [V61,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V62 rat10        [V62,T19] (  3,  4.40)    long  ->   x1         "Spilling to split statement for tree"
-;  V63 rat11        [V63,T13] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V64 rat12        [V64,T41] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
-;  V65 rat13        [V65,T42] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V59 rat7         [V59,T19] (  3,  4.40)    long  ->   x1         "Spilling to split statement for tree"
+;  V60 rat8         [V60,T13] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V61 rat9         [V61,T38] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
+;  V62 rat10        [V62,T39] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 64
 
@@ -274,7 +271,7 @@ G_M38013_IG19:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ldr     x2, [x1, #0x38]
             ldr     x2, [x2]
             ldr     x11, [x2, #0x60]
-            cbz     x11, G_M38013_IG25
+            cbz     x11, G_M38013_IG24
                        ;; size=24 bbWeight=1 PerfScore 15.00
 G_M38013_IG20:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
@@ -307,7 +304,7 @@ G_M38013_IG21:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             blr     x2
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            b       G_M38013_IG28
+            b       G_M38013_IG42
                        ;; size=32 bbWeight=0 PerfScore 0.00
 G_M38013_IG22:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
             ; byrRegs +[x21]
@@ -315,7 +312,7 @@ G_M38013_IG22:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
             ; byrRegs +[x22]
             ldr     x14, [x22]
             ; gcrRegs +[x14]
-            cbz     x14, G_M38013_IG29
+            cbz     x14, G_M38013_IG26
                        ;; size=12 bbWeight=1 PerfScore 4.50
 G_M38013_IG23:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=600000 {x21 x22}, byref
             ; gcrRegs -[x14]
@@ -325,11 +322,23 @@ G_M38013_IG23:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=600000
             ; gcrRegs -[x1]
             cmp     w1, #0
             cset    x1, ne
-            b       G_M38013_IG33
+            b       G_M38013_IG29
                        ;; size=20 bbWeight=0 PerfScore 0.00
-G_M38013_IG24:        ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=2000000 {x25}, byref, isz
-            ; gcrRegs +[x23-x24]
-            ; byrRegs -[x21-x22] +[x25]
+G_M38013_IG24:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x20]
+            ; byrRegs -[x21-x22]
+            mov     x0, x1
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #1 LSL #32
+            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            ; gcr arg pop 0
+            mov     x11, x0
+            b       G_M38013_IG20
+                       ;; size=28 bbWeight=0.20 PerfScore 0.90
+G_M38013_IG25:        ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=2000000 {x25}, byref, isz
+            ; gcrRegs +[x20 x23-x24]
+            ; byrRegs +[x25]
             add     x14, x24, #56
             ; byrRegs +[x14]
             mov     x15, x23
@@ -342,64 +351,16 @@ G_M38013_IG24:        ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
             swpal   w0, w0, [x25]
             ldr     x22, [x24, #0x28]
             ; gcrRegs +[x22]
-            cbz     x22, G_M38013_IG26
+            cbz     x22, G_M38013_IG40
             b       G_M38013_IG43
                        ;; size=36 bbWeight=4 PerfScore 54.00
-G_M38013_IG25:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x20 x22 x24]
-            ; byrRegs -[x25]
-            mov     x0, x1
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            ; gcr arg pop 0
-            mov     x11, x0
-            b       G_M38013_IG20
-                       ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M38013_IG26:        ; bbWeight=1, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x20 x24]
-            add     x0, x24, #32
-            ; byrRegs +[x0]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #2 LSL #32
-            ldr     x1, [x1]
-            ; gcrRegs +[x1]
-            cbz     x0, G_M38013_IG40
-                       ;; size=24 bbWeight=1 PerfScore 6.00
-G_M38013_IG27:        ; bbWeight=4, gcrefRegs=1180002 {x1 x19 x20 x24}, byrefRegs=0001 {x0}, byref, isz
-            bl      <unknown method>
-            ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0]
-            ; gcr arg pop 0
-            mov     x1, x0
-            ; gcrRegs +[x1]
-            cbz     x1, G_M38013_IG28
-            mov     x0, x24
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #1 LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            ; gcrRegs -[x0-x1 x24]
-            ; gcr arg pop 0
-                       ;; size=36 bbWeight=4 PerfScore 34.00
-G_M38013_IG28:        ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            add     x22, x20, #24
-            ; byrRegs +[x22]
-            ldr     x23, [x22]
-            ; gcrRegs +[x23]
-            cbz     x23, G_M38013_IG48
-            b       G_M38013_IG46
-                       ;; size=16 bbWeight=4 PerfScore 22.00
-G_M38013_IG29:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
-            ; gcrRegs -[x23]
-            ; byrRegs -[x22] +[x21]
+G_M38013_IG26:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+            ; gcrRegs -[x22 x24]
+            ; byrRegs -[x25] +[x21]
             ldapr   w14, [x21]
-            tbz     w14, #21, G_M38013_IG35
+            tbz     w14, #21, G_M38013_IG31
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M38013_IG30:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M38013_IG27:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[x21]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -425,7 +386,7 @@ G_M38013_IG30:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             ; gcrRegs -[x0]
             ; gcr arg pop 0
             cmp     w0, #0
-            ble     G_M38013_IG34
+            ble     G_M38013_IG30
             mov     x0, x19
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Threading.Tasks.Task:get_Exception():System.AggregateException:this
@@ -451,33 +412,21 @@ G_M38013_IG30:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             blr     x2
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            b       G_M38013_IG28
+            b       G_M38013_IG42
                        ;; size=160 bbWeight=0 PerfScore 0.00
-G_M38013_IG31:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=2000000 {x25}, byref, isz
+G_M38013_IG28:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=2000000 {x25}, byref, isz
             ; gcrRegs +[x23-x24]
             ; byrRegs +[x25]
             cbz     w0, G_M38013_IG44
-            b       G_M38013_IG24
+            b       G_M38013_IG25
                        ;; size=8 bbWeight=0 PerfScore 0.00
-G_M38013_IG32:        ; bbWeight=0, gcrefRegs=1180001 {x0 x19 x20 x24}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x23] +[x0]
-            ; byrRegs -[x25]
-            movz    x1, #0xD1FFAB1E      // code for <unknown method>
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #1 LSL #32
-            ldr     x1, [x1]
-            blr     x1
-            ; gcrRegs -[x0]
-            ; gcr arg pop 0
-            b       G_M38013_IG26
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M38013_IG33:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
-            ; gcrRegs -[x24]
-            ; byrRegs +[x21]
-            cbz     w1, G_M38013_IG29
+G_M38013_IG29:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+            ; gcrRegs -[x23-x24]
+            ; byrRegs -[x25] +[x21]
...

+0 (0.00%) : 442012.dasm - System.Text.Unicode.Tests.Utf8Tests:.cctor() (Tier1-OSR)

@@ -1288,9 +1288,7 @@ G_M41182_IG56:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ; gcrRegs -[x0]
             ; gcr arg pop 0
             cbz     w0, G_M41182_IG57
-            ldr     x22, [fp, #0xD1FFAB1E] // [V02 loc2]
-            ; gcrRegs +[x22]
-            mov     x0, x22
+            ldr     x0, [fp, #0xD1FFAB1E]  // [V02 loc2]
             ; gcrRegs +[x0]
             ldr     x21, [x0, #0x20]
             ; gcrRegs +[x21]
@@ -1308,11 +1306,13 @@ G_M41182_IG56:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             blr     x2
             ; gcrRegs -[x0 x21]
             ; gcr arg pop 0
-            str     w0, [x22, #0x10]
+            ldr     x1, [fp, #0xD1FFAB1E]  // [V02 loc2]
+            ; gcrRegs +[x1]
+            str     w0, [x1, #0x10]
             b       G_M41182_IG31
-                       ;; size=92 bbWeight=4.00 PerfScore 146.00
+                       ;; size=92 bbWeight=4.00 PerfScore 152.00
 G_M41182_IG57:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x22]
+            ; gcrRegs -[x1]
             ldr     x0, [fp, #0xD1FFAB1E]  // [V02 loc2]
             ; gcrRegs +[x0]
             ldr     x0, [x0, #0x28]
@@ -1474,7 +1474,7 @@ G_M41182_IG66:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
                        ;; size=32 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3644, prolog size 60, PerfScore 81643.37, instruction count 911, allocated bytes for code 3644 (MethodHash=7d905f21) for method System.Text.Unicode.Tests.Utf8Tests:.cctor() (Tier1-OSR)
+; Total bytes of code 3644, prolog size 60, PerfScore 81649.37, instruction count 911, allocated bytes for code 3644 (MethodHash=7d905f21) for method System.Text.Unicode.Tests.Utf8Tests:.cctor() (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:

+4 (+0.18%) : 51336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)

@@ -11,30 +11,30 @@
 ;
 ;  V00 this         [V00,T00] ( 29, 13.21)     ref  ->  x19         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T02] ( 15,  6.23)     ref  ->  x20         ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T15] (  5,  3   )     ref  ->  x21         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T16] (  6,  2.49)   ubyte  ->  x22         single-def
+;  V02 arg2         [V02,T14] (  5,  3   )     ref  ->  x21         class-hnd single-def <System.__Canon>
+;  V03 arg3         [V03,T15] (  6,  2.49)   ubyte  ->  x22         single-def
 ;  V04 loc0         [V04    ] ( 17,  7.12)  struct (16) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-;  V05 loc1         [V05,T26] (  5,  3.03)     ref  ->  x23         class-hnd single-def <<unknown class>>
-;  V06 loc2         [V06,T23] (  6,  3.57)     int  ->  x25         single-def
-;  V07 loc3         [V07,T33] (  7,  2.59)     int  ->  x26        
-;  V08 loc4         [V08,T24] (  5,  3.06)   byref  ->  x27        
+;  V05 loc1         [V05,T24] (  5,  3.03)     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V06 loc2         [V06,T21] (  6,  3.57)     int  ->  x25         single-def
+;  V07 loc3         [V07,T31] (  7,  2.59)     int  ->  x26        
+;  V08 loc4         [V08,T22] (  5,  3.06)   byref  ->  x27        
 ;  V09 loc5         [V09,T11] ( 13,  5.60)     int  ->  x28        
-;  V10 loc6         [V10,T38] (  5,  2.03)     int  ->  x28        
-;  V11 loc7         [V11,T51] (  4,  1.49)     ref  ->  x23         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-;  V12 loc8         [V12,T50] (  3,  1.53)     int  ->  x28         single-def
+;  V10 loc6         [V10,T36] (  5,  2.03)     int  ->  x28        
+;  V11 loc7         [V11,T48] (  4,  1.49)     ref  ->  x23         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+;  V12 loc8         [V12,T47] (  3,  1.53)     int  ->  x28         single-def
 ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T43] (  3,  2.02)     int  ->  x25        
+;  V14 tmp1         [V14,T41] (  3,  2.02)     int  ->  x25        
 ;* V15 tmp2         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp3         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V17 tmp4         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T14] (  5,  5.07)   byref  ->   x0         single-def "dup spill"
-;  V19 tmp6         [V19,T78] (  3,  0.00)    long  ->   x1         "spilling helperCall"
+;  V18 tmp5         [V18,T13] (  5,  5.07)   byref  ->   x0         single-def "dup spill"
+;  V19 tmp6         [V19,T75] (  3,  0.00)    long  ->   x1         "spilling helperCall"
 ;* V20 tmp7         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp8         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp9         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V23 tmp10        [V23,T81] (  3,  0   )    long  ->  [fp+0x20]  "spilling helperCall"
+;  V23 tmp10        [V23,T78] (  3,  0   )    long  ->  [fp+0x20]  "spilling helperCall"
 ;* V24 tmp11        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T80] (  4,  0   )    long  ->  [fp+0x18]  "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T77] (  4,  0   )    long  ->  [fp+0x18]  "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V27 tmp14        [V27    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V28 tmp15        [V28    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,12 +47,12 @@
 ;* V35 tmp22        [V35    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp23        [V36    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V37 tmp24        [V37    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V38 tmp25        [V38,T67] (  4,  0.06)    long  ->  x11         "VirtualCall with runtime lookup"
-;  V39 tmp26        [V39,T45] (  3,  1.98)     int  ->  x25         "guarded devirt return temp"
+;  V38 tmp25        [V38,T64] (  4,  0.06)    long  ->  x11         "VirtualCall with runtime lookup"
+;  V39 tmp26        [V39,T42] (  3,  1.98)     int  ->  x25         "guarded devirt return temp"
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt arg temp"
 ;* V41 tmp28        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[Microsoft.CodeAnalysis.CSharp.Syntax.InterfaceDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InterfaceDeclarationSyntax]>
-;  V42 tmp29        [V42,T59] (  3,  0.99)     int  ->   x3         "guarded devirt return temp"
-;  V43 tmp30        [V43,T19] (  7,  4.24)     ref  ->  x24         "guarded devirt arg temp"
+;  V42 tmp29        [V42,T56] (  3,  0.99)     int  ->   x3         "guarded devirt return temp"
+;  V43 tmp30        [V43,T17] (  7,  4.24)     ref  ->  x24         "guarded devirt arg temp"
 ;* V44 tmp31        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
 ;* V45 tmp32        [V45    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp33        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,98 +62,95 @@
 ;  V50 tmp37        [V50,T05] (  3,  6.08)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V51 tmp38        [V51,T06] (  3,  6.08)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V53 tmp40        [V53,T57] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V53 tmp40        [V53,T54] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V55 tmp42        [V55,T58] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V55 tmp42        [V55,T55] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V56 tmp43        [V56    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <System.Object>
 ;* V57 tmp44        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V58 tmp45        [V58,T60] (  3,  0.99)     int  ->   x3         "guarded devirt return temp"
+;  V58 tmp45        [V58,T57] (  3,  0.99)     int  ->   x3         "guarded devirt return temp"
 ;* V59 tmp46        [V59    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V60 tmp47        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PENamedTypeSymbol+PENamedTypeSymbolGeneric>
-;  V61 tmp48        [V61,T52] (  2,  1.38)     ref  ->   x1         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V61 tmp48        [V61,T49] (  2,  1.38)     ref  ->   x1         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;* V62 tmp49        [V62    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
-;  V63 tmp50        [V63,T61] (  3,  0.69)   ubyte  ->   x3         "Inline return value spill temp"
-;  V64 tmp51        [V64,T55] (  3,  1.03)     ref  ->   x1         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
-;  V65 tmp52        [V65,T53] (  2,  1.38)     int  ->  [fp+0x14]  spill-single-def "Inlining Arg"
+;  V63 tmp50        [V63,T58] (  3,  0.69)   ubyte  ->   x3         "Inline return value spill temp"
+;  V64 tmp51        [V64,T52] (  3,  1.03)     ref  ->   x1         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
+;  V65 tmp52        [V65,T50] (  2,  1.38)     int  ->  [fp+0x14]  spill-single-def "Inlining Arg"
 ;* V66 tmp53        [V66    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V67 tmp54        [V67    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V68 tmp55        [V68    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V69 tmp56        [V69,T64] (  3,  0.11)     int  ->   x1         "Inlining Arg"
-;  V70 tmp57        [V70,T62] (  3,  0.11)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V71 tmp58        [V71,T63] (  3,  0.11)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V69 tmp56        [V69,T61] (  3,  0.11)     int  ->   x1         "Inlining Arg"
+;  V70 tmp57        [V70,T59] (  3,  0.11)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V71 tmp58        [V71,T60] (  3,  0.11)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V72 tmp59        [V72    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V73 tmp60        [V73,T72] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V73 tmp60        [V73,T69] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V74 tmp61        [V74    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V75 tmp62        [V75,T73] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V75 tmp62        [V75,T70] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V76 tmp63        [V76    ] ( 12,  4.55)     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
 ;  V77 tmp64        [V77    ] ( 17,  7.12)     int  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-;  V78 tmp65        [V78,T41] (  2,  2.03)     ref  ->   x0         single-def "field V46._items (fldOffset=0x0)" P-INDEP
-;  V79 tmp66        [V79,T42] (  2,  2.03)     int  ->   x1         single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;  V80 tmp67        [V80,T70] (  2,  0.04)     ref  ->   x0         single-def "field V66._items (fldOffset=0x0)" P-INDEP
-;  V81 tmp68        [V81,T71] (  2,  0.04)     int  ->   x1         single-def "field V66._length (fldOffset=0x8)" P-INDEP
+;  V78 tmp65        [V78,T39] (  2,  2.03)     ref  ->   x0         single-def "field V46._items (fldOffset=0x0)" P-INDEP
+;  V79 tmp66        [V79,T40] (  2,  2.03)     int  ->   x1         single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;  V80 tmp67        [V80,T67] (  2,  0.04)     ref  ->   x0         single-def "field V66._items (fldOffset=0x0)" P-INDEP
+;  V81 tmp68        [V81,T68] (  2,  0.04)     int  ->   x1         single-def "field V66._length (fldOffset=0x8)" P-INDEP
 ;  V82 tmp69        [V82,T08] (  3,  6.08)     int  ->   x2         "index expr"
 ;  V83 tmp70        [V83,T09] (  3,  6.08)     int  ->   x1         "index expr"
-;  V84 tmp71        [V84,T21] (  2,  4.08)    long  ->   x1         "argument with side effect"
-;  V85 tmp72        [V85,T48] (  2,  1.97)    long  ->   x1         "argument with side effect"
-;  V86 tmp73        [V86,T37] (  2,  2.11)    long  ->   x1         "argument with side effect"
-;  V87 tmp74        [V87,T65] (  3,  0.11)     int  ->   x2         "index expr"
-;  V88 tmp75        [V88,T66] (  3,  0.11)     int  ->   x1         "index expr"
-;  V89 tmp76        [V89,T40] (  2,  2.03)    long  ->   x1         "argument with side effect"
-;  V90 tmp77        [V90,T97] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V91 tmp78        [V91,T96] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V92 tmp79        [V92,T98] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V93 tmp80        [V93,T99] (  2,  0   )    long  ->   x0         "argument with side effect"
-;  V94 tmp81        [V94,T100] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V95 tmp82        [V95,T101] (  2,  0   )    long  ->   x0         "argument with side effect"
-;  V96 tmp83        [V96,T49] (  2,  1.97)    long  ->   x1         "argument with side effect"
-;  V97 cse0         [V97,T79] (  3,  0.00)     int  ->  x26         "CSE - conservative"
+;  V84 tmp71        [V84,T19] (  2,  4.08)    long  ->   x1         "argument with side effect"
+;  V85 tmp72        [V85,T45] (  2,  1.97)    long  ->   x1         "argument with side effect"
+;  V86 tmp73        [V86,T35] (  2,  2.11)    long  ->   x1         "argument with side effect"
+;  V87 tmp74        [V87,T62] (  3,  0.11)     int  ->   x2         "index expr"
+;  V88 tmp75        [V88,T63] (  3,  0.11)     int  ->   x1         "index expr"
+;  V89 tmp76        [V89,T38] (  2,  2.03)    long  ->   x1         "argument with side effect"
+;  V90 tmp77        [V90,T94] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V91 tmp78        [V91,T93] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V92 tmp79        [V92,T95] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V93 tmp80        [V93,T96] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V94 tmp81        [V94,T97] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V95 tmp82        [V95,T98] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V96 tmp83        [V96,T46] (  2,  1.97)    long  ->   x1         "argument with side effect"
+;  V97 cse0         [V97,T76] (  3,  0.00)     int  ->  x26         "CSE - conservative"
 ;  V98 cse1         [V98,T03] ( 31,  6.49)    long  ->  x24         multi-def "CSE - aggressive"
-;  V99 rat0         [V99,T69] (  3,  0.05)    long  ->   x0         "Spilling to split statement for tree"
-;  V100 rat1        [V100,T68] (  3,  0.06)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V101 rat2        [V101,T17] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat3        [V102,T22] (  3,  4.00)    long  ->   x1         "runtime lookup"
+;  V99 rat0         [V99,T66] (  3,  0.05)    long  ->   x0         "Spilling to split statement for tree"
+;  V100 rat1        [V100,T65] (  3,  0.06)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V101 rat2        [V101,T16] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V102 rat3        [V102,T20] (  3,  4.00)    long  ->   x1         "runtime lookup"
 ;  V103 rat4        [V103,T12] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V104 rat5        [V104,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat6        [V105,T44] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V106 rat7        [V106,T13] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V107 rat8        [V107,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V108 rat9        [V108,T25] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V109 rat10       [V109,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V110 rat11       [V110,T20] (  3,  4.08)    long  ->   x1         "runtime lookup"
-;  V111 rat12       [V111,T10] (  3,  5.71)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V112 rat13       [V112,T46] (  3,  1.97)    long  ->   x1         "runtime lookup"
-;  V113 rat14       [V113,T31] (  3,  2.76)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V114 rat15       [V114,T34] (  3,  2.32)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat16       [V115,T36] (  3,  2.11)    long  ->   x1         "runtime lookup"
-;  V116 rat17       [V116,T27] (  3,  2.95)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V117 rat18       [V117,T54] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V118 rat19       [V118,T28] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V119 rat20       [V119,T35] (  3,  2.17)    long  ->   x0         "Spilling to split statement for tree"
-;  V120 rat21       [V120,T47] (  3,  1.97)    long  ->   x1         "runtime lookup"
-;  V121 rat22       [V121,T32] (  3,  2.76)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V122 rat23       [V122,T82] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V123 rat24       [V123,T83] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V124 rat25       [V124,T84] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;* V125 rat26       [V125,T75] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V126 rat27       [V126,T76] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V127 rat28       [V127,T74] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V128 rat29       [V128,T85] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V129 rat30       [V129,T86] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V130 rat31       [V130,T87] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V131 rat32       [V131,T88] (  3,  0   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V132 rat33       [V132,T89] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V133 rat34       [V133,T90] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V134 rat35       [V134,T102] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V135 rat36       [V135,T91] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V136 rat37       [V136,T92] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V137 rat38       [V137,T93] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V138 rat39       [V138,T94] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V139 rat40       [V139,T95] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V140 rat41       [V140,T77] (  3,  0.00)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V141 rat42       [V141,T56] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V142 rat43       [V142,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V143 rat44       [V143,T39] (  3,  2.03)    long  ->   x1         "runtime lookup"
-;  V144 rat45       [V144,T30] (  3,  2.84)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V104 rat5        [V104,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat6        [V105,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat7        [V106,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat8        [V107,T18] (  3,  4.08)    long  ->   x1         "runtime lookup"
+;  V108 rat9        [V108,T10] (  3,  5.71)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V109 rat10       [V109,T43] (  3,  1.97)    long  ->   x1         "runtime lookup"
+;  V110 rat11       [V110,T29] (  3,  2.76)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V111 rat12       [V111,T32] (  3,  2.32)    long  ->   x0         "Spilling to split statement for tree"
+;  V112 rat13       [V112,T34] (  3,  2.11)    long  ->   x1         "runtime lookup"
+;  V113 rat14       [V113,T25] (  3,  2.95)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V114 rat15       [V114,T51] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V115 rat16       [V115,T26] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V116 rat17       [V116,T33] (  3,  2.17)    long  ->   x0         "Spilling to split statement for tree"
+;  V117 rat18       [V117,T44] (  3,  1.97)    long  ->   x1         "runtime lookup"
+;  V118 rat19       [V118,T30] (  3,  2.76)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V119 rat20       [V119,T79] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
+;  V120 rat21       [V120,T80] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V121 rat22       [V121,T81] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;* V122 rat23       [V122,T72] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V123 rat24       [V123,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V124 rat25       [V124,T71] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V125 rat26       [V125,T82] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V126 rat27       [V126,T83] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V127 rat28       [V127,T84] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V128 rat29       [V128,T85] (  3,  0   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
+;  V129 rat30       [V129,T86] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V130 rat31       [V130,T87] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V131 rat32       [V131,T99] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V132 rat33       [V132,T88] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V133 rat34       [V133,T89] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V134 rat35       [V134,T90] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V135 rat36       [V135,T91] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V136 rat37       [V136,T92] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
+;  V137 rat38       [V137,T74] (  3,  0.00)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V138 rat39       [V138,T53] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V139 rat40       [V139,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V140 rat41       [V140,T37] (  3,  2.03)    long  ->   x1         "runtime lookup"
+;  V141 rat42       [V141,T28] (  3,  2.84)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 48
 
@@ -176,7 +173,7 @@ G_M33517_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     w22, w3
                        ;; size=52 bbWeight=1 PerfScore 10.50
 G_M33517_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
-            cbz     x20, G_M33517_IG60
+            cbz     x20, G_M33517_IG61
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M33517_IG03:        ; bbWeight=1.00, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ldr     w0, [x19, #0x40]
@@ -197,7 +194,7 @@ G_M33517_IG06:        ; bbWeight=0.99, gcrefRegs=B80000 {x19 x20 x21 x23}, byref
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #1 LSL #32
             cmp     x0, x1
-            bne     G_M33517_IG17
+            bne     G_M33517_IG19
                        ;; size=24 bbWeight=0.99 PerfScore 5.95
 G_M33517_IG07:        ; bbWeight=0.75, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
...

librariestestsnotieredcompilation.run.osx.arm64.Release.mch

-8 (-1.74%) : 96197.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V07 tmp2         [V07,T06] (  6,  8   )   byref  ->  x26        
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V09 tmp4         [V09,T02] (  8, 12   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V10 tmp5         [V10,T12] (  4,  4   )     int  ->  registers  
+;  V10 tmp5         [V10,T12] (  2,  3.96)     int  ->   x0        
 ;  V11 tmp6         [V11,T07] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V12 cse0         [V12,T03] (  4, 11.88)    long  ->  x21         "CSE - aggressive"
 ;  V13 cse1         [V13,T09] (  5,  7   )     int  ->  x23         "CSE - aggressive"
@@ -121,8 +121,8 @@ G_M22994_IG09:        ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
             ; byrRegs -[x26]
             ; gcr arg pop 0
             cmp     w0, #0
-            cset    x21, eq
-            cbnz    w21, G_M22994_IG22
+            cset    x0, eq
+            cbnz    w0, G_M22994_IG22
                        ;; size=32 bbWeight=1.98 PerfScore 24.75
 G_M22994_IG10:        ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
             add     w22, w22, #1
@@ -209,10 +209,8 @@ G_M22994_IG18:        ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             ; gcrRegs -[x0-x1]
             ; byrRegs -[x26]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x0, eq
-            cbnz    w0, G_M22994_IG22
-                       ;; size=44 bbWeight=0.02 PerfScore 0.34
+            cbz     w0, G_M22994_IG22
+                       ;; size=36 bbWeight=0.02 PerfScore 0.32
 G_M22994_IG19:        ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             add     w22, w22, #1
             cmp     w23, w22
@@ -247,7 +245,7 @@ G_M22994_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_unix #0
                        ;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 460, prolog size 40, PerfScore 125.20, instruction count 115, allocated bytes for code 460 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 452, prolog size 40, PerfScore 125.18, instruction count 113, allocated bytes for code 452 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -258,7 +256,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 115 (0x00073) Actual length = 460 (0x0001cc)
+  Function Length   : 113 (0x00071) Actual length = 452 (0x0001c4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.78%) : 148131.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T21] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -274,10 +274,8 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG21
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG21
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -499,7 +497,7 @@ G_M10809_IG22:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_unix #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1032, prolog size 36, PerfScore 144.50, instruction count 258, allocated bytes for code 1032 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1024, prolog size 36, PerfScore 144.48, instruction count 256, allocated bytes for code 1024 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -510,7 +508,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 258 (0x00102) Actual length = 1032 (0x000408)
+  Function Length   : 256 (0x00100) Actual length = 1024 (0x000400)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.77%) : 151115.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T21] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -275,10 +275,8 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG21
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG21
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -500,7 +498,7 @@ G_M10809_IG22:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_unix #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1036, prolog size 40, PerfScore 145.50, instruction count 259, allocated bytes for code 1036 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1028, prolog size 40, PerfScore 145.48, instruction count 257, allocated bytes for code 1028 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -511,7 +509,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 259 (0x00103) Actual length = 1036 (0x00040c)
+  Function Length   : 257 (0x00101) Actual length = 1028 (0x000404)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 64987.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:CopyToObjects(System.Object[],int):this (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 this         [V00,T10] (  4,  4   )     ref  ->  x20         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->  x21         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T06] (  5, 50   )     int  ->  x19        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->  x23        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
 ;  V06 loc3         [V06,T02] (  7, 88   )     ref  ->  x26         class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->  x27         class-hnd "Inlining Arg" <System.__Canon>
 ;  V13 tmp6         [V13,T05] (  2, 64   )     ref  ->  x28         class-hnd "Inlining Arg" <System.__Canon>
-;  V14 tmp7         [V14,T16] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T07] (  2, 32   )     ref  ->  x27         "field V08.key (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T08] (  2, 32   )     ref  ->  x28         "field V08.value (fldOffset=0x8)" P-INDEP
 ;  V17 cse0         [V17,T13] (  2, 17   )    long  ->  x25         hoist "CSE - aggressive"
-;  V18 cse1         [V18,T18] (  3,  6   )     int  ->  x24         "CSE - aggressive"
-;  V19 rat0         [V19,T20] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V20 rat1         [V20,T21] (  3,  4   )    long  ->  x25         "runtime lookup"
-;  V21 rat2         [V21,T19] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
-;* V22 rat3         [V22,T15] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V23 rat4         [V23,T22] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V24 rat5         [V24,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V25 rat6         [V25,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat7         [V26,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V27 rat8         [V27,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V18 cse1         [V18,T16] (  3,  6   )     int  ->  x24         "CSE - aggressive"
+;  V19 rat0         [V19,T18] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V20 rat1         [V20,T19] (  3,  4   )    long  ->  x25         "runtime lookup"
+;  V21 rat2         [V21,T17] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
+;* V22 rat3         [V22,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V23 rat4         [V23,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V24 rat5         [V24,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 

+0 (0.00%) : 75427.dasm - System.Collections.Generic.HashSet1[System.ValueTuple2[System.Canon,int]]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.ValueTuple2[System.Canon,int]],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -11,21 +11,21 @@
 ;  V00 this         [V00,T03] ( 11, 14   )     ref  ->  [fp-0x78]  this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[System.__Canon,int]]>
 ;  V01 arg1         [V01,T15] (  4,  3   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
 ;  V02 arg2         [V02,T10] (  3,  4   )   ubyte  ->  x19         single-def
-;  V03 loc0         [V03,T39] (  3,  1.50)     int  ->   x1        
+;  V03 loc0         [V03,T37] (  3,  1.50)     int  ->   x1        
 ;* V04 loc1         [V04    ] (  0,  0   )     int  ->  zero-ref   
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V06 loc3         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
 ;  V07 loc4         [V07,T16] (  4,  5   )     int  ->  x21        
 ;  V08 loc5         [V08,T17] (  4,  5   )     int  ->  x24        
-;  V09 loc6         [V09,T40] (  3,  1.50)     int  ->  x19        
-;  V10 loc7         [V10,T37] (  6,  1.50)     ref  ->  [fp-0x80]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V09 loc6         [V09,T38] (  3,  1.50)     int  ->  x19        
+;  V10 loc7         [V10,T35] (  6,  1.50)     ref  ->  [fp-0x80]  class-hnd EH-live spill-single-def <<unknown class>>
 ;* V11 loc8         [V11    ] (  0,  0   )  struct (16) zero-ref    <System.ValueTuple`2[System.__Canon,int]>
 ;* V12 loc9         [V12    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[int]>
 ;  V13 loc10        [V13,T06] (  7,  9   )     ref  ->  [fp-0x88]  class-hnd EH-live spill-single-def <<unknown class>>
 ;* V14 loc11        [V14    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret <System.ValueTuple`2[System.__Canon,int]>
 ;  V15 loc12        [V15,T04] (  6, 16   )     int  ->  x25        
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V17 tmp1         [V17,T41] (  2,  1   )     int  ->   x1        
+;  V17 tmp1         [V17,T39] (  2,  1   )     int  ->   x1        
 ;* V18 tmp2         [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V19 tmp3         [V19    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V20 tmp4         [V20    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
@@ -47,7 +47,7 @@
 ;* V36 tmp20        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V37 tmp21        [V37    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V38 tmp22        [V38,T20] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
-;  V39 tmp23        [V39,T35] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V39 tmp23        [V39,T33] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V40 tmp24        [V40,T25] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V41 tmp25        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V42 tmp26        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -57,7 +57,7 @@
 ;  V46 tmp30        [V46,T21] (  5,  4.00)    long  ->  [fp-0x70]  spill-single-def "Inlining Arg"
 ;* V47 tmp31        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V48 tmp32        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V49 tmp33        [V49,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V49 tmp33        [V49,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V50 tmp34        [V50,T11] (  3,  6   )     int  ->   x0         "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
 ;  V52 tmp36        [V52,T12] (  3,  6   )     int  ->  x27         "Inline stloc first use temp"
@@ -71,22 +71,22 @@
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
 ;  V61 tmp45        [V61,T07] (  2,  8   )     ref  ->   x0         "field V14.Item1 (fldOffset=0x0)" P-INDEP
 ;  V62 tmp46        [V62,T08] (  2,  8   )     int  ->   x2         "field V14.Item2 (fldOffset=0x8)" P-INDEP
-;  V63 tmp47        [V63,T47] (  4,  1.50)   byref  ->  x21         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V63 tmp47        [V63,T45] (  4,  1.50)   byref  ->  x21         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
 ;* V64 tmp48        [V64    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
 ;* V65 tmp49        [V65    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
 ;* V66 tmp50        [V66    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
 ;* V67 tmp51        [V67    ] (  0,  0   )     ref  ->  zero-ref    "field V26.Item1 (fldOffset=0x0)" P-DEP
 ;* V68 tmp52        [V68    ] (  0,  0   )     int  ->  zero-ref    "field V26.Item2 (fldOffset=0x8)" P-DEP
-;  V69 tmp53        [V69,T43] (  2,  1.50)     int  ->  [fp-0x60]  do-not-enreg[] "field V27.Item1 (fldOffset=0x0)" P-DEP
-;  V70 tmp54        [V70,T44] (  2,  1.50)     int  ->  [fp-0x5C]  do-not-enreg[] "field V27.Item2 (fldOffset=0x4)" P-DEP
+;  V69 tmp53        [V69,T41] (  2,  1.50)     int  ->  [fp-0x60]  do-not-enreg[] "field V27.Item1 (fldOffset=0x0)" P-DEP
+;  V70 tmp54        [V70,T42] (  2,  1.50)     int  ->  [fp-0x5C]  do-not-enreg[] "field V27.Item2 (fldOffset=0x4)" P-DEP
 ;* V71 tmp55        [V71    ] (  0,  0   )   byref  ->  zero-ref    "field V29._reference (fldOffset=0x0)" P-INDEP
 ;* V72 tmp56        [V72    ] (  0,  0   )     int  ->  zero-ref    "field V29._length (fldOffset=0x8)" P-INDEP
 ;* V73 tmp57        [V73    ] (  0,  0   )     ref  ->  zero-ref    "field V34.Item1 (fldOffset=0x0)" P-DEP
 ;* V74 tmp58        [V74    ] (  0,  0   )     int  ->  zero-ref    "field V34.Item2 (fldOffset=0x8)" P-DEP
-;  V75 tmp59        [V75,T45] (  2,  1.50)     int  ->  [fp-0x68]  do-not-enreg[] "field V35.Item1 (fldOffset=0x0)" P-DEP
-;  V76 tmp60        [V76,T46] (  2,  1.50)     int  ->  [fp-0x64]  do-not-enreg[] "field V35.Item2 (fldOffset=0x4)" P-DEP
-;  V77 tmp61        [V77,T48] (  2,  1   )   byref  ->  x23         "field V41._reference (fldOffset=0x0)" P-INDEP
-;  V78 tmp62        [V78,T49] (  2,  1   )     int  ->  x22         "field V41._length (fldOffset=0x8)" P-INDEP
+;  V75 tmp59        [V75,T43] (  2,  1.50)     int  ->  [fp-0x68]  do-not-enreg[] "field V35.Item1 (fldOffset=0x0)" P-DEP
+;  V76 tmp60        [V76,T44] (  2,  1.50)     int  ->  [fp-0x64]  do-not-enreg[] "field V35.Item2 (fldOffset=0x4)" P-DEP
+;  V77 tmp61        [V77,T46] (  2,  1   )   byref  ->  x23         "field V41._reference (fldOffset=0x0)" P-INDEP
+;  V78 tmp62        [V78,T47] (  2,  1   )     int  ->  x22         "field V41._length (fldOffset=0x8)" P-INDEP
 ;* V79 tmp63        [V79    ] (  0,  0   )   byref  ->  zero-ref    "field V42._reference (fldOffset=0x0)" P-INDEP
 ;* V80 tmp64        [V80    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
 ;* V81 tmp65        [V81    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V43._reference (fldOffset=0x0)" P-INDEP
@@ -99,25 +99,22 @@
 ;* V88 tmp72        [V88    ] (  0,  0   )     int  ->  zero-ref    "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V89 tmp73        [V89,T18] (  3,  4.50)   byref  ->  x23         single-def "V06.[000..008)"
 ;  V90 tmp74        [V90,T19] (  3,  4.50)     int  ->  x22         "V06.[008..012)"
-;  V91 tmp75        [V91,T38] (  3,  1.50)   byref  ->  x23         "V21.[000..008)"
-;  V92 tmp76        [V92,T42] (  3,  1.50)     int  ->  x22         "V21.[008..012)"
+;  V91 tmp75        [V91,T36] (  3,  1.50)   byref  ->  x23         "V21.[000..008)"
+;  V92 tmp76        [V92,T40] (  3,  1.50)     int  ->  x22         "V21.[008..012)"
 ;  V93 GsCookie     [V93    ] (  1,  1   )    long  ->  [fp-0x90]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V94 PSPSym       [V94,T51] (  1,  1   )    long  ->  [fp-0x50]  do-not-enreg[V] "PSPSym"
+;  V94 PSPSym       [V94,T48] (  1,  1   )    long  ->  [fp-0x50]  do-not-enreg[V] "PSPSym"
 ;  V95 cse0         [V95,T13] (  3,  6   )     int  ->  x27         "CSE - aggressive"
 ;  V96 cse1         [V96,T14] (  3,  6   )     int  ->  x26         "CSE - aggressive"
 ;  V97 cse2         [V97,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V98 rat0         [V98,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V98 rat0         [V98,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V99 rat1         [V99,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V100 rat2        [V100,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V100 rat2        [V100,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V101 rat3        [V101,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V102 rat4        [V102,T33] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V102 rat4        [V102,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V103 rat5        [V103,T29] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V104 rat6        [V104,T34] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat7        [V105,T50] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V106 rat8        [V106,T30] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat9        [V107,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V108 rat10       [V108,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V109 rat11       [V109,T26] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V104 rat6        [V104,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V105 rat7        [V105,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V106 rat8        [V106,T26] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -180,7 +177,7 @@ G_M10461_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             str     x0, [fp, #-0x80]   // [V10 loc7]
             ; GC ptr vars +{V10}
                        ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M10461_IG07:        ; bbWeight=0.50, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG07:        ; bbWeight=0.50, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
             movz    x21, #0xD1FFAB1E
             movk    x21, #0xD1FFAB1E LSL #16
             movk    x21, #1 LSL #32
@@ -560,7 +557,7 @@ G_M10461_IG40:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             add     sp, sp, #160
             ret     lr
                        ;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M10461_IG41:        ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M10461_IG41:        ; bbWeight=0, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
             ; GC ptr vars +{V10}
             sub     sp, sp, #96
             stp     x19, x20, [sp, #0x08]
@@ -572,7 +569,7 @@ G_M10461_IG41:        ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs
             add     x3, fp, #16
             str     x3, [sp]
                        ;; size=36 bbWeight=0 PerfScore 0.00
-G_M10461_IG42:        ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG42:        ; bbWeight=0, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     x0, [fp, #-0x80]   // [V10 loc7]
             ; gcrRegs +[x0]
             cbz     x0, G_M10461_IG43

+0 (0.00%) : 4944.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

realworld.run.osx.arm64.checked.mch

-12 (-0.14%) : 13443.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)

@@ -288,7 +288,6 @@
 ;  V277 cse13       [V277,T204] (  3,  0.12)     ref  ->   x1         "CSE - conservative"
 ;  V278 cse14       [V278,T205] (  3,  0.12)     ref  ->   x1         "CSE - conservative"
 ;  V279 cse15       [V279,T19] (  8, 16   )   byref  ->  [fp+0x18]  multi-def "CSE - moderate"
-;  TEMP_01                                   byref  ->  [fp+0x10]
 ;
 ; Lcl frame size = 352
 
@@ -300,12 +299,11 @@ G_M30044_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x25, x26, [sp, #0xD1FFAB1E]
             stp     x27, x28, [sp, #0xD1FFAB1E]
             mov     fp, sp
-            str     xzr, [fp, #0x10]   // [TEMP_01]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
-                       ;; size=40 bbWeight=1 PerfScore 8.50
+                       ;; size=36 bbWeight=1 PerfScore 7.50
 G_M30044_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19, #0x40]
             ; gcrRegs +[x21]
@@ -1784,11 +1782,6 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ldr     x1, [x1, x4]
             ; gcrRegs +[x1]
             ; byrRegs -[x1]
-            ldr     x5, [fp, #0xE8]    // [V22 loc20]
-            ; gcrRegs +[x5]
-            add     x14, x5, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x10]   // [TEMP_01]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
@@ -1796,13 +1789,12 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #1 LSL #32
-            movz    x6, #0xD1FFAB1E      // code for <unknown method>
-            movk    x6, #0xD1FFAB1E LSL #16
-            movk    x6, #1 LSL #32
-            ldr     x6, [x6]
-            blr     x6
-            ; gcrRegs -[x1 x5] +[x0]
-            ; byrRegs -[x14]
+            movz    x5, #0xD1FFAB1E      // code for <unknown method>
+            movk    x5, #0xD1FFAB1E LSL #16
+            movk    x5, #1 LSL #32
+            ldr     x5, [x5]
+            blr     x5
+            ; gcrRegs -[x1] +[x0]
             mov     x1, x0
             ; gcrRegs +[x1]
             ldr     x0, [fp, #0x40]    // [V131 tmp97]
@@ -1813,15 +1805,18 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ; GC ptr vars -{V131}
             blr     x2
             ; gcrRegs -[x1]
-            ldr     x14, [fp, #0x10]   // [TEMP_01]
+            ldr     x2, [fp, #0xE8]    // [V22 loc20]
+            ; gcrRegs +[x2]
+            add     x14, x2, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
+            ; GC ptr vars -{V22}
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x2, [fp, #0xE8]    // [V22 loc20]
-            ; gcrRegs +[x2]
+            str     x2, [fp, #0xE8]    // [V22 loc20]
+            ; GC ptr vars +{V22}
             ldr     x1, [x2, #0x08]
             ; gcrRegs +[x1]
             mov     x15, x1
@@ -1847,7 +1842,7 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ldr     w14, [x6, #0x08]
             cmp     w14, w15
             bls     G_M30044_IG52
-                       ;; size=264 bbWeight=0.04 PerfScore 3.16
+                       ;; size=256 bbWeight=0.04 PerfScore 3.00
 G_M30044_IG51:        ; bbWeight=0.02, gcrefRegs=1FF80042 {x1 x6 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref
             add     w14, w15, #1
             str     w14, [x27, #0x10]
@@ -3725,7 +3720,7 @@ G_M30044_IG114:        ; bbWeight=0, gcrefRegs=1BF80000 {x19 x20 x21 x22 x23 x24
             b       G_M30044_IG100
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 8856, prolog size 32, PerfScore 2225.47, instruction count 2214, allocated bytes for code 8856 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
+; Total bytes of code 8844, prolog size 28, PerfScore 2224.31, instruction count 2211, allocated bytes for code 8844 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -3736,7 +3731,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 2214 (0x008a6) Actual length = 8856 (0x002298)
+  Function Length   : 2211 (0x008a3) Actual length = 8844 (0x00228c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.10%) : 30385.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

@@ -1681,38 +1681,36 @@ G_M4474_IG49:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
             ; byrRegs -[x4]
             str     x0, [fp, #0x90]    // [V18 loc13]
             ; GC ptr vars +{V18}
-            ldr     x2, [fp, #0x98]    // [V17 loc12]
+            ldr     x2, [fp, #0xA8]    // [V10 loc5]
             ; gcrRegs +[x2]
-            add     x14, x2, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
-            ldr     x3, [fp, #0xA8]    // [V10 loc5]
-            ; gcrRegs +[x3]
-            ldr     w0, [x3, #0x08]
+            ldr     w0, [x2, #0x08]
             ; gcrRegs -[x0]
-            ldr     w4, [fp, #0xEC]    // [V16 loc11]
-            cmp     w4, w0
+            ldr     w3, [fp, #0xEC]    // [V16 loc11]
+            cmp     w3, w0
             bhs     G_M4474_IG100
-            ldr     x5, [fp, #0x20]    // [V229 cse10]
-            ; byrRegs +[x5]
-            ldr     x6, [fp, #0xB0]    // [V226 cse7]
-            ldr     x0, [x5, x6]
+            ldr     x4, [fp, #0x20]    // [V229 cse10]
+            ; byrRegs +[x4]
+            ldr     x5, [fp, #0xB0]    // [V226 cse7]
+            ldr     x0, [x4, x5]
             ; gcrRegs +[x0]
-            ldr     x7, [x0]
-            ldr     x7, [x7, #0x48]
-            ldr     x7, [x7, #0x30]
-            blr     x7
-            ; gcrRegs -[x2-x3]
-            ; byrRegs -[x5 x14]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            ldr     x6, [x0]
+            ldr     x6, [x6, #0x48]
+            ldr     x6, [x6, #0x30]
+            blr     x6
+            ; gcrRegs -[x2]
+            ; byrRegs -[x4]
+            ldr     x1, [fp, #0x98]    // [V17 loc12]
+            ; gcrRegs +[x1]
+            add     x14, x1, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
+            ; GC ptr vars -{V17}
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x1, [fp, #0x98]    // [V17 loc12]
-            ; gcrRegs +[x1]
+            str     x1, [fp, #0x98]    // [V17 loc12]
+            ; GC ptr vars +{V17}
             ldr     x0, [x1, #0x08]
             ; gcrRegs +[x0]
             movz    x2, #0xD1FFAB1E      // code for System.String:IsNullOrWhiteSpace(System.String):ubyte
@@ -1722,7 +1720,7 @@ G_M4474_IG49:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
             blr     x2
             ; gcrRegs -[x0-x1]
             cbz     w0, G_M4474_IG56
-                       ;; size=200 bbWeight=0.04 PerfScore 3.06
+                       ;; size=192 bbWeight=0.04 PerfScore 2.90
 G_M4474_IG50:        ; bbWeight=0.02, gcrefRegs=EA80000 {x19 x21 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
             movz    x0, #0xD1FFAB1E      // code for <unknown method>
             movk    x0, #0xD1FFAB1E LSL #16
@@ -3235,7 +3233,7 @@ G_M4474_IG100:        ; bbWeight=0, gcVars=0000000000000000000000000000000000000
             brk_unix #0
                        ;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 7784, prolog size 32, PerfScore 2093.60, instruction count 1946, allocated bytes for code 7784 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 7776, prolog size 32, PerfScore 2093.44, instruction count 1944, allocated bytes for code 7776 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -3246,7 +3244,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 1946 (0x0079a) Actual length = 7784 (0x001e68)
+  Function Length   : 1944 (0x00798) Actual length = 7776 (0x001e60)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 16246.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

+0 (0.00%) : 16407.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T15] (  4,  5   )     int  ->  x21        
 ;  V07 loc4         [V07,T16] (  4,  5   )     int  ->  x24        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  x19        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  x19        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [fp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->   x0        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [fp-0x50]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T19] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T24] (  3,  3   )     int  ->   x1         "Inlining Arg"
-;  V31 tmp19        [V31,T35] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V31 tmp19        [V31,T33] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V32 tmp20        [V32,T23] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
 ;  V38 tmp26        [V38,T13] (  5,  5   )    long  ->  [fp-0x58]  spill-single-def "Inlining Arg"
 ;* V39 tmp27        [V39    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V40 tmp28        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V41 tmp29        [V41,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V41 tmp29        [V41,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V42 tmp30        [V42,T11] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V43 tmp31        [V43,T12] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V44 tmp32        [V44,T06] (  3, 12   )   byref  ->   x1         "dup spill"
 ;* V45 tmp33        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp34        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V47 tmp35        [V47,T34] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp35        [V47,T32] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V49 tmp37        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V51 tmp39        [V51,T40] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V52 tmp40        [V52,T41] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V51 tmp39        [V51,T38] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V52 tmp40        [V52,T39] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V53 tmp41        [V53    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V54 tmp42        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V55 tmp43        [V55,T42] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V56 tmp44        [V56,T43] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V57 tmp45        [V57,T44] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp46        [V58,T45] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V55 tmp43        [V55,T40] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V56 tmp44        [V56,T41] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V57 tmp45        [V57,T42] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp46        [V58,T43] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V59 tmp47        [V59    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V60 tmp48        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
 ;* V64 tmp52        [V64    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x8)" P-INDEP
 ;  V65 tmp53        [V65,T17] (  3,  4.50)   byref  ->  x23         single-def "V05.[000..008)"
 ;  V66 tmp54        [V66,T18] (  3,  4.50)     int  ->  x22         single-def "V05.[008..012)"
-;  V67 tmp55        [V67,T37] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
-;  V68 tmp56        [V68,T39] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
+;  V67 tmp55        [V67,T35] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
+;  V68 tmp56        [V68,T37] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
 ;  V69 tmp57        [V69,T03] (  2, 16   )     ref  ->   x1         "argument with side effect"
 ;  V70 GsCookie     [V70    ] (  1,  1   )    long  ->  [fp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V71 PSPSym       [V71,T47] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
+;  V71 PSPSym       [V71,T44] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
 ;  V72 cse0         [V72,T08] (  5, 10   )     int  ->  x11         "CSE - aggressive"
 ;  V73 cse1         [V73,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V74 rat0         [V74,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V74 rat0         [V74,T29] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V75 rat1         [V75,T26] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V76 rat2         [V76,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V76 rat2         [V76,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V77 rat3         [V77,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V78 rat4         [V78,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V78 rat4         [V78,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V79 rat5         [V79,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V80 rat6         [V80,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V81 rat7         [V81,T46] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V82 rat8         [V82,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V83 rat9         [V83,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V84 rat10        [V84,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V85 rat11        [V85,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V80 rat6         [V80,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V81 rat7         [V81,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V82 rat8         [V82,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 64
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 1 0 0 1 -0 +0
benchmarks.run_pgo.osx.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.osx.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.osx.arm64.checked.mch 2 1 0 1 -24 +0
libraries.crossgen2.osx.arm64.checked.mch 11 11 0 0 -108 +0
libraries.pmi.osx.arm64.checked.mch 24 12 0 12 -124 +0
libraries_tests.run.osx.arm64.Release.mch 37 31 1 5 -320 +4
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 11 7 0 4 -80 +0
realworld.run.osx.arm64.checked.mch 4 2 0 2 -20 +0
90 64 1 25 -676 +4

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.osx.arm64.checked.mch 24,855 4 24,851 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.osx.arm64.checked.mch 84,590 48,412 36,178 84 (0.10%) 84 (0.10%)
benchmarks.run_tiered.osx.arm64.checked.mch 48,261 37,318 10,943 0 (0.00%) 0 (0.00%)
coreclr_tests.run.osx.arm64.checked.mch 585,832 357,177 228,655 389 (0.07%) 389 (0.07%)
libraries.crossgen2.osx.arm64.checked.mch 233,353 15 233,338 0 (0.00%) 0 (0.00%)
libraries.pmi.osx.arm64.checked.mch 314,716 18 314,698 0 (0.00%) 0 (0.00%)
libraries_tests.run.osx.arm64.Release.mch 637,144 466,371 170,773 2,722 (0.43%) 2,722 (0.43%)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 302,469 21,558 280,911 6 (0.00%) 6 (0.00%)
realworld.run.osx.arm64.checked.mch 31,544 3 31,541 0 (0.00%) 0 (0.00%)
2,262,764 930,876 1,331,888 3,201 (0.14%) 3,201 (0.14%)

jit-analyze output

benchmarks.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11180928 (overridden on cmd)
Total bytes of diff: 11180928 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.

0 total methods with Code Size differences (0 improved, 0 regressed).


coreclr_tests.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 485345676 (overridden on cmd)
Total bytes of diff: 485345652 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 570536.dasm (-2.33 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -24 (-2.33 % of base) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

Top method improvements (percentages):
         -24 (-2.33 % of base) : 570536.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

1 total methods with Code Size differences (1 improved, 0 regressed).


libraries.crossgen2.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 55620496 (overridden on cmd)
Total bytes of diff: 55620388 (overridden on cmd)
Total bytes of delta: -108 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 165248.dasm (-0.36 % of base)
         -20 : 109526.dasm (-0.73 % of base)
         -12 : 194499.dasm (-0.53 % of base)
         -12 : 89908.dasm (-0.68 % of base)
         -12 : 196589.dasm (-0.56 % of base)
          -8 : 165743.dasm (-1.82 % of base)
          -4 : 109800.dasm (-0.10 % of base)
          -4 : 183363.dasm (-0.15 % of base)
          -4 : 124600.dasm (-0.15 % of base)
          -4 : 124599.dasm (-0.19 % of base)
          -4 : 183362.dasm (-0.19 % of base)

11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -24 (-0.36 % of base) : 165248.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -20 (-0.73 % of base) : 109526.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -12 (-0.68 % of base) : 89908.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -12 (-0.56 % of base) : 196589.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -12 (-0.53 % of base) : 194499.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
          -8 (-1.82 % of base) : 165743.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -4 (-0.10 % of base) : 109800.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -4 (-0.19 % of base) : 124599.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.19 % of base) : 183362.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.15 % of base) : 183363.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.15 % of base) : 124600.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

Top method improvements (percentages):
          -8 (-1.82 % of base) : 165743.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -20 (-0.73 % of base) : 109526.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -12 (-0.68 % of base) : 89908.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -12 (-0.56 % of base) : 196589.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -12 (-0.53 % of base) : 194499.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
         -24 (-0.36 % of base) : 165248.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.19 % of base) : 183362.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.19 % of base) : 124599.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.15 % of base) : 183363.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.15 % of base) : 124600.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.10 % of base) : 109800.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

11 total methods with Code Size differences (11 improved, 0 regressed).


libraries.pmi.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79959756 (overridden on cmd)
Total bytes of diff: 79959632 (overridden on cmd)
Total bytes of delta: -124 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -32 : 137541.dasm (-0.78 % of base)
         -20 : 115297.dasm (-1.07 % of base)
         -16 : 182355.dasm (-0.21 % of base)
         -12 : 230868.dasm (-0.68 % of base)
          -8 : 121839.dasm (-0.18 % of base)
          -8 : 121842.dasm (-0.15 % of base)
          -8 : 308247.dasm (-0.73 % of base)
          -4 : 144757.dasm (-0.20 % of base)
          -4 : 200927.dasm (-0.21 % of base)
          -4 : 137816.dasm (-0.10 % of base)
          -4 : 144758.dasm (-0.16 % of base)
          -4 : 200928.dasm (-0.16 % of base)

12 total files with Code Size differences (12 improved, 0 regressed), 12 unchanged.

Top method improvements (bytes):
         -32 (-0.78 % of base) : 137541.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -20 (-1.07 % of base) : 115297.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -16 (-0.21 % of base) : 182355.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -12 (-0.68 % of base) : 230868.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-0.15 % of base) : 121842.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -8 (-0.18 % of base) : 121839.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -8 (-0.73 % of base) : 308247.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -4 (-0.10 % of base) : 137816.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -4 (-0.20 % of base) : 144757.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.21 % of base) : 200927.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.16 % of base) : 144758.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.16 % of base) : 200928.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

Top method improvements (percentages):
         -20 (-1.07 % of base) : 115297.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -32 (-0.78 % of base) : 137541.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
          -8 (-0.73 % of base) : 308247.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -12 (-0.68 % of base) : 230868.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -16 (-0.21 % of base) : 182355.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.21 % of base) : 200927.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.20 % of base) : 144757.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.18 % of base) : 121839.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -4 (-0.16 % of base) : 200928.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.16 % of base) : 144758.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.15 % of base) : 121842.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -4 (-0.10 % of base) : 137816.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

12 total methods with Code Size differences (12 improved, 0 regressed).


libraries_tests.run.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 312760116 (overridden on cmd)
Total bytes of diff: 312759800 (overridden on cmd)
Total bytes of delta: -316 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           4 : 51336.dasm (0.18 % of base)

Top file improvements (bytes):
         -20 : 323886.dasm (-0.60 % of base)
         -12 : 172501.dasm (-0.35 % of base)
         -12 : 216887.dasm (-0.35 % of base)
         -12 : 280433.dasm (-0.36 % of base)
         -12 : 380502.dasm (-0.09 % of base)
         -12 : 469127.dasm (-0.35 % of base)
         -12 : 496300.dasm (-0.35 % of base)
         -12 : 95843.dasm (-0.35 % of base)
         -12 : 120159.dasm (-0.35 % of base)
         -12 : 318781.dasm (-0.35 % of base)
         -12 : 329098.dasm (-0.35 % of base)
         -12 : 370555.dasm (-0.35 % of base)
         -12 : 439419.dasm (-0.35 % of base)
         -12 : 178273.dasm (-0.35 % of base)
         -12 : 159796.dasm (-0.56 % of base)
         -12 : 191353.dasm (-0.35 % of base)
         -12 : 202501.dasm (-0.35 % of base)
         -12 : 309760.dasm (-0.35 % of base)
         -12 : 332729.dasm (-0.35 % of base)
         -12 : 381256.dasm (-0.09 % of base)

32 total files with Code Size differences (31 improved, 1 regressed), 5 unchanged.

Top method regressions (bytes):
           4 (0.18 % of base) : 51336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)

Top method improvements (bytes):
         -20 (-0.60 % of base) : 323886.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.56 % of base) : 159796.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -12 (-0.35 % of base) : 172501.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 216887.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.36 % of base) : 280433.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 469127.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 496300.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 95843.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 120159.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 318781.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 329098.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 370555.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 439419.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 178273.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 191353.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 202501.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 309760.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 332729.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.09 % of base) : 381256.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1)
         -12 (-0.09 % of base) : 380502.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1-OSR)

Top method regressions (percentages):
           4 (0.18 % of base) : 51336.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)

Top method improvements (percentages):
         -20 (-0.60 % of base) : 323886.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.56 % of base) : 159796.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -12 (-0.36 % of base) : 280433.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 120159.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 332729.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 216887.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 496300.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 309760.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 172501.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 469127.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 318781.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 202501.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 191353.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 329098.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 95843.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 439419.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 178273.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 370555.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
          -4 (-0.35 % of base) : 61837.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,int]:FindValue(System.__Canon):byref:this (Tier1)
          -4 (-0.25 % of base) : 53775.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

32 total methods with Code Size differences (31 improved, 1 regressed).


librariestestsnotieredcompilation.run.osx.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 160789980 (overridden on cmd)
Total bytes of diff: 160789900 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -20 : 89845.dasm (-0.25 % of base)
         -20 : 298231.dasm (-0.49 % of base)
         -12 : 162096.dasm (-0.67 % of base)
          -8 : 151115.dasm (-0.77 % of base)
          -8 : 148131.dasm (-0.78 % of base)
          -8 : 96197.dasm (-1.74 % of base)
          -4 : 177151.dasm (-0.21 % of base)

7 total files with Code Size differences (7 improved, 0 regressed), 4 unchanged.

Top method improvements (bytes):
         -20 (-0.25 % of base) : 89845.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -20 (-0.49 % of base) : 298231.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -12 (-0.67 % of base) : 162096.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-1.74 % of base) : 96197.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -8 (-0.77 % of base) : 151115.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -8 (-0.78 % of base) : 148131.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -4 (-0.21 % of base) : 177151.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

Top method improvements (percentages):
          -8 (-1.74 % of base) : 96197.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -8 (-0.78 % of base) : 148131.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -8 (-0.77 % of base) : 151115.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -12 (-0.67 % of base) : 162096.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -20 (-0.49 % of base) : 298231.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -20 (-0.25 % of base) : 89845.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.21 % of base) : 177151.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

7 total methods with Code Size differences (7 improved, 0 regressed).


realworld.run.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15071744 (overridden on cmd)
Total bytes of diff: 15071724 (overridden on cmd)
Total bytes of delta: -20 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -12 : 13443.dasm (-0.14 % of base)
          -8 : 30385.dasm (-0.10 % of base)

2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.

Top method improvements (bytes):
         -12 (-0.14 % of base) : 13443.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
          -8 (-0.10 % of base) : 30385.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

Top method improvements (percentages):
         -12 (-0.14 % of base) : 13443.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
          -8 (-0.10 % of base) : 30385.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

2 total methods with Code Size differences (2 improved, 0 regressed).



windows arm64

Diffs are based on 2,318,293 contexts (931,543 MinOpts, 1,386,750 FullOpts).

MISSED contexts: 2,601 (0.11%)

Overall (-616 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,964,124 +0
coreclr_tests.run.windows.arm64.checked.mch 495,343,752 -24
libraries.crossgen2.windows.arm64.checked.mch 58,963,136 -108
libraries.pmi.windows.arm64.checked.mch 79,568,032 -128
libraries_tests.run.windows.arm64.Release.mch 310,410,132 -256
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 169,004,112 -80
realworld.run.windows.arm64.checked.mch 15,891,296 -20

FullOpts (-616 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,963,588 +0
coreclr_tests.run.windows.arm64.checked.mch 156,252,224 -24
libraries.crossgen2.windows.arm64.checked.mch 58,961,500 -108
libraries.pmi.windows.arm64.checked.mch 79,448,048 -128
libraries_tests.run.windows.arm64.Release.mch 108,828,628 -256
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 155,866,648 -80
realworld.run.windows.arm64.checked.mch 15,322,872 -20

Example diffs

benchmarks.run.windows.arm64.checked.mch

+0 (0.00%) : 17290.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

coreclr_tests.run.windows.arm64.checked.mch

-24 (-2.33%) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]):this (FullOpts)

@@ -8,78 +8,74 @@
 ; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T07] ( 14,1267   )     ref  ->  x19         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T08] ( 18,1118   )     ref  ->  x20         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T09] ( 13,1139   )     ref  ->  x20         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T07] ( 18,1118   )     ref  ->  x19         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T04] (  8,1328   )     ref  ->  x23         class-hnd <<unknown class>>
 ;* V03 loc1         [V03    ] (  0,   0   )  struct (16) zero-ref    multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;* V04 loc2         [V04    ] (  0,   0   )  struct (16) zero-ref    multireg-ret <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct (16) zero-ref    multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T09] (  9,1216   )     ref  ->  x23         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T08] (  9,1216   )     ref  ->  x23         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T10] (  5, 896   )     ref  ->  x25         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;# V08 OutArgs      [V08    ] (  1,   1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T34] (  3,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T30] (  3,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V13 tmp5         [V13    ] (  0,   0   )  struct (16) zero-ref    do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V14 tmp6         [V14,T22] (  3, 192   )     ref  ->  x23         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V14 tmp6         [V14,T18] (  3, 192   )     ref  ->  x23         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V15 tmp7         [V15    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp8         [V16    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V17 tmp9         [V17,T31] (  4,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T27] (  4,  48   )    long  ->  x11         "VirtualCall with runtime lookup"
 ;* V18 tmp10        [V18    ] (  0,   0   )  struct (16) zero-ref    multireg-ret "Return value temp for multireg return" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V19 tmp11        [V19,T36] (  3,  44.08)     int  ->  x24         "impAppendStmt"
-;  V20 tmp12        [V20,T30] (  7,  64   )     ref  ->  x23         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V21 tmp13        [V21,T43] (  4,  20   )     int  ->  x24         "Inline stloc first use temp"
-;  V22 tmp14        [V22,T44] (  3,  18   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V23 tmp15        [V23,T45] (  3,  16   )     int  ->   x0         "Inline return value spill temp"
-;  V24 tmp16        [V24,T38] (  3,  35.92)     int  ->   x0         "Inlining Arg"
-;  V25 tmp17        [V25,T24] (  7, 160   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V26 tmp18        [V26,T32] (  4,  48   )     int  ->   x3         "Inline stloc first use temp"
-;  V27 tmp19        [V27,T37] (  3,  40   )     ref  ->  x14         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T32] (  3,  44.08)     int  ->  x24         "impAppendStmt"
+;  V20 tmp12        [V20,T26] (  7,  64   )     ref  ->  x23         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V21 tmp13        [V21,T39] (  4,  20   )     int  ->  x24         "Inline stloc first use temp"
+;  V22 tmp14        [V22,T40] (  3,  18   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V23 tmp15        [V23,T41] (  3,  16   )     int  ->   x0         "Inline return value spill temp"
+;  V24 tmp16        [V24,T34] (  3,  35.92)     int  ->   x0         "Inlining Arg"
+;  V25 tmp17        [V25,T20] (  7, 160   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V26 tmp18        [V26,T28] (  4,  48   )     int  ->   x3         "Inline stloc first use temp"
+;  V27 tmp19        [V27,T33] (  3,  40   )     ref  ->  x14         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V28 tmp20        [V28    ] (  0,   0   )  struct (16) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V29 tmp21        [V29,T20] (  3, 256   )     int  ->  x11         "Inline return value spill temp"
-;  V30 tmp22        [V30,T13] (  3, 705.34)     int  ->   x0         "Inlining Arg"
-;  V31 tmp23        [V31,T16] (  3, 574.66)     int  ->  x11         "Inlining Arg"
-;  V32 tmp24        [V32,T14] (  3, 626.01)     ref  ->   x2         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V29 tmp21        [V29,T17] (  3, 256   )     int  ->  x11         "Inline return value spill temp"
+;  V30 tmp22        [V30,T12] (  3, 705.34)     int  ->   x0         "Inlining Arg"
+;  V31 tmp23        [V31,T14] (  3, 574.66)     int  ->  x11         "Inlining Arg"
+;  V32 tmp24        [V32,T13] (  3, 626.01)     ref  ->   x2         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V33 tmp25        [V33,T11] (  4, 740.03)     int  ->   x0         "Inline stloc first use temp"
-;  V34 tmp26        [V34,T19] (  7, 384   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V35 tmp27        [V35,T29] (  3,  92.50)     ref  ->   x3         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V36 tmp28        [V36,T28] (  4, 121.01)     int  ->   x2         "Inline stloc first use temp"
+;  V34 tmp26        [V34,T16] (  7, 384   )     ref  ->   x0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V35 tmp27        [V35,T25] (  3,  92.50)     ref  ->   x3         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V36 tmp28        [V36,T24] (  4, 121.01)     int  ->   x2         "Inline stloc first use temp"
 ;* V37 tmp29        [V37    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V38 tmp30        [V38,T46] (  2,  16   )     ref  ->  x20         "field V03.Vertex (fldOffset=0x0)" P-INDEP
-;  V39 tmp31        [V39,T47] (  2,  16   )     ref  ->  x23         "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V38 tmp30        [V38,T42] (  2,  16   )     ref  ->  x19         "field V03.Vertex (fldOffset=0x0)" P-INDEP
+;  V39 tmp31        [V39,T43] (  2,  16   )     ref  ->  x23         "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;  V40 tmp32        [V40,T05] (  5,1424   )     ref  ->  x25         "field V04.Destination (fldOffset=0x0)" P-INDEP
-;  V41 tmp33        [V41,T18] (  1, 512   )   ubyte  ->   x1         "field V04.Flagged (fldOffset=0x8)" P-INDEP
-;  V42 tmp34        [V42,T41] (  3,  32   )     ref  ->   x1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V43 tmp35        [V43,T42] (  3,  32   )     ref  ->   x2         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V41 tmp33        [V41,T15] (  1, 512   )   ubyte  ->   x1         "field V04.Flagged (fldOffset=0x8)" P-INDEP
+;  V42 tmp34        [V42,T37] (  3,  32   )     ref  ->   x1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V43 tmp35        [V43,T38] (  3,  32   )     ref  ->   x2         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;* V44 tmp36        [V44    ] (  0,   0   )     ref  ->  zero-ref    "field V13.Destination (fldOffset=0x0)" P-DEP
 ;* V45 tmp37        [V45    ] (  0,   0   )   ubyte  ->  zero-ref    "field V13.Flagged (fldOffset=0x8)" P-DEP
-;  V46 tmp38        [V46,T48] (  2,  16   )     ref  ->   x0         "field V18.Destination (fldOffset=0x0)" P-INDEP
-;  V47 tmp39        [V47,T51] (  1,   8   )   ubyte  ->   x1         "field V18.Flagged (fldOffset=0x8)" P-INDEP
+;  V46 tmp38        [V46,T44] (  2,  16   )     ref  ->   x0         "field V18.Destination (fldOffset=0x0)" P-INDEP
+;  V47 tmp39        [V47,T47] (  1,   8   )   ubyte  ->   x1         "field V18.Flagged (fldOffset=0x8)" P-INDEP
 ;* V48 tmp40        [V48    ] (  0,   0   )     ref  ->  zero-ref    "field V28.Vertex (fldOffset=0x0)" P-INDEP
 ;* V49 tmp41        [V49    ] (  0,   0   )     ref  ->  zero-ref    "field V28.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-;  V50 tmp42        [V50,T33] (  3,  48   )   byref  ->   x4         "BlockOp address local"
-;  V51 cse0         [V51,T50] (  2,   9   )    long  ->  x22         hoist "CSE - moderate"
-;  V52 cse1         [V52,T40] (  4,  32   )     int  ->   x1         "CSE - moderate"
+;  V50 tmp42        [V50,T29] (  3,  48   )   byref  ->   x4         "BlockOp address local"
+;  V51 cse0         [V51,T46] (  2,   9   )    long  ->  x22         hoist "CSE - moderate"
+;  V52 cse1         [V52,T36] (  4,  32   )     int  ->   x1         "CSE - moderate"
 ;  V53 cse2         [V53,T06] (  3,1280   )    long  ->  x24         "CSE - aggressive"
-;  V54 cse3         [V54,T49] (  4,  12.88)    long  ->  x21         hoist "CSE - moderate"
-;  V55 rat0         [V55,T53] (  3,   4.72)    long  ->   x0         "Spilling to split statement for tree"
-;  V56 rat1         [V56,T55] (  3,   4   )    long  ->  x22         "runtime lookup"
-;  V57 rat2         [V57,T52] (  3,   5.60)    long  ->   x1         "spilling expr"
-;  V58 rat3         [V58,T54] (  3,   4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;  V59 rat4         [V59,T35] (  3,  44.80)    long  ->   x0         "spilling expr"
-;  V60 rat5         [V60,T39] (  3,  35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V61 rat6         [V61,T15] (  2, 512   )    long  ->   x0         "Spilling to split statement for tree"
-;* V62 rat7         [V62,T21] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;  V63 rat8         [V63,T12] (  2, 512   )    long  ->   x0         "spilling expr"
-;* V64 rat9         [V64,T17] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V65 rat10        [V65,T02] (  3,2416.64)    long  ->   x0         "Spilling to split statement for tree"
-;  V66 rat11        [V66,T01] (  3,2867.20)    long  ->   x1         "spilling expr"
-;  V67 rat12        [V67,T03] (  3,2293.76)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V68 rat13        [V68,T25] (  3, 151.04)    long  ->   x0         "Spilling to split statement for tree"
-;  V69 rat14        [V69,T27] (  3, 128   )    long  ->   x1         "runtime lookup"
-;  V70 rat15        [V70,T23] (  3, 179.20)    long  ->   x1         "spilling expr"
-;  V71 rat16        [V71,T26] (  3, 143.36)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V54 cse3         [V54,T45] (  4,  12.88)    long  ->  x21         "CSE - moderate"
+;  V55 rat0         [V55,T49] (  3,   4.72)    long  ->   x0         "Spilling to split statement for tree"
+;  V56 rat1         [V56,T51] (  3,   4   )    long  ->  x22         "runtime lookup"
+;  V57 rat2         [V57,T48] (  3,   5.60)    long  ->   x1         "spilling expr"
+;  V58 rat3         [V58,T50] (  3,   4.48)    long  ->  x22         "fgMakeTemp is creating a new local variable"
+;  V59 rat4         [V59,T31] (  3,  44.80)    long  ->   x0         "spilling expr"
+;  V60 rat5         [V60,T35] (  3,  35.84)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V61 rat6         [V61,T02] (  3,2416.64)    long  ->   x0         "Spilling to split statement for tree"
+;  V62 rat7         [V62,T01] (  3,2867.20)    long  ->   x1         "spilling expr"
+;  V63 rat8         [V63,T03] (  3,2293.76)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V64 rat9         [V64,T21] (  3, 151.04)    long  ->   x0         "Spilling to split statement for tree"
+;  V65 rat10        [V65,T23] (  3, 128   )    long  ->   x1         "runtime lookup"
+;  V66 rat11        [V66,T19] (  3, 179.20)    long  ->   x1         "spilling expr"
+;  V67 rat12        [V67,T22] (  3, 143.36)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 8
 
@@ -91,13 +87,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             str     x25, [sp, #0x48]
             mov     fp, sp
             str     x0, [fp, #0x10]
-            mov     x19, x0
-            ; gcrRegs +[x19]
-            mov     x20, x1
+            mov     x20, x0
             ; gcrRegs +[x20]
+            mov     x19, x1
+            ; gcrRegs +[x19]
                        ;; size=36 bbWeight=1 PerfScore 7.50
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     x21, [x19]
+            ldr     x21, [x20]
             mov     x0, x21
             ldr     x1, [x0, #0x38]
             ldr     x1, [x1]
@@ -121,11 +117,11 @@ G_M1799_IG05:        ; bbWeight=0.36, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
             mov     x22, x0
                        ;; size=20 bbWeight=0.36 PerfScore 1.08
 G_M1799_IG06:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ldr     w1, [x19, #0x28]
-            stp     w1, w1, [x20, #0x18]
+            ldr     w1, [x20, #0x28]
+            stp     w1, w1, [x19, #0x18]
             add     w1, w1, #1
-            str     w1, [x19, #0x28]
-            ldr     x23, [x19, #0x08]
+            str     w1, [x20, #0x28]
+            ldr     x23, [x20, #0x08]
             ; gcrRegs +[x23]
             ldr     w24, [x23, #0x10]
             ldr     x0, [x23, #0x08]
@@ -136,7 +132,7 @@ G_M1799_IG06:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
                        ;; size=40 bbWeight=8 PerfScore 152.00
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=0000 {}, byref
             sxtw    x1, w24
-            mov     x2, x20
+            mov     x2, x19
             ; gcrRegs +[x2]
             bl      CORINFO_HELP_ARRADDR_ST
             ; gcrRegs -[x0 x2]
@@ -151,7 +147,7 @@ G_M1799_IG07:        ; bbWeight=2, gcrefRegs=980001 {x0 x19 x20 x23}, byrefRegs=
 G_M1799_IG08:        ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
             mov     x0, x23
             ; gcrRegs +[x0]
-            mov     x1, x20
+            mov     x1, x19
             ; gcrRegs +[x1]
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
@@ -163,9 +159,9 @@ G_M1799_IG08:        ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
                        ;; size=28 bbWeight=2 PerfScore 13.00
 G_M1799_IG09:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     w0, #1
-            strb    w0, [x20, #0x22]
+            strb    w0, [x19, #0x22]
             mov     x11, x22
-            ldr     x0, [x20, #0x10]
+            ldr     x0, [x19, #0x10]
             ; gcrRegs +[x0]
             ldr     x1, [x11]
             blr     x1
@@ -174,9 +170,9 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
             ; gcrRegs +[x23]
             cbnz    x23, G_M1799_IG17
                        ;; size=32 bbWeight=8 PerfScore 84.00
-G_M1799_IG10:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x0 x20 x23]
-            ldr     x0, [x19, #0x20]
+G_M1799_IG10:        ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[x0 x19 x23]
+            ldr     x0, [x20, #0x20]
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
             movk    x1, #0xD1FFAB1E LSL #16
@@ -186,8 +182,8 @@ G_M1799_IG10:        ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byr
             blr     x1
             ; gcrRegs +[x1]
             ; gcr arg pop 0
-            mov     x20, x0
-            ; gcrRegs +[x20]
+            mov     x19, x0
+            ; gcrRegs +[x19]
             mov     x23, x1
             ; gcrRegs +[x23]
             ldr     x0, [x21, #0x38]
@@ -203,7 +199,7 @@ G_M1799_IG11:        ; bbWeight=6.40, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
             cbz     x11, G_M1799_IG14
                        ;; size=8 bbWeight=6.40 PerfScore 25.60
 G_M1799_IG12:        ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     w24, [x20, #0x1C]
+            ldr     w24, [x19, #0x1C]
             mov     x0, x23
             ; gcrRegs +[x0]
             ldr     x1, [x11]
@@ -231,7 +227,7 @@ G_M1799_IG15:        ; bbWeight=6.04, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=
             sxtw    w0, w24
                        ;; size=4 bbWeight=6.04 PerfScore 3.02
 G_M1799_IG16:        ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
-            str     w0, [x20, #0x1C]
+            str     w0, [x19, #0x1C]
                        ;; size=4 bbWeight=8 PerfScore 8.00
 G_M1799_IG17:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
             mov     x0, x23
@@ -244,32 +240,24 @@ G_M1799_IG17:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            cbz     w0, G_M1799_IG30
+            cbz     w0, G_M1799_IG29
                        ;; size=32 bbWeight=512 PerfScore 3840.00
-G_M1799_IG18:        ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x19]
-            ldr     x0, [x0, #0x38]
-            ldr     x0, [x0]
-            ldr     x0, [x0, #0x08]
-            cmp     x0, #48
-            ble     G_M1799_IG19
-                       ;; size=24 bbWeight=128 PerfScore 1728.00
-G_M1799_IG19:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
-            ldr     x0, [x19]
+G_M1799_IG18:        ; bbWeight=512, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+            ldr     x0, [x20]
...

+0 (0.00%) : 498014.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

libraries.crossgen2.windows.arm64.checked.mch

-8 (-1.82%) : 169639.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V06 tmp1         [V06,T00] (  6, 20   )   byref  ->  x25         "impAppendStmt"
 ;  V07 tmp2         [V07,T05] (  6,  8   )   byref  ->  x26        
 ;  V08 tmp3         [V08,T02] (  6, 12   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V09 tmp4         [V09,T11] (  4,  4   )     int  ->  registers  
+;  V09 tmp4         [V09,T11] (  2,  3.96)     int  ->   x0        
 ;  V10 tmp5         [V10,T06] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V11 cse0         [V11,T03] (  4, 11.88)    long  ->  x21         "CSE - aggressive"
 ;  V12 cse1         [V12,T08] (  5,  7   )     int  ->  x23         "CSE - aggressive"
@@ -109,8 +109,8 @@ G_M22994_IG06:        ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
             ; byrRegs -[x26]
             ; gcr arg pop 0
             cmp     w0, #0
-            cset    x21, eq
-            cbnz    w21, G_M22994_IG16
+            cset    x0, eq
+            cbnz    w0, G_M22994_IG16
                        ;; size=56 bbWeight=1.98 PerfScore 36.63
 G_M22994_IG07:        ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
             add     w22, w22, #1
@@ -187,10 +187,8 @@ G_M22994_IG12:        ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             ; gcrRegs -[x0-x1]
             ; byrRegs -[x26]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x0, eq
-            cbnz    w0, G_M22994_IG16
-                       ;; size=68 bbWeight=0.02 PerfScore 0.46
+            cbz     w0, G_M22994_IG16
+                       ;; size=60 bbWeight=0.02 PerfScore 0.44
 G_M22994_IG13:        ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             add     w22, w22, #1
             cmp     w23, w22
@@ -228,7 +226,7 @@ G_M22994_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 440, prolog size 40, PerfScore 120.21, instruction count 110, allocated bytes for code 440 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 432, prolog size 40, PerfScore 120.19, instruction count 108, allocated bytes for code 432 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -239,7 +237,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 110 (0x0006e) Actual length = 440 (0x0001b8)
+  Function Length   : 108 (0x0006c) Actual length = 432 (0x0001b0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-0.73%) : 113673.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport

@@ -68,7 +68,6 @@
 ;  V56 cse0         [V56,T04] ( 17, 12.50)   byref  ->  x23         "CSE - aggressive"
 ;  V57 cse1         [V57,T26] (  4,  5   )    long  ->  x26         "CSE - moderate"
 ;  V58 cse2         [V58,T13] (  8,  8   )    long  ->  [fp+0x70]  multi-def "CSE - moderate"
-;  TEMP_01                                   byref  ->  [fp+0x10]
 ;
 ; Lcl frame size = 160
 
@@ -80,19 +79,17 @@ G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x25, x26, [sp, #0xE0]
             stp     x27, x28, [sp, #0xF0]
             mov     fp, sp
-            add     x9, fp, #16
+            add     x9, fp, #120
             movi    v16.16b, #0
             stp     q16, q16, [x9]
-            stp     q16, q16, [x9, #0x20]
-            stp     q16, q16, [x9, #0x40]
-            stp     q16, q16, [x9, #0x60]
-            stp     q16, q16, [x9, #0x80]
+            stp     xzr, xzr, [x9, #0x20]
+            str     xzr, [x9, #0x30]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
             mov     x21, xzr
-                       ;; size=68 bbWeight=1 PerfScore 14.00
+                       ;; size=60 bbWeight=1 PerfScore 12.00
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x21]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
@@ -880,8 +877,8 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ldr     x1, [x11]
             blr     x1
             ; gcrRegs +[x0]
-            mov     x1, x0
-            ; gcrRegs +[x1]
+            str     x0, [fp, #0x50]    // [V32 tmp17]
+            ; GC ptr vars +{V32}
             ldr     w0, [x22, #0x08]
             ; gcrRegs -[x0]
             cmp     w28, w0
@@ -892,11 +889,6 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ; gcrRegs +[x15]
             str     x15, [fp, #0x18]   // [V45 tmp30]
             ; GC ptr vars +{V45}
-            str     x1, [fp, #0x50]    // [V32 tmp17]
-            ; GC ptr vars +{V32}
-            add     x14, x1, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x10]   // [TEMP_01]
             ldr     x0, [fp, #0x68]    // [V12 loc10]
             ; gcrRegs +[x0]
             ; byrRegs -[x0]
@@ -904,8 +896,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x3, [x11]
             blr     x3
-            ; gcrRegs -[x1 x15]
-            ; byrRegs -[x14]
+            ; gcrRegs -[x15]
             ldr     x1, [fp, #0x68]    // [V12 loc10]
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -915,18 +906,19 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ; GC ptr vars -{V12}
             blr     x2
             ; gcrRegs -[x1]
-            ldr     x14, [fp, #0x10]   // [TEMP_01]
+            ldr     x11, [fp, #0x50]   // [V32 tmp17]
+            ; gcrRegs +[x11]
+            add     x14, x11, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             adrp    x12, [HIGH RELOC #0xD1FFAB1E]      // CORINFO_HELP_ASSIGN_REF
             add     x12, x12, [LOW RELOC #0xD1FFAB1E]
             ldr     x12, [x12]
+            ; GC ptr vars -{V32}
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x11, [fp, #0x50]   // [V32 tmp17]
-            ; gcrRegs +[x11]
             add     x14, x11, #16
             ; byrRegs +[x14]
             ldr     x15, [fp, #0x18]   // [V45 tmp30]
@@ -934,7 +926,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             adrp    x12, [HIGH RELOC #0xD1FFAB1E]      // CORINFO_HELP_ASSIGN_REF
             add     x12, x12, [LOW RELOC #0xD1FFAB1E]
             ldr     x12, [x12]
-            ; GC ptr vars -{V32 V45}
+            ; GC ptr vars -{V45}
             blr     x12
             ; gcrRegs -[x15]
             ; byrRegs -[x14]
@@ -997,7 +989,7 @@ G_M28747_IG19:        ; bbWeight=0.02, gcVars=0000000000001400 {V12 V13}, gcrefR
             ldr     x2, [x23, #0xD1FFAB1E]
             ; gcrRegs +[x2]
             b       G_M28747_IG21
-                       ;; size=312 bbWeight=0.02 PerfScore 2.02
+                       ;; size=300 bbWeight=0.02 PerfScore 1.95
 G_M28747_IG20:        ; bbWeight=0.02, gcrefRegs=3780000 {x19 x20 x21 x22 x24 x25}, byrefRegs=800000 {x23}, byref
             ; gcrRegs -[x2 x11]
             ldr     x1, [x23, #0xD1FFAB1E]
@@ -1107,7 +1099,7 @@ G_M28747_IG26:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2740, prolog size 56, PerfScore 783.17, instruction count 685, allocated bytes for code 2740 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
+; Total bytes of code 2720, prolog size 48, PerfScore 781.10, instruction count 680, allocated bytes for code 2720 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1118,7 +1110,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 685 (0x002ad) Actual length = 2740 (0x000ab4)
+  Function Length   : 680 (0x002a8) Actual length = 2720 (0x000aa0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.68%) : 94048.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -12,7 +12,7 @@
 ;  V00 arg0         [V00,T19] (  5,  5   )     ref  ->   x0         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T10] (  6, 11   )     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T13] (  4,  6   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
 ;  V04 loc1         [V04,T11] (  7, 10.04)     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T20] (  5,  7   )     int  ->  x23         single-def
 ;  V06 loc3         [V06,T03] ( 16, 25.04)     int  ->  x24        
@@ -20,13 +20,13 @@
 ;  V08 loc5         [V08,T08] ( 10, 16   )     ref  ->  x27         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
 ;  V10 loc7         [V10,T12] (  8,  8   )     ref  ->  x26         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T22] (  3,  6   )     int  ->  x20         single-def
 ;  V13 loc10        [V13,T04] (  7, 21   )     int  ->  x21        
 ;  V14 loc11        [V14,T01] (  6, 72   )     ref  ->  x24         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
 ;  V15 loc12        [V15,T00] (  6, 86   )     int  ->   x0        
 ;  V16 loc13        [V16,T23] (  2,  4   )     ref  ->  x24         class-hnd <<unknown class>>
-;  V17 loc14        [V17    ] (  4,  8   )  struct ( 8) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
+;  V17 loc14        [V17    ] (  4,  8   )  struct ( 8) [fp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
 ;  V18 loc15        [V18,T24] (  2,  4   )     ref  ->  x24         class-hnd <<unknown class>>
 ;# V19 OutArgs      [V19    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V20 tmp1         [V20,T05] ( 10, 20   )     ref  ->  x27         class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
@@ -35,7 +35,7 @@
 ;* V23 tmp4         [V23    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;  V24 tmp5         [V24,T14] (  4,  8   )     ref  ->   x0         class-hnd "Inlining Arg" <System.String>
 ;* V25 tmp6         [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.AliasSymbol>
-;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
 ;  V27 tmp8         [V27,T25] (  2,  4   )     ref  ->   x1         "field V22.array (fldOffset=0x0)" P-INDEP
 ;  V28 tmp9         [V28,T26] (  2,  4   )     ref  ->   x1         "field V23.array (fldOffset=0x0)" P-INDEP
 ;  V29 tmp10        [V29,T27] (  2,  4   )     ref  ->   x0         single-def "argument with side effect"
@@ -47,27 +47,27 @@
 ;  V35 tmp16        [V35,T18] (  2,  8   )     ref  ->   x2         "argument with side effect"
 ;  V36 cse0         [V36,T21] (  5,  7   )    long  ->  x21         "CSE - moderate"
 ;  V37 cse1         [V37,T02] (  2, 33   )    long  ->  x23         hoist "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 72
+; Lcl frame size = 56
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0xA0]!
-            stp     x19, x20, [sp, #0x58]
-            stp     x21, x22, [sp, #0x68]
-            stp     x23, x24, [sp, #0x78]
-            stp     x25, x26, [sp, #0x88]
-            str     x27, [sp, #0x98]
+            stp     fp, lr, [sp, #-0x90]!
+            stp     x19, x20, [sp, #0x48]
+            stp     x21, x22, [sp, #0x58]
+            stp     x23, x24, [sp, #0x68]
+            stp     x25, x26, [sp, #0x78]
+            str     x27, [sp, #0x88]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #16
             movi    v16.16b, #0
             stp     q16, q16, [x9]
-            stp     q16, q16, [x9, #0x20]
+            stp     xzr, xzr, [x9, #0x20]
+            str     xzr, [x9, #0x30]
             mov     x19, x1
             ; gcrRegs +[x19]
             mov     x20, x2
             ; gcrRegs +[x20]
-                       ;; size=52 bbWeight=1 PerfScore 10.50
+                       ;; size=56 bbWeight=1 PerfScore 11.50
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x0]
             ldrsb   wzr, [x0]
@@ -85,7 +85,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             ldr     x4, [x11]
             blr     x4
             ; byrRegs -[x2]
-            add     x8, fp, #64    // [V03 loc0]
+            add     x8, fp, #48    // [V03 loc0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     wzr, [x0]
@@ -96,7 +96,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x21, [x1]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x2, [x11]
@@ -110,7 +110,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
             mov     x22, x0
             ; gcrRegs +[x22]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -125,7 +125,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000
                        ;; size=184 bbWeight=1 PerfScore 54.00
 G_M1087_IG03:        ; bbWeight=3.96, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             mov     w2, w24
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -160,7 +160,7 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x25]
             mov     x26, x0
             ; gcrRegs +[x26]
-            add     x8, fp, #40    // [V11 loc8]
+            add     x8, fp, #24    // [V11 loc8]
             mov     x0, x26
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -175,7 +175,7 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs +[x0]
             mov     x27, x0
             ; gcrRegs +[x27]
-            add     x0, fp, #40    // [V11 loc8]
+            add     x0, fp, #24    // [V11 loc8]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -302,7 +302,7 @@ G_M1087_IG07:        ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}
 G_M1087_IG08:        ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x20]
             mov     x1, x21
-            add     x0, fp, #64    // [V03 loc0]
+            add     x0, fp, #48    // [V03 loc0]
             mov     w2, w24
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -337,7 +337,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x25]
             mov     x26, x0
             ; gcrRegs +[x26]
-            add     x8, fp, #40    // [V11 loc8]
+            add     x8, fp, #24    // [V11 loc8]
             mov     x0, x26
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -352,7 +352,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs +[x0]
             mov     x27, x0
             ; gcrRegs +[x27]
-            add     x0, fp, #40    // [V11 loc8]
+            add     x0, fp, #24    // [V11 loc8]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -370,16 +370,12 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            add     x14, x27, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x26
             ; gcrRegs +[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x11]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x26
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -388,7 +384,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1 x26]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x27, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -399,7 +395,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             b       G_M1087_IG11
-                       ;; size=200 bbWeight=0.02 PerfScore 1.14
+                       ;; size=192 bbWeight=0.02 PerfScore 1.08
 G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x27] +[x25]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -423,16 +419,12 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            add     x14, x27, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x25
             ; gcrRegs +[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x11]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x25
             ; gcrRegs +[x1]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]
@@ -441,7 +433,7 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1 x25]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x27, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -451,7 +443,7 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2580000 {x19 x20 x22 x25}, byref
             blr     x12
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-                       ;; size=136 bbWeight=0.02 PerfScore 0.84
+                       ;; size=128 bbWeight=0.02 PerfScore 0.78
 G_M1087_IG11:        ; bbWeight=0.04, gcrefRegs=8580000 {x19 x20 x22 x27}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [x22, #0x08]
             cmp     w24, w14
@@ -569,11 +561,11 @@ G_M1087_IG18:        ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1] +[x0]
-            str     x0, [fp, #0x20]    // [V17 loc14]
+            str     x0, [fp, #0x10]    // [V17 loc14]
             adrp    x1, [HIGH RELOC #0xD1FFAB1E]      // <unknown method>
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x1]
-            add     x0, fp, #32    // [V17 loc14]
+            add     x0, fp, #16    // [V17 loc14]
             ; gcrRegs -[x0]
             adrp    x11, [HIGH RELOC #0xD1FFAB1E]      // function address
             add     x11, x11, [LOW RELOC #0xD1FFAB1E]
@@ -622,11 +614,11 @@ G_M1087_IG19:        ; bbWeight=2, gcrefRegs=1480000 {x19 x22 x24}, byrefRegs=00
             ldr     x2, [x11]
             blr     x2
             ; gcrRegs -[x1] +[x0]
-            str     x0, [fp, #0x20]    // [V17 loc14]
+            str     x0, [fp, #0x10]    // [V17 loc14]
             adrp    x1, [HIGH RELOC #0xD1FFAB1E]      // <unknown method>
             add     x1, x1, [LOW RELOC #0xD1FFAB1E]
             ldr     x1, [x1]
-            add     x0, fp, #32    // [V17 loc14]
+            add     x0, fp, #16    // [V17 loc14]
             ; gcrRegs -[x0]
...

-4 (-0.15%) : 209718.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -35,13 +35,13 @@
 ;  V23 tmp2         [V23,T55] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V24 tmp3         [V24,T46] (  3,  2   )     int  ->  x26        
 ;  V25 tmp4         [V25,T22] (  4, 16   )     int  ->  x25         "impSpillLclRefs"
-;  V26 tmp5         [V26,T33] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V26 tmp5         [V26,T32] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V27 tmp6         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp7         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V29 tmp8         [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V30 tmp9         [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <<unknown class>>
 ;  V31 tmp10        [V31,T54] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V32 tmp11        [V32,T29] (  2,  0.16)   ubyte  ->   x0         "Inline return value spill temp"
+;* V32 tmp11        [V32,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V33 tmp12        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V34 tmp13        [V34,T14] (  6, 24   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V35 tmp14        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,18 +57,18 @@
 ;  V45 tmp24        [V45,T09] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V46 tmp25        [V46,T10] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V47 tmp26        [V47,T11] (  4, 32   )     ref  ->  [fp+0x30]  "argument with side effect"
-;  V48 tmp27        [V48,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V49 tmp28        [V49,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V50 tmp29        [V50,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V51 tmp30        [V51,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V52 tmp31        [V52,T38] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V53 tmp32        [V53,T39] (  2,  8   )     ref  ->   x1         "argument with side effect"
-;  V54 tmp33        [V54,T40] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
+;  V48 tmp27        [V48,T33] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V49 tmp28        [V49,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V50 tmp29        [V50,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V51 tmp30        [V51,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V52 tmp31        [V52,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V53 tmp32        [V53,T38] (  2,  8   )     ref  ->   x1         "argument with side effect"
+;  V54 tmp33        [V54,T39] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
 ;  V55 tmp34        [V55,T20] (  4, 16   )     ref  ->  [fp+0x20]  "argument with side effect"
 ;  V56 tmp35        [V56,T21] (  4, 16   )     ref  ->   x1         "argument with side effect"
-;  V57 tmp36        [V57,T30] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
-;  V58 tmp37        [V58,T31] (  4,  8   )     ref  ->   x3         "argument with side effect"
-;  V59 tmp38        [V59,T32] (  4,  8   )     ref  ->   x0         "argument with side effect"
+;  V57 tmp36        [V57,T29] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
+;  V58 tmp37        [V58,T30] (  4,  8   )     ref  ->   x3         "argument with side effect"
+;  V59 tmp38        [V59,T31] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V60 cse0         [V60,T13] (  8, 28   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
 ;  V61 cse1         [V61,T00] (  6, 71.28)    long  ->  [fp+0x70]  spill-single-def "CSE - aggressive"
 ;  V62 cse2         [V62,T26] (  4, 11.88)    long  ->  [fp+0x68]  spill-single-def "CSE - moderate"
@@ -478,14 +478,11 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ldr     x11, [x20, x1]
             ; gcrRegs +[x11]
             cmp     x0, x11
-            cset    x0, eq
-            ; gcrRegs -[x0]
-            cbz     w0, G_M58711_IG21
+            bne     G_M58711_IG21
             ldr     x1, [fp, #0x10]    // [V67 cse7]
             ; byrRegs +[x1]
             ldr     x2, [fp, #0x58]    // [V64 cse4]
             ldr     x0, [x1, x2]
-            ; gcrRegs +[x0]
             ldr     x11, [fp, #0x40]   // [V71 cse11]
             ; gcrRegs -[x11]
             ldr     wzr, [x0]
@@ -513,7 +510,7 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ; gcr arg pop 0
             cbnz    w0, G_M58711_IG20
             b       G_M58711_IG21
-                       ;; size=296 bbWeight=0.08 PerfScore 8.96
+                       ;; size=292 bbWeight=0.08 PerfScore 8.92
 G_M58711_IG19:        ; bbWeight=0.08, gcVars=0000000000000014 {V19 V67}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars +{V02 V04 V19 V67}
             ldr     x1, [fp, #0x10]    // [V67 cse7]
@@ -1134,7 +1131,7 @@ G_M58711_IG55:        ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
             brk_windows #0
                        ;; size=36 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2628, prolog size 40, PerfScore 2218.63, instruction count 657, allocated bytes for code 2628 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2624, prolog size 40, PerfScore 2218.59, instruction count 656, allocated bytes for code 2624 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1145,7 +1142,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 657 (0x00291) Actual length = 2628 (0x000a44)
+  Function Length   : 656 (0x00290) Actual length = 2624 (0x000a40)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.15%) : 240066.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -34,7 +34,7 @@
 ;  V22 tmp2         [V22,T55] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V23 tmp3         [V23,T46] (  3,  2   )     int  ->  x26        
 ;  V24 tmp4         [V24,T22] (  4, 16   )     int  ->  x25         "impSpillLclRefs"
-;  V25 tmp5         [V25,T33] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V25 tmp5         [V25,T32] (  2,  8   )     ref  ->  x15         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V26 tmp6         [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V27 tmp7         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp8         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
 ;  V30 tmp10        [V30,T53] (  3,  0   )     ref  ->  x20         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V31 tmp11        [V31,T56] (  2,  0   )     ref  ->  x19         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V32 tmp12        [V32,T54] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V33 tmp13        [V33,T29] (  2,  0.16)   ubyte  ->   x0         "Inline return value spill temp"
+;* V33 tmp13        [V33,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V34 tmp14        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V35 tmp15        [V35,T14] (  6, 24   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V36 tmp16        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -58,18 +58,18 @@
 ;  V46 tmp26        [V46,T09] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V47 tmp27        [V47,T10] (  4, 32   )     ref  ->   x0         "argument with side effect"
 ;  V48 tmp28        [V48,T11] (  4, 32   )     ref  ->  [fp+0x30]  "argument with side effect"
-;  V49 tmp29        [V49,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V50 tmp30        [V50,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V51 tmp31        [V51,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V52 tmp32        [V52,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V53 tmp33        [V53,T38] (  2,  8   )     ref  ->   x0         "argument with side effect"
-;  V54 tmp34        [V54,T39] (  2,  8   )     ref  ->   x1         "argument with side effect"
-;  V55 tmp35        [V55,T40] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
+;  V49 tmp29        [V49,T33] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V50 tmp30        [V50,T34] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V51 tmp31        [V51,T35] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V52 tmp32        [V52,T36] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V53 tmp33        [V53,T37] (  2,  8   )     ref  ->   x0         "argument with side effect"
+;  V54 tmp34        [V54,T38] (  2,  8   )     ref  ->   x1         "argument with side effect"
+;  V55 tmp35        [V55,T39] (  2,  8   )     ref  ->  [fp+0x28]  spill-single-def "argument with side effect"
 ;  V56 tmp36        [V56,T20] (  4, 16   )     ref  ->  [fp+0x20]  "argument with side effect"
 ;  V57 tmp37        [V57,T21] (  4, 16   )     ref  ->   x1         "argument with side effect"
-;  V58 tmp38        [V58,T30] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
-;  V59 tmp39        [V59,T31] (  4,  8   )     ref  ->   x3         "argument with side effect"
-;  V60 tmp40        [V60,T32] (  4,  8   )     ref  ->   x0         "argument with side effect"
+;  V58 tmp38        [V58,T29] (  4,  8   )     ref  ->  [fp+0x18]  "argument with side effect"
+;  V59 tmp39        [V59,T30] (  4,  8   )     ref  ->   x3         "argument with side effect"
+;  V60 tmp40        [V60,T31] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V61 cse0         [V61,T13] (  8, 28   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
 ;  V62 cse1         [V62,T00] (  6, 71.28)    long  ->  [fp+0x70]  spill-single-def "CSE - aggressive"
 ;  V63 cse2         [V63,T26] (  4, 11.88)    long  ->  [fp+0x68]  spill-single-def "CSE - moderate"
@@ -479,14 +479,11 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ldr     x11, [x20, x1]
             ; gcrRegs +[x11]
             cmp     x0, x11
-            cset    x0, eq
-            ; gcrRegs -[x0]
-            cbz     w0, G_M58711_IG21
+            bne     G_M58711_IG21
             ldr     x1, [fp, #0x10]    // [V68 cse7]
             ; byrRegs +[x1]
             ldr     x2, [fp, #0x58]    // [V65 cse4]
             ldr     x0, [x1, x2]
-            ; gcrRegs +[x0]
             ldr     x11, [fp, #0x40]   // [V72 cse11]
             ; gcrRegs -[x11]
             ldr     wzr, [x0]
@@ -514,7 +511,7 @@ G_M58711_IG18:        ; bbWeight=0.08, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, b
             ; gcr arg pop 0
             cbnz    w0, G_M58711_IG20
             b       G_M58711_IG21
-                       ;; size=296 bbWeight=0.08 PerfScore 8.96
+                       ;; size=292 bbWeight=0.08 PerfScore 8.92
 G_M58711_IG19:        ; bbWeight=0.08, gcVars=0000000000000014 {V18 V68}, gcrefRegs=F80000 {x19 x20 x21 x22 x23}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars +{V02 V04 V18 V68}
             ldr     x1, [fp, #0x10]    // [V68 cse7]
@@ -1156,7 +1153,7 @@ G_M58711_IG55:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
                        ;; size=84 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2676, prolog size 40, PerfScore 2218.63, instruction count 669, allocated bytes for code 2676 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2672, prolog size 40, PerfScore 2218.59, instruction count 668, allocated bytes for code 2672 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1167,7 +1164,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 669 (0x0029d) Actual length = 2676 (0x000a74)
+  Function Length   : 668 (0x0029c) Actual length = 2672 (0x000a70)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.10%) : 113946.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

@@ -54,7 +54,7 @@
 ;  V42 tmp8         [V42,T10] (  6, 48   )     ref  ->  [fp+0x38]  class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V43 tmp9         [V43    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp10        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-;  V45 tmp11        [V45,T41] (  2,  0.16)   ubyte  ->   x1         "Inline return value spill temp"
+;* V45 tmp11        [V45,T42] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V46 tmp12        [V46,T16] (  4, 32   )     ref  ->  [fp+0x30]  class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V47 tmp13        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
 ;  V48 tmp14        [V48,T30] (  4, 16   )   ubyte  ->   x2         "Inline return value spill temp"
@@ -100,7 +100,7 @@
 ;* V88 tmp54        [V88,T57] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;  V89 tmp55        [V89,T45] (  2,  8   )     int  ->   x1         "argument with side effect"
 ;  V90 cse0         [V90,T04] ( 14, 72   )    long  ->  [fp+0x78]  multi-def "CSE - aggressive"
-;  V91 cse1         [V91,T42] (  4,  8   )     int  ->  [fp+0x74]  spill-single-def "CSE - moderate"
+;  V91 cse1         [V91,T41] (  4,  8   )     int  ->  [fp+0x74]  spill-single-def "CSE - moderate"
 ;  V92 cse2         [V92,T15] (  9, 38   )    long  ->  x27         "CSE - aggressive"
 ;  V93 cse3         [V93,T09] ( 10, 56   )    long  ->  [fp+0x68]  multi-def "CSE - aggressive"
 ;  V94 cse4         [V94,T02] ( 18, 72   )    long  ->  [fp+0x60]  multi-def "CSE - aggressive"
@@ -805,10 +805,9 @@ G_M30062_IG27:        ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byref
             blr     x1
             ; gcrRegs -[x0]
             cmp     w0, #32
-            cset    x1, ne
-            cbz     w1, G_M30062_IG34
+            beq     G_M30062_IG34
             b       G_M30062_IG38
-                       ;; size=260 bbWeight=0.08 PerfScore 7.72
+                       ;; size=256 bbWeight=0.08 PerfScore 7.68
 G_M30062_IG28:        ; bbWeight=0.08, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=2200000 {x21 x25}, byref, isz
             ldr     x1, [fp, #0x78]    // [V90 cse0]
             add     x0, fp, #0xD1FFAB1E    // [V19 loc12]
@@ -1420,7 +1419,7 @@ G_M30062_IG71:        ; bbWeight=0, gcVars=00000000000000000000000000000000 {},
             brk_windows #0
                        ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3844, prolog size 64, PerfScore 3960.13, instruction count 961, allocated bytes for code 3844 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 3840, prolog size 64, PerfScore 3960.09, instruction count 960, allocated bytes for code 3840 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1431,7 +1430,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 961 (0x003c1) Actual length = 3844 (0x000f04)
+  Function Length   : 960 (0x003c0) Actual length = 3840 (0x000f00)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

libraries.pmi.windows.arm64.checked.mch

-20 (-1.06%) : 95953.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 arg0         [V00,T29] (  7,  5.50)     ref  ->  x21         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T14] (  6, 11   )     ref  ->  x19         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T15] (  6, 10   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
 ;  V04 loc1         [V04,T20] (  7, 10.04)     ref  ->  x21         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T31] (  5,  7   )     int  ->  x22         single-def
 ;  V06 loc3         [V06,T05] ( 16, 25.04)     int  ->  x23        
@@ -19,7 +19,7 @@
 ;  V08 loc5         [V08,T10] ( 10, 16   )     ref  ->  x26         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [fp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T33] (  3,  6   )     int  ->  x24         single-def
 ;  V13 loc10        [V13,T06] (  9, 25   )     int  ->  x20        
 ;  V14 loc11        [V14,T00] ( 10,106   )     ref  ->  x22         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
@@ -68,10 +68,10 @@
 ;* V57 tmp38        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;  V58 tmp39        [V58,T28] (  2,  8   )     ref  ->   x2         class-hnd "Inlining Arg" <<unknown class>>
 ;  V59 tmp40        [V59,T19] (  3, 12   )     ref  ->   x0         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-;  V60 tmp41        [V60    ] (  2,  2   )     ref  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
-;  V61 tmp42        [V61    ] (  4,  4   )     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
-;  V62 tmp43        [V62    ] (  2,  2   )     int  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
-;  V63 tmp44        [V63    ] (  2,  2   )     int  ->  [fp+0x34]  do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
+;  V60 tmp41        [V60    ] (  2,  2   )     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
+;  V61 tmp42        [V61    ] (  4,  4   )     ref  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
+;  V62 tmp43        [V62    ] (  2,  2   )     int  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
+;  V63 tmp44        [V63    ] (  2,  2   )     int  ->  [fp+0x24]  do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
 ;* V64 tmp45        [V64    ] (  0,  0   )     ref  ->  zero-ref    "field V17.array (fldOffset=0x0)" P-INDEP
 ;* V65 tmp46        [V65    ] (  0,  0   )     ref  ->  zero-ref    "field V26.array (fldOffset=0x0)" P-INDEP
 ;* V66 tmp47        [V66    ] (  0,  0   )     ref  ->  zero-ref    "field V29.array (fldOffset=0x0)" P-INDEP
@@ -86,29 +86,27 @@
 ;  V75 tmp56        [V75,T16] (  6, 12   )     ref  ->   x0         "argument with side effect"
 ;  V76 tmp57        [V76,T17] (  6, 12   )     ref  ->   x0         "argument with side effect"
 ;  V77 cse0         [V77,T01] (  7, 88   )    long  ->  x23         "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 64
+; Lcl frame size = 48
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            stp     fp, lr, [sp, #-0x90]!
-            stp     x19, x20, [sp, #0x50]
-            stp     x21, x22, [sp, #0x60]
-            stp     x23, x24, [sp, #0x70]
-            stp     x25, x26, [sp, #0x80]
+            stp     fp, lr, [sp, #-0x80]!
+            stp     x19, x20, [sp, #0x40]
+            stp     x21, x22, [sp, #0x50]
+            stp     x23, x24, [sp, #0x60]
+            stp     x25, x26, [sp, #0x70]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #16
             movi    v16.16b, #0
             stp     q16, q16, [x9]
             stp     xzr, xzr, [x9, #0x20]
-            str     xzr, [x9, #0x30]
             mov     x21, x0
             ; gcrRegs +[x21]
             mov     x19, x1
             ; gcrRegs +[x19]
             mov     x20, x2
             ; gcrRegs +[x20]
-                       ;; size=56 bbWeight=1 PerfScore 11.00
+                       ;; size=52 bbWeight=1 PerfScore 10.00
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ldrsb   wzr, [x21]
             add     x22, x21, #40
@@ -179,7 +177,7 @@ G_M1087_IG05:        ; bbWeight=0.50, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=4
 G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
             ; byrRegs -[x22]
-            add     x8, fp, #56    // [V03 loc0]
+            add     x8, fp, #40    // [V03 loc0]
             mov     x0, x23
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this
@@ -189,7 +187,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ldr     wzr, [x0]
             blr     x1
             ; gcrRegs -[x0 x23]
-            ldrsw   x1, [fp, #0x38]    // [V03 loc0]
+            ldrsw   x1, [fp, #0x28]    // [V03 loc0]
             movz    x0, #0xD1FFAB1E
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
@@ -197,7 +195,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ; gcrRegs +[x0]
             mov     x21, x0
             ; gcrRegs +[x21]
-            ldr     w0, [fp, #0x38]    // [V03 loc0]
+            ldr     w0, [fp, #0x28]    // [V03 loc0]
             ; gcrRegs -[x0]
             sub     w22, w0, #1
             mov     w23, wzr
@@ -207,7 +205,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=000
             ble     G_M1087_IG17
                        ;; size=84 bbWeight=1 PerfScore 23.00
 G_M1087_IG07:        ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
-            add     x0, fp, #56    // [V03 loc0]
+            add     x0, fp, #40    // [V03 loc0]
             mov     w2, w23
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -237,7 +235,7 @@ G_M1087_IG08:        ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x8, x0
             bne     G_M1087_IG45
-            add     x8, fp, #32    // [V11 loc8]
+            add     x8, fp, #16    // [V11 loc8]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -246,7 +244,7 @@ G_M1087_IG08:        ; bbWeight=1.98, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x28]    // [V61 tmp42]
+            ldr     x0, [fp, #0x18]    // [V61 tmp42]
             ; gcrRegs +[x0]
             cbnz    x0, G_M1087_IG09
             mov     x25, xzr
@@ -396,7 +394,7 @@ G_M1087_IG16:        ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 G_M1087_IG17:        ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x20]
-            add     x0, fp, #56    // [V03 loc0]
+            add     x0, fp, #40    // [V03 loc0]
             mov     w2, w23
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -426,7 +424,7 @@ G_M1087_IG18:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #0xD1FFAB1E LSL #32
             cmp     x8, x0
             bne     G_M1087_IG45
-            add     x8, fp, #32    // [V11 loc8]
+            add     x8, fp, #16    // [V11 loc8]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this
@@ -435,7 +433,7 @@ G_M1087_IG18:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x1, [x1]
             blr     x1
             ; gcrRegs -[x0]
-            ldr     x0, [fp, #0x28]    // [V61 tmp42]
+            ldr     x0, [fp, #0x18]    // [V61 tmp42]
             ; gcrRegs +[x0]
             cbnz    x0, G_M1087_IG19
             mov     x25, xzr
@@ -476,9 +474,6 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15 x25]
             ; byrRegs -[x14]
-            add     x14, x26, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -486,7 +481,6 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x24
             ; gcrRegs +[x1]
             ldr     x2, [x0]
@@ -494,7 +488,7 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             ldr     x2, [x2, #0x38]
             blr     x2
             ; gcrRegs -[x1 x24]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x26, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -502,7 +496,7 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, b
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
             b       G_M1087_IG23
-                       ;; size=104 bbWeight=0.02 PerfScore 0.57
+                       ;; size=96 bbWeight=0.02 PerfScore 0.51
 G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x26] +[x24]
             movz    x0, #0xD1FFAB1E
@@ -518,9 +512,6 @@ G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x0, #0xD1FFAB1E LSL #16
             movk    x0, #0xD1FFAB1E LSL #32
             str     x0, [x26, #0x28]
-            add     x14, x26, #48
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
             mov     x0, x24
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this
@@ -528,7 +519,6 @@ G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             movk    x1, #0xD1FFAB1E LSL #32
             ldr     x1, [x1]
             blr     x1
-            ; byrRegs -[x14]
             mov     x1, x24
             ; gcrRegs +[x1]
             ldr     x2, [x0]
@@ -536,14 +526,14 @@ G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=1380000 {x19 x20 x21 x24}, byref
             ldr     x2, [x2, #0x38]
             blr     x2
             ; gcrRegs -[x1 x24]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            add     x14, x26, #48
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-                       ;; size=104 bbWeight=0.02 PerfScore 0.56
+                       ;; size=96 bbWeight=0.02 PerfScore 0.50
 G_M1087_IG23:        ; bbWeight=0.04, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [x21, #0x08]
             cmp     w23, w14
@@ -775,11 +765,11 @@ G_M1087_IG40:        ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}
                        ;; size=12 bbWeight=4 PerfScore 8.00
 G_M1087_IG41:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[x19 x21]
-            ldp     x25, x26, [sp, #0x80]
-            ldp     x23, x24, [sp, #0x70]
-            ldp     x21, x22, [sp, #0x60]
-            ldp     x19, x20, [sp, #0x50]
-            ldp     fp, lr, [sp], #0x90
+            ldp     x25, x26, [sp, #0x70]
+            ldp     x23, x24, [sp, #0x60]
+            ldp     x21, x22, [sp, #0x50]
+            ldp     x19, x20, [sp, #0x40]
+            ldp     fp, lr, [sp], #0x80
             ret     lr
                        ;; size=24 bbWeight=1 PerfScore 6.00
 G_M1087_IG42:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -830,7 +820,7 @@ G_M1087_IG47:        ; bbWeight=0, gcrefRegs=400000 {x22}, byrefRegs=0000 {}, by
             brk_windows #0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1892, prolog size 44, PerfScore 1114.05, instruction count 473, allocated bytes for code 1892 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
+; Total bytes of code 1872, prolog size 40, PerfScore 1112.93, instruction count 468, allocated bytes for code 1872 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -841,7 +831,7 @@ Unwind Info:
...

-32 (-0.77%) : 118236.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport

@@ -14,15 +14,15 @@
 ;  V03 loc1         [V03,T42] (  7,  5.02)     ref  ->  x23         class-hnd exact single-def <<unknown class>>
 ;  V04 loc2         [V04,T51] (  4,  3   )     ref  ->  x27         class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
 ;  V05 loc3         [V05,T19] ( 14, 11   )     ref  ->  x28         class-hnd exact single-def <<unknown class>>
-;  V06 loc4         [V06    ] (  5,  5.50)  struct ( 8) [fp+0xC8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+;  V06 loc4         [V06    ] (  5,  5.50)  struct ( 8) [fp+0xB8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
 ;* V07 loc5         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Threading.CancellationToken>
 ;  V08 loc6         [V08,T41] (  5,  5.50)     int  ->  x26         single-def
-;  V09 loc7         [V09,T04] ( 12, 18.52)     int  ->  [fp+0xC4] 
-;  V10 loc8         [V10    ] ( 12, 14   )  struct (24) [fp+0xA8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+;  V09 loc7         [V09,T04] ( 12, 18.52)     int  ->  [fp+0xB4] 
+;  V10 loc8         [V10    ] ( 12, 14   )  struct (24) [fp+0x98]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
 ;  V11 loc9         [V11,T13] ( 12, 12   )     ref  ->  x21         must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
 ;* V12 loc10        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-;  V13 loc11        [V13,T20] ( 10, 10   )     ref  ->  [fp+0x88]  class-hnd <<unknown class>>
-;  V14 loc12        [V14,T37] (  6,  6   )     ref  ->  [fp+0x80]  class-hnd <<unknown class>>
+;  V13 loc11        [V13,T20] ( 10, 10   )     ref  ->  [fp+0x78]  class-hnd <<unknown class>>
+;  V14 loc12        [V14,T37] (  6,  6   )     ref  ->  [fp+0x70]  class-hnd <<unknown class>>
 ;# V15 OutArgs      [V15    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V16 tmp1         [V16,T24] (  5, 10   )     ref  ->   x0         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V17 tmp2         [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -38,14 +38,14 @@
 ;  V27 tmp12        [V27,T62] (  2,  2   )     ref  ->   x2         class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
 ;  V28 tmp13        [V28,T52] (  3,  3   )     ref  ->  x28         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V29 tmp14        [V29,T14] (  6, 12   )     ref  ->  registers   class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-;  V30 tmp15        [V30,T06] (  8, 16   )     ref  ->  [fp+0x78]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+;  V30 tmp15        [V30,T06] (  8, 16   )     ref  ->  [fp+0x68]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
 ;  V31 tmp16        [V31,T07] (  8, 16   )     ref  ->   x0         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V32 tmp17        [V32    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V33 tmp18        [V33,T02] ( 10, 20   )     ref  ->   x2         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V34 tmp19        [V34    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V35 tmp20        [V35,T38] (  6,  6   )     ref  ->   x2        
-;  V36 tmp21        [V36,T00] ( 16, 32   )     ref  ->  [fp+0x70]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-;  V37 tmp22        [V37,T03] ( 10, 20   )     ref  ->  [fp+0x68]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+;  V36 tmp21        [V36,T00] ( 16, 32   )     ref  ->  [fp+0x60]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+;  V37 tmp22        [V37,T03] ( 10, 20   )     ref  ->  [fp+0x58]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
 ;  V38 tmp23        [V38,T53] (  3,  3   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V39 tmp24        [V39,T54] (  3,  3   )     ref  ->  x15         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;* V40 tmp25        [V40    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Threading.CancellationToken>
@@ -54,9 +54,9 @@
 ;* V43 tmp28        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;* V44 tmp29        [V44    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
 ;* V45 tmp30        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;  V46 tmp31        [V46,T46] (  5,  5   )   byref  ->  [fp+0x60]  spill-single-def "Inlining Arg"
-;  V47 tmp32        [V47,T56] (  4,  2   )     ref  ->  [fp+0x58]  class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;  V48 tmp33        [V48,T57] (  4,  2   )     ref  ->  [fp+0x50]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+;  V46 tmp31        [V46,T46] (  5,  5   )   byref  ->  [fp+0x50]  spill-single-def "Inlining Arg"
+;  V47 tmp32        [V47,T56] (  4,  2   )     ref  ->  [fp+0x48]  class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+;  V48 tmp33        [V48,T57] (  4,  2   )     ref  ->  [fp+0x40]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
 ;  V49 tmp34        [V49,T63] (  2,  2   )     ref  ->   x1         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V50 tmp35        [V50,T58] (  4,  2   )     int  ->  x26         "Inline return value spill temp"
 ;  V51 tmp36        [V51,T64] (  2,  2   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -64,7 +64,7 @@
 ;* V53 tmp38        [V53,T78] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V54 tmp39        [V54,T47] (  4,  4   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;  V55 tmp40        [V55,T59] (  4,  2   )     int  ->  x26         "Inline stloc first use temp"
-;  V56 tmp41        [V56,T10] ( 15, 14.02)     ref  ->  [fp+0x48]  class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V56 tmp41        [V56,T10] ( 15, 14.02)     ref  ->  [fp+0x38]  class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V57 tmp42        [V57,T11] ( 16, 14   )     ref  ->   x3         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V58 tmp43        [V58,T81] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V59 tmp44        [V59,T26] (  6,  9   )     ref  ->   x1         "CASTCLASS eval op1"
@@ -74,27 +74,27 @@
 ;  V63 tmp48        [V63,T28] (  6,  8   )     ref  ->  registers   class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V64 tmp49        [V64,T31] (  4,  8   )     ref  ->   x4         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;* V65 tmp50        [V65    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-;  V66 tmp51        [V66    ] ( 11, 10.02)  struct (24) [fp+0x90]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+;  V66 tmp51        [V66    ] ( 11, 10.02)  struct (24) [fp+0x80]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V67 tmp52        [V67    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V68 tmp53        [V68    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-;  V69 tmp54        [V69,T15] (  6, 12   )     ref  ->  [fp+0x40]  class-hnd exact "Inlining Arg" <<unknown class>>
-;  V70 tmp55        [V70,T32] (  4,  8   )     ref  ->  [fp+0x38]  class-hnd "Inlining Arg" <System.Object[]>
+;  V69 tmp54        [V69,T15] (  6, 12   )     ref  ->  [fp+0x30]  class-hnd exact "Inlining Arg" <<unknown class>>
+;  V70 tmp55        [V70,T32] (  4,  8   )     ref  ->  [fp+0x28]  class-hnd "Inlining Arg" <System.Object[]>
 ;* V71 tmp56        [V71    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V72 tmp57        [V72,T21] ( 10, 10   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V73 tmp58        [V73,T82] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V74 tmp59        [V74,T16] (  6, 12   )     ref  ->   x1         "CASTCLASS eval op1"
 ;  V75 tmp60        [V75,T30] (  6,  8   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V76 tmp61        [V76,T05] ( 10, 18   )     ref  ->  [fp+0x30]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V76 tmp61        [V76,T05] ( 10, 18   )     ref  ->  [fp+0x20]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V77 tmp62        [V77,T33] (  4,  8   )     ref  ->   x3         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;  V78 tmp63        [V78,T34] (  4,  8   )     ref  ->   x0         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
 ;  V79 tmp64        [V79,T83] (  3,  0   )     ref  ->  x19         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V80 tmp65        [V80,T01] ( 12, 24   )     ref  ->  [fp+0x28]  class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V81 tmp66        [V81,T35] (  4,  8   )     ref  ->  [fp+0x20]  class-hnd exact "Inlining Arg" <System.String>
+;  V80 tmp65        [V80,T01] ( 12, 24   )     ref  ->  [fp+0x18]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V81 tmp66        [V81,T35] (  4,  8   )     ref  ->  [fp+0x10]  class-hnd exact "Inlining Arg" <System.String>
 ;  V82 tmp67        [V82,T17] (  6, 12   )     ref  ->  x15         class-hnd exact "Inlining Arg" <<unknown class>>
 ;  V83 tmp68        [V83,T36] (  8,  7.56)     ref  ->   x3         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
 ;  V84 tmp69        [V84,T25] ( 10,  9.34)     int  ->   x2         "Inline stloc first use temp"
 ;  V85 tmp70        [V85,T29] (  6,  8   )     ref  ->   x1         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-;  V86 tmp71        [V86    ] (  5,  5.50)     ref  ->  [fp+0xC8]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+;  V86 tmp71        [V86    ] (  5,  5.50)     ref  ->  [fp+0xB8]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
 ;* V87 tmp72        [V87,T79] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._source (fldOffset=0x0)" P-INDEP
 ;* V88 tmp73        [V88    ] (  0,  0   )     ref  ->  zero-ref    "field V40._source (fldOffset=0x0)" P-INDEP
 ;* V89 tmp74        [V89    ] (  0,  0   )     ref  ->  zero-ref    "field V41._node (fldOffset=0x0)" P-INDEP
@@ -119,33 +119,27 @@
 ;  V108 cse4        [V108,T12] ( 18, 13   )    long  ->  x25         "CSE - aggressive"
 ;  V109 cse5        [V109,T22] ( 10, 10   )    long  ->  x22         "CSE - moderate"
 ;  V110 rat0        [V110,T77] (  2,  1   )    long  ->   x0         "Spilling to split statement for tree"
-;  TEMP_01                                   byref  ->  [fp+0x18]
 ;
-; Lcl frame size = 192
+; Lcl frame size = 176
 
 G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             stp     fp, lr, [sp, #0xD1FFAB1E]!
-            stp     x19, x20, [sp, #0xD0]
-            stp     x21, x22, [sp, #0xE0]
-            stp     x23, x24, [sp, #0xF0]
-            stp     x25, x26, [sp, #0xD1FFAB1E]
+            stp     x19, x20, [sp, #0xC0]
+            stp     x21, x22, [sp, #0xD0]
+            stp     x23, x24, [sp, #0xE0]
+            stp     x25, x26, [sp, #0xF0]
             stp     x27, x28, [sp, #0xD1FFAB1E]
             mov     fp, sp
-            add     x9, fp, #24
+            add     x9, fp, #128
             movi    v16.16b, #0
             stp     q16, q16, [x9]
             stp     q16, q16, [x9, #0x20]
-            stp     q16, q16, [x9, #0x40]
-            stp     q16, q16, [x9, #0x60]
-            stp     q16, q16, [x9, #0x80]
-            stp     xzr, xzr, [x9, #0xA0]
-            str     xzr, [x9, #0xB0]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
             mov     x21, xzr
-                       ;; size=76 bbWeight=1 PerfScore 16.00
+                       ;; size=56 bbWeight=1 PerfScore 11.00
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x21]
             movz    x22, #0xD1FFAB1E
@@ -375,11 +369,11 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ldrsb   wzr, [x26]
             add     x2, x26, #48
             ; byrRegs +[x2]
-            str     x2, [fp, #0x60]    // [V46 tmp31]
+            str     x2, [fp, #0x50]    // [V46 tmp31]
             ; GC ptr vars +{V46}
             ldr     x3, [x2]
             ; gcrRegs +[x3]
-            str     x3, [fp, #0x58]    // [V47 tmp32]
+            str     x3, [fp, #0x48]    // [V47 tmp32]
             ; GC ptr vars +{V47}
             cbnz    x3, G_M28747_IG12
             ldr     x0, [x26, #0x18]
@@ -392,7 +386,7 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; byrRegs -[x2]
             mov     x2, x0
             ; gcrRegs +[x2]
-            str     x2, [fp, #0x50]    // [V48 tmp33]
+            str     x2, [fp, #0x40]    // [V48 tmp33]
             ; GC ptr vars +{V48}
             cbz     x2, G_M28747_IG12
             mov     x0, x26
@@ -407,7 +401,7 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             sxtw    w2, w0
             mov     x1, x26
             ; gcrRegs +[x1]
-            ldr     x0, [fp, #0x50]    // [V48 tmp33]
+            ldr     x0, [fp, #0x40]    // [V48 tmp33]
             ; gcrRegs +[x0]
             ldr     x3, [x0]
             ldr     x3, [x3, #0x68]
@@ -417,7 +411,7 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x1 x26]
             mov     x1, x0
             ; gcrRegs +[x1]
-            ldr     x26, [fp, #0x60]   // [V46 tmp31]
+            ldr     x26, [fp, #0x50]   // [V46 tmp31]
             ; byrRegs +[x26]
             cbz     x26, G_M28747_IG72
             mov     x0, x26
@@ -432,19 +426,19 @@ G_M28747_IG11:        ; bbWeight=0.50, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             mov     x26, x3
             ; gcrRegs +[x26]
             ; byrRegs -[x26]
-            str     x26, [fp, #0x58]   // [V47 tmp32]
+            str     x26, [fp, #0x48]   // [V47 tmp32]
             ; GC ptr vars +{V47}
                        ;; size=300 bbWeight=0.50 PerfScore 43.00
 G_M28747_IG12:        ; bbWeight=0.50, gcVars=00000000000000000100000000000000 {V47}, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[x0 x3 x26]
             ; GC ptr vars -{V46}
-            ldr     x3, [fp, #0x58]    // [V47 tmp32]
+            ldr     x3, [fp, #0x48]    // [V47 tmp32]
             ; gcrRegs +[x3]
-            str     x3, [fp, #0xC8]    // [V86 tmp71]
-            ldr     x0, [fp, #0xC8]    // [V86 tmp71]
+            str     x3, [fp, #0xB8]    // [V86 tmp71]
+            ldr     x0, [fp, #0xB8]    // [V86 tmp71]
             ; gcrRegs +[x0]
             cbz     x0, G_M28747_IG15
-            ldr     x0, [fp, #0xC8]    // [V86 tmp71]
+            ldr     x0, [fp, #0xB8]    // [V86 tmp71]
             ldr     x0, [x0, #0x18]
             mov     x1, x0
             ; gcrRegs +[x1]
@@ -483,8 +477,8 @@ G_M28747_IG16:        ; bbWeight=0.50, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
             ble     G_M28747_IG41
                        ;; size=24 bbWeight=0.50 PerfScore 3.25
 G_M28747_IG17:        ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
-            add     x0, fp, #200   // [V06 loc4]
-            str     w3, [fp, #0xC4]    // [V09 loc7]
+            add     x0, fp, #184   // [V06 loc4]
+            str     w3, [fp, #0xB4]    // [V09 loc7]
             mov     w2, w3
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
@@ -495,7 +489,7 @@ G_M28747_IG17:        ; bbWeight=3.96, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
             ldr     x4, [x4]
             blr     x4
             ; gcrRegs +[x0]
-            add     x8, fp, #168   // [V10 loc8]
+            add     x8, fp, #152   // [V10 loc8]
             movz    x1, #0xD1FFAB1E      // code for Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax:get_ImportsClauses():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]:this
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
@@ -535,7 +529,7 @@ G_M28747_IG18:        ; bbWeight=1.98, gcrefRegs=18B80000 {x19 x20 x21 x23 x27 x
 G_M28747_IG19:        ; bbWeight=1.98, gcrefRegs=18980004 {x2 x19 x20 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
             mov     x21, x2
             ; gcrRegs +[x21]
-            ldr     x3, [fp, #0xB0]    // [V10 loc8+0x08]
+            ldr     x3, [fp, #0xA0]    // [V10 loc8+0x08]
             ; gcrRegs +[x3]
             cbz     x3, G_M28747_IG77
             ldr     x4, [x3, #0x18]
@@ -574,7 +568,7 @@ G_M28747_IG22:        ; bbWeight=1.98, gcrefRegs=18B80004 {x2 x19 x20 x21 x23 x2
                        ;; size=8 bbWeight=1.98 PerfScore 2.97
 G_M28747_IG23:        ; bbWeight=1.98, gcrefRegs=18B80008 {x3 x19 x20 x21 x23 x27 x28}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x2 x4] +[x3]
-            ldr     w0, [fp, #0xA8]    // [V10 loc8]
+            ldr     w0, [fp, #0x98]    // [V10 loc8]
             cbz     w0, G_M28747_IG77
             mov     x0, x3
             ; gcrRegs +[x0]
@@ -616,15 +610,15 @@ G_M28747_IG27:        ; bbWeight=1.98, gcrefRegs=18B80010 {x4 x19 x20 x21 x23 x2
             ; gcrRegs -[x2]
             ldrsb   wzr, [x4]
             ldr     w2, [x4, #0x20]
-            str     x4, [fp, #0x48]    // [V56 tmp41]
+            str     x4, [fp, #0x38]    // [V56 tmp41]
             ; GC ptr vars +{V56}
             mov     x3, x4
             ; gcrRegs +[x3]
...

-8 (-0.72%) : 283548.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T21] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -303,10 +303,8 @@ G_M10809_IG19:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG26
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG26
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG20:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -538,7 +536,7 @@ G_M10809_IG27:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_windows #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1112, prolog size 36, PerfScore 149.72, instruction count 278, allocated bytes for code 1112 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1104, prolog size 36, PerfScore 149.70, instruction count 276, allocated bytes for code 1104 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -549,7 +547,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 278 (0x00116) Actual length = 1112 (0x000458)
+  Function Length   : 276 (0x00114) Actual length = 1104 (0x000450)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 139928.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T14] (  4,  5   )     int  ->  x21        
 ;  V07 loc4         [V07,T15] (  4,  5   )     int  ->  x24        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  x19        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  x19        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [fp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->   x0        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [fp-0x50]  do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T18] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T24] (  3,  3   )     int  ->   x1         "Inlining Arg"
-;  V31 tmp19        [V31,T34] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V31 tmp19        [V31,T32] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V32 tmp20        [V32,T23] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,13 +51,13 @@
 ;  V40 tmp28        [V40,T19] (  5,  4.00)    long  ->  [fp-0x58]  spill-single-def "Inlining Arg"
 ;* V41 tmp29        [V41    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V42 tmp30        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V43 tmp31        [V43,T35] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V43 tmp31        [V43,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V44 tmp32        [V44,T11] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V45 tmp33        [V45,T12] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V46 tmp34        [V46,T06] (  3, 12   )   byref  ->   x1         "dup spill"
 ;* V47 tmp35        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V49 tmp37        [V49,T40] (  4,  1.50)   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V49 tmp37        [V49,T38] (  4,  1.50)   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V51 tmp39        [V51    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V52 tmp40        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
@@ -67,8 +67,8 @@
 ;* V56 tmp44        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
 ;  V57 tmp45        [V57    ] (  3,  3   )     int  ->  [fp-0x50]  do-not-enreg[X] addr-exposed "field V28.Item1 (fldOffset=0x0)" P-DEP
 ;  V58 tmp46        [V58    ] (  3,  3   )     int  ->  [fp-0x4C]  do-not-enreg[X] addr-exposed "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V59 tmp47        [V59,T41] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V60 tmp48        [V60,T42] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V59 tmp47        [V59,T39] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V60 tmp48        [V60,T40] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp50        [V62    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V63 tmp51        [V63    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
 ;* V66 tmp54        [V66    ] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x8)" P-INDEP
 ;  V67 tmp55        [V67,T16] (  3,  4.50)   byref  ->  x23         single-def "V05.[000..008)"
 ;  V68 tmp56        [V68,T17] (  3,  4.50)     int  ->  x22         single-def "V05.[008..012)"
-;  V69 tmp57        [V69,T36] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
-;  V70 tmp58        [V70,T39] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
+;  V69 tmp57        [V69,T34] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
+;  V70 tmp58        [V70,T37] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
 ;  V71 tmp59        [V71,T03] (  2, 16   )     ref  ->   x1         "argument with side effect"
 ;  V72 GsCookie     [V72    ] (  1,  1   )    long  ->  [fp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V73 PSPSym       [V73,T44] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
+;  V73 PSPSym       [V73,T41] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
 ;  V74 cse0         [V74,T08] (  5, 10   )     int  ->  x11         "CSE - aggressive"
 ;  V75 cse1         [V75,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V76 cse2         [V76,T37] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
-;  V77 rat0         [V77,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V76 cse2         [V76,T35] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V77 rat0         [V77,T29] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V78 rat1         [V78,T26] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V79 rat2         [V79,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V79 rat2         [V79,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V80 rat3         [V80,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V81 rat4         [V81,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V81 rat4         [V81,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V82 rat5         [V82,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V83 rat6         [V83,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V84 rat7         [V84,T43] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V85 rat8         [V85,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V86 rat9         [V86,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V87 rat10        [V87,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V88 rat11        [V88,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V83 rat6         [V83,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V84 rat7         [V84,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V85 rat8         [V85,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 64
 

+0 (0.00%) : 175256.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:TrimExcess():this (FullOpts)

@@ -9,10 +9,10 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T02] ( 17, 19.50)     ref  ->  x19         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
-;  V01 loc0         [V01,T27] (  3,  2.50)     int  ->  x20         single-def
-;  V02 loc1         [V02,T28] (  3,  2.50)     int  ->  x21         single-def
+;  V01 loc0         [V01,T26] (  3,  2.50)     int  ->  x20         single-def
+;  V02 loc1         [V02,T27] (  3,  2.50)     int  ->  x21         single-def
 ;  V03 loc2         [V03    ] (  5, 12   )  struct (16) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1+Entry[System.__Canon]]>
-;  V04 loc3         [V04,T30] (  2,  2   )     int  ->   x0         single-def
+;  V04 loc3         [V04,T28] (  2,  2   )     int  ->   x0         single-def
 ;  V05 loc4         [V05,T21] (  3,  5   )     int  ->  x23         single-def
 ;  V06 loc5         [V06    ] (  2,  2.50)  struct (16) [fp+0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1+Entry[System.__Canon]]>
 ;  V07 loc6         [V07,T16] (  4,  6.50)     int  ->  x21        
@@ -33,9 +33,9 @@
 ;  V22 tmp11        [V22,T08] (  3, 12   )     ref  ->   x0         class-hnd "impAppendStmt" <<unknown class>>
 ;  V23 tmp12        [V23,T09] (  3, 12   )     ref  ->   x0         class-hnd "impAppendStmt" <<unknown class>>
 ;* V24 tmp13        [V24    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V25 tmp14        [V25,T31] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V25 tmp14        [V25,T29] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V26 tmp15        [V26    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V27 tmp16        [V27,T32] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V27 tmp16        [V27,T30] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V28 tmp17        [V28    ] (  4, 11   )     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V29 tmp18        [V29    ] (  5, 12   )     int  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
 ;  V30 tmp19        [V30    ] (  2,  2.50)     ref  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -53,12 +53,9 @@
 ;  V42 rat0         [V42,T22] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
 ;  V43 rat1         [V43,T23] (  3,  4   )    long  ->  x22         "runtime lookup"
 ;  V44 rat2         [V44,T20] (  3,  5.60)    long  ->  x22         "fgMakeTemp is creating a new local variable"
-;* V45 rat3         [V45,T29] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V46 rat4         [V46,T33] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V47 rat5         [V47,T26] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V48 rat6         [V48,T03] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V49 rat7         [V49,T04] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V50 rat8         [V50,T01] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V45 rat3         [V45,T03] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V46 rat4         [V46,T04] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V47 rat5         [V47,T01] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 48
 

+0 (0.00%) : 251408.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.Nullable1[int]]:CopyToObjects(System.Object[],int):this (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 this         [V00,T10] (  4,  4   )     ref  ->  x20         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->  x21         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T05] (  5, 50   )     int  ->  x19        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->  x23        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.Nullable`1[int]]>
 ;  V06 loc3         [V06,T01] (  8,104   )     ref  ->  x26         class-hnd <<unknown class>>
@@ -22,23 +22,20 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->  x27         class-hnd "Inlining Arg" <System.__Canon>
 ;* V13 tmp6         [V13    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Nullable`1[int]>
-;  V14 tmp7         [V14,T16] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T06] (  2, 32   )   ubyte  ->  x28         "field V13.hasValue (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T07] (  2, 32   )     int  ->  [fp+0x14]  spill-single-def "field V13.value (fldOffset=0x4)" P-INDEP
 ;* V17 tmp10        [V17    ] (  0,  0   )     ref  ->  zero-ref    "V08.[000..008)"
 ;  V18 tmp11        [V18,T08] (  2, 32   )   ubyte  ->  x28         "V08.[008..009)"
 ;* V19 tmp12        [V19    ] (  0,  0   )     int  ->  zero-ref    "V08.[012..016)"
 ;  V20 cse0         [V20,T13] (  2, 17   )    long  ->  x25         hoist "CSE - aggressive"
-;  V21 cse1         [V21,T18] (  3,  6   )     int  ->  x24         "CSE - aggressive"
-;  V22 rat0         [V22,T20] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V23 rat1         [V23,T21] (  3,  4   )    long  ->  x25         "runtime lookup"
-;  V24 rat2         [V24,T19] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
-;* V25 rat3         [V25,T15] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat4         [V26,T22] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V27 rat5         [V27,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V28 rat6         [V28,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V29 rat7         [V29,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V30 rat8         [V30,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V21 cse1         [V21,T16] (  3,  6   )     int  ->  x24         "CSE - aggressive"
+;  V22 rat0         [V22,T18] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V23 rat1         [V23,T19] (  3,  4   )    long  ->  x25         "runtime lookup"
+;  V24 rat2         [V24,T17] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
+;* V25 rat3         [V25,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V26 rat4         [V26,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V27 rat5         [V27,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 

libraries_tests.run.windows.arm64.Release.mch

-20 (-0.62%) : 122796.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

@@ -183,7 +183,6 @@
 ;  V171 cse17       [V171,T67] (  5,  0.03)     int  ->   x0         multi-def "CSE - conservative"
 ;  V172 cse18       [V172,T68] (  5,  0.03)     int  ->   x0         multi-def "CSE - conservative"
 ;  V173 rat0        [V173,T13] (  5,  7.15)     ref  ->  x21         class-hnd "replacement local" <System.Collections.Generic.List`1[System.String]>
-;  TEMP_01                                   byref  ->  [fp-0x90]
 ;
 ; Lcl frame size = 64
 
@@ -196,11 +195,8 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0x80]
             stp     fp, lr, [sp, #0x90]
             add     fp, sp, #144
-            sub     x9, fp, #144
-            movi    v16.16b, #0
-            stp     q16, q16, [x9]
-            stp     xzr, xzr, [x9, #0x20]
-            str     xzr, [x9, #0x30]
+            str     xzr, [fp, #-0x78]  // [V06 loc4]
+            str     xzr, [fp, #-0x68]  // [V06 loc4+0x10]
             add     x2, sp, #160
             str     x2, [fp, #-0x58]   // [V153 PSPSym]
             movz    x2, #0xD1FFAB1E
@@ -212,7 +208,7 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
-                       ;; size=88 bbWeight=1 PerfScore 16.50
+                       ;; size=76 bbWeight=1 PerfScore 14.50
 G_M8186_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x21, x20
             ; gcrRegs +[x21]
@@ -1262,9 +1258,6 @@ G_M8186_IG92:        ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
             sub     w0, w0, w1
             cmp     w0, w28
             ble     G_M8186_IG93
-            add     x14, x21, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #-0x90]  // [TEMP_01]
             ldr     x26, [x21, #0x20]
             ; gcrRegs +[x26]
             add     w1, w1, w28
@@ -1273,7 +1266,6 @@ G_M8186_IG92:        ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
             add     x11, x23, #64
             ldr     x2, [x11]
             blr     x2
-            ; byrRegs -[x14]
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
@@ -1282,7 +1274,7 @@ G_M8186_IG92:        ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
             blr     x2
             ; gcrRegs -[x1 x26]
             ; gcr arg pop 0
-            ldr     x14, [fp, #-0x90]  // [TEMP_01]
+            add     x14, x21, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -1293,7 +1285,7 @@ G_M8186_IG92:        ; bbWeight=0.09, gcrefRegs=280000 {x19 x21}, byrefRegs=0000
             add     w0, w0, #1
             str     w0, [x21, #0x14]
             b       G_M8186_IG71
-                       ;; size=120 bbWeight=0.09 PerfScore 3.73
+                       ;; size=112 bbWeight=0.09 PerfScore 3.47
 G_M8186_IG93:        ; bbWeight=0.01, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
             str     xzr, [x21, #0x08]
@@ -1450,7 +1442,7 @@ G_M8186_IG106:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
                        ;; size=32 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3208, prolog size 88, PerfScore 661.49, instruction count 802, allocated bytes for code 3208 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3188, prolog size 76, PerfScore 659.23, instruction count 797, allocated bytes for code 3188 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -1461,7 +1453,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 766 (0x002fe) Actual length = 3064 (0x000bf8)
+  Function Length   : 761 (0x002f9) Actual length = 3044 (0x000be4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-0.60%) : 275343.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

@@ -167,7 +167,6 @@
 ;  V155 cse16       [V155,T59] (  3,  0.08)     int  ->  x27         "CSE - conservative"
 ;  V156 cse17       [V156,T67] (  2,  0.00)     int  ->   x1         "CSE - conservative"
 ;  V157 rat0        [V157,T26] (  5,  7.06)     ref  ->  x21         class-hnd "replacement local" <System.Collections.Generic.List`1[System.String]>
-;  TEMP_01                                   byref  ->  [fp-0x90]
 ;
 ; Lcl frame size = 64
 
@@ -180,11 +179,8 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x27, x28, [sp, #0x80]
             stp     fp, lr, [sp, #0x90]
             add     fp, sp, #144
-            sub     x9, fp, #144
-            movi    v16.16b, #0
-            stp     q16, q16, [x9]
-            stp     xzr, xzr, [x9, #0x20]
-            str     xzr, [x9, #0x30]
+            str     xzr, [fp, #-0x78]  // [V06 loc4]
+            str     xzr, [fp, #-0x68]  // [V06 loc4+0x10]
             add     x2, sp, #160
             str     x2, [fp, #-0x58]   // [V138 PSPSym]
             movz    x2, #0xD1FFAB1E
@@ -196,7 +192,7 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
-                       ;; size=88 bbWeight=1 PerfScore 16.50
+                       ;; size=76 bbWeight=1 PerfScore 14.50
 G_M8186_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             mov     x21, x20
             ; gcrRegs +[x21]
@@ -1260,9 +1256,6 @@ G_M8186_IG88:        ; bbWeight=0.03, gcrefRegs=180000 {x19 x20}, byrefRegs=0000
                        ;; size=48 bbWeight=0.03 PerfScore 0.43
 G_M8186_IG89:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[x26 x28]
-            add     x14, x20, #32
-            ; byrRegs +[x14]
-            str     x14, [fp, #-0x90]  // [TEMP_01]
             mov     x0, x26
             ; gcrRegs +[x0]
             mov     x1, xzr
@@ -1271,7 +1264,6 @@ G_M8186_IG89:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             ldr     x2, [x2, #0x28]
             blr     x2
             ; gcrRegs -[x26]
-            ; byrRegs -[x14]
             ; gcr arg pop 0
             ldr     w2, [x28, #0x08]
             mov     x1, x28
@@ -1284,7 +1276,7 @@ G_M8186_IG89:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             blr     x3
             ; gcrRegs -[x1 x28]
             ; gcr arg pop 0
-            ldr     x14, [fp, #-0x90]  // [TEMP_01]
+            add     x14, x20, #32
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
@@ -1299,7 +1291,7 @@ G_M8186_IG89:        ; bbWeight=0.00, gcrefRegs=14180000 {x19 x20 x26 x28}, byre
             ; gcrRegs -[x15]
             cmp     w14, w15
             blt     G_M8186_IG93
-                       ;; size=100 bbWeight=0.00 PerfScore 0.01
+                       ;; size=92 bbWeight=0.00 PerfScore 0.01
 G_M8186_IG90:        ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
             ; gcrRegs -[x19]
             str     xzr, [x20, #0x20]
@@ -1511,7 +1503,7 @@ G_M8186_IG108:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ret     lr
                        ;; size=32 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3360, prolog size 88, PerfScore 649.89, instruction count 840, allocated bytes for code 3360 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
+; Total bytes of code 3340, prolog size 76, PerfScore 647.89, instruction count 835, allocated bytes for code 3340 (MethodHash=3c36e005) for method System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -1522,7 +1514,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 804 (0x00324) Actual length = 3216 (0x000c90)
+  Function Length   : 799 (0x0031f) Actual length = 3196 (0x000c7c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.56%) : 153084.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)

@@ -11,30 +11,30 @@
 ;
 ;  V00 this         [V00,T00] ( 31, 13.35)     ref  ->  x19         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T01] ( 15,  6.42)     ref  ->  x20         ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T15] (  5,  3   )     ref  ->  x21         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T16] (  6,  2.50)   ubyte  ->  x22         single-def
+;  V02 arg2         [V02,T14] (  5,  3   )     ref  ->  x21         class-hnd single-def <System.__Canon>
+;  V03 arg3         [V03,T15] (  6,  2.50)   ubyte  ->  x22         single-def
 ;  V04 loc0         [V04    ] ( 17,  6.92)  struct (16) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-;  V05 loc1         [V05,T25] (  5,  3   )     ref  ->  x23         class-hnd single-def <<unknown class>>
-;  V06 loc2         [V06,T23] (  6,  3.55)     int  ->  x24         single-def
-;  V07 loc3         [V07,T33] (  7,  2.44)     int  ->  x25        
-;  V08 loc4         [V08,T24] (  5,  3.07)   byref  ->  x26        
-;  V09 loc5         [V09,T13] ( 13,  5.42)     int  ->  x27        
-;  V10 loc6         [V10,T36] (  5,  2.00)     int  ->  x22        
-;  V11 loc7         [V11,T51] (  4,  1.50)     ref  ->  x23         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-;  V12 loc8         [V12,T50] (  3,  1.50)     int  ->  x22         single-def
+;  V05 loc1         [V05,T23] (  5,  3   )     ref  ->  x23         class-hnd single-def <<unknown class>>
+;  V06 loc2         [V06,T21] (  6,  3.55)     int  ->  x24         single-def
+;  V07 loc3         [V07,T31] (  7,  2.44)     int  ->  x25        
+;  V08 loc4         [V08,T22] (  5,  3.07)   byref  ->  x26        
+;  V09 loc5         [V09,T12] ( 13,  5.42)     int  ->  x27        
+;  V10 loc6         [V10,T34] (  5,  2.00)     int  ->  x22        
+;  V11 loc7         [V11,T48] (  4,  1.50)     ref  ->  x23         class-hnd single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+;  V12 loc8         [V12,T47] (  3,  1.50)     int  ->  x22         single-def
 ;# V13 OutArgs      [V13    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T39] (  3,  2   )     int  ->  x24        
+;  V14 tmp1         [V14,T37] (  3,  2   )     int  ->  x24        
 ;* V15 tmp2         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp3         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V17 tmp4         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T14] (  5,  5.00)   byref  ->   x0         single-def "dup spill"
-;  V19 tmp6         [V19,T70] (  3,  0   )    long  ->   x1         "spilling helperCall"
+;  V18 tmp5         [V18,T13] (  5,  5.00)   byref  ->   x0         single-def "dup spill"
+;  V19 tmp6         [V19,T67] (  3,  0   )    long  ->   x1         "spilling helperCall"
 ;* V20 tmp7         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp8         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp9         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V23 tmp10        [V23,T71] (  3,  0   )    long  ->  [fp+0x20]  "spilling helperCall"
+;  V23 tmp10        [V23,T68] (  3,  0   )    long  ->  [fp+0x20]  "spilling helperCall"
 ;* V24 tmp11        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T68] (  4,  0   )    long  ->  [fp+0x18]  "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T65] (  4,  0   )    long  ->  [fp+0x18]  "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V27 tmp14        [V27    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V28 tmp15        [V28    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,12 +47,12 @@
 ;* V35 tmp22        [V35    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp23        [V36    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V37 tmp24        [V37    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V38 tmp25        [V38,T69] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V39 tmp26        [V39,T40] (  3,  2   )     int  ->   x0         "guarded devirt return temp"
+;  V38 tmp25        [V38,T66] (  4,  0   )    long  ->  x11         "VirtualCall with runtime lookup"
+;  V39 tmp26        [V39,T38] (  3,  2   )     int  ->   x0         "guarded devirt return temp"
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt arg temp"
 ;* V41 tmp28        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CombineNode`2[System.ValueTuple`2[Microsoft.CodeAnalysis.SyntaxTree,int],Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases]>
-;  V42 tmp29        [V42,T55] (  3,  1.00)     int  ->   x2         "guarded devirt return temp"
-;  V43 tmp30        [V43,T19] (  7,  4.39)     ref  ->  x28         "guarded devirt arg temp"
+;  V42 tmp29        [V42,T52] (  3,  1.00)     int  ->   x2         "guarded devirt return temp"
+;  V43 tmp30        [V43,T17] (  7,  4.39)     ref  ->  x28         "guarded devirt arg temp"
 ;* V44 tmp31        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
 ;* V45 tmp32        [V45    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp33        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,93 +62,90 @@
 ;  V50 tmp37        [V50,T05] (  3,  6   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V51 tmp38        [V51,T06] (  3,  6   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V53 tmp40        [V53,T53] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V53 tmp40        [V53,T50] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V55 tmp42        [V55,T54] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V55 tmp42        [V55,T51] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V56 tmp43        [V56    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <System.Object>
 ;* V57 tmp44        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V58 tmp45        [V58,T56] (  3,  1.00)     int  ->   x2         "guarded devirt return temp"
+;  V58 tmp45        [V58,T53] (  3,  1.00)     int  ->   x2         "guarded devirt return temp"
 ;* V59 tmp46        [V59    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V60 tmp47        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.RuntimeType>
 ;* V61 tmp48        [V61    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V62 tmp49        [V62    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V63 tmp50        [V63    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V64 tmp51        [V64,T60] (  3,  0.41)     int  ->   x1         "Inlining Arg"
-;  V65 tmp52        [V65,T58] (  3,  0.41)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V66 tmp53        [V66,T59] (  3,  0.41)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V64 tmp51        [V64,T57] (  3,  0.41)     int  ->   x1         "Inlining Arg"
+;  V65 tmp52        [V65,T55] (  3,  0.41)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V66 tmp53        [V66,T56] (  3,  0.41)     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V67 tmp54        [V67    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V68 tmp55        [V68,T66] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V68 tmp55        [V68,T63] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V69 tmp56        [V69    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V70 tmp57        [V70,T67] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V70 tmp57        [V70,T64] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V71 tmp58        [V71    ] ( 12,  4.46)     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
 ;  V72 tmp59        [V72    ] ( 17,  6.92)     int  ->  [fp+0x30]  do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-;  V73 tmp60        [V73,T41] (  2,  2   )     ref  ->   x0         single-def "field V46._items (fldOffset=0x0)" P-INDEP
-;  V74 tmp61        [V74,T42] (  2,  2   )     int  ->   x1         single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;  V75 tmp62        [V75,T64] (  2,  0.14)     ref  ->   x0         single-def "field V61._items (fldOffset=0x0)" P-INDEP
-;  V76 tmp63        [V76,T65] (  2,  0.14)     int  ->   x1         single-def "field V61._length (fldOffset=0x8)" P-INDEP
+;  V73 tmp60        [V73,T39] (  2,  2   )     ref  ->   x0         single-def "field V46._items (fldOffset=0x0)" P-INDEP
+;  V74 tmp61        [V74,T40] (  2,  2   )     int  ->   x1         single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;  V75 tmp62        [V75,T61] (  2,  0.14)     ref  ->   x0         single-def "field V61._items (fldOffset=0x0)" P-INDEP
+;  V76 tmp63        [V76,T62] (  2,  0.14)     int  ->   x1         single-def "field V61._length (fldOffset=0x8)" P-INDEP
 ;  V77 tmp64        [V77,T08] (  3,  6   )     int  ->   x2         "index expr"
 ;  V78 tmp65        [V78,T09] (  3,  6   )     int  ->   x1         "index expr"
-;  V79 tmp66        [V79,T22] (  2,  3.92)    long  ->   x1         "argument with side effect"
-;  V80 tmp67        [V80,T46] (  2,  2.00)    long  ->   x1         "argument with side effect"
-;  V81 tmp68        [V81,T49] (  2,  1.92)    long  ->   x1         "argument with side effect"
-;  V82 tmp69        [V82,T63] (  2,  0.27)     int  ->   x1         "argument with side effect"
-;  V83 tmp70        [V83,T61] (  3,  0.41)     int  ->   x2         "index expr"
-;  V84 tmp71        [V84,T62] (  3,  0.41)     int  ->   x1         "index expr"
-;  V85 tmp72        [V85,T38] (  2,  2.00)    long  ->   x1         "argument with side effect"
-;  V86 tmp73        [V86,T92] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V87 tmp74        [V87,T91] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V88 tmp75        [V88,T93] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V89 tmp76        [V89,T94] (  2,  0   )    long  ->   x0         "argument with side effect"
-;  V90 tmp77        [V90,T95] (  2,  0   )    long  ->   x1         "argument with side effect"
-;  V91 tmp78        [V91,T96] (  2,  0   )    long  ->   x0         "argument with side effect"
-;  V92 tmp79        [V92,T47] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V79 tmp66        [V79,T20] (  2,  3.92)    long  ->   x1         "argument with side effect"
+;  V80 tmp67        [V80,T43] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V81 tmp68        [V81,T46] (  2,  1.92)    long  ->   x1         "argument with side effect"
+;  V82 tmp69        [V82,T60] (  2,  0.27)     int  ->   x1         "argument with side effect"
+;  V83 tmp70        [V83,T58] (  3,  0.41)     int  ->   x2         "index expr"
+;  V84 tmp71        [V84,T59] (  3,  0.41)     int  ->   x1         "index expr"
+;  V85 tmp72        [V85,T36] (  2,  2.00)    long  ->   x1         "argument with side effect"
+;  V86 tmp73        [V86,T89] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V87 tmp74        [V87,T88] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V88 tmp75        [V88,T90] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V89 tmp76        [V89,T91] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V90 tmp77        [V90,T92] (  2,  0   )    long  ->   x1         "argument with side effect"
+;  V91 tmp78        [V91,T93] (  2,  0   )    long  ->   x0         "argument with side effect"
+;  V92 tmp79        [V92,T44] (  2,  2.00)    long  ->   x1         "argument with side effect"
 ;  V93 cse0         [V93,T03] ( 31,  6.34)    long  ->  x28         multi-def "CSE - aggressive"
-;  V94 rat0         [V94,T72] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V95 rat1         [V95,T73] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V96 rat2         [V96,T17] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat3         [V97,T20] (  3,  4   )    long  ->   x1         "runtime lookup"
+;  V94 rat0         [V94,T69] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
+;  V95 rat1         [V95,T70] (  3,  0   )    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V96 rat2         [V96,T16] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V97 rat3         [V97,T18] (  3,  4   )    long  ->   x1         "runtime lookup"
 ;  V98 rat4         [V98,T10] (  3,  5.60)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V99 rat5         [V99,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V100 rat6        [V100,T43] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V101 rat7        [V101,T11] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V102 rat8        [V102,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V103 rat9        [V103,T26] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V104 rat10       [V104,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V105 rat11       [V105,T21] (  3,  3.92)    long  ->   x1         "runtime lookup"
-;  V106 rat12       [V106,T12] (  3,  5.49)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V107 rat13       [V107,T44] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V108 rat14       [V108,T29] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V109 rat15       [V109,T35] (  3,  2.11)    long  ->   x0         "Spilling to split statement for tree"
-;  V110 rat16       [V110,T48] (  3,  1.92)    long  ->   x1         "runtime lookup"
-;  V111 rat17       [V111,T31] (  3,  2.69)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V112 rat18       [V112,T57] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat19       [V113,T32] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat20       [V114,T34] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat21       [V115,T45] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V116 rat22       [V116,T30] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V117 rat23       [V117,T74] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
-;  V118 rat24       [V118,T75] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V119 rat25       [V119,T76] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;* V120 rat26       [V120,T77] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V121 rat27       [V121,T97] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V122 rat28       [V122,T78] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V123 rat29       [V123,T79] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V124 rat30       [V124,T80] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V125 rat31       [V125,T81] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
-;  V126 rat32       [V126,T82] (  3,  0   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
-;  V127 rat33       [V127,T83] (  3,  0   )    long  ->   x1         "runtime lookup"
-;  V128 rat34       [V128,T84] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V129 rat35       [V129,T98] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V130 rat36       [V130,T85] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V131 rat37       [V131,T86] (  3,  0   )    long  ->   x1         "runtime lookup"
+;* V99 rat5         [V99,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat6        [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat7        [V101,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat8        [V102,T19] (  3,  3.92)    long  ->   x1         "runtime lookup"
+;  V103 rat9        [V103,T11] (  3,  5.49)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V104 rat10       [V104,T41] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V105 rat11       [V105,T27] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V106 rat12       [V106,T33] (  3,  2.11)    long  ->   x0         "Spilling to split statement for tree"
+;  V107 rat13       [V107,T45] (  3,  1.92)    long  ->   x1         "runtime lookup"
+;  V108 rat14       [V108,T29] (  3,  2.69)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V109 rat15       [V109,T54] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V110 rat16       [V110,T30] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V111 rat17       [V111,T32] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V112 rat18       [V112,T42] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V113 rat19       [V113,T28] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V114 rat20       [V114,T71] (  3,  0   )    long  ->   x0         "Spilling to split statement for tree"
+;  V115 rat21       [V115,T72] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V116 rat22       [V116,T73] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;* V117 rat23       [V117,T74] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V118 rat24       [V118,T94] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V119 rat25       [V119,T75] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V120 rat26       [V120,T76] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V121 rat27       [V121,T77] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V122 rat28       [V122,T78] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V123 rat29       [V123,T79] (  3,  0   )    long  ->   x3         "fgMakeTemp is creating a new local variable"
+;  V124 rat30       [V124,T80] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V125 rat31       [V125,T81] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V126 rat32       [V126,T95] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V127 rat33       [V127,T82] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V128 rat34       [V128,T83] (  3,  0   )    long  ->   x1         "runtime lookup"
+;  V129 rat35       [V129,T84] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V130 rat36       [V130,T85] (  3,  0   )    long  ->   x0         "runtime lookup"
+;  V131 rat37       [V131,T86] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
 ;  V132 rat38       [V132,T87] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V133 rat39       [V133,T88] (  3,  0   )    long  ->   x0         "runtime lookup"
-;  V134 rat40       [V134,T89] (  3,  0   )    long  ->   x0         "fgMakeTemp is creating a new local variable"
-;  V135 rat41       [V135,T90] (  3,  0   )    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V136 rat42       [V136,T52] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V137 rat43       [V137,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V138 rat44       [V138,T37] (  3,  2.00)    long  ->   x1         "runtime lookup"
-;  V139 rat45       [V139,T28] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V133 rat39       [V133,T49] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V134 rat40       [V134,T25] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V135 rat41       [V135,T35] (  3,  2.00)    long  ->   x1         "runtime lookup"
+;  V136 rat42       [V136,T26] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 48
 
@@ -171,7 +168,7 @@ G_M33517_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             mov     w22, w3
                        ;; size=52 bbWeight=1 PerfScore 10.50
 G_M33517_IG02:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
-            cbz     x20, G_M33517_IG45
+            cbz     x20, G_M33517_IG46
             ldr     w0, [x19, #0x40]
             cbz     w0, G_M33517_IG09
                        ;; size=12 bbWeight=1 PerfScore 5.00
@@ -182,13 +179,13 @@ G_M33517_IG03:        ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
 G_M33517_IG04:        ; bbWeight=1, isz, extend
             ldr     x23, [x19, #0x08]
             ; gcrRegs +[x23]
-            cbnz    x23, G_M33517_IG46
+            cbnz    x23, G_M33517_IG47
             ldr     x0, [x20]
             movz    x1, #0xD1FFAB1E
             movk    x1, #0xD1FFAB1E LSL #16
             movk    x1, #0xD1FFAB1E LSL #32
             cmp     x0, x1
-            bne     G_M33517_IG11
+            bne     G_M33517_IG13
                        ;; size=32 bbWeight=1 PerfScore 10.00
 G_M33517_IG05:        ; bbWeight=0.58, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref
             mov     x0, x20
@@ -215,7 +212,7 @@ G_M33517_IG07:        ; bbWeight=1, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg
...

+0 (0.00%) : 156043.dasm - Roslyn.Utilities.AsyncLazy1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

@@ -14,7 +14,7 @@
 ;  V02 arg2         [V02    ] (  7,  5   )  struct ( 8) [fp+0x30]  do-not-enreg[XS] addr-exposed ld-addr-op single-def <System.Threading.CancellationToken>
 ;* V03 loc0         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <<unknown class>>
 ;  V04 loc1         [V04    ] (  3,  2   )  struct ( 8) [fp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Roslyn.Utilities.AsyncLazy`1+WaitThatValidatesInvariants[System.__Canon]>
-;  V05 loc2         [V05,T31] (  2,  2.00)     ref  ->  x20         class-hnd single-def <<unknown class>>
+;  V05 loc2         [V05,T29] (  2,  2.00)     ref  ->  x20         class-hnd single-def <<unknown class>>
 ;  V06 loc3         [V06,T21] (  9,  4   )     ref  ->  [fp+0x10]  class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T25] (  4,  3.00)     ref  ->  x20        
@@ -26,11 +26,11 @@
 ;* V14 tmp7         [V14    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V15 tmp8         [V15,T22] (  6,  4   )    long  ->   x2         "Indirect call through function pointer"
 ;* V16 tmp9         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.HashSet`1+Enumerator[Roslyn.Utilities.AsyncLazy`1+Request[Microsoft.CodeAnalysis.TreeAndVersion]]>
-;  V17 tmp10        [V17,T33] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
-;  V18 tmp11        [V18,T43] (  2,  0   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
-;  V19 tmp12        [V19,T29] (  3,  2   )     ref  ->  x21         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
+;  V17 tmp10        [V17,T31] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
+;  V18 tmp11        [V18,T40] (  2,  0   )     ref  ->   x0         class-hnd single-def "Inlining Arg" <System.Threading.CancellationTokenSource>
+;  V19 tmp12        [V19,T27] (  3,  2   )     ref  ->  x21         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V20 tmp13        [V20,T05] ( 10, 10   )     ref  ->  x20         class-hnd "Inlining Arg" <Roslyn.Utilities.AsyncLazy`1+Request[System.__Canon]>
-;  V21 tmp14        [V21,T34] (  2,  0   )   ubyte  ->   x1         "Inline return value spill temp"
+;  V21 tmp14        [V21,T32] (  2,  0   )   ubyte  ->   x1         "Inline return value spill temp"
 ;  V22 tmp15        [V22,T24] (  3,  4   )   byref  ->  x22         "Inlining Arg"
 ;* V23 tmp16        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
 ;* V24 tmp17        [V24    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Exception]>
@@ -40,41 +40,38 @@
 ;  V28 tmp21        [V28,T17] (  2,  1   )   ubyte  ->  x25         "Inline stloc first use temp"
 ;  V29 tmp22        [V29,T00] (  9, 40   )     ref  ->  x24         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V30 tmp23        [V30,T07] (  3,  9   )     ref  ->  x22         class-hnd exact "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V31 tmp24        [V31,T32] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
+;  V31 tmp24        [V31,T30] (  2,  0   )   ubyte  ->   x0         "Inline return value spill temp"
 ;  V32 tmp25        [V32,T15] (  5,  5   )     int  ->  x14         "Inline stloc first use temp"
-;  V33 tmp26        [V33,T30] (  3,  2   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V33 tmp26        [V33,T28] (  3,  2   )     ref  ->   x0         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V34 tmp27        [V34,T03] (  3, 12   )     ref  ->   x1         class-hnd "Inline stloc first use temp" <System.Object>
 ;  V35 tmp28        [V35,T04] (  3, 12   )   byref  ->   x0         "Inlining Arg"
 ;  V36 tmp29        [V36,T06] (  2, 10   )     ref  ->   x1         class-hnd exact "Inlining Arg" <System.Object>
 ;  V37 tmp30        [V37    ] (  2,  0   )  struct ( 8) [fp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.SpinWait>
-;  V38 tmp31        [V38,T37] (  3,  0   )     ref  ->  x21         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+;  V38 tmp31        [V38,T34] (  3,  0   )     ref  ->  x21         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;* V39 tmp32        [V39    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V40 tmp33        [V40,T20] (  4,  4.18)   byref  ->  x22         "Inlining Arg"
-;  V41 tmp34        [V41,T28] (  5,  2.18)     ref  ->  x23         class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
+;  V41 tmp34        [V41,T26] (  5,  2.18)     ref  ->  x23         class-hnd exact "Inline stloc first use temp" <System.Threading.CancellationTokenSource+CallbackNode>
 ;* V42 tmp35        [V42    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V43 tmp36        [V43    ] (  7,  5   )     ref  ->  [fp+0x30]  do-not-enreg[X] addr-exposed single-def "field V02._source (fldOffset=0x0)" P-DEP
 ;  V44 tmp37        [V44    ] (  3,  2   )     ref  ->  [fp+0x28]  do-not-enreg[X] addr-exposed "field V04.<asyncLazy>P (fldOffset=0x0)" P-DEP
 ;  V45 tmp38        [V45    ] (  2,  0   )     int  ->  [fp+0x20]  do-not-enreg[X] addr-exposed "field V37._count (fldOffset=0x0)" P-DEP
-;  V46 tmp39        [V46,T44] (  2,  0   )     ref  ->   x0         "argument with side effect"
-;  V47 tmp40        [V47,T45] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V48 tmp41        [V48,T46] (  2,  0   )     ref  ->   x1         "argument with side effect"
-;  V49 PSPSym       [V49,T36] (  1,  1   )    long  ->  [fp+0x40]  do-not-enreg[V] "PSPSym"
+;  V46 tmp39        [V46,T41] (  2,  0   )     ref  ->   x0         "argument with side effect"
+;  V47 tmp40        [V47,T42] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V48 tmp41        [V48,T43] (  2,  0   )     ref  ->   x1         "argument with side effect"
+;  V49 PSPSym       [V49,T33] (  1,  1   )    long  ->  [fp+0x40]  do-not-enreg[V] "PSPSym"
 ;  V50 cse0         [V50,T01] (  6, 15   )   byref  ->   x0         multi-def "CSE - aggressive"
 ;  V51 cse1         [V51,T23] (  4,  4   )   byref  ->  x21         "CSE - moderate"
 ;  V52 cse2         [V52,T14] ( 10,  5.20)    long  ->  x21         multi-def "CSE - aggressive"
-;  V53 rat0         [V53,T38] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
-;  V54 rat1         [V54,T39] (  3,  0   )    long  ->   x2         "runtime lookup"
-;  V55 rat2         [V55,T40] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V53 rat0         [V53,T35] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
+;  V54 rat1         [V54,T36] (  3,  0   )    long  ->   x2         "runtime lookup"
+;  V55 rat2         [V55,T37] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;  V56 rat3         [V56,T18] (  3,  4.40)    long  ->   x1         "Spilling to split statement for tree"
 ;  V57 rat4         [V57,T11] (  3,  5.60)    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;  V58 rat5         [V58,T12] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V59 rat6         [V59,T27] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V60 rat7         [V60,T35] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V61 rat8         [V61,T26] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V62 rat9         [V62,T19] (  3,  4.40)    long  ->  x21         "Spilling to split statement for tree"
-;  V63 rat10        [V63,T13] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V64 rat11        [V64,T41] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
-;  V65 rat12        [V65,T42] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
+;  V59 rat6         [V59,T19] (  3,  4.40)    long  ->  x21         "Spilling to split statement for tree"
+;  V60 rat7         [V60,T13] (  3,  5.60)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V61 rat8         [V61,T38] (  3,  0   )    long  ->   x1         "Spilling to split statement for tree"
+;  V62 rat9         [V62,T39] (  3,  0   )    long  ->   x2         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 56
 
@@ -275,7 +272,7 @@ G_M38013_IG19:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             ldr     x1, [x21, #0x38]
             ldr     x1, [x1]
             ldr     x11, [x1, #0x60]
-            cbz     x11, G_M38013_IG25
+            cbz     x11, G_M38013_IG24
                        ;; size=24 bbWeight=1 PerfScore 15.00
 G_M38013_IG20:        ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[x0]
@@ -316,7 +313,7 @@ G_M38013_IG22:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000
             ; byrRegs +[x22]
             ldr     x14, [x22]
             ; gcrRegs +[x14]
-            cbz     x14, G_M38013_IG28
+            cbz     x14, G_M38013_IG26
                        ;; size=12 bbWeight=1 PerfScore 4.50
 G_M38013_IG23:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=600000 {x21 x22}, byref
             ; gcrRegs -[x14]
@@ -329,11 +326,22 @@ G_M38013_IG23:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=600000
             ; byrRegs -[x1]
             cmp     w1, #0
             cset    x1, ne
-            b       G_M38013_IG36
+            b       G_M38013_IG29
                        ;; size=24 bbWeight=0 PerfScore 0.00
-G_M38013_IG24:        ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x23-x24]
+G_M38013_IG24:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[x20]
             ; byrRegs -[x21-x22]
+            mov     x0, x21
+            movz    x1, #0xD1FFAB1E
+            movk    x1, #0xD1FFAB1E LSL #16
+            movk    x1, #0xD1FFAB1E LSL #32
+            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
+            ; gcr arg pop 0
+            mov     x11, x0
+            b       G_M38013_IG20
+                       ;; size=28 bbWeight=0.20 PerfScore 0.90
+G_M38013_IG25:        ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[x20 x23-x24]
             add     x14, x24, #56
             ; byrRegs +[x14]
             mov     x15, x23
@@ -349,55 +357,16 @@ G_M38013_IG24:        ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRe
             ; byrRegs -[x0]
             ldr     x22, [x24, #0x28]
             ; gcrRegs +[x22]
-            cbz     x22, G_M38013_IG26
+            cbz     x22, G_M38013_IG42
             b       G_M38013_IG44
                        ;; size=40 bbWeight=4 PerfScore 56.00
-G_M38013_IG25:        ; bbWeight=0.20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[x20 x22 x24]
-            mov     x0, x21
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            bl      CORINFO_HELP_RUNTIMEHANDLE_CLASS
-            ; gcr arg pop 0
-            mov     x11, x0
-            b       G_M38013_IG20
-                       ;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M38013_IG26:        ; bbWeight=1, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[x20 x24]
-            add     x0, x24, #32
-            ; byrRegs +[x0]
-            movz    x1, #0xD1FFAB1E
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            ldr     x1, [x1]
-            ; gcrRegs +[x1]
-            cbz     x0, G_M38013_IG42
-                       ;; size=24 bbWeight=1 PerfScore 6.00
-G_M38013_IG27:        ; bbWeight=4, gcrefRegs=1180002 {x1 x19 x20 x24}, byrefRegs=0001 {x0}, byref, isz
-            bl      <unknown method>
-            ; gcrRegs -[x1] +[x0]
-            ; byrRegs -[x0]
-            ; gcr arg pop 0
-            mov     x1, x0
-            ; gcrRegs +[x1]
-            cbz     x1, G_M38013_IG45
-            mov     x0, x24
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            ; gcrRegs -[x0-x1 x24]
-            ; gcr arg pop 0
-            b       G_M38013_IG45
-                       ;; size=40 bbWeight=4 PerfScore 38.00
-G_M38013_IG28:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+G_M38013_IG26:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=200000 {x21}, byref, isz
+            ; gcrRegs -[x22 x24]
             ; byrRegs +[x21]
             ldapr   w14, [x21]
-            tbz     w14, #21, G_M38013_IG38
+            tbz     w14, #21, G_M38013_IG31
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M38013_IG29:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M38013_IG27:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[x21]
             mov     x0, x19
             ; gcrRegs +[x0]
@@ -423,7 +392,7 @@ G_M38013_IG29:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             ; gcrRegs -[x0]
             ; gcr arg pop 0
             cmp     w0, #0
-            ble     G_M38013_IG37
+            ble     G_M38013_IG30
             mov     x0, x19
             ; gcrRegs +[x0]
             movz    x1, #0xD1FFAB1E      // code for System.Threading.Tasks.Task:get_Exception():System.AggregateException:this
@@ -451,60 +420,18 @@ G_M38013_IG29:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
             ; gcr arg pop 0
             b       G_M38013_IG45
                        ;; size=160 bbWeight=0 PerfScore 0.00
-G_M38013_IG30:        ; bbWeight=0, gcrefRegs=1180001 {x0 x19 x20 x24}, byrefRegs=0000 {}, byref
-            ; gcrRegs +[x0 x24]
-            movz    x1, #0xD1FFAB1E      // code for <unknown method>
-            movk    x1, #0xD1FFAB1E LSL #16
-            movk    x1, #0xD1FFAB1E LSL #32
-            ldr     x1, [x1]
-            blr     x1
-            ; gcrRegs -[x0]
-            ; gcr arg pop 0
-            b       G_M38013_IG26
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M38013_IG31:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x24]
-            cbnz    w25, G_M38013_IG45
-                       ;; size=4 bbWeight=0 PerfScore 0.00
-G_M38013_IG32:        ; bbWeight=0, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
-            ldr     x21, [x20, #0x08]
-            ; gcrRegs +[x21]
-            ldrsb   wzr, [x21]
-            str     wzr, [fp, #0x20]   // [V37 tmp30]
-            b       G_M38013_IG34
-                       ;; size=16 bbWeight=0 PerfScore 0.00
-G_M38013_IG33:        ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
-            add     x0, fp, #32    // [V37 tmp30]
-            mov     w1, #20
-            movz    x2, #0xD1FFAB1E      // code for <unknown method>
-            movk    x2, #0xD1FFAB1E LSL #16
-            movk    x2, #0xD1FFAB1E LSL #32
-            ldr     x2, [x2]
-            blr     x2
-            ; gcr arg pop 0
-                       ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38013_IG34:        ; bbWeight=0, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
-            add     x0, x21, #52
-            ; byrRegs +[x0]
-            ldapr   w0, [x0]
-            ; byrRegs -[x0]
-            mov     w1, #0xD1FFAB1E
-            tst     w0, w1
-            beq     G_M38013_IG33
-            b       G_M38013_IG45
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M38013_IG35:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[x21] +[x23-x24]
-            cbz     w0, G_M38013_IG32
-            b       G_M38013_IG24
+G_M38013_IG28:        ; bbWeight=0, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[x23-x24]
+            cbz     w0, G_M38013_IG38
+            b       G_M38013_IG25
...

+0 (0.00%) : 17120.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (Tier0-FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T14] (  4,  5   )     int  ->  x21        
 ;  V07 loc4         [V07,T15] (  4,  5   )     int  ->  x24        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  x19        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  x19        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [fp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->   x0        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [fp-0x50]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T18] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T24] (  3,  3   )     int  ->   x1         "Inlining Arg"
-;  V31 tmp19        [V31,T34] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V31 tmp19        [V31,T32] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V32 tmp20        [V32,T23] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,24 +51,24 @@
 ;  V40 tmp28        [V40,T19] (  5,  4.00)    long  ->  [fp-0x58]  spill-single-def "Inlining Arg"
 ;* V41 tmp29        [V41    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V42 tmp30        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V43 tmp31        [V43,T35] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V43 tmp31        [V43,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V44 tmp32        [V44,T11] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V45 tmp33        [V45,T12] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V46 tmp34        [V46,T06] (  3, 12   )   byref  ->   x1         "dup spill"
 ;* V47 tmp35        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V49 tmp37        [V49,T44] (  4,  1.50)   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V49 tmp37        [V49,T42] (  4,  1.50)   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V51 tmp39        [V51    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V52 tmp40        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V53 tmp41        [V53,T40] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V54 tmp42        [V54,T41] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V53 tmp41        [V53,T38] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V54 tmp42        [V54,T39] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V55 tmp43        [V55    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V56 tmp44        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V57 tmp45        [V57,T42] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V58 tmp46        [V58,T43] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V59 tmp47        [V59,T45] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V60 tmp48        [V60,T46] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V57 tmp45        [V57,T40] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V58 tmp46        [V58,T41] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V59 tmp47        [V59,T43] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V60 tmp48        [V60,T44] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp50        [V62    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V63 tmp51        [V63    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
 ;* V66 tmp54        [V66    ] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x8)" P-INDEP
 ;  V67 tmp55        [V67,T16] (  3,  4.50)   byref  ->  x23         single-def "V05.[000..008)"
 ;  V68 tmp56        [V68,T17] (  3,  4.50)     int  ->  x22         single-def "V05.[008..012)"
-;  V69 tmp57        [V69,T36] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
-;  V70 tmp58        [V70,T39] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
+;  V69 tmp57        [V69,T34] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
+;  V70 tmp58        [V70,T37] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
 ;  V71 tmp59        [V71,T03] (  2, 16   )     ref  ->   x1         "argument with side effect"
 ;  V72 GsCookie     [V72    ] (  1,  1   )    long  ->  [fp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V73 PSPSym       [V73,T48] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
+;  V73 PSPSym       [V73,T45] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
 ;  V74 cse0         [V74,T08] (  5, 10   )     int  ->  x11         "CSE - aggressive"
 ;  V75 cse1         [V75,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V76 cse2         [V76,T37] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
-;  V77 rat0         [V77,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V76 cse2         [V76,T35] (  3,  1.50)     ref  ->   x1         "CSE - moderate"
+;  V77 rat0         [V77,T29] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V78 rat1         [V78,T26] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V79 rat2         [V79,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V79 rat2         [V79,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V80 rat3         [V80,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V81 rat4         [V81,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V81 rat4         [V81,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V82 rat5         [V82,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V83 rat6         [V83,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V84 rat7         [V84,T47] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V85 rat8         [V85,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V86 rat9         [V86,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V87 rat10        [V87,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V88 rat11        [V88,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V83 rat6         [V83,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V84 rat7         [V84,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V85 rat8         [V85,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 64
 

+0 (0.00%) : 172364.dasm - System.Collections.Tests.IEnumerableNonGenericTests:IEnumerableNonGenericGetEnumerator_ReturnsUniqueEnumerator(int):this (Tier1-OSR)

@@ -58,7 +58,7 @@
 ;  V45 tmp34        [V45,T19] (  7,  3.88)     int  ->   x1         "Inline stloc first use temp"
 ;  V46 tmp35        [V46,T43] (  3,  0   )     ref  ->   x0         class-hnd "impAppendStmt" <<unknown class>>
 ;  V47 tmp36        [V47,T13] (  3,  5.81)     ref  ->  x14         class-hnd "impAppendStmt" <<unknown class>>
-;  V48 tmp37        [V48,T44] (  3,  0   )     ref  ->  x21         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V48 tmp37        [V48,T44] (  3,  0   )     ref  ->  x27         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V49 tmp38        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;  V50 tmp39        [V50,T32] (  3,  0.12)     ref  ->  x21         class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.AssertEqualityComparer`1[int]>
 ;* V51 tmp40        [V51    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
@@ -595,9 +595,7 @@ G_M64835_IG35:        ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
             b       G_M64835_IG26
                        ;; size=64 bbWeight=0 PerfScore 0.00
 G_M64835_IG36:        ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref
-            ldr     x27, [fp, #0xD1FFAB1E] // [V08 loc6]
-            ; gcrRegs +[x27]
-            mov     x0, x27
+            ldr     x0, [fp, #0xD1FFAB1E]  // [V08 loc6]
             ; gcrRegs +[x0]
             ldr     x0, [x0, #0x08]
             ldr     x1, [x0]
@@ -606,8 +604,11 @@ G_M64835_IG36:        ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
             blr     x1
             ; gcrRegs -[x0]
             ; gcr arg pop 0
-            str     w0, [x27, #0x18]
+            ldr     x14, [fp, #0xD1FFAB1E] // [V08 loc6]
+            ; gcrRegs +[x14]
+            str     w0, [x14, #0x18]
             movz    x14, #0xD1FFAB1E
+            ; gcrRegs -[x14]
             movk    x14, #0xD1FFAB1E LSL #16
             movk    x14, #0xD1FFAB1E LSL #32
             ldr     x15, [x14]
@@ -618,7 +619,7 @@ G_M64835_IG36:        ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, b
             ; gcrRegs -[x14]
             ; byrRegs +[x14]
             bl      CORINFO_HELP_ASSIGN_REF
-            ; gcrRegs -[x15 x27]
+            ; gcrRegs -[x15]
             ; byrRegs -[x14]
             b       G_M64835_IG45
                        ;; size=64 bbWeight=0 PerfScore 0.00
@@ -921,8 +922,8 @@ G_M64835_IG56:        ; bbWeight=0, gcVars=0000000040000200 {V04 V06}, gcrefRegs
             bl      CORINFO_HELP_NEWSFAST
             ; gcrRegs +[x0]
             ; gcr arg pop 0
-            mov     x21, x0
-            ; gcrRegs +[x21]
+            mov     x27, x0
+            ; gcrRegs +[x27]
             movz    x0, #0xD1FFAB1E      // code for <unknown method>
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
@@ -933,7 +934,7 @@ G_M64835_IG56:        ; bbWeight=0, gcVars=0000000040000200 {V04 V06}, gcrefRegs
             ; gcr arg pop 0
             mov     x1, x0
             ; gcrRegs +[x1]
-            mov     x0, x21
+            mov     x0, x27
             movz    x2, #0xD1FFAB1E      // code for <unknown method>
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
@@ -941,10 +942,10 @@ G_M64835_IG56:        ; bbWeight=0, gcVars=0000000040000200 {V04 V06}, gcrefRegs
             blr     x2
             ; gcrRegs -[x0-x1]
             ; gcr arg pop 0
-            mov     x0, x21
+            mov     x0, x27
             ; gcrRegs +[x0]
             bl      CORINFO_HELP_THROW
-            ; gcrRegs -[x0 x21]
+            ; gcrRegs -[x0 x27]
             ; gcr arg pop 0
                        ;; size=76 bbWeight=0 PerfScore 0.00
 G_M64835_IG57:        ; bbWeight=1.36, gcVars=0000000040000201 {V04 V06 V08}, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, gcvars, byref, isz

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-8 (-1.74%) : 97684.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V07 tmp2         [V07,T06] (  6,  8   )   byref  ->  x26        
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V09 tmp4         [V09,T02] (  8, 12   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V10 tmp5         [V10,T12] (  4,  4   )     int  ->  registers  
+;  V10 tmp5         [V10,T12] (  2,  3.96)     int  ->   x0        
 ;  V11 tmp6         [V11,T07] (  4,  8   )     ref  ->   x0         "argument with side effect"
 ;  V12 cse0         [V12,T03] (  4, 11.88)    long  ->  x21         "CSE - aggressive"
 ;  V13 cse1         [V13,T09] (  5,  7   )     int  ->  x23         "CSE - aggressive"
@@ -121,8 +121,8 @@ G_M22994_IG09:        ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=5000000
             ; byrRegs -[x26]
             ; gcr arg pop 0
             cmp     w0, #0
-            cset    x21, eq
-            cbnz    w21, G_M22994_IG22
+            cset    x0, eq
+            cbnz    w0, G_M22994_IG22
                        ;; size=32 bbWeight=1.98 PerfScore 24.75
 G_M22994_IG10:        ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
             add     w22, w22, #1
@@ -209,10 +209,8 @@ G_M22994_IG18:        ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=400
             ; gcrRegs -[x0-x1]
             ; byrRegs -[x26]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x0, eq
-            cbnz    w0, G_M22994_IG22
-                       ;; size=44 bbWeight=0.02 PerfScore 0.34
+            cbz     w0, G_M22994_IG22
+                       ;; size=36 bbWeight=0.02 PerfScore 0.32
 G_M22994_IG19:        ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
             add     w22, w22, #1
             cmp     w23, w22
@@ -247,7 +245,7 @@ G_M22994_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
             brk_windows #0
                        ;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 460, prolog size 40, PerfScore 125.20, instruction count 115, allocated bytes for code 460 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 452, prolog size 40, PerfScore 125.18, instruction count 113, allocated bytes for code 452 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -258,7 +256,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 115 (0x00073) Actual length = 460 (0x0001cc)
+  Function Length   : 113 (0x00071) Actual length = 452 (0x0001c4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.78%) : 156054.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T21] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -274,10 +274,8 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG21
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG21
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -499,7 +497,7 @@ G_M10809_IG22:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_windows #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1032, prolog size 36, PerfScore 144.47, instruction count 258, allocated bytes for code 1032 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1024, prolog size 36, PerfScore 144.45, instruction count 256, allocated bytes for code 1024 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -510,7 +508,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 258 (0x00102) Actual length = 1032 (0x000408)
+  Function Length   : 256 (0x00100) Actual length = 1024 (0x000400)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.77%) : 159325.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->  x26         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T21] (  2,  0.04)   ubyte  ->  x14         "Inline return value spill temp"
+;* V19 tmp13        [V19,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct (16) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -275,10 +275,8 @@ G_M10809_IG15:        ; bbWeight=0.02, gcrefRegs=4B80000 {x19 x20 x21 x23 x26},
             ; gcrRegs -[x3]
             ; byrRegs -[x0 x27]
             ; gcr arg pop 0
-            cmp     w0, #0
-            cset    x14, eq
-            cbz     w14, G_M10809_IG21
-                       ;; size=80 bbWeight=0.02 PerfScore 0.38
+            cbnz    w0, G_M10809_IG21
+                       ;; size=72 bbWeight=0.02 PerfScore 0.36
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
             ldr     w14, [fp, #0x18]   // [V05 loc3]
             mov     w15, #0xD1FFAB1E
@@ -500,7 +498,7 @@ G_M10809_IG22:        ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
             brk_windows #0
                        ;; size=136 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1036, prolog size 40, PerfScore 145.47, instruction count 259, allocated bytes for code 1036 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 1028, prolog size 40, PerfScore 145.45, instruction count 257, allocated bytes for code 1028 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -511,7 +509,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 259 (0x00103) Actual length = 1036 (0x00040c)
+  Function Length   : 257 (0x00101) Actual length = 1028 (0x000404)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 66261.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Canon,System.Canon]:CopyToObjects(System.Object[],int):this (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 this         [V00,T10] (  4,  4   )     ref  ->  x20         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->  x21         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T06] (  5, 50   )     int  ->  x19        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->  x22         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->  x23        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
 ;  V06 loc3         [V06,T02] (  7, 88   )     ref  ->  x26         class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->  x27         class-hnd "Inlining Arg" <System.__Canon>
 ;  V13 tmp6         [V13,T05] (  2, 64   )     ref  ->  x28         class-hnd "Inlining Arg" <System.__Canon>
-;  V14 tmp7         [V14,T16] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->  x26         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T07] (  2, 32   )     ref  ->  x27         "field V08.key (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T08] (  2, 32   )     ref  ->  x28         "field V08.value (fldOffset=0x8)" P-INDEP
 ;  V17 cse0         [V17,T13] (  2, 17   )    long  ->  x25         hoist "CSE - aggressive"
-;  V18 cse1         [V18,T18] (  3,  6   )     int  ->  x24         "CSE - aggressive"
-;  V19 rat0         [V19,T20] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
-;  V20 rat1         [V20,T21] (  3,  4   )    long  ->  x25         "runtime lookup"
-;  V21 rat2         [V21,T19] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
-;* V22 rat3         [V22,T15] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V23 rat4         [V23,T22] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V24 rat5         [V24,T14] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V25 rat6         [V25,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat7         [V26,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V27 rat8         [V27,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V18 cse1         [V18,T16] (  3,  6   )     int  ->  x24         "CSE - aggressive"
+;  V19 rat0         [V19,T18] (  3,  4.40)    long  ->   x0         "Spilling to split statement for tree"
+;  V20 rat1         [V20,T19] (  3,  4   )    long  ->  x25         "runtime lookup"
+;  V21 rat2         [V21,T17] (  3,  5.60)    long  ->  x25         "fgMakeTemp is creating a new local variable"
+;* V22 rat3         [V22,T03] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V23 rat4         [V23,T09] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V24 rat5         [V24,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 16
 

+0 (0.00%) : 4912.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

+0 (0.00%) : 78700.dasm - System.Collections.Generic.HashSet1[System.ValueTuple2[System.Canon,int]]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.ValueTuple2[System.Canon,int]],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -11,21 +11,21 @@
 ;  V00 this         [V00,T03] ( 11, 14   )     ref  ->  [fp-0x78]  this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[System.__Canon,int]]>
 ;  V01 arg1         [V01,T15] (  4,  3   )     ref  ->  x20         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
 ;  V02 arg2         [V02,T10] (  3,  4   )   ubyte  ->  x19         single-def
-;  V03 loc0         [V03,T39] (  3,  1.50)     int  ->   x1        
+;  V03 loc0         [V03,T37] (  3,  1.50)     int  ->   x1        
 ;* V04 loc1         [V04    ] (  0,  0   )     int  ->  zero-ref   
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V06 loc3         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
 ;  V07 loc4         [V07,T16] (  4,  5   )     int  ->  x21        
 ;  V08 loc5         [V08,T17] (  4,  5   )     int  ->  x24        
-;  V09 loc6         [V09,T40] (  3,  1.50)     int  ->  x19        
-;  V10 loc7         [V10,T37] (  6,  1.50)     ref  ->  [fp-0x80]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V09 loc6         [V09,T38] (  3,  1.50)     int  ->  x19        
+;  V10 loc7         [V10,T35] (  6,  1.50)     ref  ->  [fp-0x80]  class-hnd EH-live spill-single-def <<unknown class>>
 ;* V11 loc8         [V11    ] (  0,  0   )  struct (16) zero-ref    <System.ValueTuple`2[System.__Canon,int]>
 ;* V12 loc9         [V12    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[int]>
 ;  V13 loc10        [V13,T06] (  7,  9   )     ref  ->  [fp-0x88]  class-hnd EH-live spill-single-def <<unknown class>>
 ;* V14 loc11        [V14    ] (  0,  0   )  struct (16) zero-ref    multireg-arg multireg-ret <System.ValueTuple`2[System.__Canon,int]>
 ;  V15 loc12        [V15,T04] (  6, 16   )     int  ->  x25        
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V17 tmp1         [V17,T41] (  2,  1   )     int  ->   x1        
+;  V17 tmp1         [V17,T39] (  2,  1   )     int  ->   x1        
 ;* V18 tmp2         [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V19 tmp3         [V19    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V20 tmp4         [V20    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
@@ -47,7 +47,7 @@
 ;* V36 tmp20        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V37 tmp21        [V37    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V38 tmp22        [V38,T20] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
-;  V39 tmp23        [V39,T35] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V39 tmp23        [V39,T33] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V40 tmp24        [V40,T25] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V41 tmp25        [V41    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V42 tmp26        [V42    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -57,7 +57,7 @@
 ;  V46 tmp30        [V46,T21] (  5,  4.00)    long  ->  [fp-0x70]  spill-single-def "Inlining Arg"
 ;* V47 tmp31        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V48 tmp32        [V48    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V49 tmp33        [V49,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V49 tmp33        [V49,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V50 tmp34        [V50,T11] (  3,  6   )     int  ->   x0         "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
 ;  V52 tmp36        [V52,T12] (  3,  6   )     int  ->  x27         "Inline stloc first use temp"
@@ -71,22 +71,22 @@
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
 ;  V61 tmp45        [V61,T07] (  2,  8   )     ref  ->   x0         "field V14.Item1 (fldOffset=0x0)" P-INDEP
 ;  V62 tmp46        [V62,T08] (  2,  8   )     int  ->   x2         "field V14.Item2 (fldOffset=0x8)" P-INDEP
-;  V63 tmp47        [V63,T47] (  4,  1.50)   byref  ->  x21         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V63 tmp47        [V63,T45] (  4,  1.50)   byref  ->  x21         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
 ;* V64 tmp48        [V64    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
 ;* V65 tmp49        [V65    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
 ;* V66 tmp50        [V66    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
 ;* V67 tmp51        [V67    ] (  0,  0   )     ref  ->  zero-ref    "field V26.Item1 (fldOffset=0x0)" P-DEP
 ;* V68 tmp52        [V68    ] (  0,  0   )     int  ->  zero-ref    "field V26.Item2 (fldOffset=0x8)" P-DEP
-;  V69 tmp53        [V69,T43] (  2,  1.50)     int  ->  [fp-0x60]  do-not-enreg[] "field V27.Item1 (fldOffset=0x0)" P-DEP
-;  V70 tmp54        [V70,T44] (  2,  1.50)     int  ->  [fp-0x5C]  do-not-enreg[] "field V27.Item2 (fldOffset=0x4)" P-DEP
+;  V69 tmp53        [V69,T41] (  2,  1.50)     int  ->  [fp-0x60]  do-not-enreg[] "field V27.Item1 (fldOffset=0x0)" P-DEP
+;  V70 tmp54        [V70,T42] (  2,  1.50)     int  ->  [fp-0x5C]  do-not-enreg[] "field V27.Item2 (fldOffset=0x4)" P-DEP
 ;* V71 tmp55        [V71    ] (  0,  0   )   byref  ->  zero-ref    "field V29._reference (fldOffset=0x0)" P-INDEP
 ;* V72 tmp56        [V72    ] (  0,  0   )     int  ->  zero-ref    "field V29._length (fldOffset=0x8)" P-INDEP
 ;* V73 tmp57        [V73    ] (  0,  0   )     ref  ->  zero-ref    "field V34.Item1 (fldOffset=0x0)" P-DEP
 ;* V74 tmp58        [V74    ] (  0,  0   )     int  ->  zero-ref    "field V34.Item2 (fldOffset=0x8)" P-DEP
-;  V75 tmp59        [V75,T45] (  2,  1.50)     int  ->  [fp-0x68]  do-not-enreg[] "field V35.Item1 (fldOffset=0x0)" P-DEP
-;  V76 tmp60        [V76,T46] (  2,  1.50)     int  ->  [fp-0x64]  do-not-enreg[] "field V35.Item2 (fldOffset=0x4)" P-DEP
-;  V77 tmp61        [V77,T48] (  2,  1   )   byref  ->  x23         "field V41._reference (fldOffset=0x0)" P-INDEP
-;  V78 tmp62        [V78,T49] (  2,  1   )     int  ->  x22         "field V41._length (fldOffset=0x8)" P-INDEP
+;  V75 tmp59        [V75,T43] (  2,  1.50)     int  ->  [fp-0x68]  do-not-enreg[] "field V35.Item1 (fldOffset=0x0)" P-DEP
+;  V76 tmp60        [V76,T44] (  2,  1.50)     int  ->  [fp-0x64]  do-not-enreg[] "field V35.Item2 (fldOffset=0x4)" P-DEP
+;  V77 tmp61        [V77,T46] (  2,  1   )   byref  ->  x23         "field V41._reference (fldOffset=0x0)" P-INDEP
+;  V78 tmp62        [V78,T47] (  2,  1   )     int  ->  x22         "field V41._length (fldOffset=0x8)" P-INDEP
 ;* V79 tmp63        [V79    ] (  0,  0   )   byref  ->  zero-ref    "field V42._reference (fldOffset=0x0)" P-INDEP
 ;* V80 tmp64        [V80    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x8)" P-INDEP
 ;* V81 tmp65        [V81    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V43._reference (fldOffset=0x0)" P-INDEP
@@ -99,25 +99,22 @@
 ;* V88 tmp72        [V88    ] (  0,  0   )     int  ->  zero-ref    "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V89 tmp73        [V89,T18] (  3,  4.50)   byref  ->  x23         single-def "V06.[000..008)"
 ;  V90 tmp74        [V90,T19] (  3,  4.50)     int  ->  x22         "V06.[008..012)"
-;  V91 tmp75        [V91,T38] (  3,  1.50)   byref  ->  x23         "V21.[000..008)"
-;  V92 tmp76        [V92,T42] (  3,  1.50)     int  ->  x22         "V21.[008..012)"
+;  V91 tmp75        [V91,T36] (  3,  1.50)   byref  ->  x23         "V21.[000..008)"
+;  V92 tmp76        [V92,T40] (  3,  1.50)     int  ->  x22         "V21.[008..012)"
 ;  V93 GsCookie     [V93    ] (  1,  1   )    long  ->  [fp-0x90]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V94 PSPSym       [V94,T51] (  1,  1   )    long  ->  [fp-0x50]  do-not-enreg[V] "PSPSym"
+;  V94 PSPSym       [V94,T48] (  1,  1   )    long  ->  [fp-0x50]  do-not-enreg[V] "PSPSym"
 ;  V95 cse0         [V95,T13] (  3,  6   )     int  ->  x27         "CSE - aggressive"
 ;  V96 cse1         [V96,T14] (  3,  6   )     int  ->  x26         "CSE - aggressive"
 ;  V97 cse2         [V97,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V98 rat0         [V98,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V98 rat0         [V98,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V99 rat1         [V99,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V100 rat2        [V100,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V100 rat2        [V100,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V101 rat3        [V101,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V102 rat4        [V102,T33] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V102 rat4        [V102,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V103 rat5        [V103,T29] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V104 rat6        [V104,T34] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat7        [V105,T50] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V106 rat8        [V106,T30] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat9        [V107,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V108 rat10       [V108,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V109 rat11       [V109,T26] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V104 rat6        [V104,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V105 rat7        [V105,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V106 rat8        [V106,T26] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 72
 
@@ -180,7 +177,7 @@ G_M10461_IG06:        ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
             str     x0, [fp, #-0x80]   // [V10 loc7]
             ; GC ptr vars +{V10}
                        ;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M10461_IG07:        ; bbWeight=0.50, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG07:        ; bbWeight=0.50, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz
             movz    x21, #0xD1FFAB1E
             movk    x21, #0xD1FFAB1E LSL #16
             movk    x21, #0xD1FFAB1E LSL #32
@@ -560,7 +557,7 @@ G_M10461_IG40:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             add     sp, sp, #160
             ret     lr
                        ;; size=36 bbWeight=0.50 PerfScore 4.50
-G_M10461_IG41:        ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M10461_IG41:        ; bbWeight=0, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
             ; GC ptr vars +{V10}
             sub     sp, sp, #96
             stp     x19, x20, [sp, #0x08]
@@ -572,7 +569,7 @@ G_M10461_IG41:        ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs
             add     x3, fp, #16
             str     x3, [sp]
                        ;; size=36 bbWeight=0 PerfScore 0.00
-G_M10461_IG42:        ; bbWeight=0, gcVars=0000002000000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG42:        ; bbWeight=0, gcVars=0000000800000008 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     x0, [fp, #-0x80]   // [V10 loc7]
             ; gcrRegs +[x0]
             cbz     x0, G_M10461_IG43

realworld.run.windows.arm64.checked.mch

-12 (-0.14%) : 13724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)

@@ -288,7 +288,6 @@
 ;  V277 cse13       [V277,T204] (  3,  0.12)     ref  ->   x1         "CSE - conservative"
 ;  V278 cse14       [V278,T205] (  3,  0.12)     ref  ->   x1         "CSE - conservative"
 ;  V279 cse15       [V279,T19] (  8, 16   )   byref  ->  [fp+0x18]  multi-def "CSE - moderate"
-;  TEMP_01                                   byref  ->  [fp+0x10]
 ;
 ; Lcl frame size = 352
 
@@ -300,12 +299,11 @@ G_M30044_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stp     x25, x26, [sp, #0xD1FFAB1E]
             stp     x27, x28, [sp, #0xD1FFAB1E]
             mov     fp, sp
-            str     xzr, [fp, #0x10]   // [TEMP_01]
             mov     x19, x0
             ; gcrRegs +[x19]
             mov     x20, x1
             ; gcrRegs +[x20]
-                       ;; size=40 bbWeight=1 PerfScore 8.50
+                       ;; size=36 bbWeight=1 PerfScore 7.50
 G_M30044_IG02:        ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
             ldr     x21, [x19, #0x40]
             ; gcrRegs +[x21]
@@ -1784,11 +1782,6 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ldr     x1, [x1, x4]
             ; gcrRegs +[x1]
             ; byrRegs -[x1]
-            ldr     x5, [fp, #0xE8]    // [V22 loc20]
-            ; gcrRegs +[x5]
-            add     x14, x5, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x10]   // [TEMP_01]
             movz    x0, #0xD1FFAB1E
             ; gcrRegs -[x0]
             movk    x0, #0xD1FFAB1E LSL #16
@@ -1796,13 +1789,12 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             movz    x2, #0xD1FFAB1E
             movk    x2, #0xD1FFAB1E LSL #16
             movk    x2, #0xD1FFAB1E LSL #32
-            movz    x6, #0xD1FFAB1E      // code for <unknown method>
-            movk    x6, #0xD1FFAB1E LSL #16
-            movk    x6, #0xD1FFAB1E LSL #32
-            ldr     x6, [x6]
-            blr     x6
-            ; gcrRegs -[x1 x5] +[x0]
-            ; byrRegs -[x14]
+            movz    x5, #0xD1FFAB1E      // code for <unknown method>
+            movk    x5, #0xD1FFAB1E LSL #16
+            movk    x5, #0xD1FFAB1E LSL #32
+            ldr     x5, [x5]
+            blr     x5
+            ; gcrRegs -[x1] +[x0]
             mov     x1, x0
             ; gcrRegs +[x1]
             ldr     x0, [fp, #0x40]    // [V131 tmp97]
@@ -1813,15 +1805,18 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ; GC ptr vars -{V131}
             blr     x2
             ; gcrRegs -[x1]
-            ldr     x14, [fp, #0x10]   // [TEMP_01]
+            ldr     x2, [fp, #0xE8]    // [V22 loc20]
+            ; gcrRegs +[x2]
+            add     x14, x2, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
+            ; GC ptr vars -{V22}
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x2, [fp, #0xE8]    // [V22 loc20]
-            ; gcrRegs +[x2]
+            str     x2, [fp, #0xE8]    // [V22 loc20]
+            ; GC ptr vars +{V22}
             ldr     x1, [x2, #0x08]
             ; gcrRegs +[x1]
             mov     x15, x1
@@ -1847,7 +1842,7 @@ G_M30044_IG50:        ; bbWeight=0.04, gcrefRegs=1FF80000 {x19 x20 x21 x22 x23 x
             ldr     w14, [x6, #0x08]
             cmp     w14, w15
             bls     G_M30044_IG52
-                       ;; size=264 bbWeight=0.04 PerfScore 3.16
+                       ;; size=256 bbWeight=0.04 PerfScore 3.00
 G_M30044_IG51:        ; bbWeight=0.02, gcrefRegs=1FF80042 {x1 x6 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28}, byrefRegs=0000 {}, byref
             add     w14, w15, #1
             str     w14, [x27, #0x10]
@@ -3667,7 +3662,7 @@ G_M30044_IG107:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             brk_windows #0
                        ;; size=48 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 8700, prolog size 32, PerfScore 2216.72, instruction count 2175, allocated bytes for code 8700 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
+; Total bytes of code 8688, prolog size 28, PerfScore 2215.56, instruction count 2172, allocated bytes for code 8688 (MethodHash=2a788aa3) for method Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -3678,7 +3673,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 2175 (0x0087f) Actual length = 8700 (0x0021fc)
+  Function Length   : 2172 (0x0087c) Actual length = 8688 (0x0021f0)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-0.10%) : 31371.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

@@ -1681,38 +1681,36 @@ G_M4474_IG49:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
             ; byrRegs -[x4]
             str     x0, [fp, #0x90]    // [V18 loc13]
             ; GC ptr vars +{V18}
-            ldr     x2, [fp, #0x98]    // [V17 loc12]
+            ldr     x2, [fp, #0xA8]    // [V10 loc5]
             ; gcrRegs +[x2]
-            add     x14, x2, #8
-            ; byrRegs +[x14]
-            str     x14, [fp, #0x18]   // [TEMP_01]
-            ldr     x3, [fp, #0xA8]    // [V10 loc5]
-            ; gcrRegs +[x3]
-            ldr     w0, [x3, #0x08]
+            ldr     w0, [x2, #0x08]
             ; gcrRegs -[x0]
-            ldr     w4, [fp, #0xEC]    // [V16 loc11]
-            cmp     w4, w0
+            ldr     w3, [fp, #0xEC]    // [V16 loc11]
+            cmp     w3, w0
             bhs     G_M4474_IG100
-            ldr     x5, [fp, #0x20]    // [V229 cse10]
-            ; byrRegs +[x5]
-            ldr     x6, [fp, #0xB0]    // [V226 cse7]
-            ldr     x0, [x5, x6]
+            ldr     x4, [fp, #0x20]    // [V229 cse10]
+            ; byrRegs +[x4]
+            ldr     x5, [fp, #0xB0]    // [V226 cse7]
+            ldr     x0, [x4, x5]
             ; gcrRegs +[x0]
-            ldr     x7, [x0]
-            ldr     x7, [x7, #0x48]
-            ldr     x7, [x7, #0x30]
-            blr     x7
-            ; gcrRegs -[x2-x3]
-            ; byrRegs -[x5 x14]
-            ldr     x14, [fp, #0x18]   // [TEMP_01]
+            ldr     x6, [x0]
+            ldr     x6, [x6, #0x48]
+            ldr     x6, [x6, #0x30]
+            blr     x6
+            ; gcrRegs -[x2]
+            ; byrRegs -[x4]
+            ldr     x1, [fp, #0x98]    // [V17 loc12]
+            ; gcrRegs +[x1]
+            add     x14, x1, #8
             ; byrRegs +[x14]
             mov     x15, x0
             ; gcrRegs +[x15]
+            ; GC ptr vars -{V17}
             bl      CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[x0 x15]
             ; byrRegs -[x14]
-            ldr     x1, [fp, #0x98]    // [V17 loc12]
-            ; gcrRegs +[x1]
+            str     x1, [fp, #0x98]    // [V17 loc12]
+            ; GC ptr vars +{V17}
             ldr     x0, [x1, #0x08]
             ; gcrRegs +[x0]
             movz    x2, #0xD1FFAB1E      // code for System.String:IsNullOrWhiteSpace(System.String):ubyte
@@ -1722,7 +1720,7 @@ G_M4474_IG49:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
             blr     x2
             ; gcrRegs -[x0-x1]
             cbz     w0, G_M4474_IG56
-                       ;; size=200 bbWeight=0.04 PerfScore 3.06
+                       ;; size=192 bbWeight=0.04 PerfScore 2.90
 G_M4474_IG50:        ; bbWeight=0.02, gcrefRegs=EA80000 {x19 x21 x23 x25 x26 x27}, byrefRegs=0000 {}, byref, isz
             movz    x0, #0xD1FFAB1E      // code for <unknown method>
             movk    x0, #0xD1FFAB1E LSL #16
@@ -3239,7 +3237,7 @@ G_M4474_IG100:        ; bbWeight=0, gcVars=0000000000000000000000000000000000000
             brk_windows #0
                        ;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 7808, prolog size 32, PerfScore 2095.10, instruction count 1952, allocated bytes for code 7808 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 7800, prolog size 32, PerfScore 2094.94, instruction count 1950, allocated bytes for code 7800 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -3250,7 +3248,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 1952 (0x007a0) Actual length = 7808 (0x001e80)
+  Function Length   : 1950 (0x0079e) Actual length = 7800 (0x001e78)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 17265.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  x27        
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  x26        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  x27        
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  x22         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  x22         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  x11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  x24        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  x24        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   x0         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->   x1         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  x24        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->   x1         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  x24        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,63 +68,57 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   x0         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T86] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [fp+0x10]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [fp+0x18]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T72] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T75] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T73] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T76] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T74] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T77] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T68] (  2,  1   )     ref  ->   x0         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T71] (  2,  1   )     int  ->   x1         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T69] (  2,  1   )     ref  ->   x0         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T72] (  2,  1   )     int  ->   x1         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T70] (  2,  1   )     ref  ->   x0         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T73] (  2,  1   )     int  ->   x1         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->   x2         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->   x1         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->   x2         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->   x1         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->   x1         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->   x1         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->   x1         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->   x1         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->   x2         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->   x1         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->   x1         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  x26         "CSE - moderate"
-;  V83 cse2         [V83,T71] (  3,  1.50)     int  ->   x0         "CSE - moderate"
-;  V84 rat0         [V84,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V85 rat1         [V85,T62] (  3,  2   )    long  ->   x1         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->   x1         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  x26         "CSE - moderate"
+;  V83 cse2         [V83,T67] (  3,  1.50)     int  ->   x0         "CSE - moderate"
+;  V84 rat0         [V84,T52] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V85 rat1         [V85,T58] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V86 rat2         [V86,T47] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V87 rat3         [V87,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V88 rat4         [V88,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V89 rat5         [V89,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V90 rat6         [V90,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V91 rat7         [V91,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V92 rat8         [V92,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V93 rat9         [V93,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V94 rat10        [V94,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V95 rat11        [V95,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V96 rat12        [V96,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V97 rat13        [V97,T49] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V98 rat14        [V98,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V99 rat15        [V99,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V100 rat16       [V100,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V101 rat17       [V101,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
-;  V102 rat18       [V102,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
-;  V103 rat19       [V103,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;  V104 rat20       [V104,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
-;  V105 rat21       [V105,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V106 rat22       [V106,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V107 rat23       [V107,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V108 rat24       [V108,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V109 rat25       [V109,T58] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V87 rat3         [V87,T06] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V88 rat4         [V88,T10] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V89 rat5         [V89,T02] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V90 rat6         [V90,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V91 rat7         [V91,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V92 rat8         [V92,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V93 rat9         [V93,T53] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V94 rat10        [V94,T48] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V95 rat11        [V95,T08] (  3, 17.60)    long  ->   x0         "Spilling to split statement for tree"
+;  V96 rat12        [V96,T11] (  3, 16   )    long  ->   x1         "runtime lookup"
+;  V97 rat13        [V97,T04] (  3, 22.40)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;  V98 rat14        [V98,T22] (  3,  8.80)    long  ->   x0         "Spilling to split statement for tree"
+;  V99 rat15        [V99,T19] (  3, 11.20)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;* V100 rat16       [V100,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V101 rat17       [V101,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V102 rat18       [V102,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V103 rat19       [V103,T54] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V104 rat20       [V104,T49] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
+;* V105 rat21       [V105,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V106 rat22       [V106,T74] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V107 rat23       [V107,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V108 rat24       [V108,T56] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
+;  V109 rat25       [V109,T59] (  3,  2   )    long  ->   x1         "runtime lookup"
 ;  V110 rat26       [V110,T51] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
-;* V111 rat27       [V111,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V112 rat28       [V112,T80] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat29       [V113,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat30       [V114,T60] (  3,  2.20)    long  ->   x0         "Spilling to split statement for tree"
-;  V115 rat31       [V115,T63] (  3,  2   )    long  ->   x1         "runtime lookup"
-;  V116 rat32       [V116,T53] (  3,  2.80)    long  ->   x1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 24
 

+0 (0.00%) : 17425.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T15] (  4,  5   )     int  ->  x21        
 ;  V07 loc4         [V07,T16] (  4,  5   )     int  ->  x24        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  x19        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  x19        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [fp-0x68]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->   x0        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [fp-0x50]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T19] (  8,  4   )     int  ->  x22         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T24] (  3,  3   )     int  ->   x1         "Inlining Arg"
-;  V31 tmp19        [V31,T35] (  2,  2   )    long  ->  x21         "Inlining Arg"
+;  V31 tmp19        [V31,T33] (  2,  2   )    long  ->  x21         "Inlining Arg"
 ;  V32 tmp20        [V32,T23] (  3,  3   )     ref  ->   x0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
 ;  V38 tmp26        [V38,T13] (  5,  5   )    long  ->  [fp-0x58]  spill-single-def "Inlining Arg"
 ;* V39 tmp27        [V39    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V40 tmp28        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V41 tmp29        [V41,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V41 tmp29        [V41,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V42 tmp30        [V42,T11] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V43 tmp31        [V43,T12] (  3,  6   )     int  ->   x1         "Inline stloc first use temp"
 ;  V44 tmp32        [V44,T06] (  3, 12   )   byref  ->   x1         "dup spill"
 ;* V45 tmp33        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp34        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V47 tmp35        [V47,T34] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp35        [V47,T32] (  4,  2   )   byref  ->  x21         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V49 tmp37        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V51 tmp39        [V51,T40] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V52 tmp40        [V52,T41] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V51 tmp39        [V51,T38] (  2,  1.50)     int  ->  [fp-0x48]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V52 tmp40        [V52,T39] (  2,  1.50)     int  ->  [fp-0x44]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V53 tmp41        [V53    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V54 tmp42        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V55 tmp43        [V55,T42] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V56 tmp44        [V56,T43] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V57 tmp45        [V57,T44] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp46        [V58,T45] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V55 tmp43        [V55,T40] (  2,  1.50)     int  ->  [fp-0x50]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V56 tmp44        [V56,T41] (  2,  1.50)     int  ->  [fp-0x4C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V57 tmp45        [V57,T42] (  2,  1   )   byref  ->  x23         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp46        [V58,T43] (  2,  1   )     int  ->  x22         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V59 tmp47        [V59    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V60 tmp48        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
 ;* V64 tmp52        [V64    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x8)" P-INDEP
 ;  V65 tmp53        [V65,T17] (  3,  4.50)   byref  ->  x23         single-def "V05.[000..008)"
 ;  V66 tmp54        [V66,T18] (  3,  4.50)     int  ->  x22         single-def "V05.[008..012)"
-;  V67 tmp55        [V67,T37] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
-;  V68 tmp56        [V68,T39] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
+;  V67 tmp55        [V67,T35] (  3,  1.50)   byref  ->  x23         "V16.[000..008)"
+;  V68 tmp56        [V68,T37] (  3,  1.50)     int  ->  x22         "V16.[008..012)"
 ;  V69 tmp57        [V69,T03] (  2, 16   )     ref  ->   x1         "argument with side effect"
 ;  V70 GsCookie     [V70    ] (  1,  1   )    long  ->  [fp-0x70]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V71 PSPSym       [V71,T47] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
+;  V71 PSPSym       [V71,T44] (  1,  1   )    long  ->  [fp-0x38]  do-not-enreg[V] "PSPSym"
 ;  V72 cse0         [V72,T08] (  5, 10   )     int  ->  x11         "CSE - aggressive"
 ;  V73 cse1         [V73,T09] ( 11,  7   )    long  ->  registers   multi-def "CSE - aggressive"
-;  V74 rat0         [V74,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V74 rat0         [V74,T29] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V75 rat1         [V75,T26] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V76 rat2         [V76,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V76 rat2         [V76,T30] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V77 rat3         [V77,T27] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V78 rat4         [V78,T32] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
+;  V78 rat4         [V78,T31] (  3,  2.20)    long  ->   x1         "Spilling to split statement for tree"
 ;  V79 rat5         [V79,T28] (  3,  2.80)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;* V80 rat6         [V80,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V81 rat7         [V81,T46] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V82 rat8         [V82,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V83 rat9         [V83,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
-;  V84 rat10        [V84,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
-;  V85 rat11        [V85,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
+;  V80 rat6         [V80,T02] (  3, 17.60)    long  ->   x1         "Spilling to split statement for tree"
+;  V81 rat7         [V81,T01] (  3, 22.40)    long  ->  x11         "fgMakeTemp is creating a new local variable"
+;  V82 rat8         [V82,T25] (  3,  3   )     int  ->   x1         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 64
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.arm64.checked.mch 1 0 0 1 -0 +0
benchmarks.run_pgo.windows.arm64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.windows.arm64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.arm64.checked.mch 2 1 0 1 -24 +0
libraries.crossgen2.windows.arm64.checked.mch 11 11 0 0 -108 +0
libraries.pmi.windows.arm64.checked.mch 24 12 0 12 -128 +0
libraries_tests.run.windows.arm64.Release.mch 29 23 0 6 -256 +0
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 11 7 0 4 -80 +0
realworld.run.windows.arm64.checked.mch 4 2 0 2 -20 +0
smoke_tests.nativeaot.windows.arm64.checked.mch 0 0 0 0 -0 +0
82 56 0 26 -616 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.arm64.checked.mch 24,449 4 24,445 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.arm64.checked.mch 98,319 48,543 49,776 114 (0.12%) 114 (0.12%)
benchmarks.run_tiered.windows.arm64.checked.mch 48,505 36,685 11,820 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.arm64.checked.mch 595,369 362,737 232,632 316 (0.05%) 316 (0.05%)
libraries.crossgen2.windows.arm64.checked.mch 243,430 15 243,415 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.arm64.checked.mch 304,053 6 304,047 0 (0.00%) 0 (0.00%)
libraries_tests.run.windows.arm64.Release.mch 630,491 461,984 168,507 2,171 (0.34%) 2,171 (0.34%)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 316,301 21,559 294,742 0 (0.00%) 0 (0.00%)
realworld.run.windows.arm64.checked.mch 33,195 3 33,192 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.arm64.checked.mch 24,181 7 24,174 0 (0.00%) 0 (0.00%)
2,318,293 931,543 1,386,750 2,601 (0.11%) 2,601 (0.11%)

jit-analyze output

benchmarks.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 10964124 (overridden on cmd)
Total bytes of diff: 10964124 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.

0 total methods with Code Size differences (0 improved, 0 regressed).


coreclr_tests.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 495343752 (overridden on cmd)
Total bytes of diff: 495343728 (overridden on cmd)
Total bytes of delta: -24 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 579631.dasm (-2.33 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -24 (-2.33 % of base) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

Top method improvements (percentages):
         -24 (-2.33 % of base) : 579631.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

1 total methods with Code Size differences (1 improved, 0 regressed).


libraries.crossgen2.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 58963136 (overridden on cmd)
Total bytes of diff: 58963028 (overridden on cmd)
Total bytes of delta: -108 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -24 : 169145.dasm (-0.36 % of base)
         -20 : 113673.dasm (-0.73 % of base)
         -12 : 199959.dasm (-0.53 % of base)
         -12 : 202047.dasm (-0.56 % of base)
         -12 : 94048.dasm (-0.68 % of base)
          -8 : 169639.dasm (-1.82 % of base)
          -4 : 209717.dasm (-0.19 % of base)
          -4 : 240065.dasm (-0.19 % of base)
          -4 : 113946.dasm (-0.10 % of base)
          -4 : 240066.dasm (-0.15 % of base)
          -4 : 209718.dasm (-0.15 % of base)

11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -24 (-0.36 % of base) : 169145.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -20 (-0.73 % of base) : 113673.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -12 (-0.68 % of base) : 94048.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -12 (-0.56 % of base) : 202047.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -12 (-0.53 % of base) : 199959.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
          -8 (-1.82 % of base) : 169639.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -4 (-0.10 % of base) : 113946.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -4 (-0.19 % of base) : 209717.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.19 % of base) : 240065.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.15 % of base) : 240066.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.15 % of base) : 209718.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

Top method improvements (percentages):
          -8 (-1.82 % of base) : 169639.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -20 (-0.73 % of base) : 113673.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -12 (-0.68 % of base) : 94048.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -12 (-0.56 % of base) : 202047.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -12 (-0.53 % of base) : 199959.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
         -24 (-0.36 % of base) : 169145.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.19 % of base) : 209717.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.19 % of base) : 240065.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.15 % of base) : 209718.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.15 % of base) : 240066.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.10 % of base) : 113946.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

11 total methods with Code Size differences (11 improved, 0 regressed).


libraries.pmi.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79568032 (overridden on cmd)
Total bytes of diff: 79567904 (overridden on cmd)
Total bytes of delta: -128 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -32 : 118236.dasm (-0.77 % of base)
         -20 : 184600.dasm (-0.25 % of base)
         -20 : 95953.dasm (-1.06 % of base)
         -12 : 218502.dasm (-0.67 % of base)
          -8 : 102512.dasm (-0.15 % of base)
          -8 : 283548.dasm (-0.72 % of base)
          -8 : 102509.dasm (-0.18 % of base)
          -4 : 248338.dasm (-0.16 % of base)
          -4 : 118516.dasm (-0.10 % of base)
          -4 : 220235.dasm (-0.21 % of base)
          -4 : 220236.dasm (-0.16 % of base)
          -4 : 248337.dasm (-0.20 % of base)

12 total files with Code Size differences (12 improved, 0 regressed), 12 unchanged.

Top method improvements (bytes):
         -32 (-0.77 % of base) : 118236.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -20 (-1.06 % of base) : 95953.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -20 (-0.25 % of base) : 184600.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -12 (-0.67 % of base) : 218502.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-0.15 % of base) : 102512.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -8 (-0.18 % of base) : 102509.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -8 (-0.72 % of base) : 283548.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -4 (-0.10 % of base) : 118516.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -4 (-0.21 % of base) : 220235.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.20 % of base) : 248337.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.16 % of base) : 248338.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.16 % of base) : 220236.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

Top method improvements (percentages):
         -20 (-1.06 % of base) : 95953.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -32 (-0.77 % of base) : 118236.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
          -8 (-0.72 % of base) : 283548.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -12 (-0.67 % of base) : 218502.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -20 (-0.25 % of base) : 184600.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.21 % of base) : 220235.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -4 (-0.20 % of base) : 248337.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.18 % of base) : 102509.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -4 (-0.16 % of base) : 220236.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.16 % of base) : 248338.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.15 % of base) : 102512.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -4 (-0.10 % of base) : 118516.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

12 total methods with Code Size differences (12 improved, 0 regressed).


libraries_tests.run.windows.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 310410132 (overridden on cmd)
Total bytes of diff: 310409876 (overridden on cmd)
Total bytes of delta: -256 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -28 : 231484.dasm (-0.49 % of base)
         -20 : 99183.dasm (-0.56 % of base)
         -20 : 122796.dasm (-0.62 % of base)
         -20 : 275343.dasm (-0.60 % of base)
         -12 : 153084.dasm (-0.56 % of base)
         -12 : 264954.dasm (-0.34 % of base)
         -12 : 383593.dasm (-0.09 % of base)
         -12 : 501081.dasm (-0.35 % of base)
         -12 : 207046.dasm (-0.35 % of base)
         -12 : 433988.dasm (-0.34 % of base)
         -12 : 497982.dasm (-0.34 % of base)
         -12 : 306213.dasm (-0.35 % of base)
         -12 : 383711.dasm (-0.08 % of base)
          -8 : 167319.dasm (-0.06 % of base)
          -8 : 288019.dasm (-0.08 % of base)
          -8 : 63266.dasm (-0.12 % of base)
          -8 : 122068.dasm (-0.06 % of base)
          -8 : 90900.dasm (-0.12 % of base)
          -4 : 280435.dasm (-0.41 % of base)
          -4 : 53901.dasm (-0.19 % of base)

23 total files with Code Size differences (23 improved, 0 regressed), 6 unchanged.

Top method improvements (bytes):
         -28 (-0.49 % of base) : 231484.dasm - System.Diagnostics.PerformanceCounterLib:CreateIniFile(System.String,System.String,System.Diagnostics.CounterCreationDataCollection,System.String[]) (Tier1)
         -20 (-0.56 % of base) : 99183.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -20 (-0.62 % of base) : 122796.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -20 (-0.60 % of base) : 275343.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.56 % of base) : 153084.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -12 (-0.34 % of base) : 264954.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 501081.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 207046.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.34 % of base) : 433988.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.34 % of base) : 497982.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 306213.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.08 % of base) : 383711.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1)
         -12 (-0.09 % of base) : 383593.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1-OSR)
          -8 (-0.12 % of base) : 63266.dasm - NuGet.Configuration.PackageSourceProvider:LoadPackageSourceLookup(ubyte,NuGet.Configuration.ISettings):System.Collections.Generic.Dictionary`2[System.String,NuGet.Configuration.PackageSourceProvider+IndexedPackageSource] (Tier1)
          -8 (-0.12 % of base) : 90900.dasm - NuGet.Configuration.PackageSourceProvider:LoadPackageSourceLookup(ubyte,NuGet.Configuration.ISettings):System.Collections.Generic.Dictionary`2[System.String,NuGet.Configuration.PackageSourceProvider+IndexedPackageSource] (Tier1)
          -8 (-0.06 % of base) : 122068.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
          -8 (-0.06 % of base) : 167319.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
          -8 (-0.08 % of base) : 288019.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
          -4 (-0.19 % of base) : 53901.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
          -4 (-0.25 % of base) : 56897.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

Top method improvements (percentages):
         -20 (-0.62 % of base) : 122796.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -20 (-0.60 % of base) : 275343.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.56 % of base) : 153084.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -20 (-0.56 % of base) : 99183.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -28 (-0.49 % of base) : 231484.dasm - System.Diagnostics.PerformanceCounterLib:CreateIniFile(System.String,System.String,System.Diagnostics.CounterCreationDataCollection,System.String[]) (Tier1)
          -4 (-0.41 % of base) : 280435.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -12 (-0.35 % of base) : 306213.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 501081.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.35 % of base) : 207046.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.34 % of base) : 264954.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.34 % of base) : 497982.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -12 (-0.34 % of base) : 433988.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
          -4 (-0.25 % of base) : 56897.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
          -4 (-0.25 % of base) : 88804.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
          -4 (-0.25 % of base) : 604847.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
          -4 (-0.19 % of base) : 53901.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
          -8 (-0.12 % of base) : 63266.dasm - NuGet.Configuration.PackageSourceProvider:LoadPackageSourceLookup(ubyte,NuGet.Configuration.ISettings):System.Collections.Generic.Dictionary`2[System.String,NuGet.Configuration.PackageSourceProvider+IndexedPackageSource] (Tier1)
          -8 (-0.12 % of base) : 90900.dasm - NuGet.Configuration.PackageSourceProvider:LoadPackageSourceLookup(ubyte,NuGet.Configuration.ISettings):System.Collections.Generic.Dictionary`2[System.String,NuGet.Configuration.PackageSourceProvider+IndexedPackageSource] (Tier1)
         -12 (-0.09 % of base) : 383593.dasm - System.Xml.XPath.XPathDocument:LoadFromReader(System.Xml.XmlReader,int):this (Tier1-OSR)
          -8 (-0.08 % of base) : 288019.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)

23 total methods with Code Size differences (23 improved, 0 regressed).


librariestestsnotieredcompilation.run.windows.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 169004112 (overridden on cmd)
Total bytes of diff: 169004032 (overridden on cmd)
Total bytes of delta: -80 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -20 : 97636.dasm (-0.25 % of base)
         -20 : 311600.dasm (-0.49 % of base)
         -12 : 170499.dasm (-0.67 % of base)
          -8 : 159325.dasm (-0.77 % of base)
          -8 : 156054.dasm (-0.78 % of base)
          -8 : 97684.dasm (-1.74 % of base)
          -4 : 186374.dasm (-0.21 % of base)

7 total files with Code Size differences (7 improved, 0 regressed), 4 unchanged.

Top method improvements (bytes):
         -20 (-0.25 % of base) : 97636.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -20 (-0.49 % of base) : 311600.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -12 (-0.67 % of base) : 170499.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-1.74 % of base) : 97684.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -8 (-0.77 % of base) : 159325.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -8 (-0.78 % of base) : 156054.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -4 (-0.21 % of base) : 186374.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

Top method improvements (percentages):
          -8 (-1.74 % of base) : 97684.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -8 (-0.78 % of base) : 156054.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -8 (-0.77 % of base) : 159325.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -12 (-0.67 % of base) : 170499.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -20 (-0.49 % of base) : 311600.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -20 (-0.25 % of base) : 97636.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.21 % of base) : 186374.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

7 total methods with Code Size differences (7 improved, 0 regressed).


realworld.run.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15891296 (overridden on cmd)
Total bytes of diff: 15891276 (overridden on cmd)
Total bytes of delta: -20 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -12 : 13724.dasm (-0.14 % of base)
          -8 : 31371.dasm (-0.10 % of base)

2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.

Top method improvements (bytes):
         -12 (-0.14 % of base) : 13724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
          -8 (-0.10 % of base) : 31371.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

Top method improvements (percentages):
         -12 (-0.14 % of base) : 13724.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
          -8 (-0.10 % of base) : 31371.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

2 total methods with Code Size differences (2 improved, 0 regressed).



windows x64

Diffs are based on 2,492,949 contexts (983,689 MinOpts, 1,509,260 FullOpts).

MISSED contexts: 3,862 (0.15%)

Overall (-2,177 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 41,788,751 -94
benchmarks.run.windows.x64.checked.mch 8,749,669 +0
benchmarks.run_pgo.windows.x64.checked.mch 34,741,684 -16
coreclr_tests.run.windows.x64.checked.mch 392,888,034 -21
libraries.crossgen2.windows.x64.checked.mch 39,442,225 -191
libraries.pmi.windows.x64.checked.mch 61,196,803 -143
libraries_tests.run.windows.x64.Release.mch 279,865,544 -1,527
librariestestsnotieredcompilation.run.windows.x64.Release.mch 133,434,685 -134
realworld.run.windows.x64.checked.mch 14,170,666 -51

FullOpts (-2,177 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 27,130,026 -94
benchmarks.run.windows.x64.checked.mch 8,749,308 +0
benchmarks.run_pgo.windows.x64.checked.mch 20,506,707 -16
coreclr_tests.run.windows.x64.checked.mch 119,345,042 -21
libraries.crossgen2.windows.x64.checked.mch 39,441,036 -191
libraries.pmi.windows.x64.checked.mch 61,083,284 -143
libraries_tests.run.windows.x64.Release.mch 101,497,228 -1,527
librariestestsnotieredcompilation.run.windows.x64.Release.mch 123,011,315 -134
realworld.run.windows.x64.checked.mch 13,780,961 -51

Example diffs

aspnet.run.windows.x64.checked.mch

-7 (-1.03%) : 17006.dasm - Microsoft.Extensions.Internal.PropertyHelper:g_AddInterestingProperties|390(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)

@@ -12,7 +12,7 @@
 ;
 ;  V00 arg0         [V00,T07] ( 14,2240.75)     ref  ->  rbx         class-hnd single-def <System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper]>
 ;* V01 arg1         [V01    ] (  0,   0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
-;  V02 loc0         [V02,T15] (  3, 100   )     ref  ->  rdi         class-hnd <System.Reflection.PropertyInfo[]>
+;  V02 loc0         [V02,T14] (  3, 100   )     ref  ->  rdi         class-hnd <System.Reflection.PropertyInfo[]>
 ;  V03 loc1         [V03,T11] ( 11, 388.44)     int  ->  rsi        
 ;  V04 loc2         [V04,T05] ( 18,2525.62)     ref  ->  r14         class-hnd <System.Reflection.PropertyInfo>
 ;  V05 OutArgs      [V05    ] (  1,   1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -31,7 +31,7 @@
 ;* V18 tmp13        [V18    ] (  0,   0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V19 tmp14        [V19    ] (  0,   0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V20 tmp15        [V20    ] (  0,   0   )    long  ->  zero-ref    "Inlining Arg"
-;  V21 tmp16        [V21,T14] (  2,   7.50)   ubyte  ->  rcx         "Inline return value spill temp"
+;* V21 tmp16        [V21,T15] (  0,   0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V22 tmp17        [V22    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
 ;* V23 tmp18        [V23    ] (  0,   0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V24 tmp19        [V24    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
@@ -174,13 +174,10 @@ G_M11033_IG06:        ; bbWeight=3.75, gcrefRegs=4088 {rbx rdi r14}, byrefRegs=0
        call     [rax+0x18]<unknown method>
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
-       xor      ecx, ecx
        cmp      dword ptr [rax+0x08], 0
-       sete     cl
-       test     ecx, ecx
-       je       G_M11033_IG15
+       jne      G_M11033_IG15
        jmp      G_M11033_IG12
-                       ;; size=133 bbWeight=3.75 PerfScore 208.13
+                       ;; size=126 bbWeight=3.75 PerfScore 202.50
 G_M11033_IG07:        ; bbWeight=92.81, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax r14]
        mov      ecx, esi
@@ -394,7 +391,7 @@ G_M11033_IG16:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 680, prolog size 52, PerfScore 32147.27, instruction count 180, allocated bytes for code 680 (MethodHash=b6ced4e6) for method Microsoft.Extensions.Internal.PropertyHelper:<GetProperties>g__AddInterestingProperties|39_0(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)
+; Total bytes of code 673, prolog size 52, PerfScore 32141.64, instruction count 177, allocated bytes for code 673 (MethodHash=b6ced4e6) for method Microsoft.Extensions.Internal.PropertyHelper:<GetProperties>g__AddInterestingProperties|39_0(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:

-14 (-0.84%) : 5346.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable1[System.String],System.String):System.Collections.Generic.IEnumerable1[System.String]:this (Tier1-OSR)

@@ -75,7 +75,6 @@
 ;  V62 cse0         [V62,T04] (  5,1980   )     ref  ->  rcx         multi-def "CSE - aggressive"
 ;  V63 cse1         [V63,T05] (  5,1856.25)     int  ->  r15         "CSE - aggressive"
 ;  V64 cse2         [V64,T25] (  5,  18.75)     int  ->  rbx         "CSE - moderate"
-;  TEMP_01                                    byref  ->  [rbp-0x38]
 ;
 ; Lcl frame size = 48
 
@@ -90,10 +89,8 @@ G_M4592_IG01:        ; bbWeight=6.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        mov      qword ptr [rsp+0x178], rsi
        mov      qword ptr [rsp+0x170], rbx
        lea      rbp, [rsp+0x60]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x38], rax
        mov      qword ptr [rbp-0x40], rsp
-                       ;; size=72 bbWeight=6.25 PerfScore 75.00
+                       ;; size=66 bbWeight=6.25 PerfScore 67.19
 G_M4592_IG02:        ; bbWeight=6.25, gcVars=0000000004002002 {V01 V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V01 V04 V06}
        cmp      gword ptr [rbp+0xE8], 0
@@ -632,20 +629,11 @@ G_M4592_IG41:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        je       SHORT G_M4592_IG42
        mov      rcx, gword ptr [rbp+0xE8]
        ; gcrRegs +[rcx]
-       lea      rcx, bword ptr [rcx+0x08]
-       ; gcrRegs -[rcx]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0x38], rcx
-       mov      r11, gword ptr [rbp+0xE8]
-       ; gcrRegs +[r11]
-       mov      rsi, gword ptr [r11+0x20]
+       mov      rsi, gword ptr [rcx+0x20]
        ; gcrRegs +[rsi]
-       mov      r11, gword ptr [rbp+0xE8]
-       mov      rcx, gword ptr [r11+0x28]
-       ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       mov      rcx, gword ptr [rbp+0xE8]
+       mov      rcx, gword ptr [rcx+0x28]
        mov      r11, 0xD1FFAB1E      ; function address
-       ; gcrRegs -[r11]
        call     [r11]<unknown method>
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
@@ -656,7 +644,10 @@ G_M4592_IG41:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        call     [rsi+0x18]<unknown method>
        ; gcrRegs -[rcx rdx rsi]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rbp-0x38]
+       mov      rcx, gword ptr [rbp+0xE8]
+       ; gcrRegs +[rcx]
+       lea      rcx, bword ptr [rcx+0x08]
+       ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -664,7 +655,7 @@ G_M4592_IG41:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      G_M4592_IG23
-                       ;; size=105 bbWeight=4.00 PerfScore 115.00
+                       ;; size=97 bbWeight=4.00 PerfScore 107.00
 G_M4592_IG42:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbp+0xE8]
        ; gcrRegs +[rcx]
@@ -785,7 +776,7 @@ G_M4592_IG52:        ; bbWeight=0, funclet epilog, nogc, extend
        ret      
                        ;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1661, prolog size 72, PerfScore 42584.23, instruction count 372, allocated bytes for code 1661 (MethodHash=2ce2ee0f) for method Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
+; Total bytes of code 1647, prolog size 66, PerfScore 42568.42, instruction count 368, allocated bytes for code 1647 (MethodHash=2ce2ee0f) for method Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:

-14 (-0.84%) : 9404.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable1[System.String],System.String):System.Collections.Generic.IEnumerable1[System.String]:this (Tier1-OSR)

@@ -75,7 +75,6 @@
 ;  V62 cse0         [V62,T04] (  5,1980   )     ref  ->  rcx         multi-def "CSE - aggressive"
 ;  V63 cse1         [V63,T05] (  5,1856.25)     int  ->  r15         "CSE - aggressive"
 ;  V64 cse2         [V64,T25] (  5,  18.75)     int  ->  rbx         "CSE - moderate"
-;  TEMP_01                                    byref  ->  [rbp-0x38]
 ;
 ; Lcl frame size = 48
 
@@ -90,10 +89,8 @@ G_M4592_IG01:        ; bbWeight=6.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        mov      qword ptr [rsp+0x178], rsi
        mov      qword ptr [rsp+0x170], rbx
        lea      rbp, [rsp+0x60]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x38], rax
        mov      qword ptr [rbp-0x40], rsp
-                       ;; size=72 bbWeight=6.25 PerfScore 75.00
+                       ;; size=66 bbWeight=6.25 PerfScore 67.19
 G_M4592_IG02:        ; bbWeight=6.25, gcVars=0000000004002002 {V01 V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V01 V04 V06}
        cmp      gword ptr [rbp+0xE8], 0
@@ -632,20 +629,11 @@ G_M4592_IG41:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        je       SHORT G_M4592_IG42
        mov      rcx, gword ptr [rbp+0xE8]
        ; gcrRegs +[rcx]
-       lea      rcx, bword ptr [rcx+0x08]
-       ; gcrRegs -[rcx]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0x38], rcx
-       mov      r11, gword ptr [rbp+0xE8]
-       ; gcrRegs +[r11]
-       mov      rsi, gword ptr [r11+0x20]
+       mov      rsi, gword ptr [rcx+0x20]
        ; gcrRegs +[rsi]
-       mov      r11, gword ptr [rbp+0xE8]
-       mov      rcx, gword ptr [r11+0x28]
-       ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       mov      rcx, gword ptr [rbp+0xE8]
+       mov      rcx, gword ptr [rcx+0x28]
        mov      r11, 0xD1FFAB1E      ; function address
-       ; gcrRegs -[r11]
        call     [r11]<unknown method>
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
@@ -656,7 +644,10 @@ G_M4592_IG41:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        call     [rsi+0x18]<unknown method>
        ; gcrRegs -[rcx rdx rsi]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rbp-0x38]
+       mov      rcx, gword ptr [rbp+0xE8]
+       ; gcrRegs +[rcx]
+       lea      rcx, bword ptr [rcx+0x08]
+       ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -664,7 +655,7 @@ G_M4592_IG41:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      G_M4592_IG23
-                       ;; size=105 bbWeight=4.00 PerfScore 115.00
+                       ;; size=97 bbWeight=4.00 PerfScore 107.00
 G_M4592_IG42:        ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbp+0xE8]
        ; gcrRegs +[rcx]
@@ -785,7 +776,7 @@ G_M4592_IG52:        ; bbWeight=0, funclet epilog, nogc, extend
        ret      
                        ;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1661, prolog size 72, PerfScore 42584.23, instruction count 372, allocated bytes for code 1661 (MethodHash=2ce2ee0f) for method Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
+; Total bytes of code 1647, prolog size 66, PerfScore 42568.42, instruction count 368, allocated bytes for code 1647 (MethodHash=2ce2ee0f) for method Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:

-14 (-0.32%) : 100842.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)

@@ -203,7 +203,6 @@
 ;  V190 rat1        [V190,T27] (  7,  17.22)     ref  ->  r14         class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
 ;  V191 rat2        [V191,T48] (  5,   0.15)     ref  ->  r13         class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ActionConstraints.HttpMethodActionConstraint>
 ;  V192 rat3        [V192,T47] (  6,   0.17)     ref  ->  r14         class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
-;  TEMP_01                                    byref  ->  [rbp-0x40]
 ;
 ; Lcl frame size = 56
 
@@ -219,12 +218,10 @@ G_M6458_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      qword ptr [rsp+0x680], rsi
        mov      qword ptr [rsp+0x678], rbx
        lea      rbp, [rsp+0x70]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x48], rsp
        mov      rbx, gword ptr [rbp+0x660]
        ; gcrRegs +[rbx]
-                       ;; size=87 bbWeight=1 PerfScore 15.00
+                       ;; size=81 bbWeight=1 PerfScore 13.75
 G_M6458_IG02:        ; bbWeight=1, gcVars=00000000000000040000000000000401 {V00 V13 V17}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V00 V10 V13 V17}
        jmp      SHORT G_M6458_IG05
@@ -545,20 +542,11 @@ G_M6458_IG31:        ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
        je       SHORT G_M6458_IG32
        mov      rcx, gword ptr [rbp+0x5E0]
        ; gcrRegs +[rcx]
-       lea      rcx, bword ptr [rcx+0x08]
-       ; gcrRegs -[rcx]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0x40], rcx
-       mov      r11, gword ptr [rbp+0x5E0]
-       ; gcrRegs +[r11]
-       mov      rdi, gword ptr [r11+0x20]
+       mov      rdi, gword ptr [rcx+0x20]
        ; gcrRegs +[rdi]
-       mov      r11, gword ptr [rbp+0x5E0]
-       mov      rcx, gword ptr [r11+0x28]
-       ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       mov      rcx, gword ptr [rbp+0x5E0]
+       mov      rcx, gword ptr [rcx+0x28]
        mov      r11, 0xD1FFAB1E      ; function address
-       ; gcrRegs -[r11]
        call     [r11]<unknown method>
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
@@ -569,7 +557,10 @@ G_M6458_IG31:        ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
        call     [rdi+0x18]<unknown method>
        ; gcrRegs -[rcx rdx rdi]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rbp-0x40]
+       mov      rcx, gword ptr [rbp+0x5E0]
+       ; gcrRegs +[rcx]
+       lea      rcx, bword ptr [rcx+0x08]
+       ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -577,7 +568,7 @@ G_M6458_IG31:        ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      G_M6458_IG19
-                       ;; size=105 bbWeight=4.00 PerfScore 115.00
+                       ;; size=97 bbWeight=4.00 PerfScore 107.00
 G_M6458_IG32:        ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbp+0x5E0]
        ; gcrRegs +[rcx]
@@ -2086,7 +2077,7 @@ G_M6458_IG154:        ; bbWeight=0, funclet epilog, nogc, extend
        ret      
                        ;; size=17 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 4377, prolog size 87, PerfScore 29291.68, instruction count 976, allocated bytes for code 4377 (MethodHash=8ef9e6c5) for method Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
+; Total bytes of code 4363, prolog size 81, PerfScore 29282.43, instruction count 972, allocated bytes for code 4363 (MethodHash=8ef9e6c5) for method Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:

-14 (-0.32%) : 91547.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)

@@ -203,7 +203,6 @@
 ;  V190 rat1        [V190,T27] (  7,  17.22)     ref  ->  r14         class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
 ;  V191 rat2        [V191,T48] (  5,   0.15)     ref  ->  r13         class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ActionConstraints.HttpMethodActionConstraint>
 ;  V192 rat3        [V192,T47] (  6,   0.17)     ref  ->  r14         class-hnd "replacement local" <Microsoft.AspNetCore.Mvc.ConsumesAttribute>
-;  TEMP_01                                    byref  ->  [rbp-0x40]
 ;
 ; Lcl frame size = 56
 
@@ -219,12 +218,10 @@ G_M6458_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      qword ptr [rsp+0x680], rsi
        mov      qword ptr [rsp+0x678], rbx
        lea      rbp, [rsp+0x70]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x40], rax
        mov      qword ptr [rbp-0x48], rsp
        mov      rbx, gword ptr [rbp+0x660]
        ; gcrRegs +[rbx]
-                       ;; size=87 bbWeight=1 PerfScore 15.00
+                       ;; size=81 bbWeight=1 PerfScore 13.75
 G_M6458_IG02:        ; bbWeight=1, gcVars=00000000000000040000000000000401 {V00 V13 V17}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V00 V10 V13 V17}
        jmp      SHORT G_M6458_IG05
@@ -545,20 +542,11 @@ G_M6458_IG31:        ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
        je       SHORT G_M6458_IG32
        mov      rcx, gword ptr [rbp+0x5E0]
        ; gcrRegs +[rcx]
-       lea      rcx, bword ptr [rcx+0x08]
-       ; gcrRegs -[rcx]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0x40], rcx
-       mov      r11, gword ptr [rbp+0x5E0]
-       ; gcrRegs +[r11]
-       mov      rdi, gword ptr [r11+0x20]
+       mov      rdi, gword ptr [rcx+0x20]
        ; gcrRegs +[rdi]
-       mov      r11, gword ptr [rbp+0x5E0]
-       mov      rcx, gword ptr [r11+0x28]
-       ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       mov      rcx, gword ptr [rbp+0x5E0]
+       mov      rcx, gword ptr [rcx+0x28]
        mov      r11, 0xD1FFAB1E      ; function address
-       ; gcrRegs -[r11]
        call     [r11]<unknown method>
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
@@ -569,7 +557,10 @@ G_M6458_IG31:        ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
        call     [rdi+0x18]<unknown method>
        ; gcrRegs -[rcx rdx rdi]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rbp-0x40]
+       mov      rcx, gword ptr [rbp+0x5E0]
+       ; gcrRegs +[rcx]
+       lea      rcx, bword ptr [rcx+0x08]
+       ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -577,7 +568,7 @@ G_M6458_IG31:        ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, b
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      G_M6458_IG19
-                       ;; size=105 bbWeight=4.00 PerfScore 115.00
+                       ;; size=97 bbWeight=4.00 PerfScore 107.00
 G_M6458_IG32:        ; bbWeight=4.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rbp+0x5E0]
        ; gcrRegs +[rcx]
@@ -2086,7 +2077,7 @@ G_M6458_IG154:        ; bbWeight=0, funclet epilog, nogc, extend
        ret      
                        ;; size=17 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 4377, prolog size 87, PerfScore 29291.68, instruction count 976, allocated bytes for code 4377 (MethodHash=8ef9e6c5) for method Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
+; Total bytes of code 4363, prolog size 81, PerfScore 29282.43, instruction count 972, allocated bytes for code 4363 (MethodHash=8ef9e6c5) for method Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
 ; ============================================================
 
 Unwind Info:

-31 (-0.18%) : 45958.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (FullOpts)

@@ -19,24 +19,24 @@
 ;  V08 loc5         [V08,T91] (  5, 25   )     ref  ->  r13         class-hnd exact single-def <<unknown class>>
 ;  V09 loc6         [V09,T168] ( 11, 12.50)     ref  ->  r12         class-hnd exact single-def <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SqlExpression>
-;  V11 loc8         [V11,T116] ( 14, 19   )     ref  ->  [rbp-0x120]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
+;  V11 loc8         [V11,T116] ( 14, 19   )     ref  ->  [rbp-0x118]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;  V12 loc9         [V12,T171] (  3, 12   )     ref  ->  r12         class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
-;  V13 loc10        [V13,T42] ( 11, 46   )     ref  ->  [rbp-0x128]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_1>
-;  V14 loc11        [V14,T170] (  4, 12   )     ref  ->  [rbp-0x130]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-;  V15 loc12        [V15,T00] ( 60,244   )     ref  ->  [rbp-0x138]  do-not-enreg[Z] class-hnd EH-live <<unknown class>>
+;  V13 loc10        [V13,T42] ( 11, 46   )     ref  ->  [rbp-0x120]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_1>
+;  V14 loc11        [V14,T170] (  4, 12   )     ref  ->  [rbp-0x128]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+;  V15 loc12        [V15,T00] ( 60,244   )     ref  ->  [rbp-0x130]  do-not-enreg[Z] class-hnd EH-live <<unknown class>>
 ;  V16 loc13        [V16,T66] (  4, 32   )     ref  ->  r12         class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
 ;  V17 loc14        [V17,T95] (  4, 24   )     ref  ->  r12         class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
 ;* V18 loc15        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression>
 ;  V19 loc16        [V19,T244] (  3,  6   )     ref  ->  r12         class-hnd <<unknown class>>
 ;  V20 loc17        [V20,T282] (  2,  4   )     ref  ->  r12         class-hnd <<unknown class>>
 ;* V21 loc18        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
-;  V22 loc19        [V22,T120] (  5, 18   )     ref  ->  [rbp-0x140]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
-;  V23 loc20        [V23,T30] ( 10, 48   )     ref  ->  [rbp-0x148]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_2>
-;  V24 loc21        [V24,T172] (  3, 12   )     ref  ->  [rbp-0x150]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-;  V25 loc22        [V25,T124] (  5, 16   )     ref  ->  [rbp-0x158]  class-hnd exact spill-single-def <<unknown class>>
-;  V26 loc23        [V26,T210] (  2,  8   )     ref  ->  [rbp-0x160]  class-hnd spill-single-def <<unknown class>>
+;  V22 loc19        [V22,T120] (  5, 18   )     ref  ->  [rbp-0x138]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
+;  V23 loc20        [V23,T30] ( 10, 48   )     ref  ->  [rbp-0x140]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_2>
+;  V24 loc21        [V24,T172] (  3, 12   )     ref  ->  [rbp-0x148]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+;  V25 loc22        [V25,T124] (  5, 16   )     ref  ->  [rbp-0x150]  class-hnd exact spill-single-def <<unknown class>>
+;  V26 loc23        [V26,T210] (  2,  8   )     ref  ->  [rbp-0x158]  class-hnd spill-single-def <<unknown class>>
 ;* V27 loc24        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.LeftJoinExpression>
-;  V28 loc25        [V28,T67] (  4, 32   )     ref  ->  [rbp-0x168]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+;  V28 loc25        [V28,T67] (  4, 32   )     ref  ->  [rbp-0x160]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
 ;  V29 loc26        [V29,T92] ( 17, 24.54)     ref  ->  r12         class-hnd single-def <<unknown class>>
 ;  V30 loc27        [V30,T266] (  4,  5.50)     ref  ->  r12         class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
 ;* V31 loc28        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
@@ -51,9 +51,9 @@
 ;  V40 loc37        [V40,T108] (  9, 22.04)     ref  ->  r14         class-hnd single-def <<unknown class>>
 ;  V41 loc38        [V41,T22] ( 25, 59.32)     ref  ->  r15         class-hnd single-def <<unknown class>>
 ;  V42 loc39        [V42,T83] (  5, 28.50)     ref  ->  r13         class-hnd exact single-def <<unknown class>>
-;  V43 loc40        [V43,T51] ( 17, 40.64)     ref  ->  [rbp-0x170]  class-hnd exact spill-single-def <<unknown class>>
+;  V43 loc40        [V43,T51] ( 17, 40.64)     ref  ->  [rbp-0x168]  class-hnd exact spill-single-def <<unknown class>>
 ;  V44 loc41        [V44,T115] ( 15, 19.50)     ref  ->  r13         class-hnd exact single-def <<unknown class>>
-;  V45 loc42        [V45,T117] ( 14, 19   )     ref  ->  [rbp-0x178]  class-hnd exact spill-single-def <System.Collections.Generic.List`1[System.String]>
+;  V45 loc42        [V45,T117] ( 14, 19   )     ref  ->  [rbp-0x170]  class-hnd exact spill-single-def <System.Collections.Generic.List`1[System.String]>
 ;  V46 loc43        [V46,T315] (  4,  2   )     ref  ->  rsi         class-hnd exact single-def <System.String>
 ;  V47 loc44        [V47,T362] (  4,  1.50)     ref  ->  r12         class-hnd exact single-def <Microsoft.EntityFrameworkCore.Query.Internal.TpcTablesExpression>
 ;  V48 loc45        [V48,T269] (  3,  5   )     ref  ->  rsi         class-hnd single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
@@ -61,43 +61,43 @@
 ;* V50 loc47        [V50    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
 ;  V51 loc48        [V51,T371] (  2,  1   )     ref  ->  rsi         class-hnd single-def <System.Collections.Generic.Dictionary`2[Microsoft.EntityFrameworkCore.Metadata.ITableBase,Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression]>
 ;  V52 loc49        [V52,T59] (  8, 36.50)     int  ->  [rbp-0x4C] 
-;  V53 loc50        [V53,T37] (  4, 48   )     ref  ->  [rbp-0x180]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+;  V53 loc50        [V53,T37] (  4, 48   )     ref  ->  [rbp-0x178]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
 ;  V54 loc51        [V54,T23] ( 17, 58.98)     int  ->  [rbp-0x50] 
-;  V55 loc52        [V55,T28] ( 10, 52   )     ref  ->  [rbp-0x188]  class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_4>
-;  V56 loc53        [V56,T123] (  6, 16   )     ref  ->  [rbp-0x190]  class-hnd exact <System.String>
+;  V55 loc52        [V55,T28] ( 10, 52   )     ref  ->  [rbp-0x180]  class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_4>
+;  V56 loc53        [V56,T123] (  6, 16   )     ref  ->  [rbp-0x188]  class-hnd exact <System.String>
 ;  V57 loc54        [V57,T112] (  6, 20   )     int  ->  [rbp-0x54] 
 ;* V58 loc55        [V58    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op
 ;  V59 loc56        [V59,T230] (  5,  7.50)     ref  ->  r13         class-hnd exact single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_5>
 ;  V60 loc57        [V60,T272] (  3,  4.50)     int  ->  [rbp-0x58] 
 ;  V61 loc58        [V61,T109] ( 13, 20.58)     int  ->  [rbp-0x5C] 
-;  V62 loc59        [V62,T86] (  9, 28   )     ref  ->  [rbp-0x198]  class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
-;  V63 loc60        [V63,T122] (  7, 16   )     ref  ->  [rbp-0x1A0]  class-hnd <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
-;  V64 loc61        [V64,T50] ( 19, 42   )     ref  ->  [rbp-0x1A8]  class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
+;  V62 loc59        [V62,T86] (  9, 28   )     ref  ->  [rbp-0x190]  class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
+;  V63 loc60        [V63,T122] (  7, 16   )     ref  ->  [rbp-0x198]  class-hnd <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
+;  V64 loc61        [V64,T50] ( 19, 42   )     ref  ->  [rbp-0x1A0]  class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
 ;* V65 loc62        [V65    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-;  V66 loc63        [V66,T160] (  9, 14   )     ref  ->  [rbp-0x1B0]  class-hnd exact <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+;  V66 loc63        [V66,T160] (  9, 14   )     ref  ->  [rbp-0x1A8]  class-hnd exact <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
 ;  V67 loc64        [V67,T09] ( 21, 84.64)     int  ->  [rbp-0x60] 
-;  V68 loc65        [V68,T12] ( 18, 64.00)     ref  ->  [rbp-0x1B8]  class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
-;  V69 loc66        [V69,T52] (  9, 40.00)     ref  ->  [rbp-0x1C0]  class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
+;  V68 loc65        [V68,T12] ( 18, 64.00)     ref  ->  [rbp-0x1B0]  class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+;  V69 loc66        [V69,T52] (  9, 40.00)     ref  ->  [rbp-0x1B8]  class-hnd <Microsoft.EntityFrameworkCore.Metadata.IEntityType>
 ;* V70 loc67        [V70    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SqlExpression>
 ;  V71 loc68        [V71,T110] (  6, 20.50)     int  ->  [rbp-0x64] 
 ;  V72 loc69        [V72,T174] (  3, 12   )     ref  ->  r15         class-hnd <Microsoft.EntityFrameworkCore.Metadata.IProperty>
-;  V73 loc70        [V73,T211] (  2,  8   )     ref  ->  [rbp-0x1C8]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression>
+;  V73 loc70        [V73,T211] (  2,  8   )     ref  ->  [rbp-0x1C0]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression>
 ;  V74 loc71        [V74,T364] (  3,  1.50)     ref  ->  rax         class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.IFunctionMapping>
 ;  V75 loc72        [V75,T316] (  4,  2   )     ref  ->  rsi         class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
 ;  V76 loc73        [V76,T270] (  6,  4.50)     ref  ->  rdi         class-hnd single-def <<unknown class>>
 ;  V77 loc74        [V77,T365] (  3,  1.50)     ref  ->  rdi         class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.ITableBase>
 ;  V78 loc75        [V78,T271] (  3,  4.50)     ref  ->  r14         class-hnd single-def <<unknown class>>
-;  V79 loc76        [V79,T11] ( 10, 78.50)     ref  ->  [rbp-0x1D0]  class-hnd <<unknown class>>
+;  V79 loc76        [V79,T11] ( 10, 78.50)     ref  ->  [rbp-0x1C8]  class-hnd <<unknown class>>
 ;  V80 loc77        [V80,T118] (  4, 19   )     ref  ->  r13         class-hnd exact single-def <<unknown class>>
 ;  V81 loc78        [V81,T238] (  4,  7   )     ref  ->  r12         class-hnd exact single-def <System.Collections.Generic.Dictionary`2[Microsoft.EntityFrameworkCore.Metadata.ITableBase,Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression]>
 ;  V82 loc79        [V82    ] (  7, 10.50)  struct (24) [rbp-0x80]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.List`1+Enumerator[Microsoft.EntityFrameworkCore.Metadata.ITableMappingBase]>
-;  V83 loc80        [V83,T212] (  2,  8   )     ref  ->  [rbp-0x1D8]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.ITableMappingBase>
-;  V84 loc81        [V84,T20] ( 11, 62   )     ref  ->  [rbp-0x1E0]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_6>
+;  V83 loc80        [V83,T212] (  2,  8   )     ref  ->  [rbp-0x1D0]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.ITableMappingBase>
+;  V84 loc81        [V84,T20] ( 11, 62   )     ref  ->  [rbp-0x1D8]  class-hnd exact spill-single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_6>
 ;* V85 loc82        [V85    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-;  V86 loc83        [V86,T10] (  5, 80   )     ref  ->  [rbp-0x1E8]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+;  V86 loc83        [V86,T10] (  5, 80   )     ref  ->  [rbp-0x1E0]  class-hnd spill-single-def <Microsoft.EntityFrameworkCore.Metadata.IProperty>
 ;* V87 loc84        [V87    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
-;  V88 loc85        [V88,T245] (  3,  6   )     ref  ->  [rbp-0x1F0]  class-hnd spill-single-def <<unknown class>>
-;  V89 loc86        [V89,T283] (  2,  4   )     ref  ->  [rbp-0x1F8]  class-hnd spill-single-def <<unknown class>>
+;  V88 loc85        [V88,T245] (  3,  6   )     ref  ->  [rbp-0x1E8]  class-hnd spill-single-def <<unknown class>>
+;  V89 loc86        [V89,T283] (  2,  4   )     ref  ->  [rbp-0x1F0]  class-hnd spill-single-def <<unknown class>>
 ;* V90 loc87        [V90    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
 ;  V91 loc88        [V91,T119] (  6, 18   )     ref  ->  rsi         class-hnd exact <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_7>
 ;* V92 loc89        [V92    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <Microsoft.EntityFrameworkCore.Metadata.IColumnBase>
@@ -119,28 +119,28 @@
 ;  V108 tmp15       [V108,T285] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[Microsoft.EntityFrameworkCore.Metadata.ITableBase,Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression]>
 ;  V109 tmp16       [V109,T286] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V110 tmp17       [V110    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_1>
-;  V111 tmp18       [V111,T34] (  6, 48   )     ref  ->  [rbp-0x200]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-;  V112 tmp19       [V112,T68] (  4, 32   )     ref  ->  [rbp-0x208]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+;  V111 tmp18       [V111,T34] (  6, 48   )     ref  ->  [rbp-0x1F8]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+;  V112 tmp19       [V112,T68] (  4, 32   )     ref  ->  [rbp-0x200]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
 ;  V113 tmp20       [V113,T175] (  3, 12   )     ref  ->  r12         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V114 tmp21       [V114,T176] (  3, 12   )     ref  ->  [rbp-0x210]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-;  V115 tmp22       [V115,T177] (  3, 12   )     ref  ->  [rbp-0x218]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V114 tmp21       [V114,T176] (  3, 12   )     ref  ->  [rbp-0x208]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V115 tmp22       [V115,T177] (  3, 12   )     ref  ->  [rbp-0x210]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
 ;* V116 tmp23       [V116    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <<unknown class>>
-;  V117 tmp24       [V117,T113] (  5, 20   )     ref  ->  [rbp-0x220]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
+;  V117 tmp24       [V117,T113] (  5, 20   )     ref  ->  [rbp-0x218]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
 ;  V118 tmp25       [V118,T178] (  3, 12   )     ref  ->  r14         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V119 tmp26       [V119,T07] (  7, 96   )     ref  ->  [rbp-0x228]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+;  V119 tmp26       [V119,T07] (  7, 96   )     ref  ->  [rbp-0x220]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
 ;  V120 tmp27       [V120    ] (  4, 64   )  struct (16) [rbp-0x90]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
 ;  V121 tmp28       [V121,T287] (  3,  3   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V122 tmp29       [V122    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_2>
-;  V123 tmp30       [V123,T35] (  6, 48   )     ref  ->  [rbp-0x230]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-;  V124 tmp31       [V124,T69] (  4, 32   )     ref  ->  [rbp-0x238]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
-;  V125 tmp32       [V125,T97] (  3, 24   )     ref  ->  [rbp-0x240]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-;  V126 tmp33       [V126,T98] (  3, 24   )     ref  ->  [rbp-0x248]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-;  V127 tmp34       [V127,T99] (  3, 24   )     ref  ->  [rbp-0x250]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V123 tmp30       [V123,T35] (  6, 48   )     ref  ->  [rbp-0x228]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+;  V124 tmp31       [V124,T69] (  4, 32   )     ref  ->  [rbp-0x230]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+;  V125 tmp32       [V125,T97] (  3, 24   )     ref  ->  [rbp-0x238]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V126 tmp33       [V126,T98] (  3, 24   )     ref  ->  [rbp-0x240]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V127 tmp34       [V127,T99] (  3, 24   )     ref  ->  [rbp-0x248]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
 ;* V128 tmp35       [V128    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <<unknown class>>
-;  V129 tmp36       [V129,T53] (  5, 40   )     ref  ->  [rbp-0x258]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.LeftJoinExpression>
+;  V129 tmp36       [V129,T53] (  5, 40   )     ref  ->  [rbp-0x250]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.LeftJoinExpression>
 ;  V130 tmp37       [V130,T47] (  7, 44   )     ref  ->  rcx         class-hnd "impAppendStmt" <System.Collections.Generic.List`1[int]>
-;  V131 tmp38       [V131,T213] (  2,  8   )     ref  ->  [rbp-0x260]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
-;  V132 tmp39       [V132,T125] (  5, 16   )     ref  ->  [rbp-0x268]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.CaseWhenClause>
+;  V131 tmp38       [V131,T213] (  2,  8   )     ref  ->  [rbp-0x258]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+;  V132 tmp39       [V132,T125] (  5, 16   )     ref  ->  [rbp-0x260]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.CaseWhenClause>
 ;  V133 tmp40       [V133,T366] (  3,  1.50)     ref  ->  rsi        
 ;  V134 tmp41       [V134,T288] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionMember>
 ;  V135 tmp42       [V135,T289] (  3,  3   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <<unknown class>>
@@ -155,32 +155,32 @@
 ;  V144 tmp51       [V144,T318] (  4,  2   )     ref  ->   r8        
 ;  V145 tmp52       [V145,T290] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V146 tmp53       [V146    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_4>
-;  V147 tmp54       [V147,T01] (  6,192   )     ref  ->  [rbp-0x270]  class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V148 tmp55       [V148,T08] (  6, 86.14)     ref  ->  [rbp-0x278]  class-hnd "impAppendStmt" <<unknown class>>
-;  V149 tmp56       [V149,T36] (  6, 48   )     int  ->  [rbp-0x94]  "impSpillLclRefs"
+;  V147 tmp54       [V147,T01] (  6,192   )     ref  ->  [rbp-0x268]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V148 tmp55       [V148,T08] (  6, 86.14)     ref  ->  [rbp-0x270]  class-hnd "impAppendStmt" <<unknown class>>
+;  V149 tmp56       [V149,T36] (  6, 48   )     int  ->  rcx         "impSpillLclRefs"
 ;  V150 tmp57       [V150,T127] (  4, 16   )     ref  ->  rdx         class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
 ;  V151 tmp58       [V151,T291] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V152 tmp59       [V152,T292] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V153 tmp60       [V153,T293] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.String]>
-;  V154 tmp61       [V154,T94] (  6, 24   )     ref  ->  [rbp-0x280]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
-;  V155 tmp62       [V155,T84] ( 10, 28   )     ref  ->  [rbp-0x288]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-;  V156 tmp63       [V156,T62] (  8, 32   )     ref  ->  [rbp-0x290]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
-;  V157 tmp64       [V157,T61] (  9, 32.00)     ref  ->  [rbp-0x298] 
-;  V158 tmp65       [V158,T05] ( 15,112.00)     ref  ->  [rbp-0x2A0]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ProjectionExpression>
-;  V159 tmp66       [V159,T02] ( 21,176   )     ref  ->  [rbp-0x2A8]  class-hnd "impAppendStmt" <<unknown class>>
-;  V160 tmp67       [V160,T31] (  9, 48.00)     ref  ->  [rbp-0x2B0]  class-hnd "impAppendStmt" <System.Type>
-;  V161 tmp68       [V161,T44] ( 14, 44   )     ref  ->  [rbp-0x2B8]  class-hnd "non-inline candidate call" <<unknown class>>
-;  V162 tmp69       [V162,T85] ( 10, 28   )     ref  ->  [rbp-0x2C0]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ProjectionExpression>
+;  V154 tmp61       [V154,T94] (  6, 24   )     ref  ->  [rbp-0x278]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
+;  V155 tmp62       [V155,T84] ( 10, 28   )     ref  ->  [rbp-0x280]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+;  V156 tmp63       [V156,T62] (  8, 32   )     ref  ->  [rbp-0x288]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+;  V157 tmp64       [V157,T61] (  9, 32.00)     ref  ->  [rbp-0x290] 
+;  V158 tmp65       [V158,T05] ( 15,112.00)     ref  ->  [rbp-0x298]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ProjectionExpression>
+;  V159 tmp66       [V159,T02] ( 21,176   )     ref  ->  [rbp-0x2A0]  class-hnd "impAppendStmt" <<unknown class>>
+;  V160 tmp67       [V160,T31] (  9, 48.00)     ref  ->  [rbp-0x2A8]  class-hnd "impAppendStmt" <System.Type>
+;  V161 tmp68       [V161,T44] ( 14, 44   )     ref  ->  [rbp-0x2B0]  class-hnd "non-inline candidate call" <<unknown class>>
+;  V162 tmp69       [V162,T85] ( 10, 28   )     ref  ->  [rbp-0x2B8]  class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ProjectionExpression>
 ;  V163 tmp70       [V163,T243] (  6,  6   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TpcTablesExpression>
-;  V164 tmp71       [V164,T273] (  4,  4   )     ref  ->  [rbp-0x2C8]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+;  V164 tmp71       [V164,T273] (  4,  4   )     ref  ->  [rbp-0x2C0]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
 ;  V165 tmp72       [V165,T294] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V166 tmp73       [V166,T136] (  2, 16   )     ref  ->  [rbp-0x2D0]  class-hnd spill-single-def "non-inline candidate call" <Microsoft.EntityFrameworkCore.Metadata.IProperty>
-;  V167 tmp74       [V167,T100] (  3, 24   )     ref  ->  [rbp-0x2D8]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
-;  V168 tmp75       [V168,T48] (  7, 44   )     ref  ->  [rbp-0x2E0]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
-;  V169 tmp76       [V169    ] (  4, 32   )  struct (16) [rbp-0xA8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
+;  V166 tmp73       [V166,T136] (  2, 16   )     ref  ->  [rbp-0x2C8]  class-hnd spill-single-def "non-inline candidate call" <Microsoft.EntityFrameworkCore.Metadata.IProperty>
+;  V167 tmp74       [V167,T100] (  3, 24   )     ref  ->  [rbp-0x2D0]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
+;  V168 tmp75       [V168,T48] (  7, 44   )     ref  ->  [rbp-0x2D8]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+;  V169 tmp76       [V169    ] (  4, 32   )  struct (16) [rbp-0xA0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
 ;  V170 tmp77       [V170,T295] (  3,  3   )     ref  ->  rsi         class-hnd single-def "dup spill" <<unknown class>>
 ;  V171 tmp78       [V171,T274] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+ConcreteColumnExpression>
-;  V172 tmp79       [V172    ] (  3,  3   )  struct (16) [rbp-0xB8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,System.Collections.Generic.List`1[System.String]]>
+;  V172 tmp79       [V172    ] (  3,  3   )  struct (16) [rbp-0xB0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,System.Collections.Generic.List`1[System.String]]>
 ;  V173 tmp80       [V173,T296] (  3,  3   )     ref  ->  rsi         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V174 tmp81       [V174,T325] (  2,  2   )     ref  ->  rsi         class-hnd single-def "dup spill" <<unknown class>>
 ;* V175 tmp82       [V175    ] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -191,7 +191,7 @@
 ;  V180 tmp87       [V180,T205] (  8,  8   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.StructuralTypeProjectionExpression>
 ;  V181 tmp88       [V181,T275] (  4,  4   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V182 tmp89       [V182    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_5>
-;  V183 tmp90       [V183,T101] (  3, 24   )     ref  ->  [rbp-0x2E8]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V183 tmp90       [V183,T101] (  3, 24   )     ref  ->  [rbp-0x2E0]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
 ;  V184 tmp91       [V184,T185] (  3, 12   )     int  ->  rcx         "impSpillLclRefs"
 ;* V185 tmp92       [V185    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;  V186 tmp93       [V186,T276] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -204,7 +204,7 @@
 ;  V193 tmp100      [V193,T206] (  8,  8   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.StructuralTypeProjectionExpression>
 ;  V194 tmp101      [V194,T49] (  7, 44   )     ref  ->  r14         class-hnd "impAppendStmt" <<unknown class>>
 ;  V195 tmp102      [V195,T137] (  2, 16   )     ref  ->  r15         class-hnd "non-inline candidate call" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression>
-;  V196 tmp103      [V196    ] (  4, 32   )  struct (16) [rbp-0xC8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
+;  V196 tmp103      [V196    ] (  4, 32   )  struct (16) [rbp-0xC0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
 ;  V197 tmp104      [V197,T280] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V198 tmp105      [V198,T326] (  2,  2   )     ref  ->   r8         class-hnd single-def "dup spill" <<unknown class>>
 ;  V199 tmp106      [V199,T327] (  2,  2   )     ref  ->  rdi         class-hnd single-def "impAppendStmt" <System.Collections.Generic.IEnumerable`1[Microsoft.EntityFrameworkCore.Metadata.IFunctionMapping]>
@@ -213,17 +213,17 @@
 ;  V202 tmp109      [V202,T303] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V203 tmp110      [V203,T304] (  3,  3   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.Dictionary`2[Microsoft.EntityFrameworkCore.Metadata.ITableBase,Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression]>
 ;* V204 tmp111      [V204    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_6>
-;  V205 tmp112      [V205,T65] (  5, 32   )     ref  ->  [rbp-0x2F0]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
-;  V206 tmp113      [V206,T70] (  4, 32   )     ref  ->  [rbp-0x2F8]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
-;  V207 tmp114      [V207,T179] (  3, 12   )     ref  ->  [rbp-0x300]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-;  V208 tmp115      [V208,T180] (  3, 12   )     ref  ->  [rbp-0x308]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-;  V209 tmp116      [V209,T181] (  3, 12   )     ref  ->  [rbp-0x310]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V205 tmp112      [V205,T65] (  5, 32   )     ref  ->  [rbp-0x2E8]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.TableExpression>
+;  V206 tmp113      [V206,T70] (  4, 32   )     ref  ->  [rbp-0x2F0]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.Internal.TableReferenceExpression>
+;  V207 tmp114      [V207,T179] (  3, 12   )     ref  ->  [rbp-0x2F8]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V208 tmp115      [V208,T180] (  3, 12   )     ref  ->  [rbp-0x300]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V209 tmp116      [V209,T181] (  3, 12   )     ref  ->  [rbp-0x308]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
 ;* V210 tmp117      [V210    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <<unknown class>>
-;  V211 tmp118      [V211,T114] (  5, 20   )     ref  ->  [rbp-0x318]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
+;  V211 tmp118      [V211,T114] (  5, 20   )     ref  ->  [rbp-0x310]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.InnerJoinExpression>
 ;  V212 tmp119      [V212,T93] (  7, 24   )     ref  ->  rcx         class-hnd "impAppendStmt" <System.Collections.Generic.List`1[int]>
-;  V213 tmp120      [V213,T182] (  3, 12   )     ref  ->  [rbp-0x320]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-;  V214 tmp121      [V214,T03] (  7,176   )     ref  ->  [rbp-0x328]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
-;  V215 tmp122      [V215    ] (  4,128   )  struct (16) [rbp-0xD8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
+;  V213 tmp120      [V213,T182] (  3, 12   )     ref  ->  [rbp-0x318]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V214 tmp121      [V214,T03] (  7,176   )     ref  ->  [rbp-0x320]  class-hnd spill-single-def "non-inline candidate call" <<unknown class>>
+;  V215 tmp122      [V215    ] (  4,128   )  struct (16) [rbp-0xD0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[Microsoft.EntityFrameworkCore.Query.SqlExpressions.ColumnExpression,Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer]>
 ;* V216 tmp123      [V216    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression+<>c__DisplayClass24_7>
 ;  V217 tmp124      [V217,T183] (  3, 12   )     ref  ->  r14         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V218 tmp125      [V218,T214] (  2,  8   )     ref  ->   r8         class-hnd "dup spill" <<unknown class>>
@@ -245,26 +245,26 @@
 ;* V234 tmp141      [V234,T367] (  0,  0   )     int  ->  zero-ref    "spilling unroll qmark"
 ;* V235 tmp142      [V235    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
 ;* V236 tmp143      [V236,T368] (  0,  0   )     int  ->  zero-ref    "spilling unroll qmark"
...

benchmarks.run.windows.x64.checked.mch

+0 (0.00%) : 19697.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rsp+0x28]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  r12        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rsp+0x20]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  rbp         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  rbp         single-def
 ;  V16 OutArgs      [V16    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  r15        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  r15        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rdx         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r15        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rdx         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r15        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rsp+0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rax         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rdx         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rdx         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rdx         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rdx         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rdx         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rdx         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r12         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rdx         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rdx         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r12         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rdx         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 

benchmarks.run_pgo.windows.x64.checked.mch

-16 (-1.65%) : 68276.dasm - System.Linq.Enumerable:TryGetSingleSystem.__Canon:System.__Canon (Tier1)

@@ -51,7 +51,6 @@
 ;  V39 rat1         [V39,T28] (  3,  0.33)    long  ->  r13         "runtime lookup"
 ;  V40 rat2         [V40,T26] (  3,  0.47)    long  ->  rcx         "spilling expr"
 ;  V41 rat3         [V41,T27] (  3,  0.37)    long  ->  r13         "fgMakeTemp is creating a new local variable"
-;  TEMP_01                                   byref  ->  [rbp-0x58]
 ;
 ; Lcl frame size = 72
 
@@ -68,7 +67,6 @@ G_M35688_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        lea      rbp, [rsp+0x80]
        xor      eax, eax
        mov      qword ptr [rbp-0x50], rax
-       mov      qword ptr [rbp-0x58], rax
        mov      qword ptr [rbp-0x60], rsp
        mov      qword ptr [rbp-0x40], rcx
        mov      rdi, rcx
@@ -78,7 +76,7 @@ G_M35688_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rbx]
        mov      rsi, r9
        ; byrRegs +[rsi]
-                       ;; size=54 bbWeight=1 PerfScore 14.00
+                       ;; size=50 bbWeight=1 PerfScore 13.00
 G_M35688_IG02:        ; bbWeight=1, gcVars=0000000000800000 {V06}, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, gcvars, byref, isz
        ; GC ptr vars +{V06}
        test     r14, r14
@@ -333,7 +331,7 @@ G_M35688_IG28:        ; bbWeight=0.08, gcrefRegs=5000 {r12 r14}, byrefRegs=0040
        ; gcrRegs -[rbx]
        jmp      SHORT G_M35688_IG26
                        ;; size=2 bbWeight=0.08 PerfScore 0.17
-G_M35688_IG29:        ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0040 {rsi}, byref
+G_M35688_IG29:        ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0040 {rsi}, byref, isz
        ; gcrRegs +[rbx]
        mov      r11, r13
        mov      rcx, r14
@@ -343,8 +341,8 @@ G_M35688_IG29:        ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
        ; gcr arg pop 0
        mov      rcx, 0xD1FFAB1E      ; function address
        cmp      qword ptr [rbx+0x18], rcx
-       je       G_M35688_IG37
-                       ;; size=29 bbWeight=0.02 PerfScore 0.12
+       je       SHORT G_M35688_IG37
+                       ;; size=25 bbWeight=0.02 PerfScore 0.12
 G_M35688_IG30:        ; bbWeight=0, gcrefRegs=5009 {rax rbx r12 r14}, byrefRegs=0040 {rsi}, byref
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -397,9 +395,6 @@ G_M35688_IG35:        ; bbWeight=0.02, gcrefRegs=5008 {rbx r12 r14}, byrefRegs=0
 G_M35688_IG36:        ; bbWeight=0.13, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0040 {rsi}, byref
        inc      edx
        mov      dword ptr [r14+0x14], edx
-       lea      rcx, bword ptr [r14+0x08]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0x58], rcx
        mov      rax, gword ptr [r14+0x20]
        ; gcrRegs +[rax]
        mov      edx, r15d
@@ -407,11 +402,10 @@ G_M35688_IG36:        ; bbWeight=0.13, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRe
        ; gcrRegs +[rdx]
        mov      rcx, gword ptr [rax+0x08]
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
        call     [rax+0x18]<unknown method>
        ; gcrRegs -[rcx rdx rdi]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rbp-0x58]
+       lea      rcx, bword ptr [r14+0x08]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -419,7 +413,7 @@ G_M35688_IG36:        ; bbWeight=0.13, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRe
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      G_M35688_IG29
-                       ;; size=50 bbWeight=0.13 PerfScore 2.06
+                       ;; size=42 bbWeight=0.13 PerfScore 1.81
 G_M35688_IG37:        ; bbWeight=0.02, gcrefRegs=5009 {rax rbx r12 r14}, byrefRegs=0040 {rsi}, byref
        ; gcrRegs +[rax]
        mov      r15, gword ptr [rbx+0x08]
@@ -572,7 +566,7 @@ G_M35688_IG52:        ; bbWeight=0.08, funclet epilog, nogc, extend
        ret      
                        ;; size=17 bbWeight=0.08 PerfScore 0.44
 
-; Total bytes of code 967, prolog size 54, PerfScore 317.20, instruction count 266, allocated bytes for code 967 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 951, prolog size 50, PerfScore 315.95, instruction count 263, allocated bytes for code 951 (MethodHash=6ebb7497) for method System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
 ; ============================================================
 
 Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-21 (-2.63%) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]):this (FullOpts)

@@ -8,77 +8,73 @@
 ; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T05] ( 14,1267   )     ref  ->  rbx         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T06] ( 18,1118   )     ref  ->  rsi         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T08] ( 13,1139   )     ref  ->  rsi         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T05] ( 18,1118   )     ref  ->  rbx         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T04] (  8,1328   )     ref  ->  r14         class-hnd <<unknown class>>
 ;  V03 loc1         [V03    ] (  3,  24   )  struct (16) [rsp+0x58]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;  V04 loc2         [V04    ] (  4,1296   )  struct (16) [rsp+0x48]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct (16) zero-ref    ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T07] (  9,1216   )     ref  ->  r14         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T06] (  9,1216   )     ref  ->  r14         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T09] (  5, 896   )     ref  ->  r15         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V08 OutArgs      [V08    ] (  1,   1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T32] (  3,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T28] (  3,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V13 tmp5         [V13,T20] (  3, 192   )     ref  ->  r14         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V13 tmp5         [V13,T16] (  3, 192   )     ref  ->  r14         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V14 tmp6         [V14    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V15 tmp7         [V15    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V16 tmp8         [V16,T29] (  4,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V17 tmp9         [V17,T34] (  3,  43.43)     int  ->  r15         "non-inline candidate call"
+;  V16 tmp8         [V16,T25] (  4,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T30] (  3,  43.43)     int  ->  r15         "non-inline candidate call"
 ;  V18 tmp10        [V18    ] (  2,  32   )  struct (16) [rsp+0x38]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V19 tmp11        [V19,T28] (  7,  64   )     ref  ->  r14         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V20 tmp12        [V20,T43] (  4,  20   )     int  ->  r15         "Inline stloc first use temp"
-;  V21 tmp13        [V21,T44] (  3,  18   )     ref  ->  rcx         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V22 tmp14        [V22,T45] (  3,  16   )     int  ->  rcx         "Inline return value spill temp"
-;  V23 tmp15        [V23,T36] (  3,  36.57)     int  ->  rcx         "Inlining Arg"
-;  V24 tmp16        [V24,T22] (  7, 160   )     ref  ->  rsi         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V25 tmp17        [V25,T30] (  4,  48   )     int  ->  r15         "Inline stloc first use temp"
-;  V26 tmp18        [V26,T35] (  3,  40   )     ref  ->  rcx         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T24] (  7,  64   )     ref  ->  r14         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V20 tmp12        [V20,T39] (  4,  20   )     int  ->  r15         "Inline stloc first use temp"
+;  V21 tmp13        [V21,T40] (  3,  18   )     ref  ->  rcx         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V22 tmp14        [V22,T41] (  3,  16   )     int  ->  rcx         "Inline return value spill temp"
+;  V23 tmp15        [V23,T32] (  3,  36.57)     int  ->  rcx         "Inlining Arg"
+;  V24 tmp16        [V24,T18] (  7, 160   )     ref  ->  rbx         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V25 tmp17        [V25,T26] (  4,  48   )     int  ->  r15         "Inline stloc first use temp"
+;  V26 tmp18        [V26,T31] (  3,  40   )     ref  ->  rcx         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V27 tmp19        [V27    ] (  0,   0   )  struct (16) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V28 tmp20        [V28,T18] (  3, 256   )     int  ->  rcx         "Inline return value spill temp"
-;  V29 tmp21        [V29,T12] (  3, 694.86)     int  ->  r11         "Inlining Arg"
-;  V30 tmp22        [V30,T15] (  3, 585.14)     int  ->  rcx         "Inlining Arg"
-;  V31 tmp23        [V31,T13] (  3, 628.35)     ref  ->  rcx         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V28 tmp20        [V28,T15] (  3, 256   )     int  ->  rcx         "Inline return value spill temp"
+;  V29 tmp21        [V29,T11] (  3, 694.86)     int  ->  r11         "Inlining Arg"
+;  V30 tmp22        [V30,T13] (  3, 585.14)     int  ->  rcx         "Inlining Arg"
+;  V31 tmp23        [V31,T12] (  3, 628.35)     ref  ->  rcx         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V32 tmp24        [V32,T10] (  4, 744.71)     int  ->  rdx         "Inline stloc first use temp"
-;  V33 tmp25        [V33,T17] (  7, 384   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V34 tmp26        [V34,T27] (  3,  93.09)     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V35 tmp27        [V35,T26] (  4, 122.18)     int  ->  rdx         "Inline stloc first use temp"
+;  V33 tmp25        [V33,T14] (  7, 384   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V34 tmp26        [V34,T23] (  3,  93.09)     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V35 tmp27        [V35,T22] (  4, 122.18)     int  ->  rdx         "Inline stloc first use temp"
 ;* V36 tmp28        [V36    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
 ;  V37 tmp29        [V37    ] (  2,  16   )     ref  ->  [rsp+0x58]  do-not-enreg[X] addr-exposed "field V03.Vertex (fldOffset=0x0)" P-DEP
 ;  V38 tmp30        [V38    ] (  2,  16   )     ref  ->  [rsp+0x60]  do-not-enreg[X] addr-exposed "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-DEP
 ;  V39 tmp31        [V39    ] (  4,1296   )     ref  ->  [rsp+0x48]  do-not-enreg[X] addr-exposed "field V04.Destination (fldOffset=0x0)" P-DEP
 ;  V40 tmp32        [V40    ] (  1, 512   )   ubyte  ->  [rsp+0x50]  do-not-enreg[X] addr-exposed "field V04.Flagged (fldOffset=0x8)" P-DEP
-;  V41 tmp33        [V41,T39] (  3,  32   )     ref  ->  rdx         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V42 tmp34        [V42,T40] (  3,  32   )     ref  ->  r14         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-;  V43 tmp35        [V43,T42] (  2,  24   )     ref  ->  [rsp+0x38]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
-;  V44 tmp36        [V44,T46] (  1,  16   )   ubyte  ->  [rsp+0x40]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x8)" P-DEP
+;  V41 tmp33        [V41,T35] (  3,  32   )     ref  ->  rdx         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V42 tmp34        [V42,T36] (  3,  32   )     ref  ->  r14         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V43 tmp35        [V43,T38] (  2,  24   )     ref  ->  [rsp+0x38]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
+;  V44 tmp36        [V44,T42] (  1,  16   )   ubyte  ->  [rsp+0x40]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x8)" P-DEP
 ;* V45 tmp37        [V45    ] (  0,   0   )     ref  ->  zero-ref    "field V27.Vertex (fldOffset=0x0)" P-INDEP
 ;* V46 tmp38        [V46    ] (  0,   0   )     ref  ->  zero-ref    "field V27.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;  V47 tmp39        [V47    ] (  3,  48   )  struct (16) [rsp+0x28]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V48 tmp40        [V48,T41] (  2,  32   )     ref  ->  rsi         "argument with side effect"
-;  V49 tmp41        [V49,T31] (  3,  48   )   byref  ->  r13         "BlockOp address local"
-;  V50 cse0         [V50,T48] (  2,   9   )    long  ->  rbp         hoist "CSE - moderate"
-;  V51 cse1         [V51,T08] (  3,1152   )     int  ->  rcx         "CSE - aggressive"
-;  V52 cse2         [V52,T38] (  4,  32   )     int  ->  rdx         "CSE - moderate"
-;  V53 cse3         [V53,T47] (  4,  12.88)    long  ->  rdi         hoist "CSE - moderate"
-;  V54 rat0         [V54,T50] (  3,   4.72)    long  ->  rcx         "Spilling to split statement for tree"
-;  V55 rat1         [V55,T52] (  3,   4   )    long  ->  rbp         "runtime lookup"
-;  V56 rat2         [V56,T49] (  3,   5.60)    long  ->  rdx         "spilling expr"
-;  V57 rat3         [V57,T51] (  3,   4.48)    long  ->  rbp         "fgMakeTemp is creating a new local variable"
-;  V58 rat4         [V58,T33] (  3,  44.80)    long  ->  rcx         "spilling expr"
-;  V59 rat5         [V59,T37] (  3,  35.84)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V60 rat6         [V60,T14] (  2, 512   )    long  ->  rcx         "Spilling to split statement for tree"
-;* V61 rat7         [V61,T19] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;  V62 rat8         [V62,T11] (  2, 512   )    long  ->  rcx         "spilling expr"
-;* V63 rat9         [V63,T16] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V64 rat10        [V64,T02] (  3,2416.64)    long  ->  rcx         "Spilling to split statement for tree"
-;  V65 rat11        [V65,T01] (  3,2867.20)    long  ->  rdx         "spilling expr"
-;  V66 rat12        [V66,T03] (  3,2293.76)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V67 rat13        [V67,T23] (  3, 151.04)    long  ->  rcx         "Spilling to split statement for tree"
-;  V68 rat14        [V68,T25] (  3, 128   )    long  ->  rdx         "runtime lookup"
-;  V69 rat15        [V69,T21] (  3, 179.20)    long  ->  rdx         "spilling expr"
-;  V70 rat16        [V70,T24] (  3, 143.36)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V48 tmp40        [V48,T37] (  2,  32   )     ref  ->  rbx         "argument with side effect"
+;  V49 tmp41        [V49,T27] (  3,  48   )   byref  ->  r13         "BlockOp address local"
+;  V50 cse0         [V50,T44] (  2,   9   )    long  ->  rbp         hoist "CSE - moderate"
+;  V51 cse1         [V51,T07] (  3,1152   )     int  ->  rcx         "CSE - aggressive"
+;  V52 cse2         [V52,T34] (  4,  32   )     int  ->  rdx         "CSE - moderate"
+;  V53 cse3         [V53,T43] (  4,  12.88)    long  ->  rdi         "CSE - moderate"
+;  V54 rat0         [V54,T46] (  3,   4.72)    long  ->  rcx         "Spilling to split statement for tree"
+;  V55 rat1         [V55,T48] (  3,   4   )    long  ->  rbp         "runtime lookup"
+;  V56 rat2         [V56,T45] (  3,   5.60)    long  ->  rdx         "spilling expr"
+;  V57 rat3         [V57,T47] (  3,   4.48)    long  ->  rbp         "fgMakeTemp is creating a new local variable"
+;  V58 rat4         [V58,T29] (  3,  44.80)    long  ->  rcx         "spilling expr"
+;  V59 rat5         [V59,T33] (  3,  35.84)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V60 rat6         [V60,T02] (  3,2416.64)    long  ->  rcx         "Spilling to split statement for tree"
+;  V61 rat7         [V61,T01] (  3,2867.20)    long  ->  rdx         "spilling expr"
+;  V62 rat8         [V62,T03] (  3,2293.76)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V63 rat9         [V63,T19] (  3, 151.04)    long  ->  rcx         "Spilling to split statement for tree"
+;  V64 rat10        [V64,T21] (  3, 128   )    long  ->  rdx         "runtime lookup"
+;  V65 rat11        [V65,T17] (  3, 179.20)    long  ->  rdx         "spilling expr"
+;  V66 rat12        [V66,T20] (  3, 143.36)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 112
 
@@ -98,13 +94,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        vmovdqa  xmmword ptr [rsp+0x50], xmm4
        mov      qword ptr [rsp+0x60], rax
        mov      qword ptr [rsp+0x68], rcx
-       mov      rbx, rcx
-       ; gcrRegs +[rbx]
-       mov      rsi, rdx
+       mov      rsi, rcx
        ; gcrRegs +[rsi]
+       mov      rbx, rdx
+       ; gcrRegs +[rbx]
                        ;; size=53 bbWeight=1 PerfScore 15.33
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       mov      rdi, qword ptr [rbx]
+       mov      rdi, qword ptr [rsi]
        mov      rcx, rdi
        mov      rdx, qword ptr [rcx+0x38]
        mov      rdx, qword ptr [rdx]
@@ -126,12 +122,12 @@ G_M1799_IG05:        ; bbWeight=0.36, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
        mov      rbp, rax
                        ;; size=18 bbWeight=0.36 PerfScore 0.54
 G_M1799_IG06:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       mov      edx, dword ptr [rbx+0x28]
-       mov      dword ptr [rsi+0x18], edx
-       mov      dword ptr [rsi+0x1C], edx
+       mov      edx, dword ptr [rsi+0x28]
+       mov      dword ptr [rbx+0x18], edx
+       mov      dword ptr [rbx+0x1C], edx
        inc      edx
-       mov      dword ptr [rbx+0x28], edx
-       mov      r14, gword ptr [rbx+0x08]
+       mov      dword ptr [rsi+0x28], edx
+       mov      r14, gword ptr [rsi+0x08]
        ; gcrRegs +[r14]
        mov      r15d, dword ptr [r14+0x10]
        mov      rcx, gword ptr [r14+0x08]
@@ -141,7 +137,7 @@ G_M1799_IG06:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
                        ;; size=32 bbWeight=8 PerfScore 122.00
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        movsxd   rdx, r15d
-       mov      r8, rsi
+       mov      r8, rbx
        ; gcrRegs +[r8]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[rcx r8]
@@ -154,16 +150,16 @@ G_M1799_IG07:        ; bbWeight=2, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0
 G_M1799_IG08:        ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
        mov      rcx, r14
        ; gcrRegs +[rcx]
-       mov      rdx, rsi
+       mov      rdx, rbx
        ; gcrRegs +[rdx]
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx r14]
        ; gcr arg pop 0
                        ;; size=12 bbWeight=2 PerfScore 7.00
 G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       mov      byte  ptr [rsi+0x22], 1
+       mov      byte  ptr [rbx+0x22], 1
        mov      r11, rbp
-       mov      rcx, gword ptr [rsi+0x10]
+       mov      rcx, gword ptr [rbx+0x10]
        ; gcrRegs +[rcx]
        call     [r11]
        ; gcrRegs -[rcx] +[rax]
@@ -173,17 +169,17 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        test     r14, r14
        jne      SHORT G_M1799_IG17
                        ;; size=22 bbWeight=8 PerfScore 62.00
-G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax rsi r14]
-       mov      rcx, gword ptr [rbx+0x20]
+G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax rbx r14]
+       mov      rcx, gword ptr [rsi+0x20]
        ; gcrRegs +[rcx]
        lea      rdx, [rsp+0x58]
        cmp      dword ptr [rcx], ecx
        call     [System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
-       mov      rsi, gword ptr [rsp+0x58]
-       ; gcrRegs +[rsi]
+       mov      rbx, gword ptr [rsp+0x58]
+       ; gcrRegs +[rbx]
        mov      r14, gword ptr [rsp+0x60]
        ; gcrRegs +[r14]
        mov      rcx, qword ptr [rdi+0x38]
@@ -197,7 +193,7 @@ G_M1799_IG11:        ; bbWeight=6.40, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00
        je       SHORT G_M1799_IG14
                        ;; size=9 bbWeight=6.40 PerfScore 20.80
 G_M1799_IG12:        ; bbWeight=8, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
-       mov      r15d, dword ptr [rsi+0x1C]
+       mov      r15d, dword ptr [rbx+0x1C]
        lea      rdx, [rsp+0x38]
        mov      rcx, r14
        ; gcrRegs +[rcx]
@@ -226,9 +222,9 @@ G_M1799_IG15:        ; bbWeight=5.71, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00
        mov      ecx, r15d
                        ;; size=3 bbWeight=5.71 PerfScore 1.43
 G_M1799_IG16:        ; bbWeight=8, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
-       mov      dword ptr [rsi+0x1C], ecx
+       mov      dword ptr [rbx+0x1C], ecx
                        ;; size=3 bbWeight=8 PerfScore 8.00
-G_M1799_IG17:        ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
+G_M1799_IG17:        ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        mov      rcx, r14
        ; gcrRegs +[rcx]
        mov      r11, 0xD1FFAB1E      ; function address
@@ -236,37 +232,30 @@ G_M1799_IG17:        ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
        test     eax, eax
-       je       G_M1799_IG30
-                       ;; size=24 bbWeight=512 PerfScore 2432.00
-G_M1799_IG18:        ; bbWeight=128, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, qword ptr [rbx]
-       mov      rcx, qword ptr [rcx+0x38]
-       mov      rcx, qword ptr [rcx]
-       cmp      qword ptr [rcx+0x08], 48
-       jle      SHORT G_M1799_IG19
-                       ;; size=17 bbWeight=128 PerfScore 1280.00
-G_M1799_IG19:        ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, qword ptr [rbx]
+       je       SHORT G_M1799_IG29
+                       ;; size=20 bbWeight=512 PerfScore 2432.00
+G_M1799_IG18:        ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
...

+0 (0.00%) : 476004.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rsp+0x28]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  r12        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rsp+0x20]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  rbp         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  rbp         single-def
 ;  V16 OutArgs      [V16    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  r15        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  r15        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rdx         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r15        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rdx         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r15        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rsp+0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rax         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rdx         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rdx         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rdx         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rdx         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rdx         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rdx         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r12         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rdx         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rdx         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r12         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rdx         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 

libraries.crossgen2.windows.x64.checked.mch

-19 (-5.62%) : 14105.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -12,36 +12,35 @@
 ;  V01 arg0         [V01,T04] (  5,  7   )     ref  ->  rsi         class-hnd single-def <System.__Canon[]>
 ;  V02 arg1         [V02,T03] ( 10,  8.04)     ref  ->  rbx         class-hnd single-def <System.__Canon[]>
 ;  V03 loc0         [V03,T00] ( 15, 21.04)     int  ->  rbp        
-;  V04 loc1         [V04    ] ( 10, 14   )     ref  ->  [rsp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+;  V04 loc1         [V04    ] ( 10, 14   )     ref  ->  [rsp+0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T01] (  6, 20   )   byref  ->  r15         "impAppendStmt"
 ;  V07 tmp2         [V07,T05] (  6,  8   )   byref  ->  r13        
 ;  V08 tmp3         [V08,T02] (  6, 12   )    long  ->  rax         "VirtualCall with runtime lookup"
-;  V09 tmp4         [V09,T09] (  4,  4   )     int  ->  r12        
+;  V09 tmp4         [V09,T09] (  2,  3.96)     int  ->  rcx        
 ;  V10 tmp5         [V10,T06] (  4,  8   )     ref  ->  rcx         "argument with side effect"
 ;  V11 cse0         [V11,T08] (  5,  7   )     int  ->  r14         "CSE - aggressive"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 48
 
 G_M22994_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rdi
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 56
+       sub      rsp, 48
        xor      eax, eax
-       mov      qword ptr [rsp+0x28], rax
-       mov      qword ptr [rsp+0x30], rcx
+       mov      qword ptr [rsp+0x20], rax
+       mov      qword ptr [rsp+0x28], rcx
        mov      rdi, rcx
        mov      rsi, rdx
        ; gcrRegs +[rsi]
        mov      rbx, r8
        ; gcrRegs +[rbx]
-                       ;; size=37 bbWeight=1 PerfScore 11.25
+                       ;; size=35 bbWeight=1 PerfScore 10.25
 G_M22994_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        xor      ebp, ebp
        mov      r14d, dword ptr [rsi+0x08]
@@ -58,10 +57,10 @@ G_M22994_IG03:        ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; byrRegs +[r15]
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
+       mov      gword ptr [rsp+0x20], rcx
        mov      r13, r15
        ; byrRegs +[r13]
-       cmp      gword ptr [rsp+0x28], 0
+       cmp      gword ptr [rsp+0x20], 0
        jne      SHORT G_M22994_IG06
                        ;; size=25 bbWeight=3.96 PerfScore 22.77
 G_M22994_IG04:        ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
@@ -69,10 +68,10 @@ G_M22994_IG04:        ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000
        ; byrRegs -[r13]
        mov      rcx, gword ptr [r15]
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
-       lea      r13, bword ptr [rsp+0x28]
+       mov      gword ptr [rsp+0x20], rcx
+       lea      r13, bword ptr [rsp+0x20]
        ; byrRegs +[r13]
-       cmp      gword ptr [rsp+0x28], 0
+       cmp      gword ptr [rsp+0x20], 0
        jne      SHORT G_M22994_IG06
        mov      ecx, ebp
        ; gcrRegs -[rcx]
@@ -100,12 +99,12 @@ G_M22994_IG06:        ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=2000
        ; gcrRegs -[rcx rdx]
        ; byrRegs -[r13]
        ; gcr arg pop 0
-       xor      r12d, r12d
+       xor      ecx, ecx
        test     eax, eax
-       sete     r12b
-       test     r12d, r12d
+       sete     cl
+       test     ecx, ecx
        jne      G_M22994_IG16
-                       ;; size=43 bbWeight=1.98 PerfScore 26.73
+                       ;; size=40 bbWeight=1.98 PerfScore 26.73
 G_M22994_IG07:        ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        inc      ebp
        cmp      r14d, ebp
@@ -122,10 +121,10 @@ G_M22994_IG09:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; byrRegs +[r15]
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
+       mov      gword ptr [rsp+0x20], rcx
        mov      r13, r15
        ; byrRegs +[r13]
-       cmp      gword ptr [rsp+0x28], 0
+       cmp      gword ptr [rsp+0x20], 0
        jne      SHORT G_M22994_IG12
                        ;; size=25 bbWeight=0.04 PerfScore 0.23
 G_M22994_IG10:        ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
@@ -133,10 +132,10 @@ G_M22994_IG10:        ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000
        ; byrRegs -[r13]
        mov      rcx, gword ptr [r15]
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
-       lea      r13, bword ptr [rsp+0x28]
+       mov      gword ptr [rsp+0x20], rcx
+       lea      r13, bword ptr [rsp+0x20]
        ; byrRegs +[r13]
-       cmp      gword ptr [rsp+0x28], 0
+       cmp      gword ptr [rsp+0x20], 0
        jne      SHORT G_M22994_IG12
        cmp      ebp, dword ptr [rbx+0x08]
        jae      SHORT G_M22994_IG18
@@ -168,12 +167,9 @@ G_M22994_IG12:        ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=2000
        ; gcrRegs -[rcx rdx]
        ; byrRegs -[r13]
        ; gcr arg pop 0
-       xor      r12d, r12d
        test     eax, eax
-       sete     r12b
-       test     r12d, r12d
-       jne      SHORT G_M22994_IG16
-                       ;; size=44 bbWeight=0.02 PerfScore 0.35
+       je       SHORT G_M22994_IG16
+                       ;; size=34 bbWeight=0.02 PerfScore 0.32
 G_M22994_IG13:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        inc      ebp
        cmp      r14d, ebp
@@ -184,39 +180,37 @@ G_M22994_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        mov      eax, 1
                        ;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M22994_IG15:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 56
+       add      rsp, 48
        pop      rbx
        pop      rbp
        pop      rsi
        pop      rdi
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        ret      
-                       ;; size=17 bbWeight=0.50 PerfScore 2.62
+                       ;; size=15 bbWeight=0.50 PerfScore 2.38
 G_M22994_IG16:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        xor      eax, eax
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M22994_IG17:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 56
+       add      rsp, 48
        pop      rbx
        pop      rbp
        pop      rsi
        pop      rdi
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        ret      
-                       ;; size=17 bbWeight=0.50 PerfScore 2.62
+                       ;; size=15 bbWeight=0.50 PerfScore 2.38
 G_M22994_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        call     [CORINFO_HELP_RNGCHKFAIL]
        ; gcr arg pop 0
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 338, prolog size 37, PerfScore 106.17, instruction count 114, allocated bytes for code 338 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 319, prolog size 35, PerfScore 104.64, instruction count 108, allocated bytes for code 319 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -224,17 +218,16 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x10
-  CountOfUnwindCodes: 9
+  SizeOfProlog      : 0x0E
+  CountOfUnwindCodes: 8
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 6 * 8 + 8 = 56 = 0x38
-    CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbp (5)
-    CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
-    CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r12 (12)
+    CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
+    CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbp (5)
+    CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
+    CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
     CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r13 (13)
     CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r14 (14)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r15 (15)

-25 (-2.23%) : 97212.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -12,7 +12,7 @@
 ;  V00 arg0         [V00,T18] (  5,  5   )     ref  ->  rcx         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T09] (  6, 11   )     ref  ->  rbx         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T12] (  4,  6   )     ref  ->  rsi         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [rsp+0x48]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [rsp+0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
 ;  V04 loc1         [V04,T10] (  7, 10.04)     ref  ->  rbp         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T19] (  5,  7   )     int  ->  r14         single-def
 ;  V06 loc3         [V06,T02] ( 16, 25.04)     int  ->  r15        
@@ -20,13 +20,13 @@
 ;  V08 loc5         [V08,T07] ( 10, 16   )     ref  ->  r13         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
 ;  V10 loc7         [V10,T11] (  8,  8   )     ref  ->  r12         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [rsp+0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [rsp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T21] (  3,  6   )     int  ->  rsi         single-def
 ;  V13 loc10        [V13,T03] (  7, 21   )     int  ->  rdi        
 ;  V14 loc11        [V14,T01] (  6, 72   )     ref  ->  r14         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
 ;  V15 loc12        [V15,T00] (  6, 86   )     int  ->  rax        
 ;  V16 loc13        [V16,T22] (  2,  4   )     ref  ->  r14         class-hnd <<unknown class>>
-;  V17 loc14        [V17    ] (  4,  8   )  struct ( 8) [rsp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
+;  V17 loc14        [V17    ] (  4,  8   )  struct ( 8) [rsp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]>
 ;  V18 loc15        [V18,T23] (  2,  4   )     ref  ->  r14         class-hnd <<unknown class>>
 ;  V19 OutArgs      [V19    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V20 tmp1         [V20,T04] ( 10, 20   )     ref  ->  r12         class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
@@ -35,7 +35,7 @@
 ;* V23 tmp4         [V23    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;  V24 tmp5         [V24,T13] (  4,  8   )     ref  ->  rax         class-hnd "Inlining Arg" <System.String>
 ;* V25 tmp6         [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.AliasSymbol>
-;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [rsp+0x28]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [rsp+0x20]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
 ;  V27 tmp8         [V27,T24] (  2,  4   )     ref  ->  rdx         "field V22.array (fldOffset=0x0)" P-INDEP
 ;  V28 tmp9         [V28,T25] (  2,  4   )     ref  ->  rdx         "field V23.array (fldOffset=0x0)" P-INDEP
 ;  V29 tmp10        [V29,T26] (  2,  4   )     ref  ->  rcx         single-def "argument with side effect"
@@ -45,9 +45,8 @@
 ;  V33 tmp14        [V33,T16] (  2,  8   )     ref  ->   r8         "argument with side effect"
 ;  V34 tmp15        [V34,T17] (  2,  8   )     ref  ->   r8         "argument with side effect"
 ;  V35 cse0         [V35,T20] (  5,  7   )    long  ->  rdi         "CSE - moderate"
-;  TEMP_01                                   byref  ->  [rsp+0x60]
 ;
-; Lcl frame size = 104
+; Lcl frame size = 88
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
@@ -58,19 +57,18 @@ G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 104
-       xor      eax, eax
-       mov      qword ptr [rsp+0x28], rax
+       sub      rsp, 88
        xorps    xmm4, xmm4
+       movaps   xmmword ptr [rsp+0x20], xmm4
        movaps   xmmword ptr [rsp+0x30], xmm4
        movaps   xmmword ptr [rsp+0x40], xmm4
-       movaps   xmmword ptr [rsp+0x50], xmm4
-       mov      qword ptr [rsp+0x60], rax
+       xor      eax, eax
+       mov      qword ptr [rsp+0x50], rax
        mov      rbx, rdx
        ; gcrRegs +[rbx]
        mov      rsi, r8
        ; gcrRegs +[rsi]
-                       ;; size=52 bbWeight=1 PerfScore 17.33
+                       ;; size=47 bbWeight=1 PerfScore 16.33
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rcx]
        cmp      byte  ptr [rcx], cl
@@ -87,12 +85,12 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
        ; gcr arg pop 0
        mov      rcx, rax
        ; gcrRegs +[rcx]
-       lea      rdx, [rsp+0x48]
+       lea      rdx, [rsp+0x40]
        cmp      dword ptr [rcx], ecx
        call     [Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this]
        ; gcrRegs -[rax rcx]
        ; gcr arg pop 0
-       lea      rcx, [rsp+0x48]
+       lea      rcx, [rsp+0x40]
        mov      rdi, qword ptr [(reloc)]      ; Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]
        mov      rdx, rdi
        call     [<unknown method>]
@@ -103,7 +101,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
        ; gcr arg pop 0
        mov      rbp, rax
        ; gcrRegs +[rbp]
-       lea      rcx, [rsp+0x48]
+       lea      rcx, [rsp+0x40]
        mov      rdx, rdi
        call     [<unknown method>]
        ; gcrRegs -[rax]
@@ -116,7 +114,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
        jle      G_M1087_IG08
                        ;; size=120 bbWeight=1 PerfScore 37.25
 G_M1087_IG03:        ; bbWeight=3.96, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
-       lea      rcx, [rsp+0x48]
+       lea      rcx, [rsp+0x40]
        mov      rdx, rdi
        mov      r8d, r15d
        call     [<unknown method>]
@@ -149,7 +147,7 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        ; gcr arg pop 0
        mov      r12, rax
        ; gcrRegs +[r12]
-       lea      rdx, [rsp+0x30]
+       lea      rdx, [rsp+0x28]
        mov      rcx, r12
        ; gcrRegs +[rcx]
        cmp      dword ptr [rcx], ecx
@@ -161,7 +159,7 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        ; gcr arg pop 0
        mov      r13, rax
        ; gcrRegs +[r13]
-       lea      rcx, [rsp+0x30]
+       lea      rcx, [rsp+0x28]
        call     [<unknown method>]
        ; gcr arg pop 0
        mov      dword ptr [r13+0x38], r15d
@@ -265,7 +263,7 @@ G_M1087_IG07:        ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
                        ;; size=5 bbWeight=1 PerfScore 2.00
 G_M1087_IG08:        ; bbWeight=0.04, gcrefRegs=0068 {rbx rbp rsi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rsi]
-       lea      rcx, [rsp+0x48]
+       lea      rcx, [rsp+0x40]
        mov      rdx, rdi
        mov      r8d, r15d
        call     [<unknown method>]
@@ -298,7 +296,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        ; gcr arg pop 0
        mov      r12, rax
        ; gcrRegs +[r12]
-       lea      rdx, [rsp+0x30]
+       lea      rdx, [rsp+0x28]
        mov      rcx, r12
        ; gcrRegs +[rcx]
        cmp      dword ptr [rcx], ecx
@@ -310,7 +308,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        ; gcr arg pop 0
        mov      r13, rax
        ; gcrRegs +[r13]
-       lea      rcx, [rsp+0x30]
+       lea      rcx, [rsp+0x28]
        call     [<unknown method>]
        ; gcr arg pop 0
        mov      dword ptr [r13+0x38], r15d
@@ -321,12 +319,8 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        call     [CORINFO_HELP_ASSIGN_REF]
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
-       lea      rcx, bword ptr [r13+0x30]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rsp+0x60], rcx
        mov      rcx, r12
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
        call     [<unknown method>]
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
@@ -339,7 +333,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        call     [r11]<unknown method>
        ; gcrRegs -[rcx rdx r12]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rsp+0x60]
+       lea      rcx, bword ptr [r13+0x30]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -347,7 +341,7 @@ G_M1087_IG09:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      SHORT G_M1087_IG11
-                       ;; size=117 bbWeight=0.02 PerfScore 0.80
+                       ;; size=107 bbWeight=0.02 PerfScore 0.76
 G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[rax]
@@ -363,12 +357,8 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        call     [CORINFO_HELP_ASSIGN_REF]
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
-       lea      rcx, bword ptr [r12+0x30]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rsp+0x60], rcx
        mov      rcx, r13
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
        call     [<unknown method>]
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
@@ -381,7 +371,7 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        call     [r11]<unknown method>
        ; gcrRegs -[rcx rdx r13]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rsp+0x60]
+       lea      rcx, bword ptr [r12+0x30]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -390,7 +380,7 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=2068 {rbx rbp rsi r13}, byrefReg
        ; byrRegs -[rcx]
        mov      r13, r12
        ; gcrRegs +[r13]
-                       ;; size=89 bbWeight=0.02 PerfScore 0.56
+                       ;; size=79 bbWeight=0.02 PerfScore 0.52
 G_M1087_IG11:        ; bbWeight=0.04, gcrefRegs=2068 {rbx rbp rsi r13}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r12]
        cmp      r15d, dword ptr [rbp+0x08]
@@ -494,8 +484,8 @@ G_M1087_IG18:        ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000
        call     [<unknown method>]
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
-       mov      gword ptr [rsp+0x28], rax
-       lea      rcx, [rsp+0x28]
+       mov      gword ptr [rsp+0x20], rax
+       lea      rcx, [rsp+0x20]
        mov      rdx, qword ptr [(reloc)]      ; <unknown method>
        call     [<unknown method>]
        ; gcr arg pop 0
@@ -534,8 +524,8 @@ G_M1087_IG19:        ; bbWeight=2, gcrefRegs=4028 {rbx rbp r14}, byrefRegs=0000
        call     [<unknown method>]
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
-       mov      gword ptr [rsp+0x28], rax
-       lea      rcx, [rsp+0x28]
+       mov      gword ptr [rsp+0x20], rax
+       lea      rcx, [rsp+0x20]
        mov      rdx, qword ptr [(reloc)]      ; <unknown method>
        call     [<unknown method>]
        ; gcr arg pop 0
@@ -565,7 +555,7 @@ G_M1087_IG20:        ; bbWeight=4, gcrefRegs=0028 {rbx rbp}, byrefRegs=0000 {},
                        ;; size=10 bbWeight=4 PerfScore 6.00
 G_M1087_IG21:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs -[rbx rbp]
-       add      rsp, 104
+       add      rsp, 88
        pop      rbx
        pop      rbp
        pop      rsi
@@ -582,7 +572,7 @@ G_M1087_IG22:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1119, prolog size 46, PerfScore 877.82, instruction count 284, allocated bytes for code 1119 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
+; Total bytes of code 1094, prolog size 41, PerfScore 876.74, instruction count 279, allocated bytes for code 1094 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
 ; ============================================================
 
 Unwind Info:
...

-23 (-1.53%) : 134353.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

@@ -55,9 +55,8 @@
 ;  V43 cse3         [V43,T23] (  3,  7.92)     ref  ->  rax         "CSE - moderate"
 ;  V44 cse4         [V44,T28] (  4,  3   )     ref  ->  rcx         "CSE - moderate"
 ;  V45 cse5         [V45,T25] (  6,  6   )     int  ->  r14         "CSE - moderate"
-;  TEMP_01                                   byref  ->  [rbp-0xA8]
 ;
-; Lcl frame size = 184
+; Lcl frame size = 168
 
 G_M44608_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
@@ -68,15 +67,13 @@ G_M44608_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 184
-       lea      rbp, [rsp+0xF0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0xA8], rax
+       sub      rsp, 168
+       lea      rbp, [rsp+0xE0]
        mov      rbx, rcx
        ; gcrRegs +[rbx]
        mov      rsi, rdx
        ; gcrRegs +[rsi]
-                       ;; size=42 bbWeight=1 PerfScore 10.50
+                       ;; size=33 bbWeight=1 PerfScore 9.25
 G_M44608_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[rax]
@@ -101,7 +98,7 @@ G_M44608_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M44608_IG04:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -483,22 +480,15 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000000080000000 {V42}, gcrefRegs=
        ; byrRegs -[rcx]
        mov      rax, gword ptr [rbp-0x48]
        ; gcrRegs +[rax]
-       lea      rcx, bword ptr [rax+0x08]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0xA8], rcx
-       mov      gword ptr [rbp-0x48], rax
-       mov      r11, gword ptr [rax+0x10]
-       ; gcrRegs +[r11]
-       mov      r11, gword ptr [r11+0x10]
-       mov      r11, gword ptr [r11+0x10]
-       mov      gword ptr [rbp-0x88], r11
-       ; GC ptr vars +{V39}
-       mov      r11, gword ptr [rbp-0xA0]
-       mov      rcx, gword ptr [r11+0x50]
+       mov      rcx, gword ptr [rax+0x10]
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
+       mov      rcx, gword ptr [rcx+0x10]
+       mov      rcx, gword ptr [rcx+0x10]
+       mov      gword ptr [rbp-0x88], rcx
+       ; GC ptr vars +{V39}
+       mov      rcx, gword ptr [rbp-0xA0]
+       mov      rcx, gword ptr [rcx+0x50]
        lea      r11, [(reloc)]
-       ; gcrRegs -[r11]
        cmp      dword ptr [rcx], ecx
        ; GC ptr vars -{V42}
        call     [r11]<unknown method>
@@ -512,12 +502,14 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000000080000000 {V42}, gcrefRegs=
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rbp-0xA8]
+       mov      r8, gword ptr [rbp-0x48]
+       ; gcrRegs +[r8]
+       lea      rcx, bword ptr [r8+0x08]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
        call     [CORINFO_HELP_ASSIGN_REF]
-       ; gcrRegs -[rax rdx]
+       ; gcrRegs -[rax rdx r8]
        ; byrRegs -[rcx]
        mov      rax, gword ptr [rbp-0x48]
        ; gcrRegs +[rax]
@@ -551,7 +543,7 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000000080000000 {V42}, gcrefRegs=
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
        jmp      SHORT G_M44608_IG20
-                       ;; size=185 bbWeight=0.02 PerfScore 1.24
+                       ;; size=171 bbWeight=0.02 PerfScore 1.20
 G_M44608_IG18:        ; bbWeight=0.02, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref, isz
        mov      rax, gword ptr [r12+0x08]
        ; gcrRegs +[rax]
@@ -687,7 +679,7 @@ G_M44608_IG21:        ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0
        ; gcrRegs +[rax]
                        ;; size=123 bbWeight=0.50 PerfScore 23.38
 G_M44608_IG22:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -799,7 +791,7 @@ G_M44608_IG28:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
        ; gcrRegs +[rax]
                        ;; size=13 bbWeight=0.50 PerfScore 2.62
 G_M44608_IG29:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -834,7 +826,7 @@ G_M44608_IG31:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        int3     
                        ;; size=27 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1507, prolog size 42, PerfScore 615.07, instruction count 364, allocated bytes for code 1507 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1484, prolog size 33, PerfScore 613.78, instruction count 360, allocated bytes for code 1484 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -848,7 +840,7 @@ Unwind Info:
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
     CodeOffset: 0x13 UnwindOp: UWOP_ALLOC_LARGE (1)     OpInfo: 0 - Scaled small  
-      Size: 23 * 8 = 184 = 0x000B8
+      Size: 21 * 8 = 168 = 0x000A8
     CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)

-8 (-0.39%) : 196186.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -35,13 +35,13 @@
 ;  V23 tmp2         [V23,T44] (  2,  0   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V24 tmp3         [V24,T38] (  3,  2   )     int  ->  r12        
 ;  V25 tmp4         [V25,T19] (  4, 16   )     int  ->  r13         "impSpillLclRefs"
-;  V26 tmp5         [V26,T28] (  2,  8   )     ref  ->  rdx         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V26 tmp5         [V26,T27] (  2,  8   )     ref  ->  rdx         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V27 tmp6         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp7         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V29 tmp8         [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V30 tmp9         [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <<unknown class>>
 ;  V31 tmp10        [V31,T43] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V32 tmp11        [V32,T24] (  2,  0.16)   ubyte  ->  rcx         "Inline return value spill temp"
+;* V32 tmp11        [V32,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V33 tmp12        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V34 tmp13        [V34,T11] (  6, 24   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V35 tmp14        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -56,17 +56,17 @@
 ;  V44 tmp23        [V44,T05] (  4, 32   )     ref  ->  rax         "argument with side effect"
 ;  V45 tmp24        [V45,T06] (  4, 32   )     ref  ->  [rbp-0x78]  "argument with side effect"
 ;  V46 tmp25        [V46,T07] (  4, 32   )     ref  ->  rax         "argument with side effect"
-;  V47 tmp26        [V47,T29] (  2,  8   )     ref  ->  rcx         "argument with side effect"
-;  V48 tmp27        [V48,T30] (  2,  8   )     ref  ->  rcx         "argument with side effect"
-;  V49 tmp28        [V49,T31] (  2,  8   )     ref  ->  rcx         "argument with side effect"
-;  V50 tmp29        [V50,T32] (  2,  8   )     ref  ->  rcx         "argument with side effect"
-;  V51 tmp30        [V51,T33] (  2,  8   )     ref  ->  [rbp-0x80]  spill-single-def "argument with side effect"
-;  V52 tmp31        [V52,T34] (  2,  8   )     ref  ->  rdx         "argument with side effect"
+;  V47 tmp26        [V47,T28] (  2,  8   )     ref  ->  rcx         "argument with side effect"
+;  V48 tmp27        [V48,T29] (  2,  8   )     ref  ->  rcx         "argument with side effect"
+;  V49 tmp28        [V49,T30] (  2,  8   )     ref  ->  rcx         "argument with side effect"
+;  V50 tmp29        [V50,T31] (  2,  8   )     ref  ->  rcx         "argument with side effect"
+;  V51 tmp30        [V51,T32] (  2,  8   )     ref  ->  [rbp-0x80]  spill-single-def "argument with side effect"
+;  V52 tmp31        [V52,T33] (  2,  8   )     ref  ->  rdx         "argument with side effect"
 ;  V53 tmp32        [V53,T17] (  4, 16   )     ref  ->  [rbp-0x88]  "argument with side effect"
 ;  V54 tmp33        [V54,T18] (  4, 16   )     ref  ->  rax         "argument with side effect"
-;  V55 tmp34        [V55,T25] (  4,  8   )     ref  ->  [rbp-0x90]  "argument with side effect"
-;  V56 tmp35        [V56,T26] (  4,  8   )     ref  ->  rax         "argument with side effect"
-;  V57 tmp36        [V57,T27] (  4,  8   )     ref  ->  rcx         "argument with side effect"
+;  V55 tmp34        [V55,T24] (  4,  8   )     ref  ->  [rbp-0x90]  "argument with side effect"
+;  V56 tmp35        [V56,T25] (  4,  8   )     ref  ->  rax         "argument with side effect"
+;  V57 tmp36        [V57,T26] (  4,  8   )     ref  ->  rcx         "argument with side effect"
 ;  V58 cse0         [V58,T21] ( 10, 13.54)     int  ->  [rbp-0x44]  spill-single-def "CSE - moderate"
 ;  V59 cse1         [V59,T10] (  8, 28   )    long  ->  [rbp-0x50]  multi-def "CSE - aggressive"
 ;  V60 cse2         [V60,T00] (  6, 71.28)    long  ->  [rbp-0x58]  spill-single-def "CSE - aggressive"
@@ -399,12 +399,9 @@ G_M58711_IG21:        ; bbWeight=0.08, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
        mov      rax, qword ptr [rbp-0x50]
        ; gcrRegs -[rax]
        cmp      rcx, gword ptr [rsi+rax]
-       sete     cl
-       ; gcrRegs -[rcx]
-       movzx    rcx, cl
-       test     ecx, ecx
-       je       SHORT G_M58711_IG25
+       jne      SHORT G_M58711_IG25
        mov      ecx, r15d
+       ; gcrRegs -[rcx]
        mov      rcx, gword ptr [rbx+8*rcx+0x10]
        ; gcrRegs +[rcx]
        lea      r11, [(reloc)]
@@ -414,11 +411,11 @@ G_M58711_IG21:        ; bbWeight=0.08, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
        ; gcr arg pop 0
        mov      gword ptr [rbp-0x78], rax
        ; GC ptr vars +{V45}
-                       ;; size=178 bbWeight=0.08 PerfScore 5.04
-G_M58711_IG22:        ; bbWeight=0.08, isz, extend
        mov      rcx, gword ptr [rbp-0x70]
        ; gcrRegs +[rcx]
        lea      r11, [(reloc)]
+                       ;; size=181 bbWeight=0.08 PerfScore 5.04
+G_M58711_IG22:        ; bbWeight=0.08, isz, extend
        ; GC ptr vars -{V19}
        call     [r11]<unknown method>
        ; gcrRegs -[rcx]
@@ -434,7 +431,7 @@ G_M58711_IG22:        ; bbWeight=0.08, isz, extend
        test     eax, eax
        jne      SHORT G_M58711_IG24
        jmp      SHORT G_M58711_IG25
-                       ;; size=33 bbWeight=0.08 PerfScore 0.96
+                       ;; size=22 bbWeight=0.08 PerfScore 0.84
 G_M58711_IG23:        ; bbWeight=0.08, gcVars=0000000000004008 {V18 V19}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V03 V19}
        mov      edx, r15d
@@ -1033,7 +1030,7 @@ G_M58711_IG64:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        int3     
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2043, prolog size 37, PerfScore 1611.69, instruction count 539, allocated bytes for code 2043 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2035, prolog size 37, PerfScore 1611.57, instruction count 536, allocated bytes for code 2035 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:

-8 (-0.39%) : 171569.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)

@@ -34,7 +34,7 @@
 ;  V22 tmp2         [V22,T44] (  2,  0   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V23 tmp3         [V23,T38] (  3,  2   )     int  ->  r12        
 ;  V24 tmp4         [V24,T19] (  4, 16   )     int  ->  r13         "impSpillLclRefs"
-;  V25 tmp5         [V25,T28] (  2,  8   )     ref  ->  rdx         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
+;  V25 tmp5         [V25,T27] (  2,  8   )     ref  ->  rdx         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.PropertyInfo>
 ;* V26 tmp6         [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V27 tmp7         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;* V28 tmp8         [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
@@ -42,7 +42,7 @@
 ;  V30 tmp10        [V30,T42] (  3,  0   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V31 tmp11        [V31,T45] (  2,  0   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;  V32 tmp12        [V32,T43] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V33 tmp13        [V33,T24] (  2,  0.16)   ubyte  ->  rcx         "Inline return value spill temp"
+;* V33 tmp13        [V33,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V34 tmp14        [V34    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V35 tmp15        [V35,T11] (  6, 24   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V36 tmp16        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -57,17 +57,17 @@
 ;  V45 tmp25        [V45,T05] (  4, 32   )     ref  ->  rax         "argument with side effect"
 ;  V46 tmp26        [V46,T06] (  4, 32   )     ref  ->  [rbp-0x78]  "argument with side effect"
 ;  V47 tmp27        [V47,T07] (  4, 32   )     ref  ->  rax         "argument with side effect"
-;  V48 tmp28        [V48,T29] (  2,  8   )     ref  ->  rcx         "argument with side effect"
-;  V49 tmp29        [V49,T30] (  2,  8   )     ref  ->  rcx         "argument with side effect"
-;  V50 tmp30        [V50,T31] (  2,  8   )     ref  ->  rcx         "argument with side effect"
-;  V51 tmp31        [V51,T32] (  2,  8   )     ref  ->  rcx         "argument with side effect"
-;  V52 tmp32        [V52,T33] (  2,  8   )     ref  ->  [rbp-0x80]  spill-single-def "argument with side effect"
-;  V53 tmp33        [V53,T34] (  2,  8   )     ref  ->  rdx         "argument with side effect"
+;  V48 tmp28        [V48,T28] (  2,  8   )     ref  ->  rcx         "argument with side effect"
+;  V49 tmp29        [V49,T29] (  2,  8   )     ref  ->  rcx         "argument with side effect"
+;  V50 tmp30        [V50,T30] (  2,  8   )     ref  ->  rcx         "argument with side effect"
+;  V51 tmp31        [V51,T31] (  2,  8   )     ref  ->  rcx         "argument with side effect"
+;  V52 tmp32        [V52,T32] (  2,  8   )     ref  ->  [rbp-0x80]  spill-single-def "argument with side effect"
+;  V53 tmp33        [V53,T33] (  2,  8   )     ref  ->  rdx         "argument with side effect"
 ;  V54 tmp34        [V54,T17] (  4, 16   )     ref  ->  [rbp-0x88]  "argument with side effect"
 ;  V55 tmp35        [V55,T18] (  4, 16   )     ref  ->  rax         "argument with side effect"
-;  V56 tmp36        [V56,T25] (  4,  8   )     ref  ->  [rbp-0x90]  "argument with side effect"
-;  V57 tmp37        [V57,T26] (  4,  8   )     ref  ->  rax         "argument with side effect"
-;  V58 tmp38        [V58,T27] (  4,  8   )     ref  ->  rcx         "argument with side effect"
+;  V56 tmp36        [V56,T24] (  4,  8   )     ref  ->  [rbp-0x90]  "argument with side effect"
+;  V57 tmp37        [V57,T25] (  4,  8   )     ref  ->  rax         "argument with side effect"
+;  V58 tmp38        [V58,T26] (  4,  8   )     ref  ->  rcx         "argument with side effect"
 ;  V59 cse0         [V59,T21] ( 10, 13.54)     int  ->  [rbp-0x44]  spill-single-def "CSE - moderate"
 ;  V60 cse1         [V60,T10] (  8, 28   )    long  ->  [rbp-0x50]  multi-def "CSE - aggressive"
 ;  V61 cse2         [V61,T00] (  6, 71.28)    long  ->  [rbp-0x58]  spill-single-def "CSE - aggressive"
@@ -400,12 +400,9 @@ G_M58711_IG21:        ; bbWeight=0.08, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
        mov      rax, qword ptr [rbp-0x50]
        ; gcrRegs -[rax]
        cmp      rcx, gword ptr [rsi+rax]
-       sete     cl
-       ; gcrRegs -[rcx]
-       movzx    rcx, cl
-       test     ecx, ecx
-       je       SHORT G_M58711_IG25
+       jne      SHORT G_M58711_IG25
        mov      ecx, r15d
+       ; gcrRegs -[rcx]
        mov      rcx, gword ptr [rbx+8*rcx+0x10]
        ; gcrRegs +[rcx]
        lea      r11, [(reloc)]
@@ -415,11 +412,11 @@ G_M58711_IG21:        ; bbWeight=0.08, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
        ; gcr arg pop 0
        mov      gword ptr [rbp-0x78], rax
        ; GC ptr vars +{V46}
-                       ;; size=178 bbWeight=0.08 PerfScore 5.04
-G_M58711_IG22:        ; bbWeight=0.08, isz, extend
        mov      rcx, gword ptr [rbp-0x70]
        ; gcrRegs +[rcx]
        lea      r11, [(reloc)]
+                       ;; size=181 bbWeight=0.08 PerfScore 5.04
+G_M58711_IG22:        ; bbWeight=0.08, isz, extend
        ; GC ptr vars -{V18}
        call     [r11]<unknown method>
        ; gcrRegs -[rcx]
@@ -435,7 +432,7 @@ G_M58711_IG22:        ; bbWeight=0.08, isz, extend
        test     eax, eax
        jne      SHORT G_M58711_IG24
        jmp      SHORT G_M58711_IG25
-                       ;; size=33 bbWeight=0.08 PerfScore 0.96
+                       ;; size=22 bbWeight=0.08 PerfScore 0.84
 G_M58711_IG23:        ; bbWeight=0.08, gcVars=0000000000004008 {V17 V18}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V03 V18}
        mov      edx, r15d
@@ -1044,7 +1041,7 @@ G_M58711_IG64:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        int3     
                        ;; size=40 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2068, prolog size 37, PerfScore 1611.56, instruction count 544, allocated bytes for code 2068 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
+; Total bytes of code 2060, prolog size 37, PerfScore 1611.44, instruction count 541, allocated bytes for code 2060 (MethodHash=893a1aa8) for method System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
 ; ============================================================
 
 Unwind Info:

-7 (-0.20%) : 117086.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

@@ -54,7 +54,7 @@
 ;  V42 tmp8         [V42,T07] (  6, 48   )     ref  ->  [rsp+0x50]  class-hnd "non-inline candidate call" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V43 tmp9         [V43    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp10        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-;  V45 tmp11        [V45,T37] (  2,  0.16)   ubyte  ->  rcx         "Inline return value spill temp"
+;* V45 tmp11        [V45,T37] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V46 tmp12        [V46,T12] (  4, 32   )     ref  ->  [rsp+0x48]  class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
 ;* V47 tmp13        [V47    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
 ;  V48 tmp14        [V48,T26] (  4, 16   )   ubyte  ->  rax         "Inline return value spill temp"
@@ -776,13 +776,10 @@ G_M30062_IG33:        ; bbWeight=0.08, extend
        call     [r11]<unknown method>
        ; gcrRegs -[rax rcx]
        ; gcr arg pop 0
-       xor      ecx, ecx
        cmp      eax, 32
-       setne    cl
-       test     ecx, ecx
        je       G_M30062_IG42
        jmp      G_M30062_IG44
-                       ;; size=36 bbWeight=0.08 PerfScore 0.92
+                       ;; size=29 bbWeight=0.08 PerfScore 0.80
 G_M30062_IG34:        ; bbWeight=0.08, gcrefRegs=9028 {rbx rbp r12 r15}, byrefRegs=4000 {r14}, byref, isz
        lea      rcx, [rsp+0x2D8]
        mov      rdx, qword ptr [rsp+0x70]
@@ -1384,7 +1381,7 @@ G_M30062_IG70:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 3539, prolog size 85, PerfScore 3065.30, instruction count 774, allocated bytes for code 3539 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
+; Total bytes of code 3532, prolog size 85, PerfScore 3065.18, instruction count 771, allocated bytes for code 3532 (MethodHash=40c98a91) for method Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:

libraries.pmi.windows.x64.checked.mch

-21 (-1.48%) : 101993.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)

@@ -11,7 +11,7 @@
 ;  V00 arg0         [V00,T29] (  7,  5.50)     ref  ->  rdi         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T14] (  6, 11   )     ref  ->  rbx         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T15] (  6, 10   )     ref  ->  rsi         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [rsp+0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
+;  V03 loc0         [V03    ] (  5,  7   )  struct (24) [rsp+0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]>
 ;  V04 loc1         [V04,T20] (  7, 10.04)     ref  ->  rdi         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T31] (  5,  7   )     int  ->  rbp         single-def
 ;  V06 loc3         [V06,T05] ( 16, 25.04)     int  ->  r14        
@@ -19,7 +19,7 @@
 ;  V08 loc5         [V08,T10] ( 10, 16   )     ref  ->  r12         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [rsp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (24) [rsp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T33] (  3,  6   )     int  ->  r15         single-def
 ;  V13 loc10        [V13,T06] (  9, 25   )     int  ->  rsi        
 ;  V14 loc11        [V14,T00] ( 10,106   )     ref  ->  rbp         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
@@ -68,10 +68,10 @@
 ;* V57 tmp38        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <<unknown class>>
 ;  V58 tmp39        [V58,T28] (  2,  8   )     ref  ->   r8         class-hnd "Inlining Arg" <<unknown class>>
 ;  V59 tmp40        [V59,T19] (  3, 12   )     ref  ->  rcx         class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-;  V60 tmp41        [V60    ] (  2,  2   )     ref  ->  [rsp+0x20]  do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
-;  V61 tmp42        [V61    ] (  4,  4   )     ref  ->  [rsp+0x28]  do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
-;  V62 tmp43        [V62    ] (  2,  2   )     int  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
-;  V63 tmp44        [V63    ] (  2,  2   )     int  ->  [rsp+0x34]  do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
+;  V60 tmp41        [V60    ] (  2,  2   )     ref  ->  [rsp+0x28]  do-not-enreg[X] addr-exposed "field V11.<Parent>k__BackingField (fldOffset=0x0)" P-DEP
+;  V61 tmp42        [V61    ] (  4,  4   )     ref  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V11.<Node>k__BackingField (fldOffset=0x8)" P-DEP
+;  V62 tmp43        [V62    ] (  2,  2   )     int  ->  [rsp+0x38]  do-not-enreg[X] addr-exposed "field V11.<Index>k__BackingField (fldOffset=0x10)" P-DEP
+;  V63 tmp44        [V63    ] (  2,  2   )     int  ->  [rsp+0x3C]  do-not-enreg[X] addr-exposed "field V11.<Position>k__BackingField (fldOffset=0x14)" P-DEP
 ;* V64 tmp45        [V64    ] (  0,  0   )     ref  ->  zero-ref    "field V17.array (fldOffset=0x0)" P-INDEP
 ;* V65 tmp46        [V65    ] (  0,  0   )     ref  ->  zero-ref    "field V26.array (fldOffset=0x0)" P-INDEP
 ;* V66 tmp47        [V66    ] (  0,  0   )     ref  ->  zero-ref    "field V29.array (fldOffset=0x0)" P-INDEP
@@ -86,7 +86,6 @@
 ;  V75 tmp56        [V75,T16] (  6, 12   )     ref  ->  rax         "argument with side effect"
 ;  V76 tmp57        [V76,T17] (  6, 12   )     ref  ->  rax         "argument with side effect"
 ;  V77 cse0         [V77,T01] (  7, 88   )    long  ->  r14         "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [rsp+0x50]
 ;
 ; Lcl frame size = 88
 
@@ -100,10 +99,10 @@ G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbp
        push     rbx
        sub      rsp, 88
-       vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [rsp+0x20], ymm4
-       vmovdqa  xmmword ptr [rsp+0x40], xmm4
        xor      eax, eax
+       mov      qword ptr [rsp+0x28], rax
+       vxorps   xmm4, xmm4, xmm4
+       vmovdqu  ymmword ptr [rsp+0x30], ymm4
        mov      qword ptr [rsp+0x50], rax
        mov      rdi, rcx
        ; gcrRegs +[rdi]
@@ -111,7 +110,7 @@ G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rbx]
        mov      rsi, r8
        ; gcrRegs +[rsi]
-                       ;; size=48 bbWeight=1 PerfScore 14.58
+                       ;; size=47 bbWeight=1 PerfScore 13.58
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        cmp      byte  ptr [rdi], dil
        lea      rbp, bword ptr [rdi+0x28]
@@ -178,21 +177,21 @@ G_M1087_IG05:        ; bbWeight=0.50, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=00
 G_M1087_IG06:        ; bbWeight=1, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        ; byrRegs -[rbp]
-       lea      rdx, [rsp+0x38]
+       lea      rdx, [rsp+0x40]
        mov      rcx, r14
        ; gcrRegs +[rcx]
        cmp      dword ptr [rcx], ecx
        call     [Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax:get_Arguments():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]:this]
        ; gcrRegs -[rcx r14]
        ; gcr arg pop 0
-       movsxd   rdx, dword ptr [rsp+0x38]
+       movsxd   rdx, dword ptr [rsp+0x40]
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWARR_1_OBJ
        ; gcrRegs +[rax]
        ; gcr arg pop 0
        mov      rdi, rax
        ; gcrRegs +[rdi]
-       mov      ebp, dword ptr [rsp+0x38]
+       mov      ebp, dword ptr [rsp+0x40]
        dec      ebp
        xor      r14d, r14d
        test     ebp, ebp
@@ -202,7 +201,7 @@ G_M1087_IG06:        ; bbWeight=1, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000
                        ;; size=65 bbWeight=1 PerfScore 18.00
 G_M1087_IG07:        ; bbWeight=3.96, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
-       lea      rcx, [rsp+0x38]
+       lea      rcx, [rsp+0x40]
        mov      r8d, r14d
        mov      rdx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]
        call     [Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this]
@@ -223,13 +222,13 @@ G_M1087_IG08:        ; bbWeight=1.98, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax
        cmp      qword ptr [r15], rcx
        jne      G_M1087_IG45
-       lea      rdx, [rsp+0x20]
+       lea      rdx, [rsp+0x28]
        mov      rcx, r15
        ; gcrRegs +[rcx]
        call     [Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
-       mov      rcx, gword ptr [rsp+0x28]
+       mov      rcx, gword ptr [rsp+0x30]
        ; gcrRegs +[rcx]
        test     rcx, rcx
        jne      SHORT G_M1087_IG09
@@ -369,7 +368,7 @@ G_M1087_IG16:        ; bbWeight=1, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {},
                        ;; size=5 bbWeight=1 PerfScore 2.00
 G_M1087_IG17:        ; bbWeight=0.04, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rsi]
-       lea      rcx, [rsp+0x38]
+       lea      rcx, [rsp+0x40]
        mov      r8d, r14d
        mov      rdx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax]
        call     [Microsoft.CodeAnalysis.SeparatedSyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this]
@@ -390,13 +389,13 @@ G_M1087_IG18:        ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax
        cmp      qword ptr [r15], rcx
        jne      G_M1087_IG45
-       lea      rdx, [rsp+0x20]
+       lea      rdx, [rsp+0x28]
        mov      rcx, r15
        ; gcrRegs +[rcx]
        call     [Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax:get_Identifier():Microsoft.CodeAnalysis.SyntaxToken:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
-       mov      rcx, gword ptr [rsp+0x28]
+       mov      rcx, gword ptr [rsp+0x30]
        ; gcrRegs +[rcx]
        test     rcx, rcx
        jne      SHORT G_M1087_IG19
@@ -435,12 +434,8 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byre
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx r13]
        ; byrRegs -[rcx]
-       lea      rcx, bword ptr [r12+0x30]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rsp+0x50], rcx
        mov      rcx, r15
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
        call     [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
@@ -454,7 +449,7 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byre
        call     [rax+0x38]<unknown method>
        ; gcrRegs -[rcx rdx r15] +[rax]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rsp+0x50]
+       lea      rcx, bword ptr [r12+0x30]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -462,7 +457,7 @@ G_M1087_IG21:        ; bbWeight=0.02, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byre
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      SHORT G_M1087_IG23
-                       ;; size=86 bbWeight=0.02 PerfScore 0.42
+                       ;; size=76 bbWeight=0.02 PerfScore 0.38
 G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r12] +[r15]
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol
@@ -475,13 +470,7 @@ G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
        mov      rcx, 0xD1FFAB1E
        ; gcrRegs +[rcx]
        mov      gword ptr [r12+0x28], rcx
-       lea      rcx, bword ptr [r12+0x30]
-       ; gcrRegs -[rcx]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rsp+0x50], rcx
        mov      rcx, r15
-       ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
        call     [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
@@ -495,14 +484,14 @@ G_M1087_IG22:        ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
        call     [rax+0x38]<unknown method>
        ; gcrRegs -[rcx rdx r15] +[rax]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rsp+0x50]
+       lea      rcx, bword ptr [r12+0x30]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
-                       ;; size=86 bbWeight=0.02 PerfScore 0.37
+                       ;; size=76 bbWeight=0.02 PerfScore 0.33
 G_M1087_IG23:        ; bbWeight=0.04, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
        cmp      r14d, dword ptr [rdi+0x08]
        jae      G_M1087_IG42
@@ -771,7 +760,7 @@ G_M1087_IG47:        ; bbWeight=0, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byre
        int3     
                        ;; size=9 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1416, prolog size 39, PerfScore 804.76, instruction count 343, allocated bytes for code 1416 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
+; Total bytes of code 1395, prolog size 38, PerfScore 803.68, instruction count 339, allocated bytes for code 1395 (MethodHash=9a81fbc0) for method Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
 ; ============================================================
 
 Unwind Info:

-23 (-1.28%) : 144270.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

@@ -46,7 +46,7 @@
 ;* V35 tmp23        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
 ;* V36 tmp24        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
 ;* V37 tmp25        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
-;  V38 tmp26        [V38,T15] (  6, 12   )     ref  ->  registers   "argument with side effect"
+;  V38 tmp26        [V38,T15] (  6, 12   )     ref  ->  rcx         "argument with side effect"
 ;  V39 tmp27        [V39,T25] (  4,  8   )     ref  ->  rax         "argument with side effect"
 ;  V40 tmp28        [V40,T26] (  4,  8   )     ref  ->  [rbp-0x88]  "argument with side effect"
 ;  V41 tmp29        [V41,T34] (  3,  3   )     ref  ->  rcx         single-def "argument with side effect"
@@ -62,9 +62,8 @@
 ;  V51 cse3         [V51,T33] (  4,  3   )     ref  ->  rcx         "CSE - moderate"
 ;  V52 cse4         [V52,T28] (  6,  6   )     int  ->  r14         "CSE - moderate"
 ;  V53 cse5         [V53,T31] (  4,  5   )    long  ->  r14         "CSE - moderate"
-;  TEMP_01                                   byref  ->  [rbp-0xA8]
 ;
-; Lcl frame size = 184
+; Lcl frame size = 168
 
 G_M44608_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
@@ -75,15 +74,13 @@ G_M44608_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 184
-       lea      rbp, [rsp+0xF0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0xA8], rax
+       sub      rsp, 168
+       lea      rbp, [rsp+0xE0]
        mov      rbx, rcx
        ; gcrRegs +[rbx]
        mov      rsi, rdx
        ; gcrRegs +[rsi]
-                       ;; size=42 bbWeight=1 PerfScore 10.50
+                       ;; size=33 bbWeight=1 PerfScore 9.25
 G_M44608_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_0
        call     CORINFO_HELP_NEWSFAST
@@ -109,7 +106,7 @@ G_M44608_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M44608_IG04:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -520,28 +517,19 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000000 {V49}, gcrefRegs=
        ; byrRegs -[rcx]
        mov      rax, gword ptr [rbp-0x48]
        ; gcrRegs +[rax]
-       lea      rcx, bword ptr [rax+0x08]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0xA8], rcx
-       mov      gword ptr [rbp-0x48], rax
-       mov      rdx, gword ptr [rax+0x10]
-       ; gcrRegs +[rdx]
-       mov      rdx, gword ptr [rdx+0x10]
-       mov      rdx, gword ptr [rdx+0x10]
-       mov      gword ptr [rbp-0x88], rdx
-       ; GC ptr vars +{V40}
-       mov      r8, gword ptr [rbp-0x98]
-       ; gcrRegs +[r8]
-       mov      r8, gword ptr [r8+0x50]
-       mov      rcx, r8
+       mov      rcx, gword ptr [rax+0x10]
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
-       mov      r8, qword ptr [r8]
-       ; gcrRegs -[r8]
+       mov      rcx, gword ptr [rcx+0x10]
+       mov      rcx, gword ptr [rcx+0x10]
+       mov      gword ptr [rbp-0x88], rcx
+       ; GC ptr vars +{V40}
+       mov      rcx, gword ptr [rbp-0x98]
+       mov      rcx, gword ptr [rcx+0x50]
+       mov      r8, qword ptr [rcx]
        mov      r8, qword ptr [r8+0x48]
        ; GC ptr vars -{V49}
        call     [r8+0x30]<unknown method>
-       ; gcrRegs -[rcx rdx]
+       ; gcrRegs -[rcx]
        ; gcr arg pop 0
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -551,30 +539,33 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000000 {V49}, gcrefRegs=
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rbp-0xA8]
+       mov      r8, gword ptr [rbp-0x48]
+       ; gcrRegs +[r8]
+       lea      rcx, bword ptr [r8+0x08]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
+       ; gcrRegs -[rax rdx r8]
        ; byrRegs -[rcx]
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
-       mov      rdx, gword ptr [rbp-0x48]
-       ; gcrRegs +[rdx]
-       mov      rcx, gword ptr [rdx+0x10]
-       ; gcrRegs +[rcx]
-       mov      r8, gword ptr [rcx+0x08]
+       mov      r8, gword ptr [rbp-0x48]
        ; gcrRegs +[r8]
-       mov      gword ptr [rbp-0x80], r8
+       mov      rcx, gword ptr [r8+0x10]
+       ; gcrRegs +[rcx]
+       mov      rcx, gword ptr [rcx+0x08]
+       mov      gword ptr [rbp-0x80], rcx
        ; GC ptr vars +{V27}
        mov      gword ptr [rbp-0x78], rax
        ; GC ptr vars +{V26}
        lea      rcx, bword ptr [rax+0x08]
        ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
+       mov      rdx, r8
+       ; gcrRegs +[rdx]
        ; GC ptr vars -{V11}
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx r8]
@@ -595,7 +586,7 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000000 {V49}, gcrefRegs=
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      G_M44608_IG20
-                       ;; size=218 bbWeight=0.02 PerfScore 1.04
+                       ;; size=204 bbWeight=0.02 PerfScore 1.00
 G_M44608_IG18:        ; bbWeight=0.02, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref, isz
        mov      rax, gword ptr [r12+0x08]
        ; gcrRegs +[rax]
@@ -729,7 +720,7 @@ G_M44608_IG21:        ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0
        ; gcrRegs +[rax]
                        ;; size=148 bbWeight=0.50 PerfScore 23.12
 G_M44608_IG22:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -847,7 +838,7 @@ G_M44608_IG28:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
        ; gcrRegs +[rax]
                        ;; size=13 bbWeight=0.50 PerfScore 2.62
 G_M44608_IG29:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -882,7 +873,7 @@ G_M44608_IG31:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        int3     
                        ;; size=26 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1796, prolog size 42, PerfScore 521.37, instruction count 406, allocated bytes for code 1796 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1773, prolog size 33, PerfScore 520.08, instruction count 402, allocated bytes for code 1773 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -896,7 +887,7 @@ Unwind Info:
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
     CodeOffset: 0x13 UnwindOp: UWOP_ALLOC_LARGE (1)     OpInfo: 0 - Scaled small  
-      Size: 23 * 8 = 184 = 0x000B8
+      Size: 21 * 8 = 168 = 0x000A8
     CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)

-46 (-1.14%) : 124257.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport

@@ -14,15 +14,15 @@
 ;  V03 loc1         [V03,T41] (  7,  5.02)     ref  ->  rbp         class-hnd exact single-def <<unknown class>>
 ;  V04 loc2         [V04,T50] (  4,  3   )     ref  ->  r15         class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
 ;  V05 loc3         [V05,T19] ( 14, 11   )     ref  ->  r13         class-hnd exact single-def <<unknown class>>
-;  V06 loc4         [V06    ] (  5,  5.50)  struct ( 8) [rsp+0xF8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+;  V06 loc4         [V06    ] (  5,  5.50)  struct ( 8) [rsp+0xF0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
 ;* V07 loc5         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Threading.CancellationToken>
 ;  V08 loc6         [V08,T40] (  5,  5.50)     int  ->  r14         single-def
 ;  V09 loc7         [V09,T04] ( 12, 18.52)     int  ->  r12        
-;  V10 loc8         [V10    ] ( 12, 14   )  struct (24) [rsp+0xE0]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+;  V10 loc8         [V10    ] ( 12, 14   )  struct (24) [rsp+0xD8]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
 ;  V11 loc9         [V11,T12] ( 12, 12   )     ref  ->  rdi         must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
 ;* V12 loc10        [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-;  V13 loc11        [V13,T20] ( 10, 10   )     ref  ->  [rsp+0xB8]  class-hnd <<unknown class>>
-;  V14 loc12        [V14,T36] (  6,  6   )     ref  ->  [rsp+0xB0]  class-hnd <<unknown class>>
+;  V13 loc11        [V13,T20] ( 10, 10   )     ref  ->  [rsp+0xB0]  class-hnd <<unknown class>>
+;  V14 loc12        [V14,T36] (  6,  6   )     ref  ->  [rsp+0xA8]  class-hnd <<unknown class>>
 ;  V15 OutArgs      [V15    ] (  1,  1   )  struct (48) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V16 tmp1         [V16,T13] (  6, 12   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V17 tmp2         [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -37,15 +37,15 @@
 ;  V26 tmp11        [V26,T60] (  2,  2   )     ref  ->  r14         class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Text.SourceText>
 ;  V27 tmp12        [V27,T61] (  2,  2   )     ref  ->   r8         class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
 ;  V28 tmp13        [V28,T51] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V29 tmp14        [V29,T14] (  6, 12   )     ref  ->  [rsp+0xA8]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-;  V30 tmp15        [V30,T06] (  8, 16   )     ref  ->  [rsp+0xA0]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-;  V31 tmp16        [V31,T07] (  8, 16   )     ref  ->  [rsp+0x98]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V29 tmp14        [V29,T14] (  6, 12   )     ref  ->  [rsp+0xA0]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
+;  V30 tmp15        [V30,T06] (  8, 16   )     ref  ->  [rsp+0x98]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+;  V31 tmp16        [V31,T07] (  8, 16   )     ref  ->  [rsp+0x90]  class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V32 tmp17        [V32    ] (  0,  0   )     ref  ->  zero-ref   
-;  V33 tmp18        [V33,T02] ( 10, 20   )     ref  ->  [rsp+0x90]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V33 tmp18        [V33,T02] ( 10, 20   )     ref  ->  [rsp+0x88]  class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V34 tmp19        [V34    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V35 tmp20        [V35,T37] (  6,  6   )     ref  ->   r8        
-;  V36 tmp21        [V36,T00] ( 16, 32   )     ref  ->  [rsp+0x88]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-;  V37 tmp22        [V37,T03] ( 10, 20   )     ref  ->  [rsp+0x80]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+;  V36 tmp21        [V36,T00] ( 16, 32   )     ref  ->  [rsp+0x80]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+;  V37 tmp22        [V37,T03] ( 10, 20   )     ref  ->  [rsp+0x78]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
 ;  V38 tmp23        [V38,T52] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V39 tmp24        [V39,T53] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;* V40 tmp25        [V40    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Threading.CancellationToken>
@@ -55,8 +55,8 @@
 ;* V44 tmp29        [V44    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
 ;* V45 tmp30        [V45    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V46 tmp31        [V46,T45] (  5,  5   )   byref  ->  r12         single-def "Inlining Arg"
-;  V47 tmp32        [V47,T55] (  4,  2   )     ref  ->  [rsp+0x78]  class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
-;  V48 tmp33        [V48,T56] (  4,  2   )     ref  ->  [rsp+0x70]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
+;  V47 tmp32        [V47,T55] (  4,  2   )     ref  ->  [rsp+0x70]  class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
+;  V48 tmp33        [V48,T56] (  4,  2   )     ref  ->  [rsp+0x68]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.CodeAnalysis.GreenNode>
 ;  V49 tmp34        [V49,T62] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V50 tmp35        [V50,T57] (  4,  2   )     int  ->  r14         "Inline return value spill temp"
 ;  V51 tmp36        [V51,T63] (  2,  2   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
@@ -64,7 +64,7 @@
 ;* V53 tmp38        [V53,T75] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V54 tmp39        [V54,T46] (  4,  4   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;  V55 tmp40        [V55,T58] (  4,  2   )     int  ->  r14         "Inline stloc first use temp"
-;  V56 tmp41        [V56,T10] ( 15, 14.02)     ref  ->  [rsp+0x68]  class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V56 tmp41        [V56,T10] ( 15, 14.02)     ref  ->  [rsp+0x60]  class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V57 tmp42        [V57,T11] ( 16, 14   )     ref  ->   r8         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V58 tmp43        [V58,T78] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V59 tmp44        [V59,T24] (  6,  9   )     ref  ->  rax         "CASTCLASS eval op1"
@@ -74,27 +74,27 @@
 ;  V63 tmp48        [V63,T27] (  6,  8   )     ref  ->  registers   class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V64 tmp49        [V64,T30] (  4,  8   )     ref  ->  r10         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
 ;* V65 tmp50        [V65    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-;  V66 tmp51        [V66    ] ( 11, 10.02)  struct (24) [rsp+0xC8]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+;  V66 tmp51        [V66    ] ( 11, 10.02)  struct (24) [rsp+0xC0]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V67 tmp52        [V67    ] (  0,  0   )  struct (24) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V68 tmp53        [V68    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
-;  V69 tmp54        [V69,T15] (  6, 12   )     ref  ->  [rsp+0x60]  class-hnd exact "Inlining Arg" <<unknown class>>
-;  V70 tmp55        [V70,T31] (  4,  8   )     ref  ->  [rsp+0x58]  class-hnd "Inlining Arg" <System.Object[]>
+;  V69 tmp54        [V69,T15] (  6, 12   )     ref  ->  [rsp+0x58]  class-hnd exact "Inlining Arg" <<unknown class>>
+;  V70 tmp55        [V70,T31] (  4,  8   )     ref  ->  [rsp+0x50]  class-hnd "Inlining Arg" <System.Object[]>
 ;* V71 tmp56        [V71    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V72 tmp57        [V72,T21] ( 10, 10   )     ref  ->  rcx         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.SyntaxNode>
 ;  V73 tmp58        [V73,T79] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V74 tmp59        [V74,T16] (  6, 12   )     ref  ->  rax         "CASTCLASS eval op1"
 ;  V75 tmp60        [V75,T29] (  6,  8   )    long  ->  rcx         "fgMakeTemp is creating a new local variable"
-;  V76 tmp61        [V76,T05] ( 10, 18   )     ref  ->  [rsp+0x50]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V76 tmp61        [V76,T05] ( 10, 18   )     ref  ->  [rsp+0x48]  class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
 ;  V77 tmp62        [V77,T32] (  4,  8   )     ref  ->  rax         class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.GreenNode>
-;  V78 tmp63        [V78,T33] (  4,  8   )     ref  ->  [rsp+0x48]  class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
+;  V78 tmp63        [V78,T33] (  4,  8   )     ref  ->  [rsp+0x40]  class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
 ;  V79 tmp64        [V79,T80] (  3,  0   )     ref  ->  rbx         class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V80 tmp65        [V80,T01] ( 12, 24   )     ref  ->  [rsp+0x40]  class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V81 tmp66        [V81,T34] (  4,  8   )     ref  ->  [rsp+0x38]  class-hnd exact "Inlining Arg" <System.String>
+;  V80 tmp65        [V80,T01] ( 12, 24   )     ref  ->  [rsp+0x38]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V81 tmp66        [V81,T34] (  4,  8   )     ref  ->  [rsp+0x30]  class-hnd exact "Inlining Arg" <System.String>
 ;  V82 tmp67        [V82,T17] (  6, 12   )     ref  ->  rdx         class-hnd exact "Inlining Arg" <<unknown class>>
 ;  V83 tmp68        [V83,T35] (  8,  7.64)     ref  ->  rax         class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
 ;  V84 tmp69        [V84,T23] ( 10,  9.45)     int  ->   r8         "Inline stloc first use temp"
 ;  V85 tmp70        [V85,T28] (  6,  8.00)     ref  ->  rdx         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-;  V86 tmp71        [V86    ] (  5,  5.50)     ref  ->  [rsp+0xF8]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+;  V86 tmp71        [V86    ] (  5,  5.50)     ref  ->  [rsp+0xF0]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
 ;* V87 tmp72        [V87,T76] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._source (fldOffset=0x0)" P-INDEP
 ;* V88 tmp73        [V88    ] (  0,  0   )     ref  ->  zero-ref    "field V40._source (fldOffset=0x0)" P-INDEP
 ;* V89 tmp74        [V89    ] (  0,  0   )     ref  ->  zero-ref    "field V41._node (fldOffset=0x0)" P-INDEP
@@ -115,10 +115,9 @@
 ;* V104 cse0        [V104,T77] (  0,  0   )    long  ->  zero-ref    "CSE - moderate"
 ;* V105 cse1        [V105,T69] (  0,  0   )    long  ->  zero-ref    multi-def "CSE - conservative"
 ;  V106 cse2        [V106,T72] (  3,  1.50)     ref  ->  rcx         "CSE - conservative"
-;  V107 cse3        [V107,T26] (  8,  8   )    long  ->  [rsp+0xC0]  multi-def "CSE - moderate"
-;  TEMP_01                                   byref  ->  [rsp+0x100]
+;  V107 cse3        [V107,T26] (  8,  8   )    long  ->  [rsp+0xB8]  multi-def "CSE - moderate"
 ;
-; Lcl frame size = 264
+; Lcl frame size = 248
 
 G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
@@ -129,20 +128,19 @@ G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 264
+       sub      rsp, 248
        vzeroupper 
-       xor      edi, edi
-       mov      qword ptr [rsp+0xC8], rdi
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [rsp+0xD0], ymm4
-       vmovdqa  xmmword ptr [rsp+0xF0], xmm4
-       mov      qword ptr [rsp+0x100], rdi
+       vmovdqu  ymmword ptr [rsp+0xC0], ymm4
+       vmovdqa  xmmword ptr [rsp+0xE0], xmm4
+       xor      edi, edi
+       mov      qword ptr [rsp+0xF0], rdi
        mov      rbx, rcx
        ; gcrRegs +[rbx]
        mov      rsi, rdx
        ; gcrRegs +[rsi]
        xor      edi, edi
-                       ;; size=70 bbWeight=1 PerfScore 16.58
+                       ;; size=62 bbWeight=1 PerfScore 15.58
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rdi]
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
@@ -352,7 +350,7 @@ G_M28747_IG12:        ; bbWeight=0.50, gcrefRegs=41E8 {rbx rbp rsi rdi r8 r14},
        lea      r12, bword ptr [r14+0x30]
        ; byrRegs +[r12]
        mov      rax, gword ptr [r12]
-       mov      gword ptr [rsp+0x78], rax
+       mov      gword ptr [rsp+0x70], rax
        ; GC ptr vars +{V47}
        test     rax, rax
        jne      SHORT G_M28747_IG13
@@ -364,7 +362,7 @@ G_M28747_IG12:        ; bbWeight=0.50, gcrefRegs=41E8 {rbx rbp rsi rdi r8 r14},
        call     [r8+0x20]<unknown method>
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
-       mov      gword ptr [rsp+0x70], rax
+       mov      gword ptr [rsp+0x68], rax
        ; GC ptr vars +{V48}
        test     rax, rax
        je       SHORT G_M28747_IG13
@@ -378,7 +376,7 @@ G_M28747_IG12:        ; bbWeight=0.50, gcrefRegs=41E8 {rbx rbp rsi rdi r8 r14},
        mov      r8d, eax
        mov      rdx, r14
        ; gcrRegs +[rdx]
-       mov      rcx, gword ptr [rsp+0x70]
+       mov      rcx, gword ptr [rsp+0x68]
        ; gcrRegs +[rcx]
        mov      rax, qword ptr [rcx]
        mov      rax, qword ptr [rax+0x68]
@@ -401,18 +399,18 @@ G_M28747_IG12:        ; bbWeight=0.50, gcrefRegs=41E8 {rbx rbp rsi rdi r8 r14},
        mov      rax, gword ptr [r12]
        mov      r14, rax
        ; gcrRegs +[r14]
-       mov      gword ptr [rsp+0x78], r14
+       mov      gword ptr [rsp+0x70], r14
        ; GC ptr vars +{V47}
                        ;; size=222 bbWeight=0.50 PerfScore 26.38
 G_M28747_IG13:        ; bbWeight=0.50, gcVars=00000000000000000080000000000000 {V47}, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax r14]
        ; byrRegs -[r12]
-       mov      rax, gword ptr [rsp+0x78]
+       mov      rax, gword ptr [rsp+0x70]
        ; gcrRegs +[rax]
-       mov      gword ptr [rsp+0xF8], rax
-       cmp      gword ptr [rsp+0xF8], 0
+       mov      gword ptr [rsp+0xF0], rax
+       cmp      gword ptr [rsp+0xF0], 0
        je       SHORT G_M28747_IG16
-       mov      rcx, gword ptr [rsp+0xF8]
+       mov      rcx, gword ptr [rsp+0xF0]
        ; gcrRegs +[rcx]
        mov      rcx, gword ptr [rcx+0x18]
        mov      rax, rcx
@@ -449,7 +447,7 @@ G_M28747_IG17:        ; bbWeight=0.50, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15},
        jle      G_M28747_IG43
                        ;; size=25 bbWeight=0.50 PerfScore 2.88
 G_M28747_IG18:        ; bbWeight=3.96, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15}, byrefRegs=0000 {}, byref
-       lea      rcx, [rsp+0xF8]
+       lea      rcx, [rsp+0xF0]
        mov      r8d, r12d
        mov      rdx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]
        call     [Microsoft.CodeAnalysis.SyntaxList`1[System.__Canon]:get_Item(int):System.__Canon:this]
@@ -457,7 +455,7 @@ G_M28747_IG18:        ; bbWeight=3.96, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15},
        ; gcr arg pop 0
        mov      rcx, rax
        ; gcrRegs +[rcx]
-       lea      rdx, [rsp+0xE0]
+       lea      rdx, [rsp+0xD8]
        cmp      dword ptr [rcx], ecx
        call     [Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax:get_ImportsClauses():Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]:this]
        ; gcrRegs -[rax rcx]
@@ -480,21 +478,21 @@ G_M28747_IG19:        ; bbWeight=1.98, gcrefRegs=A0E8 {rbx rbp rsi rdi r13 r15},
        je       SHORT G_M28747_IG20
        mov      rdx, gword ptr [rdi+0x08]
        ; gcrRegs +[rdx]
-       mov      gword ptr [rsp+0xA8], rax
+       mov      gword ptr [rsp+0xA0], rax
        ; GC ptr vars +{V29}
        lea      rcx, bword ptr [rax+0x08]
        ; byrRegs +[rcx]
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx rdi]
        ; byrRegs -[rcx]
-       mov      rax, gword ptr [rsp+0xA8]
+       mov      rax, gword ptr [rsp+0xA0]
        ; gcrRegs +[rax]
                        ;; size=49 bbWeight=1.98 PerfScore 15.84
 G_M28747_IG20:        ; bbWeight=1.98, gcVars=00000000000000000000000000000000 {}, gcrefRegs=A069 {rax rbx rbp rsi r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars -{V29}
        mov      rdi, rax
        ; gcrRegs +[rdi]
-       mov      r8, gword ptr [rsp+0xE8]
+       mov      r8, gword ptr [rsp+0xE0]
        ; gcrRegs +[r8]
        test     r8, r8
        je       G_M28747_IG80
@@ -528,7 +526,7 @@ G_M28747_IG23:        ; bbWeight=1.98, gcrefRegs=A0E9 {rax rbx rbp rsi rdi r13 r
                        ;; size=5 bbWeight=1.98 PerfScore 4.46
 G_M28747_IG24:        ; bbWeight=1.98, gcrefRegs=A1E8 {rbx rbp rsi rdi r8 r13 r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax r10] +[r8]
-       cmp      dword ptr [rsp+0xE0], 0
+       cmp      dword ptr [rsp+0xD8], 0
        je       G_M28747_IG80
        mov      rcx, r8
        ; gcrRegs +[rcx]
@@ -568,31 +566,31 @@ G_M28747_IG28:        ; bbWeight=1.98, gcrefRegs=A4E8 {rbx rbp rsi rdi r10 r13 r
        ; gcrRegs -[rax]
        cmp      byte  ptr [r10], r10b
        mov      eax, dword ptr [r10+0x20]
-       mov      gword ptr [rsp+0x68], r10
+       mov      gword ptr [rsp+0x60], r10
        ; GC ptr vars +{V56}
        mov      r8, r10
        ; gcrRegs +[r8]
...

+0 (0.00%) : 201228.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary2[System.__Canon,System.Nullable1[int]]:TrimExcess(int):this (FullOpts)

@@ -10,9 +10,9 @@
 ;
 ;  V00 this         [V00,T02] ( 17, 19.50)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T17] (  4,  4   )     int  ->  rdx         single-def
-;  V02 loc0         [V02,T28] (  3,  2.50)     int  ->  rsi         single-def
+;  V02 loc0         [V02,T27] (  3,  2.50)     int  ->  rsi         single-def
 ;  V03 loc1         [V03    ] (  5, 12   )  struct (16) [rsp+0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
-;  V04 loc2         [V04,T30] (  2,  2   )     int  ->  rcx         single-def
+;  V04 loc2         [V04,T28] (  2,  2   )     int  ->  rcx         single-def
 ;  V05 loc3         [V05,T22] (  3,  5   )     int  ->  r14         single-def
 ;  V06 loc4         [V06    ] (  2,  2.50)  struct (16) [rsp+0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.Nullable`1[int]]]>
 ;  V07 loc5         [V07,T16] (  5,  7   )     int  ->  r15        
@@ -33,9 +33,9 @@
 ;  V22 tmp11        [V22,T08] (  3, 12   )     ref  ->  rcx         class-hnd "impAppendStmt" <<unknown class>>
 ;  V23 tmp12        [V23,T09] (  3, 12   )     ref  ->  rcx         class-hnd "impAppendStmt" <<unknown class>>
 ;* V24 tmp13        [V24    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V25 tmp14        [V25,T31] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V25 tmp14        [V25,T29] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V26 tmp15        [V26    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V27 tmp16        [V27,T32] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V27 tmp16        [V27,T30] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V28 tmp17        [V28    ] (  4, 11   )     ref  ->  [rsp+0x40]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V29 tmp18        [V29    ] (  5, 12   )     int  ->  [rsp+0x48]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
 ;  V30 tmp19        [V30    ] (  2,  2.50)     ref  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -53,12 +53,9 @@
 ;  V42 rat0         [V42,T23] (  3,  4.40)    long  ->  rcx         "Spilling to split statement for tree"
 ;  V43 rat1         [V43,T24] (  3,  4   )    long  ->  rbp         "runtime lookup"
 ;  V44 rat2         [V44,T21] (  3,  5.60)    long  ->  rbp         "fgMakeTemp is creating a new local variable"
-;* V45 rat3         [V45,T29] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V46 rat4         [V46,T33] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V47 rat5         [V47,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V48 rat6         [V48,T03] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V49 rat7         [V49,T04] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V50 rat8         [V50,T01] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V45 rat3         [V45,T03] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V46 rat4         [V46,T04] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V47 rat5         [V47,T01] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 88
 

+0 (0.00%) : 201376.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rsp+0x28]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  r12        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rsp+0x20]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  rbp         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  rbp         single-def
 ;  V16 OutArgs      [V16    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  r15        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  r15        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rdx         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r15        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rdx         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r15        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rsp+0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rax         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rdx         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rdx         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rdx         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rdx         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rdx         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rdx         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r12         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rdx         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rdx         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r12         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rdx         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 

+0 (0.00%) : 256568.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]):this (FullOpts)

@@ -8,72 +8,69 @@
 ; 4 inlinees with PGO data; 2 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T04] ( 13,1139   )     ref  ->  rbx         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T05] ( 18,1118   )     ref  ->  rsi         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T07] ( 13,1139   )     ref  ->  rsi         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T04] ( 18,1118   )     ref  ->  rbx         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T03] (  8,1328   )     ref  ->  r14         class-hnd <<unknown class>>
 ;  V03 loc1         [V03    ] (  3,  24   )  struct (16) [rsp+0x58]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;  V04 loc2         [V04    ] (  4,1296   )  struct (16) [rsp+0x48]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct (16) zero-ref    ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T06] (  9,1216   )     ref  ->  r14         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T05] (  9,1216   )     ref  ->  r14         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T08] (  5, 896   )     ref  ->  r15         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V08 OutArgs      [V08    ] (  1,   1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V09 tmp1         [V09    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T29] (  3,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T26] (  3,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V13 tmp5         [V13,T18] (  3, 192   )     ref  ->  r14         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V13 tmp5         [V13,T15] (  3, 192   )     ref  ->  r14         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V14 tmp6         [V14    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V15 tmp7         [V15    ] (  0,   0   )    long  ->  zero-ref    "spilling helperCall"
-;  V16 tmp8         [V16,T26] (  4,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V17 tmp9         [V17,T31] (  3,  43.43)     int  ->  r15         "non-inline candidate call"
+;  V16 tmp8         [V16,T23] (  4,  48   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T28] (  3,  43.43)     int  ->  r15         "non-inline candidate call"
 ;  V18 tmp10        [V18    ] (  2,  32   )  struct (16) [rsp+0x38]  do-not-enreg[HS] must-init hidden-struct-arg "location for address-of(RValue)" <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
-;  V19 tmp11        [V19,T25] (  7,  64   )     ref  ->  r14         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V20 tmp12        [V20,T39] (  4,  20   )     int  ->  r15         "Inline stloc first use temp"
-;  V21 tmp13        [V21,T40] (  3,  18   )     ref  ->  rcx         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V22 tmp14        [V22,T41] (  3,  16   )     int  ->  rcx         "Inline return value spill temp"
-;  V23 tmp15        [V23,T33] (  3,  36.57)     int  ->  rcx         "Inlining Arg"
-;  V24 tmp16        [V24,T20] (  7, 160   )     ref  ->  rsi         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V25 tmp17        [V25,T27] (  4,  48   )     int  ->  r15         "Inline stloc first use temp"
-;  V26 tmp18        [V26,T32] (  3,  40   )     ref  ->  rcx         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T22] (  7,  64   )     ref  ->  r14         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V20 tmp12        [V20,T36] (  4,  20   )     int  ->  r15         "Inline stloc first use temp"
+;  V21 tmp13        [V21,T37] (  3,  18   )     ref  ->  rcx         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V22 tmp14        [V22,T38] (  3,  16   )     int  ->  rcx         "Inline return value spill temp"
+;  V23 tmp15        [V23,T30] (  3,  36.57)     int  ->  rcx         "Inlining Arg"
+;  V24 tmp16        [V24,T17] (  7, 160   )     ref  ->  rbx         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V25 tmp17        [V25,T24] (  4,  48   )     int  ->  r15         "Inline stloc first use temp"
+;  V26 tmp18        [V26,T29] (  3,  40   )     ref  ->  rcx         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V27 tmp19        [V27    ] (  0,   0   )  struct (16) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V28 tmp20        [V28,T16] (  3, 256   )     int  ->  rcx         "Inline return value spill temp"
-;  V29 tmp21        [V29,T11] (  3, 694.86)     int  ->  r11         "Inlining Arg"
-;  V30 tmp22        [V30,T13] (  3, 585.14)     int  ->  rcx         "Inlining Arg"
-;  V31 tmp23        [V31,T12] (  3, 628.35)     ref  ->  rcx         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V28 tmp20        [V28,T14] (  3, 256   )     int  ->  rcx         "Inline return value spill temp"
+;  V29 tmp21        [V29,T10] (  3, 694.86)     int  ->  r11         "Inlining Arg"
+;  V30 tmp22        [V30,T12] (  3, 585.14)     int  ->  rcx         "Inlining Arg"
+;  V31 tmp23        [V31,T11] (  3, 628.35)     ref  ->  rcx         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V32 tmp24        [V32,T09] (  4, 744.71)     int  ->  rdx         "Inline stloc first use temp"
-;  V33 tmp25        [V33,T15] (  7, 384   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V34 tmp26        [V34,T24] (  3,  93.09)     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V35 tmp27        [V35,T23] (  4, 122.18)     int  ->  rdx         "Inline stloc first use temp"
+;  V33 tmp25        [V33,T13] (  7, 384   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V34 tmp26        [V34,T21] (  3,  93.09)     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V35 tmp27        [V35,T20] (  4, 122.18)     int  ->  rdx         "Inline stloc first use temp"
 ;* V36 tmp28        [V36    ] (  0,   0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
 ;  V37 tmp29        [V37    ] (  2,  16   )     ref  ->  [rsp+0x58]  do-not-enreg[X] addr-exposed "field V03.Vertex (fldOffset=0x0)" P-DEP
 ;  V38 tmp30        [V38    ] (  2,  16   )     ref  ->  [rsp+0x60]  do-not-enreg[X] addr-exposed "field V03.EdgeEnumeratorPosition (fldOffset=0x8)" P-DEP
 ;  V39 tmp31        [V39    ] (  4,1296   )     ref  ->  [rsp+0x48]  do-not-enreg[X] addr-exposed "field V04.Destination (fldOffset=0x0)" P-DEP
 ;  V40 tmp32        [V40    ] (  1, 512   )   ubyte  ->  [rsp+0x50]  do-not-enreg[X] addr-exposed "field V04.Flagged (fldOffset=0x8)" P-DEP
-;  V41 tmp33        [V41,T35] (  3,  32   )     ref  ->  rdx         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V42 tmp34        [V42,T36] (  3,  32   )     ref  ->  r14         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
-;  V43 tmp35        [V43,T38] (  2,  24   )     ref  ->  [rsp+0x38]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
-;  V44 tmp36        [V44,T42] (  1,  16   )   ubyte  ->  [rsp+0x40]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x8)" P-DEP
+;  V41 tmp33        [V41,T32] (  3,  32   )     ref  ->  rdx         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V42 tmp34        [V42,T33] (  3,  32   )     ref  ->  r14         "field V05.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
+;  V43 tmp35        [V43,T35] (  2,  24   )     ref  ->  [rsp+0x38]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
+;  V44 tmp36        [V44,T39] (  1,  16   )   ubyte  ->  [rsp+0x40]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x8)" P-DEP
 ;* V45 tmp37        [V45    ] (  0,   0   )     ref  ->  zero-ref    "field V27.Vertex (fldOffset=0x0)" P-INDEP
 ;* V46 tmp38        [V46    ] (  0,   0   )     ref  ->  zero-ref    "field V27.EdgeEnumeratorPosition (fldOffset=0x8)" P-INDEP
 ;  V47 tmp39        [V47    ] (  3,  48   )  struct (16) [rsp+0x28]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V48 tmp40        [V48,T37] (  2,  32   )     ref  ->  rsi         "argument with side effect"
-;  V49 tmp41        [V49,T28] (  3,  48   )   byref  ->  r13         "BlockOp address local"
-;  V50 cse0         [V50,T44] (  2,   9   )    long  ->  rbp         hoist "CSE - moderate"
-;  V51 cse1         [V51,T07] (  3,1152   )     int  ->  rcx         "CSE - aggressive"
-;  V52 cse2         [V52,T34] (  4,  32   )     int  ->  rdx         "CSE - moderate"
-;  V53 cse3         [V53,T43] (  4,  11.60)    long  ->  rdi         hoist "CSE - moderate"
-;  V54 rat0         [V54,T46] (  3,   4.40)    long  ->  rcx         "Spilling to split statement for tree"
-;  V55 rat1         [V55,T47] (  3,   4   )    long  ->  rbp         "runtime lookup"
-;  V56 rat2         [V56,T45] (  3,   5.60)    long  ->  rbp         "fgMakeTemp is creating a new local variable"
-;  V57 rat3         [V57,T30] (  3,  44.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V58 rat4         [V58,T14] (  0,   0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V59 rat5         [V59,T17] (  0,   0   )    long  ->  zero-ref    "runtime lookup"
-;* V60 rat6         [V60,T10] (  0,   0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V61 rat7         [V61,T02] (  3,2252.80)    long  ->  rcx         "Spilling to split statement for tree"
-;  V62 rat8         [V62,T01] (  3,2867.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V63 rat9         [V63,T21] (  3, 140.80)    long  ->  rcx         "Spilling to split statement for tree"
-;  V64 rat10        [V64,T22] (  3, 128   )    long  ->  rdx         "runtime lookup"
-;  V65 rat11        [V65,T19] (  3, 179.20)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V48 tmp40        [V48,T34] (  2,  32   )     ref  ->  rbx         "argument with side effect"
+;  V49 tmp41        [V49,T25] (  3,  48   )   byref  ->  r13         "BlockOp address local"
+;  V50 cse0         [V50,T41] (  2,   9   )    long  ->  rbp         hoist "CSE - moderate"
+;  V51 cse1         [V51,T06] (  3,1152   )     int  ->  rcx         "CSE - aggressive"
+;  V52 cse2         [V52,T31] (  4,  32   )     int  ->  rdx         "CSE - moderate"
+;  V53 cse3         [V53,T40] (  4,  11.60)    long  ->  rdi         "CSE - moderate"
+;  V54 rat0         [V54,T43] (  3,   4.40)    long  ->  rcx         "Spilling to split statement for tree"
+;  V55 rat1         [V55,T44] (  3,   4   )    long  ->  rbp         "runtime lookup"
+;  V56 rat2         [V56,T42] (  3,   5.60)    long  ->  rbp         "fgMakeTemp is creating a new local variable"
+;  V57 rat3         [V57,T27] (  3,  44.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V58 rat4         [V58,T02] (  3,2252.80)    long  ->  rcx         "Spilling to split statement for tree"
+;  V59 rat5         [V59,T01] (  3,2867.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V60 rat6         [V60,T18] (  3, 140.80)    long  ->  rcx         "Spilling to split statement for tree"
+;  V61 rat7         [V61,T19] (  3, 128   )    long  ->  rdx         "runtime lookup"
+;  V62 rat8         [V62,T16] (  3, 179.20)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 112
 
@@ -93,13 +90,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        vmovdqa  xmmword ptr [rsp+0x50], xmm4
        mov      qword ptr [rsp+0x60], rax
        mov      qword ptr [rsp+0x68], rcx
-       mov      rbx, rcx
-       ; gcrRegs +[rbx]
-       mov      rsi, rdx
+       mov      rsi, rcx
        ; gcrRegs +[rsi]
+       mov      rbx, rdx
+       ; gcrRegs +[rbx]
                        ;; size=53 bbWeight=1 PerfScore 15.33
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       mov      rdi, qword ptr [rbx]
+       mov      rdi, qword ptr [rsi]
        mov      rcx, rdi
        mov      rdx, qword ptr [rcx+0x38]
        mov      rdx, qword ptr [rdx]
@@ -117,12 +114,12 @@ G_M1799_IG04:        ; bbWeight=0.20, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
        mov      rbp, rax
                        ;; size=18 bbWeight=0.20 PerfScore 0.30
 G_M1799_IG05:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       mov      edx, dword ptr [rbx+0x28]
-       mov      dword ptr [rsi+0x18], edx
-       mov      dword ptr [rsi+0x1C], edx
+       mov      edx, dword ptr [rsi+0x28]
+       mov      dword ptr [rbx+0x18], edx
+       mov      dword ptr [rbx+0x1C], edx
        inc      edx
-       mov      dword ptr [rbx+0x28], edx
-       mov      r14, gword ptr [rbx+0x08]
+       mov      dword ptr [rsi+0x28], edx
+       mov      r14, gword ptr [rsi+0x08]
        ; gcrRegs +[r14]
        mov      r15d, dword ptr [r14+0x10]
        mov      rcx, gword ptr [r14+0x08]
@@ -132,7 +129,7 @@ G_M1799_IG05:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
                        ;; size=32 bbWeight=8 PerfScore 122.00
 G_M1799_IG06:        ; bbWeight=2, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        movsxd   rdx, r15d
-       mov      r8, rsi
+       mov      r8, rbx
        ; gcrRegs +[r8]
        call     CORINFO_HELP_ARRADDR_ST
        ; gcrRegs -[rcx r8]
@@ -145,16 +142,16 @@ G_M1799_IG06:        ; bbWeight=2, gcrefRegs=404A {rcx rbx rsi r14}, byrefRegs=0
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
        mov      rcx, r14
        ; gcrRegs +[rcx]
-       mov      rdx, rsi
+       mov      rdx, rbx
        ; gcrRegs +[rdx]
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx r14]
        ; gcr arg pop 0
                        ;; size=12 bbWeight=2 PerfScore 7.00
 G_M1799_IG08:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       mov      byte  ptr [rsi+0x22], 1
+       mov      byte  ptr [rbx+0x22], 1
        mov      r11, rbp
-       mov      rcx, gword ptr [rsi+0x10]
+       mov      rcx, gword ptr [rbx+0x10]
        ; gcrRegs +[rcx]
        call     [r11]
        ; gcrRegs -[rcx] +[rax]
@@ -164,17 +161,17 @@ G_M1799_IG08:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        test     r14, r14
        jne      SHORT G_M1799_IG15
                        ;; size=22 bbWeight=8 PerfScore 62.00
-G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rax rsi r14]
-       mov      rcx, gword ptr [rbx+0x20]
+G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax rbx r14]
+       mov      rcx, gword ptr [rsi+0x20]
        ; gcrRegs +[rcx]
        lea      rdx, [rsp+0x58]
        cmp      dword ptr [rcx], ecx
        call     [System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
-       mov      rsi, gword ptr [rsp+0x58]
-       ; gcrRegs +[rsi]
+       mov      rbx, gword ptr [rsp+0x58]
+       ; gcrRegs +[rbx]
        mov      r14, gword ptr [rsp+0x60]
        ; gcrRegs +[r14]
        mov      rcx, qword ptr [rdi+0x38]
@@ -184,7 +181,7 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byre
        je       SHORT G_M1799_IG12
                        ;; size=43 bbWeight=8 PerfScore 142.00
 G_M1799_IG10:        ; bbWeight=8, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
-       mov      r15d, dword ptr [rsi+0x1C]
+       mov      r15d, dword ptr [rbx+0x1C]
        lea      rdx, [rsp+0x38]
        mov      rcx, r14
        ; gcrRegs +[rcx]
@@ -213,7 +210,7 @@ G_M1799_IG13:        ; bbWeight=5.71, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=00
        mov      ecx, r15d
                        ;; size=3 bbWeight=5.71 PerfScore 1.43
 G_M1799_IG14:        ; bbWeight=8, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
-       mov      dword ptr [rsi+0x1C], ecx
+       mov      dword ptr [rbx+0x1C], ecx
                        ;; size=3 bbWeight=8 PerfScore 8.00
 G_M1799_IG15:        ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        mov      rcx, r14
@@ -226,7 +223,7 @@ G_M1799_IG15:        ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
        je       SHORT G_M1799_IG26
                        ;; size=20 bbWeight=512 PerfScore 2432.00
 G_M1799_IG16:        ; bbWeight=512, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, qword ptr [rbx]
+       mov      rcx, qword ptr [rsi]
        mov      rdx, qword ptr [rcx+0x38]
        mov      rdx, qword ptr [rdx]
        mov      r11, qword ptr [rdx+0x18]
@@ -264,7 +261,7 @@ G_M1799_IG20:        ; bbWeight=256, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
                        ;; size=12 bbWeight=256 PerfScore 1280.00
 G_M1799_IG21:        ; bbWeight=128, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[r11]
-       mov      r11d, dword ptr [rsi+0x1C]
+       mov      r11d, dword ptr [rbx+0x1C]
        cmp      r11d, ecx
        jle      SHORT G_M1799_IG23
                        ;; size=9 bbWeight=128 PerfScore 416.00
@@ -275,7 +272,7 @@ G_M1799_IG23:        ; bbWeight=91.43, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0
        mov      ecx, r11d
                        ;; size=3 bbWeight=91.43 PerfScore 22.86
 G_M1799_IG24:        ; bbWeight=128, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref
-       mov      dword ptr [rsi+0x1C], ecx
+       mov      dword ptr [rbx+0x1C], ecx
                        ;; size=3 bbWeight=128 PerfScore 128.00
 G_M1799_IG25:        ; bbWeight=256, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref, isz
        mov      rcx, r14
@@ -289,12 +286,12 @@ G_M1799_IG25:        ; bbWeight=256, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=000
                        ;; size=20 bbWeight=256 PerfScore 1216.00
 G_M1799_IG26:        ; bbWeight=256, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
...

libraries_tests.run.windows.x64.Release.mch

-34 (-4.38%) : 128409.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.Canon]:Create(System.String):System.Canon:this (Tier1)

@@ -9,60 +9,56 @@
 ; 1 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] ( 16,  9.37)     ref  ->  rbx         this class-hnd single-def <Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]>
+;  V00 this         [V00,T00] ( 15,  9.04)     ref  ->  rbx         this class-hnd single-def <Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]>
 ;  V01 arg1         [V01,T01] ( 13,  5.11)     ref  ->  rsi         class-hnd single-def <System.String>
 ;  V02 loc0         [V02,T06] (  6,  3.18)     ref  ->  rdi         class-hnd single-def <System.__Canon>
 ;  V03 loc1         [V03,T09] (  4,  3   )     ref  ->  rbp         class-hnd single-def <<unknown class>>
 ;  V04 loc2         [V04,T08] (  5,  3   )     int  ->  r14        
-;  V05 loc3         [V05,T26] (  3,  1.25)     ref  ->  r15         class-hnd <<unknown class>>
-;  V06 loc4         [V06,T27] (  3,  1.25)     ref  ->  r13         class-hnd <<unknown class>>
+;  V05 loc3         [V05,T23] (  3,  1.25)     ref  ->  r15         class-hnd <<unknown class>>
+;  V06 loc4         [V06,T24] (  3,  1.25)     ref  ->  r13         class-hnd <<unknown class>>
 ;  V07 loc5         [V07,T11] (  3,  2.68)     ref  ->  rbp         class-hnd single-def <<unknown class>>
 ;  V08 loc6         [V08,T04] (  5,  3.70)     int  ->  r14        
-;  V09 loc7         [V09,T25] (  2,  1.35)     ref  ->  r13         class-hnd <<unknown class>>
-;  V10 loc8         [V10,T35] (  4,  0   )     ref  ->  rbp         class-hnd exact single-def <<unknown class>>
-;  V11 loc9         [V11,T38] (  3,  0   )     ref  ->  r14         class-hnd single-def <<unknown class>>
-;  V12 loc10        [V12,T34] (  5,  0   )     int  ->  r15        
-;  V13 loc11        [V13,T44] (  2,  0   )     ref  ->  r13         class-hnd <<unknown class>>
-;  V14 loc12        [V14,T36] (  4,  0   )     ref  ->  rax         class-hnd <Microsoft.Extensions.Options.ValidateOptionsResult>
+;  V09 loc7         [V09,T22] (  2,  1.35)     ref  ->  r13         class-hnd <<unknown class>>
+;  V10 loc8         [V10,T31] (  4,  0   )     ref  ->  rbp         class-hnd exact single-def <<unknown class>>
+;  V11 loc9         [V11,T34] (  3,  0   )     ref  ->  r14         class-hnd single-def <<unknown class>>
+;  V12 loc10        [V12,T30] (  5,  0   )     int  ->  r15        
+;  V13 loc11        [V13,T40] (  2,  0   )     ref  ->  r13         class-hnd <<unknown class>>
+;  V14 loc12        [V14,T32] (  4,  0   )     ref  ->  rax         class-hnd <Microsoft.Extensions.Options.ValidateOptionsResult>
 ;  V15 OutArgs      [V15    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V16 tmp1         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V17 tmp2         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V18 tmp3         [V18,T21] (  4,  1.50)    long  ->  r11         "VirtualCall with runtime lookup"
+;  V18 tmp3         [V18,T18] (  4,  1.50)    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V19 tmp4         [V19    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V20 tmp5         [V20,T22] (  4,  1.50)    long  ->  r11         "VirtualCall with runtime lookup"
+;  V20 tmp5         [V20,T19] (  4,  1.50)    long  ->  r11         "VirtualCall with runtime lookup"
 ;* V21 tmp6         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V22 tmp7         [V22,T02] (  4,  4.05)    long  ->  r11         "VirtualCall with runtime lookup"
-;  V23 tmp8         [V23,T39] (  3,  0   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V23 tmp8         [V23,T35] (  3,  0   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V24 tmp9         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp10        [V25,T37] (  4,  0   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V26 tmp11        [V26,T40] (  3,  0   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V25 tmp10        [V25,T33] (  4,  0   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V26 tmp11        [V26,T36] (  3,  0   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V27 tmp12        [V27,T15] (  3,  2   )     ref  ->  rdi         "guarded devirt return temp"
 ;* V28 tmp13        [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.Extensions.Options.OptionsFactory`1[Microsoft.Extensions.Logging.LoggerFilterOptions]>
-;  V29 tmp14        [V29,T32] (  2,  0.50)   ubyte  ->  rax         "Inline return value spill temp"
+;  V29 tmp14        [V29,T29] (  2,  0.50)   ubyte  ->  rax         "Inline return value spill temp"
 ;* V30 tmp15        [V30    ] (  0,  0   )   byref  ->  zero-ref    "impAppendStmt"
 ;  V31 tmp16        [V31,T17] (  2,  2   )    long  ->  rcx         "argument with side effect"
-;  V32 tmp17        [V32,T45] (  2,  0   )     ref  ->   r8         single-def "argument with side effect"
+;  V32 tmp17        [V32,T41] (  2,  0   )     ref  ->   r8         single-def "argument with side effect"
 ;  V33 cse0         [V33,T12] (  3,  2.68)     int  ->  r15         "CSE - aggressive"
-;  V34 rat0         [V34,T19] (  2,  1.35)    long  ->  rcx         "Spilling to split statement for tree"
-;* V35 rat1         [V35,T33] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;  V36 rat2         [V36,T18] (  2,  1.35)    long  ->  rcx         "spilling expr"
-;* V37 rat3         [V37,T20] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V38 rat4         [V38,T13] (  3,  2.36)    long  ->  rcx         "Spilling to split statement for tree"
-;  V39 rat5         [V39,T16] (  3,  2   )    long  ->  rcx         "runtime lookup"
-;  V40 rat6         [V40,T10] (  3,  2.80)    long  ->  rdx         "spilling expr"
-;  V41 rat7         [V41,T14] (  3,  2.24)    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V42 rat8         [V42,T28] (  3,  1.18)    long  ->  rcx         "Spilling to split statement for tree"
-;  V43 rat9         [V43,T23] (  3,  1.40)    long  ->  rdx         "spilling expr"
-;  V44 rat10        [V44,T30] (  3,  1.12)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V45 rat11        [V45,T29] (  3,  1.18)    long  ->  rcx         "Spilling to split statement for tree"
-;  V46 rat12        [V46,T24] (  3,  1.40)    long  ->  rdx         "spilling expr"
-;  V47 rat13        [V47,T31] (  3,  1.12)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V48 rat14        [V48,T05] (  3,  3.19)    long  ->  rcx         "Spilling to split statement for tree"
-;  V49 rat15        [V49,T03] (  3,  3.78)    long  ->  rdx         "spilling expr"
-;  V50 rat16        [V50,T07] (  3,  3.03)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V51 rat17        [V51,T41] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
-;  V52 rat18        [V52,T42] (  3,  0   )    long  ->  rdx         "spilling expr"
-;  V53 rat19        [V53,T43] (  3,  0   )    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V34 rat0         [V34,T13] (  3,  2.36)    long  ->  rcx         "Spilling to split statement for tree"
+;  V35 rat1         [V35,T16] (  3,  2   )    long  ->  rcx         "runtime lookup"
+;  V36 rat2         [V36,T10] (  3,  2.80)    long  ->  rdx         "spilling expr"
+;  V37 rat3         [V37,T14] (  3,  2.24)    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V38 rat4         [V38,T25] (  3,  1.18)    long  ->  rcx         "Spilling to split statement for tree"
+;  V39 rat5         [V39,T20] (  3,  1.40)    long  ->  rdx         "spilling expr"
+;  V40 rat6         [V40,T27] (  3,  1.12)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V41 rat7         [V41,T26] (  3,  1.18)    long  ->  rcx         "Spilling to split statement for tree"
+;  V42 rat8         [V42,T21] (  3,  1.40)    long  ->  rdx         "spilling expr"
+;  V43 rat9         [V43,T28] (  3,  1.12)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V44 rat10        [V44,T05] (  3,  3.19)    long  ->  rcx         "Spilling to split statement for tree"
+;  V45 rat11        [V45,T03] (  3,  3.78)    long  ->  rdx         "spilling expr"
+;  V46 rat12        [V46,T07] (  3,  3.03)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V47 rat13        [V47,T37] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
+;  V48 rat14        [V48,T38] (  3,  0   )    long  ->  rdx         "spilling expr"
+;  V49 rat15        [V49,T39] (  3,  0   )    long  ->  r11         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 48
 
@@ -115,16 +111,9 @@ G_M22830_IG05:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
        ; gcrRegs +[rbp]
        xor      r14d, r14d
        cmp      dword ptr [rbp+0x08], 0
-       jle      G_M22830_IG24
+       jle      G_M22830_IG23
                        ;; size=17 bbWeight=1 PerfScore 6.25
-G_M22830_IG06:        ; bbWeight=0.34, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, qword ptr [rbx]
-       mov      rcx, qword ptr [rcx+0x38]
-       mov      rcx, qword ptr [rcx]
-       cmp      qword ptr [rcx+0x08], 64
-       jle      SHORT G_M22830_IG07
-                       ;; size=17 bbWeight=0.34 PerfScore 3.36
-G_M22830_IG07:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M22830_IG06:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      ecx, r14d
        mov      r15, gword ptr [rbp+8*rcx+0x10]
        ; gcrRegs +[r15]
@@ -132,17 +121,17 @@ G_M22830_IG07:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRe
        mov      rdx, qword ptr [rcx+0x38]
        mov      rdx, qword ptr [rdx]
        cmp      qword ptr [rdx+0x08], 64
-       jle      SHORT G_M22830_IG15
+       jle      SHORT G_M22830_IG13
                        ;; size=25 bbWeight=0.50 PerfScore 6.12
-G_M22830_IG08:        ; bbWeight=0.40, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M22830_IG07:        ; bbWeight=0.40, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
        mov      rax, qword ptr [rdx+0x40]
        test     rax, rax
-       je       SHORT G_M22830_IG15
+       je       SHORT G_M22830_IG13
                        ;; size=9 bbWeight=0.40 PerfScore 1.30
-G_M22830_IG09:        ; bbWeight=0.32, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
+G_M22830_IG08:        ; bbWeight=0.32, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
        mov      rcx, rax
                        ;; size=3 bbWeight=0.32 PerfScore 0.08
-G_M22830_IG10:        ; bbWeight=0.50, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
+G_M22830_IG09:        ; bbWeight=0.50, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
        mov      rdx, r15
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ISINSTANCEOFANY
@@ -151,22 +140,22 @@ G_M22830_IG10:        ; bbWeight=0.50, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byr
        mov      r13, rax
        ; gcrRegs +[r13]
        test     r13, r13
-       je       G_M22830_IG19
+       je       G_M22830_IG17
                        ;; size=20 bbWeight=0.50 PerfScore 1.38
-G_M22830_IG11:        ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
+G_M22830_IG10:        ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rax r15]
        mov      rcx, qword ptr [rbx]
        mov      rdx, qword ptr [rcx+0x38]
        mov      rdx, qword ptr [rdx]
        cmp      qword ptr [rdx+0x08], 80
-       jle      G_M22830_IG17
-                       ;; size=21 bbWeight=0.25 PerfScore 2.50
-G_M22830_IG12:        ; bbWeight=0.20, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
+       jle      SHORT G_M22830_IG15
+                       ;; size=17 bbWeight=0.25 PerfScore 2.50
+G_M22830_IG11:        ; bbWeight=0.20, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
        mov      r11, qword ptr [rdx+0x50]
        test     r11, r11
-       je       G_M22830_IG17
-                       ;; size=13 bbWeight=0.20 PerfScore 0.65
-G_M22830_IG13:        ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
+       je       SHORT G_M22830_IG15
+                       ;; size=9 bbWeight=0.20 PerfScore 0.65
+G_M22830_IG12:        ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
        mov      rcx, r13
        ; gcrRegs +[rcx]
        mov      rdx, rsi
@@ -176,24 +165,33 @@ G_M22830_IG13:        ; bbWeight=0.25, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byr
        call     [r11]
        ; gcrRegs -[rcx rdx r8 r13]
        ; gcr arg pop 0
-       jmp      G_M22830_IG23
+       jmp      G_M22830_IG22
                        ;; size=17 bbWeight=0.25 PerfScore 1.44
-G_M22830_IG14:        ; bbWeight=0.09, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
+G_M22830_IG13:        ; bbWeight=0.18, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[r15]
        mov      rdx, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        ; gcr arg pop 0
-       mov      r11, rax
-       jmp      G_M22830_IG22
-                       ;; size=23 bbWeight=0.09 PerfScore 0.31
-G_M22830_IG15:        ; bbWeight=0.18, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+       mov      rcx, rax
+       jmp      SHORT G_M22830_IG09
+                       ;; size=20 bbWeight=0.18 PerfScore 0.63
+G_M22830_IG14:        ; bbWeight=0.09, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
        mov      rdx, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        ; gcr arg pop 0
-       mov      rcx, rax
-       jmp      SHORT G_M22830_IG10
-                       ;; size=20 bbWeight=0.18 PerfScore 0.63
+       mov      r11, rax
+       jmp      G_M22830_IG21
+                       ;; size=23 bbWeight=0.09 PerfScore 0.31
+G_M22830_IG15:        ; bbWeight=0.09, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[r15] +[r13]
+       mov      rdx, 0xD1FFAB1E      ; global ptr
+       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
+       ; gcr arg pop 0
+       mov      r11, rax
+       jmp      SHORT G_M22830_IG12
+                       ;; size=20 bbWeight=0.09 PerfScore 0.31
 G_M22830_IG16:        ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[r13] +[r15]
        mov      ecx, 1
        call     [<unknown method>]
        ; gcr arg pop 0
@@ -215,47 +213,37 @@ G_M22830_IG16:        ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byr
        ; byrRegs -[rcx rdx]
        ; gcr arg pop 0
        test     eax, eax
-       je       SHORT G_M22830_IG23
-       jmp      SHORT G_M22830_IG18
+       je       SHORT G_M22830_IG22
+       jmp      SHORT G_M22830_IG19
                        ;; size=70 bbWeight=0.25 PerfScore 5.75
-G_M22830_IG17:        ; bbWeight=0.09, gcrefRegs=20E8 {rbx rbp rsi rdi r13}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[r15] +[r13]
-       mov      rdx, 0xD1FFAB1E      ; global ptr
-       call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
-       ; gcr arg pop 0
-       mov      r11, rax
-       jmp      G_M22830_IG13
-                       ;; size=23 bbWeight=0.09 PerfScore 0.31
-G_M22830_IG18:        ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[r13] +[r15]
+G_M22830_IG17:        ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+       mov      rcx, 0xD1FFAB1E
+       ; gcrRegs +[rcx]
+       cmp      rsi, rcx
+       je       SHORT G_M22830_IG19
+       test     rsi, rsi
+       je       SHORT G_M22830_IG22
+       cmp      dword ptr [rsi+0x08], 0
+       je       SHORT G_M22830_IG16
+                       ;; size=26 bbWeight=0.25 PerfScore 1.69
+G_M22830_IG18:        ; bbWeight=0.23, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rcx r15]
+       jmp      SHORT G_M22830_IG22
+                       ;; size=2 bbWeight=0.23 PerfScore 0.45
+G_M22830_IG19:        ; bbWeight=0.25, gcrefRegs=80E8 {rbx rbp rsi rdi r15}, byrefRegs=0000 {}, byref
+       ; gcrRegs +[r15]
        mov      rcx, qword ptr [rbx]
        mov      rdx, qword ptr [rcx+0x38]
        mov      rdx, qword ptr [rdx]
        cmp      qword ptr [rdx+0x08], 72
        jle      G_M22830_IG14
-       jmp      SHORT G_M22830_IG21
...

-20 (-1.15%) : 166806.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)

@@ -11,30 +11,30 @@
 ;
 ;  V00 this         [V00,T00] ( 31, 13.34)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T01] ( 15,  6.36)     ref  ->  rsi         ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T15] (  5,  3   )     ref  ->  rdi         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T16] (  6,  2.50)   ubyte  ->  rbp         single-def
+;  V02 arg2         [V02,T14] (  5,  3   )     ref  ->  rdi         class-hnd single-def <System.__Canon>
+;  V03 arg3         [V03,T15] (  6,  2.50)   ubyte  ->  rbp         single-def
 ;  V04 loc0         [V04    ] ( 17,  6.91)  struct (16) [rsp+0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-;  V05 loc1         [V05,T25] (  5,  3   )     ref  ->  [rsp+0x30]  class-hnd single-def <<unknown class>>
-;  V06 loc2         [V06,T23] (  6,  3.54)     int  ->  r15         single-def
-;  V07 loc3         [V07,T33] (  7,  2.43)     int  ->  r13        
-;  V08 loc4         [V08,T24] (  5,  3.07)   byref  ->  r12        
-;  V09 loc5         [V09,T13] ( 13,  5.41)     int  ->  [rsp+0x4C] 
-;  V10 loc6         [V10,T36] (  5,  2.00)     int  ->  r13        
-;  V11 loc7         [V11,T52] (  4,  1.50)     ref  ->  [rsp+0x28]  class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-;  V12 loc8         [V12,T51] (  3,  1.50)     int  ->  r13         single-def
+;  V05 loc1         [V05,T23] (  5,  3   )     ref  ->  [rsp+0x30]  class-hnd single-def <<unknown class>>
+;  V06 loc2         [V06,T21] (  6,  3.54)     int  ->  r15         single-def
+;  V07 loc3         [V07,T31] (  7,  2.43)     int  ->  r13        
+;  V08 loc4         [V08,T22] (  5,  3.07)   byref  ->  r12        
+;  V09 loc5         [V09,T12] ( 13,  5.41)     int  ->  [rsp+0x4C] 
+;  V10 loc6         [V10,T34] (  5,  2.00)     int  ->  r13        
+;  V11 loc7         [V11,T49] (  4,  1.50)     ref  ->  [rsp+0x28]  class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+;  V12 loc8         [V12,T48] (  3,  1.50)     int  ->  r13         single-def
 ;  V13 OutArgs      [V13    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T39] (  3,  2   )     int  ->  r15        
+;  V14 tmp1         [V14,T37] (  3,  2   )     int  ->  r15        
 ;* V15 tmp2         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp3         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V17 tmp4         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T14] (  5,  5.00)   byref  ->  rbp         single-def "dup spill"
-;  V19 tmp6         [V19,T71] (  3,  0   )    long  ->  rdx         "spilling helperCall"
+;  V18 tmp5         [V18,T13] (  5,  5.00)   byref  ->  rbp         single-def "dup spill"
+;  V19 tmp6         [V19,T68] (  3,  0   )    long  ->  rdx         "spilling helperCall"
 ;* V20 tmp7         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp8         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp9         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V23 tmp10        [V23,T72] (  3,  0   )    long  ->  [rsp+0x40]  "spilling helperCall"
+;  V23 tmp10        [V23,T69] (  3,  0   )    long  ->  [rsp+0x40]  "spilling helperCall"
 ;* V24 tmp11        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T69] (  4,  0   )    long  ->  [rsp+0x38]  "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T66] (  4,  0   )    long  ->  [rsp+0x38]  "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V27 tmp14        [V27    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V28 tmp15        [V28    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,12 +47,12 @@
 ;* V35 tmp22        [V35    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp23        [V36    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V37 tmp24        [V37    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V38 tmp25        [V38,T70] (  4,  0   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V39 tmp26        [V39,T40] (  3,  2   )     int  ->  rax         "guarded devirt return temp"
+;  V38 tmp25        [V38,T67] (  4,  0   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V39 tmp26        [V39,T38] (  3,  2   )     int  ->  rax         "guarded devirt return temp"
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt arg temp"
 ;* V41 tmp28        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases],Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases]>
-;  V42 tmp29        [V42,T56] (  3,  1.00)     int  ->  rax         "guarded devirt return temp"
-;  V43 tmp30        [V43,T19] (  7,  4.24)     ref  ->  r14         "guarded devirt arg temp"
+;  V42 tmp29        [V42,T53] (  3,  1.00)     int  ->  rax         "guarded devirt return temp"
+;  V43 tmp30        [V43,T17] (  7,  4.24)     ref  ->  r14         "guarded devirt arg temp"
 ;* V44 tmp31        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
 ;* V45 tmp32        [V45    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp33        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,95 +62,92 @@
 ;  V50 tmp37        [V50,T05] (  3,  6   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V51 tmp38        [V51,T06] (  3,  6   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V53 tmp40        [V53,T54] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V53 tmp40        [V53,T51] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V55 tmp42        [V55,T55] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V55 tmp42        [V55,T52] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V56 tmp43        [V56    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <System.Object>
 ;* V57 tmp44        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V58 tmp45        [V58,T57] (  3,  1.00)     int  ->  rax         "guarded devirt return temp"
+;  V58 tmp45        [V58,T54] (  3,  1.00)     int  ->  rax         "guarded devirt return temp"
 ;* V59 tmp46        [V59    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V60 tmp47        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
-;  V61 tmp48        [V61,T50] (  2,  1.52)     ref  ->  rax         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V61 tmp48        [V61,T47] (  2,  1.52)     ref  ->  rax         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;* V62 tmp49        [V62    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
 ;* V63 tmp50        [V63    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V64 tmp51        [V64    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V65 tmp52        [V65    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V66 tmp53        [V66,T61] (  3,  0.41)     int  ->  rdx         "Inlining Arg"
-;  V67 tmp54        [V67,T59] (  3,  0.41)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V68 tmp55        [V68,T60] (  3,  0.41)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V66 tmp53        [V66,T58] (  3,  0.41)     int  ->  rdx         "Inlining Arg"
+;  V67 tmp54        [V67,T56] (  3,  0.41)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V68 tmp55        [V68,T57] (  3,  0.41)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V69 tmp56        [V69    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V70 tmp57        [V70,T67] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V70 tmp57        [V70,T64] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V71 tmp58        [V71    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V72 tmp59        [V72,T68] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V72 tmp59        [V72,T65] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V73 tmp60        [V73    ] ( 12,  4.45)     ref  ->  [rsp+0x50]  do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
 ;  V74 tmp61        [V74    ] ( 17,  6.91)     int  ->  [rsp+0x58]  do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-;  V75 tmp62        [V75,T41] (  2,  2   )     ref  ->  rcx         single-def "field V46._items (fldOffset=0x0)" P-INDEP
-;  V76 tmp63        [V76,T42] (  2,  2   )     int  ->  rdx         single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;  V77 tmp64        [V77,T65] (  2,  0.14)     ref  ->  rcx         single-def "field V63._items (fldOffset=0x0)" P-INDEP
-;  V78 tmp65        [V78,T66] (  2,  0.14)     int  ->  rdx         single-def "field V63._length (fldOffset=0x8)" P-INDEP
+;  V75 tmp62        [V75,T39] (  2,  2   )     ref  ->  rcx         single-def "field V46._items (fldOffset=0x0)" P-INDEP
+;  V76 tmp63        [V76,T40] (  2,  2   )     int  ->  rdx         single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;  V77 tmp64        [V77,T62] (  2,  0.14)     ref  ->  rcx         single-def "field V63._items (fldOffset=0x0)" P-INDEP
+;  V78 tmp65        [V78,T63] (  2,  0.14)     int  ->  rdx         single-def "field V63._length (fldOffset=0x8)" P-INDEP
 ;  V79 tmp66        [V79,T08] (  3,  6   )     int  ->  rax         "index expr"
 ;  V80 tmp67        [V80,T09] (  3,  6   )     int  ->  rdx         "index expr"
-;  V81 tmp68        [V81,T22] (  2,  3.91)    long  ->  rdx         "argument with side effect"
-;  V82 tmp69        [V82,T46] (  2,  2.00)    long  ->  rdx         "argument with side effect"
-;  V83 tmp70        [V83,T49] (  2,  1.91)    long  ->  rdx         "argument with side effect"
-;  V84 tmp71        [V84,T64] (  2,  0.27)     int  ->  rdx         "argument with side effect"
-;  V85 tmp72        [V85,T62] (  3,  0.41)     int  ->  rax         "index expr"
-;  V86 tmp73        [V86,T63] (  3,  0.41)     int  ->  rdx         "index expr"
-;  V87 tmp74        [V87,T38] (  2,  2.00)    long  ->  rdx         "argument with side effect"
-;  V88 tmp75        [V88,T93] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V89 tmp76        [V89,T92] (  2,  0   )     ref  ->  rdx         "argument with side effect"
-;  V90 tmp77        [V90,T94] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V91 tmp78        [V91,T95] (  2,  0   )    long  ->  rcx         "argument with side effect"
-;  V92 tmp79        [V92,T96] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V93 tmp80        [V93,T97] (  2,  0   )    long  ->  rcx         "argument with side effect"
-;  V94 tmp81        [V94,T47] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V81 tmp68        [V81,T20] (  2,  3.91)    long  ->  rdx         "argument with side effect"
+;  V82 tmp69        [V82,T43] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V83 tmp70        [V83,T46] (  2,  1.91)    long  ->  rdx         "argument with side effect"
+;  V84 tmp71        [V84,T61] (  2,  0.27)     int  ->  rdx         "argument with side effect"
+;  V85 tmp72        [V85,T59] (  3,  0.41)     int  ->  rax         "index expr"
+;  V86 tmp73        [V86,T60] (  3,  0.41)     int  ->  rdx         "index expr"
+;  V87 tmp74        [V87,T36] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V88 tmp75        [V88,T90] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V89 tmp76        [V89,T89] (  2,  0   )     ref  ->  rdx         "argument with side effect"
+;  V90 tmp77        [V90,T91] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V91 tmp78        [V91,T92] (  2,  0   )    long  ->  rcx         "argument with side effect"
+;  V92 tmp79        [V92,T93] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V93 tmp80        [V93,T94] (  2,  0   )    long  ->  rcx         "argument with side effect"
+;  V94 tmp81        [V94,T44] (  2,  2.00)    long  ->  rdx         "argument with side effect"
 ;  V95 cse0         [V95,T03] ( 31,  6.32)    long  ->  registers   multi-def "CSE - aggressive"
-;  V96 rat0         [V96,T73] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
-;  V97 rat1         [V97,T74] (  3,  0   )    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V98 rat2         [V98,T17] (  3,  4.40)    long  ->  rcx         "Spilling to split statement for tree"
-;  V99 rat3         [V99,T20] (  3,  4   )    long  ->  rdx         "runtime lookup"
+;  V96 rat0         [V96,T70] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
+;  V97 rat1         [V97,T71] (  3,  0   )    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V98 rat2         [V98,T16] (  3,  4.40)    long  ->  rcx         "Spilling to split statement for tree"
+;  V99 rat3         [V99,T18] (  3,  4   )    long  ->  rdx         "runtime lookup"
 ;  V100 rat4        [V100,T10] (  3,  5.60)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V101 rat5        [V101,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V102 rat6        [V102,T43] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V103 rat7        [V103,T11] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V104 rat8        [V104,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat9        [V105,T26] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V106 rat10       [V106,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat11       [V107,T21] (  3,  3.91)    long  ->  rdx         "runtime lookup"
-;  V108 rat12       [V108,T12] (  3,  5.47)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V109 rat13       [V109,T44] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V110 rat14       [V110,T29] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V111 rat15       [V111,T35] (  3,  2.10)    long  ->  rcx         "Spilling to split statement for tree"
-;  V112 rat16       [V112,T48] (  3,  1.91)    long  ->  rdx         "runtime lookup"
-;  V113 rat17       [V113,T31] (  3,  2.67)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V114 rat18       [V114,T58] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V115 rat19       [V115,T32] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat20       [V116,T34] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V117 rat21       [V117,T45] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V118 rat22       [V118,T30] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V119 rat23       [V119,T75] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
-;  V120 rat24       [V120,T76] (  3,  0   )    long  ->  rcx         "runtime lookup"
-;  V121 rat25       [V121,T77] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;* V122 rat26       [V122,T78] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V123 rat27       [V123,T98] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V124 rat28       [V124,T79] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V125 rat29       [V125,T80] (  3,  0   )    long  ->  rdx         "runtime lookup"
-;  V126 rat30       [V126,T81] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V127 rat31       [V127,T82] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V128 rat32       [V128,T83] (  3,  0   )    long  ->   r8         "fgMakeTemp is creating a new local variable"
-;  V129 rat33       [V129,T84] (  3,  0   )    long  ->  rdx         "runtime lookup"
-;  V130 rat34       [V130,T85] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V131 rat35       [V131,T99] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V132 rat36       [V132,T86] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V133 rat37       [V133,T87] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;* V101 rat5        [V101,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V102 rat6        [V102,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V103 rat7        [V103,T02] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V104 rat8        [V104,T19] (  3,  3.91)    long  ->  rdx         "runtime lookup"
+;  V105 rat9        [V105,T11] (  3,  5.47)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V106 rat10       [V106,T41] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V107 rat11       [V107,T27] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V108 rat12       [V108,T33] (  3,  2.10)    long  ->  rcx         "Spilling to split statement for tree"
+;  V109 rat13       [V109,T45] (  3,  1.91)    long  ->  rdx         "runtime lookup"
+;  V110 rat14       [V110,T29] (  3,  2.67)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V111 rat15       [V111,T55] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V112 rat16       [V112,T30] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V113 rat17       [V113,T32] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V114 rat18       [V114,T42] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V115 rat19       [V115,T28] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V116 rat20       [V116,T72] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
+;  V117 rat21       [V117,T73] (  3,  0   )    long  ->  rcx         "runtime lookup"
+;  V118 rat22       [V118,T74] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;* V119 rat23       [V119,T75] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V120 rat24       [V120,T95] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V121 rat25       [V121,T76] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V122 rat26       [V122,T77] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V123 rat27       [V123,T78] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V124 rat28       [V124,T79] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V125 rat29       [V125,T80] (  3,  0   )    long  ->   r8         "fgMakeTemp is creating a new local variable"
+;  V126 rat30       [V126,T81] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V127 rat31       [V127,T82] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V128 rat32       [V128,T96] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V129 rat33       [V129,T83] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V130 rat34       [V130,T84] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V131 rat35       [V131,T85] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V132 rat36       [V132,T86] (  3,  0   )    long  ->  rcx         "runtime lookup"
+;  V133 rat37       [V133,T87] (  3,  0   )    long  ->  rcx         "fgMakeTemp is creating a new local variable"
 ;  V134 rat38       [V134,T88] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V135 rat39       [V135,T89] (  3,  0   )    long  ->  rcx         "runtime lookup"
-;  V136 rat40       [V136,T90] (  3,  0   )    long  ->  rcx         "fgMakeTemp is creating a new local variable"
-;  V137 rat41       [V137,T91] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V138 rat42       [V138,T53] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V139 rat43       [V139,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V140 rat44       [V140,T37] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V141 rat45       [V141,T28] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V135 rat39       [V135,T50] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V136 rat40       [V136,T25] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V137 rat41       [V137,T35] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V138 rat42       [V138,T26] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 104
 
@@ -179,7 +176,7 @@ G_M33517_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=48 bbWeight=1 PerfScore 13.50
 G_M33517_IG02:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        test     rsi, rsi
-       je       G_M33517_IG45
+       je       G_M33517_IG46
        cmp      dword ptr [rbx+0x40], 0
        je       G_M33517_IG09
                        ;; size=19 bbWeight=1 PerfScore 5.25
@@ -191,10 +188,10 @@ G_M33517_IG04:        ; bbWeight=1, extend
        mov      r14, gword ptr [rbx+0x08]
        ; gcrRegs +[r14]
        test     r14, r14
-       jne      G_M33517_IG46
+       jne      G_M33517_IG47
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.TransformNode`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases],Microsoft.CodeAnalysis.SourceGeneration.GlobalAliases]
        cmp      qword ptr [rsi], rcx
-       jne      G_M33517_IG11
+       jne      G_M33517_IG13
                        ;; size=32 bbWeight=1 PerfScore 7.50
 G_M33517_IG05:        ; bbWeight=0.64, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
        mov      rcx, rsi
@@ -220,11 +217,11 @@ G_M33517_IG07:        ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
...

-20 (-1.15%) : 618534.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)

@@ -11,30 +11,30 @@
 ;
 ;  V00 this         [V00,T00] ( 31, 13.34)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T02] ( 15,  6.27)     ref  ->  rsi         ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T15] (  5,  3   )     ref  ->  rdi         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T16] (  6,  2.50)   ubyte  ->  rbp         single-def
+;  V02 arg2         [V02,T14] (  5,  3   )     ref  ->  rdi         class-hnd single-def <System.__Canon>
+;  V03 arg3         [V03,T15] (  6,  2.50)   ubyte  ->  rbp         single-def
 ;  V04 loc0         [V04    ] ( 17,  6.92)  struct (16) [rsp+0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-;  V05 loc1         [V05,T25] (  5,  3   )     ref  ->  [rsp+0x30]  class-hnd single-def <<unknown class>>
-;  V06 loc2         [V06,T23] (  6,  3.55)     int  ->  r15         single-def
-;  V07 loc3         [V07,T33] (  7,  2.44)     int  ->  r13        
-;  V08 loc4         [V08,T24] (  5,  3.07)   byref  ->  r12        
-;  V09 loc5         [V09,T13] ( 13,  5.42)     int  ->  [rsp+0x4C] 
-;  V10 loc6         [V10,T36] (  5,  2.00)     int  ->  r13        
-;  V11 loc7         [V11,T51] (  4,  1.50)     ref  ->  [rsp+0x28]  class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-;  V12 loc8         [V12,T50] (  3,  1.50)     int  ->  r13         single-def
+;  V05 loc1         [V05,T23] (  5,  3   )     ref  ->  [rsp+0x30]  class-hnd single-def <<unknown class>>
+;  V06 loc2         [V06,T21] (  6,  3.55)     int  ->  r15         single-def
+;  V07 loc3         [V07,T31] (  7,  2.44)     int  ->  r13        
+;  V08 loc4         [V08,T22] (  5,  3.07)   byref  ->  r12        
+;  V09 loc5         [V09,T12] ( 13,  5.42)     int  ->  [rsp+0x4C] 
+;  V10 loc6         [V10,T34] (  5,  2.00)     int  ->  r13        
+;  V11 loc7         [V11,T48] (  4,  1.50)     ref  ->  [rsp+0x28]  class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+;  V12 loc8         [V12,T47] (  3,  1.50)     int  ->  r13         single-def
 ;  V13 OutArgs      [V13    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T39] (  3,  2   )     int  ->  r15        
+;  V14 tmp1         [V14,T37] (  3,  2   )     int  ->  r15        
 ;* V15 tmp2         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp3         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V17 tmp4         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T14] (  5,  5.00)   byref  ->  rbp         single-def "dup spill"
-;  V19 tmp6         [V19,T71] (  3,  0   )    long  ->  rdx         "spilling helperCall"
+;  V18 tmp5         [V18,T13] (  5,  5.00)   byref  ->  rbp         single-def "dup spill"
+;  V19 tmp6         [V19,T68] (  3,  0   )    long  ->  rdx         "spilling helperCall"
 ;* V20 tmp7         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp8         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp9         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V23 tmp10        [V23,T72] (  3,  0   )    long  ->  [rsp+0x40]  "spilling helperCall"
+;  V23 tmp10        [V23,T69] (  3,  0   )    long  ->  [rsp+0x40]  "spilling helperCall"
 ;* V24 tmp11        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T69] (  4,  0   )    long  ->  [rsp+0x38]  "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T66] (  4,  0   )    long  ->  [rsp+0x38]  "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V27 tmp14        [V27    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V28 tmp15        [V28    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,12 +47,12 @@
 ;* V35 tmp22        [V35    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp23        [V36    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V37 tmp24        [V37    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V38 tmp25        [V38,T70] (  4,  0   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V39 tmp26        [V39,T40] (  3,  2   )     int  ->  rax         "guarded devirt return temp"
+;  V38 tmp25        [V38,T67] (  4,  0   )    long  ->  r11         "VirtualCall with runtime lookup"
+;  V39 tmp26        [V39,T38] (  3,  2   )     int  ->  rax         "guarded devirt return temp"
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt arg temp"
 ;* V41 tmp28        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.InputNode`1[Microsoft.CodeAnalysis.Compilation]>
-;  V42 tmp29        [V42,T56] (  3,  1.00)     int  ->  rax         "guarded devirt return temp"
-;  V43 tmp30        [V43,T17] (  7,  4.47)     ref  ->  r14         "guarded devirt arg temp"
+;  V42 tmp29        [V42,T53] (  3,  1.00)     int  ->  rax         "guarded devirt return temp"
+;  V43 tmp30        [V43,T16] (  7,  4.47)     ref  ->  r14         "guarded devirt arg temp"
 ;* V44 tmp31        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
 ;* V45 tmp32        [V45    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp33        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,95 +62,92 @@
 ;  V50 tmp37        [V50,T05] (  3,  6   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V51 tmp38        [V51,T06] (  3,  6   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V53 tmp40        [V53,T54] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V53 tmp40        [V53,T51] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V55 tmp42        [V55,T55] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V55 tmp42        [V55,T52] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V56 tmp43        [V56    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <System.Object>
 ;* V57 tmp44        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V58 tmp45        [V58,T57] (  3,  1.00)     int  ->  rax         "guarded devirt return temp"
+;  V58 tmp45        [V58,T54] (  3,  1.00)     int  ->  rax         "guarded devirt return temp"
 ;* V59 tmp46        [V59    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V60 tmp47        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedLocal>
-;  V61 tmp48        [V61,T52] (  2,  1.06)     ref  ->  rax         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
+;  V61 tmp48        [V61,T49] (  2,  1.06)     ref  ->  rax         class-hnd "impAppendStmt" <Microsoft.CodeAnalysis.CSharp.Symbol>
 ;* V62 tmp49        [V62    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
 ;* V63 tmp50        [V63    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V64 tmp51        [V64    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V65 tmp52        [V65    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V66 tmp53        [V66,T61] (  3,  0.41)     int  ->  rdx         "Inlining Arg"
-;  V67 tmp54        [V67,T59] (  3,  0.41)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V68 tmp55        [V68,T60] (  3,  0.41)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V66 tmp53        [V66,T58] (  3,  0.41)     int  ->  rdx         "Inlining Arg"
+;  V67 tmp54        [V67,T56] (  3,  0.41)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V68 tmp55        [V68,T57] (  3,  0.41)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V69 tmp56        [V69    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V70 tmp57        [V70,T67] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V70 tmp57        [V70,T64] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V71 tmp58        [V71    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V72 tmp59        [V72,T68] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V72 tmp59        [V72,T65] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V73 tmp60        [V73    ] ( 12,  4.46)     ref  ->  [rsp+0x50]  do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
 ;  V74 tmp61        [V74    ] ( 17,  6.92)     int  ->  [rsp+0x58]  do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-;  V75 tmp62        [V75,T41] (  2,  2   )     ref  ->  rcx         single-def "field V46._items (fldOffset=0x0)" P-INDEP
-;  V76 tmp63        [V76,T42] (  2,  2   )     int  ->  rdx         single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;  V77 tmp64        [V77,T65] (  2,  0.14)     ref  ->  rcx         single-def "field V63._items (fldOffset=0x0)" P-INDEP
-;  V78 tmp65        [V78,T66] (  2,  0.14)     int  ->  rdx         single-def "field V63._length (fldOffset=0x8)" P-INDEP
+;  V75 tmp62        [V75,T39] (  2,  2   )     ref  ->  rcx         single-def "field V46._items (fldOffset=0x0)" P-INDEP
+;  V76 tmp63        [V76,T40] (  2,  2   )     int  ->  rdx         single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;  V77 tmp64        [V77,T62] (  2,  0.14)     ref  ->  rcx         single-def "field V63._items (fldOffset=0x0)" P-INDEP
+;  V78 tmp65        [V78,T63] (  2,  0.14)     int  ->  rdx         single-def "field V63._length (fldOffset=0x8)" P-INDEP
 ;  V79 tmp66        [V79,T08] (  3,  6   )     int  ->  rax         "index expr"
 ;  V80 tmp67        [V80,T09] (  3,  6   )     int  ->  rdx         "index expr"
-;  V81 tmp68        [V81,T22] (  2,  3.92)    long  ->  rdx         "argument with side effect"
-;  V82 tmp69        [V82,T46] (  2,  2.00)    long  ->  rdx         "argument with side effect"
-;  V83 tmp70        [V83,T49] (  2,  1.92)    long  ->  rdx         "argument with side effect"
-;  V84 tmp71        [V84,T64] (  2,  0.27)     int  ->  rdx         "argument with side effect"
-;  V85 tmp72        [V85,T62] (  3,  0.41)     int  ->  rax         "index expr"
-;  V86 tmp73        [V86,T63] (  3,  0.41)     int  ->  rdx         "index expr"
-;  V87 tmp74        [V87,T38] (  2,  2.00)    long  ->  rdx         "argument with side effect"
-;  V88 tmp75        [V88,T93] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V89 tmp76        [V89,T92] (  2,  0   )     ref  ->  rdx         "argument with side effect"
-;  V90 tmp77        [V90,T94] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V91 tmp78        [V91,T95] (  2,  0   )    long  ->  rcx         "argument with side effect"
-;  V92 tmp79        [V92,T96] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V93 tmp80        [V93,T97] (  2,  0   )    long  ->  rcx         "argument with side effect"
-;  V94 tmp81        [V94,T47] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V81 tmp68        [V81,T20] (  2,  3.92)    long  ->  rdx         "argument with side effect"
+;  V82 tmp69        [V82,T43] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V83 tmp70        [V83,T46] (  2,  1.92)    long  ->  rdx         "argument with side effect"
+;  V84 tmp71        [V84,T61] (  2,  0.27)     int  ->  rdx         "argument with side effect"
+;  V85 tmp72        [V85,T59] (  3,  0.41)     int  ->  rax         "index expr"
+;  V86 tmp73        [V86,T60] (  3,  0.41)     int  ->  rdx         "index expr"
+;  V87 tmp74        [V87,T36] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V88 tmp75        [V88,T90] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V89 tmp76        [V89,T89] (  2,  0   )     ref  ->  rdx         "argument with side effect"
+;  V90 tmp77        [V90,T91] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V91 tmp78        [V91,T92] (  2,  0   )    long  ->  rcx         "argument with side effect"
+;  V92 tmp79        [V92,T93] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V93 tmp80        [V93,T94] (  2,  0   )    long  ->  rcx         "argument with side effect"
+;  V94 tmp81        [V94,T44] (  2,  2.00)    long  ->  rdx         "argument with side effect"
 ;  V95 cse0         [V95,T03] ( 31,  6.33)    long  ->  registers   multi-def "CSE - aggressive"
-;  V96 rat0         [V96,T73] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
-;  V97 rat1         [V97,T74] (  3,  0   )    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V98 rat2         [V98,T18] (  3,  4.40)    long  ->  rcx         "Spilling to split statement for tree"
-;  V99 rat3         [V99,T20] (  3,  4   )    long  ->  rdx         "runtime lookup"
+;  V96 rat0         [V96,T70] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
+;  V97 rat1         [V97,T71] (  3,  0   )    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V98 rat2         [V98,T17] (  3,  4.40)    long  ->  rcx         "Spilling to split statement for tree"
+;  V99 rat3         [V99,T18] (  3,  4   )    long  ->  rdx         "runtime lookup"
 ;  V100 rat4        [V100,T10] (  3,  5.60)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V101 rat5        [V101,T19] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V102 rat6        [V102,T43] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V103 rat7        [V103,T11] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V104 rat8        [V104,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat9        [V105,T26] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V106 rat10       [V106,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat11       [V107,T21] (  3,  3.92)    long  ->  rdx         "runtime lookup"
-;  V108 rat12       [V108,T12] (  3,  5.49)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V109 rat13       [V109,T44] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V110 rat14       [V110,T29] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V111 rat15       [V111,T35] (  3,  2.11)    long  ->  rcx         "Spilling to split statement for tree"
-;  V112 rat16       [V112,T48] (  3,  1.92)    long  ->  rdx         "runtime lookup"
-;  V113 rat17       [V113,T31] (  3,  2.69)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V114 rat18       [V114,T58] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V115 rat19       [V115,T32] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat20       [V116,T34] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V117 rat21       [V117,T45] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V118 rat22       [V118,T30] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V119 rat23       [V119,T75] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
-;  V120 rat24       [V120,T76] (  3,  0   )    long  ->  rcx         "runtime lookup"
-;  V121 rat25       [V121,T77] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;* V122 rat26       [V122,T78] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V123 rat27       [V123,T98] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V124 rat28       [V124,T79] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V125 rat29       [V125,T80] (  3,  0   )    long  ->  rdx         "runtime lookup"
-;  V126 rat30       [V126,T81] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V127 rat31       [V127,T82] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V128 rat32       [V128,T83] (  3,  0   )    long  ->   r8         "fgMakeTemp is creating a new local variable"
-;  V129 rat33       [V129,T84] (  3,  0   )    long  ->  rdx         "runtime lookup"
-;  V130 rat34       [V130,T85] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V131 rat35       [V131,T99] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V132 rat36       [V132,T86] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V133 rat37       [V133,T87] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;* V101 rat5        [V101,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V102 rat6        [V102,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V103 rat7        [V103,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V104 rat8        [V104,T19] (  3,  3.92)    long  ->  rdx         "runtime lookup"
+;  V105 rat9        [V105,T11] (  3,  5.49)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V106 rat10       [V106,T41] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V107 rat11       [V107,T27] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V108 rat12       [V108,T33] (  3,  2.11)    long  ->  rcx         "Spilling to split statement for tree"
+;  V109 rat13       [V109,T45] (  3,  1.92)    long  ->  rdx         "runtime lookup"
+;  V110 rat14       [V110,T29] (  3,  2.69)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V111 rat15       [V111,T55] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V112 rat16       [V112,T30] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V113 rat17       [V113,T32] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V114 rat18       [V114,T42] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V115 rat19       [V115,T28] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V116 rat20       [V116,T72] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
+;  V117 rat21       [V117,T73] (  3,  0   )    long  ->  rcx         "runtime lookup"
+;  V118 rat22       [V118,T74] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;* V119 rat23       [V119,T75] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V120 rat24       [V120,T95] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V121 rat25       [V121,T76] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V122 rat26       [V122,T77] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V123 rat27       [V123,T78] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V124 rat28       [V124,T79] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V125 rat29       [V125,T80] (  3,  0   )    long  ->   r8         "fgMakeTemp is creating a new local variable"
+;  V126 rat30       [V126,T81] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V127 rat31       [V127,T82] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V128 rat32       [V128,T96] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V129 rat33       [V129,T83] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V130 rat34       [V130,T84] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V131 rat35       [V131,T85] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V132 rat36       [V132,T86] (  3,  0   )    long  ->  rcx         "runtime lookup"
+;  V133 rat37       [V133,T87] (  3,  0   )    long  ->  rcx         "fgMakeTemp is creating a new local variable"
 ;  V134 rat38       [V134,T88] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V135 rat39       [V135,T89] (  3,  0   )    long  ->  rcx         "runtime lookup"
-;  V136 rat40       [V136,T90] (  3,  0   )    long  ->  rcx         "fgMakeTemp is creating a new local variable"
-;  V137 rat41       [V137,T91] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V138 rat42       [V138,T53] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V139 rat43       [V139,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V140 rat44       [V140,T37] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V141 rat45       [V141,T28] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V135 rat39       [V135,T50] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V136 rat40       [V136,T25] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V137 rat41       [V137,T35] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V138 rat42       [V138,T26] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 104
 
@@ -179,7 +176,7 @@ G_M33517_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=48 bbWeight=1 PerfScore 13.50
 G_M33517_IG02:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        test     rsi, rsi
-       je       G_M33517_IG46
+       je       G_M33517_IG47
        cmp      dword ptr [rbx+0x40], 0
        je       G_M33517_IG09
                        ;; size=19 bbWeight=1 PerfScore 5.25
@@ -191,10 +188,10 @@ G_M33517_IG04:        ; bbWeight=1, extend
        mov      r14, gword ptr [rbx+0x08]
        ; gcrRegs +[r14]
        test     r14, r14
-       jne      G_M33517_IG47
+       jne      G_M33517_IG48
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.InputNode`1[Microsoft.CodeAnalysis.Compilation]
        cmp      qword ptr [rsi], rcx
-       jne      G_M33517_IG11
+       jne      G_M33517_IG13
                        ;; size=32 bbWeight=1 PerfScore 7.50
 G_M33517_IG05:        ; bbWeight=0.73, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
        mov      rcx, rsi
@@ -220,11 +217,11 @@ G_M33517_IG07:        ; bbWeight=1, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=
...

+10 (+0.09%) : 73477.dasm - Microsoft.CodeAnalysis.CommonReferenceManager2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager2+BoundInputAssembly[System.Canon,System.Canon][],System.Canon[],System.Collections.Immutable.ImmutableArray`1[System.Canon],int):this (Tier1-OSR)

@@ -13,25 +13,25 @@
 ;  V00 this         [V00,T68] ( 23,    15.83)     ref  ->  [rbp+0x3B0]  this class-hnd EH-live single-def tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T76] ( 16,    30.05)     ref  ->  [rbp+0x3B8]  class-hnd single-def tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][]>
 ;  V02 arg2         [V02,T53] ( 25,   113.60)     ref  ->  [rbp+0x3C0]  class-hnd single-def tier0-frame <System.__Canon[]>
-;  V03 arg3         [V03,T151] (  4,     4   )  struct ( 8) [rbp+0x3C8]  do-not-enreg[SF] ld-addr-op single-def tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
+;  V03 arg3         [V03,T148] (  4,     4   )  struct ( 8) [rbp+0x3C8]  do-not-enreg[SF] ld-addr-op single-def tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;  V04 arg4         [V04,T81] ( 10,    28.62)     int  ->  rdi         single-def
 ;  V05 loc0         [V05,T20] ( 96,  5513.78)     ref  ->  [rbp+0x358]  do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.Queue`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]]>
-;  V06 loc1         [V06,T114] ( 23,    15.19)     ref  ->  [rbp+0x350]  do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc1         [V06,T112] ( 23,    15.19)     ref  ->  [rbp+0x350]  do-not-enreg[H] class-hnd EH-live tier0-frame <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc2         [V07,T55] (  7,   106.55)     int  ->  r15        
 ;  V08 loc3         [V08,T72] ( 10,    36.80)     int  ->  [rbp+0x348]  tier0-frame
 ;  V09 loc4         [V09    ] ( 12,    18.50)  struct (16) [rbp+0x338]  do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1+Enumerator[System.__Canon]>
 ;  V10 loc5         [V10    ] (  3,     9.14)  struct ( 8) [rbp+0x330]  do-not-enreg[XS] addr-exposed ld-addr-op tier0-frame <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-;  V11 loc6         [V11,T188] (  4,     1.23)     ref  ->  r14         class-hnd <System.__Canon>
-;  V12 loc7         [V12,T110] ( 10,    15.26)   ubyte  ->  [rbp+0x324]  tier0-frame
+;  V11 loc6         [V11,T185] (  4,     1.23)     ref  ->  r14         class-hnd <System.__Canon>
+;  V12 loc7         [V12,T108] ( 10,    15.26)   ubyte  ->  [rbp+0x324]  tier0-frame
 ;  V13 loc8         [V13    ] ( 19,    27.35)  struct (16) [rbp+0x310]  do-not-enreg[XS] addr-exposed tier0-frame <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;  V14 loc9         [V14,T75] ( 19,    31.94)     int  ->  [rbp+0x30C]  tier0-frame
 ;  V15 loc10        [V15,T84] ( 10,    29.30)     ref  ->  rdx         class-hnd <System.__Canon>
-;  V16 loc11        [V16,T131] ( 11,     9.53)     ref  ->  [rbp+0x2F8]  class-hnd exact tier0-frame <<unknown class>>
-;  V17 loc12        [V17,T132] (  8,     9.47)     int  ->  [rbp+0x2F4]  tier0-frame
+;  V16 loc11        [V16,T129] ( 11,     9.53)     ref  ->  [rbp+0x2F8]  class-hnd exact tier0-frame <<unknown class>>
+;  V17 loc12        [V17,T130] (  8,     9.47)     int  ->  [rbp+0x2F4]  tier0-frame
 ;  V18 loc13        [V18,T71] ( 36,    39.23)     int  ->  [rbp+0x2F0]  tier0-frame
 ;  V19 loc14        [V19,T07] ( 31, 30959.59)     ref  ->  [rbp+0x2E8]  class-hnd tier0-frame <System.__Canon>
 ;  V20 loc15        [V20,T73] ( 25,    35.44)     int  ->  [rbp+0x2E4]  tier0-frame
-;  V21 loc16        [V21,T113] ( 11,    10.35)     ref  ->  [rbp+0x2D8]  class-hnd tier0-frame <System.__Canon>
+;  V21 loc16        [V21,T111] ( 11,    10.35)     ref  ->  [rbp+0x2D8]  class-hnd tier0-frame <System.__Canon>
 ;  V22 loc17        [V22,T41] ( 18,   403.41)     int  ->  r14        
 ;  V23 OutArgs      [V23    ] (  1,     1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V24 tmp1         [V24    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,8 +47,8 @@
 ;* V34 tmp11        [V34    ] (  0,     0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;* V35 tmp12        [V35    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp13        [V36    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
-;  V37 tmp14        [V37,T150] (  5,     5.97)     int  ->  [rbp-0x3C]  "impAppendStmt"
-;  V38 tmp15        [V38,T133] ( 10,     8.95)     ref  ->  rcx         class-hnd "spilling ret_expr" <System.__Canon>
+;  V37 tmp14        [V37,T147] (  5,     5.97)     int  ->  [rbp-0x3C]  "impAppendStmt"
+;  V38 tmp15        [V38,T131] ( 10,     8.95)     ref  ->  rcx         class-hnd "spilling ret_expr" <System.__Canon>
 ;* V39 tmp16        [V39    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V40 tmp17        [V40    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V41 tmp18        [V41    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
@@ -56,44 +56,44 @@
 ;* V43 tmp20        [V43    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V44 tmp21        [V44,T77] ( 15,    30.20)     ref  ->  registers   class-hnd "spilling ret_expr" <System.__Canon>
 ;* V45 tmp22        [V45    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
-;  V46 tmp23        [V46,T104] (  7,    20.14)     int  ->  [rbp-0x40]  "impAppendStmt"
+;  V46 tmp23        [V46,T103] (  7,    20.14)     int  ->  [rbp-0x40]  "impAppendStmt"
 ;  V47 tmp24        [V47,T78] ( 15,    30.20)     ref  ->  rcx         class-hnd "spilling ret_expr" <System.__Canon>
 ;* V48 tmp25        [V48    ] (  0,     0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;* V49 tmp26        [V49    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V50 tmp27        [V50    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
-;  V51 tmp28        [V51,T134] ( 10,     9.04)     ref  ->  registers   class-hnd "spilling ret_expr" <System.__Canon>
+;  V51 tmp28        [V51,T132] ( 10,     9.04)     ref  ->  registers   class-hnd "spilling ret_expr" <System.__Canon>
 ;* V52 tmp29        [V52    ] (  0,     0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;* V53 tmp30        [V53    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V54 tmp31        [V54    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V55 tmp32        [V55    ] (  0,     0   )    long  ->  zero-ref    "spilling helperCall"
-;  V56 tmp33        [V56,T140] (  3,     8.14)     int  ->  rax         "guarded devirt return temp"
+;  V56 tmp33        [V56,T138] (  3,     8.14)     int  ->  rax         "guarded devirt return temp"
 ;* V57 tmp34        [V57    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;* V58 tmp35        [V58    ] (  0,     0   )  struct ( 8) zero-ref    "guarded devirt return temp" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;* V59 tmp36        [V59    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;* V60 tmp37        [V60    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-;  V61 tmp38        [V61,T164] (  6,     2.98)     int  ->   r9         "guarded devirt return temp"
+;  V61 tmp38        [V61,T161] (  6,     2.98)     int  ->   r9         "guarded devirt return temp"
 ;* V62 tmp39        [V62    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;* V63 tmp40        [V63    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-;  V64 tmp41        [V64,T124] (  9,    10.07)     int  ->  registers   "guarded devirt return temp"
+;  V64 tmp41        [V64,T122] (  9,    10.07)     int  ->  registers   "guarded devirt return temp"
 ;* V65 tmp42        [V65    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
-;  V66 tmp43        [V66,T125] (  9,    10.07)     int  ->  registers   "guarded devirt return temp"
+;  V66 tmp43        [V66,T123] (  9,    10.07)     int  ->  registers   "guarded devirt return temp"
 ;* V67 tmp44        [V67    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;* V68 tmp45        [V68    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-;  V69 tmp46        [V69,T126] (  9,    10.07)     int  ->  r10         "guarded devirt return temp"
+;  V69 tmp46        [V69,T124] (  9,    10.07)     int  ->  r10         "guarded devirt return temp"
 ;* V70 tmp47        [V70    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
 ;  V71 tmp48        [V71,T57] (  9,    99.94)     ref  ->  registers   "guarded devirt return temp"
 ;* V72 tmp49        [V72    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager>
-;  V73 tmp50        [V73,T165] (  6,     3.01)     int  ->  rcx         "guarded devirt return temp"
+;  V73 tmp50        [V73,T162] (  6,     3.01)     int  ->  rcx         "guarded devirt return temp"
 ;  V74 tmp51        [V74,T26] ( 24,  1352.83)     ref  ->  [rbp-0xA0]  class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile>
-;* V75 tmp52        [V75,T191] (  0,     0   )     int  ->  zero-ref    single-def "OSR entry state var"
-;  V76 tmp53        [V76,T141] (  3,     8.14)   ubyte  ->  rax         "Inline return value spill temp"
+;* V75 tmp52        [V75,T188] (  0,     0   )     int  ->  zero-ref    single-def "OSR entry state var"
+;  V76 tmp53        [V76,T139] (  3,     8.14)   ubyte  ->  rax         "Inline return value spill temp"
 ;  V77 tmp54        [V77,T89] (  6,    27.55)     ref  ->  r14         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
 ;* V78 tmp55        [V78    ] (  0,     0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
 ;* V79 tmp56        [V79    ] (  0,     0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
 ;* V80 tmp57        [V80    ] (  0,     0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
 ;* V81 tmp58        [V81    ] (  0,     0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
 ;* V82 tmp59        [V82    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon[]>
-;  V83 tmp60        [V83,T162] (  4,     3.15)     int  ->   r8         "Inline stloc first use temp"
+;  V83 tmp60        [V83,T159] (  4,     3.15)     int  ->   r8         "Inline stloc first use temp"
 ;* V84 tmp61        [V84    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V85 tmp62        [V85    ] (  0,     0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V86 tmp63        [V86    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <<unknown class>>
@@ -103,15 +103,15 @@
 ;  V90 tmp67        [V90,T61] (  3,    97.63)   byref  ->   r8         "impAppendStmt"
 ;* V91 tmp68        [V91    ] (  0,     0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <<unknown class>>
 ;* V92 tmp69        [V92    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "updating class info" <<unknown class>>
-;  V93 tmp70        [V93,T187] ( 10,     1.23)   byref  ->  [rbp-0xB8]  "Inline stloc first use temp"
-;  V94 tmp71        [V94,T182] (  8,     1.84)     int  ->  [rbp-0x44]  "Inline stloc first use temp"
-;  V95 tmp72        [V95,T163] ( 14,     3.06)    long  ->  [rbp-0x50]  "Inline stloc first use temp"
-;  V96 tmp73        [V96,T174] (  8,     2.45)     int  ->  r10         "Inline stloc first use temp"
-;  V97 tmp74        [V97,T183] (  6,     1.84)    long  ->  rdx         "Inline stloc first use temp"
-;  V98 tmp75        [V98,T189] (  8,     1.23)   byref  ->  rcx         "Inline stloc first use temp"
-;  V99 tmp76        [V99,T158] (  6,     3.68)     int  ->  [rbp-0x54]  "Inlining Arg"
-;  V100 tmp77       [V100,T178] ( 12,     2.22)    long  ->  [rbp-0x60]  "Inline stloc first use temp"
-;  V101 tmp78       [V101,T284] (  6,     0   )     int  ->  registers   "Inline stloc first use temp"
+;  V93 tmp70        [V93,T184] ( 10,     1.23)   byref  ->  [rbp-0xB8]  "Inline stloc first use temp"
+;  V94 tmp71        [V94,T179] (  8,     1.84)     int  ->  [rbp-0x44]  "Inline stloc first use temp"
+;  V95 tmp72        [V95,T160] ( 14,     3.06)    long  ->  [rbp-0x50]  "Inline stloc first use temp"
+;  V96 tmp73        [V96,T171] (  8,     2.45)     int  ->  r10         "Inline stloc first use temp"
+;  V97 tmp74        [V97,T180] (  6,     1.84)    long  ->  rdx         "Inline stloc first use temp"
+;  V98 tmp75        [V98,T186] (  8,     1.23)   byref  ->  rcx         "Inline stloc first use temp"
+;  V99 tmp76        [V99,T155] (  6,     3.68)     int  ->  [rbp-0x54]  "Inlining Arg"
+;  V100 tmp77       [V100,T175] ( 12,     2.22)    long  ->  [rbp-0x60]  "Inline stloc first use temp"
+;  V101 tmp78       [V101,T281] (  6,     0   )     int  ->  registers   "Inline stloc first use temp"
 ;* V102 tmp79       [V102    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V103 tmp80       [V103    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "updating class info" <<unknown class>>
 ;* V104 tmp81       [V104    ] (  0,     0   )     int  ->  zero-ref    "Inlining Arg"
@@ -119,14 +119,14 @@
 ;  V106 tmp83       [V106,T62] (  8,    78.44)     int  ->  [rbp-0x64]  "Inlining Arg"
 ;  V107 tmp84       [V107,T64] ( 18,    69.74)     int  ->  registers   "Inline stloc first use temp"
 ;* V108 tmp85       [V108    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V109 tmp86       [V109,T121] (  6,    10.42)     int  ->  r10         "Inline return value spill temp"
-;  V110 tmp87       [V110,T171] (  6,     2.69)     int  ->  registers   "Inlining Arg"
+;  V109 tmp86       [V109,T119] (  6,    10.42)     int  ->  r10         "Inline return value spill temp"
+;  V110 tmp87       [V110,T168] (  6,     2.69)     int  ->  registers   "Inlining Arg"
 ;  V111 tmp88       [V111,T69] (  6,    40.45)   byref  ->   r8         "Inlining Arg"
 ;  V112 tmp89       [V112,T83] (  8,    30.03)     int  ->  r10         "Inline stloc first use temp"
 ;* V113 tmp90       [V113    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
 ;* V114 tmp91       [V114    ] (  0,     0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V115 tmp92       [V115    ] (  0,     0   )   byref  ->  zero-ref    "Inlining Arg"
-;* V116 tmp93       [V116,T115] (  0,     0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
+;* V116 tmp93       [V116,T113] (  0,     0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEAssemblySymbol>
 ;  V117 tmp94       [V117,T19] (  9,  6448.66)   ubyte  ->  registers   "Inline return value spill temp"
 ;  V118 tmp95       [V118,T05] (  9, 41239.18)     int  ->  registers   "impAppendStmt"
 ;  V119 tmp96       [V119,T04] ( 15, 41249.25)     ref  ->  rbx         class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
@@ -139,25 +139,25 @@
 ;  V126 tmp103      [V126,T11] (  6, 20619.59)     ref  ->  rax         class-hnd "Inlining Arg" <<unknown class>>
 ;* V127 tmp104      [V127    ] (  0,     0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V128 tmp105      [V128,T79] (  9,    30.20)     ref  ->  rbx         class-hnd "Inlining Arg" <<unknown class>>
-;  V129 tmp106      [V129,T117] (  9,    12.65)   byref  ->  rax         "Inline stloc first use temp"
+;  V129 tmp106      [V129,T115] (  9,    12.65)   byref  ->  rax         "Inline stloc first use temp"
 ;  V130 tmp107      [V130,T06] (  7, 41239.18)     ref  ->  rbx         "CASTCLASS eval op1"
 ;  V131 tmp108      [V131,T14] (  7, 10309.80)    long  ->  r13         "fgMakeTemp is creating a new local variable"
 ;  V132 tmp109      [V132,T01] ( 12, 67013.67)     ref  ->  rsi         class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
 ;* V133 tmp110      [V133    ] (  0,     0   )   byref  ->  zero-ref    "Inlining Arg"
-;  V134 tmp111      [V134,T127] (  9,    10.07)   ubyte  ->  registers   "Inline return value spill temp"
+;  V134 tmp111      [V134,T125] (  9,    10.07)   ubyte  ->  registers   "Inline return value spill temp"
 ;  V135 tmp112      [V135,T74] ( 18,    34.10)     ref  ->  [rbp-0xC8]  class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.PEAssembly>
 ;* V136 tmp113      [V136    ] (  0,     0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
 ;* V137 tmp114      [V137    ] (  0,     0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
 ;* V138 tmp115      [V138    ] (  0,     0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]>
 ;* V139 tmp116      [V139    ] (  0,     0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.PEModule]>
 ;* V140 tmp117      [V140    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon[]>
-;  V141 tmp118      [V141,T154] ( 14,     3.91)     int  ->  [rbp-0x68]  "Inline stloc first use temp"
+;  V141 tmp118      [V141,T151] ( 14,     3.91)     int  ->  [rbp-0x68]  "Inline stloc first use temp"
 ;* V142 tmp119      [V142    ] (  0,     0   )  struct (16) zero-ref    "Inlining Arg" <Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceCandidate[System.__Canon,System.__Canon]>
 ;  V143 tmp120      [V143,T13] ( 12, 10309.80)     int  ->  [rbp-0x6C]  "Inlining Arg"
 ;  V144 tmp121      [V144,T15] ( 27,  9030.14)     int  ->  registers   "Inline stloc first use temp"
 ;* V145 tmp122      [V145    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V146 tmp123      [V146,T28] (  9,  1293.76)     int  ->  registers   "Inline return value spill temp"
-;  V147 tmp124      [V147,T98] (  9,    22.13)     int  ->  registers   "Inlining Arg"
+;  V147 tmp124      [V147,T97] (  9,    22.13)     int  ->  registers   "Inlining Arg"
 ;  V148 tmp125      [V148,T21] (  9,  5164.97)   byref  ->   r8         "Inlining Arg"
 ;  V149 tmp126      [V149,T24] ( 12,  3871.21)     int  ->  r10         "Inline stloc first use temp"
 ;* V150 tmp127      [V150    ] (  0,     0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
@@ -175,8 +175,8 @@
 ;  V162 tmp139      [V162,T40] (  6,   578.49)   byref  ->  [rbp-0xF0]  "non-inline candidate call"
 ;  V163 tmp140      [V163,T43] (  4,   385.66)     ref  ->  rax         class-hnd "Inlining Arg" <<unknown class>>
 ;* V164 tmp141      [V164    ] (  0,     0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V165 tmp142      [V165,T135] (  6,     9.04)     ref  ->  registers   class-hnd "Inlining Arg" <<unknown class>>
-;  V166 tmp143      [V166,T156] (  6,     3.79)   byref  ->  rax         "Inline stloc first use temp"
+;  V165 tmp142      [V165,T133] (  6,     9.04)     ref  ->  registers   class-hnd "Inlining Arg" <<unknown class>>
+;  V166 tmp143      [V166,T153] (  6,     3.79)   byref  ->  rax         "Inline stloc first use temp"
 ;  V167 tmp144      [V167,T39] (  5,   771.32)     ref  ->  [rbp-0xF8]  "CASTCLASS eval op1"
 ;  V168 tmp145      [V168,T46] (  5,   192.83)    long  ->  registers   "fgMakeTemp is creating a new local variable"
 ;  V169 tmp146      [V169,T33] (  8,  1253.40)     ref  ->  registers   class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol>
@@ -186,209 +186,206 @@
 ;  V173 tmp150      [V173,T47] ( 18,   171.44)     int  ->  registers   "Inline stloc first use temp"
 ;* V174 tmp151      [V174    ] (  0,     0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V175 tmp152      [V175,T90] (  6,    25.61)     int  ->  r11         "Inline return value spill temp"
-;  V176 tmp153      [V176,T146] (  6,     6.62)     int  ->  registers   "Inlining Arg"
+;  V176 tmp153      [V176,T143] (  6,     6.62)     int  ->  registers   "Inlining Arg"
 ;  V177 tmp154      [V177,T58] (  6,    99.43)   byref  ->   r8         "Inlining Arg"
 ;  V178 tmp155      [V178,T63] (  8,    73.82)     int  ->  r10         "Inline stloc first use temp"
-;  V179 tmp156      [V179,T118] (  6,    12.20)     int  ->   r8         "Inline stloc first use temp"
+;  V179 tmp156      [V179,T116] (  6,    12.20)     int  ->   r8         "Inline stloc first use temp"
 ;  V180 tmp157      [V180    ] ( 17,    20.22)     ref  ->  [rbp+0x310]  do-not-enreg[X] addr-exposed tier0-frame "field V13.AssemblySymbol (fldOffset=0x0)" P-DEP
 ;  V181 tmp158      [V181    ] (  4,    14.25)     int  ->  [rbp+0x318]  do-not-enreg[X] addr-exposed tier0-frame "field V13.DefinitionIndex (fldOffset=0x8)" P-DEP
-;  V182 tmp159      [V182,T122] (  4,    10.42)     ref  ->  r14         "field V34.AssemblySymbol (fldOffset=0x0)" P-INDEP
-;  V183 tmp160      [V183,T123] (  4,    10.42)     int  ->  [rbp-0x74]  "field V34.DefinitionIndex (fldOffset=0x8)" P-INDEP
+;  V182 tmp159      [V182,T120] (  4,    10.42)     ref  ->  r14         "field V34.AssemblySymbol (fldOffset=0x0)" P-INDEP
+;  V183 tmp160      [V183,T121] (  4,    10.42)     int  ->  [rbp-0x74]  "field V34.DefinitionIndex (fldOffset=0x8)" P-INDEP
 ;  V184 tmp161      [V184,T29] (  6,  1293.76)     ref  ->  [rbp-0x100]  "field V48.AssemblySymbol (fldOffset=0x0)" P-INDEP
 ;  V185 tmp162      [V185,T30] (  6,  1293.76)     int  ->  [rbp-0x78]  "field V48.DefinitionIndex (fldOffset=0x8)" P-INDEP
 ;  V186 tmp163      [V186,T91] (  4,    25.61)     ref  ->  [rbp-0x108]  "field V52.AssemblySymbol (fldOffset=0x0)" P-INDEP
-;* V187 tmp164      [V187,T186] (  0,     0   )     int  ->  zero-ref    "field V52.DefinitionIndex (fldOffset=0x8)" P-INDEP
-;  V188 tmp165      [V188,T139] (  3,     8.14)     ref  ->  rax         "field V58.array (fldOffset=0x0)" P-INDEP
+;* V187 tmp164      [V187,T183] (  0,     0   )     int  ->  zero-ref    "field V52.DefinitionIndex (fldOffset=0x8)" P-INDEP
+;  V188 tmp165      [V188,T137] (  3,     8.14)     ref  ->  rax         "field V58.array (fldOffset=0x0)" P-INDEP
 ;* V189 tmp166      [V189    ] (  0,     0   )     ref  ->  zero-ref    "field V78.array (fldOffset=0x0)" P-INDEP
-;  V190 tmp167      [V190,T184] (  2,     1.57)     ref  ->  [rbp-0x110]  spill-single-def "field V79._array (fldOffset=0x0)" P-INDEP
-;  V191 tmp168      [V191,T155] (  4,     3.15)     int  ->  [rbp-0x7C]  "field V79._index (fldOffset=0x8)" P-INDEP
-;  V192 tmp169      [V192,T176] (  3,     2.36)     ref  ->  rax         "field V80.array (fldOffset=0x0)" P-INDEP
-;  V193 tmp170      [V193,T185] (  2,     1.57)     ref  ->  rax         "field V81._array (fldOffset=0x0)" P-INDEP
-;* V194 tmp171      [V194,T194] (  0,     0   )     int  ->  zero-ref    "field V81._index (fldOffset=0x8)" P-INDEP
+;  V190 tmp167      [V190,T181] (  2,     1.57)     ref  ->  [rbp-0x110]  spill-single-def "field V79._array (fldOffset=0x0)" P-INDEP
+;  V191 tmp168      [V191,T152] (  4,     3.15)     int  ->  [rbp-0x7C]  "field V79._index (fldOffset=0x8)" P-INDEP
+;  V192 tmp169      [V192,T173] (  3,     2.36)     ref  ->  rax         "field V80.array (fldOffset=0x0)" P-INDEP
+;  V193 tmp170      [V193,T182] (  2,     1.57)     ref  ->  rax         "field V81._array (fldOffset=0x0)" P-INDEP
+;* V194 tmp171      [V194,T191] (  0,     0   )     int  ->  zero-ref    "field V81._index (fldOffset=0x8)" P-INDEP
 ;* V195 tmp172      [V195    ] (  0,     0   )     ref  ->  zero-ref    "field V105.AssemblySymbol (fldOffset=0x0)" P-INDEP
 ;* V196 tmp173      [V196    ] (  0,     0   )     int  ->  zero-ref    "field V105.DefinitionIndex (fldOffset=0x8)" P-INDEP
 ;* V197 tmp174      [V197    ] (  0,     0   )     ref  ->  zero-ref    "field V136.array (fldOffset=0x0)" P-INDEP
-;  V198 tmp175      [V198,T179] (  9,     1.98)     ref  ->  [rbp-0x118]  "field V137._array (fldOffset=0x0)" P-INDEP
-;  V199 tmp176      [V199,T153] ( 12,     3.89)     int  ->  [rbp-0x80]  "field V137._index (fldOffset=0x8)" P-INDEP
-;  V200 tmp177      [V200,T168] (  9,     2.92)     ref  ->  [rbp-0x120]  "field V138.array (fldOffset=0x0)" P-INDEP
-;  V201 tmp178      [V201,T180] (  6,     1.95)     ref  ->  registers   "field V139._array (fldOffset=0x0)" P-INDEP
-;* V202 tmp179      [V202,T193] (  0,     0   )     int  ->  zero-ref    "field V139._index (fldOffset=0x8)" P-INDEP
+;  V198 tmp175      [V198,T176] (  9,     1.98)     ref  ->  [rbp-0x118]  "field V137._array (fldOffset=0x0)" P-INDEP
+;  V199 tmp176      [V199,T150] ( 12,     3.89)     int  ->  [rbp-0x80]  "field V137._index (fldOffset=0x8)" P-INDEP
+;  V200 tmp177      [V200,T165] (  9,     2.92)     ref  ->  [rbp-0x120]  "field V138.array (fldOffset=0x0)" P-INDEP
+;  V201 tmp178      [V201,T177] (  6,     1.95)     ref  ->  registers   "field V139._array (fldOffset=0x0)" P-INDEP
+;* V202 tmp179      [V202,T190] (  0,     0   )     int  ->  zero-ref    "field V139._index (fldOffset=0x8)" P-INDEP
 ;* V203 tmp180      [V203    ] (  0,     0   )     ref  ->  zero-ref    "field V142.AssemblySymbol (fldOffset=0x0)" P-INDEP
 ;* V204 tmp181      [V204    ] (  0,     0   )     int  ->  zero-ref    "field V142.DefinitionIndex (fldOffset=0x8)" P-INDEP
 ;* V205 tmp182      [V205    ] (  0,     0   )     ref  ->  zero-ref    "field V171.AssemblySymbol (fldOffset=0x0)" P-INDEP
 ;* V206 tmp183      [V206    ] (  0,     0   )     int  ->  zero-ref    "field V171.DefinitionIndex (fldOffset=0x8)" P-INDEP
 ;  V207 tmp184      [V207,T70] ( 28,    39.54)     ref  ->  r12         single-def "V03.[000..008)"
-;  V208 tmp185      [V208,T112] (  2,    16.27)    long  ->   r8         "argument with side effect"
+;  V208 tmp185      [V208,T110] (  2,    16.27)    long  ->   r8         "argument with side effect"
 ;  V209 tmp186      [V209,T34] (  6,  1156.99)     ref  ->  registers   "arr expr"
 ;  V210 tmp187      [V210,T35] (  6,  1156.99)     ref  ->  rcx         "argument with side effect"
 ;  V211 tmp188      [V211,T48] (  6,   144.62)     ref  ->  rax         "arr expr"
 ;  V212 tmp189      [V212,T50] (  6,   144.62)     int  ->   r8         "index expr"
 ;  V213 tmp190      [V213,T49] (  6,   144.62)   byref  ->  [rbp-0x128]  "BlockOp address local"
-;  V214 tmp191      [V214,T157] (  6,     3.68)     ref  ->  r14         "arr expr"
-;  V215 tmp192      [V215,T159] (  6,     3.68)     int  ->  registers   "index expr"
+;  V214 tmp191      [V214,T154] (  6,     3.68)     ref  ->  r14         "arr expr"
+;  V215 tmp192      [V215,T156] (  6,     3.68)     int  ->  registers   "index expr"
 ;  V216 tmp193      [V216,T65] (  6,    58.83)     ref  ->   r8         "arr expr"
 ;  V217 tmp194      [V217,T67] (  6,    58.83)     int  ->  r10         "index expr"
 ;  V218 tmp195      [V218,T66] (  6,    58.83)   byref  ->  [rbp-0x130]  "BlockOp address local"
...

+2 (+0.12%) : 52945.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.Canon,System.Canon]:TryInsert(System.Canon,System.Canon,ubyte):ubyte:this (Tier1)

@@ -11,30 +11,30 @@
 ;
 ;  V00 this         [V00,T00] ( 29, 13.24)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T02] ( 15,  6.16)     ref  ->  rsi         ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T14] (  5,  3   )     ref  ->  rdi         class-hnd single-def <System.__Canon>
-;  V03 arg3         [V03,T16] (  6,  2.50)   ubyte  ->  rbp         single-def
+;  V02 arg2         [V02,T13] (  5,  3   )     ref  ->  rdi         class-hnd single-def <System.__Canon>
+;  V03 arg3         [V03,T15] (  6,  2.50)   ubyte  ->  rbp         single-def
 ;  V04 loc0         [V04    ] ( 17,  7.11)  struct (16) [rsp+0x50]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2+Entry[System.__Canon,System.__Canon]]>
-;  V05 loc1         [V05,T26] (  5,  3.06)     ref  ->  [rsp+0x30]  class-hnd single-def <<unknown class>>
-;  V06 loc2         [V06,T23] (  6,  3.59)     int  ->  r13         single-def
-;  V07 loc3         [V07,T33] (  7,  2.58)     int  ->  r12        
-;  V08 loc4         [V08,T24] (  5,  3.06)   byref  ->  r15        
-;  V09 loc5         [V09,T13] ( 13,  5.62)     int  ->  [rsp+0x4C] 
-;  V10 loc6         [V10,T42] (  5,  2.01)     int  ->  rbp        
-;  V11 loc7         [V11,T51] (  4,  1.51)     ref  ->  [rsp+0x28]  class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
-;  V12 loc8         [V12,T50] (  3,  1.51)     int  ->  rbp         single-def
+;  V05 loc1         [V05,T24] (  5,  3.06)     ref  ->  [rsp+0x30]  class-hnd single-def <<unknown class>>
+;  V06 loc2         [V06,T21] (  6,  3.59)     int  ->  r13         single-def
+;  V07 loc3         [V07,T31] (  7,  2.58)     int  ->  r12        
+;  V08 loc4         [V08,T22] (  5,  3.06)   byref  ->  r15        
+;  V09 loc5         [V09,T12] ( 13,  5.62)     int  ->  [rsp+0x4C] 
+;  V10 loc6         [V10,T39] (  5,  2.01)     int  ->  rbp        
+;  V11 loc7         [V11,T48] (  4,  1.51)     ref  ->  [rsp+0x28]  class-hnd spill-single-def <System.Collections.Generic.EqualityComparer`1[System.__Canon]>
+;  V12 loc8         [V12,T47] (  3,  1.51)     int  ->  rbp         single-def
 ;  V13 OutArgs      [V13    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V14 tmp1         [V14,T40] (  3,  2.04)     int  ->  r13        
+;  V14 tmp1         [V14,T38] (  3,  2.04)     int  ->  r13        
 ;* V15 tmp2         [V15    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V16 tmp3         [V16    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V17 tmp4         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T15] (  5,  4.99)   byref  ->  r14         single-def "dup spill"
-;  V19 tmp6         [V19,T73] (  3,  0.00)    long  ->  rdx         "spilling helperCall"
+;  V18 tmp5         [V18,T14] (  5,  4.99)   byref  ->  r14         single-def "dup spill"
+;  V19 tmp6         [V19,T70] (  3,  0.00)    long  ->  rdx         "spilling helperCall"
 ;* V20 tmp7         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp8         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp9         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V23 tmp10        [V23,T77] (  3,  0   )    long  ->  [rsp+0x40]  "spilling helperCall"
+;  V23 tmp10        [V23,T74] (  3,  0   )    long  ->  [rsp+0x40]  "spilling helperCall"
 ;* V24 tmp11        [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T76] (  4,  0   )    long  ->  [rsp+0x38]  "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T73] (  4,  0   )    long  ->  [rsp+0x38]  "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V27 tmp14        [V27    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V28 tmp15        [V28    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -47,12 +47,12 @@
 ;* V35 tmp22        [V35    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V36 tmp23        [V36    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V37 tmp24        [V37    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V38 tmp25        [V38,T63] (  4,  0.06)    long  ->  r11         "VirtualCall with runtime lookup"
-;  V39 tmp26        [V39,T47] (  3,  2.00)     int  ->  r13         "guarded devirt return temp"
+;  V38 tmp25        [V38,T60] (  4,  0.06)    long  ->  r11         "VirtualCall with runtime lookup"
+;  V39 tmp26        [V39,T44] (  3,  2.00)     int  ->  r13         "guarded devirt return temp"
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    single-def "guarded devirt arg temp"
 ;* V41 tmp28        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <Microsoft.CodeAnalysis.TransformNode`2[Microsoft.Interop.DiagnosticInfo,Microsoft.Interop.DiagnosticInfo]>
-;  V42 tmp29        [V42,T56] (  3,  1.00)     int  ->   r8         "guarded devirt return temp"
-;  V43 tmp30        [V43,T19] (  7,  4.28)     ref  ->  r14         "guarded devirt arg temp"
+;  V42 tmp29        [V42,T53] (  3,  1.00)     int  ->   r8         "guarded devirt return temp"
+;  V43 tmp30        [V43,T17] (  7,  4.28)     ref  ->  r14         "guarded devirt arg temp"
 ;* V44 tmp31        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.ObjectEqualityComparer`1[System.Object]>
 ;* V45 tmp32        [V45    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V46 tmp33        [V46    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
@@ -62,93 +62,90 @@
 ;  V50 tmp37        [V50,T05] (  3,  6.14)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V51 tmp38        [V51,T06] (  3,  6.14)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V53 tmp40        [V53,T53] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V53 tmp40        [V53,T50] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V55 tmp42        [V55,T54] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V55 tmp42        [V55,T51] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V56 tmp43        [V56    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <System.Object>
 ;* V57 tmp44        [V57    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V58 tmp45        [V58,T57] (  3,  1.00)     int  ->   r8         "guarded devirt return temp"
+;  V58 tmp45        [V58,T54] (  3,  1.00)     int  ->   r8         "guarded devirt return temp"
 ;* V59 tmp46        [V59    ] (  0,  0   )     ref  ->  zero-ref    "guarded devirt arg temp"
 ;* V60 tmp47        [V60    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <Microsoft.CodeAnalysis.MetadataImageReference>
 ;* V61 tmp48        [V61    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V62 tmp49        [V62    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V63 tmp50        [V63    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V64 tmp51        [V64,T60] (  3,  0.11)     int  ->  rdx         "Inlining Arg"
-;  V65 tmp52        [V65,T58] (  3,  0.11)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
-;  V66 tmp53        [V66,T59] (  3,  0.11)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V64 tmp51        [V64,T57] (  3,  0.11)     int  ->  rdx         "Inlining Arg"
+;  V65 tmp52        [V65,T55] (  3,  0.11)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V66 tmp53        [V66,T56] (  3,  0.11)     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V67 tmp54        [V67    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V68 tmp55        [V68,T68] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V68 tmp55        [V68,T65] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V69 tmp56        [V69    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V70 tmp57        [V70,T69] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V70 tmp57        [V70,T66] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V71 tmp58        [V71    ] ( 12,  4.56)     ref  ->  [rsp+0x50]  do-not-enreg[X] addr-exposed "field V04._items (fldOffset=0x0)" P-DEP
 ;  V72 tmp59        [V72    ] ( 17,  7.11)     int  ->  [rsp+0x58]  do-not-enreg[X] addr-exposed "field V04._length (fldOffset=0x8)" P-DEP
-;  V73 tmp60        [V73,T38] (  2,  2.05)     ref  ->  rcx         single-def "field V46._items (fldOffset=0x0)" P-INDEP
-;  V74 tmp61        [V74,T39] (  2,  2.05)     int  ->  rdx         single-def "field V46._length (fldOffset=0x8)" P-INDEP
-;  V75 tmp62        [V75,T66] (  2,  0.04)     ref  ->  rcx         single-def "field V61._items (fldOffset=0x0)" P-INDEP
-;  V76 tmp63        [V76,T67] (  2,  0.04)     int  ->  rdx         single-def "field V61._length (fldOffset=0x8)" P-INDEP
+;  V73 tmp60        [V73,T36] (  2,  2.05)     ref  ->  rcx         single-def "field V46._items (fldOffset=0x0)" P-INDEP
+;  V74 tmp61        [V74,T37] (  2,  2.05)     int  ->  rdx         single-def "field V46._length (fldOffset=0x8)" P-INDEP
+;  V75 tmp62        [V75,T63] (  2,  0.04)     ref  ->  rcx         single-def "field V61._items (fldOffset=0x0)" P-INDEP
+;  V76 tmp63        [V76,T64] (  2,  0.04)     int  ->  rdx         single-def "field V61._length (fldOffset=0x8)" P-INDEP
 ;  V77 tmp64        [V77,T08] (  3,  6.14)     int  ->  rax         "index expr"
 ;  V78 tmp65        [V78,T09] (  3,  6.14)     int  ->  rdx         "index expr"
-;  V79 tmp66        [V79,T21] (  2,  4.08)    long  ->  rdx         "argument with side effect"
-;  V80 tmp67        [V80,T45] (  2,  2.00)    long  ->  rdx         "argument with side effect"
-;  V81 tmp68        [V81,T37] (  2,  2.08)    long  ->  rdx         "argument with side effect"
-;  V82 tmp69        [V82,T61] (  3,  0.11)     int  ->  rax         "index expr"
-;  V83 tmp70        [V83,T62] (  3,  0.11)     int  ->  rdx         "index expr"
-;  V84 tmp71        [V84,T49] (  2,  2.00)    long  ->  rdx         "argument with side effect"
-;  V85 tmp72        [V85,T93] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V86 tmp73        [V86,T92] (  2,  0   )     ref  ->  rdx         "argument with side effect"
-;  V87 tmp74        [V87,T94] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V88 tmp75        [V88,T95] (  2,  0   )    long  ->  rcx         "argument with side effect"
-;  V89 tmp76        [V89,T96] (  2,  0   )    long  ->  rdx         "argument with side effect"
-;  V90 tmp77        [V90,T97] (  2,  0   )    long  ->  rcx         "argument with side effect"
-;  V91 tmp78        [V91,T46] (  2,  2.00)    long  ->  rdx         "argument with side effect"
-;  V92 cse0         [V92,T74] (  3,  0.00)     int  ->  r12         "CSE - conservative"
+;  V79 tmp66        [V79,T19] (  2,  4.08)    long  ->  rdx         "argument with side effect"
+;  V80 tmp67        [V80,T42] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V81 tmp68        [V81,T35] (  2,  2.08)    long  ->  rdx         "argument with side effect"
+;  V82 tmp69        [V82,T58] (  3,  0.11)     int  ->  rax         "index expr"
+;  V83 tmp70        [V83,T59] (  3,  0.11)     int  ->  rdx         "index expr"
+;  V84 tmp71        [V84,T46] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V85 tmp72        [V85,T90] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V86 tmp73        [V86,T89] (  2,  0   )     ref  ->  rdx         "argument with side effect"
+;  V87 tmp74        [V87,T91] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V88 tmp75        [V88,T92] (  2,  0   )    long  ->  rcx         "argument with side effect"
+;  V89 tmp76        [V89,T93] (  2,  0   )    long  ->  rdx         "argument with side effect"
+;  V90 tmp77        [V90,T94] (  2,  0   )    long  ->  rcx         "argument with side effect"
+;  V91 tmp78        [V91,T43] (  2,  2.00)    long  ->  rdx         "argument with side effect"
+;  V92 cse0         [V92,T71] (  3,  0.00)     int  ->  r12         "CSE - conservative"
 ;  V93 cse1         [V93,T03] ( 31,  6.51)    long  ->  registers   multi-def "CSE - aggressive"
-;  V94 rat0         [V94,T65] (  3,  0.04)    long  ->  rcx         "Spilling to split statement for tree"
-;  V95 rat1         [V95,T64] (  3,  0.06)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V96 rat2         [V96,T17] (  3,  4.45)    long  ->  rcx         "Spilling to split statement for tree"
-;  V97 rat3         [V97,T22] (  3,  4.04)    long  ->  rdx         "runtime lookup"
+;  V94 rat0         [V94,T62] (  3,  0.04)    long  ->  rcx         "Spilling to split statement for tree"
+;  V95 rat1         [V95,T61] (  3,  0.06)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V96 rat2         [V96,T16] (  3,  4.45)    long  ->  rcx         "Spilling to split statement for tree"
+;  V97 rat3         [V97,T20] (  3,  4.04)    long  ->  rdx         "runtime lookup"
 ;  V98 rat4         [V98,T11] (  3,  5.66)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V99 rat5         [V99,T18] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V100 rat6        [V100,T41] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V101 rat7        [V101,T12] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V102 rat8        [V102,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V103 rat9        [V103,T25] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V104 rat10       [V104,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V105 rat11       [V105,T20] (  3,  4.08)    long  ->  rdx         "runtime lookup"
-;  V106 rat12       [V106,T10] (  3,  5.71)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V107 rat13       [V107,T43] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V108 rat14       [V108,T30] (  3,  2.81)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V109 rat15       [V109,T34] (  3,  2.29)    long  ->  rcx         "Spilling to split statement for tree"
-;  V110 rat16       [V110,T36] (  3,  2.08)    long  ->  rdx         "runtime lookup"
-;  V111 rat17       [V111,T27] (  3,  2.91)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V112 rat18       [V112,T52] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V113 rat19       [V113,T28] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V114 rat20       [V114,T35] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V115 rat21       [V115,T44] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V116 rat22       [V116,T31] (  3,  2.81)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V117 rat23       [V117,T78] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
-;  V118 rat24       [V118,T79] (  3,  0   )    long  ->  rcx         "runtime lookup"
-;  V119 rat25       [V119,T80] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;* V120 rat26       [V120,T72] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V121 rat27       [V121,T75] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V122 rat28       [V122,T70] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V123 rat29       [V123,T81] (  3,  0   )    long  ->  rdx         "runtime lookup"
-;  V124 rat30       [V124,T82] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V125 rat31       [V125,T83] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
-;  V126 rat32       [V126,T84] (  3,  0   )    long  ->   r8         "fgMakeTemp is creating a new local variable"
-;  V127 rat33       [V127,T85] (  3,  0   )    long  ->  rdx         "runtime lookup"
-;  V128 rat34       [V128,T86] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V129 rat35       [V129,T98] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V130 rat36       [V130,T87] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V131 rat37       [V131,T88] (  3,  0   )    long  ->  rdx         "runtime lookup"
-;  V132 rat38       [V132,T89] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V133 rat39       [V133,T90] (  3,  0   )    long  ->  rcx         "runtime lookup"
-;  V134 rat40       [V134,T91] (  3,  0   )    long  ->  rcx         "fgMakeTemp is creating a new local variable"
-;  V135 rat41       [V135,T71] (  3,  0.00)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V136 rat42       [V136,T55] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V137 rat43       [V137,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V138 rat44       [V138,T48] (  3,  2.00)    long  ->  rdx         "runtime lookup"
-;  V139 rat45       [V139,T32] (  3,  2.79)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V99 rat5         [V99,T04] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat6        [V100,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat7        [V101,T01] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat8        [V102,T18] (  3,  4.08)    long  ->  rdx         "runtime lookup"
+;  V103 rat9        [V103,T10] (  3,  5.71)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V104 rat10       [V104,T40] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V105 rat11       [V105,T28] (  3,  2.81)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V106 rat12       [V106,T32] (  3,  2.29)    long  ->  rcx         "Spilling to split statement for tree"
+;  V107 rat13       [V107,T34] (  3,  2.08)    long  ->  rdx         "runtime lookup"
+;  V108 rat14       [V108,T25] (  3,  2.91)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V109 rat15       [V109,T49] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V110 rat16       [V110,T26] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V111 rat17       [V111,T33] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V112 rat18       [V112,T41] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V113 rat19       [V113,T29] (  3,  2.81)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V114 rat20       [V114,T75] (  3,  0   )    long  ->  rcx         "Spilling to split statement for tree"
+;  V115 rat21       [V115,T76] (  3,  0   )    long  ->  rcx         "runtime lookup"
+;  V116 rat22       [V116,T77] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;* V117 rat23       [V117,T69] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V118 rat24       [V118,T72] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V119 rat25       [V119,T67] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V120 rat26       [V120,T78] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V121 rat27       [V121,T79] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V122 rat28       [V122,T80] (  3,  0   )    long  ->  rax         "fgMakeTemp is creating a new local variable"
+;  V123 rat29       [V123,T81] (  3,  0   )    long  ->   r8         "fgMakeTemp is creating a new local variable"
+;  V124 rat30       [V124,T82] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V125 rat31       [V125,T83] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V126 rat32       [V126,T95] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V127 rat33       [V127,T84] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V128 rat34       [V128,T85] (  3,  0   )    long  ->  rdx         "runtime lookup"
+;  V129 rat35       [V129,T86] (  3,  0   )    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V130 rat36       [V130,T87] (  3,  0   )    long  ->  rcx         "runtime lookup"
+;  V131 rat37       [V131,T88] (  3,  0   )    long  ->  rcx         "fgMakeTemp is creating a new local variable"
+;  V132 rat38       [V132,T68] (  3,  0.00)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V133 rat39       [V133,T52] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V134 rat40       [V134,T27] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V135 rat41       [V135,T45] (  3,  2.00)    long  ->  rdx         "runtime lookup"
+;  V136 rat42       [V136,T30] (  3,  2.79)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 104
 
@@ -177,7 +174,7 @@ G_M33517_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=48 bbWeight=1 PerfScore 13.50
 G_M33517_IG02:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        test     rsi, rsi
-       je       G_M33517_IG57
+       je       G_M33517_IG58
                        ;; size=9 bbWeight=1 PerfScore 1.25
 G_M33517_IG03:        ; bbWeight=1.01, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        cmp      dword ptr [rbx+0x40], 0
@@ -196,7 +193,7 @@ G_M33517_IG05:        ; bbWeight=1.01, extend
 G_M33517_IG06:        ; bbWeight=1.00, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.TransformNode`2[Microsoft.Interop.DiagnosticInfo,Microsoft.Interop.DiagnosticInfo]
        cmp      qword ptr [rsi], rcx
-       jne      G_M33517_IG17
+       jne      G_M33517_IG19
                        ;; size=19 bbWeight=1.00 PerfScore 4.25
 G_M33517_IG07:        ; bbWeight=0.85, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
        mov      rcx, rsi
@@ -220,18 +217,18 @@ G_M33517_IG08:        ; bbWeight=1.02, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
        mov      eax, edx
        sar      eax, 14
        cmp      eax, dword ptr [rcx+0x08]
-       jae      G_M33517_IG56
+       jae      G_M33517_IG57
        mov      rcx, gword ptr [rcx+8*rax+0x10]
...

+2 (+0.27%) : 110081.dasm - Microsoft.CodeAnalysis.NodeStateTable1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)

@@ -12,72 +12,69 @@
 ;  V00 this         [V00,T01] (  9, 10.21)     ref  ->  rbx         this class-hnd single-def <Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]>
 ;* V01 arg1         [V01    ] (  0,  0   )  struct ( 8) zero-ref    single-def <System.TimeSpan>
 ;* V02 arg2         [V02    ] (  0,  0   )  struct ( 8) zero-ref    single-def <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]]>
-;  V03 arg3         [V03,T17] (  3,  3.11)     int  ->  rsi         single-def
+;  V03 arg3         [V03,T16] (  3,  3.11)     int  ->  rsi         single-def
 ;  V04 loc0         [V04    ] (  5,  6.32)  struct (32) [rsp+0x40]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]>
-;  V05 loc1         [V05,T34] (  3,  3.11)     ref  ->  r12         class-hnd exact single-def <<unknown class>>
+;  V05 loc1         [V05,T32] (  3,  3.11)     ref  ->  r12         class-hnd exact single-def <<unknown class>>
 ;  V06 loc2         [V06,T12] (  7,  6.42)     int  ->  r13        
 ;  V07 OutArgs      [V07    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T26] (  2,  4   )     ref  ->   r8         class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]>
+;  V08 tmp1         [V08,T24] (  2,  4   )     ref  ->   r8         class-hnd exact single-def "dup spill" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]>
 ;* V09 tmp2         [V09    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V10 tmp3         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V11 tmp4         [V11,T20] (  2,  4.42)    long  ->  rdx         "spilling helperCall"
+;  V11 tmp4         [V11,T19] (  2,  4.42)    long  ->  rdx         "spilling helperCall"
 ;* V12 tmp5         [V12    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
-;  V13 tmp6         [V13,T19] (  2,  4.42)     ref  ->  r15         class-hnd "impAppendStmt" <System.__Canon>
+;  V13 tmp6         [V13,T18] (  2,  4.42)     ref  ->  r15         class-hnd "impAppendStmt" <System.__Canon>
 ;* V14 tmp7         [V14    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.Object,int]>
-;  V15 tmp8         [V15,T27] (  2,  4   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;  V16 tmp9         [V16,T28] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V15 tmp8         [V15,T25] (  2,  4   )     ref  ->  r13         class-hnd exact single-def "impAppendStmt" <<unknown class>>
+;  V16 tmp9         [V16,T26] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "impAppendStmt" <System.String>
 ;  V17 tmp10        [V17,T03] (  6, 12   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.IncrementalGeneratorRunStep>
 ;* V18 tmp11        [V18    ] (  0,  0   )  struct ( 8) zero-ref    single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[System.Object,int]]>
 ;* V19 tmp12        [V19    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]]>
 ;* V20 tmp13        [V20    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp14        [V21    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <<unknown class>>
-;  V22 tmp15        [V22,T24] (  3,  4   )     int  ->  r15         "Inlining Arg"
+;  V22 tmp15        [V22,T22] (  3,  4   )     int  ->  r15         "Inlining Arg"
 ;* V23 tmp16        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <<unknown class>>
 ;  V24 tmp17        [V24,T13] (  4,  6.00)     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V25 tmp18        [V25,T14] (  8,  5.79)     ref  ->  r12         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;* V26 tmp19        [V26    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inline ldloca(s) first use temp" <<unknown class>>
-;  V27 tmp20        [V27,T18] (  3,  4.73)   byref  ->  rcx         single-def "impAppendStmt"
+;  V27 tmp20        [V27,T17] (  3,  4.73)   byref  ->  rcx         single-def "impAppendStmt"
 ;* V28 tmp21        [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;* V29 tmp22        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[System.__Canon,int]]>
-;  V30 tmp23        [V30,T38] (  3,  2.21)     int  ->   r8         "Inline return value spill temp"
-;  V31 tmp24        [V31,T21] (  2,  4.42)     int  ->  rax         "Inlining Arg"
+;  V30 tmp23        [V30,T36] (  3,  2.21)     int  ->   r8         "Inline return value spill temp"
+;  V31 tmp24        [V31,T20] (  2,  4.42)     int  ->  rax         "Inlining Arg"
 ;* V32 tmp25        [V32    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <System.ValueTuple`2[System.Object,int]>
 ;  V33 tmp26        [V33,T00] (  8, 13.26)     ref  ->  [rsp+0x30]  class-hnd exact spill-single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.ValueTuple`2[System.__Canon,int]]>
-;  V34 tmp27        [V34,T32] (  5,  3.32)     int  ->  [rsp+0x3C]  spill-single-def "Inline stloc first use temp"
+;  V34 tmp27        [V34,T30] (  5,  3.32)     int  ->  [rsp+0x3C]  spill-single-def "Inline stloc first use temp"
 ;* V35 tmp28        [V35    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V36 tmp29        [V36,T46] (  3,  0   )     int  ->  rcx         "Inline return value spill temp"
-;  V37 tmp30        [V37,T47] (  3,  0   )     int  ->  rdx         "Inlining Arg"
+;  V36 tmp29        [V36,T43] (  3,  0   )     int  ->  rcx         "Inline return value spill temp"
+;  V37 tmp30        [V37,T44] (  3,  0   )     int  ->  rdx         "Inlining Arg"
 ;  V38 tmp31        [V38,T02] (  8, 12.04)     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1+Builder[System.__Canon]>
-;  V39 tmp32        [V39,T36] (  5,  3.02)     int  ->  rbp         single-def "Inline stloc first use temp"
+;  V39 tmp32        [V39,T34] (  5,  3.02)     int  ->  rbp         single-def "Inline stloc first use temp"
 ;* V40 tmp33        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V41 tmp34        [V41,T44] (  2,  0.02)     int  ->   r8         "Inline return value spill temp"
-;  V42 tmp35        [V42,T43] (  3,  0.06)     int  ->   r8         "Inlining Arg"
-;  V43 tmp36        [V43,T30] (  2,  2   )    long  ->  rbp         single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
-;  V44 tmp37        [V44,T29] (  2,  2   )     ref  ->  rdi         single-def "field V02.array (fldOffset=0x0)" P-INDEP
-;  V45 tmp38        [V45,T39] (  2,  2.21)     ref  ->  r15         "field V14.Item1 (fldOffset=0x0)" P-INDEP
-;  V46 tmp39        [V46,T40] (  2,  2.21)     int  ->  [rsp+0x38]  spill-single-def "field V14.Item2 (fldOffset=0x8)" P-INDEP
-;  V47 tmp40        [V47,T41] (  2,  2   )     ref  ->  r14         "field V18.array (fldOffset=0x0)" P-INDEP
+;  V41 tmp34        [V41,T41] (  2,  0.02)     int  ->   r8         "Inline return value spill temp"
+;  V42 tmp35        [V42,T40] (  3,  0.06)     int  ->   r8         "Inlining Arg"
+;  V43 tmp36        [V43,T28] (  2,  2   )    long  ->  rbp         single-def "field V01._ticks (fldOffset=0x0)" P-INDEP
+;  V44 tmp37        [V44,T27] (  2,  2   )     ref  ->  rdi         single-def "field V02.array (fldOffset=0x0)" P-INDEP
+;  V45 tmp38        [V45,T37] (  2,  2.21)     ref  ->  r15         "field V14.Item1 (fldOffset=0x0)" P-INDEP
+;  V46 tmp39        [V46,T38] (  2,  2.21)     int  ->  [rsp+0x38]  spill-single-def "field V14.Item2 (fldOffset=0x8)" P-INDEP
+;  V47 tmp40        [V47,T39] (  2,  2   )     ref  ->  r14         "field V18.array (fldOffset=0x0)" P-INDEP
 ;* V48 tmp41        [V48    ] (  0,  0   )     ref  ->  zero-ref    "field V32.Item1 (fldOffset=0x0)" P-INDEP
 ;* V49 tmp42        [V49    ] (  0,  0   )     int  ->  zero-ref    "field V32.Item2 (fldOffset=0x8)" P-INDEP
-;  V50 tmp43        [V50,T31] (  2,  4   )    long  ->  rdx         "argument with side effect"
+;  V50 tmp43        [V50,T29] (  2,  4   )    long  ->  rdx         "argument with side effect"
 ;  V51 tmp44        [V51,T07] (  2,  8.42)    long  ->  rdx         "argument with side effect"
 ;  V52 tmp45        [V52,T08] (  3,  6.63)     ref  ->  rcx         "arr expr"
-;  V53 tmp46        [V53,T45] (  3,  0   )     ref  ->  rdx         "arr expr"
+;  V53 tmp46        [V53,T42] (  3,  0   )     ref  ->  rdx         "arr expr"
 ;  V54 tmp47        [V54,T09] (  3,  6.63)     ref  ->  rcx         "arr expr"
 ;  V55 tmp48        [V55,T11] (  3,  6.63)     int  ->  rdx         "index expr"
 ;  V56 tmp49        [V56,T10] (  3,  6.63)   byref  ->  [rsp+0x28]  spill-single-def "BlockOp address local"
-;  V57 cse0         [V57,T35] (  3,  3.11)    long  ->  r14         "CSE - moderate"
-;  V58 cse1         [V58,T37] (  3,  3   )     ref  ->  rcx         "CSE - moderate"
-;  V59 cse2         [V59,T33] (  4,  3.32)     ref  ->  rcx         "CSE - moderate"
-;  V60 rat0         [V60,T22] (  3,  4.40)    long  ->  rcx         "Spilling to split statement for tree"
-;  V61 rat1         [V61,T25] (  3,  4   )    long  ->  r14         "runtime lookup"
+;  V57 cse0         [V57,T33] (  3,  3.11)    long  ->  r14         "CSE - moderate"
+;  V58 cse1         [V58,T35] (  3,  3   )     ref  ->  rcx         "CSE - moderate"
+;  V59 cse2         [V59,T31] (  4,  3.32)     ref  ->  rcx         "CSE - moderate"
+;  V60 rat0         [V60,T21] (  3,  4.40)    long  ->  rcx         "Spilling to split statement for tree"
+;  V61 rat1         [V61,T23] (  3,  4   )    long  ->  r14         "runtime lookup"
 ;  V62 rat2         [V62,T15] (  3,  5.60)    long  ->  r14         "fgMakeTemp is creating a new local variable"
-;* V63 rat3         [V63,T23] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V64 rat4         [V64,T42] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V65 rat5         [V65,T16] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V66 rat6         [V66,T05] (  3,  9.26)    long  ->  rcx         "Spilling to split statement for tree"
-;  V67 rat7         [V67,T06] (  3,  8.42)    long  ->  rdx         "runtime lookup"
-;  V68 rat8         [V68,T04] (  3, 11.79)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V63 rat3         [V63,T05] (  3,  9.26)    long  ->  rcx         "Spilling to split statement for tree"
+;  V64 rat4         [V64,T06] (  3,  8.42)    long  ->  rdx         "runtime lookup"
+;  V65 rat5         [V65,T04] (  3, 11.79)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 104
 
@@ -227,11 +224,9 @@ G_M31021_IG11:        ; bbWeight=2.11, gcVars=0000000000000000 {}, gcrefRegs=108
        mov      rdx, qword ptr [rdx+0x28]
        test     rdx, rdx
        je       SHORT G_M31021_IG15
-                       ;; size=19 bbWeight=2.11 PerfScore 19.47
-G_M31021_IG12:        ; bbWeight=1.68, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref, isz
-       jmp      SHORT G_M31021_IG16
-                       ;; size=2 bbWeight=1.68 PerfScore 3.37
-G_M31021_IG13:        ; bbWeight=1.11, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref
+       jmp      SHORT G_M31021_IG14
+                       ;; size=21 bbWeight=2.11 PerfScore 23.69
+G_M31021_IG12:        ; bbWeight=1.11, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref
        mov      rdx, r14
        lea      rcx, [rsp+0x40]
        mov      r8d, r13d
@@ -248,7 +243,7 @@ G_M31021_IG13:        ; bbWeight=1.11, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0
        jbe      G_M31021_IG21
        mov      r8d, dword ptr [rcx+0x10]
                        ;; size=49 bbWeight=1.11 PerfScore 16.86
-G_M31021_IG14:        ; bbWeight=1.11, gcrefRegs=9088 {rbx rdi r12 r15}, byrefRegs=0000 {}, byref
+G_M31021_IG13:        ; bbWeight=1.11, gcrefRegs=9088 {rbx rdi r12 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rcx]
        mov      rcx, qword ptr [rbx]
        mov      edx, esi
@@ -268,9 +263,12 @@ G_M31021_IG14:        ; bbWeight=1.11, gcrefRegs=9088 {rbx rdi r12 r15}, byrefRe
        jl       G_M31021_IG25
        jmp      G_M31021_IG10
                        ;; size=56 bbWeight=1.11 PerfScore 22.66
-G_M31021_IG15:        ; bbWeight=0.42, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref
+G_M31021_IG14:        ; bbWeight=1.68, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rcx r8 r15]
        ; GC ptr vars -{V33}
+       jmp      SHORT G_M31021_IG16
+                       ;; size=2 bbWeight=1.68 PerfScore 3.37
+G_M31021_IG15:        ; bbWeight=0.42, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref
        mov      rdx, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
        ; gcr arg pop 0
@@ -281,7 +279,7 @@ G_M31021_IG16:        ; bbWeight=2.11, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0
        call     [Microsoft.CodeAnalysis.NodeStateTable`1+TableEntry[System.__Canon]:get_Count():int:this]
        ; gcr arg pop 0
        cmp      eax, r13d
-       jg       G_M31021_IG13
+       jg       G_M31021_IG12
                        ;; size=20 bbWeight=2.11 PerfScore 10.00
 G_M31021_IG17:        ; bbWeight=1, gcrefRegs=1088 {rbx rdi r12}, byrefRegs=0000 {}, byref, isz
        mov      r13, gword ptr [rbx+0x28]
@@ -403,7 +401,7 @@ G_M31021_IG24:        ; bbWeight=0, gcrefRegs=908A {rcx rbx rdi r12 r15}, byrefR
        jae      SHORT G_M31021_IG21
        mov      r8d, r13d
        mov      r8d, dword ptr [rdx+4*r8+0x10]
-       jmp      G_M31021_IG14
+       jmp      G_M31021_IG13
                        ;; size=22 bbWeight=0 PerfScore 0.00
 G_M31021_IG25:        ; bbWeight=0, gcVars=0000000000000001 {V33}, gcrefRegs=9188 {rbx rdi r8 r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rcx rdx] +[r8]
@@ -436,7 +434,7 @@ G_M31021_IG27:        ; bbWeight=0, gcrefRegs=9188 {rbx rdi r8 r12 r15}, byrefRe
        jmp      G_M31021_IG10
                        ;; size=33 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 745, prolog size 31, PerfScore 194.22, instruction count 193, allocated bytes for code 745 (MethodHash=ed5686d2) for method Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
+; Total bytes of code 747, prolog size 31, PerfScore 198.43, instruction count 194, allocated bytes for code 747 (MethodHash=ed5686d2) for method Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
 ; ============================================================
 
 Unwind Info:

librariestestsnotieredcompilation.run.windows.x64.Release.mch

-23 (-5.61%) : 99796.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -11,39 +11,38 @@
 ;  V01 arg0         [V01,T05] (  5,  7   )     ref  ->  rsi         class-hnd single-def <System.__Canon[]>
 ;  V02 arg1         [V02,T04] ( 10,  8.04)     ref  ->  rbx         class-hnd single-def <System.__Canon[]>
 ;  V03 loc0         [V03,T00] ( 15, 21.04)     int  ->  rbp        
-;  V04 loc1         [V04    ] ( 10, 14   )     ref  ->  [rsp+0x28]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
+;  V04 loc1         [V04    ] ( 10, 14   )     ref  ->  [rsp+0x20]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T01] (  6, 20   )   byref  ->  r15         "impAppendStmt"
 ;  V07 tmp2         [V07,T06] (  6,  8   )   byref  ->  r13        
 ;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V09 tmp4         [V09,T02] (  8, 12   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V10 tmp5         [V10,T10] (  4,  4   )     int  ->  r12        
+;  V10 tmp5         [V10,T10] (  2,  3.96)     int  ->  rcx        
 ;  V11 tmp6         [V11,T07] (  4,  8   )     ref  ->  rcx         "argument with side effect"
 ;  V12 cse0         [V12,T09] (  5,  7   )     int  ->  r14         "CSE - aggressive"
 ;  V13 rat0         [V13,T03] (  3, 11.09)    long  ->  r11         "fgMakeTemp is creating a new local variable"
 ;  V14 rat1         [V14,T11] (  3,  0.11)    long  ->  r11         "fgMakeTemp is creating a new local variable"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 48
 
 G_M22994_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
        push     r14
        push     r13
-       push     r12
        push     rdi
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 56
+       sub      rsp, 48
        xor      eax, eax
-       mov      qword ptr [rsp+0x28], rax
-       mov      qword ptr [rsp+0x30], rcx
+       mov      qword ptr [rsp+0x20], rax
+       mov      qword ptr [rsp+0x28], rcx
        mov      rdi, rcx
        mov      rsi, rdx
        ; gcrRegs +[rsi]
        mov      rbx, r8
        ; gcrRegs +[rbx]
-                       ;; size=37 bbWeight=1 PerfScore 11.25
+                       ;; size=35 bbWeight=1 PerfScore 10.25
 G_M22994_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        xor      ebp, ebp
        mov      r14d, dword ptr [rsi+0x08]
@@ -60,10 +59,10 @@ G_M22994_IG03:        ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; byrRegs +[r15]
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
+       mov      gword ptr [rsp+0x20], rcx
        mov      r13, r15
        ; byrRegs +[r13]
-       cmp      gword ptr [rsp+0x28], 0
+       cmp      gword ptr [rsp+0x20], 0
        jne      SHORT G_M22994_IG06
                        ;; size=25 bbWeight=3.96 PerfScore 22.77
 G_M22994_IG04:        ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
@@ -71,10 +70,10 @@ G_M22994_IG04:        ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000
        ; byrRegs -[r13]
        mov      rcx, gword ptr [r15]
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
-       lea      r13, bword ptr [rsp+0x28]
+       mov      gword ptr [rsp+0x20], rcx
+       lea      r13, bword ptr [rsp+0x20]
        ; byrRegs +[r13]
-       cmp      gword ptr [rsp+0x28], 0
+       cmp      gword ptr [rsp+0x20], 0
        jne      SHORT G_M22994_IG06
        mov      ecx, ebp
        ; gcrRegs -[rcx]
@@ -114,12 +113,12 @@ G_M22994_IG09:        ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=2000
        ; gcrRegs -[rcx rdx]
        ; byrRegs -[r13]
        ; gcr arg pop 0
-       xor      r12d, r12d
+       xor      ecx, ecx
        test     eax, eax
-       sete     r12b
-       test     r12d, r12d
+       sete     cl
+       test     ecx, ecx
        jne      G_M22994_IG22
-                       ;; size=32 bbWeight=1.98 PerfScore 19.80
+                       ;; size=29 bbWeight=1.98 PerfScore 19.80
 G_M22994_IG10:        ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        inc      ebp
        cmp      r14d, ebp
@@ -136,10 +135,10 @@ G_M22994_IG12:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; byrRegs +[r15]
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
+       mov      gword ptr [rsp+0x20], rcx
        mov      r13, r15
        ; byrRegs +[r13]
-       cmp      gword ptr [rsp+0x28], 0
+       cmp      gword ptr [rsp+0x20], 0
        jne      SHORT G_M22994_IG15
                        ;; size=25 bbWeight=0.04 PerfScore 0.23
 G_M22994_IG13:        ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000 {r15}, byref, isz
@@ -147,18 +146,18 @@ G_M22994_IG13:        ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=8000
        ; byrRegs -[r13]
        mov      rcx, gword ptr [r15]
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
-       lea      r13, bword ptr [rsp+0x28]
+       mov      gword ptr [rsp+0x20], rcx
+       lea      r13, bword ptr [rsp+0x20]
        ; byrRegs +[r13]
-       cmp      gword ptr [rsp+0x28], 0
+       cmp      gword ptr [rsp+0x20], 0
        jne      SHORT G_M22994_IG15
        cmp      ebp, dword ptr [rbx+0x08]
-       jae      G_M22994_IG24
+       jae      SHORT G_M22994_IG24
        mov      ecx, ebp
        ; gcrRegs -[rcx]
        cmp      gword ptr [rbx+8*rcx+0x10], 0
        je       SHORT G_M22994_IG19
-                       ;; size=40 bbWeight=0.02 PerfScore 0.30
+                       ;; size=36 bbWeight=0.02 PerfScore 0.30
 G_M22994_IG14:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx rsi]
        ; byrRegs -[r13 r15]
@@ -194,12 +193,9 @@ G_M22994_IG18:        ; bbWeight=0.02, gcrefRegs=0048 {rbx rsi}, byrefRegs=2000
        ; gcrRegs -[rcx rdx]
        ; byrRegs -[r13]
        ; gcr arg pop 0
-       xor      r12d, r12d
        test     eax, eax
-       sete     r12b
-       test     r12d, r12d
-       jne      SHORT G_M22994_IG22
-                       ;; size=33 bbWeight=0.02 PerfScore 0.28
+       je       SHORT G_M22994_IG22
+                       ;; size=23 bbWeight=0.02 PerfScore 0.25
 G_M22994_IG19:        ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        inc      ebp
        cmp      r14d, ebp
@@ -210,39 +206,37 @@ G_M22994_IG20:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        mov      eax, 1
                        ;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M22994_IG21:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 56
+       add      rsp, 48
        pop      rbx
        pop      rbp
        pop      rsi
        pop      rdi
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        ret      
-                       ;; size=17 bbWeight=0.50 PerfScore 2.62
+                       ;; size=15 bbWeight=0.50 PerfScore 2.38
 G_M22994_IG22:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        xor      eax, eax
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M22994_IG23:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 56
+       add      rsp, 48
        pop      rbx
        pop      rbp
        pop      rsi
        pop      rdi
-       pop      r12
        pop      r13
        pop      r14
        pop      r15
        ret      
-                       ;; size=17 bbWeight=0.50 PerfScore 2.62
+                       ;; size=15 bbWeight=0.50 PerfScore 2.38
 G_M22994_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
        call     CORINFO_HELP_RNGCHKFAIL
        ; gcr arg pop 0
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 410, prolog size 37, PerfScore 113.57, instruction count 126, allocated bytes for code 410 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 387, prolog size 35, PerfScore 112.04, instruction count 120, allocated bytes for code 387 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -250,17 +244,16 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x10
-  CountOfUnwindCodes: 9
+  SizeOfProlog      : 0x0E
+  CountOfUnwindCodes: 8
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 6 * 8 + 8 = 56 = 0x38
-    CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbp (5)
-    CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
-    CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r12 (12)
+    CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
+    CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbp (5)
+    CodeOffset: 0x08 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
+    CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
     CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r13 (13)
     CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r14 (14)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: r15 (15)

-23 (-1.28%) : 63142.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

@@ -46,7 +46,7 @@
 ;* V35 tmp23        [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
 ;* V36 tmp24        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
 ;* V37 tmp25        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Xml.Serialization.MemberMapping>
-;  V38 tmp26        [V38,T15] (  6, 12   )     ref  ->  registers   "argument with side effect"
+;  V38 tmp26        [V38,T15] (  6, 12   )     ref  ->  rcx         "argument with side effect"
 ;  V39 tmp27        [V39,T25] (  4,  8   )     ref  ->  rax         "argument with side effect"
 ;  V40 tmp28        [V40,T26] (  4,  8   )     ref  ->  [rbp-0x88]  "argument with side effect"
 ;  V41 tmp29        [V41,T34] (  3,  3   )     ref  ->  rcx         single-def "argument with side effect"
@@ -62,9 +62,8 @@
 ;  V51 cse3         [V51,T33] (  4,  3   )     ref  ->  rcx         "CSE - moderate"
 ;  V52 cse4         [V52,T28] (  6,  6   )     int  ->  r14         "CSE - moderate"
 ;  V53 cse5         [V53,T31] (  4,  5   )    long  ->  r14         "CSE - moderate"
-;  TEMP_01                                   byref  ->  [rbp-0xA8]
 ;
-; Lcl frame size = 184
+; Lcl frame size = 168
 
 G_M44608_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbp
@@ -75,15 +74,13 @@ G_M44608_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 184
-       lea      rbp, [rsp+0xF0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0xA8], rax
+       sub      rsp, 168
+       lea      rbp, [rsp+0xE0]
        mov      rbx, rcx
        ; gcrRegs +[rbx]
        mov      rsi, rdx
        ; gcrRegs +[rsi]
-                       ;; size=42 bbWeight=1 PerfScore 10.50
+                       ;; size=33 bbWeight=1 PerfScore 9.25
 G_M44608_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_0
        call     CORINFO_HELP_NEWSFAST
@@ -109,7 +106,7 @@ G_M44608_IG03:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M44608_IG04:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -520,28 +517,19 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000000 {V49}, gcrefRegs=
        ; byrRegs -[rcx]
        mov      rax, gword ptr [rbp-0x48]
        ; gcrRegs +[rax]
-       lea      rcx, bword ptr [rax+0x08]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rbp-0xA8], rcx
-       mov      gword ptr [rbp-0x48], rax
-       mov      rdx, gword ptr [rax+0x10]
-       ; gcrRegs +[rdx]
-       mov      rdx, gword ptr [rdx+0x10]
-       mov      rdx, gword ptr [rdx+0x10]
-       mov      gword ptr [rbp-0x88], rdx
-       ; GC ptr vars +{V40}
-       mov      r8, gword ptr [rbp-0x98]
-       ; gcrRegs +[r8]
-       mov      r8, gword ptr [r8+0x50]
-       mov      rcx, r8
+       mov      rcx, gword ptr [rax+0x10]
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
-       mov      r8, qword ptr [r8]
-       ; gcrRegs -[r8]
+       mov      rcx, gword ptr [rcx+0x10]
+       mov      rcx, gword ptr [rcx+0x10]
+       mov      gword ptr [rbp-0x88], rcx
+       ; GC ptr vars +{V40}
+       mov      rcx, gword ptr [rbp-0x98]
+       mov      rcx, gword ptr [rcx+0x50]
+       mov      r8, qword ptr [rcx]
        mov      r8, qword ptr [r8+0x48]
        ; GC ptr vars -{V49}
        call     [r8+0x30]<unknown method>
-       ; gcrRegs -[rcx rdx]
+       ; gcrRegs -[rcx]
        ; gcr arg pop 0
        mov      rdx, rax
        ; gcrRegs +[rdx]
@@ -551,30 +539,33 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000000 {V49}, gcrefRegs=
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rbp-0xA8]
+       mov      r8, gword ptr [rbp-0x48]
+       ; gcrRegs +[r8]
+       lea      rcx, bword ptr [r8+0x08]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
+       ; gcrRegs -[rax rdx r8]
        ; byrRegs -[rcx]
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
-       mov      rdx, gword ptr [rbp-0x48]
-       ; gcrRegs +[rdx]
-       mov      rcx, gword ptr [rdx+0x10]
-       ; gcrRegs +[rcx]
-       mov      r8, gword ptr [rcx+0x08]
+       mov      r8, gword ptr [rbp-0x48]
        ; gcrRegs +[r8]
-       mov      gword ptr [rbp-0x80], r8
+       mov      rcx, gword ptr [r8+0x10]
+       ; gcrRegs +[rcx]
+       mov      rcx, gword ptr [rcx+0x08]
+       mov      gword ptr [rbp-0x80], rcx
        ; GC ptr vars +{V27}
        mov      gword ptr [rbp-0x78], rax
        ; GC ptr vars +{V26}
        lea      rcx, bword ptr [rax+0x08]
        ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
+       mov      rdx, r8
+       ; gcrRegs +[rdx]
        ; GC ptr vars -{V11}
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx r8]
@@ -595,7 +586,7 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=0000008000000000 {V49}, gcrefRegs=
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
        jmp      G_M44608_IG20
-                       ;; size=218 bbWeight=0.02 PerfScore 1.04
+                       ;; size=204 bbWeight=0.02 PerfScore 1.00
 G_M44608_IG18:        ; bbWeight=0.02, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref, isz
        mov      rax, gword ptr [r12+0x08]
        ; gcrRegs +[rax]
@@ -729,7 +720,7 @@ G_M44608_IG21:        ; bbWeight=0.50, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0
        ; gcrRegs +[rax]
                        ;; size=148 bbWeight=0.50 PerfScore 23.12
 G_M44608_IG22:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -847,7 +838,7 @@ G_M44608_IG28:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000
        ; gcrRegs +[rax]
                        ;; size=13 bbWeight=0.50 PerfScore 2.62
 G_M44608_IG29:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 184
+       add      rsp, 168
        pop      rbx
        pop      rsi
        pop      rdi
@@ -882,7 +873,7 @@ G_M44608_IG31:        ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        int3     
                        ;; size=26 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1796, prolog size 42, PerfScore 521.37, instruction count 406, allocated bytes for code 1796 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1773, prolog size 33, PerfScore 520.08, instruction count 402, allocated bytes for code 1773 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -896,7 +887,7 @@ Unwind Info:
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
     CodeOffset: 0x13 UnwindOp: UWOP_ALLOC_LARGE (1)     OpInfo: 0 - Scaled small  
-      Size: 23 * 8 = 184 = 0x000B8
+      Size: 21 * 8 = 168 = 0x000A8
     CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)

-8 (-0.48%) : 186797.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

@@ -33,8 +33,8 @@
 ;  V22 tmp3         [V22,T46] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V23 tmp4         [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;  V24 tmp5         [V24,T26] (  4, 16   )     int  ->  r14         "impSpillLclRefs"
-;  V25 tmp6         [V25,T39] (  2,  8   )     ref  ->  rdx         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
-;  V26 tmp7         [V26,T42] (  2,  0.04)   ubyte  ->  rcx         "Inline return value spill temp"
+;  V25 tmp6         [V25,T38] (  2,  8   )     ref  ->  rdx         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+;* V26 tmp7         [V26,T42] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V27 tmp8         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V28 tmp9         [V28,T32] (  8, 12   )     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V29 tmp10        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -43,7 +43,7 @@
 ;  V32 tmp13        [V32,T27] (  2, 15.84)   ubyte  ->  rax         "Inline return value spill temp"
 ;  V33 tmp14        [V33,T00] (  5,126.72)     ref  ->  [rbp-0x80]  class-hnd spill-single-def "Inlining Arg" <System.Type>
 ;  V34 tmp15        [V34,T01] (  5, 95.04)     ref  ->  [rbp-0x88]  class-hnd spill-single-def "Inlining Arg" <System.Reflection.ParameterInfo>
-;* V35 tmp16        [V35,T37] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V35 tmp16        [V35,T39] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V36 tmp17        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V37 tmp18        [V37,T13] (  4, 31.68)     ref  ->  rax         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V38 tmp19        [V38    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -69,7 +69,7 @@
 ;  V58 cse2         [V58,T11] ( 15, 35.92)     int  ->  [rbp-0x4C]  multi-def "CSE - aggressive"
 ;  V59 cse3         [V59,T19] (  4, 31.68)    long  ->  [rbp-0x58]  spill-single-def "CSE - moderate"
 ;  V60 cse4         [V60,T28] ( 10, 13.54)     int  ->  r15         "CSE - moderate"
-;  V61 cse5         [V61,T38] (  6,  8   )     int  ->  r14         "CSE - moderate"
+;  V61 cse5         [V61,T37] (  6,  8   )     int  ->  r14         "CSE - moderate"
 ;  V62 cse6         [V62,T05] (  5, 71.28)    long  ->  [rbp-0x60]  spill-single-def "CSE - aggressive"
 ;
 ; Lcl frame size = 152
@@ -231,14 +231,10 @@ G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byr
        mov      rcx, gword ptr [rax+0x28]
        ; gcrRegs +[rcx]
        cmp      rcx, gword ptr [rsi+0x08]
-       sete     cl
-       ; gcrRegs -[rcx]
-       movzx    rcx, cl
-       test     ecx, ecx
-       jne      SHORT G_M46704_IG11
-                       ;; size=47 bbWeight=0.02 PerfScore 0.44
+       je       SHORT G_M46704_IG11
+                       ;; size=39 bbWeight=0.02 PerfScore 0.41
 G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rax]
+       ; gcrRegs -[rax rcx]
        mov      ecx, r13d
        mov      rcx, gword ptr [r15+8*rcx+0x10]
        ; gcrRegs +[rcx]
@@ -874,7 +870,7 @@ G_M46704_IG54:        ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
        int3     
                        ;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1667, prolog size 36, PerfScore 1991.92, instruction count 446, allocated bytes for code 1667 (MethodHash=f916498f) for method System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
+; Total bytes of code 1659, prolog size 36, PerfScore 1991.89, instruction count 443, allocated bytes for code 1659 (MethodHash=f916498f) for method System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
 ; ============================================================
 
 Unwind Info:

+0 (0.00%) : 5179.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T13] (  4,  5   )     int  ->  rdi        
 ;  V07 loc4         [V07,T14] (  4,  5   )     int  ->  r13        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  rbx        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [rbp+0x10]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->  rax        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [rbp+0x28]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T17] (  8,  4   )     int  ->  r14         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T23] (  3,  3   )     int  ->  rdi         "Inlining Arg"
-;  V31 tmp19        [V31,T34] (  2,  2   )    long  ->  rdi         "Inlining Arg"
+;  V31 tmp19        [V31,T32] (  2,  2   )    long  ->  rdi         "Inlining Arg"
 ;  V32 tmp20        [V32,T22] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -51,24 +51,24 @@
 ;  V40 tmp28        [V40,T18] (  5,  4.00)    long  ->  [rbp+0x20]  spill-single-def "Inlining Arg"
 ;* V41 tmp29        [V41    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V42 tmp30        [V42    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V43 tmp31        [V43,T35] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V43 tmp31        [V43,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V44 tmp32        [V44,T09] (  3,  6   )     int  ->  r11         "Inline stloc first use temp"
 ;  V45 tmp33        [V45,T10] (  3,  6   )     int  ->  rcx         "Inline stloc first use temp"
 ;  V46 tmp34        [V46,T06] (  3, 12   )   byref  ->  rcx         "dup spill"
 ;* V47 tmp35        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V49 tmp37        [V49,T44] (  4,  1.50)   byref  ->  rdi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V49 tmp37        [V49,T42] (  4,  1.50)   byref  ->  rdi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V51 tmp39        [V51    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V52 tmp40        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V53 tmp41        [V53,T40] (  2,  1.50)     int  ->  [rbp+0x30]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V54 tmp42        [V54,T41] (  2,  1.50)     int  ->  [rbp+0x34]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V53 tmp41        [V53,T38] (  2,  1.50)     int  ->  [rbp+0x30]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V54 tmp42        [V54,T39] (  2,  1.50)     int  ->  [rbp+0x34]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V55 tmp43        [V55    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V56 tmp44        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V57 tmp45        [V57,T42] (  2,  1.50)     int  ->  [rbp+0x28]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V58 tmp46        [V58,T43] (  2,  1.50)     int  ->  [rbp+0x2C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V59 tmp47        [V59,T45] (  2,  1   )   byref  ->  r15         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V60 tmp48        [V60,T46] (  2,  1   )     int  ->  r14         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V57 tmp45        [V57,T40] (  2,  1.50)     int  ->  [rbp+0x28]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V58 tmp46        [V58,T41] (  2,  1.50)     int  ->  [rbp+0x2C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V59 tmp47        [V59,T43] (  2,  1   )   byref  ->  r15         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V60 tmp48        [V60,T44] (  2,  1   )     int  ->  r14         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp50        [V62    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V63 tmp51        [V63    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -77,26 +77,23 @@
 ;* V66 tmp54        [V66    ] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x8)" P-INDEP
 ;  V67 tmp55        [V67,T15] (  3,  4.50)   byref  ->  r15         single-def "V05.[000..008)"
 ;  V68 tmp56        [V68,T16] (  3,  4.50)     int  ->  r14         single-def "V05.[008..012)"
-;  V69 tmp57        [V69,T36] (  3,  1.50)   byref  ->  r15         "V16.[000..008)"
-;  V70 tmp58        [V70,T39] (  3,  1.50)     int  ->  r14         "V16.[008..012)"
+;  V69 tmp57        [V69,T34] (  3,  1.50)   byref  ->  r15         "V16.[000..008)"
+;  V70 tmp58        [V70,T37] (  3,  1.50)     int  ->  r14         "V16.[008..012)"
 ;  V71 tmp59        [V71,T03] (  2, 16   )     ref  ->  rdx         "argument with side effect"
 ;  V72 GsCookie     [V72    ] (  1,  1   )    long  ->  [rbp+0x08]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V73 PSPSym       [V73,T48] (  1,  1   )    long  ->  [rbp+0x00]  do-not-enreg[V] "PSPSym"
+;  V73 PSPSym       [V73,T45] (  1,  1   )    long  ->  [rbp+0x00]  do-not-enreg[V] "PSPSym"
 ;  V74 cse0         [V74,T11] (  3,  6   )     int  ->  rcx         "CSE - aggressive"
-;  V75 cse1         [V75,T37] (  3,  1.50)     ref  ->  rdx         "CSE - moderate"
-;  V76 rat0         [V76,T30] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V75 cse1         [V75,T35] (  3,  1.50)     ref  ->  rdx         "CSE - moderate"
+;  V76 rat0         [V76,T29] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V77 rat1         [V77,T26] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V78 rat2         [V78,T31] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V78 rat2         [V78,T30] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V79 rat3         [V79,T27] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V80 rat4         [V80,T32] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V80 rat4         [V80,T31] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V81 rat5         [V81,T28] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V82 rat6         [V82,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V83 rat7         [V83,T47] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V84 rat8         [V84,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V85 rat9         [V85,T02] (  3, 17.60)    long  ->  rdx         "Spilling to split statement for tree"
-;  V86 rat10        [V86,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V87 rat11        [V87,T24] (  3,  3   )     int  ->  rdi         "ReplaceWithLclVar is creating a new local variable"
-;  V88 rat12        [V88,T25] (  3,  3   )    long  ->  [rbp+0x18]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V82 rat6         [V82,T02] (  3, 17.60)    long  ->  rdx         "Spilling to split statement for tree"
+;  V83 rat7         [V83,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V84 rat8         [V84,T24] (  3,  3   )     int  ->  rdi         "ReplaceWithLclVar is creating a new local variable"
+;  V85 rat9         [V85,T25] (  3,  3   )    long  ->  [rbp+0x18]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 96
 

+0 (0.00%) : 5216.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rsp+0x28]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  r12        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rsp+0x20]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  rbp         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  rbp         single-def
 ;  V16 OutArgs      [V16    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  r15        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  r15        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rdx         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r15        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rdx         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r15        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rsp+0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rax         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rdx         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rdx         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rdx         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rdx         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rdx         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rdx         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r12         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rdx         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rdx         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r12         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rdx         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 

+0 (0.00%) : 80688.dasm - System.Collections.Generic.HashSet1[System.ValueTuple2[System.Canon,int]]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.ValueTuple2[System.Canon,int]],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -11,21 +11,21 @@
 ;  V00 this         [V00,T02] ( 11, 14   )     ref  ->  [rbp+0xC0]  this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[System.__Canon,int]]>
 ;  V01 arg1         [V01,T13] (  4,  3   )     ref  ->  rsi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
 ;  V02 arg2         [V02,T08] (  3,  4   )   ubyte  ->  rbx         single-def
-;  V03 loc0         [V03,T37] (  3,  1.50)     int  ->  rdi        
+;  V03 loc0         [V03,T35] (  3,  1.50)     int  ->  rdi        
 ;* V04 loc1         [V04    ] (  0,  0   )     int  ->  zero-ref   
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V06 loc3         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
 ;  V07 loc4         [V07,T14] (  4,  5   )     int  ->  rdi        
 ;  V08 loc5         [V08,T15] (  4,  5   )     int  ->  r13        
-;  V09 loc6         [V09,T38] (  3,  1.50)     int  ->  rbx        
-;  V10 loc7         [V10,T35] (  6,  1.50)     ref  ->  [rbp+0x18]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V09 loc6         [V09,T36] (  3,  1.50)     int  ->  rbx        
+;  V10 loc7         [V10,T33] (  6,  1.50)     ref  ->  [rbp+0x18]  class-hnd EH-live spill-single-def <<unknown class>>
 ;  V11 loc8         [V11    ] (  1,  0.50)  struct (16) [rbp+0x60]  do-not-enreg[XS] must-init addr-exposed <System.ValueTuple`2[System.__Canon,int]>
 ;* V12 loc9         [V12    ] (  0,  0   )  struct (16) zero-ref    <System.Span`1[int]>
 ;  V13 loc10        [V13,T06] (  7,  9   )     ref  ->  [rbp+0x10]  class-hnd EH-live single-def <<unknown class>>
 ;  V14 loc11        [V14    ] (  2,  8   )  struct (16) [rbp+0x50]  do-not-enreg[XS] must-init addr-exposed <System.ValueTuple`2[System.__Canon,int]>
 ;  V15 loc12        [V15,T04] (  6, 16   )     int  ->  r12        
 ;  V16 OutArgs      [V16    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V17 tmp1         [V17,T39] (  2,  1   )     int  ->  rdx        
+;  V17 tmp1         [V17,T37] (  2,  1   )     int  ->  rdx        
 ;* V18 tmp2         [V18    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V19 tmp3         [V19    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V20 tmp4         [V20    ] (  0,  0   )  struct (16) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
@@ -45,7 +45,7 @@
 ;* V34 tmp18        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp19        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V36 tmp20        [V36,T18] (  8,  4   )     int  ->  r14         "Inline return value spill temp"
-;  V37 tmp21        [V37,T33] (  2,  2   )    long  ->  rdi         "Inlining Arg"
+;  V37 tmp21        [V37,T31] (  2,  2   )    long  ->  rdi         "Inlining Arg"
 ;  V38 tmp22        [V38,T23] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V39 tmp23        [V39    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V40 tmp24        [V40    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -55,7 +55,7 @@
 ;  V44 tmp28        [V44,T19] (  5,  4.00)    long  ->  [rbp+0x38]  spill-single-def "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V46 tmp30        [V46    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V47 tmp31        [V47,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V47 tmp31        [V47,T32] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V48 tmp32        [V48,T09] (  3,  6   )     int  ->  rcx         "Inline stloc first use temp"
 ;* V49 tmp33        [V49    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
 ;  V50 tmp34        [V50,T10] (  3,  6   )     int  ->  rcx         "Inline stloc first use temp"
@@ -69,18 +69,18 @@
 ;* V58 tmp42        [V58    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x8)" P-INDEP
 ;  V59 tmp43        [V59    ] (  2,  8   )     ref  ->  [rbp+0x50]  do-not-enreg[X] addr-exposed "field V14.Item1 (fldOffset=0x0)" P-DEP
 ;  V60 tmp44        [V60    ] (  2,  8   )     int  ->  [rbp+0x58]  do-not-enreg[X] addr-exposed "field V14.Item2 (fldOffset=0x8)" P-DEP
-;  V61 tmp45        [V61,T45] (  4,  1.50)   byref  ->  rdi         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V61 tmp45        [V61,T43] (  4,  1.50)   byref  ->  rdi         single-def "field V18._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp46        [V62    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x8)" P-INDEP
 ;* V63 tmp47        [V63    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
 ;* V64 tmp48        [V64    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x8)" P-INDEP
-;  V65 tmp49        [V65,T41] (  2,  1.50)     int  ->  [rbp+0x48]  do-not-enreg[] "field V26.Item1 (fldOffset=0x0)" P-DEP
-;  V66 tmp50        [V66,T42] (  2,  1.50)     int  ->  [rbp+0x4C]  do-not-enreg[] "field V26.Item2 (fldOffset=0x4)" P-DEP
+;  V65 tmp49        [V65,T39] (  2,  1.50)     int  ->  [rbp+0x48]  do-not-enreg[] "field V26.Item1 (fldOffset=0x0)" P-DEP
+;  V66 tmp50        [V66,T40] (  2,  1.50)     int  ->  [rbp+0x4C]  do-not-enreg[] "field V26.Item2 (fldOffset=0x4)" P-DEP
 ;* V67 tmp51        [V67    ] (  0,  0   )   byref  ->  zero-ref    "field V28._reference (fldOffset=0x0)" P-INDEP
 ;* V68 tmp52        [V68    ] (  0,  0   )     int  ->  zero-ref    "field V28._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T43] (  2,  1.50)     int  ->  [rbp+0x40]  do-not-enreg[] "field V33.Item1 (fldOffset=0x0)" P-DEP
-;  V70 tmp54        [V70,T44] (  2,  1.50)     int  ->  [rbp+0x44]  do-not-enreg[] "field V33.Item2 (fldOffset=0x4)" P-DEP
-;  V71 tmp55        [V71,T46] (  2,  1   )   byref  ->  r15         "field V39._reference (fldOffset=0x0)" P-INDEP
-;  V72 tmp56        [V72,T47] (  2,  1   )     int  ->  r14         "field V39._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T41] (  2,  1.50)     int  ->  [rbp+0x40]  do-not-enreg[] "field V33.Item1 (fldOffset=0x0)" P-DEP
+;  V70 tmp54        [V70,T42] (  2,  1.50)     int  ->  [rbp+0x44]  do-not-enreg[] "field V33.Item2 (fldOffset=0x4)" P-DEP
+;  V71 tmp55        [V71,T44] (  2,  1   )   byref  ->  r15         "field V39._reference (fldOffset=0x0)" P-INDEP
+;  V72 tmp56        [V72,T45] (  2,  1   )     int  ->  r14         "field V39._length (fldOffset=0x8)" P-INDEP
 ;* V73 tmp57        [V73    ] (  0,  0   )   byref  ->  zero-ref    "field V40._reference (fldOffset=0x0)" P-INDEP
 ;* V74 tmp58        [V74    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x8)" P-INDEP
 ;* V75 tmp59        [V75    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V41._reference (fldOffset=0x0)" P-INDEP
@@ -93,26 +93,23 @@
 ;* V82 tmp66        [V82    ] (  0,  0   )     int  ->  zero-ref    "field V51._length (fldOffset=0x8)" P-INDEP
 ;  V83 tmp67        [V83,T16] (  3,  4.50)   byref  ->  r15         single-def "V06.[000..008)"
 ;  V84 tmp68        [V84,T17] (  3,  4.50)     int  ->  r14         "V06.[008..012)"
-;  V85 tmp69        [V85,T36] (  3,  1.50)   byref  ->  r15         "V21.[000..008)"
-;  V86 tmp70        [V86,T40] (  3,  1.50)     int  ->  r14         "V21.[008..012)"
+;  V85 tmp69        [V85,T34] (  3,  1.50)   byref  ->  r15         "V21.[000..008)"
+;  V86 tmp70        [V86,T38] (  3,  1.50)     int  ->  r14         "V21.[008..012)"
 ;  V87 tmp71        [V87    ] (  2, 16   )  struct (16) [rbp+0x28]  do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ValueTuple`2[System.__Canon,int]>
 ;* V88 tmp72        [V88,T07] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;  V89 GsCookie     [V89    ] (  1,  1   )    long  ->  [rbp+0x08]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V90 PSPSym       [V90,T49] (  1,  1   )    long  ->  [rbp+0x00]  do-not-enreg[V] "PSPSym"
+;  V90 PSPSym       [V90,T46] (  1,  1   )    long  ->  [rbp+0x00]  do-not-enreg[V] "PSPSym"
 ;  V91 cse0         [V91,T11] (  3,  6   )     int  ->  [rbp+0x24]  spill-single-def "CSE - aggressive"
 ;  V92 cse1         [V92,T12] (  3,  6   )     int  ->  [rbp+0x20]  spill-single-def "CSE - aggressive"
-;  V93 rat0         [V93,T29] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V93 rat0         [V93,T28] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V94 rat1         [V94,T25] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V95 rat2         [V95,T30] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V95 rat2         [V95,T29] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V96 rat3         [V96,T26] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V97 rat4         [V97,T31] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V97 rat4         [V97,T30] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V98 rat5         [V98,T27] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V99 rat6         [V99,T32] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V100 rat7        [V100,T48] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V101 rat8        [V101,T28] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V102 rat9        [V102,T03] (  3, 17.60)    long  ->  rdx         "Spilling to split statement for tree"
-;  V103 rat10       [V103,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V104 rat11       [V104,T24] (  3,  3   )     int  ->  rdi         "ReplaceWithLclVar is creating a new local variable"
+;  V99 rat6         [V99,T03] (  3, 17.60)    long  ->  rdx         "Spilling to split statement for tree"
+;  V100 rat7        [V100,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V101 rat8        [V101,T24] (  3,  3   )     int  ->  rdi         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 152
 
@@ -177,7 +174,7 @@ G_M10461_IG06:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
        mov      gword ptr [rbp+0x18], rax
        ; GC ptr vars +{V10}
                        ;; size=10 bbWeight=0.50 PerfScore 2.12
-G_M10461_IG07:        ; bbWeight=0.50, gcVars=0000000800000004 {V00 V10}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG07:        ; bbWeight=0.50, gcVars=0000000200000004 {V00 V10}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
        mov      rcx, rax
        ; gcrRegs +[rcx]
        mov      r11, 0xD1FFAB1E      ; function address
@@ -532,7 +529,7 @@ G_M10461_IG44:        ; bbWeight=0.50, epilog, nogc, extend
        pop      rbp
        ret      
                        ;; size=17 bbWeight=0.50 PerfScore 2.75
-G_M10461_IG45:        ; bbWeight=0, gcVars=0000000800000004 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M10461_IG45:        ; bbWeight=0, gcVars=0000000200000004 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
        ; GC ptr vars +{V10}
        push     rbp
        push     r15
@@ -548,7 +545,7 @@ G_M10461_IG45:        ; bbWeight=0, gcVars=0000000800000004 {V00 V10}, gcrefRegs
        mov      qword ptr [rsp+0x20], rbp
        lea      rbp, [rbp+0x20]
                        ;; size=32 bbWeight=0 PerfScore 0.00
-G_M10461_IG46:        ; bbWeight=0, gcVars=0000000800000004 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10461_IG46:        ; bbWeight=0, gcVars=0000000200000004 {V00 V10}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        cmp      gword ptr [rbp+0x18], 0
        je       SHORT G_M10461_IG47
        mov      rcx, gword ptr [rbp+0x18]

realworld.run.windows.x64.checked.mch

-32 (-0.41%) : 16193.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)

@@ -12,31 +12,31 @@
 ;  V01 arg1         [V01,T68] (  6,  5   )     ref  ->  rsi         class-hnd single-def <Microsoft.ML.IDataView>
 ;  V02 loc0         [V02,T58] ( 14,  7.50)     ref  ->  rdi         class-hnd single-def <<unknown class>>
 ;  V03 loc1         [V03,T15] ( 24, 19.50)     ref  ->  rbp         class-hnd exact single-def <Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+TransformApplierParams>
-;  V04 loc2         [V04,T03] ( 31, 34   )     ref  ->  [rsp+0x1B0]  class-hnd <System.String[]>
-;  V05 loc3         [V05,T13] ( 21, 22.54)     ref  ->  [rsp+0x1A8]  class-hnd <System.String[]>
+;  V04 loc2         [V04,T03] ( 31, 34   )     ref  ->  [rsp+0x1B8]  class-hnd <System.String[]>
+;  V05 loc3         [V05,T13] ( 21, 22.54)     ref  ->  [rsp+0x1B0]  class-hnd <System.String[]>
 ;  V06 loc4         [V06,T81] (  4,  5   )     ref  ->  r14         class-hnd single-def <System.String[]>
 ;  V07 loc5         [V07,T77] ( 10,  5.50)     ref  ->  r13         class-hnd <System.String>
 ;  V08 loc6         [V08,T67] ( 12,  7   )     ref  ->  r12         class-hnd <System.String>
-;  V09 loc7         [V09,T00] ( 80, 97   )     ref  ->  [rsp+0x1A0]  class-hnd exact spill-single-def <<unknown class>>
-;  V10 loc8         [V10,T04] ( 38, 32   )     ref  ->  [rsp+0x198]  ld-addr-op class-hnd <Microsoft.ML.IDataView>
-;  V11 loc9         [V11,T44] ( 23, 13.50)     ref  ->  [rsp+0x190]  class-hnd <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
+;  V09 loc7         [V09,T00] ( 80, 97   )     ref  ->  [rsp+0x1A8]  class-hnd exact spill-single-def <<unknown class>>
+;  V10 loc8         [V10,T04] ( 38, 32   )     ref  ->  [rsp+0x1A0]  ld-addr-op class-hnd <Microsoft.ML.IDataView>
+;  V11 loc9         [V11,T44] ( 23, 13.50)     ref  ->  [rsp+0x198]  class-hnd <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
 ;  V12 loc10        [V12,T180] (  2,  1   )     ref  ->  r14         class-hnd exact single-def <System.String[]>
-;  V13 loc11        [V13,T73] (  6,  5.54)     ref  ->  [rsp+0x188]  class-hnd exact spill-single-def <System.ValueTuple`2[System.String,System.String][]>
-;  V14 loc12        [V14,T42] ( 10, 13.54)     ref  ->  [rsp+0x180]  class-hnd exact spill-single-def <System.String[]>
-;  V15 loc13        [V15,T16] ( 16, 16.78)     int  ->  [rsp+0x20C] 
+;  V13 loc11        [V13,T73] (  6,  5.54)     ref  ->  [rsp+0x190]  class-hnd exact spill-single-def <System.ValueTuple`2[System.String,System.String][]>
+;  V14 loc12        [V14,T42] ( 10, 13.54)     ref  ->  [rsp+0x188]  class-hnd exact spill-single-def <System.String[]>
+;  V15 loc13        [V15,T16] ( 16, 16.78)     int  ->  [rsp+0x214] 
 ;  V16 loc14        [V16,T74] (  6,  5.54)     ref  ->  r15         class-hnd exact single-def <Microsoft.ML.Transforms.Text.WordTokenizingEstimator+ColumnOptions[]>
-;  V17 loc15        [V17,T05] ( 17, 28.58)     int  ->  [rsp+0x208] 
+;  V17 loc15        [V17,T05] ( 17, 28.58)     int  ->  [rsp+0x210] 
 ;* V18 loc16        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.ML.Transforms.Text.WordTokenizingEstimator+ColumnOptions>
-;  V19 loc17        [V19,T75] (  6,  5.54)     ref  ->  [rsp+0x178]  class-hnd exact spill-single-def <<unknown class>>
-;  V20 loc18        [V20,T76] (  6,  5.54)     ref  ->  [rsp+0x170]  class-hnd exact spill-single-def <System.String[]>
-;  V21 loc19        [V21,T06] ( 17, 28.58)     int  ->  [rsp+0x204] 
-;  V22 loc20        [V22,T08] ( 14, 28   )     ref  ->  [rsp+0x168]  class-hnd exact <Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Column>
+;  V19 loc17        [V19,T75] (  6,  5.54)     ref  ->  [rsp+0x180]  class-hnd exact spill-single-def <<unknown class>>
+;  V20 loc18        [V20,T76] (  6,  5.54)     ref  ->  [rsp+0x178]  class-hnd exact spill-single-def <System.String[]>
+;  V21 loc19        [V21,T06] ( 17, 28.58)     int  ->  [rsp+0x20C] 
+;  V22 loc20        [V22,T08] ( 14, 28   )     ref  ->  [rsp+0x170]  class-hnd exact <Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Column>
 ;* V23 loc21        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
 ;  V24 loc22        [V24,T119] (  5,  2.50)     ref  ->  r13         class-hnd exact single-def <System.String>
 ;* V25 loc23        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.String[]>
 ;  V26 loc24        [V26,T40] ( 10, 14   )     ref  ->  r15         class-hnd single-def <System.String[]>
 ;  V27 loc25        [V27,T43] ( 10, 13.54)     ref  ->  r12         class-hnd exact single-def <System.ValueTuple`2[System.String,System.String][]>
-;  V28 loc26        [V28,T07] ( 16, 28.54)     int  ->  [rsp+0x200] 
+;  V28 loc26        [V28,T07] ( 16, 28.54)     int  ->  [rsp+0x208] 
 ;  V29 loc27        [V29,T66] ( 15,  7.50)     ref  ->  r14         class-hnd exact single-def <<unknown class>>
 ;  V30 loc28        [V30,T92] (  6,  3   )     ref  ->  r15         class-hnd exact single-def <System.String>
 ;  V31 loc29        [V31,T93] (  6,  3   )     ref  ->  r15         class-hnd exact single-def <System.String>
@@ -45,7 +45,7 @@
 ;  V34 OutArgs      [V34    ] (  1,  1   )  struct (56) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V35 tmp1         [V35,T70] (  3,  6   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+TransformApplierParams>
 ;  V36 tmp2         [V36,T71] (  3,  6   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V37 tmp3         [V37,T59] (  5,  8   )     ref  ->  [rsp+0x160]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
+;  V37 tmp3         [V37,T59] (  5,  8   )     ref  ->  [rsp+0x168]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
 ;  V38 tmp4         [V38,T02] ( 28, 31   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V39 tmp5         [V39,T60] (  4,  8   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V40 tmp6         [V40,T72] (  3,  6   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.TextFeaturizingEstimator+Transformer>
@@ -69,33 +69,33 @@
 ;* V58 tmp24        [V58    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
 ;  V59 tmp25        [V59,T98] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V60 tmp26        [V60,T84] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingTransformer>
-;  V61 tmp27        [V61,T56] (  8,  8   )     ref  ->  [rsp+0x158]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingEstimator+ColumnOptions>
-;  V62 tmp28        [V62,T57] (  8,  8   )     ref  ->  [rsp+0x150]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingEstimator+ColumnOptions>
+;  V61 tmp27        [V61,T56] (  8,  8   )     ref  ->  [rsp+0x160]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingEstimator+ColumnOptions>
+;  V62 tmp28        [V62,T57] (  8,  8   )     ref  ->  [rsp+0x158]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.LpNormNormalizingEstimator+ColumnOptions>
 ;  V63 tmp29        [V63,T182] (  2,  1   )     ref  ->  r15        
 ;* V64 tmp30        [V64    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.String,System.String]>
 ;  V65 tmp31        [V65,T69] (  5,  5   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.TokenizingByCharactersTransformer>
-;  V66 tmp32        [V66,T99] (  3,  3   )     ref  ->  [rsp+0x148]  class-hnd exact spill-single-def "dup spill" <<unknown class>>
-;  V67 tmp33        [V67,T140] (  2,  2   )     ref  ->  [rsp+0x140]  class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+;  V66 tmp32        [V66,T99] (  3,  3   )     ref  ->  [rsp+0x150]  class-hnd exact spill-single-def "dup spill" <<unknown class>>
+;  V67 tmp33        [V67,T140] (  2,  2   )     ref  ->  [rsp+0x148]  class-hnd spill-single-def "impAppendStmt" <<unknown class>>
 ;* V68 tmp34        [V68    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impAppendStmt" <Microsoft.ML.IDataView>
-;  V69 tmp35        [V69,T79] (  5,  5   )     ref  ->  [rsp+0x138]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.ExtractorColumn>
-;  V70 tmp36        [V70,T120] (  5,  2.50)     ref  ->  [rsp+0x130] 
-;  V71 tmp37        [V71,T85] (  4,  4   )     ref  ->  [rsp+0x128]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer>
-;  V72 tmp38        [V72,T100] (  3,  3   )     ref  ->  [rsp+0x120]  class-hnd exact spill-single-def "dup spill" <<unknown class>>
-;  V73 tmp39        [V73,T141] (  2,  2   )     ref  ->  [rsp+0x118]  class-hnd spill-single-def "impAppendStmt" <<unknown class>>
+;  V69 tmp35        [V69,T79] (  5,  5   )     ref  ->  [rsp+0x140]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.ExtractorColumn>
+;  V70 tmp36        [V70,T120] (  5,  2.50)     ref  ->  [rsp+0x138] 
+;  V71 tmp37        [V71,T85] (  4,  4   )     ref  ->  [rsp+0x130]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer>
+;  V72 tmp38        [V72,T100] (  3,  3   )     ref  ->  [rsp+0x128]  class-hnd exact spill-single-def "dup spill" <<unknown class>>
+;  V73 tmp39        [V73,T141] (  2,  2   )     ref  ->  [rsp+0x120]  class-hnd spill-single-def "impAppendStmt" <<unknown class>>
 ;* V74 tmp40        [V74    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impAppendStmt" <Microsoft.ML.IDataView>
-;  V75 tmp41        [V75,T80] (  5,  5   )     ref  ->  [rsp+0x110]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.ExtractorColumn>
+;  V75 tmp41        [V75,T80] (  5,  5   )     ref  ->  [rsp+0x118]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.ExtractorColumn>
 ;* V76 tmp42        [V76    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.ML.Transforms.Text.StopWordsRemovingTransformer+Column>
 ;  V77 tmp43        [V77,T21] (  4, 16   )     ref  ->   r8         class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
 ;* V78 tmp44        [V78    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
-;  V79 tmp45        [V79,T01] ( 12, 48   )     ref  ->  [rsp+0x108]  class-hnd exact "NewObj constructor temp" <Microsoft.ML.Transforms.Text.WordTokenizingEstimator+ColumnOptions>
+;  V79 tmp45        [V79,T01] ( 12, 48   )     ref  ->  [rsp+0x110]  class-hnd exact "NewObj constructor temp" <Microsoft.ML.Transforms.Text.WordTokenizingEstimator+ColumnOptions>
 ;  V80 tmp46        [V80,T22] (  4, 16   )     ref  ->  rax         class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-;  V81 tmp47        [V81,T101] (  3,  3   )     ref  ->  [rsp+0x100]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.WordTokenizingEstimator>
+;  V81 tmp47        [V81,T101] (  3,  3   )     ref  ->  [rsp+0x108]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.WordTokenizingEstimator>
 ;  V82 tmp48        [V82,T23] (  4, 16   )     ref  ->  rax         class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
 ;* V83 tmp49        [V83    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.String,System.String]>
 ;  V84 tmp50        [V84,T102] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Transforms.Text.TextNormalizingEstimator>
-;  V85 tmp51        [V85,T103] (  3,  3   )     ref  ->  [rsp+0xF8]  class-hnd exact spill-single-def "dup spill" <System.String[]>
+;  V85 tmp51        [V85,T103] (  3,  3   )     ref  ->  [rsp+0x100]  class-hnd exact spill-single-def "dup spill" <System.String[]>
 ;  V86 tmp52        [V86,T142] (  2,  2   )     ref  ->  rax         class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.String>
-;  V87 tmp53        [V87,T86] (  4,  4   )     ref  ->  [rsp+0xF0]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer>
+;  V87 tmp53        [V87,T86] (  4,  4   )     ref  ->  [rsp+0xF8]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer>
 ;  V88 tmp54        [V88,T124] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
 ;  V89 tmp55        [V89,T176] (  2,  1   )     int  ->  rax        
 ;* V90 tmp56        [V90    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
@@ -103,18 +103,18 @@
 ;  V92 tmp58        [V92,T160] (  3,  1.50)     ref  ->  rcx         class-hnd single-def "Inline stloc first use temp" <System.String[]>
 ;  V93 tmp59        [V93,T125] (  4,  2   )     int  ->  r10         single-def "Inline stloc first use temp"
 ;  V94 tmp60        [V94,T104] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V95 tmp61        [V95,T105] (  3,  3   )     ref  ->  [rsp+0xE8]  class-hnd exact spill-single-def "dup spill" <Microsoft.ML.Data.ColumnConcatenatingTransformer+ColumnOptions[]>
-;  V96 tmp62        [V96,T143] (  2,  2   )     ref  ->  [rsp+0xE0]  class-hnd exact spill-single-def "Inlining Arg" <System.String>
-;  V97 tmp63        [V97,T106] (  3,  3   )     ref  ->  [rsp+0xD8]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer+ColumnOptions>
+;  V95 tmp61        [V95,T105] (  3,  3   )     ref  ->  [rsp+0xF0]  class-hnd exact spill-single-def "dup spill" <Microsoft.ML.Data.ColumnConcatenatingTransformer+ColumnOptions[]>
+;  V96 tmp62        [V96,T143] (  2,  2   )     ref  ->  [rsp+0xE8]  class-hnd exact spill-single-def "Inlining Arg" <System.String>
+;  V97 tmp63        [V97,T106] (  3,  3   )     ref  ->  [rsp+0xE0]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.ColumnConcatenatingTransformer+ColumnOptions>
 ;* V98 tmp64        [V98    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.ML.IDataView>
 ;* V99 tmp65        [V99    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;  V100 tmp66       [V100,T107] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
-;  V101 tmp67       [V101,T87] (  4,  4   )     ref  ->  [rsp+0xD0]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
-;  V102 tmp68       [V102,T94] (  6,  3   )     ref  ->  [rsp+0xC8]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V101 tmp67       [V101,T87] (  4,  4   )     ref  ->  [rsp+0xD8]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+;  V102 tmp68       [V102,T94] (  6,  3   )     ref  ->  [rsp+0xD0]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V103 tmp69       [V103,T177] (  3,  1.50)     int  ->  rdx         "Inline return value spill temp"
 ;* V104 tmp70       [V104    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline return value spill temp" <int[]>
 ;  V105 tmp71       [V105,T88] (  4,  4   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <int[]>
-;  V106 tmp72       [V106,T95] (  6,  3   )     ref  ->  [rsp+0xC0]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
+;  V106 tmp72       [V106,T95] (  6,  3   )     ref  ->  [rsp+0xC8]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
 ;  V107 tmp73       [V107,T178] (  3,  1.50)     int  ->  rdx         "Inline return value spill temp"
 ;* V108 tmp74       [V108    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
 ;* V109 tmp75       [V109    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
@@ -124,10 +124,10 @@
 ;  V113 tmp79       [V113,T24] (  4, 16   )     ref  ->  rdx         class-hnd exact "Inlining Arg" <System.String>
 ;  V114 tmp80       [V114,T25] (  4, 16   )     ref  ->  registers   class-hnd exact "Inlining Arg" <System.String>
 ;  V115 tmp81       [V115,T108] (  3,  3   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <System.__Canon>
-;  V116 tmp82       [V116,T26] (  4, 16   )     ref  ->  [rsp+0xB8]  class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
-;  V117 tmp83       [V117,T27] (  4, 16   )     ref  ->  [rsp+0xB0]  class-hnd exact "Inlining Arg" <System.String>
-;  V118 tmp84       [V118,T14] (  6, 20   )     ref  ->  [rsp+0xA8]  class-hnd exact "Inlining Arg" <System.String>
-;  V119 tmp85       [V119,T28] (  4, 16   )     ref  ->  [rsp+0xA0]  class-hnd exact "Inlining Arg" <System.String>
+;  V116 tmp82       [V116,T26] (  4, 16   )     ref  ->  [rsp+0xC0]  class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
+;  V117 tmp83       [V117,T27] (  4, 16   )     ref  ->  [rsp+0xB8]  class-hnd exact "Inlining Arg" <System.String>
+;  V118 tmp84       [V118,T14] (  6, 20   )     ref  ->  [rsp+0xB0]  class-hnd exact "Inlining Arg" <System.String>
+;  V119 tmp85       [V119,T28] (  4, 16   )     ref  ->  [rsp+0xA8]  class-hnd exact "Inlining Arg" <System.String>
 ;* V120 tmp86       [V120    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V121 tmp87       [V121,T41] (  8, 14   )     ref  ->  rdx        
 ;* V122 tmp88       [V122    ] (  0,  0   )     ref  ->  zero-ref   
@@ -139,7 +139,7 @@
 ;  V128 tmp94       [V128,T46] (  8, 12   )     int  ->  r10         "Inline stloc first use temp"
 ;  V129 tmp95       [V129,T18] (  6, 16   )     ref  ->  rdx         class-hnd exact "Inlining Arg" <System.String>
 ;  V130 tmp96       [V130,T109] (  3,  3   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.__Canon>
-;  V131 tmp97       [V131,T29] (  4, 16   )     ref  ->  [rsp+0x98]  class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
+;  V131 tmp97       [V131,T29] (  4, 16   )     ref  ->  [rsp+0xA0]  class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
 ;  V132 tmp98       [V132,T30] (  4, 16   )     ref  ->  rdx         class-hnd exact "Inlining Arg" <System.String>
 ;  V133 tmp99       [V133,T54] (  6, 10   )     ref  ->   r8         class-hnd "Inline stloc first use temp" <System.String[]>
 ;  V134 tmp100      [V134,T47] (  8, 12   )     int  ->  r10         "Inline stloc first use temp"
@@ -150,7 +150,7 @@
 ;* V139 tmp105      [V139    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V140 tmp106      [V140,T161] (  3,  1.50)     ref  ->  rcx         class-hnd single-def "Inline stloc first use temp" <System.String[]>
 ;  V141 tmp107      [V141,T126] (  4,  2   )     int  ->  rdx         single-def "Inline stloc first use temp"
-;  V142 tmp108      [V142,T111] (  3,  3   )     ref  ->  [rsp+0x90]  class-hnd spill-single-def "Inlining Arg" <Microsoft.ML.ITransformer>
+;  V142 tmp108      [V142,T111] (  3,  3   )     ref  ->  [rsp+0x98]  class-hnd spill-single-def "Inlining Arg" <Microsoft.ML.ITransformer>
 ;* V143 tmp109      [V143,T203] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V144 tmp110      [V144,T82] (  3,  5   )     ref  ->  rcx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V145 tmp111      [V145    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.ML.IDataView>
@@ -177,7 +177,7 @@
 ;* V166 tmp132      [V166,T197] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V167 tmp133      [V167,T198] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V168 tmp134      [V168,T164] (  3,  1.50)     ref  ->  r12         single-def
-;  V169 tmp135      [V169,T158] (  2,  2   )   ubyte  ->  [rsp+0x1FC]  spill-single-def "Inlining Arg"
+;  V169 tmp135      [V169,T158] (  2,  2   )   ubyte  ->  [rsp+0x204]  spill-single-def "Inlining Arg"
 ;* V170 tmp136      [V170    ] (  0,  0   )     int  ->  zero-ref   
 ;* V171 tmp137      [V171    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V172 tmp138      [V172,T165] (  3,  1.50)     ref  ->  rcx         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
@@ -217,11 +217,11 @@
 ;* V206 tmp172      [V206,T202] (  0,  0   )     ref  ->  zero-ref    single-def "field V58.key (fldOffset=0x0)" P-INDEP
 ;  V207 tmp173      [V207,T174] (  3,  1.50)     ref  ->  rdx         single-def "field V58.value (fldOffset=0x8)" P-INDEP
 ;  V208 tmp174      [V208,T61] (  4,  8   )     ref  ->  rdx         "field V64.Item1 (fldOffset=0x0)" P-INDEP
-;  V209 tmp175      [V209,T62] (  4,  8   )     ref  ->  [rsp+0x88]  "field V64.Item2 (fldOffset=0x8)" P-INDEP
+;  V209 tmp175      [V209,T62] (  4,  8   )     ref  ->  [rsp+0x90]  "field V64.Item2 (fldOffset=0x8)" P-INDEP
 ;* V210 tmp176      [V210,T91] (  0,  0   )   ubyte  ->  zero-ref    "field V78.hasValue (fldOffset=0x0)" P-INDEP
 ;  V211 tmp177      [V211,T65] (  4,  8   )     int  ->  rax         "field V78.value (fldOffset=0x4)" P-INDEP
 ;  V212 tmp178      [V212,T63] (  4,  8   )     ref  ->  rdx         "field V83.Item1 (fldOffset=0x0)" P-INDEP
-;  V213 tmp179      [V213,T64] (  4,  8   )     ref  ->  [rsp+0x80]  "field V83.Item2 (fldOffset=0x8)" P-INDEP
+;  V213 tmp179      [V213,T64] (  4,  8   )     ref  ->  [rsp+0x88]  "field V83.Item2 (fldOffset=0x8)" P-INDEP
 ;* V214 tmp180      [V214    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V153.hasValue (fldOffset=0x0)" P-INDEP
 ;* V215 tmp181      [V215    ] (  0,  0   )     int  ->  zero-ref    single-def "field V153.value (fldOffset=0x4)" P-INDEP
 ;* V216 tmp182      [V216,T204] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V155.hasValue (fldOffset=0x0)" P-INDEP
@@ -237,21 +237,21 @@
 ;* V226 tmp192      [V226    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V197.key (fldOffset=0x0)" P-INDEP
 ;* V227 tmp193      [V227    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V197.value (fldOffset=0x8)" P-INDEP
 ;  V228 tmp194      [V228,T89] (  2,  4   )     ref  ->  rdx         single-def "argument with side effect"
-;  V229 tmp195      [V229,T145] (  2,  2   )     ref  ->  [rsp+0x78]  spill-single-def "argument with side effect"
+;  V229 tmp195      [V229,T145] (  2,  2   )     ref  ->  [rsp+0x80]  spill-single-def "argument with side effect"
 ;  V230 tmp196      [V230,T146] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
 ;  V231 tmp197      [V231,T147] (  2,  2   )     ref  ->   r8         single-def "argument with side effect"
-;  V232 tmp198      [V232,T33] (  4, 16   )     ref  ->  [rsp+0x70]  "argument with side effect"
+;  V232 tmp198      [V232,T33] (  4, 16   )     ref  ->  [rsp+0x78]  "argument with side effect"
 ;  V233 tmp199      [V233,T34] (  4, 16   )     ref  ->  rax         "argument with side effect"
-;  V234 tmp200      [V234,T11] (  6, 24   )   byref  ->  [rsp+0x68]  "BlockOp address local"
+;  V234 tmp200      [V234,T11] (  6, 24   )   byref  ->  [rsp+0x70]  "BlockOp address local"
 ;  V235 tmp201      [V235,T35] (  4, 16   )     ref  ->  rax         "argument with side effect"
 ;  V236 tmp202      [V236,T36] (  4, 16   )     ref  ->  rax         "argument with side effect"
 ;  V237 tmp203      [V237,T148] (  2,  2   )     ref  ->  r13         single-def "argument with side effect"
 ;  V238 tmp204      [V238,T149] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V239 tmp205      [V239,T37] (  4, 16   )     ref  ->  [rsp+0x60]  "argument with side effect"
+;  V239 tmp205      [V239,T37] (  4, 16   )     ref  ->  [rsp+0x68]  "argument with side effect"
 ;  V240 tmp206      [V240,T38] (  4, 16   )     ref  ->  rax         "argument with side effect"
-;  V241 tmp207      [V241,T12] (  6, 24   )   byref  ->  [rsp+0x58]  "BlockOp address local"
-;  V242 tmp208      [V242,T117] (  3,  3   )  struct ( 8) [rsp+0x1F0]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;  V243 tmp209      [V243,T118] (  3,  3   )  struct ( 8) [rsp+0x1E8]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+;  V241 tmp207      [V241,T12] (  6, 24   )   byref  ->  [rsp+0x60]  "BlockOp address local"
+;  V242 tmp208      [V242,T117] (  3,  3   )  struct ( 8) [rsp+0x1F8]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+;  V243 tmp209      [V243,T118] (  3,  3   )  struct ( 8) [rsp+0x1F0]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
 ;* V244 tmp210      [V244,T191] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
 ;  V245 tmp211      [V245,T150] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
 ;* V246 tmp212      [V246,T192] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
@@ -261,7 +261,7 @@
 ;  V250 tmp216      [V250,T154] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
 ;  V251 tmp217      [V251,T155] (  2,  2   )     ref  ->  r15         single-def "argument with side effect"
 ;  V252 tmp218      [V252,T156] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V253 tmp219      [V253    ] ( 12, 12   )  struct (16) [rsp+0x1D8]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
+;  V253 tmp219      [V253    ] ( 12, 12   )  struct (16) [rsp+0x1E0]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
 ;* V254 tmp220      [V254,T193] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
 ;  V255 tmp221      [V255,T113] (  3,  3   )   byref  ->  r15         single-def "BlockOp address local"
 ;* V256 tmp222      [V256,T194] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
@@ -278,23 +278,22 @@
 ;* V267 tmp233      [V267    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;  V268 tmp234      [V268,T211] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;  V269 cse0        [V269,T179] (  3,  1.50)    long  ->  r12         "CSE - conservative"
-;  V270 cse1        [V270,T136] (  4,  2   )     int  ->  [rsp+0x1D4]  spill-single-def "CSE - conservative"
-;  V271 cse2        [V271,T137] (  4,  2   )     int  ->  [rsp+0x1D0]  spill-single-def "CSE - conservative"
+;  V270 cse1        [V270,T136] (  4,  2   )     int  ->  [rsp+0x1DC]  spill-single-def "CSE - conservative"
+;  V271 cse2        [V271,T137] (  4,  2   )     int  ->  [rsp+0x1D8]  spill-single-def "CSE - conservative"
 ;  V272 cse3        [V272,T185] (  2,  1   )     int  ->   r9         "CSE - conservative"
 ;  V273 cse4        [V273,T186] (  2,  1   )     int  ->   r8         "CSE - conservative"
 ;  V274 cse5        [V274,T187] (  2,  1   )     int  ->   r8         "CSE - conservative"
 ;  V275 cse6        [V275,T188] (  2,  1   )     int  ->   r8         "CSE - conservative"
 ;  V276 cse7        [V276,T189] (  2,  1   )     int  ->  rax         "CSE - conservative"
 ;  V277 cse8        [V277,T190] (  2,  1   )     int  ->   r8         "CSE - conservative"
-;  V278 cse9        [V278,T39] (  4, 15.84)    long  ->  [rsp+0x1C8]  spill-single-def "CSE - moderate"
-;  V279 cse10       [V279,T49] (  3, 11.88)     ref  ->  [rsp+0x50]  spill-single-def "CSE - conservative"
-;  V280 cse11       [V280,T50] (  3, 11.88)     ref  ->  [rsp+0x48]  spill-single-def "CSE - conservative"
+;  V278 cse9        [V278,T39] (  4, 15.84)    long  ->  [rsp+0x1D0]  spill-single-def "CSE - moderate"
+;  V279 cse10       [V279,T49] (  3, 11.88)     ref  ->  [rsp+0x58]  spill-single-def "CSE - conservative"
+;  V280 cse11       [V280,T50] (  3, 11.88)     ref  ->  [rsp+0x50]  spill-single-def "CSE - conservative"
 ;  V281 cse12       [V281,T175] (  3,  1.50)     ref  ->  rcx         "CSE - conservative"
-;  V282 cse13       [V282,T208] (  4,  0.16)    long  ->  [rsp+0x1C0]  spill-single-def "CSE - conservative"
-;  V283 cse14       [V283,T209] (  3,  0.12)     ref  ->  [rsp+0x40]  spill-single-def "CSE - conservative"
-;  V284 cse15       [V284,T210] (  3,  0.12)     ref  ->  [rsp+0x38]  spill-single-def "CSE - conservative"
-;  V285 cse16       [V285,T09] (  7, 27.72)    long  ->  [rsp+0x1B8]  spill-single-def "CSE - aggressive"
-;  TEMP_01                                   byref  ->  [rsp+0x210]
+;  V282 cse13       [V282,T208] (  4,  0.16)    long  ->  [rsp+0x1C8]  spill-single-def "CSE - conservative"
+;  V283 cse14       [V283,T209] (  3,  0.12)     ref  ->  [rsp+0x48]  spill-single-def "CSE - conservative"
...

-19 (-0.28%) : 35053.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

@@ -1552,35 +1552,30 @@ G_M4474_IG51:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
        ; gcr arg pop 0
        mov      gword ptr [rsp+0xB8], rax
        ; GC ptr vars +{V18}
-       mov      rdx, gword ptr [rsp+0xC0]
-       ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rdx+0x08]
-       ; byrRegs +[rcx]
-       mov      bword ptr [rsp+0x120], rcx
-       mov      r8d, dword ptr [rsp+0x118]
-       mov      r10, gword ptr [rsp+0xE0]
-       ; gcrRegs +[r10]
-       cmp      r8d, dword ptr [r10+0x08]
+       mov      edx, dword ptr [rsp+0x118]
+       mov      r8, gword ptr [rsp+0xE0]
+       ; gcrRegs +[r8]
+       cmp      edx, dword ptr [r8+0x08]
        jae      G_M4474_IG104
-       mov      dword ptr [rsp+0x118], r8d
-       mov      r9d, r8d
-       mov      r9, gword ptr [r10+8*r9+0x10]
+       mov      dword ptr [rsp+0x118], edx
+       mov      ecx, edx
+       mov      r9, gword ptr [r8+8*rcx+0x10]
        ; gcrRegs +[r9]
        mov      rcx, r9
        ; gcrRegs +[rcx]
-       ; byrRegs -[rcx]
-       mov      r9, qword ptr [r9]
-       ; gcrRegs -[r9]
-       mov      r9, qword ptr [r9+0x48]
-       call     [r9+0x30]<unknown method>
-       ; gcrRegs -[rcx rdx r10]
+       mov      r10, qword ptr [r9]
+       mov      r10, qword ptr [r10+0x48]
+       call     [r10+0x30]<unknown method>
+       ; gcrRegs -[rcx r8-r9]
        ; gcr arg pop 0
-       mov      rcx, bword ptr [rsp+0x120]
+       mov      r8, gword ptr [rsp+0xC0]
+       ; gcrRegs +[r8]
+       lea      rcx, bword ptr [r8+0x08]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
+       ; gcrRegs -[rax rdx r8]
        ; byrRegs -[rcx]
        mov      rax, gword ptr [rsp+0xC0]
        ; gcrRegs +[rax]
@@ -1591,7 +1586,7 @@ G_M4474_IG51:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
        ; gcr arg pop 0
        test     eax, eax
        je       G_M4474_IG58
-                       ;; size=210 bbWeight=0.04 PerfScore 1.99
+                       ;; size=191 bbWeight=0.04 PerfScore 1.91
 G_M4474_IG52:        ; bbWeight=0.02, gcrefRegs=B068 {rbx rbp rsi r12 r13 r15}, byrefRegs=0000 {}, byref, isz
        call     [<unknown method>]
        ; gcrRegs +[rax]
@@ -2932,7 +2927,7 @@ G_M4474_IG104:        ; bbWeight=0, gcVars=0000000000000000000000000000000000000
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 6733, prolog size 29, PerfScore 1461.83, instruction count 1386, allocated bytes for code 6733 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
+; Total bytes of code 6714, prolog size 29, PerfScore 1461.75, instruction count 1384, allocated bytes for code 6714 (MethodHash=ac86ee85) for method System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
 ; ============================================================
 
 Unwind Info:

+0 (0.00%) : 21449.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -16,7 +16,7 @@
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V06 loc3         [V06,T14] (  4,  5   )     int  ->  rdi        
 ;  V07 loc4         [V07,T15] (  4,  5   )     int  ->  r13        
-;  V08 loc5         [V08,T38] (  3,  1.50)     int  ->  rbx        
+;  V08 loc5         [V08,T36] (  3,  1.50)     int  ->  rbx        
 ;  V09 loc6         [V09,T07] ( 13, 11.50)     ref  ->  [rbp+0x10]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V11 loc8         [V11,T05] (  5, 14   )     int  ->  rax        
@@ -39,7 +39,7 @@
 ;  V28 tmp16        [V28    ] (  3,  3   )  struct ( 8) [rbp+0x28]  do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp17        [V29,T18] (  8,  4   )     int  ->  r14         "Inline return value spill temp"
 ;  V30 tmp18        [V30,T23] (  3,  3   )     int  ->  rdi         "Inlining Arg"
-;  V31 tmp19        [V31,T35] (  2,  2   )    long  ->  rdi         "Inlining Arg"
+;  V31 tmp19        [V31,T33] (  2,  2   )    long  ->  rdi         "Inlining Arg"
 ;  V32 tmp20        [V32,T22] (  3,  3   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp21        [V33    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp22        [V34    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
 ;  V38 tmp26        [V38,T12] (  5,  5   )    long  ->  [rbp+0x20]  spill-single-def "Inlining Arg"
 ;* V39 tmp27        [V39    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V40 tmp28        [V40    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V41 tmp29        [V41,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V41 tmp29        [V41,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V42 tmp30        [V42,T09] (  3,  6   )     int  ->  r11         "Inline stloc first use temp"
 ;  V43 tmp31        [V43,T10] (  3,  6   )     int  ->  rcx         "Inline stloc first use temp"
 ;  V44 tmp32        [V44,T06] (  3, 12   )   byref  ->  rcx         "dup spill"
 ;* V45 tmp33        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V04._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp34        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V04._length (fldOffset=0x8)" P-INDEP
-;  V47 tmp35        [V47,T34] (  4,  2   )   byref  ->  rdi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp35        [V47,T32] (  4,  2   )   byref  ->  rdi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp36        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x8)" P-INDEP
 ;* V49 tmp37        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp38        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x8)" P-INDEP
-;  V51 tmp39        [V51,T40] (  2,  1.50)     int  ->  [rbp+0x30]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
-;  V52 tmp40        [V52,T41] (  2,  1.50)     int  ->  [rbp+0x34]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
+;  V51 tmp39        [V51,T38] (  2,  1.50)     int  ->  [rbp+0x30]  do-not-enreg[] "field V21.Item1 (fldOffset=0x0)" P-DEP
+;  V52 tmp40        [V52,T39] (  2,  1.50)     int  ->  [rbp+0x34]  do-not-enreg[] "field V21.Item2 (fldOffset=0x4)" P-DEP
 ;* V53 tmp41        [V53    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V54 tmp42        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x8)" P-INDEP
-;  V55 tmp43        [V55,T42] (  2,  1.50)     int  ->  [rbp+0x28]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
-;  V56 tmp44        [V56,T43] (  2,  1.50)     int  ->  [rbp+0x2C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V57 tmp45        [V57,T44] (  2,  1   )   byref  ->  r15         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp46        [V58,T45] (  2,  1   )     int  ->  r14         "field V33._length (fldOffset=0x8)" P-INDEP
+;  V55 tmp43        [V55,T40] (  2,  1.50)     int  ->  [rbp+0x28]  do-not-enreg[] "field V28.Item1 (fldOffset=0x0)" P-DEP
+;  V56 tmp44        [V56,T41] (  2,  1.50)     int  ->  [rbp+0x2C]  do-not-enreg[] "field V28.Item2 (fldOffset=0x4)" P-DEP
+;  V57 tmp45        [V57,T42] (  2,  1   )   byref  ->  r15         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp46        [V58,T43] (  2,  1   )     int  ->  r14         "field V33._length (fldOffset=0x8)" P-INDEP
 ;* V59 tmp47        [V59    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V60 tmp48        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x8)" P-INDEP
 ;* V61 tmp49        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -75,25 +75,22 @@
 ;* V64 tmp52        [V64    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x8)" P-INDEP
 ;  V65 tmp53        [V65,T16] (  3,  4.50)   byref  ->  r15         single-def "V05.[000..008)"
 ;  V66 tmp54        [V66,T17] (  3,  4.50)     int  ->  r14         single-def "V05.[008..012)"
-;  V67 tmp55        [V67,T37] (  3,  1.50)   byref  ->  r15         "V16.[000..008)"
-;  V68 tmp56        [V68,T39] (  3,  1.50)     int  ->  r14         "V16.[008..012)"
+;  V67 tmp55        [V67,T35] (  3,  1.50)   byref  ->  r15         "V16.[000..008)"
+;  V68 tmp56        [V68,T37] (  3,  1.50)     int  ->  r14         "V16.[008..012)"
 ;  V69 tmp57        [V69,T03] (  2, 16   )     ref  ->  rdx         "argument with side effect"
 ;  V70 GsCookie     [V70    ] (  1,  1   )    long  ->  [rbp+0x08]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V71 PSPSym       [V71,T47] (  1,  1   )    long  ->  [rbp+0x00]  do-not-enreg[V] "PSPSym"
+;  V71 PSPSym       [V71,T44] (  1,  1   )    long  ->  [rbp+0x00]  do-not-enreg[V] "PSPSym"
 ;  V72 cse0         [V72,T11] (  3,  6   )     int  ->  rcx         "CSE - aggressive"
-;  V73 rat0         [V73,T30] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V73 rat0         [V73,T29] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V74 rat1         [V74,T26] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V75 rat2         [V75,T31] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V75 rat2         [V75,T30] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V76 rat3         [V76,T27] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V77 rat4         [V77,T32] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
+;  V77 rat4         [V77,T31] (  3,  2.20)    long  ->  rdx         "Spilling to split statement for tree"
 ;  V78 rat5         [V78,T28] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V79 rat6         [V79,T33] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V80 rat7         [V80,T46] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V81 rat8         [V81,T29] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V82 rat9         [V82,T02] (  3, 17.60)    long  ->  rdx         "Spilling to split statement for tree"
-;  V83 rat10        [V83,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;  V84 rat11        [V84,T24] (  3,  3   )     int  ->  rdi         "ReplaceWithLclVar is creating a new local variable"
-;  V85 rat12        [V85,T25] (  3,  3   )    long  ->  [rbp+0x18]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V79 rat6         [V79,T02] (  3, 17.60)    long  ->  rdx         "Spilling to split statement for tree"
+;  V80 rat7         [V80,T01] (  3, 22.40)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V81 rat8         [V81,T24] (  3,  3   )     int  ->  rdi         "ReplaceWithLclVar is creating a new local variable"
+;  V82 rat9         [V82,T25] (  3,  3   )    long  ->  [rbp+0x18]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 96
 

+0 (0.00%) : 21290.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [rsp+0x28]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  r12        
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [rsp+0x20]  spill-single-def
-;  V15 loc12        [V15,T66] (  3,  1.50)     int  ->  rbp         single-def
+;  V15 loc12        [V15,T62] (  3,  1.50)     int  ->  rbp         single-def
 ;  V16 OutArgs      [V16    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )    long  ->  r11         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T67] (  3,  1.50)     int  ->  r15        
+;  V19 tmp3         [V19,T63] (  3,  1.50)     int  ->  r15        
 ;* V20 tmp4         [V20    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->  rax         single-def "dup spill"
-;  V27 tmp11        [V27,T61] (  3,  2   )    long  ->  rdx         "spilling helperCall"
-;  V28 tmp12        [V28,T68] (  3,  1.50)     int  ->  r15        
+;  V27 tmp11        [V27,T57] (  3,  2   )    long  ->  rdx         "spilling helperCall"
+;  V28 tmp12        [V28,T64] (  3,  1.50)     int  ->  r15        
 ;* V29 tmp13        [V29    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V39 tmp23        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V40 tmp24        [V40,T80] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T74] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V41 tmp25        [V41    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V42 tmp26        [V42,T81] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T75] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V44 tmp28        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp29        [V45    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -58,9 +58,9 @@
 ;  V47 tmp31        [V47,T34] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V49 tmp33        [V49    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V50 tmp34        [V50,T82] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T76] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V51 tmp35        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V52 tmp36        [V52,T83] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T77] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V54 tmp38        [V54    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V55 tmp39        [V55    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -68,62 +68,56 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->  rcx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V59 tmp43        [V59    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V60 tmp44        [V60,T84] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T78] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V61 tmp45        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V62 tmp46        [V62,T85] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T79] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [rsp+0x30]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [rsp+0x38]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x8)" P-DEP
-;  V65 tmp49        [V65,T71] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T74] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
-;  V67 tmp51        [V67,T72] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T75] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
-;  V69 tmp53        [V69,T73] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T76] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
+;  V65 tmp49        [V65,T67] (  2,  1   )     ref  ->  rcx         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T70] (  2,  1   )     int  ->  rdx         single-def "field V33._length (fldOffset=0x8)" P-INDEP
+;  V67 tmp51        [V67,T68] (  2,  1   )     ref  ->  rcx         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T71] (  2,  1   )     int  ->  rdx         single-def "field V43._length (fldOffset=0x8)" P-INDEP
+;  V69 tmp53        [V69,T69] (  2,  1   )     ref  ->  rcx         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T72] (  2,  1   )     int  ->  rdx         single-def "field V53._length (fldOffset=0x8)" P-INDEP
 ;  V71 tmp55        [V71,T41] (  3,  3   )     int  ->  rax         "index expr"
 ;  V72 tmp56        [V72,T42] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V73 tmp57        [V73,T43] (  3,  3   )     int  ->  rax         "index expr"
 ;  V74 tmp58        [V74,T44] (  3,  3   )     int  ->  rdx         "index expr"
 ;  V75 tmp59        [V75,T12] (  2, 16   )    long  ->  rdx         "argument with side effect"
 ;  V76 tmp60        [V76,T13] (  2, 16   )    long  ->  rdx         "argument with side effect"
-;  V77 tmp61        [V77,T64] (  2,  2   )     int  ->  rdx         "argument with side effect"
+;  V77 tmp61        [V77,T60] (  2,  2   )     int  ->  rdx         "argument with side effect"
 ;  V78 tmp62        [V78,T45] (  3,  3   )     int  ->  rax         "index expr"
 ;  V79 tmp63        [V79,T46] (  3,  3   )     int  ->  rdx         "index expr"
-;  V80 tmp64        [V80,T65] (  2,  2   )    long  ->  rdx         "argument with side effect"
-;  V81 cse0         [V81,T69] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
-;  V82 cse1         [V82,T70] (  3,  1.50)     int  ->  r12         "CSE - conservative"
-;  V83 rat0         [V83,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V84 rat1         [V84,T62] (  3,  2   )    long  ->  rdx         "runtime lookup"
+;  V80 tmp64        [V80,T61] (  2,  2   )    long  ->  rdx         "argument with side effect"
+;  V81 cse0         [V81,T65] (  3,  1.50)     int  ->  rcx         "CSE - conservative"
+;  V82 cse1         [V82,T66] (  3,  1.50)     int  ->  r12         "CSE - conservative"
+;  V83 rat0         [V83,T52] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V84 rat1         [V84,T58] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V85 rat2         [V85,T47] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V86 rat3         [V86,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V87 rat4         [V87,T77] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V88 rat5         [V88,T48] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V89 rat6         [V89,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V90 rat7         [V90,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V91 rat8         [V91,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V92 rat9         [V92,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V93 rat10        [V93,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V94 rat11        [V94,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V95 rat12        [V95,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V96 rat13        [V96,T49] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V97 rat14        [V97,T57] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V98 rat15        [V98,T78] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V99 rat16        [V99,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V100 rat17       [V100,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
-;  V101 rat18       [V101,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
-;  V102 rat19       [V102,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;  V103 rat20       [V103,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
-;  V104 rat21       [V104,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
-;* V105 rat22       [V105,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V106 rat23       [V106,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V107 rat24       [V107,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V108 rat25       [V108,T58] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V86 rat3         [V86,T06] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V87 rat4         [V87,T10] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V88 rat5         [V88,T02] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V89 rat6         [V89,T07] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V90 rat7         [V90,T23] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V91 rat8         [V91,T03] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V92 rat9         [V92,T53] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V93 rat10        [V93,T48] (  3,  2.80)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;  V94 rat11        [V94,T08] (  3, 17.60)    long  ->  rcx         "Spilling to split statement for tree"
+;  V95 rat12        [V95,T11] (  3, 16   )    long  ->  rdx         "runtime lookup"
+;  V96 rat13        [V96,T04] (  3, 22.40)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;  V97 rat14        [V97,T22] (  3,  8.80)    long  ->  rcx         "Spilling to split statement for tree"
+;  V98 rat15        [V98,T19] (  3, 11.20)    long  ->  r11         "fgMakeTemp is creating a new local variable"
+;* V99 rat16        [V99,T09] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V100 rat17       [V100,T24] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V101 rat18       [V101,T05] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V102 rat19       [V102,T54] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V103 rat20       [V103,T49] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
+;* V104 rat21       [V104,T55] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
+;* V105 rat22       [V105,T73] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
+;* V106 rat23       [V106,T50] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V107 rat24       [V107,T56] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
+;  V108 rat25       [V108,T59] (  3,  2   )    long  ->  rdx         "runtime lookup"
 ;  V109 rat26       [V109,T51] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
-;* V110 rat27       [V110,T59] (  0,  0   )    long  ->  zero-ref    "Spilling to split statement for tree"
-;* V111 rat28       [V111,T79] (  0,  0   )    long  ->  zero-ref    "runtime lookup"
-;* V112 rat29       [V112,T52] (  0,  0   )    long  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V113 rat30       [V113,T60] (  3,  2.20)    long  ->  rcx         "Spilling to split statement for tree"
-;  V114 rat31       [V114,T63] (  3,  2   )    long  ->  rdx         "runtime lookup"
-;  V115 rat32       [V115,T53] (  3,  2.80)    long  ->  rdx         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 72
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 6 6 0 0 -94 +0
benchmarks.run.windows.x64.checked.mch 1 0 0 1 -0 +0
benchmarks.run_pgo.windows.x64.checked.mch 1 1 0 0 -16 +0
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 -0 +0
coreclr_tests.run.windows.x64.checked.mch 2 1 0 1 -21 +0
libraries.crossgen2.windows.x64.checked.mch 11 11 0 0 -191 +0
libraries.pmi.windows.x64.checked.mch 22 10 0 12 -143 +0
libraries_tests.run.windows.x64.Release.mch 39 30 4 5 -1,546 +19
librariestestsnotieredcompilation.run.windows.x64.Release.mch 8 4 0 4 -134 +0
realworld.run.windows.x64.checked.mch 4 2 0 2 -51 +0
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
94 65 4 25 -2,196 +19

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 113,446 48,462 64,984 968 (0.85%) 968 (0.85%)
benchmarks.run.windows.x64.checked.mch 28,178 4 28,174 0 (0.00%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 101,027 50,170 50,857 126 (0.12%) 126 (0.12%)
benchmarks.run_tiered.windows.x64.checked.mch 54,255 36,844 17,411 0 (0.00%) 0 (0.00%)
coreclr_tests.run.windows.x64.checked.mch 574,111 341,113 232,998 301 (0.05%) 301 (0.05%)
libraries.crossgen2.windows.x64.checked.mch 243,023 15 243,008 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 307,639 6 307,633 2 (0.00%) 2 (0.00%)
libraries_tests.run.windows.x64.Release.mch 682,158 485,176 196,982 2,459 (0.36%) 2,459 (0.36%)
librariestestsnotieredcompilation.run.windows.x64.Release.mch 319,780 21,886 297,894 6 (0.00%) 6 (0.00%)
realworld.run.windows.x64.checked.mch 36,888 3 36,885 0 (0.00%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 32,444 10 32,434 0 (0.00%) 0 (0.00%)
2,492,949 983,689 1,509,260 3,862 (0.15%) 3,862 (0.15%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 41788751 (overridden on cmd)
Total bytes of diff: 41788657 (overridden on cmd)
Total bytes of delta: -94 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -31 : 45958.dasm (-0.18 % of base)
         -14 : 5346.dasm (-0.84 % of base)
         -14 : 91547.dasm (-0.32 % of base)
         -14 : 9404.dasm (-0.84 % of base)
         -14 : 100842.dasm (-0.32 % of base)
          -7 : 17006.dasm (-1.03 % of base)

6 total files with Code Size differences (6 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -31 (-0.18 % of base) : 45958.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (FullOpts)
         -14 (-0.32 % of base) : 91547.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
         -14 (-0.32 % of base) : 100842.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
         -14 (-0.84 % of base) : 5346.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
         -14 (-0.84 % of base) : 9404.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
          -7 (-1.03 % of base) : 17006.dasm - Microsoft.Extensions.Internal.PropertyHelper:<GetProperties>g__AddInterestingProperties|39_0(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)

Top method improvements (percentages):
          -7 (-1.03 % of base) : 17006.dasm - Microsoft.Extensions.Internal.PropertyHelper:<GetProperties>g__AddInterestingProperties|39_0(System.Collections.Generic.List`1[Microsoft.Extensions.Internal.PropertyHelper],System.Type) (Tier1-OSR)
         -14 (-0.84 % of base) : 5346.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
         -14 (-0.84 % of base) : 9404.dasm - Microsoft.Extensions.Configuration.ChainedConfigurationProvider:GetChildKeys(System.Collections.Generic.IEnumerable`1[System.String],System.String):System.Collections.Generic.IEnumerable`1[System.String]:this (Tier1-OSR)
         -14 (-0.32 % of base) : 91547.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
         -14 (-0.32 % of base) : 100842.dasm - Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory:AddActionDataToBuilder(Microsoft.AspNetCore.Builder.EndpointBuilder,System.Collections.Generic.HashSet`1[System.String],Microsoft.AspNetCore.Mvc.Abstractions.ActionDescriptor,System.String,Microsoft.AspNetCore.Routing.RouteValueDictionary,ubyte,ubyte,System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]],System.Collections.Generic.IReadOnlyList`1[System.Action`1[Microsoft.AspNetCore.Builder.EndpointBuilder]]) (Tier1-OSR)
         -31 (-0.18 % of base) : 45958.dasm - Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression:.ctor(Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.Query.ISqlExpressionFactory):this (FullOpts)

6 total methods with Code Size differences (6 improved, 0 regressed).


benchmarks.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 8749669 (overridden on cmd)
Total bytes of diff: 8749669 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)

Detail diffs



0 total files with Code Size differences (0 improved, 0 regressed), 1 unchanged.

0 total methods with Code Size differences (0 improved, 0 regressed).


benchmarks.run_pgo.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34741684 (overridden on cmd)
Total bytes of diff: 34741668 (overridden on cmd)
Total bytes of delta: -16 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -16 : 68276.dasm (-1.65 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -16 (-1.65 % of base) : 68276.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)

Top method improvements (percentages):
         -16 (-1.65 % of base) : 68276.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)

1 total methods with Code Size differences (1 improved, 0 regressed).


coreclr_tests.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 392888034 (overridden on cmd)
Total bytes of diff: 392888013 (overridden on cmd)
Total bytes of delta: -21 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -21 : 558210.dasm (-2.63 % of base)

1 total files with Code Size differences (1 improved, 0 regressed), 1 unchanged.

Top method improvements (bytes):
         -21 (-2.63 % of base) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

Top method improvements (percentages):
         -21 (-2.63 % of base) : 558210.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)

1 total methods with Code Size differences (1 improved, 0 regressed).


libraries.crossgen2.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 39442225 (overridden on cmd)
Total bytes of diff: 39442034 (overridden on cmd)
Total bytes of delta: -191 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -45 : 13609.dasm (-0.94 % of base)
         -25 : 97212.dasm (-2.23 % of base)
         -23 : 116813.dasm (-1.13 % of base)
         -23 : 134353.dasm (-1.53 % of base)
         -19 : 14105.dasm (-5.62 % of base)
         -17 : 132263.dasm (-1.28 % of base)
          -8 : 171568.dasm (-0.49 % of base)
          -8 : 196186.dasm (-0.39 % of base)
          -8 : 171569.dasm (-0.39 % of base)
          -8 : 196185.dasm (-0.50 % of base)
          -7 : 117086.dasm (-0.20 % of base)

11 total files with Code Size differences (11 improved, 0 regressed), 0 unchanged.

Top method improvements (bytes):
         -45 (-0.94 % of base) : 13609.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -25 (-2.23 % of base) : 97212.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -23 (-1.13 % of base) : 116813.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -23 (-1.53 % of base) : 134353.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -19 (-5.62 % of base) : 14105.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -17 (-1.28 % of base) : 132263.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
          -8 (-0.49 % of base) : 171568.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.50 % of base) : 196185.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.39 % of base) : 196186.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.39 % of base) : 171569.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -7 (-0.20 % of base) : 117086.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

Top method improvements (percentages):
         -19 (-5.62 % of base) : 14105.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -25 (-2.23 % of base) : 97212.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -23 (-1.53 % of base) : 134353.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -17 (-1.28 % of base) : 132263.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
         -23 (-1.13 % of base) : 116813.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -45 (-0.94 % of base) : 13609.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -8 (-0.50 % of base) : 196185.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.49 % of base) : 171568.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.39 % of base) : 196186.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.39 % of base) : 171569.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -7 (-0.20 % of base) : 117086.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

11 total methods with Code Size differences (11 improved, 0 regressed).


libraries.pmi.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 61196803 (overridden on cmd)
Total bytes of diff: 61196660 (overridden on cmd)
Total bytes of delta: -143 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -46 : 124257.dasm (-1.14 % of base)
         -23 : 144270.dasm (-1.28 % of base)
         -21 : 101993.dasm (-1.48 % of base)
          -8 : 187310.dasm (-0.39 % of base)
          -8 : 237004.dasm (-0.48 % of base)
          -8 : 237005.dasm (-0.39 % of base)
          -8 : 187309.dasm (-0.47 % of base)
          -7 : 124536.dasm (-0.16 % of base)
          -7 : 108530.dasm (-0.16 % of base)
          -7 : 108533.dasm (-0.13 % of base)

10 total files with Code Size differences (10 improved, 0 regressed), 12 unchanged.

Top method improvements (bytes):
         -46 (-1.14 % of base) : 124257.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -23 (-1.28 % of base) : 144270.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -21 (-1.48 % of base) : 101993.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
          -8 (-0.48 % of base) : 237004.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.47 % of base) : 187309.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.39 % of base) : 187310.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.39 % of base) : 237005.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -7 (-0.13 % of base) : 108533.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)
          -7 (-0.16 % of base) : 108530.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -7 (-0.16 % of base) : 124536.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)

Top method improvements (percentages):
         -21 (-1.48 % of base) : 101993.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:CreateTypeParameterSymbolsAndConstructSymbols(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]) (FullOpts)
         -23 (-1.28 % of base) : 144270.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -46 (-1.14 % of base) : 124257.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
          -8 (-0.48 % of base) : 237004.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.47 % of base) : 187309.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.39 % of base) : 237005.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.39 % of base) : 187310.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -7 (-0.16 % of base) : 124536.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
          -7 (-0.16 % of base) : 108530.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -7 (-0.13 % of base) : 108533.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitAllElementInitializersRecursive(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator+IndexDesc],ubyte):this (FullOpts)

10 total methods with Code Size differences (10 improved, 0 regressed).


libraries_tests.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 279865544 (overridden on cmd)
Total bytes of diff: 279864017 (overridden on cmd)
Total bytes of delta: -1527 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          10 : 73477.dasm (0.09 % of base)
           5 : 14755.dasm (0.05 % of base)
           2 : 110081.dasm (0.27 % of base)
           2 : 52945.dasm (0.12 % of base)

Top file improvements (bytes):
        -136 : 341659.dasm (-5.03 % of base)
        -134 : 407427.dasm (-4.96 % of base)
        -130 : 207408.dasm (-4.80 % of base)
        -130 : 669332.dasm (-4.80 % of base)
        -130 : 674831.dasm (-4.83 % of base)
        -126 : 218609.dasm (-4.75 % of base)
        -126 : 119097.dasm (-4.76 % of base)
        -126 : 352146.dasm (-4.75 % of base)
        -123 : 235309.dasm (-4.62 % of base)
        -117 : 299396.dasm (-4.40 % of base)
         -34 : 128409.dasm (-4.38 % of base)
         -34 : 320678.dasm (-0.33 % of base)
         -25 : 415447.dasm (-0.78 % of base)
         -23 : 126805.dasm (-0.19 % of base)
         -22 : 391535.dasm (-0.18 % of base)
         -20 : 166806.dasm (-1.15 % of base)
         -20 : 36195.dasm (-0.20 % of base)
         -20 : 618534.dasm (-1.15 % of base)
         -13 : 184016.dasm (-0.50 % of base)
         -13 : 522897.dasm (-0.49 % of base)

34 total files with Code Size differences (30 improved, 4 regressed), 5 unchanged.

Top method regressions (bytes):
          10 (0.09 % of base) : 73477.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
           5 (0.05 % of base) : 14755.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
           2 (0.12 % of base) : 52945.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
           2 (0.27 % of base) : 110081.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)

Top method improvements (bytes):
        -136 (-5.03 % of base) : 341659.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -134 (-4.96 % of base) : 407427.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -130 (-4.80 % of base) : 207408.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -130 (-4.80 % of base) : 669332.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -130 (-4.83 % of base) : 674831.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -126 (-4.75 % of base) : 218609.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -126 (-4.76 % of base) : 119097.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -126 (-4.75 % of base) : 352146.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -123 (-4.62 % of base) : 235309.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -117 (-4.40 % of base) : 299396.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -34 (-4.38 % of base) : 128409.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier1)
         -34 (-0.33 % of base) : 320678.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1-OSR)
         -25 (-0.78 % of base) : 415447.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
         -23 (-0.19 % of base) : 126805.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
         -22 (-0.18 % of base) : 391535.dasm - Xunit.Sdk.XunitTheoryTestCaseRunner+<AfterTestCaseStartingAsync>d__9:MoveNext():this (Tier1)
         -20 (-1.15 % of base) : 166806.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -20 (-1.15 % of base) : 618534.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -20 (-0.20 % of base) : 36195.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
         -13 (-0.50 % of base) : 184016.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -13 (-0.49 % of base) : 522897.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

Top method regressions (percentages):
           2 (0.27 % of base) : 110081.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:RecordStepInfoForLastEntry(System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):this (Tier1)
           2 (0.12 % of base) : 52945.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
          10 (0.09 % of base) : 73477.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)
           5 (0.05 % of base) : 14755.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier1-OSR)

Top method improvements (percentages):
        -136 (-5.03 % of base) : 341659.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -134 (-4.96 % of base) : 407427.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -130 (-4.83 % of base) : 674831.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -130 (-4.80 % of base) : 669332.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -130 (-4.80 % of base) : 207408.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -126 (-4.76 % of base) : 119097.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -126 (-4.75 % of base) : 218609.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -126 (-4.75 % of base) : 352146.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -123 (-4.62 % of base) : 235309.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -117 (-4.40 % of base) : 299396.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -34 (-4.38 % of base) : 128409.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier1)
         -20 (-1.15 % of base) : 166806.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -20 (-1.15 % of base) : 618534.dasm - Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.__Canon]:TryInsert(System.__Canon,System.__Canon,ubyte):ubyte:this (Tier1)
         -25 (-0.78 % of base) : 415447.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier1)
          -5 (-0.66 % of base) : 311023.dasm - System.Linq.Enumerable+UnionIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          -7 (-0.58 % of base) : 56277.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
          -7 (-0.57 % of base) : 87733.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)
         -13 (-0.50 % of base) : 184016.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -13 (-0.49 % of base) : 522897.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
          -6 (-0.44 % of base) : 651851.dasm - Roslyn.Utilities.AsyncLazy`1[System.__Canon]:CompleteWithTask(System.Threading.Tasks.Task`1[System.__Canon],System.Threading.CancellationToken):this (Tier1)

34 total methods with Code Size differences (30 improved, 4 regressed).


librariestestsnotieredcompilation.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 133434685 (overridden on cmd)
Total bytes of diff: 133434551 (overridden on cmd)
Total bytes of delta: -134 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -80 : 315097.dasm (-2.85 % of base)
         -23 : 99796.dasm (-5.61 % of base)
         -23 : 63142.dasm (-1.28 % of base)
          -8 : 186797.dasm (-0.48 % of base)

4 total files with Code Size differences (4 improved, 0 regressed), 4 unchanged.

Top method improvements (bytes):
         -80 (-2.85 % of base) : 315097.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -23 (-5.61 % of base) : 99796.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -23 (-1.28 % of base) : 63142.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-0.48 % of base) : 186797.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

Top method improvements (percentages):
         -23 (-5.61 % of base) : 99796.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -80 (-2.85 % of base) : 315097.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -23 (-1.28 % of base) : 63142.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-0.48 % of base) : 186797.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

4 total methods with Code Size differences (4 improved, 0 regressed).


realworld.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 14170666 (overridden on cmd)
Total bytes of diff: 14170615 (overridden on cmd)
Total bytes of delta: -51 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -32 : 16193.dasm (-0.41 % of base)
         -19 : 35053.dasm (-0.28 % of base)

2 total files with Code Size differences (2 improved, 0 regressed), 2 unchanged.

Top method improvements (bytes):
         -32 (-0.41 % of base) : 16193.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         -19 (-0.28 % of base) : 35053.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

Top method improvements (percentages):
         -32 (-0.41 % of base) : 16193.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         -19 (-0.28 % of base) : 35053.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)

2 total methods with Code Size differences (2 improved, 0 regressed).