Assembly Diffs

linux arm

Diffs are based on 2,237,703 contexts (827,812 MinOpts, 1,409,891 FullOpts).

MISSED contexts: 74,543 (3.22%)

Overall (-328 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,304,700 -4
benchmarks.run_pgo.linux.arm.checked.mch 60,239,142 -4
benchmarks.run_tiered.linux.arm.checked.mch 22,645,116 -4
coreclr_tests.run.linux.arm.checked.mch 321,624,414 -24
libraries.crossgen2.linux.arm.checked.mch 35,174,564 -104
libraries.pmi.linux.arm.checked.mch 49,554,232 -98
libraries_tests.run.linux.arm.Release.mch 241,872,272 -40
librariestestsnotieredcompilation.run.linux.arm.Release.mch 93,042,524 -50
realworld.run.linux.arm.checked.mch 13,613,090 +0

FullOpts (-328 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,915,444 -4
benchmarks.run_pgo.linux.arm.checked.mch 49,441,540 -4
benchmarks.run_tiered.linux.arm.checked.mch 13,537,960 -4
coreclr_tests.run.linux.arm.checked.mch 108,894,280 -24
libraries.crossgen2.linux.arm.checked.mch 35,173,334 -104
libraries.pmi.linux.arm.checked.mch 49,447,728 -98
libraries_tests.run.linux.arm.Release.mch 119,869,328 -40
librariestestsnotieredcompilation.run.linux.arm.Release.mch 82,958,704 -50
realworld.run.linux.arm.checked.mch 13,163,144 +0

Example diffs

benchmarks.run.linux.arm.checked.mch

-4 (-0.18%) : 14561.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person

@@ -54,8 +54,8 @@
 ;* V43 tmp38        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V44 tmp39        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V45 tmp40        [V45    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op double-align "NewObj constructor temp" <System.DateTime>
-;  V46 tmp41        [V46,T96] (  2,  0   )     ref  ->   r9         class-hnd "Inline stloc first use temp" <System.String>
-;  V47 tmp42        [V47,T95] (  3,  0   )     ref  ->   r4         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V46 tmp41        [V46,T98] (  2,  0   )     ref  ->   r9         class-hnd "Inline stloc first use temp" <System.String>
+;  V47 tmp42        [V47,T97] (  3,  0   )     ref  ->   r4         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V48 tmp43        [V48    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V49 tmp44        [V49,T31] (  9, 16   )     int  ->   r9         "Inline stloc first use temp"
 ;  V50 tmp45        [V50,T32] (  9, 16   )     int  ->  r10         "Inline stloc first use temp"
@@ -72,7 +72,7 @@
 ;* V61 tmp56        [V61,T69] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x4)" P-INDEP
 ;* V62 tmp57        [V62    ] (  0,  0   )   byref  ->  zero-ref    "field V32._reference (fldOffset=0x0)" P-INDEP
 ;* V63 tmp58        [V63    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x4)" P-INDEP
-;* V64 tmp59        [V64,T59] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
+;* V64 tmp59        [V64,T57] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
 ;* V65 tmp60        [V65,T70] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x4)" P-INDEP
 ;* V66 tmp61        [V66    ] (  0,  0   )   byref  ->  zero-ref    "field V36._reference (fldOffset=0x0)" P-INDEP
 ;* V67 tmp62        [V67    ] (  0,  0   )     int  ->  zero-ref    "field V36._length (fldOffset=0x4)" P-INDEP
@@ -89,63 +89,66 @@
 ;  V78 tmp73        [V78,T10] (  6, 24   )     ref  ->   r0         "argument with side effect"
 ;  V79 tmp74        [V79,T11] (  6, 24   )     ref  ->   r0         "argument with side effect"
 ;  V80 tmp75        [V80,T12] (  6, 24   )     ref  ->   r0         "argument with side effect"
-;  V81 tmp76        [V81,T97] (  2,  0   )     ref  ->   r1         "argument with side effect"
-;  V82 tmp77        [V82,T98] (  2,  0   )     ref  ->   r1         "argument with side effect"
-;  V83 tmp78        [V83,T99] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V81 tmp76        [V81,T99] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V82 tmp77        [V82,T100] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V83 tmp78        [V83,T101] (  2,  0   )     ref  ->   r1         "argument with side effect"
 ;  V84 tmp79        [V84,T13] (  6, 24   )     ref  ->   r0         "argument with side effect"
-;  V85 tmp80        [V85,T100] (  2,  0   )     ref  ->   r2         "argument with side effect"
+;  V85 tmp80        [V85,T102] (  2,  0   )     ref  ->   r2         "argument with side effect"
 ;* V86 cse0         [V86    ] (  0,  0   )    long  ->  zero-ref    "CSE - moderate"
-;  V87 cse1         [V87,T47] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V88 cse2         [V88,T48] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V89 cse3         [V89,T49] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V90 cse4         [V90,T88] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;  V91 cse5         [V91,T89] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;  V92 cse6         [V92,T90] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;* V93 cse7         [V93,T74] (  0,  0   )     int  ->  zero-ref    hoist multi-def "CSE - moderate"
-;  V94 rat0         [V94,T57] (  5,  8.04)     int  ->   r3         "field V44.lo (fldOffset=0x0)" P-INDEP
-;  V95 rat1         [V95,T58] (  5,  8.04)     int  ->   lr         "field V44.hi (fldOffset=0x4)" P-INDEP
-;  V96 rat2         [V96,T45] (  4, 12   )     int  ->   r0         "field V77.lo (fldOffset=0x0)" P-INDEP
-;  V97 rat3         [V97,T46] (  4, 12   )     int  ->   r1         "field V77.hi (fldOffset=0x4)" P-INDEP
-;  V98 rat4         [V98,T50] (  3, 11.88)     int  ->   r0         "field V86.lo (fldOffset=0x0)" P-INDEP
-;  V99 rat5         [V99,T51] (  3, 11.88)     int  ->   r1         "field V86.hi (fldOffset=0x4)" P-INDEP
-;  V100 rat6        [V100,T19] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
-;  V101 rat7        [V101,T20] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V102 rat8        [V102,T21] (  3, 23.76)     int  ->   r9         "ReplaceWithLclVar is creating a new local variable"
-;  V103 rat9        [V103,T22] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V104 rat10       [V104,T23] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
-;  V105 rat11       [V105,T24] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V106 rat12       [V106,T25] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V107 rat13       [V107    ] (  1,  7.92)    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V108 rat14       [V108,T52] (  2, 11.88)     int  ->   r0         "field V107.lo (fldOffset=0x0)" P-INDEP
-;  V109 rat15       [V109,T53] (  2, 11.88)     int  ->   r1         "field V107.hi (fldOffset=0x4)" P-INDEP
-;  V110 rat16       [V110    ] (  1,  7.92)    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V111 rat17       [V111,T54] (  2, 11.88)     int  ->   r0         "field V110.lo (fldOffset=0x0)" P-INDEP
-;  V112 rat18       [V112,T55] (  2, 11.88)     int  ->   r1         "field V110.hi (fldOffset=0x4)" P-INDEP
-;  V113 rat19       [V113,T17] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V114 rat20       [V114,T26] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V115 rat21       [V115,T27] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat22       [V116,T28] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat23       [V117,T18] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V118 rat24       [V118,T29] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V119 rat25       [V119,T77] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat26       [V120,T78] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V121 rat27       [V121,T79] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V122 rat28       [V122,T80] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat29       [V123,T81] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat30       [V124,T82] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V125 rat31       [V125,T83] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat32       [V126    ] (  1,  0.08)    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat33       [V127,T91] (  2,  0.12)     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat34       [V128,T92] (  2,  0.12)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat35       [V129    ] (  1,  0.08)    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat36       [V130,T93] (  2,  0.12)     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat37       [V131,T94] (  2,  0.12)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat38       [V132,T75] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat39       [V133,T84] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat40       [V134,T85] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V135 rat41       [V135,T86] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V136 rat42       [V136,T76] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat43       [V137,T87] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;* V87 cse1         [V87    ] (  0,  0   )    long  ->  zero-ref    "CSE - conservative"
+;  V88 cse2         [V88,T47] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V89 cse3         [V89,T48] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V90 cse4         [V90,T49] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V91 cse5         [V91,T88] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;  V92 cse6         [V92,T89] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;  V93 cse7         [V93,T90] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;* V94 cse8         [V94,T74] (  0,  0   )     int  ->  zero-ref    hoist multi-def "CSE - moderate"
+;  V95 rat0         [V95,T58] (  4,  8   )     int  ->   r3         "field V44.lo (fldOffset=0x0)" P-INDEP
+;  V96 rat1         [V96,T59] (  4,  8   )     int  ->   lr         "field V44.hi (fldOffset=0x4)" P-INDEP
+;  V97 rat2         [V97,T45] (  4, 12   )     int  ->   r0         "field V77.lo (fldOffset=0x0)" P-INDEP
+;  V98 rat3         [V98,T46] (  4, 12   )     int  ->   r1         "field V77.hi (fldOffset=0x4)" P-INDEP
+;  V99 rat4         [V99,T50] (  3, 11.88)     int  ->   r0         "field V86.lo (fldOffset=0x0)" P-INDEP
+;  V100 rat5        [V100,T51] (  3, 11.88)     int  ->   r1         "field V86.hi (fldOffset=0x4)" P-INDEP
+;  V101 rat6        [V101,T91] (  3,  0.12)     int  ->   r0         "field V87.lo (fldOffset=0x0)" P-INDEP
+;  V102 rat7        [V102,T92] (  3,  0.12)     int  ->   r1         "field V87.hi (fldOffset=0x4)" P-INDEP
+;  V103 rat8        [V103,T19] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
+;  V104 rat9        [V104,T20] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V105 rat10       [V105,T21] (  3, 23.76)     int  ->   r9         "ReplaceWithLclVar is creating a new local variable"
+;  V106 rat11       [V106,T22] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V107 rat12       [V107,T23] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
+;  V108 rat13       [V108,T24] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V109 rat14       [V109,T25] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat15       [V110    ] (  1,  7.92)    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat16       [V111,T52] (  2, 11.88)     int  ->   r0         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat17       [V112,T53] (  2, 11.88)     int  ->   r1         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat18       [V113    ] (  1,  7.92)    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat19       [V114,T54] (  2, 11.88)     int  ->   r0         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat20       [V115,T55] (  2, 11.88)     int  ->   r1         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat21       [V116,T17] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat22       [V117,T26] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat23       [V118,T27] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V119 rat24       [V119,T28] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat25       [V120,T18] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat26       [V121,T29] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V122 rat27       [V122,T77] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V123 rat28       [V123,T78] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat29       [V124,T79] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat30       [V125,T80] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V126 rat31       [V126,T81] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat32       [V127,T82] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat33       [V128,T83] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V129 rat34       [V129    ] (  1,  0.08)    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V130 rat35       [V130,T93] (  2,  0.12)     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
+;  V131 rat36       [V131,T94] (  2,  0.12)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
+;  V132 rat37       [V132    ] (  1,  0.08)    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V133 rat38       [V133,T95] (  2,  0.12)     int  ->   r0         "field V132.lo (fldOffset=0x0)" P-INDEP
+;  V134 rat39       [V134,T96] (  2,  0.12)     int  ->   r1         "field V132.hi (fldOffset=0x4)" P-INDEP
+;  V135 rat40       [V135,T75] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V136 rat41       [V136,T84] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V137 rat42       [V137,T85] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat43       [V138,T86] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V139 rat44       [V139,T76] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V140 rat45       [V140,T87] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 84
 
@@ -820,17 +823,17 @@ G_M14965_IG11:        ; bbWeight=0.04, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBL2LNG
-            adds    r3, r9, r0
-            adc     lr, r10, r1
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            cmp     r3, r0
-            sbcs    r0, lr, r1
+            adds    r0, r9, r0
+            adc     r1, r10, r1
+            mov     r3, r0
+            mov     lr, r1
+            movw    r2, 0xd1ff
+            movt    r2, 0xd1ff
+            movw    r12, 0xd1ff
+            movt    r12, 0xd1ff
+            cmp     r3, r2
+            sbcs    r2, lr, r12
             bhs     G_M14965_IG21
-            orr     r0, r3, 0
-            orr     r1, lr, 0
             str     r0, [sp+0x38]  // [V68 tmp63]
             str     r1, [sp+0x3C]  // [V68 tmp63+0x04]
             add     r0, r8, 24
@@ -864,7 +867,7 @@ G_M14965_IG11:        ; bbWeight=0.04, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             blx     lr     // <unknown method>
             ldr     r0, [r5+0x04]
             ; gcrRegs +[r0]
-                       ;; size=622 bbWeight=0.04 PerfScore 8.44
+                       ;; size=618 bbWeight=0.04 PerfScore 8.44
 G_M14965_IG12:        ; bbWeight=0.04, isz, extend
             movs    r1, 0
             mov     r2, 256
@@ -1128,7 +1131,7 @@ G_M14965_IG24:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bkpt    
                        ;; size=40 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2284, prolog size 14, PerfScore 1300.98, instruction count 782, allocated bytes for code 2284 (MethodHash=528ec58a) for method System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (FullOpts)
+; Total bytes of code 2280, prolog size 14, PerfScore 1300.98, instruction count 782, allocated bytes for code 2280 (MethodHash=528ec58a) for method System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1140,7 +1143,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 1142 (0x00476) Actual length = 2284 (0x0008ec)
+  Function Length   : 1140 (0x00474) Actual length = 2280 (0x0008e8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+0 (0.00%) : 24641.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  ->  [sp+0x04]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [sp+0x48] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [sp+0x00]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->   r9         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->   r9         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T70] (  3,  1.50)     int  ->  r10        
+;  V19 tmp3         [V19,T66] (  3,  1.50)     int  ->  r10        
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   r0         single-def "dup spill"
-;  V27 tmp11        [V27,T64] (  3,  2   )     int  ->   r1         "spilling helperCall"
-;  V28 tmp12        [V28,T71] (  3,  1.50)     int  ->  r10        
+;  V27 tmp11        [V27,T60] (  3,  2   )     int  ->   r1         "spilling helperCall"
+;  V28 tmp12        [V28,T67] (  3,  1.50)     int  ->  r10        
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   r0         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,T101] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T95] (  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,T102] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct ( 8) 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  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   r0         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,T103] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T97] (  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,T104] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct ( 8) 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,17 +68,17 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   r0         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,T105] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T99] (  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,T106] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V65 tmp49        [V65,T80] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T83] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
-;  V67 tmp51        [V67,T81] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T84] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
-;  V69 tmp53        [V69,T82] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T85] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
+;  V65 tmp49        [V65,T76] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T79] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
+;  V67 tmp51        [V67,T77] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T80] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
+;  V69 tmp53        [V69,T78] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T81] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V71 tmp55        [V71    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->   r0         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->   r1         "index expr"
@@ -87,73 +87,67 @@
 ;  V76 tmp60        [V76,T47] (  3,  3   )     int  ->   r1         "index expr"
 ;  V77 tmp61        [V77,T12] (  2, 16   )     int  ->   r1         "argument with side effect"
 ;  V78 tmp62        [V78,T13] (  2, 16   )     int  ->   r1         "argument with side effect"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->   r1         "argument with side effect"
 ;* V80 tmp64        [V80    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V81 tmp65        [V81,T48] (  3,  3   )     int  ->   r0         "index expr"
 ;  V82 tmp66        [V82,T49] (  3,  3   )     int  ->   r1         "index expr"
-;  V83 tmp67        [V83,T68] (  2,  2   )     int  ->   r1         "argument with side effect"
-;  V84 cse0         [V84,T72] (  3,  1.50)     int  ->   r0         "CSE - conservative"
-;  V85 cse1         [V85,T73] (  3,  1.50)     int  ->   r8         "CSE - conservative"
-;  V86 rat0         [V86,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V87 rat1         [V87,T65] (  3,  2   )     int  ->   r1         "runtime lookup"
+;  V83 tmp67        [V83,T64] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V84 cse0         [V84,T68] (  3,  1.50)     int  ->   r0         "CSE - conservative"
+;  V85 cse1         [V85,T69] (  3,  1.50)     int  ->   r8         "CSE - conservative"
+;  V86 rat0         [V86,T55] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V87 rat1         [V87,T61] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V88 rat2         [V88,T50] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V89 rat3         [V89,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V90 rat4         [V90,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V91 rat5         [V91,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V92 rat6         [V92,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V93 rat7         [V93,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V94 rat8         [V94,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V95 rat9         [V95,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V96 rat10        [V96,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V97 rat11        [V97,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V98 rat12        [V98,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V99 rat13        [V99,T52] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;* V100 rat14       [V100,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V101 rat15       [V101,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V102 rat16       [V102,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V103 rat17       [V103,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V104 rat18       [V104,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V105 rat19       [V105,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V106 rat20       [V106,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V107 rat21       [V107,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V108 rat22       [V108,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V109 rat23       [V109,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V110 rat24       [V110,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V111 rat25       [V111,T61] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V89 rat3         [V89,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V90 rat4         [V90,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V91 rat5         [V91,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V92 rat6         [V92,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V93 rat7         [V93,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V94 rat8         [V94,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V95 rat9         [V95,T56] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V96 rat10        [V96,T51] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V97 rat11        [V97,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V98 rat12        [V98,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V99 rat13        [V99,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V100 rat14       [V100,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V101 rat15       [V101,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V102 rat16       [V102,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V103 rat17       [V103,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V104 rat18       [V104,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V105 rat19       [V105,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V106 rat20       [V106,T52] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V107 rat21       [V107,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V108 rat22       [V108,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V109 rat23       [V109,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V110 rat24       [V110,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V111 rat25       [V111,T62] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V112 rat26       [V112,T54] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V113 rat27       [V113,T62] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V114 rat28       [V114,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V115 rat29       [V115,T55] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat30       [V116,T63] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V117 rat31       [V117,T66] (  3,  2   )     int  ->   r1         "runtime lookup"
-;  V118 rat32       [V118,T56] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V119 rat33       [V119,T89] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
-;  V120 rat34       [V120,T90] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
-;  V121 rat35       [V121,T91] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
-;  V122 rat36       [V122,T92] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
-;  V123 rat37       [V123,T93] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
-;  V124 rat38       [V124,T94] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
-;  V125 rat39       [V125,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat40       [V126    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat41       [V127,T95] (  1,  1   )     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat42       [V128,T74] (  2,  1.50)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat43       [V129    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat44       [V130,T96] (  1,  1   )     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat45       [V131,T75] (  2,  1.50)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat46       [V132,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat47       [V133    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat48       [V134,T97] (  1,  1   )     int  ->   r0         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat49       [V135,T76] (  2,  1.50)     int  ->   r1         "field V133.hi (fldOffset=0x4)" P-INDEP
-;  V136 rat50       [V136    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat51       [V137,T98] (  1,  1   )     int  ->   r0         "field V136.lo (fldOffset=0x0)" P-INDEP
-;  V138 rat52       [V138,T77] (  2,  1.50)     int  ->   r1         "field V136.hi (fldOffset=0x4)" P-INDEP
-;  V139 rat53       [V139,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V140 rat54       [V140    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V141 rat55       [V141,T99] (  1,  1   )     int  ->   r0         "field V140.lo (fldOffset=0x0)" P-INDEP
-;  V142 rat56       [V142,T78] (  2,  1.50)     int  ->   r1         "field V140.hi (fldOffset=0x4)" P-INDEP
-;  V143 rat57       [V143    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V144 rat58       [V144,T100] (  1,  1   )     int  ->   r0         "field V143.lo (fldOffset=0x0)" P-INDEP
-;  V145 rat59       [V145,T79] (  2,  1.50)     int  ->   r1         "field V143.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat27       [V113,T83] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
+;  V114 rat28       [V114,T84] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
+;  V115 rat29       [V115,T85] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
+;  V116 rat30       [V116,T86] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
+;  V117 rat31       [V117,T87] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
+;  V118 rat32       [V118,T88] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
+;  V119 rat33       [V119,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat34       [V120    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat35       [V121,T89] (  1,  1   )     int  ->   r0         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat36       [V122,T70] (  2,  1.50)     int  ->   r1         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat37       [V123    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat38       [V124,T90] (  1,  1   )     int  ->   r0         "field V123.lo (fldOffset=0x0)" P-INDEP
+;  V125 rat39       [V125,T71] (  2,  1.50)     int  ->   r1         "field V123.hi (fldOffset=0x4)" P-INDEP
+;  V126 rat40       [V126,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat41       [V127    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat42       [V128,T91] (  1,  1   )     int  ->   r0         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat43       [V129,T72] (  2,  1.50)     int  ->   r1         "field V127.hi (fldOffset=0x4)" P-INDEP
+;  V130 rat44       [V130    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V131 rat45       [V131,T92] (  1,  1   )     int  ->   r0         "field V130.lo (fldOffset=0x0)" P-INDEP
+;  V132 rat46       [V132,T73] (  2,  1.50)     int  ->   r1         "field V130.hi (fldOffset=0x4)" P-INDEP
+;  V133 rat47       [V133,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V134 rat48       [V134    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V135 rat49       [V135,T93] (  1,  1   )     int  ->   r0         "field V134.lo (fldOffset=0x0)" P-INDEP
+;  V136 rat50       [V136,T74] (  2,  1.50)     int  ->   r1         "field V134.hi (fldOffset=0x4)" P-INDEP
+;  V137 rat51       [V137    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat52       [V138,T94] (  1,  1   )     int  ->   r0         "field V137.lo (fldOffset=0x0)" P-INDEP
+;  V139 rat53       [V139,T75] (  2,  1.50)     int  ->   r1         "field V137.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 92
 
@@ -483,8 +477,8 @@ G_M18379_IG29:        ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             subs    r3, r0, 1
             str     r3, [sp+0x48]  // [V13 loc10]
             cmp     r3, 0
-            blt     SHORT G_M18379_IG39
             ldr     r3, [sp+0x48]  // [V13 loc10]
+            blt     SHORT G_M18379_IG39
                        ;; size=64 bbWeight=0.50 PerfScore 13.00
 G_M18379_IG30:        ; bbWeight=4, gcVars=00000000000000000000000020000000 {V07}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz
             ; byrRegs -[r4]

benchmarks.run_pgo.linux.arm.checked.mch

-4 (-0.18%) : 48266.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person

@@ -54,8 +54,8 @@
 ;* V43 tmp38        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V44 tmp39        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V45 tmp40        [V45    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op double-align "NewObj constructor temp" <System.DateTime>
-;  V46 tmp41        [V46,T96] (  2,  0   )     ref  ->   r9         class-hnd "Inline stloc first use temp" <System.String>
-;  V47 tmp42        [V47,T95] (  3,  0   )     ref  ->   r4         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V46 tmp41        [V46,T98] (  2,  0   )     ref  ->   r9         class-hnd "Inline stloc first use temp" <System.String>
+;  V47 tmp42        [V47,T97] (  3,  0   )     ref  ->   r4         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V48 tmp43        [V48    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V49 tmp44        [V49,T31] (  9, 16   )     int  ->   r9         "Inline stloc first use temp"
 ;  V50 tmp45        [V50,T32] (  9, 16   )     int  ->  r10         "Inline stloc first use temp"
@@ -72,7 +72,7 @@
 ;* V61 tmp56        [V61,T69] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x4)" P-INDEP
 ;* V62 tmp57        [V62    ] (  0,  0   )   byref  ->  zero-ref    "field V32._reference (fldOffset=0x0)" P-INDEP
 ;* V63 tmp58        [V63    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x4)" P-INDEP
-;* V64 tmp59        [V64,T59] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
+;* V64 tmp59        [V64,T57] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
 ;* V65 tmp60        [V65,T70] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x4)" P-INDEP
 ;* V66 tmp61        [V66    ] (  0,  0   )   byref  ->  zero-ref    "field V36._reference (fldOffset=0x0)" P-INDEP
 ;* V67 tmp62        [V67    ] (  0,  0   )     int  ->  zero-ref    "field V36._length (fldOffset=0x4)" P-INDEP
@@ -89,63 +89,66 @@
 ;  V78 tmp73        [V78,T10] (  6, 24   )     ref  ->   r0         "argument with side effect"
 ;  V79 tmp74        [V79,T11] (  6, 24   )     ref  ->   r0         "argument with side effect"
 ;  V80 tmp75        [V80,T12] (  6, 24   )     ref  ->   r0         "argument with side effect"
-;  V81 tmp76        [V81,T97] (  2,  0   )     ref  ->   r1         "argument with side effect"
-;  V82 tmp77        [V82,T98] (  2,  0   )     ref  ->   r1         "argument with side effect"
-;  V83 tmp78        [V83,T99] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V81 tmp76        [V81,T99] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V82 tmp77        [V82,T100] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V83 tmp78        [V83,T101] (  2,  0   )     ref  ->   r1         "argument with side effect"
 ;  V84 tmp79        [V84,T13] (  6, 24   )     ref  ->   r0         "argument with side effect"
-;  V85 tmp80        [V85,T100] (  2,  0   )     ref  ->   r2         "argument with side effect"
+;  V85 tmp80        [V85,T102] (  2,  0   )     ref  ->   r2         "argument with side effect"
 ;* V86 cse0         [V86    ] (  0,  0   )    long  ->  zero-ref    "CSE - moderate"
-;  V87 cse1         [V87,T47] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V88 cse2         [V88,T48] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V89 cse3         [V89,T49] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V90 cse4         [V90,T88] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;  V91 cse5         [V91,T89] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;  V92 cse6         [V92,T90] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;* V93 cse7         [V93,T74] (  0,  0   )     int  ->  zero-ref    hoist multi-def "CSE - moderate"
-;  V94 rat0         [V94,T57] (  5,  8.04)     int  ->   r3         "field V44.lo (fldOffset=0x0)" P-INDEP
-;  V95 rat1         [V95,T58] (  5,  8.04)     int  ->   lr         "field V44.hi (fldOffset=0x4)" P-INDEP
-;  V96 rat2         [V96,T45] (  4, 12   )     int  ->   r0         "field V77.lo (fldOffset=0x0)" P-INDEP
-;  V97 rat3         [V97,T46] (  4, 12   )     int  ->   r1         "field V77.hi (fldOffset=0x4)" P-INDEP
-;  V98 rat4         [V98,T50] (  3, 11.88)     int  ->   r0         "field V86.lo (fldOffset=0x0)" P-INDEP
-;  V99 rat5         [V99,T51] (  3, 11.88)     int  ->   r1         "field V86.hi (fldOffset=0x4)" P-INDEP
-;  V100 rat6        [V100,T19] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
-;  V101 rat7        [V101,T20] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V102 rat8        [V102,T21] (  3, 23.76)     int  ->   r9         "ReplaceWithLclVar is creating a new local variable"
-;  V103 rat9        [V103,T22] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V104 rat10       [V104,T23] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
-;  V105 rat11       [V105,T24] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V106 rat12       [V106,T25] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V107 rat13       [V107    ] (  1,  7.92)    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V108 rat14       [V108,T52] (  2, 11.88)     int  ->   r0         "field V107.lo (fldOffset=0x0)" P-INDEP
-;  V109 rat15       [V109,T53] (  2, 11.88)     int  ->   r1         "field V107.hi (fldOffset=0x4)" P-INDEP
-;  V110 rat16       [V110    ] (  1,  7.92)    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V111 rat17       [V111,T54] (  2, 11.88)     int  ->   r0         "field V110.lo (fldOffset=0x0)" P-INDEP
-;  V112 rat18       [V112,T55] (  2, 11.88)     int  ->   r1         "field V110.hi (fldOffset=0x4)" P-INDEP
-;  V113 rat19       [V113,T17] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V114 rat20       [V114,T26] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V115 rat21       [V115,T27] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat22       [V116,T28] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat23       [V117,T18] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V118 rat24       [V118,T29] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V119 rat25       [V119,T77] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat26       [V120,T78] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V121 rat27       [V121,T79] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V122 rat28       [V122,T80] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat29       [V123,T81] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat30       [V124,T82] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V125 rat31       [V125,T83] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat32       [V126    ] (  1,  0.08)    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat33       [V127,T91] (  2,  0.12)     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat34       [V128,T92] (  2,  0.12)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat35       [V129    ] (  1,  0.08)    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat36       [V130,T93] (  2,  0.12)     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat37       [V131,T94] (  2,  0.12)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat38       [V132,T75] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat39       [V133,T84] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat40       [V134,T85] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V135 rat41       [V135,T86] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V136 rat42       [V136,T76] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat43       [V137,T87] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;* V87 cse1         [V87    ] (  0,  0   )    long  ->  zero-ref    "CSE - conservative"
+;  V88 cse2         [V88,T47] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V89 cse3         [V89,T48] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V90 cse4         [V90,T49] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V91 cse5         [V91,T88] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;  V92 cse6         [V92,T89] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;  V93 cse7         [V93,T90] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;* V94 cse8         [V94,T74] (  0,  0   )     int  ->  zero-ref    hoist multi-def "CSE - moderate"
+;  V95 rat0         [V95,T58] (  4,  8   )     int  ->   r3         "field V44.lo (fldOffset=0x0)" P-INDEP
+;  V96 rat1         [V96,T59] (  4,  8   )     int  ->   lr         "field V44.hi (fldOffset=0x4)" P-INDEP
+;  V97 rat2         [V97,T45] (  4, 12   )     int  ->   r0         "field V77.lo (fldOffset=0x0)" P-INDEP
+;  V98 rat3         [V98,T46] (  4, 12   )     int  ->   r1         "field V77.hi (fldOffset=0x4)" P-INDEP
+;  V99 rat4         [V99,T50] (  3, 11.88)     int  ->   r0         "field V86.lo (fldOffset=0x0)" P-INDEP
+;  V100 rat5        [V100,T51] (  3, 11.88)     int  ->   r1         "field V86.hi (fldOffset=0x4)" P-INDEP
+;  V101 rat6        [V101,T91] (  3,  0.12)     int  ->   r0         "field V87.lo (fldOffset=0x0)" P-INDEP
+;  V102 rat7        [V102,T92] (  3,  0.12)     int  ->   r1         "field V87.hi (fldOffset=0x4)" P-INDEP
+;  V103 rat8        [V103,T19] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
+;  V104 rat9        [V104,T20] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V105 rat10       [V105,T21] (  3, 23.76)     int  ->   r9         "ReplaceWithLclVar is creating a new local variable"
+;  V106 rat11       [V106,T22] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V107 rat12       [V107,T23] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
+;  V108 rat13       [V108,T24] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V109 rat14       [V109,T25] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat15       [V110    ] (  1,  7.92)    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat16       [V111,T52] (  2, 11.88)     int  ->   r0         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat17       [V112,T53] (  2, 11.88)     int  ->   r1         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat18       [V113    ] (  1,  7.92)    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat19       [V114,T54] (  2, 11.88)     int  ->   r0         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat20       [V115,T55] (  2, 11.88)     int  ->   r1         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat21       [V116,T17] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat22       [V117,T26] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat23       [V118,T27] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V119 rat24       [V119,T28] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat25       [V120,T18] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat26       [V121,T29] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V122 rat27       [V122,T77] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V123 rat28       [V123,T78] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat29       [V124,T79] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat30       [V125,T80] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V126 rat31       [V126,T81] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat32       [V127,T82] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat33       [V128,T83] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V129 rat34       [V129    ] (  1,  0.08)    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V130 rat35       [V130,T93] (  2,  0.12)     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
+;  V131 rat36       [V131,T94] (  2,  0.12)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
+;  V132 rat37       [V132    ] (  1,  0.08)    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V133 rat38       [V133,T95] (  2,  0.12)     int  ->   r0         "field V132.lo (fldOffset=0x0)" P-INDEP
+;  V134 rat39       [V134,T96] (  2,  0.12)     int  ->   r1         "field V132.hi (fldOffset=0x4)" P-INDEP
+;  V135 rat40       [V135,T75] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V136 rat41       [V136,T84] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V137 rat42       [V137,T85] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat43       [V138,T86] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V139 rat44       [V139,T76] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V140 rat45       [V140,T87] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 84
 
@@ -820,17 +823,17 @@ G_M14965_IG11:        ; bbWeight=0.04, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBL2LNG
-            adds    r3, r9, r0
-            adc     lr, r10, r1
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            cmp     r3, r0
-            sbcs    r0, lr, r1
+            adds    r0, r9, r0
+            adc     r1, r10, r1
+            mov     r3, r0
+            mov     lr, r1
+            movw    r2, 0xd1ff
+            movt    r2, 0xd1ff
+            movw    r12, 0xd1ff
+            movt    r12, 0xd1ff
+            cmp     r3, r2
+            sbcs    r2, lr, r12
             bhs     G_M14965_IG21
-            orr     r0, r3, 0
-            orr     r1, lr, 0
             str     r0, [sp+0x38]  // [V68 tmp63]
             str     r1, [sp+0x3C]  // [V68 tmp63+0x04]
             add     r0, r8, 24
@@ -867,7 +870,7 @@ G_M14965_IG11:        ; bbWeight=0.04, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             movs    r1, 0
             mov     r2, 256
             ldr     r3, [r0]
-                       ;; size=630 bbWeight=0.04 PerfScore 8.56
+                       ;; size=626 bbWeight=0.04 PerfScore 8.56
 G_M14965_IG12:        ; bbWeight=0.04, isz, extend
             ldr     r3, [r3+0x2C]
             ldr     r3, [r3+0x1C]
@@ -1128,7 +1131,7 @@ G_M14965_IG24:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bkpt    
                        ;; size=40 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2284, prolog size 14, PerfScore 1300.98, instruction count 782, allocated bytes for code 2284 (MethodHash=528ec58a) for method System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)
+; Total bytes of code 2280, prolog size 14, PerfScore 1300.98, instruction count 782, allocated bytes for code 2280 (MethodHash=528ec58a) for method System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1140,7 +1143,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 1142 (0x00476) Actual length = 2284 (0x0008ec)
+  Function Length   : 1140 (0x00474) Actual length = 2280 (0x0008e8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [sp+0x04]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [sp+0x48] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [sp+0x00]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->   r9         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->   r9         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T70] (  3,  1.50)     int  ->  r10        
+;  V19 tmp3         [V19,T66] (  3,  1.50)     int  ->  r10        
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   r0         single-def "dup spill"
-;  V27 tmp11        [V27,T64] (  3,  2   )     int  ->   r1         "spilling helperCall"
-;  V28 tmp12        [V28,T71] (  3,  1.50)     int  ->  r10        
+;  V27 tmp11        [V27,T60] (  3,  2   )     int  ->   r1         "spilling helperCall"
+;  V28 tmp12        [V28,T67] (  3,  1.50)     int  ->  r10        
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   r0         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,T101] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T95] (  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,T102] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct ( 8) 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  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   r0         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,T103] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T97] (  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,T104] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct ( 8) 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,17 +68,17 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   r0         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,T105] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T99] (  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,T106] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V65 tmp49        [V65,T80] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T83] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
-;  V67 tmp51        [V67,T81] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T84] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
-;  V69 tmp53        [V69,T82] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T85] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
+;  V65 tmp49        [V65,T76] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T79] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
+;  V67 tmp51        [V67,T77] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T80] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
+;  V69 tmp53        [V69,T78] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T81] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V71 tmp55        [V71    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->   r0         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->   r1         "index expr"
@@ -87,73 +87,67 @@
 ;  V76 tmp60        [V76,T47] (  3,  3   )     int  ->   r1         "index expr"
 ;  V77 tmp61        [V77,T12] (  2, 16   )     int  ->   r1         "argument with side effect"
 ;  V78 tmp62        [V78,T13] (  2, 16   )     int  ->   r1         "argument with side effect"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->   r1         "argument with side effect"
 ;* V80 tmp64        [V80    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V81 tmp65        [V81,T48] (  3,  3   )     int  ->   r0         "index expr"
 ;  V82 tmp66        [V82,T49] (  3,  3   )     int  ->   r1         "index expr"
-;  V83 tmp67        [V83,T68] (  2,  2   )     int  ->   r1         "argument with side effect"
-;  V84 cse0         [V84,T72] (  3,  1.50)     int  ->   r0         "CSE - conservative"
-;  V85 cse1         [V85,T73] (  3,  1.50)     int  ->   r8         "CSE - conservative"
-;  V86 rat0         [V86,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V87 rat1         [V87,T65] (  3,  2   )     int  ->   r1         "runtime lookup"
+;  V83 tmp67        [V83,T64] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V84 cse0         [V84,T68] (  3,  1.50)     int  ->   r0         "CSE - conservative"
+;  V85 cse1         [V85,T69] (  3,  1.50)     int  ->   r8         "CSE - conservative"
+;  V86 rat0         [V86,T55] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V87 rat1         [V87,T61] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V88 rat2         [V88,T50] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V89 rat3         [V89,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V90 rat4         [V90,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V91 rat5         [V91,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V92 rat6         [V92,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V93 rat7         [V93,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V94 rat8         [V94,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V95 rat9         [V95,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V96 rat10        [V96,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V97 rat11        [V97,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V98 rat12        [V98,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V99 rat13        [V99,T52] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;* V100 rat14       [V100,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V101 rat15       [V101,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V102 rat16       [V102,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V103 rat17       [V103,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V104 rat18       [V104,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V105 rat19       [V105,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V106 rat20       [V106,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V107 rat21       [V107,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V108 rat22       [V108,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V109 rat23       [V109,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V110 rat24       [V110,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V111 rat25       [V111,T61] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V89 rat3         [V89,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V90 rat4         [V90,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V91 rat5         [V91,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V92 rat6         [V92,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V93 rat7         [V93,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V94 rat8         [V94,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V95 rat9         [V95,T56] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V96 rat10        [V96,T51] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V97 rat11        [V97,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V98 rat12        [V98,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V99 rat13        [V99,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V100 rat14       [V100,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V101 rat15       [V101,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V102 rat16       [V102,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V103 rat17       [V103,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V104 rat18       [V104,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V105 rat19       [V105,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V106 rat20       [V106,T52] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V107 rat21       [V107,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V108 rat22       [V108,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V109 rat23       [V109,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V110 rat24       [V110,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V111 rat25       [V111,T62] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V112 rat26       [V112,T54] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V113 rat27       [V113,T62] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V114 rat28       [V114,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V115 rat29       [V115,T55] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat30       [V116,T63] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V117 rat31       [V117,T66] (  3,  2   )     int  ->   r1         "runtime lookup"
-;  V118 rat32       [V118,T56] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V119 rat33       [V119,T89] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
-;  V120 rat34       [V120,T90] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
-;  V121 rat35       [V121,T91] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
-;  V122 rat36       [V122,T92] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
-;  V123 rat37       [V123,T93] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
-;  V124 rat38       [V124,T94] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
-;  V125 rat39       [V125,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat40       [V126    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat41       [V127,T95] (  1,  1   )     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat42       [V128,T74] (  2,  1.50)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat43       [V129    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat44       [V130,T96] (  1,  1   )     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat45       [V131,T75] (  2,  1.50)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat46       [V132,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat47       [V133    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat48       [V134,T97] (  1,  1   )     int  ->   r0         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat49       [V135,T76] (  2,  1.50)     int  ->   r1         "field V133.hi (fldOffset=0x4)" P-INDEP
-;  V136 rat50       [V136    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat51       [V137,T98] (  1,  1   )     int  ->   r0         "field V136.lo (fldOffset=0x0)" P-INDEP
-;  V138 rat52       [V138,T77] (  2,  1.50)     int  ->   r1         "field V136.hi (fldOffset=0x4)" P-INDEP
-;  V139 rat53       [V139,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V140 rat54       [V140    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V141 rat55       [V141,T99] (  1,  1   )     int  ->   r0         "field V140.lo (fldOffset=0x0)" P-INDEP
-;  V142 rat56       [V142,T78] (  2,  1.50)     int  ->   r1         "field V140.hi (fldOffset=0x4)" P-INDEP
-;  V143 rat57       [V143    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V144 rat58       [V144,T100] (  1,  1   )     int  ->   r0         "field V143.lo (fldOffset=0x0)" P-INDEP
-;  V145 rat59       [V145,T79] (  2,  1.50)     int  ->   r1         "field V143.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat27       [V113,T83] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
+;  V114 rat28       [V114,T84] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
+;  V115 rat29       [V115,T85] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
+;  V116 rat30       [V116,T86] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
+;  V117 rat31       [V117,T87] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
+;  V118 rat32       [V118,T88] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
+;  V119 rat33       [V119,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat34       [V120    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat35       [V121,T89] (  1,  1   )     int  ->   r0         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat36       [V122,T70] (  2,  1.50)     int  ->   r1         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat37       [V123    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat38       [V124,T90] (  1,  1   )     int  ->   r0         "field V123.lo (fldOffset=0x0)" P-INDEP
+;  V125 rat39       [V125,T71] (  2,  1.50)     int  ->   r1         "field V123.hi (fldOffset=0x4)" P-INDEP
+;  V126 rat40       [V126,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat41       [V127    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat42       [V128,T91] (  1,  1   )     int  ->   r0         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat43       [V129,T72] (  2,  1.50)     int  ->   r1         "field V127.hi (fldOffset=0x4)" P-INDEP
+;  V130 rat44       [V130    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V131 rat45       [V131,T92] (  1,  1   )     int  ->   r0         "field V130.lo (fldOffset=0x0)" P-INDEP
+;  V132 rat46       [V132,T73] (  2,  1.50)     int  ->   r1         "field V130.hi (fldOffset=0x4)" P-INDEP
+;  V133 rat47       [V133,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V134 rat48       [V134    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V135 rat49       [V135,T93] (  1,  1   )     int  ->   r0         "field V134.lo (fldOffset=0x0)" P-INDEP
+;  V136 rat50       [V136,T74] (  2,  1.50)     int  ->   r1         "field V134.hi (fldOffset=0x4)" P-INDEP
+;  V137 rat51       [V137    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat52       [V138,T94] (  1,  1   )     int  ->   r0         "field V137.lo (fldOffset=0x0)" P-INDEP
+;  V139 rat53       [V139,T75] (  2,  1.50)     int  ->   r1         "field V137.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 92
 
@@ -483,8 +477,8 @@ G_M18379_IG29:        ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             subs    r3, r0, 1
             str     r3, [sp+0x48]  // [V13 loc10]
             cmp     r3, 0
-            blt     SHORT G_M18379_IG39
             ldr     r3, [sp+0x48]  // [V13 loc10]
+            blt     SHORT G_M18379_IG39
                        ;; size=64 bbWeight=0.50 PerfScore 13.00
 G_M18379_IG30:        ; bbWeight=4, gcVars=00000000000000000000000020000000 {V07}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz
             ; byrRegs -[r4]

benchmarks.run_tiered.linux.arm.checked.mch

-4 (-0.18%) : 32299.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person

@@ -54,8 +54,8 @@
 ;* V43 tmp38        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V44 tmp39        [V44    ] (  0,  0   )    long  ->  zero-ref    "Inline stloc first use temp"
 ;* V45 tmp40        [V45    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op double-align "NewObj constructor temp" <System.DateTime>
-;  V46 tmp41        [V46,T96] (  2,  0   )     ref  ->   r9         class-hnd "Inline stloc first use temp" <System.String>
-;  V47 tmp42        [V47,T95] (  3,  0   )     ref  ->   r4         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V46 tmp41        [V46,T98] (  2,  0   )     ref  ->   r9         class-hnd "Inline stloc first use temp" <System.String>
+;  V47 tmp42        [V47,T97] (  3,  0   )     ref  ->   r4         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V48 tmp43        [V48    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;  V49 tmp44        [V49,T31] (  9, 16   )     int  ->   r9         "Inline stloc first use temp"
 ;  V50 tmp45        [V50,T32] (  9, 16   )     int  ->  r10         "Inline stloc first use temp"
@@ -72,7 +72,7 @@
 ;* V61 tmp56        [V61,T69] (  0,  0   )     int  ->  zero-ref    "field V31._length (fldOffset=0x4)" P-INDEP
 ;* V62 tmp57        [V62    ] (  0,  0   )   byref  ->  zero-ref    "field V32._reference (fldOffset=0x0)" P-INDEP
 ;* V63 tmp58        [V63    ] (  0,  0   )     int  ->  zero-ref    "field V32._length (fldOffset=0x4)" P-INDEP
-;* V64 tmp59        [V64,T59] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
+;* V64 tmp59        [V64,T57] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
 ;* V65 tmp60        [V65,T70] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x4)" P-INDEP
 ;* V66 tmp61        [V66    ] (  0,  0   )   byref  ->  zero-ref    "field V36._reference (fldOffset=0x0)" P-INDEP
 ;* V67 tmp62        [V67    ] (  0,  0   )     int  ->  zero-ref    "field V36._length (fldOffset=0x4)" P-INDEP
@@ -89,63 +89,66 @@
 ;  V78 tmp73        [V78,T10] (  6, 24   )     ref  ->   r0         "argument with side effect"
 ;  V79 tmp74        [V79,T11] (  6, 24   )     ref  ->   r0         "argument with side effect"
 ;  V80 tmp75        [V80,T12] (  6, 24   )     ref  ->   r0         "argument with side effect"
-;  V81 tmp76        [V81,T97] (  2,  0   )     ref  ->   r1         "argument with side effect"
-;  V82 tmp77        [V82,T98] (  2,  0   )     ref  ->   r1         "argument with side effect"
-;  V83 tmp78        [V83,T99] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V81 tmp76        [V81,T99] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V82 tmp77        [V82,T100] (  2,  0   )     ref  ->   r1         "argument with side effect"
+;  V83 tmp78        [V83,T101] (  2,  0   )     ref  ->   r1         "argument with side effect"
 ;  V84 tmp79        [V84,T13] (  6, 24   )     ref  ->   r0         "argument with side effect"
-;  V85 tmp80        [V85,T100] (  2,  0   )     ref  ->   r2         "argument with side effect"
+;  V85 tmp80        [V85,T102] (  2,  0   )     ref  ->   r2         "argument with side effect"
 ;* V86 cse0         [V86    ] (  0,  0   )    long  ->  zero-ref    "CSE - moderate"
-;  V87 cse1         [V87,T47] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V88 cse2         [V88,T48] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V89 cse3         [V89,T49] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
-;  V90 cse4         [V90,T88] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;  V91 cse5         [V91,T89] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;  V92 cse6         [V92,T90] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
-;* V93 cse7         [V93,T74] (  0,  0   )     int  ->  zero-ref    hoist multi-def "CSE - moderate"
-;  V94 rat0         [V94,T57] (  5,  8.04)     int  ->   r3         "field V44.lo (fldOffset=0x0)" P-INDEP
-;  V95 rat1         [V95,T58] (  5,  8.04)     int  ->   lr         "field V44.hi (fldOffset=0x4)" P-INDEP
-;  V96 rat2         [V96,T45] (  4, 12   )     int  ->   r0         "field V77.lo (fldOffset=0x0)" P-INDEP
-;  V97 rat3         [V97,T46] (  4, 12   )     int  ->   r1         "field V77.hi (fldOffset=0x4)" P-INDEP
-;  V98 rat4         [V98,T50] (  3, 11.88)     int  ->   r0         "field V86.lo (fldOffset=0x0)" P-INDEP
-;  V99 rat5         [V99,T51] (  3, 11.88)     int  ->   r1         "field V86.hi (fldOffset=0x4)" P-INDEP
-;  V100 rat6        [V100,T19] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
-;  V101 rat7        [V101,T20] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V102 rat8        [V102,T21] (  3, 23.76)     int  ->   r9         "ReplaceWithLclVar is creating a new local variable"
-;  V103 rat9        [V103,T22] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V104 rat10       [V104,T23] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
-;  V105 rat11       [V105,T24] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V106 rat12       [V106,T25] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V107 rat13       [V107    ] (  1,  7.92)    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V108 rat14       [V108,T52] (  2, 11.88)     int  ->   r0         "field V107.lo (fldOffset=0x0)" P-INDEP
-;  V109 rat15       [V109,T53] (  2, 11.88)     int  ->   r1         "field V107.hi (fldOffset=0x4)" P-INDEP
-;  V110 rat16       [V110    ] (  1,  7.92)    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V111 rat17       [V111,T54] (  2, 11.88)     int  ->   r0         "field V110.lo (fldOffset=0x0)" P-INDEP
-;  V112 rat18       [V112,T55] (  2, 11.88)     int  ->   r1         "field V110.hi (fldOffset=0x4)" P-INDEP
-;  V113 rat19       [V113,T17] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V114 rat20       [V114,T26] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V115 rat21       [V115,T27] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat22       [V116,T28] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat23       [V117,T18] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V118 rat24       [V118,T29] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V119 rat25       [V119,T77] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat26       [V120,T78] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V121 rat27       [V121,T79] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V122 rat28       [V122,T80] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat29       [V123,T81] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat30       [V124,T82] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V125 rat31       [V125,T83] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat32       [V126    ] (  1,  0.08)    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat33       [V127,T91] (  2,  0.12)     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat34       [V128,T92] (  2,  0.12)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat35       [V129    ] (  1,  0.08)    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat36       [V130,T93] (  2,  0.12)     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat37       [V131,T94] (  2,  0.12)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat38       [V132,T75] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat39       [V133,T84] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat40       [V134,T85] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V135 rat41       [V135,T86] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V136 rat42       [V136,T76] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat43       [V137,T87] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;* V87 cse1         [V87    ] (  0,  0   )    long  ->  zero-ref    "CSE - conservative"
+;  V88 cse2         [V88,T47] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V89 cse3         [V89,T48] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V90 cse4         [V90,T49] (  3, 11.88)     ref  ->   r0         "CSE - moderate"
+;  V91 cse5         [V91,T88] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;  V92 cse6         [V92,T89] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;  V93 cse7         [V93,T90] (  3,  0.12)     ref  ->   r0         "CSE - conservative"
+;* V94 cse8         [V94,T74] (  0,  0   )     int  ->  zero-ref    hoist multi-def "CSE - moderate"
+;  V95 rat0         [V95,T58] (  4,  8   )     int  ->   r3         "field V44.lo (fldOffset=0x0)" P-INDEP
+;  V96 rat1         [V96,T59] (  4,  8   )     int  ->   lr         "field V44.hi (fldOffset=0x4)" P-INDEP
+;  V97 rat2         [V97,T45] (  4, 12   )     int  ->   r0         "field V77.lo (fldOffset=0x0)" P-INDEP
+;  V98 rat3         [V98,T46] (  4, 12   )     int  ->   r1         "field V77.hi (fldOffset=0x4)" P-INDEP
+;  V99 rat4         [V99,T50] (  3, 11.88)     int  ->   r0         "field V86.lo (fldOffset=0x0)" P-INDEP
+;  V100 rat5        [V100,T51] (  3, 11.88)     int  ->   r1         "field V86.hi (fldOffset=0x4)" P-INDEP
+;  V101 rat6        [V101,T91] (  3,  0.12)     int  ->   r0         "field V87.lo (fldOffset=0x0)" P-INDEP
+;  V102 rat7        [V102,T92] (  3,  0.12)     int  ->   r1         "field V87.hi (fldOffset=0x4)" P-INDEP
+;  V103 rat8        [V103,T19] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
+;  V104 rat9        [V104,T20] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V105 rat10       [V105,T21] (  3, 23.76)     int  ->   r9         "ReplaceWithLclVar is creating a new local variable"
+;  V106 rat11       [V106,T22] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V107 rat12       [V107,T23] (  3, 23.76)     int  ->  r10         "ReplaceWithLclVar is creating a new local variable"
+;  V108 rat13       [V108,T24] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V109 rat14       [V109,T25] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat15       [V110    ] (  1,  7.92)    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat16       [V111,T52] (  2, 11.88)     int  ->   r0         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat17       [V112,T53] (  2, 11.88)     int  ->   r1         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat18       [V113    ] (  1,  7.92)    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat19       [V114,T54] (  2, 11.88)     int  ->   r0         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat20       [V115,T55] (  2, 11.88)     int  ->   r1         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat21       [V116,T17] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat22       [V117,T26] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat23       [V118,T27] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V119 rat24       [V119,T28] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat25       [V120,T18] (  3, 23.76)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat26       [V121,T29] (  3, 23.76)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V122 rat27       [V122,T77] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V123 rat28       [V123,T78] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat29       [V124,T79] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat30       [V125,T80] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V126 rat31       [V126,T81] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat32       [V127,T82] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat33       [V128,T83] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V129 rat34       [V129    ] (  1,  0.08)    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V130 rat35       [V130,T93] (  2,  0.12)     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
+;  V131 rat36       [V131,T94] (  2,  0.12)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
+;  V132 rat37       [V132    ] (  1,  0.08)    long  ->  [sp+0x08]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V133 rat38       [V133,T95] (  2,  0.12)     int  ->   r0         "field V132.lo (fldOffset=0x0)" P-INDEP
+;  V134 rat39       [V134,T96] (  2,  0.12)     int  ->   r1         "field V132.hi (fldOffset=0x4)" P-INDEP
+;  V135 rat40       [V135,T75] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V136 rat41       [V136,T84] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V137 rat42       [V137,T85] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat43       [V138,T86] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V139 rat44       [V139,T76] (  3,  0.24)   byref  ->   r0         "ReplaceWithLclVar is creating a new local variable"
+;  V140 rat45       [V140,T87] (  3,  0.24)     int  ->   r0         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 84
 
@@ -820,17 +823,17 @@ G_M14965_IG11:        ; bbWeight=0.04, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DBL2LNG
-            adds    r3, r9, r0
-            adc     lr, r10, r1
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            cmp     r3, r0
-            sbcs    r0, lr, r1
+            adds    r0, r9, r0
+            adc     r1, r10, r1
+            mov     r3, r0
+            mov     lr, r1
+            movw    r2, 0xd1ff
+            movt    r2, 0xd1ff
+            movw    r12, 0xd1ff
+            movt    r12, 0xd1ff
+            cmp     r3, r2
+            sbcs    r2, lr, r12
             bhs     G_M14965_IG21
-            orr     r0, r3, 0
-            orr     r1, lr, 0
             str     r0, [sp+0x38]  // [V68 tmp63]
             str     r1, [sp+0x3C]  // [V68 tmp63+0x04]
             add     r0, r8, 24
@@ -864,7 +867,7 @@ G_M14965_IG11:        ; bbWeight=0.04, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             blx     lr     // <unknown method>
             ldr     r0, [r5+0x04]
             ; gcrRegs +[r0]
-                       ;; size=622 bbWeight=0.04 PerfScore 8.44
+                       ;; size=618 bbWeight=0.04 PerfScore 8.44
 G_M14965_IG12:        ; bbWeight=0.04, isz, extend
             movs    r1, 0
             mov     r2, 256
@@ -1128,7 +1131,7 @@ G_M14965_IG24:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bkpt    
                        ;; size=40 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 2284, prolog size 14, PerfScore 1300.98, instruction count 782, allocated bytes for code 2284 (MethodHash=528ec58a) for method System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)
+; Total bytes of code 2280, prolog size 14, PerfScore 1300.98, instruction count 782, allocated bytes for code 2280 (MethodHash=528ec58a) for method System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -1140,7 +1143,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 1142 (0x00476) Actual length = 2284 (0x0008ec)
+  Function Length   : 1140 (0x00474) Actual length = 2280 (0x0008e8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [sp+0x04]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [sp+0x48] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [sp+0x00]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->   r9         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->   r9         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T70] (  3,  1.50)     int  ->  r10        
+;  V19 tmp3         [V19,T66] (  3,  1.50)     int  ->  r10        
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   r0         single-def "dup spill"
-;  V27 tmp11        [V27,T64] (  3,  2   )     int  ->   r1         "spilling helperCall"
-;  V28 tmp12        [V28,T71] (  3,  1.50)     int  ->  r10        
+;  V27 tmp11        [V27,T60] (  3,  2   )     int  ->   r1         "spilling helperCall"
+;  V28 tmp12        [V28,T67] (  3,  1.50)     int  ->  r10        
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   r0         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,T101] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T95] (  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,T102] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct ( 8) 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  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   r0         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,T103] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T97] (  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,T104] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct ( 8) 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,17 +68,17 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   r0         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,T105] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T99] (  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,T106] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V65 tmp49        [V65,T80] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T83] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
-;  V67 tmp51        [V67,T81] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T84] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
-;  V69 tmp53        [V69,T82] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T85] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
+;  V65 tmp49        [V65,T76] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T79] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
+;  V67 tmp51        [V67,T77] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T80] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
+;  V69 tmp53        [V69,T78] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T81] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V71 tmp55        [V71    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->   r0         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->   r1         "index expr"
@@ -87,73 +87,67 @@
 ;  V76 tmp60        [V76,T47] (  3,  3   )     int  ->   r1         "index expr"
 ;  V77 tmp61        [V77,T12] (  2, 16   )     int  ->   r1         "argument with side effect"
 ;  V78 tmp62        [V78,T13] (  2, 16   )     int  ->   r1         "argument with side effect"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->   r1         "argument with side effect"
 ;* V80 tmp64        [V80    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V81 tmp65        [V81,T48] (  3,  3   )     int  ->   r0         "index expr"
 ;  V82 tmp66        [V82,T49] (  3,  3   )     int  ->   r1         "index expr"
-;  V83 tmp67        [V83,T68] (  2,  2   )     int  ->   r1         "argument with side effect"
-;  V84 cse0         [V84,T72] (  3,  1.50)     int  ->   r0         "CSE - conservative"
-;  V85 cse1         [V85,T73] (  3,  1.50)     int  ->   r8         "CSE - conservative"
-;  V86 rat0         [V86,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V87 rat1         [V87,T65] (  3,  2   )     int  ->   r1         "runtime lookup"
+;  V83 tmp67        [V83,T64] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V84 cse0         [V84,T68] (  3,  1.50)     int  ->   r0         "CSE - conservative"
+;  V85 cse1         [V85,T69] (  3,  1.50)     int  ->   r8         "CSE - conservative"
+;  V86 rat0         [V86,T55] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V87 rat1         [V87,T61] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V88 rat2         [V88,T50] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V89 rat3         [V89,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V90 rat4         [V90,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V91 rat5         [V91,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V92 rat6         [V92,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V93 rat7         [V93,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V94 rat8         [V94,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V95 rat9         [V95,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V96 rat10        [V96,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V97 rat11        [V97,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V98 rat12        [V98,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V99 rat13        [V99,T52] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;* V100 rat14       [V100,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V101 rat15       [V101,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V102 rat16       [V102,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V103 rat17       [V103,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V104 rat18       [V104,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V105 rat19       [V105,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V106 rat20       [V106,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V107 rat21       [V107,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V108 rat22       [V108,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V109 rat23       [V109,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V110 rat24       [V110,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V111 rat25       [V111,T61] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V89 rat3         [V89,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V90 rat4         [V90,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V91 rat5         [V91,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V92 rat6         [V92,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V93 rat7         [V93,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V94 rat8         [V94,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V95 rat9         [V95,T56] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V96 rat10        [V96,T51] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V97 rat11        [V97,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V98 rat12        [V98,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V99 rat13        [V99,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V100 rat14       [V100,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V101 rat15       [V101,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V102 rat16       [V102,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V103 rat17       [V103,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V104 rat18       [V104,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V105 rat19       [V105,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V106 rat20       [V106,T52] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V107 rat21       [V107,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V108 rat22       [V108,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V109 rat23       [V109,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V110 rat24       [V110,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V111 rat25       [V111,T62] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V112 rat26       [V112,T54] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V113 rat27       [V113,T62] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V114 rat28       [V114,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V115 rat29       [V115,T55] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat30       [V116,T63] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V117 rat31       [V117,T66] (  3,  2   )     int  ->   r1         "runtime lookup"
-;  V118 rat32       [V118,T56] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V119 rat33       [V119,T89] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
-;  V120 rat34       [V120,T90] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
-;  V121 rat35       [V121,T91] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
-;  V122 rat36       [V122,T92] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
-;  V123 rat37       [V123,T93] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
-;  V124 rat38       [V124,T94] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
-;  V125 rat39       [V125,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat40       [V126    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat41       [V127,T95] (  1,  1   )     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat42       [V128,T74] (  2,  1.50)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat43       [V129    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat44       [V130,T96] (  1,  1   )     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat45       [V131,T75] (  2,  1.50)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat46       [V132,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat47       [V133    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat48       [V134,T97] (  1,  1   )     int  ->   r0         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat49       [V135,T76] (  2,  1.50)     int  ->   r1         "field V133.hi (fldOffset=0x4)" P-INDEP
-;  V136 rat50       [V136    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat51       [V137,T98] (  1,  1   )     int  ->   r0         "field V136.lo (fldOffset=0x0)" P-INDEP
-;  V138 rat52       [V138,T77] (  2,  1.50)     int  ->   r1         "field V136.hi (fldOffset=0x4)" P-INDEP
-;  V139 rat53       [V139,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V140 rat54       [V140    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V141 rat55       [V141,T99] (  1,  1   )     int  ->   r0         "field V140.lo (fldOffset=0x0)" P-INDEP
-;  V142 rat56       [V142,T78] (  2,  1.50)     int  ->   r1         "field V140.hi (fldOffset=0x4)" P-INDEP
-;  V143 rat57       [V143    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V144 rat58       [V144,T100] (  1,  1   )     int  ->   r0         "field V143.lo (fldOffset=0x0)" P-INDEP
-;  V145 rat59       [V145,T79] (  2,  1.50)     int  ->   r1         "field V143.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat27       [V113,T83] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
+;  V114 rat28       [V114,T84] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
+;  V115 rat29       [V115,T85] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
+;  V116 rat30       [V116,T86] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
+;  V117 rat31       [V117,T87] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
+;  V118 rat32       [V118,T88] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
+;  V119 rat33       [V119,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat34       [V120    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat35       [V121,T89] (  1,  1   )     int  ->   r0         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat36       [V122,T70] (  2,  1.50)     int  ->   r1         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat37       [V123    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat38       [V124,T90] (  1,  1   )     int  ->   r0         "field V123.lo (fldOffset=0x0)" P-INDEP
+;  V125 rat39       [V125,T71] (  2,  1.50)     int  ->   r1         "field V123.hi (fldOffset=0x4)" P-INDEP
+;  V126 rat40       [V126,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat41       [V127    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat42       [V128,T91] (  1,  1   )     int  ->   r0         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat43       [V129,T72] (  2,  1.50)     int  ->   r1         "field V127.hi (fldOffset=0x4)" P-INDEP
+;  V130 rat44       [V130    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V131 rat45       [V131,T92] (  1,  1   )     int  ->   r0         "field V130.lo (fldOffset=0x0)" P-INDEP
+;  V132 rat46       [V132,T73] (  2,  1.50)     int  ->   r1         "field V130.hi (fldOffset=0x4)" P-INDEP
+;  V133 rat47       [V133,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V134 rat48       [V134    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V135 rat49       [V135,T93] (  1,  1   )     int  ->   r0         "field V134.lo (fldOffset=0x0)" P-INDEP
+;  V136 rat50       [V136,T74] (  2,  1.50)     int  ->   r1         "field V134.hi (fldOffset=0x4)" P-INDEP
+;  V137 rat51       [V137    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat52       [V138,T94] (  1,  1   )     int  ->   r0         "field V137.lo (fldOffset=0x0)" P-INDEP
+;  V139 rat53       [V139,T75] (  2,  1.50)     int  ->   r1         "field V137.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 92
 
@@ -483,8 +477,8 @@ G_M18379_IG29:        ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             subs    r3, r0, 1
             str     r3, [sp+0x48]  // [V13 loc10]
             cmp     r3, 0
-            blt     SHORT G_M18379_IG39
             ldr     r3, [sp+0x48]  // [V13 loc10]
+            blt     SHORT G_M18379_IG39
                        ;; size=64 bbWeight=0.50 PerfScore 13.00
 G_M18379_IG30:        ; bbWeight=4, gcVars=00000000000000000000000020000000 {V07}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz
             ; byrRegs -[r4]

coreclr_tests.run.linux.arm.checked.mch

-12 (-1.72%) : 272471.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]):this (Tier0-FullOpts)

@@ -8,75 +8,71 @@
 ; 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  ->   r5         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T06] ( 18,1118   )     ref  ->   r6         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T08] ( 13,1139   )     ref  ->   r6         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T05] ( 18,1118   )     ref  ->   r5         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T04] (  8,1328   )     ref  ->   r9         class-hnd <<unknown class>>
 ;  V03 loc1         [V03    ] (  3,  24   )  struct ( 8) [sp+0x14]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;  V04 loc2         [V04    ] (  4,1296   )  struct ( 8) [sp+0x0C]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct ( 8) zero-ref    multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T07] (  9,1216   )     ref  ->   r9         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T06] (  9,1216   )     ref  ->   r9         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T09] (  5, 896   )     ref  ->   r4         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   )     int  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T32] (  3,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T28] (  3,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V13 tmp5         [V13,T20] (  3, 192   )     ref  ->   r9         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V13 tmp5         [V13,T16] (  3, 192   )     ref  ->   r9         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V14 tmp6         [V14    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V15 tmp7         [V15    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
-;  V16 tmp8         [V16,T29] (  4,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V17 tmp9         [V17,T37] (  3,  32.18)     int  ->  r10         "non-inline candidate call"
+;  V16 tmp8         [V16,T25] (  4,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T33] (  3,  32.18)     int  ->  r10         "non-inline candidate call"
 ;  V18 tmp10        [V18    ] (  2,  32   )  struct ( 8) [sp+0x04]  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  ->   r4         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V20 tmp12        [V20,T42] (  4,  20   )     int  ->   r9         "Inline stloc first use temp"
-;  V21 tmp13        [V21,T43] (  3,  18   )     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V22 tmp14        [V22,T44] (  3,  16   )     int  ->   r0         "Inline return value spill temp"
-;  V23 tmp15        [V23,T33] (  3,  47.82)     int  ->   r0         "Inlining Arg"
-;  V24 tmp16        [V24,T22] (  7, 160   )     ref  ->   r6         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V25 tmp17        [V25,T30] (  4,  48   )     int  ->   r4         "Inline stloc first use temp"
-;  V26 tmp18        [V26,T35] (  3,  40   )     ref  ->   r0         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T24] (  7,  64   )     ref  ->   r4         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V20 tmp12        [V20,T38] (  4,  20   )     int  ->   r9         "Inline stloc first use temp"
+;  V21 tmp13        [V21,T39] (  3,  18   )     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V22 tmp14        [V22,T40] (  3,  16   )     int  ->   r0         "Inline return value spill temp"
+;  V23 tmp15        [V23,T29] (  3,  47.82)     int  ->   r0         "Inlining Arg"
+;  V24 tmp16        [V24,T18] (  7, 160   )     ref  ->   r5         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V25 tmp17        [V25,T26] (  4,  48   )     int  ->   r4         "Inline stloc first use temp"
+;  V26 tmp18        [V26,T31] (  3,  40   )     ref  ->   r0         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V27 tmp19        [V27    ] (  0,   0   )  struct ( 8) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V28 tmp20        [V28,T18] (  3, 256   )     int  ->   r0         "Inline return value spill temp"
-;  V29 tmp21        [V29,T16] (  3, 514.88)     int  ->   r3         "Inlining Arg"
+;  V28 tmp20        [V28,T15] (  3, 256   )     int  ->   r0         "Inline return value spill temp"
+;  V29 tmp21        [V29,T13] (  3, 514.88)     int  ->   r3         "Inlining Arg"
 ;  V30 tmp22        [V30,T10] (  3, 765.12)     int  ->   r0         "Inlining Arg"
-;  V31 tmp23        [V31,T13] (  3, 628.79)     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V31 tmp23        [V31,T12] (  3, 628.79)     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V32 tmp24        [V32,T11] (  4, 745.57)     int  ->   r1         "Inline stloc first use temp"
-;  V33 tmp25        [V33,T17] (  7, 384   )     ref  ->   r0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V34 tmp26        [V34,T27] (  3,  93.20)     ref  ->   r1         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V35 tmp27        [V35,T26] (  4, 122.39)     int  ->   r2         "Inline stloc first use temp"
+;  V33 tmp25        [V33,T14] (  7, 384   )     ref  ->   r0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V34 tmp26        [V34,T23] (  3,  93.20)     ref  ->   r1         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V35 tmp27        [V35,T22] (  4, 122.39)     int  ->   r2         "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  ->  [sp+0x14]  do-not-enreg[X] addr-exposed "field V03.Vertex (fldOffset=0x0)" P-DEP
 ;  V38 tmp30        [V38    ] (  2,  16   )     ref  ->  [sp+0x18]  do-not-enreg[X] addr-exposed "field V03.EdgeEnumeratorPosition (fldOffset=0x4)" P-DEP
 ;  V39 tmp31        [V39    ] (  4,1296   )     ref  ->  [sp+0x0C]  do-not-enreg[X] addr-exposed "field V04.Destination (fldOffset=0x0)" P-DEP
 ;  V40 tmp32        [V40    ] (  1, 512   )   ubyte  ->  [sp+0x10]  do-not-enreg[X] addr-exposed "field V04.Flagged (fldOffset=0x4)" P-DEP
-;  V41 tmp33        [V41,T39] (  3,  32   )     ref  ->   r1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V42 tmp34        [V42,T40] (  3,  32   )     ref  ->   r2         "field V05.EdgeEnumeratorPosition (fldOffset=0x4)" P-INDEP
-;  V43 tmp35        [V43,T41] (  2,  24   )     ref  ->  [sp+0x04]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
-;  V44 tmp36        [V44,T45] (  1,  16   )   ubyte  ->  [sp+0x08]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x4)" P-DEP
+;  V41 tmp33        [V41,T35] (  3,  32   )     ref  ->   r1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V42 tmp34        [V42,T36] (  3,  32   )     ref  ->   r2         "field V05.EdgeEnumeratorPosition (fldOffset=0x4)" P-INDEP
+;  V43 tmp35        [V43,T37] (  2,  24   )     ref  ->  [sp+0x04]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
+;  V44 tmp36        [V44,T41] (  1,  16   )   ubyte  ->  [sp+0x08]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x4)" 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=0x4)" P-INDEP
-;  V47 tmp39        [V47,T31] (  3,  48   )   byref  ->   r9         "BlockOp address local"
-;  V48 cse0         [V48,T47] (  2,   9   )     int  ->   r8         hoist "CSE - moderate"
-;  V49 cse1         [V49,T08] (  3,1152   )     int  ->   r0         "CSE - aggressive"
-;  V50 cse2         [V50,T38] (  4,  32   )     int  ->   r0         "CSE - moderate"
-;  V51 cse3         [V51,T46] (  4,  12.88)     int  ->   r7         hoist "CSE - moderate"
-;  V52 rat0         [V52,T49] (  3,   4.72)     int  ->   r0         "Spilling to split statement for tree"
-;  V53 rat1         [V53,T51] (  3,   4   )     int  ->   r8         "runtime lookup"
-;  V54 rat2         [V54,T48] (  3,   5.60)     int  ->   r1         "spilling expr"
-;  V55 rat3         [V55,T50] (  3,   4.48)     int  ->   r8         "fgMakeTemp is creating a new local variable"
-;  V56 rat4         [V56,T34] (  3,  44.80)     int  ->   r0         "spilling expr"
-;  V57 rat5         [V57,T36] (  3,  35.84)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;  V58 rat6         [V58,T14] (  2, 512   )     int  ->   r0         "Spilling to split statement for tree"
-;* V59 rat7         [V59,T19] (  0,   0   )     int  ->  zero-ref    "runtime lookup"
-;  V60 rat8         [V60,T12] (  2, 512   )     int  ->   r0         "spilling expr"
-;* V61 rat9         [V61,T15] (  0,   0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V62 rat10        [V62,T02] (  3,2416.64)     int  ->   r0         "Spilling to split statement for tree"
-;  V63 rat11        [V63,T01] (  3,2867.20)     int  ->   r1         "spilling expr"
-;  V64 rat12        [V64,T03] (  3,2293.76)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;  V65 rat13        [V65,T23] (  3, 151.04)     int  ->   r0         "Spilling to split statement for tree"
-;  V66 rat14        [V66,T25] (  3, 128   )     int  ->   r1         "runtime lookup"
-;  V67 rat15        [V67,T21] (  3, 179.20)     int  ->   r1         "spilling expr"
-;  V68 rat16        [V68,T24] (  3, 143.36)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V47 tmp39        [V47,T27] (  3,  48   )   byref  ->   r9         "BlockOp address local"
+;  V48 cse0         [V48,T43] (  2,   9   )     int  ->   r8         hoist "CSE - moderate"
+;  V49 cse1         [V49,T07] (  3,1152   )     int  ->   r0         "CSE - aggressive"
+;  V50 cse2         [V50,T34] (  4,  32   )     int  ->   r0         "CSE - moderate"
+;  V51 cse3         [V51,T42] (  4,  12.88)     int  ->   r7         "CSE - moderate"
+;  V52 rat0         [V52,T45] (  3,   4.72)     int  ->   r0         "Spilling to split statement for tree"
+;  V53 rat1         [V53,T47] (  3,   4   )     int  ->   r8         "runtime lookup"
+;  V54 rat2         [V54,T44] (  3,   5.60)     int  ->   r1         "spilling expr"
+;  V55 rat3         [V55,T46] (  3,   4.48)     int  ->   r8         "fgMakeTemp is creating a new local variable"
+;  V56 rat4         [V56,T30] (  3,  44.80)     int  ->   r0         "spilling expr"
+;  V57 rat5         [V57,T32] (  3,  35.84)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V58 rat6         [V58,T02] (  3,2416.64)     int  ->   r0         "Spilling to split statement for tree"
+;  V59 rat7         [V59,T01] (  3,2867.20)     int  ->   r1         "spilling expr"
+;  V60 rat8         [V60,T03] (  3,2293.76)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V61 rat9         [V61,T19] (  3, 151.04)     int  ->   r0         "Spilling to split statement for tree"
+;  V62 rat10        [V62,T21] (  3, 128   )     int  ->   r1         "runtime lookup"
+;  V63 rat11        [V63,T17] (  3, 179.20)     int  ->   r1         "spilling expr"
+;  V64 rat12        [V64,T20] (  3, 143.36)     int  ->   r1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 36
 
@@ -91,13 +87,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stm     r4!, {r2,r3}
             stm     r4!, {r2,r3}
             str     r0, [r11-0x24]
-            mov     r5, r0
-            ; gcrRegs +[r5]
-            mov     r6, r1
+            mov     r6, r0
             ; gcrRegs +[r6]
+            mov     r5, r1
+            ; gcrRegs +[r5]
                        ;; size=32 bbWeight=1 PerfScore 12.00
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r7, [r5]
+            ldr     r7, [r6]
             mov     r0, r7
             ldr     r1, [r0+0x24]
             ldr     r1, [r1]
@@ -123,12 +119,12 @@ G_M1799_IG05:        ; bbWeight=0.36, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {},
             mov     r8, r0
                        ;; size=20 bbWeight=0.36 PerfScore 2.16
 G_M1799_IG06:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5+0x14]
-            str     r0, [r6+0x0C]
-            str     r0, [r6+0x10]
+            ldr     r0, [r6+0x14]
+            str     r0, [r5+0x0C]
+            str     r0, [r5+0x10]
             adds    r0, r0, 1
-            str     r0, [r5+0x14]
-            ldr     r4, [r5+0x04]
+            str     r0, [r6+0x14]
+            ldr     r4, [r6+0x04]
             ; gcrRegs +[r4]
             ldr     r9, [r4+0x08]
             ldr     r0, [r4+0x04]
@@ -139,7 +135,7 @@ G_M1799_IG06:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
                        ;; size=24 bbWeight=8 PerfScore 88.00
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             mov     r1, r9
-            mov     r2, r6
+            mov     r2, r5
             ; gcrRegs +[r2]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -156,7 +152,7 @@ G_M1799_IG07:        ; bbWeight=2, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000
 G_M1799_IG08:        ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r4
             ; gcrRegs +[r0]
-            mov     r1, r6
+            mov     r1, r5
             ; gcrRegs +[r1]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -167,9 +163,9 @@ G_M1799_IG08:        ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {},
                        ;; size=16 bbWeight=2 PerfScore 12.00
 G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             movs    r0, 1
-            strb    r0, [r6+0x16]
+            strb    r0, [r5+0x16]
             mov     r4, r8
-            ldr     r0, [r6+0x08]
+            ldr     r0, [r5+0x08]
             ; gcrRegs +[r0]
             ldr     r3, [r4]
             blx     r3
@@ -179,9 +175,9 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
             cmp     r9, 0
             bne     SHORT G_M1799_IG17
                        ;; size=20 bbWeight=8 PerfScore 72.00
-G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r0 r6 r9]
-            ldr     r0, [r5+0x10]
+G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r0 r5 r9]
+            ldr     r0, [r6+0x10]
             ; gcrRegs +[r0]
             add     r1, sp, 20
             movw    r3, 0xd1ff
@@ -191,8 +187,8 @@ G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             blx     r3     // System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
             ; gcrRegs -[r0]
             ; gcr arg pop 0
-            ldr     r6, [sp+0x14]
-            ; gcrRegs +[r6]
+            ldr     r5, [sp+0x14]
+            ; gcrRegs +[r5]
             ldr     r9, [sp+0x18]
             ; gcrRegs +[r9]
             ldr     r0, [r7+0x24]
@@ -207,7 +203,7 @@ G_M1799_IG11:        ; bbWeight=6.40, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
             beq     SHORT G_M1799_IG14
                        ;; size=6 bbWeight=6.40 PerfScore 19.20
 G_M1799_IG12:        ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r10, [r6+0x10]
+            ldr     r10, [r5+0x10]
             add     r1, sp, 4
             mov     r0, r9
             ; gcrRegs +[r0]
@@ -240,7 +236,7 @@ G_M1799_IG15:        ; bbWeight=0.09, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
             mov     r0, r10
                        ;; size=2 bbWeight=0.09 PerfScore 0.09
 G_M1799_IG16:        ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref
-            str     r0, [r6+0x10]
+            str     r0, [r5+0x10]
                        ;; size=2 bbWeight=8 PerfScore 8.00
 G_M1799_IG17:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
             mov     r0, r9
@@ -252,33 +248,25 @@ G_M1799_IG17:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M1799_IG30
+            beq     SHORT G_M1799_IG29
                        ;; size=18 bbWeight=512 PerfScore 3584.00
-G_M1799_IG18:        ; bbWeight=128, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5]
-            ldr     r0, [r0+0x24]
-            ldr     r0, [r0]
-            ldr     r0, [r0+0x04]
-            cmp     r0, 24
-            ble     SHORT G_M1799_IG19
-                       ;; size=12 bbWeight=128 PerfScore 768.00
-G_M1799_IG19:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5]
+G_M1799_IG18:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
+            ldr     r0, [r6]
             ldr     r1, [r0+0x24]
             ldr     r1, [r1]
             ldr     r3, [r1+0x04]
             cmp     r3, 24
...

-12 (-1.72%) : 463304.dasm - ILCompiler.LazyGenericsSupport+Graph1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph1+Vertex[System.__Canon]):this (FullOpts)

@@ -8,75 +8,71 @@
 ; 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  ->   r5         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T06] ( 18,1118   )     ref  ->   r6         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T08] ( 13,1139   )     ref  ->   r6         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T05] ( 18,1118   )     ref  ->   r5         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T04] (  8,1328   )     ref  ->   r9         class-hnd <<unknown class>>
 ;  V03 loc1         [V03    ] (  3,  24   )  struct ( 8) [sp+0x14]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;  V04 loc2         [V04    ] (  4,1296   )  struct ( 8) [sp+0x0C]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct ( 8) zero-ref    multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T07] (  9,1216   )     ref  ->   r9         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T06] (  9,1216   )     ref  ->   r9         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T09] (  5, 896   )     ref  ->   r4         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   )     int  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T32] (  3,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T28] (  3,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V13 tmp5         [V13,T20] (  3, 192   )     ref  ->   r9         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V13 tmp5         [V13,T16] (  3, 192   )     ref  ->   r9         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V14 tmp6         [V14    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V15 tmp7         [V15    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
-;  V16 tmp8         [V16,T29] (  4,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V17 tmp9         [V17,T34] (  3,  43.88)     int  ->  r10         "non-inline candidate call"
+;  V16 tmp8         [V16,T25] (  4,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T30] (  3,  43.88)     int  ->  r10         "non-inline candidate call"
 ;  V18 tmp10        [V18    ] (  2,  32   )  struct ( 8) [sp+0x04]  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  ->   r4         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V20 tmp12        [V20,T42] (  4,  20   )     int  ->   r9         "Inline stloc first use temp"
-;  V21 tmp13        [V21,T43] (  3,  18   )     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V22 tmp14        [V22,T44] (  3,  16   )     int  ->   r0         "Inline return value spill temp"
-;  V23 tmp15        [V23,T36] (  3,  36.12)     int  ->   r0         "Inlining Arg"
-;  V24 tmp16        [V24,T22] (  7, 160   )     ref  ->   r6         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V25 tmp17        [V25,T30] (  4,  48   )     int  ->   r4         "Inline stloc first use temp"
-;  V26 tmp18        [V26,T35] (  3,  40   )     ref  ->   r0         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T24] (  7,  64   )     ref  ->   r4         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V20 tmp12        [V20,T38] (  4,  20   )     int  ->   r9         "Inline stloc first use temp"
+;  V21 tmp13        [V21,T39] (  3,  18   )     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V22 tmp14        [V22,T40] (  3,  16   )     int  ->   r0         "Inline return value spill temp"
+;  V23 tmp15        [V23,T32] (  3,  36.12)     int  ->   r0         "Inlining Arg"
+;  V24 tmp16        [V24,T18] (  7, 160   )     ref  ->   r5         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V25 tmp17        [V25,T26] (  4,  48   )     int  ->   r4         "Inline stloc first use temp"
+;  V26 tmp18        [V26,T31] (  3,  40   )     ref  ->   r0         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V27 tmp19        [V27    ] (  0,   0   )  struct ( 8) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V28 tmp20        [V28,T18] (  3, 256   )     int  ->   r0         "Inline return value spill temp"
-;  V29 tmp21        [V29,T12] (  3, 702.09)     int  ->   r3         "Inlining Arg"
-;  V30 tmp22        [V30,T15] (  3, 577.91)     int  ->   r0         "Inlining Arg"
-;  V31 tmp23        [V31,T13] (  3, 628.79)     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V28 tmp20        [V28,T15] (  3, 256   )     int  ->   r0         "Inline return value spill temp"
+;  V29 tmp21        [V29,T11] (  3, 702.09)     int  ->   r3         "Inlining Arg"
+;  V30 tmp22        [V30,T13] (  3, 577.91)     int  ->   r0         "Inlining Arg"
+;  V31 tmp23        [V31,T12] (  3, 628.79)     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V32 tmp24        [V32,T10] (  4, 745.57)     int  ->   r1         "Inline stloc first use temp"
-;  V33 tmp25        [V33,T17] (  7, 384   )     ref  ->   r0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V34 tmp26        [V34,T27] (  3,  93.20)     ref  ->   r1         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V35 tmp27        [V35,T26] (  4, 122.39)     int  ->   r2         "Inline stloc first use temp"
+;  V33 tmp25        [V33,T14] (  7, 384   )     ref  ->   r0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V34 tmp26        [V34,T23] (  3,  93.20)     ref  ->   r1         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V35 tmp27        [V35,T22] (  4, 122.39)     int  ->   r2         "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  ->  [sp+0x14]  do-not-enreg[X] addr-exposed "field V03.Vertex (fldOffset=0x0)" P-DEP
 ;  V38 tmp30        [V38    ] (  2,  16   )     ref  ->  [sp+0x18]  do-not-enreg[X] addr-exposed "field V03.EdgeEnumeratorPosition (fldOffset=0x4)" P-DEP
 ;  V39 tmp31        [V39    ] (  4,1296   )     ref  ->  [sp+0x0C]  do-not-enreg[X] addr-exposed "field V04.Destination (fldOffset=0x0)" P-DEP
 ;  V40 tmp32        [V40    ] (  1, 512   )   ubyte  ->  [sp+0x10]  do-not-enreg[X] addr-exposed "field V04.Flagged (fldOffset=0x4)" P-DEP
-;  V41 tmp33        [V41,T39] (  3,  32   )     ref  ->   r1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V42 tmp34        [V42,T40] (  3,  32   )     ref  ->   r2         "field V05.EdgeEnumeratorPosition (fldOffset=0x4)" P-INDEP
-;  V43 tmp35        [V43,T41] (  2,  24   )     ref  ->  [sp+0x04]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
-;  V44 tmp36        [V44,T45] (  1,  16   )   ubyte  ->  [sp+0x08]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x4)" P-DEP
+;  V41 tmp33        [V41,T35] (  3,  32   )     ref  ->   r1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V42 tmp34        [V42,T36] (  3,  32   )     ref  ->   r2         "field V05.EdgeEnumeratorPosition (fldOffset=0x4)" P-INDEP
+;  V43 tmp35        [V43,T37] (  2,  24   )     ref  ->  [sp+0x04]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
+;  V44 tmp36        [V44,T41] (  1,  16   )   ubyte  ->  [sp+0x08]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x4)" 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=0x4)" P-INDEP
-;  V47 tmp39        [V47,T31] (  3,  48   )   byref  ->   r9         "BlockOp address local"
-;  V48 cse0         [V48,T47] (  2,   9   )     int  ->   r8         hoist "CSE - moderate"
-;  V49 cse1         [V49,T08] (  3,1152   )     int  ->   r0         "CSE - aggressive"
-;  V50 cse2         [V50,T38] (  4,  32   )     int  ->   r0         "CSE - moderate"
-;  V51 cse3         [V51,T46] (  4,  12.88)     int  ->   r7         hoist "CSE - moderate"
-;  V52 rat0         [V52,T49] (  3,   4.72)     int  ->   r0         "Spilling to split statement for tree"
-;  V53 rat1         [V53,T51] (  3,   4   )     int  ->   r8         "runtime lookup"
-;  V54 rat2         [V54,T48] (  3,   5.60)     int  ->   r1         "spilling expr"
-;  V55 rat3         [V55,T50] (  3,   4.48)     int  ->   r8         "fgMakeTemp is creating a new local variable"
-;  V56 rat4         [V56,T33] (  3,  44.80)     int  ->   r0         "spilling expr"
-;  V57 rat5         [V57,T37] (  3,  35.84)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;  V58 rat6         [V58,T14] (  2, 512   )     int  ->   r0         "Spilling to split statement for tree"
-;* V59 rat7         [V59,T19] (  0,   0   )     int  ->  zero-ref    "runtime lookup"
-;  V60 rat8         [V60,T11] (  2, 512   )     int  ->   r0         "spilling expr"
-;* V61 rat9         [V61,T16] (  0,   0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V62 rat10        [V62,T02] (  3,2416.64)     int  ->   r0         "Spilling to split statement for tree"
-;  V63 rat11        [V63,T01] (  3,2867.20)     int  ->   r1         "spilling expr"
-;  V64 rat12        [V64,T03] (  3,2293.76)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;  V65 rat13        [V65,T23] (  3, 151.04)     int  ->   r0         "Spilling to split statement for tree"
-;  V66 rat14        [V66,T25] (  3, 128   )     int  ->   r1         "runtime lookup"
-;  V67 rat15        [V67,T21] (  3, 179.20)     int  ->   r1         "spilling expr"
-;  V68 rat16        [V68,T24] (  3, 143.36)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V47 tmp39        [V47,T27] (  3,  48   )   byref  ->   r9         "BlockOp address local"
+;  V48 cse0         [V48,T43] (  2,   9   )     int  ->   r8         hoist "CSE - moderate"
+;  V49 cse1         [V49,T07] (  3,1152   )     int  ->   r0         "CSE - aggressive"
+;  V50 cse2         [V50,T34] (  4,  32   )     int  ->   r0         "CSE - moderate"
+;  V51 cse3         [V51,T42] (  4,  12.88)     int  ->   r7         "CSE - moderate"
+;  V52 rat0         [V52,T45] (  3,   4.72)     int  ->   r0         "Spilling to split statement for tree"
+;  V53 rat1         [V53,T47] (  3,   4   )     int  ->   r8         "runtime lookup"
+;  V54 rat2         [V54,T44] (  3,   5.60)     int  ->   r1         "spilling expr"
+;  V55 rat3         [V55,T46] (  3,   4.48)     int  ->   r8         "fgMakeTemp is creating a new local variable"
+;  V56 rat4         [V56,T29] (  3,  44.80)     int  ->   r0         "spilling expr"
+;  V57 rat5         [V57,T33] (  3,  35.84)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V58 rat6         [V58,T02] (  3,2416.64)     int  ->   r0         "Spilling to split statement for tree"
+;  V59 rat7         [V59,T01] (  3,2867.20)     int  ->   r1         "spilling expr"
+;  V60 rat8         [V60,T03] (  3,2293.76)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V61 rat9         [V61,T19] (  3, 151.04)     int  ->   r0         "Spilling to split statement for tree"
+;  V62 rat10        [V62,T21] (  3, 128   )     int  ->   r1         "runtime lookup"
+;  V63 rat11        [V63,T17] (  3, 179.20)     int  ->   r1         "spilling expr"
+;  V64 rat12        [V64,T20] (  3, 143.36)     int  ->   r1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 36
 
@@ -91,13 +87,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stm     r4!, {r2,r3}
             stm     r4!, {r2,r3}
             str     r0, [r11-0x24]
-            mov     r5, r0
-            ; gcrRegs +[r5]
-            mov     r6, r1
+            mov     r6, r0
             ; gcrRegs +[r6]
+            mov     r5, r1
+            ; gcrRegs +[r5]
                        ;; size=32 bbWeight=1 PerfScore 12.00
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r7, [r5]
+            ldr     r7, [r6]
             mov     r0, r7
             ldr     r1, [r0+0x24]
             ldr     r1, [r1]
@@ -123,12 +119,12 @@ G_M1799_IG05:        ; bbWeight=0.36, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {},
             mov     r8, r0
                        ;; size=20 bbWeight=0.36 PerfScore 2.16
 G_M1799_IG06:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5+0x14]
-            str     r0, [r6+0x0C]
-            str     r0, [r6+0x10]
+            ldr     r0, [r6+0x14]
+            str     r0, [r5+0x0C]
+            str     r0, [r5+0x10]
             adds    r0, r0, 1
-            str     r0, [r5+0x14]
-            ldr     r4, [r5+0x04]
+            str     r0, [r6+0x14]
+            ldr     r4, [r6+0x04]
             ; gcrRegs +[r4]
             ldr     r9, [r4+0x08]
             ldr     r0, [r4+0x04]
@@ -139,7 +135,7 @@ G_M1799_IG06:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
                        ;; size=24 bbWeight=8 PerfScore 88.00
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             mov     r1, r9
-            mov     r2, r6
+            mov     r2, r5
             ; gcrRegs +[r2]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -156,7 +152,7 @@ G_M1799_IG07:        ; bbWeight=2, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000
 G_M1799_IG08:        ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r4
             ; gcrRegs +[r0]
-            mov     r1, r6
+            mov     r1, r5
             ; gcrRegs +[r1]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -167,9 +163,9 @@ G_M1799_IG08:        ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {},
                        ;; size=16 bbWeight=2 PerfScore 12.00
 G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             movs    r0, 1
-            strb    r0, [r6+0x16]
+            strb    r0, [r5+0x16]
             mov     r4, r8
-            ldr     r0, [r6+0x08]
+            ldr     r0, [r5+0x08]
             ; gcrRegs +[r0]
             ldr     r3, [r4]
             blx     r3
@@ -179,9 +175,9 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
             cmp     r9, 0
             bne     SHORT G_M1799_IG17
                        ;; size=20 bbWeight=8 PerfScore 72.00
-G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r0 r6 r9]
-            ldr     r0, [r5+0x10]
+G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r0 r5 r9]
+            ldr     r0, [r6+0x10]
             ; gcrRegs +[r0]
             add     r1, sp, 20
             movw    r3, 0xd1ff
@@ -191,8 +187,8 @@ G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             blx     r3     // System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
             ; gcrRegs -[r0]
             ; gcr arg pop 0
-            ldr     r6, [sp+0x14]
-            ; gcrRegs +[r6]
+            ldr     r5, [sp+0x14]
+            ; gcrRegs +[r5]
             ldr     r9, [sp+0x18]
             ; gcrRegs +[r9]
             ldr     r0, [r7+0x24]
@@ -207,7 +203,7 @@ G_M1799_IG11:        ; bbWeight=6.40, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
             beq     SHORT G_M1799_IG14
                        ;; size=6 bbWeight=6.40 PerfScore 19.20
 G_M1799_IG12:        ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r10, [r6+0x10]
+            ldr     r10, [r5+0x10]
             add     r1, sp, 4
             mov     r0, r9
             ; gcrRegs +[r0]
@@ -240,7 +236,7 @@ G_M1799_IG15:        ; bbWeight=5.94, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
             mov     r0, r10
                        ;; size=2 bbWeight=5.94 PerfScore 5.94
 G_M1799_IG16:        ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref
-            str     r0, [r6+0x10]
+            str     r0, [r5+0x10]
                        ;; size=2 bbWeight=8 PerfScore 8.00
 G_M1799_IG17:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
             mov     r0, r9
@@ -252,33 +248,25 @@ G_M1799_IG17:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M1799_IG30
+            beq     SHORT G_M1799_IG29
                        ;; size=18 bbWeight=512 PerfScore 3584.00
-G_M1799_IG18:        ; bbWeight=128, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5]
-            ldr     r0, [r0+0x24]
-            ldr     r0, [r0]
-            ldr     r0, [r0+0x04]
-            cmp     r0, 24
-            ble     SHORT G_M1799_IG19
-                       ;; size=12 bbWeight=128 PerfScore 768.00
-G_M1799_IG19:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5]
+G_M1799_IG18:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
+            ldr     r0, [r6]
             ldr     r1, [r0+0x24]
             ldr     r1, [r1]
             ldr     r3, [r1+0x04]
...

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

@@ -23,11 +23,11 @@
 ;  V12 loc9         [V12,T14] (  4, 14   )   byref  ->  [sp+0x04]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [sp+0x48] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [sp+0x00]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->   r9         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->   r9         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T70] (  3,  1.50)     int  ->  r10        
+;  V19 tmp3         [V19,T66] (  3,  1.50)     int  ->  r10        
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   r0         single-def "dup spill"
-;  V27 tmp11        [V27,T64] (  3,  2   )     int  ->   r1         "spilling helperCall"
-;  V28 tmp12        [V28,T71] (  3,  1.50)     int  ->  r10        
+;  V27 tmp11        [V27,T60] (  3,  2   )     int  ->   r1         "spilling helperCall"
+;  V28 tmp12        [V28,T67] (  3,  1.50)     int  ->  r10        
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   r0         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,T101] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T95] (  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,T102] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct ( 8) 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  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   r0         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,T103] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T97] (  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,T104] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct ( 8) 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,17 +68,17 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   r0         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,T105] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T99] (  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,T106] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V65 tmp49        [V65,T80] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T83] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
-;  V67 tmp51        [V67,T81] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T84] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
-;  V69 tmp53        [V69,T82] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T85] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
+;  V65 tmp49        [V65,T76] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T79] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
+;  V67 tmp51        [V67,T77] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T80] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
+;  V69 tmp53        [V69,T78] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T81] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V71 tmp55        [V71    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->   r0         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->   r1         "index expr"
@@ -87,73 +87,67 @@
 ;  V76 tmp60        [V76,T47] (  3,  3   )     int  ->   r1         "index expr"
 ;  V77 tmp61        [V77,T12] (  2, 16   )     int  ->   r1         "argument with side effect"
 ;  V78 tmp62        [V78,T13] (  2, 16   )     int  ->   r1         "argument with side effect"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->   r1         "argument with side effect"
 ;* V80 tmp64        [V80    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V81 tmp65        [V81,T48] (  3,  3   )     int  ->   r0         "index expr"
 ;  V82 tmp66        [V82,T49] (  3,  3   )     int  ->   r1         "index expr"
-;  V83 tmp67        [V83,T68] (  2,  2   )     int  ->   r1         "argument with side effect"
-;  V84 cse0         [V84,T72] (  3,  1.50)     int  ->   r0         "CSE - conservative"
-;  V85 cse1         [V85,T73] (  3,  1.50)     int  ->   r8         "CSE - conservative"
-;  V86 rat0         [V86,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V87 rat1         [V87,T65] (  3,  2   )     int  ->   r1         "runtime lookup"
+;  V83 tmp67        [V83,T64] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V84 cse0         [V84,T68] (  3,  1.50)     int  ->   r0         "CSE - conservative"
+;  V85 cse1         [V85,T69] (  3,  1.50)     int  ->   r8         "CSE - conservative"
+;  V86 rat0         [V86,T55] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V87 rat1         [V87,T61] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V88 rat2         [V88,T50] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V89 rat3         [V89,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V90 rat4         [V90,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V91 rat5         [V91,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V92 rat6         [V92,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V93 rat7         [V93,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V94 rat8         [V94,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V95 rat9         [V95,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V96 rat10        [V96,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V97 rat11        [V97,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V98 rat12        [V98,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V99 rat13        [V99,T52] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;* V100 rat14       [V100,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V101 rat15       [V101,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V102 rat16       [V102,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V103 rat17       [V103,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V104 rat18       [V104,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V105 rat19       [V105,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V106 rat20       [V106,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V107 rat21       [V107,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V108 rat22       [V108,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V109 rat23       [V109,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V110 rat24       [V110,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V111 rat25       [V111,T61] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V89 rat3         [V89,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V90 rat4         [V90,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V91 rat5         [V91,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V92 rat6         [V92,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V93 rat7         [V93,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V94 rat8         [V94,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V95 rat9         [V95,T56] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V96 rat10        [V96,T51] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V97 rat11        [V97,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V98 rat12        [V98,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V99 rat13        [V99,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V100 rat14       [V100,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V101 rat15       [V101,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V102 rat16       [V102,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V103 rat17       [V103,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V104 rat18       [V104,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V105 rat19       [V105,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V106 rat20       [V106,T52] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V107 rat21       [V107,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V108 rat22       [V108,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V109 rat23       [V109,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V110 rat24       [V110,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V111 rat25       [V111,T62] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V112 rat26       [V112,T54] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V113 rat27       [V113,T62] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V114 rat28       [V114,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V115 rat29       [V115,T55] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat30       [V116,T63] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V117 rat31       [V117,T66] (  3,  2   )     int  ->   r1         "runtime lookup"
-;  V118 rat32       [V118,T56] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V119 rat33       [V119,T89] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
-;  V120 rat34       [V120,T90] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
-;  V121 rat35       [V121,T91] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
-;  V122 rat36       [V122,T92] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
-;  V123 rat37       [V123,T93] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
-;  V124 rat38       [V124,T94] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
-;  V125 rat39       [V125,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat40       [V126    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat41       [V127,T95] (  1,  1   )     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat42       [V128,T74] (  2,  1.50)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat43       [V129    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat44       [V130,T96] (  1,  1   )     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat45       [V131,T75] (  2,  1.50)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat46       [V132,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat47       [V133    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat48       [V134,T97] (  1,  1   )     int  ->   r0         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat49       [V135,T76] (  2,  1.50)     int  ->   r1         "field V133.hi (fldOffset=0x4)" P-INDEP
-;  V136 rat50       [V136    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat51       [V137,T98] (  1,  1   )     int  ->   r0         "field V136.lo (fldOffset=0x0)" P-INDEP
-;  V138 rat52       [V138,T77] (  2,  1.50)     int  ->   r1         "field V136.hi (fldOffset=0x4)" P-INDEP
-;  V139 rat53       [V139,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V140 rat54       [V140    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V141 rat55       [V141,T99] (  1,  1   )     int  ->   r0         "field V140.lo (fldOffset=0x0)" P-INDEP
-;  V142 rat56       [V142,T78] (  2,  1.50)     int  ->   r1         "field V140.hi (fldOffset=0x4)" P-INDEP
-;  V143 rat57       [V143    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V144 rat58       [V144,T100] (  1,  1   )     int  ->   r0         "field V143.lo (fldOffset=0x0)" P-INDEP
-;  V145 rat59       [V145,T79] (  2,  1.50)     int  ->   r1         "field V143.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat27       [V113,T83] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
+;  V114 rat28       [V114,T84] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
+;  V115 rat29       [V115,T85] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
+;  V116 rat30       [V116,T86] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
+;  V117 rat31       [V117,T87] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
+;  V118 rat32       [V118,T88] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
+;  V119 rat33       [V119,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat34       [V120    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat35       [V121,T89] (  1,  1   )     int  ->   r0         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat36       [V122,T70] (  2,  1.50)     int  ->   r1         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat37       [V123    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat38       [V124,T90] (  1,  1   )     int  ->   r0         "field V123.lo (fldOffset=0x0)" P-INDEP
+;  V125 rat39       [V125,T71] (  2,  1.50)     int  ->   r1         "field V123.hi (fldOffset=0x4)" P-INDEP
+;  V126 rat40       [V126,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat41       [V127    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat42       [V128,T91] (  1,  1   )     int  ->   r0         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat43       [V129,T72] (  2,  1.50)     int  ->   r1         "field V127.hi (fldOffset=0x4)" P-INDEP
+;  V130 rat44       [V130    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V131 rat45       [V131,T92] (  1,  1   )     int  ->   r0         "field V130.lo (fldOffset=0x0)" P-INDEP
+;  V132 rat46       [V132,T73] (  2,  1.50)     int  ->   r1         "field V130.hi (fldOffset=0x4)" P-INDEP
+;  V133 rat47       [V133,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V134 rat48       [V134    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V135 rat49       [V135,T93] (  1,  1   )     int  ->   r0         "field V134.lo (fldOffset=0x0)" P-INDEP
+;  V136 rat50       [V136,T74] (  2,  1.50)     int  ->   r1         "field V134.hi (fldOffset=0x4)" P-INDEP
+;  V137 rat51       [V137    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat52       [V138,T94] (  1,  1   )     int  ->   r0         "field V137.lo (fldOffset=0x0)" P-INDEP
+;  V139 rat53       [V139,T75] (  2,  1.50)     int  ->   r1         "field V137.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 92
 
@@ -483,8 +477,8 @@ G_M18379_IG29:        ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             subs    r3, r0, 1
             str     r3, [sp+0x48]  // [V13 loc10]
             cmp     r3, 0
-            blt     SHORT G_M18379_IG39
             ldr     r3, [sp+0x48]  // [V13 loc10]
+            blt     SHORT G_M18379_IG39
                        ;; size=64 bbWeight=0.50 PerfScore 13.00
 G_M18379_IG30:        ; bbWeight=4, gcVars=00000000000000000000000020000000 {V07}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz
             ; byrRegs -[r4]

+0 (0.00%) : 378247.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  ->  [sp+0x04]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [sp+0x48] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [sp+0x00]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->   r9         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->   r9         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T70] (  3,  1.50)     int  ->  r10        
+;  V19 tmp3         [V19,T66] (  3,  1.50)     int  ->  r10        
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   r0         single-def "dup spill"
-;  V27 tmp11        [V27,T64] (  3,  2   )     int  ->   r1         "spilling helperCall"
-;  V28 tmp12        [V28,T71] (  3,  1.50)     int  ->  r10        
+;  V27 tmp11        [V27,T60] (  3,  2   )     int  ->   r1         "spilling helperCall"
+;  V28 tmp12        [V28,T67] (  3,  1.50)     int  ->  r10        
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   r0         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,T101] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T95] (  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,T102] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct ( 8) 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  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   r0         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,T103] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T97] (  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,T104] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct ( 8) 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,17 +68,17 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   r0         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,T105] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T99] (  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,T106] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V65 tmp49        [V65,T80] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T83] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
-;  V67 tmp51        [V67,T81] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T84] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
-;  V69 tmp53        [V69,T82] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T85] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
+;  V65 tmp49        [V65,T76] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T79] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
+;  V67 tmp51        [V67,T77] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T80] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
+;  V69 tmp53        [V69,T78] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T81] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V71 tmp55        [V71    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->   r0         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->   r1         "index expr"
@@ -87,73 +87,67 @@
 ;  V76 tmp60        [V76,T47] (  3,  3   )     int  ->   r1         "index expr"
 ;  V77 tmp61        [V77,T12] (  2, 16   )     int  ->   r1         "argument with side effect"
 ;  V78 tmp62        [V78,T13] (  2, 16   )     int  ->   r1         "argument with side effect"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->   r1         "argument with side effect"
 ;* V80 tmp64        [V80    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V81 tmp65        [V81,T48] (  3,  3   )     int  ->   r0         "index expr"
 ;  V82 tmp66        [V82,T49] (  3,  3   )     int  ->   r1         "index expr"
-;  V83 tmp67        [V83,T68] (  2,  2   )     int  ->   r1         "argument with side effect"
-;  V84 cse0         [V84,T72] (  3,  1.50)     int  ->   r0         "CSE - conservative"
-;  V85 cse1         [V85,T73] (  3,  1.50)     int  ->   r8         "CSE - conservative"
-;  V86 rat0         [V86,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V87 rat1         [V87,T65] (  3,  2   )     int  ->   r1         "runtime lookup"
+;  V83 tmp67        [V83,T64] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V84 cse0         [V84,T68] (  3,  1.50)     int  ->   r0         "CSE - conservative"
+;  V85 cse1         [V85,T69] (  3,  1.50)     int  ->   r8         "CSE - conservative"
+;  V86 rat0         [V86,T55] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V87 rat1         [V87,T61] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V88 rat2         [V88,T50] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V89 rat3         [V89,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V90 rat4         [V90,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V91 rat5         [V91,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V92 rat6         [V92,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V93 rat7         [V93,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V94 rat8         [V94,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V95 rat9         [V95,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V96 rat10        [V96,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V97 rat11        [V97,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V98 rat12        [V98,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V99 rat13        [V99,T52] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;* V100 rat14       [V100,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V101 rat15       [V101,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V102 rat16       [V102,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V103 rat17       [V103,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V104 rat18       [V104,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V105 rat19       [V105,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V106 rat20       [V106,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V107 rat21       [V107,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V108 rat22       [V108,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V109 rat23       [V109,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V110 rat24       [V110,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V111 rat25       [V111,T61] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V89 rat3         [V89,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V90 rat4         [V90,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V91 rat5         [V91,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V92 rat6         [V92,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V93 rat7         [V93,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V94 rat8         [V94,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V95 rat9         [V95,T56] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V96 rat10        [V96,T51] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V97 rat11        [V97,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V98 rat12        [V98,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V99 rat13        [V99,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V100 rat14       [V100,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V101 rat15       [V101,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V102 rat16       [V102,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V103 rat17       [V103,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V104 rat18       [V104,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V105 rat19       [V105,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V106 rat20       [V106,T52] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V107 rat21       [V107,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V108 rat22       [V108,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V109 rat23       [V109,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V110 rat24       [V110,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V111 rat25       [V111,T62] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V112 rat26       [V112,T54] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V113 rat27       [V113,T62] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V114 rat28       [V114,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V115 rat29       [V115,T55] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat30       [V116,T63] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V117 rat31       [V117,T66] (  3,  2   )     int  ->   r1         "runtime lookup"
-;  V118 rat32       [V118,T56] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V119 rat33       [V119,T89] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
-;  V120 rat34       [V120,T90] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
-;  V121 rat35       [V121,T91] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
-;  V122 rat36       [V122,T92] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
-;  V123 rat37       [V123,T93] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
-;  V124 rat38       [V124,T94] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
-;  V125 rat39       [V125,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat40       [V126    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat41       [V127,T95] (  1,  1   )     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat42       [V128,T74] (  2,  1.50)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat43       [V129    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat44       [V130,T96] (  1,  1   )     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat45       [V131,T75] (  2,  1.50)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat46       [V132,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat47       [V133    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat48       [V134,T97] (  1,  1   )     int  ->   r0         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat49       [V135,T76] (  2,  1.50)     int  ->   r1         "field V133.hi (fldOffset=0x4)" P-INDEP
-;  V136 rat50       [V136    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat51       [V137,T98] (  1,  1   )     int  ->   r0         "field V136.lo (fldOffset=0x0)" P-INDEP
-;  V138 rat52       [V138,T77] (  2,  1.50)     int  ->   r1         "field V136.hi (fldOffset=0x4)" P-INDEP
-;  V139 rat53       [V139,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V140 rat54       [V140    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V141 rat55       [V141,T99] (  1,  1   )     int  ->   r0         "field V140.lo (fldOffset=0x0)" P-INDEP
-;  V142 rat56       [V142,T78] (  2,  1.50)     int  ->   r1         "field V140.hi (fldOffset=0x4)" P-INDEP
-;  V143 rat57       [V143    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V144 rat58       [V144,T100] (  1,  1   )     int  ->   r0         "field V143.lo (fldOffset=0x0)" P-INDEP
-;  V145 rat59       [V145,T79] (  2,  1.50)     int  ->   r1         "field V143.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat27       [V113,T83] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
+;  V114 rat28       [V114,T84] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
+;  V115 rat29       [V115,T85] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
+;  V116 rat30       [V116,T86] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
+;  V117 rat31       [V117,T87] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
+;  V118 rat32       [V118,T88] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
+;  V119 rat33       [V119,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat34       [V120    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat35       [V121,T89] (  1,  1   )     int  ->   r0         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat36       [V122,T70] (  2,  1.50)     int  ->   r1         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat37       [V123    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat38       [V124,T90] (  1,  1   )     int  ->   r0         "field V123.lo (fldOffset=0x0)" P-INDEP
+;  V125 rat39       [V125,T71] (  2,  1.50)     int  ->   r1         "field V123.hi (fldOffset=0x4)" P-INDEP
+;  V126 rat40       [V126,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat41       [V127    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat42       [V128,T91] (  1,  1   )     int  ->   r0         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat43       [V129,T72] (  2,  1.50)     int  ->   r1         "field V127.hi (fldOffset=0x4)" P-INDEP
+;  V130 rat44       [V130    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V131 rat45       [V131,T92] (  1,  1   )     int  ->   r0         "field V130.lo (fldOffset=0x0)" P-INDEP
+;  V132 rat46       [V132,T73] (  2,  1.50)     int  ->   r1         "field V130.hi (fldOffset=0x4)" P-INDEP
+;  V133 rat47       [V133,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V134 rat48       [V134    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V135 rat49       [V135,T93] (  1,  1   )     int  ->   r0         "field V134.lo (fldOffset=0x0)" P-INDEP
+;  V136 rat50       [V136,T74] (  2,  1.50)     int  ->   r1         "field V134.hi (fldOffset=0x4)" P-INDEP
+;  V137 rat51       [V137    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat52       [V138,T94] (  1,  1   )     int  ->   r0         "field V137.lo (fldOffset=0x0)" P-INDEP
+;  V139 rat53       [V139,T75] (  2,  1.50)     int  ->   r1         "field V137.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 92
 
@@ -483,8 +477,8 @@ G_M18379_IG29:        ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             subs    r3, r0, 1
             str     r3, [sp+0x48]  // [V13 loc10]
             cmp     r3, 0
-            blt     SHORT G_M18379_IG39
             ldr     r3, [sp+0x48]  // [V13 loc10]
+            blt     SHORT G_M18379_IG39
                        ;; size=64 bbWeight=0.50 PerfScore 13.00
 G_M18379_IG30:        ; bbWeight=4, gcVars=00000000000000000000000020000000 {V07}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz
             ; byrRegs -[r4]

libraries.crossgen2.linux.arm.checked.mch

-10 (-3.14%) : 59508.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V06 tmp1         [V06,T00] (  6, 20   )   byref  ->   r3         "impAppendStmt"
 ;  V07 tmp2         [V07,T05] (  6,  8   )   byref  ->  [sp+0x04] 
 ;  V08 tmp3         [V08,T02] (  6, 12   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V09 tmp4         [V09,T11] (  4,  4   )     int  ->  registers  
+;  V09 tmp4         [V09,T11] (  2,  3.96)     int  ->   r0        
 ;  V10 tmp5         [V10,T06] (  4,  8   )     ref  ->   r0         "argument with side effect"
 ;  V11 cse0         [V11,T08] (  5,  7   )     int  ->   r9         "CSE - aggressive"
 ;  V12 cse1         [V12,T10] (  4,  5.04)   byref  ->  r10         hoist multi-def "CSE - aggressive"
@@ -42,7 +42,7 @@ G_M22994_IG02:        ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
             mov     r8, 0
             ldr     r9, [r7+0x04]
             cmp     r9, 0
-            ble     SHORT G_M22994_IG18
+            ble     SHORT G_M22994_IG16
             cmp     r5, 0
             beq     SHORT G_M22994_IG11
             ldr     r0, [r5+0x04]
@@ -94,7 +94,7 @@ G_M22994_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ; gcrRegs -[r0 r5]
             ; byrRegs -[r3-r4 r10]
             ; GC ptr vars -{V07}
-            b       SHORT G_M22994_IG20
+            b       SHORT G_M22994_IG18
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M22994_IG06:        ; bbWeight=1.98, gcVars=00000020 {V07}, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, gcvars, byref, isz
             ; gcrRegs +[r5]
@@ -125,15 +125,15 @@ G_M22994_IG06:        ; bbWeight=1.98, gcVars=00000020 {V07}, gcrefRegs=0020 {r5
             ; gcr arg pop 0
             cmp     r0, 0
             beq     SHORT G_M22994_IG07
-            movs    r7, 0
+            movs    r0, 0
             b       SHORT G_M22994_IG08
                        ;; size=40 bbWeight=1.98 PerfScore 33.66
 G_M22994_IG07:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref
-            movs    r7, 1
+            movs    r0, 1
                        ;; size=2 bbWeight=1.98 PerfScore 1.98
 G_M22994_IG08:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref, isz
-            cmp     r7, 0
-            bne     SHORT G_M22994_IG20
+            cmp     r0, 0
+            bne     SHORT G_M22994_IG18
                        ;; size=4 bbWeight=1.98 PerfScore 3.96
 G_M22994_IG09:        ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref, isz
             add     r8, r8, 1
@@ -143,7 +143,7 @@ G_M22994_IG09:        ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}
 G_M22994_IG10:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r5]
             ; byrRegs -[r10]
-            b       SHORT G_M22994_IG18
+            b       SHORT G_M22994_IG16
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M22994_IG11:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r5 r7]
@@ -180,7 +180,7 @@ G_M22994_IG12:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0008 {r
             ldr     r0, [r5+0x04]
             ; gcrRegs -[r0]
             cmp     r8, r0
-            bhs     SHORT G_M22994_IG22
+            bhs     SHORT G_M22994_IG20
             add     r0, r5, 8
             ; byrRegs +[r0]
             lsl     r3, r8, 2
@@ -189,13 +189,13 @@ G_M22994_IG12:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0008 {r
             ; gcrRegs +[r0]
             ; byrRegs -[r0]
             cmp     r0, 0
-            beq     SHORT G_M22994_IG17
+            beq     SHORT G_M22994_IG15
                        ;; size=34 bbWeight=0.02 PerfScore 0.30
 G_M22994_IG13:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0 r5 r7]
             ; byrRegs -[r4]
             ; GC ptr vars -{V07}
-            b       SHORT G_M22994_IG20
+            b       SHORT G_M22994_IG18
                        ;; size=2 bbWeight=0.01 PerfScore 0.01
 G_M22994_IG14:        ; bbWeight=0.02, gcVars=00000020 {V07}, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[r5 r7]
@@ -214,7 +214,7 @@ G_M22994_IG14:        ; bbWeight=0.02, gcVars=00000020 {V07}, gcrefRegs=00A0 {r5
             ; gcrRegs +[r0]
             ldr     r1, [r5+0x04]
             cmp     r8, r1
-            bhs     SHORT G_M22994_IG22
+            bhs     SHORT G_M22994_IG20
             add     r1, r5, 8
             ; byrRegs +[r1]
             lsl     r3, r8, 2
@@ -228,38 +228,29 @@ G_M22994_IG14:        ; bbWeight=0.02, gcVars=00000020 {V07}, gcrefRegs=00A0 {r5
             ; byrRegs -[r10]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M22994_IG15
-            movs    r0, 0
-            b       SHORT G_M22994_IG16
-                       ;; size=54 bbWeight=0.02 PerfScore 0.42
-G_M22994_IG15:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
-            movs    r0, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M22994_IG16:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
-            cmp     r0, 0
-            bne     SHORT G_M22994_IG20
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M22994_IG17:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+            beq     SHORT G_M22994_IG18
+                       ;; size=50 bbWeight=0.02 PerfScore 0.38
+G_M22994_IG15:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
             add     r8, r8, 1
             cmp     r9, r8
             bgt     SHORT G_M22994_IG11
                        ;; size=8 bbWeight=0.04 PerfScore 0.12
-G_M22994_IG18:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22994_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r5 r7]
             movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M22994_IG17:        ; bbWeight=0.50, epilog, nogc, extend
+            add     sp, 20
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M22994_IG18:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            movs    r0, 0
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M22994_IG19:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 20
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M22994_IG20:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            movs    r0, 0
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M22994_IG21:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 20
-            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M22994_IG22:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M22994_IG20:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             movw    r3, LOW RELOC 0xD1FFAB1E
             movt    r3, HIGH RELOC 0xD1FFAB1E
             add     r3, pc
@@ -269,7 +260,7 @@ G_M22994_IG22:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=16 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 318, prolog size 24, PerfScore 133.71, instruction count 129, allocated bytes for code 318 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 308, prolog size 24, PerfScore 133.61, instruction count 124, allocated bytes for code 308 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -281,7 +272,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 159 (0x0009f) Actual length = 318 (0x00013e)
+  Function Length   : 154 (0x0009a) Actual length = 308 (0x000134)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-10 (-0.71%) : 95402.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,30 +12,30 @@
 ;  V00 arg0         [V00,T18] (  5,  5   )     ref  ->   r0         class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax>
 ;  V01 arg1         [V01,T09] (  6, 11   )     ref  ->   r5         class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]>
 ;  V02 arg2         [V02,T12] (  4,  6   )     ref  ->   r6         class-hnd single-def <System.Collections.Generic.Dictionary`2[System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol]>
-;  V03 loc0         [V03    ] (  5,  7   )  struct (16) [sp+0x30]  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 (16) [sp+0x28]  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  ->   r8         class-hnd exact single-def <<unknown class>>
 ;  V05 loc2         [V05,T19] (  5,  7   )     int  ->   r9         single-def
 ;  V06 loc3         [V06,T02] ( 16, 25.04)     int  ->  r10        
-;  V07 loc4         [V07,T06] ( 12, 18   )     ref  ->  [sp+0x18]  class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax>
+;  V07 loc4         [V07,T06] ( 12, 18   )     ref  ->  [sp+0x10]  class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax>
 ;  V08 loc5         [V08,T07] ( 10, 16   )     ref  ->   r2         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V09 loc6         [V09    ] (  0,  0   )  ushort  ->  zero-ref   
-;  V10 loc7         [V10,T11] (  8,  8   )     ref  ->  [sp+0x14]  class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
-;  V11 loc8         [V11    ] (  4,  4   )  struct (16) [sp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
+;  V10 loc7         [V10,T11] (  8,  8   )     ref  ->  [sp+0x0C]  class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax>
+;  V11 loc8         [V11    ] (  4,  4   )  struct (16) [sp+0x18]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxToken>
 ;  V12 loc9         [V12,T21] (  3,  6   )     int  ->   r6         single-def
 ;  V13 loc10        [V13,T03] (  7, 21   )     int  ->   r7        
 ;  V14 loc11        [V14,T01] (  6, 72   )     ref  ->   r9         class-hnd <Microsoft.CodeAnalysis.VisualBasic.Symbol>
 ;  V15 loc12        [V15,T00] (  6, 86   )     int  ->   r0        
 ;  V16 loc13        [V16,T22] (  2,  4   )     ref  ->   r9         class-hnd <<unknown class>>
-;  V17 loc14        [V17    ] (  4,  8   )  struct ( 4) [sp+0x1C]  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 ( 4) [sp+0x14]  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  ->   r9         class-hnd <<unknown class>>
 ;# V19 OutArgs      [V19    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V20 tmp1         [V20,T04] ( 10, 20   )     ref  ->  [sp+0x10]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
-;  V21 tmp2         [V21,T05] ( 10, 20   )     ref  ->  [sp+0x0C]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
+;  V20 tmp1         [V20,T04] ( 10, 20   )     ref  ->  [sp+0x08]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
+;  V21 tmp2         [V21,T05] ( 10, 20   )     ref  ->  [sp+0x04]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol>
 ;* V22 tmp3         [V22    ] (  0,  0   )  struct ( 4) zero-ref    "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;* V23 tmp4         [V23    ] (  0,  0   )  struct ( 4) zero-ref    "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
 ;  V24 tmp5         [V24,T13] (  4,  8   )     ref  ->   r1         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  ->  [sp+0x1C]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
+;  V26 tmp7         [V26    ] (  4,  8   )     ref  ->  [sp+0x14]  do-not-enreg[X] addr-exposed "field V17.array (fldOffset=0x0)" P-DEP
 ;  V27 tmp8         [V27,T24] (  2,  4   )     ref  ->   r1         "field V22.array (fldOffset=0x0)" P-INDEP
 ;  V28 tmp9         [V28,T25] (  2,  4   )     ref  ->   r1         "field V23.array (fldOffset=0x0)" P-INDEP
 ;  V29 tmp10        [V29,T26] (  2,  4   )     ref  ->   r0         single-def "argument with side effect"
@@ -46,28 +46,26 @@
 ;  V34 tmp15        [V34,T16] (  2,  8   )     ref  ->   r2         "argument with side effect"
 ;  V35 tmp16        [V35,T17] (  2,  8   )     ref  ->   r2         "argument with side effect"
 ;  V36 cse0         [V36,T20] (  5,  7   )     int  ->   r7         "CSE - moderate"
-;  TEMP_02                                   byref  ->  [r11-0x58]
-;  TEMP_01                                     ref  ->  [r11-0x5C]
+;  TEMP_01                                     ref  ->  [r11-0x58]
 ;
-; Lcl frame size = 68
+; Lcl frame size = 60
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 68
-            add     r11, sp, 96
-            sub     r5, r11, 92
+            sub     sp, 60
+            add     r11, sp, 88
+            sub     r5, r11, 88
             movs    r6, 7
             movs    r3, 0
             movs    r4, 0
             stm     r5!, {r3,r4}
             subs    r6, 1
             bhi     SHORT pc-6 (-3 instructions)
-            str     r3, [r5]
             mov     r5, r1
             ; gcrRegs +[r5]
             mov     r6, r2
             ; gcrRegs +[r6]
-                       ;; size=32 bbWeight=1 PerfScore 13.00
+                       ;; size=30 bbWeight=1 PerfScore 12.00
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r0]
             ldrsb   r2, [r0]
@@ -88,7 +86,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {},
             ldr     lr, [r4]
             blx     lr     // <unknown method>
             ; byrRegs -[r2]
-            add     r1, sp, 48
+            add     r1, sp, 40
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -101,7 +99,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {},
             add     r1, pc
             ldr     r7, [r1]
             mov     r1, r7
-            add     r0, sp, 48
+            add     r0, sp, 40
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -116,7 +114,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {},
             mov     r8, r0
             ; gcrRegs +[r8]
             mov     r1, r7
-            add     r0, sp, 48
+            add     r0, sp, 40
             ; gcrRegs -[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -133,7 +131,7 @@ G_M1087_IG02:        ; bbWeight=1, gcrefRegs=0061 {r0 r5 r6}, byrefRegs=0000 {},
                        ;; size=156 bbWeight=1 PerfScore 54.00
 G_M1087_IG03:        ; bbWeight=3.96, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             mov     r1, r7
-            add     r0, sp, 48
+            add     r0, sp, 40
             mov     r2, r10
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -145,7 +143,7 @@ G_M1087_IG03:        ; bbWeight=3.96, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             ; gcrRegs +[r4]
             ldrsb   r0, [r4]
             ; gcrRegs -[r0]
-            str     r4, [sp+0x18]
+            str     r4, [sp+0x10]
             ; GC ptr vars +{V07}
             mov     r0, r4
             ; gcrRegs +[r0]
@@ -168,7 +166,7 @@ G_M1087_IG03:        ; bbWeight=3.96, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             bne     SHORT G_M1087_IG05
                        ;; size=70 bbWeight=3.96 PerfScore 106.92
 G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [sp+0x18]  // [V07 loc4]
+            ldr     r0, [sp+0x10]  // [V07 loc4]
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -178,8 +176,8 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             blx     r3     // CORINFO_HELP_READYTORUN_CHKCAST
             mov     r4, r0
             ; gcrRegs +[r4]
-            add     r1, sp, 32 // [V11 loc8]
-            str     r4, [sp+0x14]  // [V10 loc7]
+            add     r1, sp, 24 // [V11 loc8]
+            str     r4, [sp+0x0C]  // [V10 loc7]
             ; GC ptr vars +{V10}
             mov     r0, r4
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -196,9 +194,9 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             ldr     r3, [r4]
             blx     r3     // CORINFO_HELP_READYTORUN_NEW
             ; gcrRegs +[r0]
-            str     r0, [sp+0x0C]  // [V21 tmp2]
+            str     r0, [sp+0x04]  // [V21 tmp2]
             ; GC ptr vars +{V21}
-            add     r0, sp, 32 // [V11 loc8]
+            add     r0, sp, 24 // [V11 loc8]
             ; gcrRegs -[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -208,10 +206,10 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             ; gcrRegs +[r0]
             mov     r1, r0
             ; gcrRegs +[r1]
-            ldr     r2, [sp+0x0C]
+            ldr     r2, [sp+0x04]
             ; gcrRegs +[r2]
             str     r10, [r2+0x1C]
-            str     r2, [sp+0x0C]
+            str     r2, [sp+0x04]
             add     r0, r2, 20
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
@@ -222,14 +220,14 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             blx     r12        // CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[r1-r2]
             ; byrRegs -[r0]
-            ldr     r0, [sp+0x14]
+            ldr     r0, [sp+0x0C]
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
             ldr     r3, [r4]
             blx     r3     // <unknown method>
-            ldr     r1, [sp+0x14]
+            ldr     r1, [sp+0x0C]
             ; gcrRegs +[r1]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -239,13 +237,13 @@ G_M1087_IG04:        ; bbWeight=1.98, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000
             ; GC ptr vars -{V10}
             blx     r3     // <unknown method>
             ; gcrRegs -[r1]
-            str     r0, [sp+0x04]
-            ldr     r2, [sp+0x0C]
+            str     r0, [sp]
+            ldr     r2, [sp+0x04]
             ; gcrRegs +[r2]
             add     r0, r2, 24
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldr     r1, [sp+0x04]
+            ldr     r1, [sp]
             ; gcrRegs +[r1]
             movw    r12, LOW RELOC 0xD1FFAB1E
             movt    r12, HIGH RELOC 0xD1FFAB1E
@@ -275,7 +273,7 @@ G_M1087_IG05:        ; bbWeight=1.98, gcVars=00000040 {V07}, gcrefRegs=0160 {r5
             ldr     r1, [r1]
             ldr     r1, [r1]
             ; gcrRegs +[r1]
-            str     r2, [sp+0x10]
+            str     r2, [sp+0x08]
             ; GC ptr vars +{V20}
             add     r0, r2, 20
             ; gcrRegs -[r0]
@@ -288,14 +286,14 @@ G_M1087_IG05:        ; bbWeight=1.98, gcVars=00000040 {V07}, gcrefRegs=0160 {r5
             blx     r12        // CORINFO_HELP_ASSIGN_REF
             ; gcrRegs -[r1-r2]
             ; byrRegs -[r0]
-            ldr     r0, [sp+0x18]
+            ldr     r0, [sp+0x10]
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
             ldr     r3, [r4]
             blx     r3     // <unknown method>
-            ldr     r1, [sp+0x18]
+            ldr     r1, [sp+0x10]
             ; gcrRegs +[r1]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -305,13 +303,13 @@ G_M1087_IG05:        ; bbWeight=1.98, gcVars=00000040 {V07}, gcrefRegs=0160 {r5
             ; GC ptr vars -{V07}
             blx     r3     // <unknown method>
             ; gcrRegs -[r1]
-            str     r0, [sp+0x04]
-            ldr     r2, [sp+0x10]
+            str     r0, [sp]
+            ldr     r2, [sp+0x08]
             ; gcrRegs +[r2]
             add     r0, r2, 24
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldr     r1, [sp+0x04]
+            ldr     r1, [sp]
             ; gcrRegs +[r1]
             movw    r12, LOW RELOC 0xD1FFAB1E
             movt    r12, HIGH RELOC 0xD1FFAB1E
@@ -360,7 +358,7 @@ G_M1087_IG07:        ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0000 {}, by
 G_M1087_IG08:        ; bbWeight=0.04, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r6]
             mov     r1, r7
-            add     r0, sp, 48
+            add     r0, sp, 40
             mov     r2, r10
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
...

-10 (-0.58%) : 165961.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

@@ -36,8 +36,8 @@
 ;  V24 tmp5         [V24,T47] (  2,  0   )     ref  ->   r5         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;* V25 tmp6         [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;  V26 tmp7         [V26,T27] (  4, 16   )     int  ->   r8         "impSpillLclRefs"
-;  V27 tmp8         [V27,T37] (  2,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
-;  V28 tmp9         [V28,T42] (  2,  0.04)   ubyte  ->   r0         "Inline return value spill temp"
+;  V27 tmp8         [V27,T36] (  2,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+;* V28 tmp9         [V28,T42] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V29 tmp10        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V30 tmp11        [V30,T32] (  6, 10   )     ref  ->   r0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V31 tmp12        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -46,13 +46,13 @@
 ;  V34 tmp15        [V34,T28] (  2, 15.84)   ubyte  ->   r0         "Inline return value spill temp"
 ;  V35 tmp16        [V35,T00] (  4, 95.04)     ref  ->  [sp+0x24]  class-hnd spill-single-def "Inlining Arg" <System.Type>
 ;  V36 tmp17        [V36,T05] (  3, 63.36)     ref  ->  [sp+0x20]  class-hnd spill-single-def "Inlining Arg" <System.Reflection.ParameterInfo>
-;* V37 tmp18        [V37,T35] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V37 tmp18        [V37,T37] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V38 tmp19        [V38    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V39 tmp20        [V39,T20] (  3, 23.76)     ref  ->   r0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V40 tmp21        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
 ;* V41 tmp22        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoAssembly>
 ;* V42 tmp23        [V42    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
-;  V43 tmp24        [V43,T36] (  4,  8   )     ref  ->   r0         "argument with side effect"
+;  V43 tmp24        [V43,T35] (  4,  8   )     ref  ->   r0         "argument with side effect"
 ;  V44 tmp25        [V44,T11] (  2, 31.68)     ref  ->   r1         "argument with side effect"
 ;  V45 tmp26        [V45,T12] (  2, 31.68)     ref  ->   r1         "argument with side effect"
 ;  V46 tmp27        [V46,T13] (  2, 31.68)     ref  ->   r0         "argument with side effect"
@@ -98,7 +98,7 @@ G_M46704_IG02:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
             ldr     r0, [r5+0x04]
             ; gcrRegs -[r0]
             cmp     r0, 0
-            ble     G_M46704_IG14
+            ble     G_M46704_IG12
             ldr     r0, [r5+0x04]
             ldr     r4, [r8+0x04]
             cmp     r0, r4
@@ -204,7 +204,7 @@ G_M46704_IG05:        ; bbWeight=1.98, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG61
+            beq     G_M46704_IG59
                        ;; size=28 bbWeight=1.98 PerfScore 21.78
 G_M46704_IG06:        ; bbWeight=3.96, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             add     r9, r9, 1
@@ -215,7 +215,7 @@ G_M46704_IG06:        ; bbWeight=3.96, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
 G_M46704_IG07:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r5]
             ; GC ptr vars -{V54}
-            b       SHORT G_M46704_IG14
+            b       SHORT G_M46704_IG12
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r5]
@@ -236,7 +236,7 @@ G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             ; gcrRegs +[r1]
             ldr     r4, [r8+0x04]
             cmp     r9, r4
-            bhs     G_M46704_IG59
+            bhs     G_M46704_IG57
             add     r4, r8, 8
             ; byrRegs +[r4]
             lsl     r0, r9, 2
@@ -263,7 +263,7 @@ G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             blx     r3     // CORINFO_HELP_READYTORUN_ISINSTANCEOF
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG12
+            beq     SHORT G_M46704_IG10
                        ;; size=90 bbWeight=0.04 PerfScore 1.24
 G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=01E1 {r0 r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -296,20 +296,10 @@ G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=01E1 {r0 r5 r6 r7 r8}, byrefReg
             ldr     r3, [r6+r4]
             ; gcrRegs +[r3]
             cmp     r0, r3
-            beq     SHORT G_M46704_IG10
-            movs    r0, 0
-            ; gcrRegs -[r0]
-            b       SHORT G_M46704_IG11
-                       ;; size=68 bbWeight=0.02 PerfScore 0.52
-G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r3]
-            movs    r0, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M46704_IG11:        ; bbWeight=0.02, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
-            cmp     r0, 0
-            bne     SHORT G_M46704_IG13
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M46704_IG12:        ; bbWeight=0.02, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+            beq     SHORT G_M46704_IG11
+                       ;; size=64 bbWeight=0.02 PerfScore 0.48
+G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r0 r3]
             lsl     r0, r9, 2
             ldr     r4, [sp+0x18]  // [V54 cse3]
             ; byrRegs +[r4]
@@ -326,23 +316,23 @@ G_M46704_IG12:        ; bbWeight=0.02, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG61
+            beq     G_M46704_IG59
                        ;; size=30 bbWeight=0.02 PerfScore 0.22
-G_M46704_IG13:        ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG11:        ; bbWeight=0.04, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             add     r9, r9, 1
             ldr     r0, [r5+0x04]
             cmp     r0, r9
             bgt     SHORT G_M46704_IG08
                        ;; size=10 bbWeight=0.04 PerfScore 0.16
-G_M46704_IG14:        ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG12:        ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r5]
             mov     r5, r8
             ; gcrRegs +[r5]
             cmp     r7, 0
-            beq     G_M46704_IG60
+            beq     G_M46704_IG58
             ldr     r0, [r7+0x04]
             cmp     r0, 0
-            beq     G_M46704_IG60
+            beq     G_M46704_IG58
             mov     r0, r7
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -360,9 +350,9 @@ G_M46704_IG14:        ; bbWeight=1, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000 {}
             ldr     r4, [r7+0x04]
             str     r4, [sp+0x3C]  // [V56 cse5]
             cmp     r4, 0
-            ble     SHORT G_M46704_IG20
+            ble     SHORT G_M46704_IG18
                        ;; size=54 bbWeight=1 PerfScore 20.00
-G_M46704_IG15:        ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG13:        ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             add     r0, r7, 8
             ; byrRegs +[r0]
@@ -385,15 +375,15 @@ G_M46704_IG15:        ; bbWeight=4, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
             ; gcrRegs -[r0]
             ldr     r3, [r5+0x04]
             cmp     r0, r3
-            bne     G_M46704_IG31
+            bne     G_M46704_IG29
                        ;; size=40 bbWeight=4 PerfScore 60.00
-G_M46704_IG16:        ; bbWeight=2, gcVars=0000000000200000 {V14}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG14:        ; bbWeight=2, gcVars=0000000000200000 {V14}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             movs    r2, 0
             str     r3, [sp+0x40]  // [V53 cse2]
             cmp     r3, 0
-            ble     SHORT G_M46704_IG19
+            ble     SHORT G_M46704_IG17
                        ;; size=8 bbWeight=2 PerfScore 8.00
-G_M46704_IG17:        ; bbWeight=15.84, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG15:        ; bbWeight=15.84, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             add     r1, r4, 8
             ; byrRegs +[r1]
             str     r1, [sp+0x14]  // [V55 cse4]
@@ -444,9 +434,9 @@ G_M46704_IG17:        ; bbWeight=15.84, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=
             ; gcrRegs -[r0-r2]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG21
+            beq     SHORT G_M46704_IG19
                        ;; size=86 bbWeight=15.84 PerfScore 475.20
-G_M46704_IG18:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG16:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [sp+0x20]  // [V36 tmp17]
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -468,20 +458,20 @@ G_M46704_IG18:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             blx     r3     // <unknown method>
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
-            b       SHORT G_M46704_IG22
+            b       SHORT G_M46704_IG20
                        ;; size=38 bbWeight=7.92 PerfScore 118.80
-G_M46704_IG19:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG17:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r8]
             ; GC ptr vars -{V14 V54}
             str     r2, [sp+0x54]  // [V06 loc1]
-            b       SHORT G_M46704_IG30
+            b       SHORT G_M46704_IG28
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M46704_IG20:        ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG18:        ; bbWeight=0.50, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r6]
             ldr     r2, [sp+0x3C]  // [V56 cse5]
-            b       SHORT G_M46704_IG32
+            b       SHORT G_M46704_IG30
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M46704_IG21:        ; bbWeight=7.92, gcVars=0000000000200061 {V14 V35 V36 V54}, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG19:        ; bbWeight=7.92, gcVars=0000000000200061 {V14 V35 V36 V54}, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[r6 r8]
             ; GC ptr vars +{V00 V05 V06 V14 V21 V35 V36 V54}
             ldr     r0, [sp+0x20]  // [V36 tmp17]
@@ -497,16 +487,16 @@ G_M46704_IG21:        ; bbWeight=7.92, gcVars=0000000000200061 {V14 V35 V36 V54}
             ldr     r1, [sp+0x24]  // [V35 tmp16]
             ; gcrRegs +[r1]
             cmp     r0, r1
-            beq     G_M46704_IG27
-            b       SHORT G_M46704_IG23
+            beq     G_M46704_IG25
+            b       SHORT G_M46704_IG21
                        ;; size=28 bbWeight=7.92 PerfScore 87.12
-G_M46704_IG22:        ; bbWeight=7.92, gcVars=0000000000200040 {V14 V54}, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG20:        ; bbWeight=7.92, gcVars=0000000000200040 {V14 V54}, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0-r1]
             ; GC ptr vars -{V35}
             cmp     r0, 0
-            bne     G_M46704_IG27
+            bne     G_M46704_IG25
                        ;; size=6 bbWeight=7.92 PerfScore 15.84
-G_M46704_IG23:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG21:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             movw    r1, LOW RELOC 0xD1FFAB1E
             movt    r1, HIGH RELOC 0xD1FFAB1E
             add     r1, pc
@@ -527,7 +517,7 @@ G_M46704_IG23:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     G_M46704_IG27
+            bne     G_M46704_IG25
             ldr     r4, [sp+0x18]  // [V54 cse3]
             ; byrRegs +[r4]
             ldr     r0, [sp+0x44]  // [V52 cse1]
@@ -549,7 +539,7 @@ G_M46704_IG23:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG24
+            beq     SHORT G_M46704_IG22
             add     r0, r7, 8
             ; byrRegs +[r0]
             ldr     r4, [sp+0x38]  // [V57 cse6]
@@ -563,7 +553,7 @@ G_M46704_IG23:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             blx     r3     // CORINFO_HELP_READYTORUN_ISINSTANCEOF
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG30
+            beq     G_M46704_IG28
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -586,9 +576,9 @@ G_M46704_IG23:        ; bbWeight=7.92, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             str     r4, [sp+0x28]
             ; GC ptr vars +{V16}
             cmp     r4, 0
...

-22 (-0.39%) : 59013.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

@@ -17,9 +17,9 @@
 ;* V05 loc2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
 ;  V06 loc3         [V06,T119] (  2,  2   )     ref  ->   r9         class-hnd single-def <System.String>
 ;  V07 loc4         [V07,T74] ( 10, 13   )     int  ->  r10        
-;  V08 loc5         [V08,T80] ( 11, 10.56)     ref  ->  [sp+0x80]  class-hnd exact spill-single-def <<unknown class>>
-;  V09 loc6         [V09,T03] ( 39, 75   )     ref  ->  [sp+0x7C]  class-hnd spill-single-def <<unknown class>>
-;  V10 loc7         [V10,T02] ( 48, 89.02)     int  ->  [sp+0xA4] 
+;  V08 loc5         [V08,T80] ( 11, 10.56)     ref  ->  [sp+0x78]  class-hnd exact spill-single-def <<unknown class>>
+;  V09 loc6         [V09,T03] ( 39, 75   )     ref  ->  [sp+0x74]  class-hnd spill-single-def <<unknown class>>
+;  V10 loc7         [V10,T02] ( 48, 89.02)     int  ->  [sp+0x9C] 
 ;* V11 loc8         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.Data.DataColumn>
 ;* V12 loc9         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
 ;  V13 loc10        [V13,T28] ( 14, 20.54)     int  ->   r7        
@@ -27,9 +27,9 @@
 ;  V15 tmp1         [V15,T88] (  4,  6.50)     ref  ->   r4         single-def "inline UNBOX clone1"
 ;  V16 tmp2         [V16,T90] (  3,  6   )     ref  ->  r10         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V17 tmp3         [V17,T91] (  3,  6   )     ref  ->  r10         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V18 tmp4         [V18,T00] ( 44,172   )     ref  ->  [sp+0x78]  class-hnd exact "NewObj constructor temp" <System.Data.DataColumn>
+;  V18 tmp4         [V18,T00] ( 44,172   )     ref  ->  [sp+0x70]  class-hnd exact "NewObj constructor temp" <System.Data.DataColumn>
 ;  V19 tmp5         [V19,T07] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
-;  V20 tmp6         [V20,T08] (  6, 24   )     ref  ->  [sp+0x74]  class-hnd exact "Single-def Box Helper" <<unknown class>>
+;  V20 tmp6         [V20,T08] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
 ;  V21 tmp7         [V21,T09] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
 ;  V22 tmp8         [V22,T10] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
 ;  V23 tmp9         [V23,T11] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
@@ -47,7 +47,7 @@
 ;  V35 tmp21        [V35,T21] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
 ;  V36 tmp22        [V36,T22] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
 ;  V37 tmp23        [V37,T23] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
-;  V38 tmp24        [V38,T24] (  6, 24   )     ref  ->  [sp+0x70]  class-hnd exact "Single-def Box Helper" <<unknown class>>
+;  V38 tmp24        [V38,T24] (  6, 24   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
 ;  V39 tmp25        [V39,T75] (  6, 12   )     ref  ->   r0         class-hnd exact "Single-def Box Helper" <<unknown class>>
 ;  V40 tmp26        [V40,T83] (  4,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.String>
 ;  V41 tmp27        [V41,T30] (  4, 16   )     ref  ->   r1         class-hnd "Inlining Arg" <System.String>
@@ -84,9 +84,9 @@
 ;  V72 tmp58        [V72,T53] (  4, 16   )     ref  ->   r0         "argument with side effect"
 ;  V73 tmp59        [V73,T70] (  4, 16   )     int  ->   r0         "argument with side effect"
 ;  V74 tmp60        [V74,T54] (  4, 16   )     ref  ->   r0         "argument with side effect"
-;  V75 tmp61        [V75    ] (  2,  8   )    long  ->  [sp+0x98]  multireg-ret "argument with side effect"
+;  V75 tmp61        [V75    ] (  2,  8   )    long  ->  [sp+0x90]  multireg-ret "argument with side effect"
 ;  V76 tmp62        [V76,T55] (  4, 16   )     ref  ->   r0         "argument with side effect"
-;  V77 tmp63        [V77    ] (  2,  8   )    long  ->  [sp+0x90]  multireg-ret "argument with side effect"
+;  V77 tmp63        [V77    ] (  2,  8   )    long  ->  [sp+0x88]  multireg-ret "argument with side effect"
 ;  V78 tmp64        [V78,T56] (  4, 16   )     ref  ->   r0         "argument with side effect"
 ;  V79 tmp65        [V79,T57] (  4, 16   )     ref  ->   r0         "argument with side effect"
 ;  V80 tmp66        [V80,T58] (  4, 16   )     ref  ->  registers   "argument with side effect"
@@ -129,32 +129,30 @@
 ;  V117 cse22       [V117,T111] (  4,  5.04)     ref  ->  [sp+0x14]  hoist multi-def "CSE - conservative"
 ;  V118 cse23       [V118,T112] (  4,  5.04)     ref  ->  [sp+0x10]  hoist multi-def "CSE - conservative"
 ;  V119 cse24       [V119,T29] ( 14, 16   )     int  ->   r8         "CSE - conservative"
-;  V120 cse25       [V120,T27] ( 12, 22   )     int  ->  [sp+0x8C]  multi-def "CSE - moderate"
-;  V121 cse26       [V121,T86] (  8,  7.08)     int  ->  [sp+0x88]  hoist multi-def "CSE - conservative"
-;  V122 cse27       [V122,T87] (  8,  7.08)     int  ->  [sp+0x84]  hoist multi-def "CSE - conservative"
+;  V120 cse25       [V120,T27] ( 12, 22   )     int  ->  [sp+0x84]  multi-def "CSE - moderate"
+;  V121 cse26       [V121,T86] (  8,  7.08)     int  ->  [sp+0x80]  multi-def "CSE - conservative"
+;  V122 cse27       [V122,T87] (  8,  7.08)     int  ->  [sp+0x7C]  multi-def "CSE - conservative"
 ;  V123 cse28       [V123,T118] (  4,  3.25)     int  ->   r9         "CSE - conservative"
 ;  V124 rat0        [V124,T76] (  4, 12   )     int  ->   r0         "field V75.lo (fldOffset=0x0)" P-INDEP
 ;  V125 rat1        [V125,T77] (  4, 12   )     int  ->   r1         "field V75.hi (fldOffset=0x4)" P-INDEP
 ;  V126 rat2        [V126,T78] (  4, 12   )     int  ->   r0         "field V77.lo (fldOffset=0x0)" P-INDEP
 ;  V127 rat3        [V127,T79] (  4, 12   )     int  ->   r1         "field V77.hi (fldOffset=0x4)" P-INDEP
-;  TEMP_02                                   byref  ->  [r11-0xBC]
-;  TEMP_01                                     ref  ->  [r11-0xC0]
+;  TEMP_01                                     ref  ->  [r11-0xB4]
 ;
-; Lcl frame size = 172
+; Lcl frame size = 164
 
 G_M28852_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 172
-            add     r11, sp, 200
+            sub     sp, 164
+            add     r11, sp, 192
             movs    r3, 0
-            str     r3, [sp+0x08]  // [TEMP_01]
-            str     r3, [sp+0x0C]  // [TEMP_02]
+            str     r3, [sp+0x0C]  // [TEMP_01]
             mov     r6, r0
             ; gcrRegs +[r6]
             mov     r5, r1
             ; gcrRegs +[r5]
             mov     r7, r2
-                       ;; size=22 bbWeight=1 PerfScore 9.00
+                       ;; size=20 bbWeight=1 PerfScore 8.00
 G_M28852_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             movw    r1, LOW RELOC 0xD1FFAB1E
             movt    r1, HIGH RELOC 0xD1FFAB1E
@@ -172,7 +170,7 @@ G_M28852_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             blx     r3     // <unknown method>
             ; gcrRegs -[r1]
             ; gcr arg pop 0
-            str     r0, [sp+0x08]
+            str     r0, [sp+0x0C]
             movw    r1, LOW RELOC 0xD1FFAB1E
             movt    r1, HIGH RELOC 0xD1FFAB1E
             add     r1, pc
@@ -182,7 +180,7 @@ G_M28852_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             add     r0, r1, 52
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldr     r1, [sp+0x08]
+            ldr     r1, [sp+0x0C]
             ; gcrRegs +[r1]
             ; byrRegs -[r1]
             movw    r12, LOW RELOC 0xD1FFAB1E
@@ -207,13 +205,13 @@ G_M28852_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             blx     r3     // <unknown method>
             ; gcrRegs -[r1]
             ; gcr arg pop 0
-            str     r0, [sp+0x08]
+            str     r0, [sp+0x0C]
             add     r1, r6, r8
             ; byrRegs +[r1]
             add     r0, r1, 56
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldr     r1, [sp+0x08]
+            ldr     r1, [sp+0x0C]
             ; gcrRegs +[r1]
             ; byrRegs -[r1]
             movw    r12, LOW RELOC 0xD1FFAB1E
@@ -238,13 +236,13 @@ G_M28852_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             blx     r3     // <unknown method>
             ; gcrRegs -[r1]
             ; gcr arg pop 0
-            str     r0, [sp+0x08]
+            str     r0, [sp+0x0C]
             add     r1, r6, r8
             ; byrRegs +[r1]
             add     r0, r1, 60
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldr     r1, [sp+0x08]
+            ldr     r1, [sp+0x0C]
             ; gcrRegs +[r1]
             ; byrRegs -[r1]
             movw    r12, LOW RELOC 0xD1FFAB1E
@@ -542,13 +540,13 @@ G_M28852_IG06:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ldr     r3, [r4]
             blx     r3     // CORINFO_HELP_READYTORUN_CHKCAST
             ; gcr arg pop 0
-            str     r0, [sp+0x08]
+            str     r0, [sp+0x0C]
             add     r1, r6, r8
             ; byrRegs +[r1]
             add     r0, r1, 48
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldr     r1, [sp+0x08]
+            ldr     r1, [sp+0x0C]
             ; gcrRegs +[r1]
             ; byrRegs -[r1]
             movw    r12, LOW RELOC 0xD1FFAB1E
@@ -582,7 +580,7 @@ G_M28852_IG06:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             blx     r3     // CORINFO_HELP_READYTORUN_NEWARR_1
             ; gcrRegs +[r0]
             ; gcr arg pop 0
-            str     r0, [sp+0x80]  // [V08 loc5]
+            str     r0, [sp+0x78]  // [V08 loc5]
             ; GC ptr vars +{V08}
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -590,13 +588,13 @@ G_M28852_IG06:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ldr     r3, [r4]
             blx     r3     // <unknown method>
             ; gcr arg pop 0
-            str     r0, [sp+0x7C]  // [V09 loc6]
+            str     r0, [sp+0x74]  // [V09 loc6]
             ; GC ptr vars +{V09}
             movs    r3, 0
-            str     r3, [sp+0xA4]  // [V10 loc7]
+            str     r3, [sp+0x9C]  // [V10 loc7]
             cmp     r10, 0
             ble     G_M28852_IG33
-            ldr     r2, [sp+0x80]  // [V08 loc5]
+            ldr     r2, [sp+0x78]  // [V08 loc5]
             ; gcrRegs +[r2]
             ldr     r0, [r2+0x04]
             ; gcrRegs -[r0]
@@ -695,7 +693,7 @@ G_M28852_IG07:        ; bbWeight=1, extend
             movt    r0, HIGH RELOC 0xD1FFAB1E
             add     r0, pc
             ldr     r1, [r0]
-            str     r1, [sp+0x88]  // [V121 cse26]
+            str     r1, [sp+0x80]  // [V121 cse26]
             mov     r0, r1
             movw    lr, LOW RELOC 0xD1FFAB1E
             movt    lr, HIGH RELOC 0xD1FFAB1E
@@ -719,7 +717,7 @@ G_M28852_IG07:        ; bbWeight=1, extend
             movt    r0, HIGH RELOC 0xD1FFAB1E
             add     r0, pc
             ldr     r1, [r0]
-            str     r1, [sp+0x84]  // [V122 cse27]
+            str     r1, [sp+0x7C]  // [V122 cse27]
             mov     r0, r1
             movw    lr, LOW RELOC 0xD1FFAB1E
             movt    lr, HIGH RELOC 0xD1FFAB1E
@@ -848,7 +846,7 @@ G_M28852_IG08:        ; bbWeight=3.96, gcVars=0001FFFFF00302000000000000000008 {
             ; gcrRegs -[r0]
             str     r0, [sp]   // [V14 OutArgs]
             mov     r2, lr
-            str     r4, [sp+0x78]  // [V18 tmp4]
+            str     r4, [sp+0x70]  // [V18 tmp4]
             ; GC ptr vars +{V18}
             mov     r0, r4
             ; gcrRegs +[r0]
@@ -872,13 +870,13 @@ G_M28852_IG08:        ; bbWeight=3.96, gcVars=0001FFFFF00302000000000000000008 {
             blx     r3     // CORINFO_HELP_READYTORUN_NEW
             ; gcrRegs +[r0]
             ; gcr arg pop 0
-            ldr     r4, [sp+0xA4]  // [V10 loc7]
+            ldr     r4, [sp+0x9C]  // [V10 loc7]
             str     r4, [r0+0x04]
             mov     r2, r0
             ; gcrRegs +[r2]
             ldr     r1, [sp+0x54]  // [V101 cse6]
             ; gcrRegs +[r1]
-            ldr     r0, [sp+0x7C]  // [V09 loc6]
+            ldr     r0, [sp+0x74]  // [V09 loc6]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -898,7 +896,7 @@ G_M28852_IG08:        ; bbWeight=3.96, gcVars=0001FFFFF00302000000000000000008 {
             ; gcr arg pop 0
             mov     r1, r0
             ; gcrRegs +[r1]
-            ldr     r0, [sp+0x78]  // [V18 tmp4]
+            ldr     r0, [sp+0x70]  // [V18 tmp4]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -913,13 +911,13 @@ G_M28852_IG08:        ; bbWeight=3.96, gcVars=0001FFFFF00302000000000000000008 {
             blx     r3     // CORINFO_HELP_READYTORUN_NEW
             ; gcrRegs +[r0]
             ; gcr arg pop 0
-            ldr     r4, [sp+0xA4]  // [V10 loc7]
+            ldr     r4, [sp+0x9C]  // [V10 loc7]
             str     r4, [r0+0x04]
             mov     r2, r0
             ; gcrRegs +[r2]
             ldr     r1, [sp+0x50]  // [V102 cse7]
             ; gcrRegs +[r1]
-            ldr     r0, [sp+0x7C]  // [V09 loc6]
+            ldr     r0, [sp+0x74]  // [V09 loc6]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -937,20 +935,20 @@ G_M28852_IG08:        ; bbWeight=3.96, gcVars=0001FFFFF00302000000000000000008 {
             blx     r3     // <unknown method>
...

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

@@ -14,48 +14,48 @@
 ;  V02 loc0         [V02,T34] (  3,  2   )     ref  ->   r0         class-hnd <Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]>
 ;  V03 loc1         [V03,T26] (  7,  5.02)     ref  ->   r8         class-hnd single-def <<unknown class>>
 ;  V04 loc2         [V04,T31] (  4,  3   )     ref  ->  r10         class-hnd single-def <Microsoft.CodeAnalysis.SyntaxTree>
-;  V05 loc3         [V05,T32] (  4,  3   )     ref  ->  [sp+0x50]  class-hnd exact spill-single-def <<unknown class>>
-;  V06 loc4         [V06    ] (  4,  5   )  struct ( 4) [sp+0x84]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]>
+;  V05 loc3         [V05,T32] (  4,  3   )     ref  ->  [sp+0x48]  class-hnd exact spill-single-def <<unknown class>>
+;  V06 loc4         [V06    ] (  4,  5   )  struct ( 4) [sp+0x7C]  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 ( 4) zero-ref    ld-addr-op <System.Threading.CancellationToken>
-;  V08 loc6         [V08,T25] (  5,  5.50)     int  ->  [sp+0x80]  spill-single-def
-;  V09 loc7         [V09,T01] ( 12, 18.52)     int  ->  [sp+0x7C] 
-;  V10 loc8         [V10    ] (  8, 10   )  struct (16) [sp+0x6C]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
+;  V08 loc6         [V08,T25] (  5,  5.50)     int  ->  [sp+0x78]  spill-single-def
+;  V09 loc7         [V09,T01] ( 12, 18.52)     int  ->  [sp+0x74] 
+;  V10 loc8         [V10    ] (  8, 10   )  struct (16) [sp+0x64]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.SeparatedSyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax]>
 ;  V11 loc9         [V11,T06] ( 12, 12   )     ref  ->   r7         must-init class-hnd exact <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-;  V12 loc10        [V12,T11] ( 10, 10   )     ref  ->  [sp+0x4C]  class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
-;  V13 loc11        [V13,T13] (  8,  8   )     ref  ->  [sp+0x48]  class-hnd <<unknown class>>
-;  V14 loc12        [V14,T21] (  6,  6   )     ref  ->  [sp+0x44]  class-hnd <<unknown class>>
+;  V12 loc10        [V12,T11] ( 10, 10   )     ref  ->  [sp+0x44]  class-hnd <Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax>
+;  V13 loc11        [V13,T13] (  8,  8   )     ref  ->  [sp+0x40]  class-hnd <<unknown class>>
+;  V14 loc12        [V14,T21] (  6,  6   )     ref  ->  [sp+0x3C]  class-hnd <<unknown class>>
 ;  V15 OutArgs      [V15    ] (  1,  1   )  struct ( 8) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V16 tmp1         [V16,T24] (  3,  6   )     ref  ->   r8         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V17 tmp2         [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V18 tmp3         [V18,T28] (  4,  4   )     ref  ->  [sp+0x40]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V18 tmp3         [V18,T28] (  4,  4   )     ref  ->  [sp+0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
 ;  V19 tmp4         [V19,T35] (  2,  2   )     ref  ->  r10         class-hnd exact single-def "finalizable newobj spill" <<unknown class>>
 ;* V20 tmp5         [V20    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V21 tmp6         [V21,T41] (  3,  1.50)     ref  ->   r2        
 ;* V22 tmp7         [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <<unknown class>>
 ;  V23 tmp8         [V23,T43] (  2,  1   )     ref  ->  r10         single-def
-;  V24 tmp9         [V24,T29] (  4,  4   )     ref  ->  [sp+0x3C]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-;  V25 tmp10        [V25,T36] (  2,  2   )     ref  ->  [sp+0x38]  class-hnd exact spill-single-def "finalizable newobj spill" <<unknown class>>
+;  V24 tmp9         [V24,T29] (  4,  4   )     ref  ->  [sp+0x34]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V25 tmp10        [V25,T36] (  2,  2   )     ref  ->  [sp+0x30]  class-hnd exact spill-single-def "finalizable newobj spill" <<unknown class>>
 ;* V26 tmp11        [V26    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V27 tmp12        [V27,T42] (  3,  1.50)     ref  ->   r2        
 ;  V28 tmp13        [V28,T37] (  2,  2   )     ref  ->  r10         class-hnd single-def "impAppendStmt" <Microsoft.CodeAnalysis.Text.SourceText>
 ;  V29 tmp14        [V29,T38] (  2,  2   )     ref  ->   r2         class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions>
-;  V30 tmp15        [V30,T33] (  3,  3   )     ref  ->  [sp+0x34]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+;  V30 tmp15        [V30,T33] (  3,  3   )     ref  ->  [sp+0x2C]  class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
 ;  V31 tmp16        [V31,T07] (  6, 12   )     ref  ->   r2         class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.OptionsValidator+_Closure$__0-0>
-;  V32 tmp17        [V32,T02] (  8, 16   )     ref  ->  [sp+0x30]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
-;  V33 tmp18        [V33,T08] (  6, 12   )     ref  ->  [sp+0x2C]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V32 tmp17        [V32,T02] (  8, 16   )     ref  ->  [sp+0x28]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.GlobalImport>
+;  V33 tmp18        [V33,T08] (  6, 12   )     ref  ->  [sp+0x24]  class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V34 tmp19        [V34    ] (  0,  0   )     ref  ->  zero-ref   
-;  V35 tmp20        [V35,T03] (  8, 16   )     ref  ->  [sp+0x28]  class-hnd exact "NewObj constructor temp" <<unknown class>>
-;  V36 tmp21        [V36,T15] (  4,  8   )     ref  ->  [sp+0x24]  class-hnd exact "finalizable newobj spill" <<unknown class>>
+;  V35 tmp20        [V35,T03] (  8, 16   )     ref  ->  [sp+0x20]  class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V36 tmp21        [V36,T15] (  4,  8   )     ref  ->  [sp+0x1C]  class-hnd exact "finalizable newobj spill" <<unknown class>>
 ;* V37 tmp22        [V37    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V38 tmp23        [V38,T22] (  6,  6   )     ref  ->   r2        
-;  V39 tmp24        [V39,T09] (  6, 12   )     ref  ->  [sp+0x20]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
-;  V40 tmp25        [V40,T16] (  4,  8   )     ref  ->  [sp+0x1C]  class-hnd exact "finalizable newobj spill" <<unknown class>>
-;  V41 tmp26        [V41,T10] (  6, 12   )     ref  ->  [sp+0x18]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
+;  V39 tmp24        [V39,T09] (  6, 12   )     ref  ->  [sp+0x18]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.DiagnosticInfo>
+;  V40 tmp25        [V40,T16] (  4,  8   )     ref  ->  [sp+0x14]  class-hnd exact "finalizable newobj spill" <<unknown class>>
+;  V41 tmp26        [V41,T10] (  6, 12   )     ref  ->  [sp+0x10]  class-hnd exact "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.VBDiagnostic>
 ;* V42 tmp27        [V42    ] (  0,  0   )  struct ( 4) zero-ref    "Inlining Arg" <System.Threading.CancellationToken>
-;  V43 tmp28        [V43,T00] ( 10, 20   )  struct (16) [sp+0x5C]  do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
+;  V43 tmp28        [V43,T00] ( 10, 20   )  struct (16) [sp+0x54]  do-not-enreg[HSA] multireg-arg must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.CodeAnalysis.SyntaxNodeOrToken>
 ;* V44 tmp29        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.Location>
-;  V45 tmp30        [V45,T17] (  4,  8   )     ref  ->  [sp+0x14]  class-hnd "Inlining Arg" <System.String>
-;  V46 tmp31        [V46    ] (  4,  5   )     ref  ->  [sp+0x84]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
+;  V45 tmp30        [V45,T17] (  4,  8   )     ref  ->  [sp+0x0C]  class-hnd "Inlining Arg" <System.String>
+;  V46 tmp31        [V46    ] (  4,  5   )     ref  ->  [sp+0x7C]  do-not-enreg[X] addr-exposed "field V06._node (fldOffset=0x0)" P-DEP
 ;* V47 tmp32        [V47,T44] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._source (fldOffset=0x0)" P-INDEP
 ;* V48 tmp33        [V48    ] (  0,  0   )     ref  ->  zero-ref    "field V42._source (fldOffset=0x0)" P-INDEP
 ;  V49 tmp34        [V49,T30] (  2,  4   )     ref  ->   r1         single-def "argument with side effect"
@@ -66,31 +66,29 @@
 ;  V54 tmp39        [V54,T19] (  4,  8   )     ref  ->   r0         "argument with side effect"
 ;  V55 tmp40        [V55,T20] (  4,  8   )     ref  ->   r0         "argument with side effect"
 ;  V56 cse0         [V56,T05] ( 17, 12.50)   byref  ->   r9         "CSE - aggressive"
-;  V57 cse1         [V57,T27] (  4,  5   )     int  ->  [sp+0x58]  spill-single-def "CSE - moderate"
-;  V58 cse2         [V58,T14] (  8,  8   )     int  ->  [sp+0x54]  multi-def "CSE - moderate"
-;  TEMP_02                                   byref  ->  [r11-0x98]
-;  TEMP_01                                     ref  ->  [r11-0x9C]
+;  V57 cse1         [V57,T27] (  4,  5   )     int  ->  [sp+0x50]  spill-single-def "CSE - moderate"
+;  V58 cse2         [V58,T14] (  8,  8   )     int  ->  [sp+0x4C]  multi-def "CSE - moderate"
+;  TEMP_01                                     ref  ->  [r11-0x98]
 ;
-; Lcl frame size = 140
+; Lcl frame size = 132
 
 G_M28747_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 140
-            add     r11, sp, 168
-            sub     r3, r11, 156
+            sub     sp, 132
+            add     r11, sp, 160
+            sub     r3, r11, 152
             movs    r4, 15
             movs    r7, 0
             movs    r2, 0
             stm     r3!, {r2,r7}
             subs    r4, 1
             bhi     SHORT pc-6 (-3 instructions)
-            str     r7, [r3]
             mov     r5, r0
             ; gcrRegs +[r5]
             mov     r6, r1
             ; gcrRegs +[r6]
             movs    r7, 0
-                       ;; size=34 bbWeight=1 PerfScore 14.00
+                       ;; size=32 bbWeight=1 PerfScore 13.00
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r7]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -178,7 +176,7 @@ G_M28747_IG04:        ; bbWeight=0.50, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             ; gcrRegs +[r0]
             mov     r4, r0
             ; gcrRegs +[r4]
-            str     r4, [sp+0x40]
+            str     r4, [sp+0x38]
             ; GC ptr vars +{V18}
             mov     r1, r10
             ; gcrRegs +[r1]
@@ -193,7 +191,7 @@ G_M28747_IG04:        ; bbWeight=0.50, gcrefRegs=01E0 {r5 r6 r7 r8}, byrefRegs=0
             movw    r1, 0xd1ff
             add     r0, r9, r1
             ; byrRegs +[r0]
-            ldr     r1, [sp+0x40]  // [V18 tmp3]
+            ldr     r1, [sp+0x38]  // [V18 tmp3]
             ; gcrRegs +[r1]
             movw    r12, LOW RELOC 0xD1FFAB1E
             movt    r12, HIGH RELOC 0xD1FFAB1E
@@ -237,7 +235,7 @@ G_M28747_IG06:        ; bbWeight=0.50, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRe
             movw    r3, 0xd1ff
             ldr     r4, [r9+r3]
             ; gcrRegs +[r4]
-            str     r4, [sp+0x38]  // [V25 tmp10]
+            str     r4, [sp+0x30]  // [V25 tmp10]
             ; GC ptr vars +{V25}
             movw    r4, LOW RELOC 0xD1FFAB1E
             ; gcrRegs -[r4]
@@ -248,9 +246,9 @@ G_M28747_IG06:        ; bbWeight=0.50, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRe
             ; gcrRegs +[r0]
             mov     r4, r0
             ; gcrRegs +[r4]
-            str     r4, [sp+0x3C]  // [V24 tmp9]
+            str     r4, [sp+0x34]  // [V24 tmp9]
             ; GC ptr vars +{V24}
-            ldr     r1, [sp+0x38]  // [V25 tmp10]
+            ldr     r1, [sp+0x30]  // [V25 tmp10]
             ; gcrRegs +[r1]
             mov     r0, r4
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -264,7 +262,7 @@ G_M28747_IG06:        ; bbWeight=0.50, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRe
             movw    r1, 0xd1ff
             add     r0, r9, r1
             ; byrRegs +[r0]
-            ldr     r1, [sp+0x3C]  // [V24 tmp9]
+            ldr     r1, [sp+0x34]  // [V24 tmp9]
             ; gcrRegs +[r1]
             movw    r12, LOW RELOC 0xD1FFAB1E
             movt    r12, HIGH RELOC 0xD1FFAB1E
@@ -342,7 +340,7 @@ G_M28747_IG08:        ; bbWeight=0.50, gcrefRegs=05E4 {r2 r5 r6 r7 r8 r10}, byre
             blx     r3     // CORINFO_HELP_READYTORUN_NEW
             mov     r4, r0
             ; gcrRegs +[r4]
-            str     r4, [sp+0x34]  // [V30 tmp15]
+            str     r4, [sp+0x2C]  // [V30 tmp15]
             ; GC ptr vars +{V30}
             mov     r0, r4
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -352,9 +350,9 @@ G_M28747_IG08:        ; bbWeight=0.50, gcrefRegs=05E4 {r2 r5 r6 r7 r8 r10}, byre
             ldr     r3, [r4]
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
-            ldr     r4, [sp+0x34]  // [V30 tmp15]
+            ldr     r4, [sp+0x2C]  // [V30 tmp15]
             ; gcrRegs +[r4]
-            str     r4, [sp+0x50]  // [V05 loc3]
+            str     r4, [sp+0x48]  // [V05 loc3]
             ; GC ptr vars +{V05}
             mov     r0, r10
             ; gcrRegs +[r0]
@@ -371,14 +369,14 @@ G_M28747_IG08:        ; bbWeight=0.50, gcrefRegs=05E4 {r2 r5 r6 r7 r8 r10}, byre
             ldr     r2, [r0]
             ldr     r3, [r4]
             blx     r3     // Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax:get_Imports():Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax]:this
-            str     r0, [sp+0x84]  // [V06 loc4]
+            str     r0, [sp+0x7C]  // [V06 loc4]
             movw    r1, LOW RELOC 0xD1FFAB1E
             movt    r1, HIGH RELOC 0xD1FFAB1E
             add     r1, pc
             ldr     r4, [r1]
-            str     r4, [sp+0x58]  // [V57 cse1]
+            str     r4, [sp+0x50]  // [V57 cse1]
             mov     r1, r4
-            add     r0, sp, 132    // [V06 loc4]
+            add     r0, sp, 124    // [V06 loc4]
             ; gcrRegs -[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -386,7 +384,7 @@ G_M28747_IG08:        ; bbWeight=0.50, gcrefRegs=05E4 {r2 r5 r6 r7 r8 r10}, byre
             ldr     r3, [r4]
             blx     r3     // <unknown method>
             subs    r4, r0, 1
-            str     r4, [sp+0x80]  // [V08 loc6]
+            str     r4, [sp+0x78]  // [V08 loc6]
             movs    r3, 0
             cmp     r4, 0
             blt     G_M28747_IG25
@@ -395,9 +393,9 @@ G_M28747_IG08:        ; bbWeight=0.50, gcrefRegs=05E4 {r2 r5 r6 r7 r8 r10}, byre
             ble     G_M28747_IG18
                        ;; size=164 bbWeight=0.50 PerfScore 31.00
 G_M28747_IG09:        ; bbWeight=3.96, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRegs=0200 {r9}, byref, isz
-            ldr     r1, [sp+0x58]  // [V57 cse1]
-            add     r0, sp, 132    // [V06 loc4]
-            str     r3, [sp+0x7C]  // [V09 loc7]
+            ldr     r1, [sp+0x50]  // [V57 cse1]
+            add     r0, sp, 124    // [V06 loc4]
+            str     r3, [sp+0x74]  // [V09 loc7]
             mov     r2, r3
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -405,7 +403,7 @@ G_M28747_IG09:        ; bbWeight=3.96, gcrefRegs=05E0 {r5 r6 r7 r8 r10}, byrefRe
             ldr     lr, [r4]
             blx     lr     // <unknown method>
             ; gcrRegs +[r0]
-            add     r1, sp, 108    // [V10 loc8]
+            add     r1, sp, 100    // [V10 loc8]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -459,9 +457,9 @@ G_M28747_IG11:        ; bbWeight=1.98, gcrefRegs=0564 {r2 r5 r6 r8 r10}, byrefRe
             movt    r1, HIGH RELOC 0xD1FFAB1E
             add     r1, pc
             ldr     r4, [r1]
-            str     r4, [sp+0x54]  // [V58 cse2]
+            str     r4, [sp+0x4C]  // [V58 cse2]
             mov     r1, r4
-            add     r0, sp, 108    // [V10 loc8]
+            add     r0, sp, 100    // [V10 loc8]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -474,8 +472,8 @@ G_M28747_IG11:        ; bbWeight=1.98, gcrefRegs=0564 {r2 r5 r6 r8 r10}, byrefRe
             ; gcrRegs +[r4]
             ldrsb   r0, [r4]
             ; gcrRegs -[r0]
-            add     r0, sp, 92 // [V43 tmp28]
-            str     r4, [sp+0x4C]  // [V12 loc10]
+            add     r0, sp, 84 // [V43 tmp28]
+            str     r4, [sp+0x44]  // [V12 loc10]
             ; GC ptr vars +{V12}
...

-10 (-0.32%) : 115121.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  ->  [sp+0x7C]  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  ->   r1         "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  ->  [sp+0x78]  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  ->   r3         "Inline return value spill temp"
@@ -147,7 +147,7 @@ G_M30062_IG02:        ; bbWeight=1, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
             cmp     r0, 0
-            beq     G_M30062_IG50
+            beq     G_M30062_IG48
                        ;; size=66 bbWeight=1 PerfScore 25.00
 G_M30062_IG03:        ; bbWeight=0.50, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             mov     r0, r5
@@ -263,7 +263,7 @@ G_M30062_IG07:        ; bbWeight=0.50, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             subs    r0, r0, 1
             ldr     r4, [sp+0x280] // [V10 loc3]
             cmp     r0, r4
-            ble     G_M30062_IG50
+            ble     G_M30062_IG48
             str     r6, [sp]   // [V34 OutArgs]
             mov     r0, r5
             ; gcrRegs +[r0]
@@ -293,7 +293,7 @@ G_M30062_IG07:        ; bbWeight=0.50, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             str     r4, [sp+0x204] // [V14 loc7]
             ldr     r3, [sp+0x280] // [V10 loc3]
             cmp     r3, r4
-            bgt     G_M30062_IG50
+            bgt     G_M30062_IG48
                        ;; size=84 bbWeight=0.50 PerfScore 16.50
 G_M30062_IG08:        ; bbWeight=4, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             add     r1, sp, 456    // [V15 loc8]
@@ -309,7 +309,7 @@ G_M30062_IG08:        ; bbWeight=4, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r
             ; gcrRegs -[r0]
             ldrb    r0, [sp+0x1CC] // [V15 loc8+0x04]
             cmp     r0, 0
-            bne     G_M30062_IG49
+            bne     G_M30062_IG47
                        ;; size=34 bbWeight=4 PerfScore 48.00
 G_M30062_IG09:        ; bbWeight=2, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             ldr     r0, [sp+0x1C8] // [V15 loc8]
@@ -322,11 +322,11 @@ G_M30062_IG09:        ; bbWeight=2, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
             cmp     r0, 0
-            bne     G_M30062_IG49
+            bne     G_M30062_IG47
             ldr     r2, [sp+0x1CC] // [V15 loc8+0x04]
             ands    r2, r2, 0x4000
             cmp     r2, 0
-            beq     G_M30062_IG49
+            beq     G_M30062_IG47
             ldr     r4, [sp+0x280] // [V10 loc3]
             adds    r2, r4, 1
             add     r1, sp, 400    // [V16 loc9]
@@ -340,7 +340,7 @@ G_M30062_IG09:        ; bbWeight=2, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r
             ; gcrRegs -[r0]
             ldrb    r0, [sp+0x194] // [V16 loc9+0x04]
             cmp     r0, 0
-            bne     G_M30062_IG49
+            bne     G_M30062_IG47
             ldr     r0, [sp+0x190] // [V16 loc9]
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -351,7 +351,7 @@ G_M30062_IG09:        ; bbWeight=2, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
             cmp     r0, 0
-            beq     G_M30062_IG49
+            beq     G_M30062_IG47
             ldr     r0, [sp+0x1C8] // [V15 loc8]
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -371,7 +371,7 @@ G_M30062_IG09:        ; bbWeight=2, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r
             ldr     r1, [sp+0x6C]  // [TEMP_01]
             ; gcrRegs +[r1]
             cmp     r1, r0
-            bne     G_M30062_IG49
+            bne     G_M30062_IG47
             ldr     r1, [sp+0x2AC] // [V61 tmp27]
             ldr     r1, [r1+0x04]
             ; gcrRegs -[r1]
@@ -379,7 +379,7 @@ G_M30062_IG09:        ; bbWeight=2, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r
             str     r4, [sp+0x18C] // [V17 loc10]
             movs    r3, 0
             cmp     r4, 0
-            blt     G_M30062_IG45
+            blt     G_M30062_IG43
             cmp     r1, r4
             ble     G_M30062_IG28
                        ;; size=160 bbWeight=2 PerfScore 122.00
@@ -389,7 +389,7 @@ G_M30062_IG10:        ; bbWeight=15.84, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=004
             ; gcrRegs +[r2]
             ldr     r1, [r2+0x04]
             cmp     r3, r1
-            bhs     G_M30062_IG71
+            bhs     G_M30062_IG69
             str     r3, [sp+0x188] // [V18 loc11]
             lsls    r1, r3, 3
             adds    r1, 8
@@ -517,7 +517,7 @@ G_M30062_IG13:        ; bbWeight=7.92, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             ; gcrRegs -[r0]
             cmp     r0, 32
             beq     G_M30062_IG26
-            b       SHORT G_M30062_IG47
+            b       SHORT G_M30062_IG45
                        ;; size=204 bbWeight=7.92 PerfScore 617.76
 G_M30062_IG14:        ; bbWeight=2, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             ldr     r4, [sp+0x280] // [V10 loc3]
@@ -570,7 +570,7 @@ G_M30062_IG16:        ; bbWeight=7.92, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             movs    r3, 0
             ldr     r2, [r0+0x04]
             cmp     r3, r2
-            bhs     G_M30062_IG71
+            bhs     G_M30062_IG69
             ldr     r0, [r0+0x08]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -652,7 +652,7 @@ G_M30062_IG19:        ; bbWeight=7.92, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
                        ;; size=2 bbWeight=7.92 PerfScore 7.92
 G_M30062_IG20:        ; bbWeight=7.92, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             cmp     r3, 0
-            bne     G_M30062_IG47
+            bne     G_M30062_IG45
                        ;; size=6 bbWeight=7.92 PerfScore 15.84
 G_M30062_IG21:        ; bbWeight=7.92, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             ldr     r1, [sp+0x88]  // [V78 cse0]
@@ -759,7 +759,7 @@ G_M30062_IG24:        ; bbWeight=7.92, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
                        ;; size=2 bbWeight=7.92 PerfScore 7.92
 G_M30062_IG25:        ; bbWeight=7.92, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             cmp     r3, 0
-            bne     G_M30062_IG47
+            bne     G_M30062_IG45
                        ;; size=6 bbWeight=7.92 PerfScore 15.84
 G_M30062_IG26:        ; bbWeight=15.84, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             ldr     r4, [sp+0x188] // [V18 loc11]
@@ -770,14 +770,14 @@ G_M30062_IG26:        ; bbWeight=15.84, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=004
             ble     G_M30062_IG10
                        ;; size=14 bbWeight=15.84 PerfScore 95.04
 G_M30062_IG27:        ; bbWeight=2, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
-            b       SHORT G_M30062_IG45
+            b       SHORT G_M30062_IG43
                        ;; size=2 bbWeight=2 PerfScore 2.00
 G_M30062_IG28:        ; bbWeight=0.16, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             ldr     r2, [sp+0x1DC] // [V15 loc8+0x14]
             ; gcrRegs +[r2]
             ldr     r1, [r2+0x04]
             cmp     r3, r1
-            bhs     G_M30062_IG71
+            bhs     G_M30062_IG69
             str     r3, [sp+0x188] // [V18 loc11]
             lsls    r1, r3, 3
             adds    r1, 8
@@ -808,7 +808,7 @@ G_M30062_IG30:        ; bbWeight=0.16, isz, extend
             blx     lr     // <unknown method>
             ands    r1, r0, 2
             cmp     r1, 0
-            beq     G_M30062_IG44
+            beq     G_M30062_IG42
                        ;; size=46 bbWeight=0.16 PerfScore 2.56
 G_M30062_IG31:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             ldr     r1, [sp+0x88]  // [V78 cse0]
@@ -820,7 +820,7 @@ G_M30062_IG31:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             blx     r3     // <unknown method>
             ands    r1, r0, 0x800000
             cmp     r1, 0
-            bne     SHORT G_M30062_IG34
+            bne     SHORT G_M30062_IG32
             ldr     r1, [sp+0x88]  // [V78 cse0]
             add     r0, sp, 384    // [V19 loc12]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -865,11 +865,11 @@ G_M30062_IG31:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             ; gcrRegs -[r0]
             ands    r0, r0, 16
             cmp     r0, 0
-            beq     G_M30062_IG44
+            beq     G_M30062_IG42
             ldr     r0, [sp+0x7C]  // [V42 tmp8]
             ; gcrRegs +[r0]
             cmp     r0, 0
-            beq     G_M30062_IG44
+            beq     G_M30062_IG42
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -884,7 +884,7 @@ G_M30062_IG31:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
             cmp     r0, 32
-            bne     G_M30062_IG44
+            bne     G_M30062_IG42
             ldr     r0, [sp+0x78]
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -902,19 +902,10 @@ G_M30062_IG31:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
             cmp     r0, 32
-            bne     SHORT G_M30062_IG32
-            movs    r1, 0
-            b       SHORT G_M30062_IG33
-                       ;; size=202 bbWeight=0.08 PerfScore 6.24
-G_M30062_IG32:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref
-            movs    r1, 1
-                       ;; size=2 bbWeight=0.08 PerfScore 0.08
-G_M30062_IG33:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
-            cmp     r1, 0
-            beq     G_M30062_IG44
-            b       SHORT G_M30062_IG47
-                       ;; size=8 bbWeight=0.08 PerfScore 0.24
-G_M30062_IG34:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
+            beq     G_M30062_IG42
+            b       SHORT G_M30062_IG45
+                       ;; size=202 bbWeight=0.08 PerfScore 6.16
+G_M30062_IG32:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040 {r6}, byref, isz
             ldr     r1, [sp+0x88]  // [V78 cse0]
             add     r0, sp, 384    // [V19 loc12]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -924,7 +915,7 @@ G_M30062_IG34:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             blx     r3     // <unknown method>
             ands    r1, r0, 16
             cmp     r1, 0
-            bne     G_M30062_IG44
+            bne     G_M30062_IG42
             ldr     r1, [sp+0x2AC] // [V61 tmp27]
             ; gcrRegs +[r1]
             adds    r1, 8
@@ -958,7 +949,7 @@ G_M30062_IG34:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             movs    r3, 0
             ldr     r2, [r0+0x04]
             cmp     r3, r2
-            bhs     G_M30062_IG71
+            bhs     G_M30062_IG69
             ldr     r0, [r0+0x08]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
@@ -971,7 +962,7 @@ G_M30062_IG34:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
             ldr     r3, [sp+0x84]
             ; gcrRegs +[r3]
             cmp     r3, 0
-            beq     SHORT G_M30062_IG39
+            beq     SHORT G_M30062_IG37
             mov     r2, r6
             ; byrRegs +[r2]
             str     r3, [sp+0x84]
@@ -990,7 +981,7 @@ G_M30062_IG34:        ; bbWeight=0.08, gcrefRegs=02A0 {r5 r7 r9}, byrefRegs=0040
...

libraries.pmi.linux.arm.checked.mch

-10 (-1.20%) : 187304.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct ( 8) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->   r3         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T20] (  2,  0.04)   ubyte  ->   r1         "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 ( 8) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -88,7 +88,7 @@ G_M10809_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             strb    r1, [r5+0x33]
             ldrh    r1, [r4+0x08]
             cmp     r1, 34
-            bne     G_M10809_IG26
+            bne     G_M10809_IG24
             add     r1, r4, 8
             ; byrRegs +[r1]
             ldr     r0, [r4+0x04]
@@ -98,7 +98,7 @@ G_M10809_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             ; byrRegs -[r1]
             cmp     r1, 34
             beq     SHORT G_M10809_IG07
-            b       SHORT G_M10809_IG26
+            b       SHORT G_M10809_IG24
                        ;; size=32 bbWeight=0.50 PerfScore 6.50
 G_M10809_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r4]
@@ -125,7 +125,7 @@ G_M10809_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=003
             ldr     r1, [r1]
             and     r1, r1, 1
             cmp     r1, 1
-            bne     G_M10809_IG27
+            bne     G_M10809_IG25
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
 G_M10809_IG08:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             movw    r1, 0xd1ff
@@ -185,7 +185,7 @@ G_M10809_IG11:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r
             ; gcrRegs +[r8]
             mov     r9, 0
             cmp     r7, 0
-            ble     SHORT G_M10809_IG23
+            ble     SHORT G_M10809_IG21
             ldr     r3, [r8+0x04]
             cmp     r3, r7
             blt     SHORT G_M10809_IG17
@@ -205,7 +205,7 @@ G_M10809_IG13:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r3 r5-r6 r8]
             movs    r3, 0
             str     r3, [sp+0x14]  // [V05 loc3]
-            b       SHORT G_M10809_IG28
+            b       SHORT G_M10809_IG26
                        ;; size=6 bbWeight=0.00 PerfScore 0.00
 G_M10809_IG14:        ; bbWeight=1.98, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r3 r5-r6 r8]
@@ -244,13 +244,13 @@ G_M10809_IG14:        ; bbWeight=1.98, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefReg
             ; byrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     G_M10809_IG28
+            bne     G_M10809_IG26
                        ;; size=60 bbWeight=1.98 PerfScore 43.56
 G_M10809_IG15:        ; bbWeight=3.96, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r3, [sp+0x14]  // [V05 loc3]
             movw    r2, 0xd1ff
             cmp     r3, r2
-            bhi     G_M10809_IG29
+            bhi     G_M10809_IG27
             add     r3, r8, 8
             ; byrRegs +[r3]
             ldr     r2, [sp+0x14]  // [V05 loc3]
@@ -262,7 +262,7 @@ G_M10809_IG15:        ; bbWeight=3.96, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
 G_M10809_IG16:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r6]
             ; byrRegs -[r3]
-            b       SHORT G_M10809_IG23
+            b       SHORT G_M10809_IG21
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M10809_IG17:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r6]
@@ -279,7 +279,7 @@ G_M10809_IG18:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r3 r5-r6 r8]
             movs    r3, 0
             str     r3, [sp+0x14]  // [V05 loc3]
-            b       SHORT G_M10809_IG28
+            b       SHORT G_M10809_IG26
                        ;; size=6 bbWeight=0.00 PerfScore 0.00
 G_M10809_IG19:        ; bbWeight=0.02, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r3 r5-r6 r8]
@@ -313,25 +313,16 @@ G_M10809_IG19:        ; bbWeight=0.02, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefReg
             ; byrRegs -[r0 r10]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M10809_IG20
-            movs    r1, 0
-            b       SHORT G_M10809_IG21
-                       ;; size=56 bbWeight=0.02 PerfScore 0.44
-G_M10809_IG20:        ; bbWeight=0.02, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref
-            movs    r1, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M10809_IG21:        ; bbWeight=0.02, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
-            cmp     r1, 0
-            beq     SHORT G_M10809_IG28
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M10809_IG22:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+            bne     SHORT G_M10809_IG26
+                       ;; size=52 bbWeight=0.02 PerfScore 0.40
+G_M10809_IG20:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [sp+0x14]  // [V05 loc3]
             movw    r0, 0xd1ff
             cmp     r1, r0
-            bhi     G_M10809_IG29
+            bhi     G_M10809_IG27
             ldr     r1, [r8+0x04]
             cmp     r9, r1
-            bhs     SHORT G_M10809_IG25
+            bhs     SHORT G_M10809_IG23
             add     r1, r8, 8
             ; byrRegs +[r1]
             lsl     r0, r9, 2
@@ -341,7 +332,7 @@ G_M10809_IG22:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             cmp     r7, r9
             bgt     SHORT G_M10809_IG17
                        ;; size=40 bbWeight=0.04 PerfScore 0.56
-G_M10809_IG23:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
+G_M10809_IG21:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r6]
             ; byrRegs -[r1]
             add     r0, r5, 28
@@ -367,18 +358,18 @@ G_M10809_IG23:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000
             movs    r0, 3
             str     r0, [r5+0x28]
                        ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M10809_IG24:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10809_IG22:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 28
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M10809_IG25:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10809_IG23:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r5]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_RNGCHKFAIL
             ; gcr arg pop 0
                        ;; size=10 bbWeight=0 PerfScore 0.00
-G_M10809_IG26:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M10809_IG24:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ; gcrRegs +[r4]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -433,7 +424,7 @@ G_M10809_IG26:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             ; gcrRegs -[r0 r5]
             ; gcr arg pop 0
                        ;; size=102 bbWeight=0 PerfScore 0.00
-G_M10809_IG27:        ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+G_M10809_IG25:        ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r4-r5]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -444,7 +435,7 @@ G_M10809_IG27:        ; bbWeight=0, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             ; gcr arg pop 0
             b       SHORT G_M10809_IG08
                        ;; size=22 bbWeight=0 PerfScore 0.00
-G_M10809_IG28:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M10809_IG26:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r5]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -499,7 +490,7 @@ G_M10809_IG28:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             ; gcrRegs -[r0 r5]
             ; gcr arg pop 0
                        ;; size=102 bbWeight=0 PerfScore 0.00
-G_M10809_IG29:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+G_M10809_IG27:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ; gcrRegs +[r4]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -556,7 +547,7 @@ G_M10809_IG29:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             bkpt    
                        ;; size=104 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 834, prolog size 14, PerfScore 152.13, instruction count 294, allocated bytes for code 834 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 824, prolog size 14, PerfScore 152.03, instruction count 289, allocated bytes for code 824 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -568,7 +559,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 417 (0x001a1) Actual length = 834 (0x000342)
+  Function Length   : 412 (0x0019c) Actual length = 824 (0x000338)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-10 (-0.66%) : 228807.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,T50] (  3,  0   )     ref  ->   r4         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,T30] (  4, 16   )     int  ->   r7         "impSpillLclRefs"
-;  V25 tmp6         [V25,T41] (  2,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
-;  V26 tmp7         [V26,T46] (  2,  0.04)   ubyte  ->   r0         "Inline return value spill temp"
+;  V25 tmp6         [V25,T40] (  2,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+;* V26 tmp7         [V26,T46] (  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,T34] (  8, 12   )     ref  ->   r0         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,T31] (  2, 15.84)   ubyte  ->   r0         "Inline return value spill temp"
 ;  V33 tmp14        [V33,T00] (  5,126.72)     ref  ->  [sp+0x28]  class-hnd spill-single-def "Inlining Arg" <System.Type>
 ;  V34 tmp15        [V34,T01] (  5, 95.04)     ref  ->  [sp+0x24]  class-hnd spill-single-def "Inlining Arg" <System.Reflection.ParameterInfo>
-;* V35 tmp16        [V35,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V35 tmp16        [V35,T41] (  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,T14] (  4, 31.68)     ref  ->   r0         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>
@@ -108,7 +108,7 @@ G_M46704_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ldr     r0, [r4+0x04]
             ; gcrRegs -[r0]
             cmp     r0, 0
-            ble     G_M46704_IG14
+            ble     G_M46704_IG12
             ldr     r0, [r4+0x04]
             ldr     r9, [r7+0x04]
             cmp     r0, r9
@@ -181,7 +181,7 @@ G_M46704_IG05:        ; bbWeight=1.98, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG56
+            beq     G_M46704_IG54
                        ;; size=20 bbWeight=1.98 PerfScore 15.84
 G_M46704_IG06:        ; bbWeight=3.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
             add     r8, r8, 1
@@ -192,7 +192,7 @@ G_M46704_IG06:        ; bbWeight=3.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
 G_M46704_IG07:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r4]
             ; byrRegs -[r9]
-            b       SHORT G_M46704_IG14
+            b       SHORT G_M46704_IG12
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r4]
@@ -211,7 +211,7 @@ G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs +[r1]
             ldr     r9, [r7+0x04]
             cmp     r8, r9
-            bhs     G_M46704_IG54
+            bhs     G_M46704_IG52
             add     r9, r7, 8
             ; byrRegs +[r9]
             lsl     r0, r8, 2
@@ -234,7 +234,7 @@ G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG12
+            beq     SHORT G_M46704_IG10
                        ;; size=80 bbWeight=0.04 PerfScore 1.04
 G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
             ldr     r3, [r0]
@@ -251,20 +251,10 @@ G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefReg
             ldr     r3, [r5+0x04]
             ; gcrRegs +[r3]
             cmp     r0, r3
-            beq     SHORT G_M46704_IG10
-            movs    r0, 0
-            ; gcrRegs -[r0]
-            b       SHORT G_M46704_IG11
-                       ;; size=28 bbWeight=0.02 PerfScore 0.28
-G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref
-            ; gcrRegs -[r3]
-            movs    r0, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M46704_IG11:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
-            cmp     r0, 0
-            bne     SHORT G_M46704_IG13
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M46704_IG12:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
+            beq     SHORT G_M46704_IG11
+                       ;; size=24 bbWeight=0.02 PerfScore 0.24
+G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
+            ; gcrRegs -[r0 r3]
             lsl     r0, r8, 2
             ldr     r0, [r9+r0]
             ; gcrRegs +[r0]
@@ -276,23 +266,23 @@ G_M46704_IG12:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; byrRegs -[r9]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG56
+            beq     G_M46704_IG54
                        ;; size=22 bbWeight=0.02 PerfScore 0.16
-G_M46704_IG13:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG11:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             add     r8, r8, 1
             ldr     r0, [r4+0x04]
             cmp     r0, r8
             bgt     SHORT G_M46704_IG08
                        ;; size=10 bbWeight=0.04 PerfScore 0.16
-G_M46704_IG14:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG12:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r4]
             mov     r4, r7
             ; gcrRegs +[r4]
             cmp     r6, 0
-            beq     G_M46704_IG55
+            beq     G_M46704_IG53
             ldr     r0, [r6+0x04]
             cmp     r0, 0
-            beq     G_M46704_IG55
+            beq     G_M46704_IG53
             mov     r0, r6
             ; gcrRegs +[r0]
             movw    r3, 0xd1ff
@@ -308,9 +298,9 @@ G_M46704_IG14:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
             mov     r8, 0
             ldr     r9, [r6+0x04]
             cmp     r9, 0
-            ble     G_M46704_IG30
+            ble     G_M46704_IG28
                        ;; size=52 bbWeight=1 PerfScore 18.00
-G_M46704_IG15:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG13:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             add     r0, r6, 8
             ; byrRegs +[r0]
@@ -332,15 +322,15 @@ G_M46704_IG15:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ; gcrRegs -[r0]
             ldr     r2, [r4+0x04]
             cmp     r0, r2
-            bne     G_M46704_IG29
+            bne     G_M46704_IG27
                        ;; size=38 bbWeight=4 PerfScore 56.00
-G_M46704_IG16:        ; bbWeight=2, gcVars=0000000000800000 {V14}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG14:        ; bbWeight=2, gcVars=0000000000800000 {V14}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             movs    r1, 0
             str     r2, [sp+0x44]  // [V59 cse3]
             cmp     r2, 0
-            ble     SHORT G_M46704_IG19
+            ble     SHORT G_M46704_IG17
                        ;; size=8 bbWeight=2 PerfScore 8.00
-G_M46704_IG17:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG15:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             add     lr, r3, 8
             ; byrRegs +[lr]
             str     lr, [sp+0x18]  // [V61 cse5]
@@ -388,9 +378,9 @@ G_M46704_IG17:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=
             ; byrRegs -[r3]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG20
+            beq     SHORT G_M46704_IG18
                        ;; size=76 bbWeight=15.84 PerfScore 427.68
-G_M46704_IG18:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG16:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [sp+0x24]  // [V34 tmp15]
             ; gcrRegs +[r0]
             ldr     r3, [r0]
@@ -409,15 +399,15 @@ G_M46704_IG18:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             blx     r3     // <unknown method>
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
-            b       SHORT G_M46704_IG21
+            b       SHORT G_M46704_IG19
                        ;; size=28 bbWeight=7.92 PerfScore 95.04
-G_M46704_IG19:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG17:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r7]
             ; GC ptr vars -{V14 V60}
             str     r1, [sp+0x58]  // [V06 loc1]
-            b       SHORT G_M46704_IG28
+            b       SHORT G_M46704_IG26
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M46704_IG20:        ; bbWeight=7.92, gcVars=0000000000800103 {V14 V33 V34 V60}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG18:        ; bbWeight=7.92, gcVars=0000000000800103 {V14 V33 V34 V60}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[r7]
             ; GC ptr vars +{V00 V08 V14 V33 V34 V60}
             ldr     r0, [sp+0x24]  // [V34 tmp15]
@@ -431,16 +421,16 @@ G_M46704_IG20:        ; bbWeight=7.92, gcVars=0000000000800103 {V14 V33 V34 V60}
             ldr     r1, [sp+0x28]  // [V33 tmp14]
             ; gcrRegs +[r1]
             cmp     r0, r1
-            beq     SHORT G_M46704_IG26
-            b       SHORT G_M46704_IG22
+            beq     SHORT G_M46704_IG24
+            b       SHORT G_M46704_IG20
                        ;; size=18 bbWeight=7.92 PerfScore 71.28
-G_M46704_IG21:        ; bbWeight=7.92, gcVars=0000000000800100 {V14 V60}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG19:        ; bbWeight=7.92, gcVars=0000000000800100 {V14 V60}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0-r1]
             ; GC ptr vars -{V33}
             cmp     r0, 0
-            bne     SHORT G_M46704_IG26
+            bne     SHORT G_M46704_IG24
                        ;; size=4 bbWeight=7.92 PerfScore 15.84
-G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG20:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [r5+0x08]
             ; gcrRegs +[r1]
             mov     r0, r7
@@ -452,7 +442,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     SHORT G_M46704_IG26
+            bne     SHORT G_M46704_IG24
             ldr     r0, [sp+0x1C]  // [V60 cse4]
             ; byrRegs +[r0]
             ldr     r2, [sp+0x48]  // [V58 cse2]
@@ -471,7 +461,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0 r3]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG23
+            beq     SHORT G_M46704_IG21
             add     r1, r6, 8
             ; byrRegs +[r1]
             ldr     r3, [sp+0x3C]  // [V64 cse8]
@@ -486,7 +476,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG28
+            beq     SHORT G_M46704_IG26
             ldr     r3, [r0]
             ldr     r3, [r3+0x38]
             ldr     r3, [r3+0x10]
@@ -507,9 +497,9 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             str     r3, [sp+0x2C]
             ; GC ptr vars +{V16}
             cmp     r3, 0
-            beq     SHORT G_M46704_IG28
+            beq     SHORT G_M46704_IG26
                        ;; size=104 bbWeight=7.92 PerfScore 340.56
-G_M46704_IG23:        ; bbWeight=7.92, gcVars=0000000000800008 {V14 V16}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG21:        ; bbWeight=7.92, gcVars=0000000000800008 {V14 V16}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0 r3]
             mov     r0, r7
             ; gcrRegs +[r0]
@@ -521,7 +511,7 @@ G_M46704_IG23:        ; bbWeight=7.92, gcVars=0000000000800008 {V14 V16}, gcrefR
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG25
+            beq     SHORT G_M46704_IG23
...

-10 (-0.65%) : 235457.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

@@ -32,9 +32,9 @@
 ;  V21 tmp3         [V21,T49] (  3,  0   )     ref  ->   r4         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V22 tmp4         [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <System.Type>
 ;  V23 tmp5         [V23,T30] (  4, 16   )     int  ->   r7         "impSpillLclRefs"
-;  V24 tmp6         [V24,T41] (  2,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+;  V24 tmp6         [V24,T40] (  2,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
 ;  V25 tmp7         [V25,T50] (  3,  0   )     ref  ->   r4         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V26 tmp8         [V26,T46] (  2,  0.04)   ubyte  ->   r0         "Inline return value spill temp"
+;* V26 tmp8         [V26,T46] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V27 tmp9         [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V28 tmp10        [V28,T34] (  8, 12   )     ref  ->   r0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V29 tmp11        [V29    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -43,7 +43,7 @@
 ;  V32 tmp14        [V32,T31] (  2, 15.84)   ubyte  ->   r0         "Inline return value spill temp"
 ;  V33 tmp15        [V33,T00] (  5,126.72)     ref  ->  [sp+0x28]  class-hnd spill-single-def "Inlining Arg" <System.Type>
 ;  V34 tmp16        [V34,T01] (  5, 95.04)     ref  ->  [sp+0x24]  class-hnd spill-single-def "Inlining Arg" <System.Reflection.ParameterInfo>
-;* V35 tmp17        [V35,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V35 tmp17        [V35,T41] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V36 tmp18        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
 ;  V37 tmp19        [V37,T14] (  4, 31.68)     ref  ->   r0         class-hnd "Inline stloc first use temp" <System.Reflection.TypeLoading.RoType>
 ;* V38 tmp20        [V38    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Reflection.TypeLoading.RoModule>
@@ -109,7 +109,7 @@ G_M46704_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ldr     r0, [r4+0x04]
             ; gcrRegs -[r0]
             cmp     r0, 0
-            ble     G_M46704_IG14
+            ble     G_M46704_IG12
             ldr     r0, [r4+0x04]
             ldr     r9, [r7+0x04]
             cmp     r0, r9
@@ -182,7 +182,7 @@ G_M46704_IG05:        ; bbWeight=1.98, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG56
+            beq     G_M46704_IG54
                        ;; size=20 bbWeight=1.98 PerfScore 15.84
 G_M46704_IG06:        ; bbWeight=3.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
             add     r8, r8, 1
@@ -193,7 +193,7 @@ G_M46704_IG06:        ; bbWeight=3.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
 G_M46704_IG07:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r4]
             ; byrRegs -[r9]
-            b       SHORT G_M46704_IG14
+            b       SHORT G_M46704_IG12
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r4]
@@ -212,7 +212,7 @@ G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs +[r1]
             ldr     r9, [r7+0x04]
             cmp     r8, r9
-            bhs     G_M46704_IG54
+            bhs     G_M46704_IG52
             add     r9, r7, 8
             ; byrRegs +[r9]
             lsl     r0, r8, 2
@@ -235,7 +235,7 @@ G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG12
+            beq     SHORT G_M46704_IG10
                        ;; size=80 bbWeight=0.04 PerfScore 1.04
 G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
             ldr     r3, [r0]
@@ -252,20 +252,10 @@ G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefReg
             ldr     r3, [r5+0x04]
             ; gcrRegs +[r3]
             cmp     r0, r3
-            beq     SHORT G_M46704_IG10
-            movs    r0, 0
-            ; gcrRegs -[r0]
-            b       SHORT G_M46704_IG11
-                       ;; size=28 bbWeight=0.02 PerfScore 0.28
-G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref
-            ; gcrRegs -[r3]
-            movs    r0, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M46704_IG11:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
-            cmp     r0, 0
-            bne     SHORT G_M46704_IG13
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M46704_IG12:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
+            beq     SHORT G_M46704_IG11
+                       ;; size=24 bbWeight=0.02 PerfScore 0.24
+G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
+            ; gcrRegs -[r0 r3]
             lsl     r0, r8, 2
             ldr     r0, [r9+r0]
             ; gcrRegs +[r0]
@@ -277,23 +267,23 @@ G_M46704_IG12:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; byrRegs -[r9]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG56
+            beq     G_M46704_IG54
                        ;; size=22 bbWeight=0.02 PerfScore 0.16
-G_M46704_IG13:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG11:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             add     r8, r8, 1
             ldr     r0, [r4+0x04]
             cmp     r0, r8
             bgt     SHORT G_M46704_IG08
                        ;; size=10 bbWeight=0.04 PerfScore 0.16
-G_M46704_IG14:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG12:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r4]
             mov     r4, r7
             ; gcrRegs +[r4]
             cmp     r6, 0
-            beq     G_M46704_IG55
+            beq     G_M46704_IG53
             ldr     r0, [r6+0x04]
             cmp     r0, 0
-            beq     G_M46704_IG55
+            beq     G_M46704_IG53
             mov     r0, r6
             ; gcrRegs +[r0]
             movw    r3, 0xd1ff
@@ -309,9 +299,9 @@ G_M46704_IG14:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
             mov     r8, 0
             ldr     r9, [r6+0x04]
             cmp     r9, 0
-            ble     G_M46704_IG30
+            ble     G_M46704_IG28
                        ;; size=52 bbWeight=1 PerfScore 18.00
-G_M46704_IG15:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG13:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             add     r0, r6, 8
             ; byrRegs +[r0]
@@ -333,15 +323,15 @@ G_M46704_IG15:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ; gcrRegs -[r0]
             ldr     r2, [r4+0x04]
             cmp     r0, r2
-            bne     G_M46704_IG29
+            bne     G_M46704_IG27
                        ;; size=38 bbWeight=4 PerfScore 56.00
-G_M46704_IG16:        ; bbWeight=2, gcVars=0000000000800000 {V13}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG14:        ; bbWeight=2, gcVars=0000000000800000 {V13}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             movs    r1, 0
             str     r2, [sp+0x44]  // [V60 cse3]
             cmp     r2, 0
-            ble     SHORT G_M46704_IG19
+            ble     SHORT G_M46704_IG17
                        ;; size=8 bbWeight=2 PerfScore 8.00
-G_M46704_IG17:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG15:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             add     lr, r3, 8
             ; byrRegs +[lr]
             str     lr, [sp+0x18]  // [V62 cse5]
@@ -389,9 +379,9 @@ G_M46704_IG17:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=
             ; byrRegs -[r3]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG20
+            beq     SHORT G_M46704_IG18
                        ;; size=76 bbWeight=15.84 PerfScore 427.68
-G_M46704_IG18:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG16:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [sp+0x24]  // [V34 tmp16]
             ; gcrRegs +[r0]
             ldr     r3, [r0]
@@ -410,15 +400,15 @@ G_M46704_IG18:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             blx     r3     // <unknown method>
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
-            b       SHORT G_M46704_IG21
+            b       SHORT G_M46704_IG19
                        ;; size=28 bbWeight=7.92 PerfScore 95.04
-G_M46704_IG19:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG17:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r7]
             ; GC ptr vars -{V13 V61}
             str     r1, [sp+0x58]  // [V06 loc1]
-            b       SHORT G_M46704_IG28
+            b       SHORT G_M46704_IG26
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M46704_IG20:        ; bbWeight=7.92, gcVars=0000000000800103 {V13 V33 V34 V61}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG18:        ; bbWeight=7.92, gcVars=0000000000800103 {V13 V33 V34 V61}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[r7]
             ; GC ptr vars +{V00 V08 V13 V23 V33 V34 V61}
             ldr     r0, [sp+0x24]  // [V34 tmp16]
@@ -432,16 +422,16 @@ G_M46704_IG20:        ; bbWeight=7.92, gcVars=0000000000800103 {V13 V33 V34 V61}
             ldr     r1, [sp+0x28]  // [V33 tmp15]
             ; gcrRegs +[r1]
             cmp     r0, r1
-            beq     SHORT G_M46704_IG26
-            b       SHORT G_M46704_IG22
+            beq     SHORT G_M46704_IG24
+            b       SHORT G_M46704_IG20
                        ;; size=18 bbWeight=7.92 PerfScore 71.28
-G_M46704_IG21:        ; bbWeight=7.92, gcVars=0000000000800100 {V13 V61}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG19:        ; bbWeight=7.92, gcVars=0000000000800100 {V13 V61}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0-r1]
             ; GC ptr vars -{V33}
             cmp     r0, 0
-            bne     SHORT G_M46704_IG26
+            bne     SHORT G_M46704_IG24
                        ;; size=4 bbWeight=7.92 PerfScore 15.84
-G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG20:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [r5+0x08]
             ; gcrRegs +[r1]
             mov     r0, r7
@@ -453,7 +443,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     SHORT G_M46704_IG26
+            bne     SHORT G_M46704_IG24
             ldr     r0, [sp+0x1C]  // [V61 cse4]
             ; byrRegs +[r0]
             ldr     r2, [sp+0x48]  // [V59 cse2]
@@ -472,7 +462,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0 r3]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG23
+            beq     SHORT G_M46704_IG21
             add     r1, r6, 8
             ; byrRegs +[r1]
             ldr     r3, [sp+0x3C]  // [V65 cse8]
@@ -487,7 +477,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG28
+            beq     SHORT G_M46704_IG26
             ldr     r3, [r0]
             ldr     r3, [r3+0x38]
             ldr     r3, [r3+0x10]
@@ -508,9 +498,9 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             str     r3, [sp+0x2C]
             ; GC ptr vars +{V15}
             cmp     r3, 0
-            beq     SHORT G_M46704_IG28
+            beq     SHORT G_M46704_IG26
                        ;; size=104 bbWeight=7.92 PerfScore 340.56
-G_M46704_IG23:        ; bbWeight=7.92, gcVars=0000000000800008 {V13 V15}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG21:        ; bbWeight=7.92, gcVars=0000000000800008 {V13 V15}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0 r3]
             mov     r0, r7
             ; gcrRegs +[r0]
@@ -522,7 +512,7 @@ G_M46704_IG23:        ; bbWeight=7.92, gcVars=0000000000800008 {V13 V15}, gcrefR
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG25
...

+0 (0.00%) : 166283.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  ->   r5         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->   r6         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T05] (  5, 50   )     int  ->   r4        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->   r7         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->   r7         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->   r8        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 4) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.Nullable`1[int]]>
 ;  V06 loc3         [V06,T01] (  8,104   )     ref  ->  [sp+0x08]  class-hnd <<unknown class>>
@@ -22,23 +22,20 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->  [sp+0x04]  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  ->   r3         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->   r3         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T06] (  2, 32   )   ubyte  ->   r1         "field V13.hasValue (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T07] (  2, 32   )     int  ->  [sp+0x10]  spill-single-def "field V13.value (fldOffset=0x4)" P-INDEP
 ;* V17 tmp10        [V17    ] (  0,  0   )     ref  ->  zero-ref    "V08.[000..004)"
 ;  V18 tmp11        [V18,T08] (  2, 32   )   ubyte  ->  [sp+0x0C]  spill-single-def "V08.[004..005)"
 ;* V19 tmp12        [V19    ] (  0,  0   )     int  ->  zero-ref    "V08.[008..012)"
 ;  V20 cse0         [V20,T13] (  2, 17   )     int  ->  r10         hoist "CSE - aggressive"
-;  V21 cse1         [V21,T18] (  3,  6   )     int  ->   r9         "CSE - moderate"
-;  V22 rat0         [V22,T20] (  3,  4.40)     int  ->   r0         "Spilling to split statement for tree"
-;  V23 rat1         [V23,T21] (  3,  4   )     int  ->  r10         "runtime lookup"
-;  V24 rat2         [V24,T19] (  3,  5.60)     int  ->  r10         "fgMakeTemp is creating a new local variable"
-;* V25 rat3         [V25,T15] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat4         [V26,T22] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V27 rat5         [V27,T14] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V28 rat6         [V28,T03] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V29 rat7         [V29,T09] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V30 rat8         [V30,T02] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V21 cse1         [V21,T16] (  3,  6   )     int  ->   r9         "CSE - moderate"
+;  V22 rat0         [V22,T18] (  3,  4.40)     int  ->   r0         "Spilling to split statement for tree"
+;  V23 rat1         [V23,T19] (  3,  4   )     int  ->  r10         "runtime lookup"
+;  V24 rat2         [V24,T17] (  3,  5.60)     int  ->  r10         "fgMakeTemp is creating a new local variable"
+;* V25 rat3         [V25,T03] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V26 rat4         [V26,T09] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V27 rat5         [V27,T02] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 28
 

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

@@ -8,70 +8,67 @@
 ; 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  ->   r5         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
-;  V01 arg1         [V01,T05] ( 18,1118   )     ref  ->   r6         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
+;  V00 this         [V00,T07] ( 13,1139   )     ref  ->   r6         this class-hnd single-def <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]>
+;  V01 arg1         [V01,T04] ( 18,1118   )     ref  ->   r5         class-hnd <ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]>
 ;  V02 loc0         [V02,T03] (  8,1328   )     ref  ->   r9         class-hnd <<unknown class>>
 ;  V03 loc1         [V03    ] (  3,  24   )  struct ( 8) [sp+0x14]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
 ;  V04 loc2         [V04    ] (  4,1296   )  struct ( 8) [sp+0x0C]  do-not-enreg[XS] must-init addr-exposed <ILCompiler.LazyGenericsSupport+Graph`1+Edge[System.__Canon]>
 ;* V05 loc3         [V05    ] (  0,   0   )  struct ( 8) zero-ref    multireg-arg ld-addr-op <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V06 loc4         [V06,T06] (  9,1216   )     ref  ->   r9         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
+;  V06 loc4         [V06,T05] (  9,1216   )     ref  ->   r9         class-hnd exact <System.Collections.Generic.List`1[System.__Canon]>
 ;  V07 loc5         [V07,T08] (  5, 896   )     ref  ->   r4         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   )     int  ->  zero-ref    "spilling helperCall"
-;  V10 tmp2         [V10,T29] (  3,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
+;  V10 tmp2         [V10,T26] (  3,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
 ;* V11 tmp3         [V11    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp4         [V12,T00] (  4,3072   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V13 tmp5         [V13,T18] (  3, 192   )     ref  ->   r9         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+;  V13 tmp5         [V13,T15] (  3, 192   )     ref  ->   r9         class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
 ;* V14 tmp6         [V14    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V15 tmp7         [V15    ] (  0,   0   )     int  ->  zero-ref    "spilling helperCall"
-;  V16 tmp8         [V16,T26] (  4,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V17 tmp9         [V17,T31] (  3,  43.88)     int  ->  r10         "non-inline candidate call"
+;  V16 tmp8         [V16,T23] (  4,  48   )     int  ->   r4         "VirtualCall with runtime lookup"
+;  V17 tmp9         [V17,T28] (  3,  43.88)     int  ->  r10         "non-inline candidate call"
 ;  V18 tmp10        [V18    ] (  2,  32   )  struct ( 8) [sp+0x04]  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  ->   r4         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
-;  V20 tmp12        [V20,T38] (  4,  20   )     int  ->   r9         "Inline stloc first use temp"
-;  V21 tmp13        [V21,T39] (  3,  18   )     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V22 tmp14        [V22,T40] (  3,  16   )     int  ->   r0         "Inline return value spill temp"
-;  V23 tmp15        [V23,T33] (  3,  36.12)     int  ->   r0         "Inlining Arg"
-;  V24 tmp16        [V24,T20] (  7, 160   )     ref  ->   r6         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
-;  V25 tmp17        [V25,T27] (  4,  48   )     int  ->   r4         "Inline stloc first use temp"
-;  V26 tmp18        [V26,T32] (  3,  40   )     ref  ->   r0         class-hnd exact "Inline stloc first use temp" <<unknown class>>
+;  V19 tmp11        [V19,T22] (  7,  64   )     ref  ->   r4         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[System.__Canon]>
+;  V20 tmp12        [V20,T35] (  4,  20   )     int  ->   r9         "Inline stloc first use temp"
+;  V21 tmp13        [V21,T36] (  3,  18   )     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V22 tmp14        [V22,T37] (  3,  16   )     int  ->   r0         "Inline return value spill temp"
+;  V23 tmp15        [V23,T30] (  3,  36.12)     int  ->   r0         "Inlining Arg"
+;  V24 tmp16        [V24,T17] (  7, 160   )     ref  ->   r5         class-hnd "Inlining Arg" <System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]>
+;  V25 tmp17        [V25,T24] (  4,  48   )     int  ->   r4         "Inline stloc first use temp"
+;  V26 tmp18        [V26,T29] (  3,  40   )     ref  ->   r0         class-hnd exact "Inline stloc first use temp" <<unknown class>>
 ;* V27 tmp19        [V27    ] (  0,   0   )  struct ( 8) zero-ref    "Inlining Arg" <ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]>
-;  V28 tmp20        [V28,T16] (  3, 256   )     int  ->   r0         "Inline return value spill temp"
-;  V29 tmp21        [V29,T11] (  3, 702.09)     int  ->   r3         "Inlining Arg"
-;  V30 tmp22        [V30,T13] (  3, 577.91)     int  ->   r0         "Inlining Arg"
-;  V31 tmp23        [V31,T12] (  3, 628.79)     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V28 tmp20        [V28,T14] (  3, 256   )     int  ->   r0         "Inline return value spill temp"
+;  V29 tmp21        [V29,T10] (  3, 702.09)     int  ->   r3         "Inlining Arg"
+;  V30 tmp22        [V30,T12] (  3, 577.91)     int  ->   r0         "Inlining Arg"
+;  V31 tmp23        [V31,T11] (  3, 628.79)     ref  ->   r0         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V32 tmp24        [V32,T09] (  4, 745.57)     int  ->   r1         "Inline stloc first use temp"
-;  V33 tmp25        [V33,T15] (  7, 384   )     ref  ->   r0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V34 tmp26        [V34,T24] (  3,  93.20)     ref  ->   r1         class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V35 tmp27        [V35,T23] (  4, 122.39)     int  ->   r2         "Inline stloc first use temp"
+;  V33 tmp25        [V33,T13] (  7, 384   )     ref  ->   r0         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
+;  V34 tmp26        [V34,T21] (  3,  93.20)     ref  ->   r1         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V35 tmp27        [V35,T20] (  4, 122.39)     int  ->   r2         "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  ->  [sp+0x14]  do-not-enreg[X] addr-exposed "field V03.Vertex (fldOffset=0x0)" P-DEP
 ;  V38 tmp30        [V38    ] (  2,  16   )     ref  ->  [sp+0x18]  do-not-enreg[X] addr-exposed "field V03.EdgeEnumeratorPosition (fldOffset=0x4)" P-DEP
 ;  V39 tmp31        [V39    ] (  4,1296   )     ref  ->  [sp+0x0C]  do-not-enreg[X] addr-exposed "field V04.Destination (fldOffset=0x0)" P-DEP
 ;  V40 tmp32        [V40    ] (  1, 512   )   ubyte  ->  [sp+0x10]  do-not-enreg[X] addr-exposed "field V04.Flagged (fldOffset=0x4)" P-DEP
-;  V41 tmp33        [V41,T35] (  3,  32   )     ref  ->   r1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
-;  V42 tmp34        [V42,T36] (  3,  32   )     ref  ->   r2         "field V05.EdgeEnumeratorPosition (fldOffset=0x4)" P-INDEP
-;  V43 tmp35        [V43,T37] (  2,  24   )     ref  ->  [sp+0x04]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
-;  V44 tmp36        [V44,T41] (  1,  16   )   ubyte  ->  [sp+0x08]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x4)" P-DEP
+;  V41 tmp33        [V41,T32] (  3,  32   )     ref  ->   r1         "field V05.Vertex (fldOffset=0x0)" P-INDEP
+;  V42 tmp34        [V42,T33] (  3,  32   )     ref  ->   r2         "field V05.EdgeEnumeratorPosition (fldOffset=0x4)" P-INDEP
+;  V43 tmp35        [V43,T34] (  2,  24   )     ref  ->  [sp+0x04]  do-not-enreg[H] hidden-struct-arg "field V18.Destination (fldOffset=0x0)" P-DEP
+;  V44 tmp36        [V44,T38] (  1,  16   )   ubyte  ->  [sp+0x08]  do-not-enreg[H] hidden-struct-arg "field V18.Flagged (fldOffset=0x4)" 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=0x4)" P-INDEP
-;  V47 tmp39        [V47,T28] (  3,  48   )   byref  ->   r9         "BlockOp address local"
-;  V48 cse0         [V48,T43] (  2,   9   )     int  ->   r8         hoist "CSE - moderate"
-;  V49 cse1         [V49,T07] (  3,1152   )     int  ->   r0         "CSE - aggressive"
-;  V50 cse2         [V50,T34] (  4,  32   )     int  ->   r0         "CSE - moderate"
-;  V51 cse3         [V51,T42] (  4,  11.60)     int  ->   r7         hoist "CSE - moderate"
-;  V52 rat0         [V52,T45] (  3,   4.40)     int  ->   r0         "Spilling to split statement for tree"
-;  V53 rat1         [V53,T46] (  3,   4   )     int  ->   r8         "runtime lookup"
-;  V54 rat2         [V54,T44] (  3,   5.60)     int  ->   r8         "fgMakeTemp is creating a new local variable"
-;  V55 rat3         [V55,T30] (  3,  44.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;* V56 rat4         [V56,T14] (  0,   0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V57 rat5         [V57,T17] (  0,   0   )     int  ->  zero-ref    "runtime lookup"
-;* V58 rat6         [V58,T10] (  0,   0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V59 rat7         [V59,T02] (  3,2252.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V60 rat8         [V60,T01] (  3,2867.20)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;  V61 rat9         [V61,T21] (  3, 140.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V62 rat10        [V62,T22] (  3, 128   )     int  ->   r1         "runtime lookup"
-;  V63 rat11        [V63,T19] (  3, 179.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V47 tmp39        [V47,T25] (  3,  48   )   byref  ->   r9         "BlockOp address local"
+;  V48 cse0         [V48,T40] (  2,   9   )     int  ->   r8         hoist "CSE - moderate"
+;  V49 cse1         [V49,T06] (  3,1152   )     int  ->   r0         "CSE - aggressive"
+;  V50 cse2         [V50,T31] (  4,  32   )     int  ->   r0         "CSE - moderate"
+;  V51 cse3         [V51,T39] (  4,  11.60)     int  ->   r7         "CSE - moderate"
+;  V52 rat0         [V52,T42] (  3,   4.40)     int  ->   r0         "Spilling to split statement for tree"
+;  V53 rat1         [V53,T43] (  3,   4   )     int  ->   r8         "runtime lookup"
+;  V54 rat2         [V54,T41] (  3,   5.60)     int  ->   r8         "fgMakeTemp is creating a new local variable"
+;  V55 rat3         [V55,T27] (  3,  44.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V56 rat4         [V56,T02] (  3,2252.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V57 rat5         [V57,T01] (  3,2867.20)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V58 rat6         [V58,T18] (  3, 140.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V59 rat7         [V59,T19] (  3, 128   )     int  ->   r1         "runtime lookup"
+;  V60 rat8         [V60,T16] (  3, 179.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 36
 
@@ -86,13 +83,13 @@ G_M1799_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             stm     r4!, {r2,r3}
             stm     r4!, {r2,r3}
             str     r0, [r11-0x24]
-            mov     r5, r0
-            ; gcrRegs +[r5]
-            mov     r6, r1
+            mov     r6, r0
             ; gcrRegs +[r6]
+            mov     r5, r1
+            ; gcrRegs +[r5]
                        ;; size=32 bbWeight=1 PerfScore 12.00
 G_M1799_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r7, [r5]
+            ldr     r7, [r6]
             mov     r0, r7
             ldr     r1, [r0+0x24]
             ldr     r1, [r1]
@@ -113,12 +110,12 @@ G_M1799_IG04:        ; bbWeight=0.20, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {},
             mov     r8, r0
                        ;; size=20 bbWeight=0.20 PerfScore 1.20
 G_M1799_IG05:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5+0x14]
-            str     r0, [r6+0x0C]
-            str     r0, [r6+0x10]
+            ldr     r0, [r6+0x14]
+            str     r0, [r5+0x0C]
+            str     r0, [r5+0x10]
             adds    r0, r0, 1
-            str     r0, [r5+0x14]
-            ldr     r4, [r5+0x04]
+            str     r0, [r6+0x14]
+            ldr     r4, [r6+0x04]
             ; gcrRegs +[r4]
             ldr     r9, [r4+0x08]
             ldr     r0, [r4+0x04]
@@ -129,7 +126,7 @@ G_M1799_IG05:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
                        ;; size=24 bbWeight=8 PerfScore 88.00
 G_M1799_IG06:        ; bbWeight=2, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             mov     r1, r9
-            mov     r2, r6
+            mov     r2, r5
             ; gcrRegs +[r2]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -146,7 +143,7 @@ G_M1799_IG06:        ; bbWeight=2, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000
 G_M1799_IG07:        ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r4
             ; gcrRegs +[r0]
-            mov     r1, r6
+            mov     r1, r5
             ; gcrRegs +[r1]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -157,9 +154,9 @@ G_M1799_IG07:        ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {},
                        ;; size=16 bbWeight=2 PerfScore 12.00
 G_M1799_IG08:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             movs    r0, 1
-            strb    r0, [r6+0x16]
+            strb    r0, [r5+0x16]
             mov     r4, r8
-            ldr     r0, [r6+0x08]
+            ldr     r0, [r5+0x08]
             ; gcrRegs +[r0]
             ldr     r3, [r4]
             blx     r3
@@ -169,9 +166,9 @@ G_M1799_IG08:        ; bbWeight=8, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, by
             cmp     r9, 0
             bne     SHORT G_M1799_IG15
                        ;; size=20 bbWeight=8 PerfScore 72.00
-G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r0 r6 r9]
-            ldr     r0, [r5+0x10]
+G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r0 r5 r9]
+            ldr     r0, [r6+0x10]
             ; gcrRegs +[r0]
             add     r1, sp, 20
             movw    r3, 0xd1ff
@@ -181,8 +178,8 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             blx     r3     // System.Collections.Generic.Stack`1[ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]]:Pop():ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass+StrongConnectStackElement[System.__Canon]:this
             ; gcrRegs -[r0]
             ; gcr arg pop 0
-            ldr     r6, [sp+0x14]
-            ; gcrRegs +[r6]
+            ldr     r5, [sp+0x14]
+            ; gcrRegs +[r5]
             ldr     r9, [sp+0x18]
             ; gcrRegs +[r9]
             ldr     r0, [r7+0x24]
@@ -192,7 +189,7 @@ G_M1799_IG09:        ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             beq     SHORT G_M1799_IG12
                        ;; size=34 bbWeight=8 PerfScore 112.00
 G_M1799_IG10:        ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r10, [r6+0x10]
+            ldr     r10, [r5+0x10]
             add     r1, sp, 4
             mov     r0, r9
             ; gcrRegs +[r0]
@@ -225,7 +222,7 @@ G_M1799_IG13:        ; bbWeight=5.94, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
             mov     r0, r10
                        ;; size=2 bbWeight=5.94 PerfScore 5.94
 G_M1799_IG14:        ; bbWeight=8, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref
-            str     r0, [r6+0x10]
+            str     r0, [r5+0x10]
                        ;; size=2 bbWeight=8 PerfScore 8.00
 G_M1799_IG15:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
             mov     r0, r9
@@ -240,7 +237,7 @@ G_M1799_IG15:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {
             beq     SHORT G_M1799_IG26
                        ;; size=18 bbWeight=512 PerfScore 3584.00
 G_M1799_IG16:        ; bbWeight=512, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r5]
+            ldr     r0, [r6]
             ldr     r1, [r0+0x24]
             ldr     r1, [r1]
             ldr     r4, [r1+0x0C]
@@ -283,7 +280,7 @@ G_M1799_IG20:        ; bbWeight=256, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {
             beq     SHORT G_M1799_IG25
                        ;; size=8 bbWeight=256 PerfScore 1024.00
 G_M1799_IG21:        ; bbWeight=128, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r3, [r6+0x10]
+            ldr     r3, [r5+0x10]
             cmp     r3, r0
             ble     SHORT G_M1799_IG23
                        ;; size=6 bbWeight=128 PerfScore 384.00
@@ -294,7 +291,7 @@ G_M1799_IG23:        ; bbWeight=95.04, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000
             mov     r0, r3
                        ;; size=2 bbWeight=95.04 PerfScore 95.04
 G_M1799_IG24:        ; bbWeight=128, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref
-            str     r0, [r6+0x10]
+            str     r0, [r5+0x10]
                        ;; size=2 bbWeight=128 PerfScore 128.00
 G_M1799_IG25:        ; bbWeight=256, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {}, byref, isz
             mov     r0, r9
@@ -310,13 +307,13 @@ G_M1799_IG25:        ; bbWeight=256, gcrefRegs=0260 {r5 r6 r9}, byrefRegs=0000 {
                        ;; size=18 bbWeight=256 PerfScore 1792.00
 G_M1799_IG26:        ; bbWeight=256, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r9]
...

+0 (0.00%) : 197108.dasm - System.Collections.Immutable.ImmutableDictionary2[System.__Canon,System.Nullable1[int]]:System.Collections.ICollection.CopyTo(System.Array,int):this (FullOpts)

@@ -8,7 +8,7 @@
 ; 2 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T04] (  7, 13   )     ref  ->  [sp+0x0C]  this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]>
+;  V00 this         [V00,T05] (  7, 13   )     ref  ->  [sp+0x0C]  this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T06] (  8, 12   )     ref  ->   r5         class-hnd single-def <System.Array>
 ;  V02 arg2         [V02,T10] (  6,  8   )     int  ->  registers  
 ;  V03 loc0         [V03    ] (  5, 12   )  struct (84) [sp+0x78]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
@@ -22,10 +22,10 @@
 ;  V11 tmp6         [V11,T12] (  2,  8   )     ref  ->   r9         class-hnd "impAppendStmt" <System.__Canon>
 ;  V12 tmp7         [V12    ] (  2,  8   )  struct ( 8) [sp+0x64]  do-not-enreg[XS] addr-exposed "location for address-of(RValue)" <System.Nullable`1[int]>
 ;* V13 tmp8         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.DictionaryEntry>
-;  V14 tmp9         [V14,T05] (  4, 16   )     ref  ->  [sp+0x08]  class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
+;  V14 tmp9         [V14,T04] (  4, 16   )     ref  ->  [sp+0x08]  class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
 ;  V15 tmp10        [V15,T08] (  3, 12   )     int  ->   r6         "impSpillLclRefs"
 ;* V16 tmp11        [V16    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V17 tmp12        [V17,T24] (  6,  4   )     int  ->   r3         "Indirect call through function pointer"
+;  V17 tmp12        [V17,T22] (  6,  4   )     int  ->   r3         "Indirect call through function pointer"
 ;* V18 tmp13        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V19 tmp14        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V20 tmp15        [V20    ] (  2,  4   )  struct (84) [sp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,System.Nullable`1[int]]>
@@ -39,31 +39,28 @@
 ;* V28 tmp23        [V28    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V29 tmp24        [V29    ] (  2,  8   )   ubyte  ->  [sp+0x64]  do-not-enreg[X] addr-exposed "field V12.hasValue (fldOffset=0x0)" P-DEP
 ;  V30 tmp25        [V30    ] (  2,  8   )     int  ->  [sp+0x68]  do-not-enreg[X] addr-exposed "field V12.value (fldOffset=0x4)" P-DEP
-;  V31 tmp26        [V31,T27] (  2,  4   )     ref  ->   r9         "field V13._key (fldOffset=0x0)" P-INDEP
-;  V32 tmp27        [V32,T28] (  2,  4   )     ref  ->  [sp+0x00]  spill-single-def "field V13._value (fldOffset=0x4)" P-INDEP
-;  V33 tmp28        [V33,T35] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
-;  V34 tmp29        [V34,T29] (  2,  4   )     int  ->   r1         "argument with side effect"
+;  V31 tmp26        [V31,T25] (  2,  4   )     ref  ->   r9         "field V13._key (fldOffset=0x0)" P-INDEP
+;  V32 tmp27        [V32,T26] (  2,  4   )     ref  ->  [sp+0x00]  spill-single-def "field V13._value (fldOffset=0x4)" P-INDEP
+;  V33 tmp28        [V33,T32] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
+;  V34 tmp29        [V34,T27] (  2,  4   )     int  ->   r1         "argument with side effect"
 ;  V35 tmp30        [V35,T03] (  2, 32   )     int  ->   r1         "argument with side effect"
 ;  V36 tmp31        [V36,T14] (  2,  8   )     int  ->   r2         "argument with side effect"
 ;  V37 tmp32        [V37,T15] (  2,  8   )     int  ->   r2         "argument with side effect"
-;  V38 PSPSym       [V38,T32] (  1,  1   )     int  ->  [sp+0xD0]  do-not-enreg[V] "PSPSym"
-;  V39 cse0         [V39,T25] (  3,  4   )     int  ->   r8         "CSE - moderate"
-;* V40 cse1         [V40,T31] (  0,  0   )     int  ->  zero-ref    "CSE - moderate"
+;  V38 PSPSym       [V38,T29] (  1,  1   )     int  ->  [sp+0xD0]  do-not-enreg[V] "PSPSym"
+;  V39 cse0         [V39,T23] (  3,  4   )     int  ->   r8         "CSE - moderate"
+;* V40 cse1         [V40,T28] (  0,  0   )     int  ->  zero-ref    "CSE - moderate"
 ;  V41 cse2         [V41,T18] (  6,  3.20)     int  ->   r7         multi-def "CSE - moderate"
-;  V42 rat0         [V42,T22] (  3,  4.40)     int  ->   r0         "Spilling to split statement for tree"
-;  V43 rat1         [V43,T26] (  3,  4   )     int  ->   r8         "runtime lookup"
+;  V42 rat0         [V42,T21] (  3,  4.40)     int  ->   r0         "Spilling to split statement for tree"
+;  V43 rat1         [V43,T24] (  3,  4   )     int  ->   r8         "runtime lookup"
 ;  V44 rat2         [V44,T19] (  3,  5.60)     int  ->   r8         "fgMakeTemp is creating a new local variable"
-;* V45 rat3         [V45,T23] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V46 rat4         [V46,T30] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V47 rat5         [V47,T20] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V48 rat6         [V48,T11] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V49 rat7         [V49,T09] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V50 rat8         [V50,T01] (  3, 35.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V51 rat9         [V51,T02] (  3, 32   )     int  ->   r1         "runtime lookup"
-;  V52 rat10        [V52,T00] (  3, 44.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V53 rat11        [V53,T21] (  3,  5.60)     int  ->   r3         "fgMakeTemp is creating a new local variable"
-;  V54 rat12        [V54,T33] (  3,  0   )     int  ->   r0         "Spilling to split statement for tree"
-;  V55 rat13        [V55,T34] (  3,  0   )     int  ->   r3         "fgMakeTemp is creating a new local variable"
+;* V45 rat3         [V45,T11] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V46 rat4         [V46,T09] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V47 rat5         [V47,T01] (  3, 35.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V48 rat6         [V48,T02] (  3, 32   )     int  ->   r1         "runtime lookup"
+;  V49 rat7         [V49,T00] (  3, 44.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V50 rat8         [V50,T20] (  3,  5.60)     int  ->   r3         "fgMakeTemp is creating a new local variable"
+;  V51 rat9         [V51,T30] (  3,  0   )     int  ->   r0         "Spilling to split statement for tree"
+;  V52 rat10        [V52,T31] (  3,  0   )     int  ->   r3         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 212
 
@@ -90,7 +87,7 @@ G_M52777_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[r5]
             mov     r6, r2
                        ;; size=44 bbWeight=1 PerfScore 18.00
-G_M52777_IG02:        ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52777_IG02:        ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
             cmp     r5, 0
             beq     G_M52777_IG21
             cmp     r6, 0
@@ -288,7 +285,7 @@ G_M52777_IG08:        ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             cmp     r0, 1
             beq     SHORT G_M52777_IG10
                        ;; size=26 bbWeight=2 PerfScore 22.00
-G_M52777_IG09:        ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M52777_IG09:        ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r5]
             ; GC ptr vars -{V14}
             movs    r0, 58
@@ -384,7 +381,7 @@ G_M52777_IG19:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 212
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
-G_M52777_IG20:        ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M52777_IG20:        ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r4]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -433,7 +430,7 @@ G_M52777_IG23:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             add     r3, r11, 8
             str     r3, [sp]
                        ;; size=10 bbWeight=0 PerfScore 0.00
-G_M52777_IG24:        ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M52777_IG24:        ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r4, [r11-0xE4] // [V00 this]
             ; gcrRegs +[r4]
             ldr     r7, [r4]

libraries_tests.run.linux.arm.Release.mch

-10 (-2.99%) : 268701.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (Tier0-FullOpts)

@@ -17,7 +17,7 @@
 ;  V07 tmp2         [V07,T06] (  6,  8   )   byref  ->  registers  
 ;* V08 tmp3         [V08    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V09 tmp4         [V09,T02] (  8, 12   )     int  ->   r2         "VirtualCall with runtime lookup"
-;  V10 tmp5         [V10,T12] (  4,  4   )     int  ->   r3        
+;  V10 tmp5         [V10,T12] (  2,  3.96)     int  ->   r0        
 ;  V11 tmp6         [V11,T07] (  4,  8   )     ref  ->   r0         "argument with side effect"
 ;  V12 cse0         [V12,T09] (  5,  7   )     int  ->   r9         "CSE - aggressive"
 ;  V13 cse1         [V13,T11] (  4,  5.04)   byref  ->  r10         hoist multi-def "CSE - aggressive"
@@ -44,7 +44,7 @@ G_M22994_IG02:        ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
             mov     r8, 0
             ldr     r9, [r7+0x04]
             cmp     r9, 0
-            ble     G_M22994_IG24
+            ble     G_M22994_IG22
             cmp     r5, 0
             beq     SHORT G_M22994_IG14
             ldr     r0, [r5+0x04]
@@ -90,7 +90,7 @@ G_M22994_IG04:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0408 {r3 r
 G_M22994_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0 r5]
             ; byrRegs -[r3 r7 r10]
-            b       SHORT G_M22994_IG26
+            b       SHORT G_M22994_IG24
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M22994_IG06:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0480 {r7 r10}, byref, isz
             ; gcrRegs +[r5]
@@ -130,15 +130,15 @@ G_M22994_IG09:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0480 {r7 r
             ; gcr arg pop 0
             cmp     r0, 0
             beq     SHORT G_M22994_IG10
-            movs    r3, 0
+            movs    r0, 0
             b       SHORT G_M22994_IG11
                        ;; size=22 bbWeight=1.98 PerfScore 19.80
 G_M22994_IG10:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref
-            movs    r3, 1
+            movs    r0, 1
                        ;; size=2 bbWeight=1.98 PerfScore 1.98
 G_M22994_IG11:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref, isz
-            cmp     r3, 0
-            bne     SHORT G_M22994_IG26
+            cmp     r0, 0
+            bne     SHORT G_M22994_IG24
                        ;; size=4 bbWeight=1.98 PerfScore 3.96
 G_M22994_IG12:        ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref, isz
             add     r8, r8, 1
@@ -148,7 +148,7 @@ G_M22994_IG12:        ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}
 G_M22994_IG13:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r5]
             ; byrRegs -[r10]
-            b       SHORT G_M22994_IG24
+            b       SHORT G_M22994_IG22
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M22994_IG14:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r5 r7]
@@ -180,7 +180,7 @@ G_M22994_IG15:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0008 {r
             ldr     r0, [r5+0x04]
             ; gcrRegs -[r0]
             cmp     r8, r0
-            bhs     SHORT G_M22994_IG28
+            bhs     SHORT G_M22994_IG26
             add     r0, r5, 8
             ; byrRegs +[r0]
             lsl     r1, r8, 2
@@ -188,12 +188,12 @@ G_M22994_IG15:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0008 {r
             ; gcrRegs +[r0]
             ; byrRegs -[r0]
             cmp     r0, 0
-            beq     SHORT G_M22994_IG23
+            beq     SHORT G_M22994_IG21
                        ;; size=32 bbWeight=0.02 PerfScore 0.28
 G_M22994_IG16:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0 r5 r7]
             ; byrRegs -[r3-r4]
-            b       SHORT G_M22994_IG26
+            b       SHORT G_M22994_IG24
                        ;; size=2 bbWeight=0.01 PerfScore 0.01
 G_M22994_IG17:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r4}, byref, isz
             ; gcrRegs +[r5 r7]
@@ -221,7 +221,7 @@ G_M22994_IG20:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r
             ; gcrRegs +[r0]
             ldr     r1, [r5+0x04]
             cmp     r8, r1
-            bhs     SHORT G_M22994_IG28
+            bhs     SHORT G_M22994_IG26
             add     r1, r5, 8
             ; byrRegs +[r1]
             lsl     r3, r8, 2
@@ -235,38 +235,29 @@ G_M22994_IG20:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M22994_IG21
-            movs    r3, 0
-            b       SHORT G_M22994_IG22
-                       ;; size=32 bbWeight=0.02 PerfScore 0.28
-G_M22994_IG21:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
-            movs    r3, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M22994_IG22:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
-            cmp     r3, 0
-            bne     SHORT G_M22994_IG26
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M22994_IG23:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+            beq     SHORT G_M22994_IG24
+                       ;; size=28 bbWeight=0.02 PerfScore 0.24
+G_M22994_IG21:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
             add     r8, r8, 1
             cmp     r9, r8
             bgt     SHORT G_M22994_IG14
                        ;; size=8 bbWeight=0.04 PerfScore 0.12
-G_M22994_IG24:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22994_IG22:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r5 r7]
             movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M22994_IG23:        ; bbWeight=0.50, epilog, nogc, extend
+            add     sp, 12
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M22994_IG24:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            movs    r0, 0
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M22994_IG25:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 12
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M22994_IG26:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            movs    r0, 0
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M22994_IG27:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 12
-            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M22994_IG28:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M22994_IG26:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_RNGCHKFAIL
@@ -274,7 +265,7 @@ G_M22994_IG28:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 334, prolog size 24, PerfScore 127.69, instruction count 134, allocated bytes for code 334 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (Tier0-FullOpts)
+; Total bytes of code 324, prolog size 24, PerfScore 127.59, instruction count 129, allocated bytes for code 324 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (Tier0-FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -286,7 +277,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 167 (0x000a7) Actual length = 334 (0x00014e)
+  Function Length   : 162 (0x000a2) Actual length = 324 (0x000144)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-10 (-1.26%) : 388457.dasm - System.Net.Cookie:set_Port(System.String):this (Tier0-FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct ( 8) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->   r3         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T20] (  2,  0.04)   ubyte  ->   r1         "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 ( 8) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -90,7 +90,7 @@ G_M10809_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             strb    r1, [r5+0x33]
             ldrh    r1, [r4+0x08]
             cmp     r1, 34
-            bne     G_M10809_IG25
+            bne     G_M10809_IG23
             add     r1, r4, 8
             ; byrRegs +[r1]
             ldr     r2, [r4+0x04]
@@ -100,7 +100,7 @@ G_M10809_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             ; byrRegs -[r1]
             cmp     r1, 34
             beq     SHORT G_M10809_IG07
-            b       SHORT G_M10809_IG25
+            b       SHORT G_M10809_IG23
                        ;; size=32 bbWeight=0.50 PerfScore 6.50
 G_M10809_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r4]
@@ -179,7 +179,7 @@ G_M10809_IG10:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r
             ; gcrRegs +[r8]
             mov     r9, 0
             cmp     r7, 0
-            ble     SHORT G_M10809_IG22
+            ble     SHORT G_M10809_IG20
             ldr     r3, [r8+0x04]
             cmp     r3, r7
             blt     SHORT G_M10809_IG16
@@ -199,7 +199,7 @@ G_M10809_IG12:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r3 r5-r6 r8]
             movs    r3, 0
             str     r3, [sp+0x14]  // [V05 loc3]
-            b       SHORT G_M10809_IG26
+            b       SHORT G_M10809_IG24
                        ;; size=6 bbWeight=0.00 PerfScore 0.00
 G_M10809_IG13:        ; bbWeight=1.98, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r3 r5-r6 r8]
@@ -238,13 +238,13 @@ G_M10809_IG13:        ; bbWeight=1.98, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefReg
             ; byrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     G_M10809_IG26
+            bne     G_M10809_IG24
                        ;; size=60 bbWeight=1.98 PerfScore 43.56
 G_M10809_IG14:        ; bbWeight=3.96, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r3, [sp+0x14]  // [V05 loc3]
             movw    r2, 0xd1ff
             cmp     r3, r2
-            bhi     G_M10809_IG27
+            bhi     G_M10809_IG25
             add     r3, r8, 8
             ; byrRegs +[r3]
             ldr     r2, [sp+0x14]  // [V05 loc3]
@@ -256,7 +256,7 @@ G_M10809_IG14:        ; bbWeight=3.96, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
 G_M10809_IG15:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r6]
             ; byrRegs -[r3]
-            b       SHORT G_M10809_IG22
+            b       SHORT G_M10809_IG20
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r6]
@@ -273,7 +273,7 @@ G_M10809_IG17:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r3 r5-r6 r8]
             movs    r3, 0
             str     r3, [sp+0x14]  // [V05 loc3]
-            b       SHORT G_M10809_IG26
+            b       SHORT G_M10809_IG24
                        ;; size=6 bbWeight=0.00 PerfScore 0.00
 G_M10809_IG18:        ; bbWeight=0.02, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r3 r5-r6 r8]
@@ -307,25 +307,16 @@ G_M10809_IG18:        ; bbWeight=0.02, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefReg
             ; byrRegs -[r0 r10]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M10809_IG19
-            movs    r1, 0
-            b       SHORT G_M10809_IG20
-                       ;; size=56 bbWeight=0.02 PerfScore 0.44
-G_M10809_IG19:        ; bbWeight=0.02, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref
-            movs    r1, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M10809_IG20:        ; bbWeight=0.02, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
-            cmp     r1, 0
-            beq     SHORT G_M10809_IG26
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M10809_IG21:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+            bne     SHORT G_M10809_IG24
+                       ;; size=52 bbWeight=0.02 PerfScore 0.40
+G_M10809_IG19:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [sp+0x14]  // [V05 loc3]
             movw    r0, 0xd1ff
             cmp     r1, r0
-            bhi     G_M10809_IG27
+            bhi     G_M10809_IG25
             ldr     r1, [r8+0x04]
             cmp     r9, r1
-            bhs     SHORT G_M10809_IG24
+            bhs     SHORT G_M10809_IG22
             add     r1, r8, 8
             ; byrRegs +[r1]
             lsl     r0, r9, 2
@@ -335,7 +326,7 @@ G_M10809_IG21:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             cmp     r7, r9
             bgt     SHORT G_M10809_IG16
                        ;; size=40 bbWeight=0.04 PerfScore 0.56
-G_M10809_IG22:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
+G_M10809_IG20:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r6]
             ; byrRegs -[r1]
             add     r0, r5, 28
@@ -361,128 +352,128 @@ G_M10809_IG22:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000
             movs    r0, 3
             str     r0, [r5+0x28]
                        ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M10809_IG23:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10809_IG21:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 28
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M10809_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10809_IG22:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r5]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_RNGCHKFAIL
             ; gcr arg pop 0
                        ;; size=10 bbWeight=0 PerfScore 0.00
+G_M10809_IG23:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[r4]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_NEWSFAST
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r5, r0
+            ; gcrRegs +[r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcr arg pop 0
+            mov     r6, r0
+            ; gcrRegs +[r6]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_STRCNS
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r6
+            mov     r2, r4
+            ; gcrRegs +[r2]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r1-r2 r4 r6]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r5
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // System.FormatException:.ctor(System.String):this
+            ; gcrRegs -[r0-r1]
+            ; gcr arg pop 0
+            mov     r0, r5
+            ; gcrRegs +[r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_THROW
+            ; gcrRegs -[r0 r5]
+            ; gcr arg pop 0
+                       ;; size=102 bbWeight=0 PerfScore 0.00
+G_M10809_IG24:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[r4]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_NEWSFAST
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r5, r0
+            ; gcrRegs +[r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcr arg pop 0
+            mov     r6, r0
+            ; gcrRegs +[r6]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_STRCNS
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r6
+            mov     r2, r4
+            ; gcrRegs +[r2]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r1-r2 r4 r6]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r5
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // System.FormatException:.ctor(System.String):this
+            ; gcrRegs -[r0-r1]
+            ; gcr arg pop 0
+            mov     r0, r5
+            ; gcrRegs +[r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_THROW
+            ; gcrRegs -[r0 r5]
+            ; gcr arg pop 0
+                       ;; size=102 bbWeight=0 PerfScore 0.00
 G_M10809_IG25:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
-            ; gcrRegs +[r4]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
...

-10 (-0.66%) : 464372.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)

@@ -33,8 +33,8 @@
 ;  V22 tmp3         [V22,T50] (  3,  0   )     ref  ->   r4         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,T30] (  4, 16   )     int  ->   r7         "impSpillLclRefs"
-;  V25 tmp6         [V25,T41] (  2,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
-;  V26 tmp7         [V26,T46] (  2,  0.04)   ubyte  ->   r0         "Inline return value spill temp"
+;  V25 tmp6         [V25,T40] (  2,  8   )     ref  ->   r1         class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+;* V26 tmp7         [V26,T46] (  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,T34] (  8, 12   )     ref  ->   r0         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,T31] (  2, 15.84)   ubyte  ->   r0         "Inline return value spill temp"
 ;  V33 tmp14        [V33,T00] (  5,126.72)     ref  ->  [sp+0x28]  class-hnd spill-single-def "Inlining Arg" <System.Type>
 ;  V34 tmp15        [V34,T01] (  5, 95.04)     ref  ->  [sp+0x24]  class-hnd spill-single-def "Inlining Arg" <System.Reflection.ParameterInfo>
-;* V35 tmp16        [V35,T40] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V35 tmp16        [V35,T41] (  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,T14] (  4, 31.68)     ref  ->   r0         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>
@@ -108,7 +108,7 @@ G_M46704_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ldr     r0, [r4+0x04]
             ; gcrRegs -[r0]
             cmp     r0, 0
-            ble     G_M46704_IG14
+            ble     G_M46704_IG12
             ldr     r0, [r4+0x04]
             ldr     r9, [r7+0x04]
             cmp     r0, r9
@@ -181,7 +181,7 @@ G_M46704_IG05:        ; bbWeight=1.98, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG56
+            beq     G_M46704_IG54
                        ;; size=20 bbWeight=1.98 PerfScore 15.84
 G_M46704_IG06:        ; bbWeight=3.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
             add     r8, r8, 1
@@ -192,7 +192,7 @@ G_M46704_IG06:        ; bbWeight=3.96, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
 G_M46704_IG07:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r4]
             ; byrRegs -[r9]
-            b       SHORT G_M46704_IG14
+            b       SHORT G_M46704_IG12
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r4]
@@ -211,7 +211,7 @@ G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs +[r1]
             ldr     r9, [r7+0x04]
             cmp     r8, r9
-            bhs     G_M46704_IG54
+            bhs     G_M46704_IG52
             add     r9, r7, 8
             ; byrRegs +[r9]
             lsl     r0, r8, 2
@@ -234,7 +234,7 @@ G_M46704_IG08:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG12
+            beq     SHORT G_M46704_IG10
                        ;; size=80 bbWeight=0.04 PerfScore 1.04
 G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
             ldr     r3, [r0]
@@ -251,20 +251,10 @@ G_M46704_IG09:        ; bbWeight=0.02, gcrefRegs=00F1 {r0 r4 r5 r6 r7}, byrefReg
             ldr     r3, [r5+0x04]
             ; gcrRegs +[r3]
             cmp     r0, r3
-            beq     SHORT G_M46704_IG10
-            movs    r0, 0
-            ; gcrRegs -[r0]
-            b       SHORT G_M46704_IG11
-                       ;; size=28 bbWeight=0.02 PerfScore 0.28
-G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref
-            ; gcrRegs -[r3]
-            movs    r0, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M46704_IG11:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
-            cmp     r0, 0
-            bne     SHORT G_M46704_IG13
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M46704_IG12:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
+            beq     SHORT G_M46704_IG11
+                       ;; size=24 bbWeight=0.02 PerfScore 0.24
+G_M46704_IG10:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0200 {r9}, byref, isz
+            ; gcrRegs -[r0 r3]
             lsl     r0, r8, 2
             ldr     r0, [r9+r0]
             ; gcrRegs +[r0]
@@ -276,23 +266,23 @@ G_M46704_IG12:        ; bbWeight=0.02, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; byrRegs -[r9]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     G_M46704_IG56
+            beq     G_M46704_IG54
                        ;; size=22 bbWeight=0.02 PerfScore 0.16
-G_M46704_IG13:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG11:        ; bbWeight=0.04, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             add     r8, r8, 1
             ldr     r0, [r4+0x04]
             cmp     r0, r8
             bgt     SHORT G_M46704_IG08
                        ;; size=10 bbWeight=0.04 PerfScore 0.16
-G_M46704_IG14:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG12:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r4]
             mov     r4, r7
             ; gcrRegs +[r4]
             cmp     r6, 0
-            beq     G_M46704_IG55
+            beq     G_M46704_IG53
             ldr     r0, [r6+0x04]
             cmp     r0, 0
-            beq     G_M46704_IG55
+            beq     G_M46704_IG53
             mov     r0, r6
             ; gcrRegs +[r0]
             movw    r3, 0xd1ff
@@ -308,9 +298,9 @@ G_M46704_IG14:        ; bbWeight=1, gcrefRegs=00E0 {r5 r6 r7}, byrefRegs=0000 {}
             mov     r8, 0
             ldr     r9, [r6+0x04]
             cmp     r9, 0
-            ble     G_M46704_IG30
+            ble     G_M46704_IG28
                        ;; size=52 bbWeight=1 PerfScore 18.00
-G_M46704_IG15:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG13:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             add     r0, r6, 8
             ; byrRegs +[r0]
@@ -332,15 +322,15 @@ G_M46704_IG15:        ; bbWeight=4, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ; gcrRegs -[r0]
             ldr     r2, [r4+0x04]
             cmp     r0, r2
-            bne     G_M46704_IG29
+            bne     G_M46704_IG27
                        ;; size=38 bbWeight=4 PerfScore 56.00
-G_M46704_IG16:        ; bbWeight=2, gcVars=0000000000800000 {V14}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG14:        ; bbWeight=2, gcVars=0000000000800000 {V14}, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             movs    r1, 0
             str     r2, [sp+0x44]  // [V59 cse3]
             cmp     r2, 0
-            ble     SHORT G_M46704_IG19
+            ble     SHORT G_M46704_IG17
                        ;; size=8 bbWeight=2 PerfScore 8.00
-G_M46704_IG17:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG15:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             add     lr, r3, 8
             ; byrRegs +[lr]
             str     lr, [sp+0x18]  // [V61 cse5]
@@ -388,9 +378,9 @@ G_M46704_IG17:        ; bbWeight=15.84, gcrefRegs=0078 {r3 r4 r5 r6}, byrefRegs=
             ; byrRegs -[r3]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG20
+            beq     SHORT G_M46704_IG18
                        ;; size=76 bbWeight=15.84 PerfScore 427.68
-G_M46704_IG18:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG16:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [sp+0x24]  // [V34 tmp15]
             ; gcrRegs +[r0]
             ldr     r3, [r0]
@@ -409,15 +399,15 @@ G_M46704_IG18:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             blx     r3     // <unknown method>
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
-            b       SHORT G_M46704_IG21
+            b       SHORT G_M46704_IG19
                        ;; size=28 bbWeight=7.92 PerfScore 95.04
-G_M46704_IG19:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG17:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r7]
             ; GC ptr vars -{V14 V60}
             str     r1, [sp+0x58]  // [V06 loc1]
-            b       SHORT G_M46704_IG28
+            b       SHORT G_M46704_IG26
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M46704_IG20:        ; bbWeight=7.92, gcVars=0000000000800103 {V14 V33 V34 V60}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG18:        ; bbWeight=7.92, gcVars=0000000000800103 {V14 V33 V34 V60}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[r7]
             ; GC ptr vars +{V00 V08 V14 V33 V34 V60}
             ldr     r0, [sp+0x24]  // [V34 tmp15]
@@ -431,16 +421,16 @@ G_M46704_IG20:        ; bbWeight=7.92, gcVars=0000000000800103 {V14 V33 V34 V60}
             ldr     r1, [sp+0x28]  // [V33 tmp14]
             ; gcrRegs +[r1]
             cmp     r0, r1
-            beq     SHORT G_M46704_IG26
-            b       SHORT G_M46704_IG22
+            beq     SHORT G_M46704_IG24
+            b       SHORT G_M46704_IG20
                        ;; size=18 bbWeight=7.92 PerfScore 71.28
-G_M46704_IG21:        ; bbWeight=7.92, gcVars=0000000000800100 {V14 V60}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG19:        ; bbWeight=7.92, gcVars=0000000000800100 {V14 V60}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0-r1]
             ; GC ptr vars -{V33}
             cmp     r0, 0
-            bne     SHORT G_M46704_IG26
+            bne     SHORT G_M46704_IG24
                        ;; size=4 bbWeight=7.92 PerfScore 15.84
-G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG20:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [r5+0x08]
             ; gcrRegs +[r1]
             mov     r0, r7
@@ -452,7 +442,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     SHORT G_M46704_IG26
+            bne     SHORT G_M46704_IG24
             ldr     r0, [sp+0x1C]  // [V60 cse4]
             ; byrRegs +[r0]
             ldr     r2, [sp+0x48]  // [V58 cse2]
@@ -471,7 +461,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r0 r3]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG23
+            beq     SHORT G_M46704_IG21
             add     r1, r6, 8
             ; byrRegs +[r1]
             ldr     r3, [sp+0x3C]  // [V64 cse8]
@@ -486,7 +476,7 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG28
+            beq     SHORT G_M46704_IG26
             ldr     r3, [r0]
             ldr     r3, [r3+0x38]
             ldr     r3, [r3+0x10]
@@ -507,9 +497,9 @@ G_M46704_IG22:        ; bbWeight=7.92, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0
             str     r3, [sp+0x2C]
             ; GC ptr vars +{V16}
             cmp     r3, 0
-            beq     SHORT G_M46704_IG28
+            beq     SHORT G_M46704_IG26
                        ;; size=104 bbWeight=7.92 PerfScore 340.56
-G_M46704_IG23:        ; bbWeight=7.92, gcVars=0000000000800008 {V14 V16}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M46704_IG21:        ; bbWeight=7.92, gcVars=0000000000800008 {V14 V16}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0 r3]
             mov     r0, r7
             ; gcrRegs +[r0]
@@ -521,7 +511,7 @@ G_M46704_IG23:        ; bbWeight=7.92, gcVars=0000000000800008 {V14 V16}, gcrefR
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M46704_IG25
+            beq     SHORT G_M46704_IG23
...

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

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

+0 (0.00%) : 216395.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]:System.Collections.ICollection.CopyTo(System.Array,int):this (Tier0-FullOpts)

@@ -8,7 +8,7 @@
 ; 5 inlinees with PGO data; 10 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T04] (  7, 13   )     ref  ->  [sp+0x10]  this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
+;  V00 this         [V00,T05] (  7, 13   )     ref  ->  [sp+0x10]  this class-hnd EH-live single-def <System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,int]>
 ;  V01 arg1         [V01,T06] (  8, 12   )     ref  ->   r5         class-hnd single-def <System.Array>
 ;  V02 arg2         [V02,T11] (  6,  8   )     int  ->  registers  
 ;  V03 loc0         [V03    ] (  5, 12   )  struct (80) [sp+0x6C]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,int]>
@@ -22,47 +22,44 @@
 ;  V11 tmp6         [V11,T13] (  2,  8   )     ref  ->   r9         class-hnd "impAppendStmt" <System.__Canon>
 ;  V12 tmp7         [V12,T07] (  3, 12   )     ref  ->   r3         class-hnd exact "Single-def Box Helper" <System.Int32>
 ;* V13 tmp8         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.DictionaryEntry>
-;  V14 tmp9         [V14,T05] (  4, 16   )     ref  ->  [sp+0x0C]  class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
+;  V14 tmp9         [V14,T04] (  4, 16   )     ref  ->  [sp+0x0C]  class-hnd exact spill-single-def "Single-def Box Helper" <System.Collections.DictionaryEntry>
 ;  V15 tmp10        [V15,T09] (  3, 12   )     int  ->   r6         "impSpillLclRefs"
 ;* V16 tmp11        [V16    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V17 tmp12        [V17,T23] (  6,  4   )     int  ->   r3         "Indirect call through function pointer"
+;  V17 tmp12        [V17,T21] (  6,  4   )     int  ->   r3         "Indirect call through function pointer"
 ;* V18 tmp13        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V19 tmp14        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V20 tmp15        [V20    ] (  2,  4   )  struct (80) [sp+0x14]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableDictionary`2+Enumerator[System.__Canon,int]>
 ;* V21 tmp16        [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp17        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int32>
 ;* V23 tmp18        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.DictionaryEntry>
-;  V24 tmp19        [V24,T24] (  2,  4   )     int  ->   r0         "Inline return value spill temp"
+;  V24 tmp19        [V24,T22] (  2,  4   )     int  ->   r0         "Inline return value spill temp"
 ;* V25 tmp20        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V26 tmp21        [V26,T16] (  3,  6   )     int  ->   r0         "Inline stloc first use temp"
 ;  V27 tmp22        [V27,T08] (  3, 12   )   byref  ->  [sp+0x08]  spill-single-def "Inlining Arg"
 ;  V28 tmp23        [V28    ] (  2,  4   )     ref  ->  [sp+0x64]  do-not-enreg[X] addr-exposed "field V04.key (fldOffset=0x0)" P-DEP
 ;  V29 tmp24        [V29    ] (  2,  4   )     int  ->  [sp+0x68]  do-not-enreg[X] addr-exposed "field V04.value (fldOffset=0x4)" P-DEP
-;  V30 tmp25        [V30,T27] (  2,  4   )     ref  ->   r9         "field V13._key (fldOffset=0x0)" P-INDEP
-;  V31 tmp26        [V31,T28] (  2,  4   )     ref  ->  [sp+0x04]  spill-single-def "field V13._value (fldOffset=0x4)" P-INDEP
-;  V32 tmp27        [V32,T35] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
-;  V33 tmp28        [V33,T29] (  2,  4   )     int  ->   r1         "argument with side effect"
+;  V30 tmp25        [V30,T25] (  2,  4   )     ref  ->   r9         "field V13._key (fldOffset=0x0)" P-INDEP
+;  V31 tmp26        [V31,T26] (  2,  4   )     ref  ->  [sp+0x04]  spill-single-def "field V13._value (fldOffset=0x4)" P-INDEP
+;  V32 tmp27        [V32,T32] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
+;  V33 tmp28        [V33,T27] (  2,  4   )     int  ->   r1         "argument with side effect"
 ;  V34 tmp29        [V34,T03] (  2, 32   )     int  ->   r1         "argument with side effect"
 ;  V35 tmp30        [V35,T14] (  2,  8   )     int  ->   r2         "argument with side effect"
 ;  V36 tmp31        [V36,T15] (  2,  8   )     int  ->   r2         "argument with side effect"
-;  V37 PSPSym       [V37,T32] (  1,  1   )     int  ->  [sp+0xC0]  do-not-enreg[V] "PSPSym"
-;  V38 cse0         [V38,T25] (  3,  4   )     int  ->   r8         "CSE - moderate"
-;* V39 cse1         [V39,T31] (  0,  0   )     int  ->  zero-ref    "CSE - moderate"
+;  V37 PSPSym       [V37,T29] (  1,  1   )     int  ->  [sp+0xC0]  do-not-enreg[V] "PSPSym"
+;  V38 cse0         [V38,T23] (  3,  4   )     int  ->   r8         "CSE - moderate"
+;* V39 cse1         [V39,T28] (  0,  0   )     int  ->  zero-ref    "CSE - moderate"
 ;  V40 cse2         [V40,T17] (  6,  3.20)     int  ->   r7         multi-def "CSE - moderate"
-;  V41 rat0         [V41,T21] (  3,  4.40)     int  ->   r0         "Spilling to split statement for tree"
-;  V42 rat1         [V42,T26] (  3,  4   )     int  ->   r8         "runtime lookup"
+;  V41 rat0         [V41,T20] (  3,  4.40)     int  ->   r0         "Spilling to split statement for tree"
+;  V42 rat1         [V42,T24] (  3,  4   )     int  ->   r8         "runtime lookup"
 ;  V43 rat2         [V43,T18] (  3,  5.60)     int  ->   r8         "fgMakeTemp is creating a new local variable"
-;* V44 rat3         [V44,T22] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V45 rat4         [V45,T30] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V46 rat5         [V46,T19] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V47 rat6         [V47,T12] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V48 rat7         [V48,T10] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V49 rat8         [V49,T01] (  3, 35.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V50 rat9         [V50,T02] (  3, 32   )     int  ->   r1         "runtime lookup"
-;  V51 rat10        [V51,T00] (  3, 44.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V52 rat11        [V52,T20] (  3,  5.60)     int  ->   r3         "fgMakeTemp is creating a new local variable"
-;  V53 rat12        [V53,T33] (  3,  0   )     int  ->   r0         "Spilling to split statement for tree"
-;  V54 rat13        [V54,T34] (  3,  0   )     int  ->   r3         "fgMakeTemp is creating a new local variable"
+;* V44 rat3         [V44,T12] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V45 rat4         [V45,T10] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V46 rat5         [V46,T01] (  3, 35.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V47 rat6         [V47,T02] (  3, 32   )     int  ->   r1         "runtime lookup"
+;  V48 rat7         [V48,T00] (  3, 44.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V49 rat8         [V49,T19] (  3,  5.60)     int  ->   r3         "fgMakeTemp is creating a new local variable"
+;  V50 rat9         [V50,T30] (  3,  0   )     int  ->   r0         "Spilling to split statement for tree"
+;  V51 rat10        [V51,T31] (  3,  0   )     int  ->   r3         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 196
 
@@ -88,7 +85,7 @@ G_M43108_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[r5]
             mov     r6, r2
                        ;; size=42 bbWeight=1 PerfScore 17.00
-G_M43108_IG02:        ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43108_IG02:        ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
             cmp     r5, 0
             bne     SHORT G_M43108_IG04
                        ;; size=4 bbWeight=1 PerfScore 2.00
@@ -307,7 +304,7 @@ G_M43108_IG11:        ; bbWeight=2, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, b
             cmp     r0, 1
             beq     SHORT G_M43108_IG13
                        ;; size=38 bbWeight=2 PerfScore 30.00
-G_M43108_IG12:        ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M43108_IG12:        ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r5]
             ; GC ptr vars -{V14}
             movs    r0, 58
@@ -418,7 +415,7 @@ G_M43108_IG24:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 196
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
-G_M43108_IG25:        ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M43108_IG25:        ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r4]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -442,7 +439,7 @@ G_M43108_IG27:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             add     r3, r11, 8
             str     r3, [sp]
                        ;; size=10 bbWeight=0 PerfScore 0.00
-G_M43108_IG28:        ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M43108_IG28:        ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r4, [r11-0xD0] // [V00 this]
             ; gcrRegs +[r4]
             ldr     r7, [r4]

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

@@ -17,7 +17,7 @@
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V07 loc3         [V07,T14] (  4,  5   )     int  ->  [r11-0x28] 
 ;  V08 loc4         [V08,T15] (  4,  5   )     int  ->  [r11-0x2C] 
-;  V09 loc5         [V09,T36] (  3,  1.50)     int  ->   r6        
+;  V09 loc5         [V09,T34] (  3,  1.50)     int  ->   r6        
 ;  V10 loc6         [V10,T07] ( 13, 11.50)     ref  ->  [r11-0x38]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V11 loc7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V12 loc8         [V12,T05] (  5, 14   )     int  ->   r4        
@@ -40,31 +40,31 @@
 ;* V29 tmp16        [V29    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V30 tmp17        [V30,T18] (  8,  4   )     int  ->   r8         "Inline return value spill temp"
 ;  V31 tmp18        [V31,T23] (  3,  3   )     int  ->   r0         "Inlining Arg"
-;  V32 tmp19        [V32,T32] (  2,  2   )     int  ->   r3         "Inlining Arg"
+;  V32 tmp19        [V32,T30] (  2,  2   )     int  ->   r3         "Inlining Arg"
 ;  V33 tmp20        [V33,T22] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V34 tmp21        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V35 tmp22        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V36 tmp23        [V36    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V37 tmp24        [V37    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V38 tmp25        [V38    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V39 tmp26        [V39,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V39 tmp26        [V39,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V40 tmp27        [V40,T10] (  3,  6   )     int  ->   r0         "Inline stloc first use temp"
 ;  V41 tmp28        [V41,T11] (  3,  6   )     int  ->   r7         "Inline stloc first use temp"
 ;  V42 tmp29        [V42,T06] (  3, 12   )   byref  ->   r7         "dup spill"
 ;* V43 tmp30        [V43    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V44 tmp31        [V44    ] (  0,  0   )     int  ->  zero-ref    single-def "field V05._length (fldOffset=0x4)" P-INDEP
-;  V45 tmp32        [V45,T34] (  3,  1.50)   byref  ->  [r11-0x3C]  spill-single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;  V45 tmp32        [V45,T32] (  3,  1.50)   byref  ->  [r11-0x3C]  spill-single-def "field V14._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp33        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V14._length (fldOffset=0x4)" P-INDEP
 ;* V47 tmp34        [V47    ] (  0,  0   )   byref  ->  zero-ref    "field V16._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp35        [V48    ] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x4)" P-INDEP
-;  V49 tmp36        [V49,T39] (  2,  1   )     int  ->   r7         single-def "field V22.Item1 (fldOffset=0x0)" P-INDEP
-;  V50 tmp37        [V50,T40] (  2,  1   )     int  ->   r4         single-def "field V22.Item2 (fldOffset=0x4)" P-INDEP
+;  V49 tmp36        [V49,T37] (  2,  1   )     int  ->   r7         single-def "field V22.Item1 (fldOffset=0x0)" P-INDEP
+;  V50 tmp37        [V50,T38] (  2,  1   )     int  ->   r4         single-def "field V22.Item2 (fldOffset=0x4)" P-INDEP
 ;* V51 tmp38        [V51    ] (  0,  0   )   byref  ->  zero-ref    "field V24._reference (fldOffset=0x0)" P-INDEP
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V24._length (fldOffset=0x4)" P-INDEP
-;* V53 tmp40        [V53,T45] (  0,  0   )     int  ->  zero-ref    single-def "field V29.Item1 (fldOffset=0x0)" P-INDEP
-;  V54 tmp41        [V54,T41] (  2,  1   )     int  ->   r6         single-def "field V29.Item2 (fldOffset=0x4)" P-INDEP
-;  V55 tmp42        [V55,T38] (  2,  1   )   byref  ->   r8         "field V34._reference (fldOffset=0x0)" P-INDEP
-;  V56 tmp43        [V56,T42] (  2,  1   )     int  ->   r3         "field V34._length (fldOffset=0x4)" P-INDEP
+;* V53 tmp40        [V53,T42] (  0,  0   )     int  ->  zero-ref    single-def "field V29.Item1 (fldOffset=0x0)" P-INDEP
+;  V54 tmp41        [V54,T39] (  2,  1   )     int  ->   r6         single-def "field V29.Item2 (fldOffset=0x4)" P-INDEP
+;  V55 tmp42        [V55,T36] (  2,  1   )   byref  ->   r8         "field V34._reference (fldOffset=0x0)" P-INDEP
+;  V56 tmp43        [V56,T40] (  2,  1   )     int  ->   r3         "field V34._length (fldOffset=0x4)" P-INDEP
 ;* V57 tmp44        [V57    ] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
 ;* V58 tmp45        [V58    ] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x4)" P-INDEP
 ;* V59 tmp46        [V59    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V36._reference (fldOffset=0x0)" P-INDEP
@@ -73,23 +73,20 @@
 ;* V62 tmp49        [V62    ] (  0,  0   )     int  ->  zero-ref    single-def "field V38._length (fldOffset=0x4)" P-INDEP
 ;  V63 tmp50        [V63,T16] (  3,  4.50)   byref  ->   r8         single-def "V06.[000..004)"
 ;  V64 tmp51        [V64,T17] (  3,  4.50)     int  ->  [r11-0x30]  spill-single-def "V06.[004..008)"
-;  V65 tmp52        [V65,T35] (  3,  1.50)   byref  ->  registers   "V17.[000..004)"
-;  V66 tmp53        [V66,T37] (  3,  1.50)     int  ->  registers   "V17.[004..008)"
+;  V65 tmp52        [V65,T33] (  3,  1.50)   byref  ->  registers   "V17.[000..004)"
+;  V66 tmp53        [V66,T35] (  3,  1.50)     int  ->  registers   "V17.[004..008)"
 ;  V67 tmp54        [V67,T03] (  2, 16   )     ref  ->   r1         "argument with side effect"
 ;  V68 GsCookie     [V68    ] (  1,  1   )     int  ->  [r11-0x40]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V69 PSPSym       [V69,T44] (  1,  1   )     int  ->  [r11-0x20]  do-not-enreg[V] "PSPSym"
+;  V69 PSPSym       [V69,T41] (  1,  1   )     int  ->  [r11-0x20]  do-not-enreg[V] "PSPSym"
 ;  V70 cse0         [V70,T12] (  3,  6   )     int  ->   r7         "CSE - aggressive"
-;  V71 rat0         [V71,T28] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V71 rat0         [V71,T27] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V72 rat1         [V72,T24] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V73 rat2         [V73,T29] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V73 rat2         [V73,T28] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V74 rat3         [V74,T25] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V75 rat4         [V75,T30] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V75 rat4         [V75,T29] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V76 rat5         [V76,T26] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V77 rat6         [V77,T31] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V78 rat7         [V78,T43] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V79 rat8         [V79,T27] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V80 rat9         [V80,T02] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V81 rat10        [V81,T01] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V77 rat6         [V77,T02] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V78 rat7         [V78,T01] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
 ;  TEMP_01                                     int  ->  [r11-0x44]
 ;
 ; Lcl frame size = 44
@@ -272,10 +269,10 @@ G_M62176_IG16:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r
             ldr     r3, [r0+0x04]
             b       SHORT G_M62176_IG20
                        ;; size=48 bbWeight=0.50 PerfScore 8.50
-G_M62176_IG17:        ; bbWeight=0.50, gcVars=0000000400000010 {V00 V45}, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
+G_M62176_IG17:        ; bbWeight=0.50, gcVars=0000000100000010 {V00 V45}, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
             ; gcrRegs -[r0]
             ; byrRegs -[r8]
-            ; GC ptr vars +{V45}
+            ; GC ptr vars +{V32 V45}
             cmp     r8, 100
             bhi     G_M62176_IG36
             cmp     r8, 0
@@ -309,7 +306,7 @@ G_M62176_IG19:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r
                        ;; size=40 bbWeight=0.50 PerfScore 6.50
 G_M62176_IG20:        ; bbWeight=0.50, gcVars=0000000000000010 {V00}, gcrefRegs=0090 {r4 r7}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz
             ; byrRegs -[r0]
-            ; GC ptr vars -{V45}
+            ; GC ptr vars -{V32 V45}
             str     r3, [r9+0x18]  // [V64 tmp51]
             movs    r2, 0
             str     r2, [r9+0x20]  // [V07 loc3]

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-10 (-2.99%) : 96743.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -17,7 +17,7 @@
 ;  V07 tmp2         [V07,T06] (  6,  8   )   byref  ->  registers  
 ;* V08 tmp3         [V08    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V09 tmp4         [V09,T02] (  8, 12   )     int  ->   r2         "VirtualCall with runtime lookup"
-;  V10 tmp5         [V10,T12] (  4,  4   )     int  ->   r3        
+;  V10 tmp5         [V10,T12] (  2,  3.96)     int  ->   r0        
 ;  V11 tmp6         [V11,T07] (  4,  8   )     ref  ->   r0         "argument with side effect"
 ;  V12 cse0         [V12,T09] (  5,  7   )     int  ->   r9         "CSE - aggressive"
 ;  V13 cse1         [V13,T11] (  4,  5.04)   byref  ->  r10         hoist multi-def "CSE - aggressive"
@@ -44,7 +44,7 @@ G_M22994_IG02:        ; bbWeight=1, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, b
             mov     r8, 0
             ldr     r9, [r7+0x04]
             cmp     r9, 0
-            ble     G_M22994_IG24
+            ble     G_M22994_IG22
             cmp     r5, 0
             beq     SHORT G_M22994_IG14
             ldr     r0, [r5+0x04]
@@ -90,7 +90,7 @@ G_M22994_IG04:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0408 {r3 r
 G_M22994_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0 r5]
             ; byrRegs -[r3 r7 r10]
-            b       SHORT G_M22994_IG26
+            b       SHORT G_M22994_IG24
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M22994_IG06:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0480 {r7 r10}, byref, isz
             ; gcrRegs +[r5]
@@ -130,15 +130,15 @@ G_M22994_IG09:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0480 {r7 r
             ; gcr arg pop 0
             cmp     r0, 0
             beq     SHORT G_M22994_IG10
-            movs    r3, 0
+            movs    r0, 0
             b       SHORT G_M22994_IG11
                        ;; size=22 bbWeight=1.98 PerfScore 19.80
 G_M22994_IG10:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref
-            movs    r3, 1
+            movs    r0, 1
                        ;; size=2 bbWeight=1.98 PerfScore 1.98
 G_M22994_IG11:        ; bbWeight=1.98, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref, isz
-            cmp     r3, 0
-            bne     SHORT G_M22994_IG26
+            cmp     r0, 0
+            bne     SHORT G_M22994_IG24
                        ;; size=4 bbWeight=1.98 PerfScore 3.96
 G_M22994_IG12:        ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}, byref, isz
             add     r8, r8, 1
@@ -148,7 +148,7 @@ G_M22994_IG12:        ; bbWeight=3.96, gcrefRegs=0020 {r5}, byrefRegs=0400 {r10}
 G_M22994_IG13:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r5]
             ; byrRegs -[r10]
-            b       SHORT G_M22994_IG24
+            b       SHORT G_M22994_IG22
                        ;; size=2 bbWeight=1 PerfScore 1.00
 G_M22994_IG14:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r5 r7]
@@ -180,7 +180,7 @@ G_M22994_IG15:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0008 {r
             ldr     r0, [r5+0x04]
             ; gcrRegs -[r0]
             cmp     r8, r0
-            bhs     SHORT G_M22994_IG28
+            bhs     SHORT G_M22994_IG26
             add     r0, r5, 8
             ; byrRegs +[r0]
             lsl     r1, r8, 2
@@ -188,12 +188,12 @@ G_M22994_IG15:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0008 {r
             ; gcrRegs +[r0]
             ; byrRegs -[r0]
             cmp     r0, 0
-            beq     SHORT G_M22994_IG23
+            beq     SHORT G_M22994_IG21
                        ;; size=32 bbWeight=0.02 PerfScore 0.28
 G_M22994_IG16:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0 r5 r7]
             ; byrRegs -[r3-r4]
-            b       SHORT G_M22994_IG26
+            b       SHORT G_M22994_IG24
                        ;; size=2 bbWeight=0.01 PerfScore 0.01
 G_M22994_IG17:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r4}, byref, isz
             ; gcrRegs +[r5 r7]
@@ -221,7 +221,7 @@ G_M22994_IG20:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r
             ; gcrRegs +[r0]
             ldr     r1, [r5+0x04]
             cmp     r8, r1
-            bhs     SHORT G_M22994_IG28
+            bhs     SHORT G_M22994_IG26
             add     r1, r5, 8
             ; byrRegs +[r1]
             lsl     r3, r8, 2
@@ -235,38 +235,29 @@ G_M22994_IG20:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0010 {r
             ; gcrRegs -[r0-r1]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M22994_IG21
-            movs    r3, 0
-            b       SHORT G_M22994_IG22
-                       ;; size=32 bbWeight=0.02 PerfScore 0.28
-G_M22994_IG21:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref
-            movs    r3, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M22994_IG22:        ; bbWeight=0.02, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
-            cmp     r3, 0
-            bne     SHORT G_M22994_IG26
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M22994_IG23:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
+            beq     SHORT G_M22994_IG24
+                       ;; size=28 bbWeight=0.02 PerfScore 0.24
+G_M22994_IG21:        ; bbWeight=0.04, gcrefRegs=00A0 {r5 r7}, byrefRegs=0000 {}, byref, isz
             add     r8, r8, 1
             cmp     r9, r8
             bgt     SHORT G_M22994_IG14
                        ;; size=8 bbWeight=0.04 PerfScore 0.12
-G_M22994_IG24:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22994_IG22:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r5 r7]
             movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
+G_M22994_IG23:        ; bbWeight=0.50, epilog, nogc, extend
+            add     sp, 12
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M22994_IG24:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            movs    r0, 0
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M22994_IG25:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 12
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M22994_IG26:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            movs    r0, 0
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M22994_IG27:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 12
-            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M22994_IG28:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M22994_IG26:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_RNGCHKFAIL
@@ -274,7 +265,7 @@ G_M22994_IG28:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 334, prolog size 24, PerfScore 127.69, instruction count 134, allocated bytes for code 334 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 324, prolog size 24, PerfScore 127.59, instruction count 129, allocated bytes for code 324 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -286,7 +277,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 167 (0x000a7) Actual length = 334 (0x00014e)
+  Function Length   : 162 (0x000a2) Actual length = 324 (0x000144)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-10 (-1.26%) : 149411.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct ( 8) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->   r3         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T20] (  2,  0.04)   ubyte  ->   r1         "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 ( 8) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -88,7 +88,7 @@ G_M10809_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             strb    r1, [r5+0x33]
             ldrh    r1, [r4+0x08]
             cmp     r1, 34
-            bne     G_M10809_IG25
+            bne     G_M10809_IG23
             add     r1, r4, 8
             ; byrRegs +[r1]
             ldr     r2, [r4+0x04]
@@ -98,7 +98,7 @@ G_M10809_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             ; byrRegs -[r1]
             cmp     r1, 34
             beq     SHORT G_M10809_IG07
-            b       SHORT G_M10809_IG25
+            b       SHORT G_M10809_IG23
                        ;; size=32 bbWeight=0.50 PerfScore 6.50
 G_M10809_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r4]
@@ -177,7 +177,7 @@ G_M10809_IG10:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r
             ; gcrRegs +[r8]
             mov     r9, 0
             cmp     r7, 0
-            ble     SHORT G_M10809_IG22
+            ble     SHORT G_M10809_IG20
             ldr     r3, [r8+0x04]
             cmp     r3, r7
             blt     SHORT G_M10809_IG16
@@ -197,7 +197,7 @@ G_M10809_IG12:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r3 r5-r6 r8]
             movs    r3, 0
             str     r3, [sp+0x14]  // [V05 loc3]
-            b       SHORT G_M10809_IG26
+            b       SHORT G_M10809_IG24
                        ;; size=6 bbWeight=0.00 PerfScore 0.00
 G_M10809_IG13:        ; bbWeight=1.98, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r3 r5-r6 r8]
@@ -236,13 +236,13 @@ G_M10809_IG13:        ; bbWeight=1.98, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefReg
             ; byrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     G_M10809_IG26
+            bne     G_M10809_IG24
                        ;; size=60 bbWeight=1.98 PerfScore 43.56
 G_M10809_IG14:        ; bbWeight=3.96, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r3, [sp+0x14]  // [V05 loc3]
             movw    r2, 0xd1ff
             cmp     r3, r2
-            bhi     G_M10809_IG27
+            bhi     G_M10809_IG25
             add     r3, r8, 8
             ; byrRegs +[r3]
             ldr     r2, [sp+0x14]  // [V05 loc3]
@@ -254,7 +254,7 @@ G_M10809_IG14:        ; bbWeight=3.96, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
 G_M10809_IG15:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r6]
             ; byrRegs -[r3]
-            b       SHORT G_M10809_IG22
+            b       SHORT G_M10809_IG20
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r6]
@@ -271,7 +271,7 @@ G_M10809_IG17:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r3 r5-r6 r8]
             movs    r3, 0
             str     r3, [sp+0x14]  // [V05 loc3]
-            b       SHORT G_M10809_IG26
+            b       SHORT G_M10809_IG24
                        ;; size=6 bbWeight=0.00 PerfScore 0.00
 G_M10809_IG18:        ; bbWeight=0.02, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r3 r5-r6 r8]
@@ -305,25 +305,16 @@ G_M10809_IG18:        ; bbWeight=0.02, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefReg
             ; byrRegs -[r0 r10]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M10809_IG19
-            movs    r1, 0
-            b       SHORT G_M10809_IG20
-                       ;; size=56 bbWeight=0.02 PerfScore 0.44
-G_M10809_IG19:        ; bbWeight=0.02, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref
-            movs    r1, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M10809_IG20:        ; bbWeight=0.02, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
-            cmp     r1, 0
-            beq     SHORT G_M10809_IG26
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M10809_IG21:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+            bne     SHORT G_M10809_IG24
+                       ;; size=52 bbWeight=0.02 PerfScore 0.40
+G_M10809_IG19:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [sp+0x14]  // [V05 loc3]
             movw    r0, 0xd1ff
             cmp     r1, r0
-            bhi     G_M10809_IG27
+            bhi     G_M10809_IG25
             ldr     r1, [r8+0x04]
             cmp     r9, r1
-            bhs     SHORT G_M10809_IG24
+            bhs     SHORT G_M10809_IG22
             add     r1, r8, 8
             ; byrRegs +[r1]
             lsl     r0, r9, 2
@@ -333,7 +324,7 @@ G_M10809_IG21:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             cmp     r7, r9
             bgt     SHORT G_M10809_IG16
                        ;; size=40 bbWeight=0.04 PerfScore 0.56
-G_M10809_IG22:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
+G_M10809_IG20:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r6]
             ; byrRegs -[r1]
             add     r0, r5, 28
@@ -359,128 +350,128 @@ G_M10809_IG22:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000
             movs    r0, 3
             str     r0, [r5+0x28]
                        ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M10809_IG23:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10809_IG21:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 28
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M10809_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10809_IG22:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r5]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_RNGCHKFAIL
             ; gcr arg pop 0
                        ;; size=10 bbWeight=0 PerfScore 0.00
+G_M10809_IG23:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[r4]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_NEWSFAST
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r5, r0
+            ; gcrRegs +[r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcr arg pop 0
+            mov     r6, r0
+            ; gcrRegs +[r6]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_STRCNS
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r6
+            mov     r2, r4
+            ; gcrRegs +[r2]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r1-r2 r4 r6]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r5
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r0-r1]
+            ; gcr arg pop 0
+            mov     r0, r5
+            ; gcrRegs +[r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_THROW
+            ; gcrRegs -[r0 r5]
+            ; gcr arg pop 0
+                       ;; size=102 bbWeight=0 PerfScore 0.00
+G_M10809_IG24:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[r4]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_NEWSFAST
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r5, r0
+            ; gcrRegs +[r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcr arg pop 0
+            mov     r6, r0
+            ; gcrRegs +[r6]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_STRCNS
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r6
+            mov     r2, r4
+            ; gcrRegs +[r2]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r1-r2 r4 r6]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r5
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r0-r1]
+            ; gcr arg pop 0
+            mov     r0, r5
+            ; gcrRegs +[r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_THROW
+            ; gcrRegs -[r0 r5]
+            ; gcr arg pop 0
+                       ;; size=102 bbWeight=0 PerfScore 0.00
 G_M10809_IG25:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
-            ; gcrRegs +[r4]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
...

-10 (-1.26%) : 152547.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -27,7 +27,7 @@
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp11        [V17    ] (  0,  0   )  struct ( 8) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp12        [V18,T00] (  8, 24   )     ref  ->   r3         class-hnd exact "Inlining Arg" <System.String>
-;  V19 tmp13        [V19,T20] (  2,  0.04)   ubyte  ->   r1         "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 ( 8) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V22 tmp16        [V22    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -90,7 +90,7 @@ G_M10809_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             strb    r1, [r5+0x33]
             ldrh    r1, [r4+0x08]
             cmp     r1, 34
-            bne     G_M10809_IG25
+            bne     G_M10809_IG23
             add     r1, r4, 8
             ; byrRegs +[r1]
             ldr     r2, [r4+0x04]
@@ -100,7 +100,7 @@ G_M10809_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             ; byrRegs -[r1]
             cmp     r1, 34
             beq     SHORT G_M10809_IG07
-            b       SHORT G_M10809_IG25
+            b       SHORT G_M10809_IG23
                        ;; size=32 bbWeight=0.50 PerfScore 6.50
 G_M10809_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r4]
@@ -179,7 +179,7 @@ G_M10809_IG10:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0004 {r
             ; gcrRegs +[r8]
             mov     r9, 0
             cmp     r7, 0
-            ble     SHORT G_M10809_IG22
+            ble     SHORT G_M10809_IG20
             ldr     r3, [r8+0x04]
             cmp     r3, r7
             blt     SHORT G_M10809_IG16
@@ -199,7 +199,7 @@ G_M10809_IG12:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r3 r5-r6 r8]
             movs    r3, 0
             str     r3, [sp+0x14]  // [V05 loc3]
-            b       SHORT G_M10809_IG26
+            b       SHORT G_M10809_IG24
                        ;; size=6 bbWeight=0.00 PerfScore 0.00
 G_M10809_IG13:        ; bbWeight=1.98, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r3 r5-r6 r8]
@@ -238,13 +238,13 @@ G_M10809_IG13:        ; bbWeight=1.98, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefReg
             ; byrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     G_M10809_IG26
+            bne     G_M10809_IG24
                        ;; size=60 bbWeight=1.98 PerfScore 43.56
 G_M10809_IG14:        ; bbWeight=3.96, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r3, [sp+0x14]  // [V05 loc3]
             movw    r2, 0xd1ff
             cmp     r3, r2
-            bhi     G_M10809_IG27
+            bhi     G_M10809_IG25
             add     r3, r8, 8
             ; byrRegs +[r3]
             ldr     r2, [sp+0x14]  // [V05 loc3]
@@ -256,7 +256,7 @@ G_M10809_IG14:        ; bbWeight=3.96, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
 G_M10809_IG15:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r6]
             ; byrRegs -[r3]
-            b       SHORT G_M10809_IG22
+            b       SHORT G_M10809_IG20
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M10809_IG16:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r6]
@@ -273,7 +273,7 @@ G_M10809_IG17:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ; gcrRegs -[r3 r5-r6 r8]
             movs    r3, 0
             str     r3, [sp+0x14]  // [V05 loc3]
-            b       SHORT G_M10809_IG26
+            b       SHORT G_M10809_IG24
                        ;; size=6 bbWeight=0.00 PerfScore 0.00
 G_M10809_IG18:        ; bbWeight=0.02, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r3 r5-r6 r8]
@@ -307,25 +307,16 @@ G_M10809_IG18:        ; bbWeight=0.02, gcrefRegs=0178 {r3 r4 r5 r6 r8}, byrefReg
             ; byrRegs -[r0 r10]
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M10809_IG19
-            movs    r1, 0
-            b       SHORT G_M10809_IG20
-                       ;; size=56 bbWeight=0.02 PerfScore 0.44
-G_M10809_IG19:        ; bbWeight=0.02, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref
-            movs    r1, 1
-                       ;; size=2 bbWeight=0.02 PerfScore 0.02
-G_M10809_IG20:        ; bbWeight=0.02, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
-            cmp     r1, 0
-            beq     SHORT G_M10809_IG26
-                       ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M10809_IG21:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
+            bne     SHORT G_M10809_IG24
+                       ;; size=52 bbWeight=0.02 PerfScore 0.40
+G_M10809_IG19:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [sp+0x14]  // [V05 loc3]
             movw    r0, 0xd1ff
             cmp     r1, r0
-            bhi     G_M10809_IG27
+            bhi     G_M10809_IG25
             ldr     r1, [r8+0x04]
             cmp     r9, r1
-            bhs     SHORT G_M10809_IG24
+            bhs     SHORT G_M10809_IG22
             add     r1, r8, 8
             ; byrRegs +[r1]
             lsl     r0, r9, 2
@@ -335,7 +326,7 @@ G_M10809_IG21:        ; bbWeight=0.04, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             cmp     r7, r9
             bgt     SHORT G_M10809_IG16
                        ;; size=40 bbWeight=0.04 PerfScore 0.56
-G_M10809_IG22:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
+G_M10809_IG20:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r6]
             ; byrRegs -[r1]
             add     r0, r5, 28
@@ -361,128 +352,128 @@ G_M10809_IG22:        ; bbWeight=0.50, gcrefRegs=0130 {r4 r5 r8}, byrefRegs=0000
             movs    r0, 3
             str     r0, [r5+0x28]
                        ;; size=40 bbWeight=0.50 PerfScore 7.00
-G_M10809_IG23:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10809_IG21:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 28
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M10809_IG24:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M10809_IG22:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r5]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_RNGCHKFAIL
             ; gcr arg pop 0
                        ;; size=10 bbWeight=0 PerfScore 0.00
+G_M10809_IG23:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[r4]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_NEWSFAST
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r5, r0
+            ; gcrRegs +[r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcr arg pop 0
+            mov     r6, r0
+            ; gcrRegs +[r6]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_STRCNS
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r6
+            mov     r2, r4
+            ; gcrRegs +[r2]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r1-r2 r4 r6]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r5
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r0-r1]
+            ; gcr arg pop 0
+            mov     r0, r5
+            ; gcrRegs +[r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_THROW
+            ; gcrRegs -[r0 r5]
+            ; gcr arg pop 0
+                       ;; size=102 bbWeight=0 PerfScore 0.00
+G_M10809_IG24:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[r4]
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_NEWSFAST
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r5, r0
+            ; gcrRegs +[r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcr arg pop 0
+            mov     r6, r0
+            ; gcrRegs +[r6]
+            movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_STRCNS
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r6
+            mov     r2, r4
+            ; gcrRegs +[r2]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r1-r2 r4 r6]
+            ; gcr arg pop 0
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r5
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r0-r1]
+            ; gcr arg pop 0
+            mov     r0, r5
+            ; gcrRegs +[r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_THROW
+            ; gcrRegs -[r0 r5]
+            ; gcr arg pop 0
+                       ;; size=102 bbWeight=0 PerfScore 0.00
 G_M10809_IG25:        ; bbWeight=0, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
-            ; gcrRegs +[r4]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
...

+0 (0.00%) : 4735.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  ->  [sp+0x04]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [sp+0x48] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [sp+0x00]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->   r9         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->   r9         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T70] (  3,  1.50)     int  ->  r10        
+;  V19 tmp3         [V19,T66] (  3,  1.50)     int  ->  r10        
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   r0         single-def "dup spill"
-;  V27 tmp11        [V27,T64] (  3,  2   )     int  ->   r1         "spilling helperCall"
-;  V28 tmp12        [V28,T71] (  3,  1.50)     int  ->  r10        
+;  V27 tmp11        [V27,T60] (  3,  2   )     int  ->   r1         "spilling helperCall"
+;  V28 tmp12        [V28,T67] (  3,  1.50)     int  ->  r10        
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   r0         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,T101] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T95] (  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,T102] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct ( 8) 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  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   r0         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,T103] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T97] (  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,T104] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct ( 8) 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,17 +68,17 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   r0         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,T105] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T99] (  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,T106] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V65 tmp49        [V65,T80] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T83] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
-;  V67 tmp51        [V67,T81] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T84] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
-;  V69 tmp53        [V69,T82] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T85] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
+;  V65 tmp49        [V65,T76] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T79] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
+;  V67 tmp51        [V67,T77] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T80] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
+;  V69 tmp53        [V69,T78] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T81] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V71 tmp55        [V71    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->   r0         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->   r1         "index expr"
@@ -87,73 +87,67 @@
 ;  V76 tmp60        [V76,T47] (  3,  3   )     int  ->   r1         "index expr"
 ;  V77 tmp61        [V77,T12] (  2, 16   )     int  ->   r1         "argument with side effect"
 ;  V78 tmp62        [V78,T13] (  2, 16   )     int  ->   r1         "argument with side effect"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->   r1         "argument with side effect"
 ;* V80 tmp64        [V80    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V81 tmp65        [V81,T48] (  3,  3   )     int  ->   r0         "index expr"
 ;  V82 tmp66        [V82,T49] (  3,  3   )     int  ->   r1         "index expr"
-;  V83 tmp67        [V83,T68] (  2,  2   )     int  ->   r1         "argument with side effect"
-;  V84 cse0         [V84,T72] (  3,  1.50)     int  ->   r0         "CSE - conservative"
-;  V85 cse1         [V85,T73] (  3,  1.50)     int  ->   r8         "CSE - conservative"
-;  V86 rat0         [V86,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V87 rat1         [V87,T65] (  3,  2   )     int  ->   r1         "runtime lookup"
+;  V83 tmp67        [V83,T64] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V84 cse0         [V84,T68] (  3,  1.50)     int  ->   r0         "CSE - conservative"
+;  V85 cse1         [V85,T69] (  3,  1.50)     int  ->   r8         "CSE - conservative"
+;  V86 rat0         [V86,T55] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V87 rat1         [V87,T61] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V88 rat2         [V88,T50] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V89 rat3         [V89,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V90 rat4         [V90,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V91 rat5         [V91,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V92 rat6         [V92,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V93 rat7         [V93,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V94 rat8         [V94,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V95 rat9         [V95,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V96 rat10        [V96,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V97 rat11        [V97,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V98 rat12        [V98,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V99 rat13        [V99,T52] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;* V100 rat14       [V100,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V101 rat15       [V101,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V102 rat16       [V102,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V103 rat17       [V103,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V104 rat18       [V104,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V105 rat19       [V105,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V106 rat20       [V106,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V107 rat21       [V107,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V108 rat22       [V108,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V109 rat23       [V109,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V110 rat24       [V110,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V111 rat25       [V111,T61] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V89 rat3         [V89,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V90 rat4         [V90,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V91 rat5         [V91,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V92 rat6         [V92,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V93 rat7         [V93,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V94 rat8         [V94,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V95 rat9         [V95,T56] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V96 rat10        [V96,T51] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V97 rat11        [V97,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V98 rat12        [V98,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V99 rat13        [V99,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V100 rat14       [V100,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V101 rat15       [V101,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V102 rat16       [V102,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V103 rat17       [V103,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V104 rat18       [V104,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V105 rat19       [V105,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V106 rat20       [V106,T52] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V107 rat21       [V107,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V108 rat22       [V108,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V109 rat23       [V109,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V110 rat24       [V110,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V111 rat25       [V111,T62] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V112 rat26       [V112,T54] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V113 rat27       [V113,T62] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V114 rat28       [V114,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V115 rat29       [V115,T55] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat30       [V116,T63] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V117 rat31       [V117,T66] (  3,  2   )     int  ->   r1         "runtime lookup"
-;  V118 rat32       [V118,T56] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V119 rat33       [V119,T89] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
-;  V120 rat34       [V120,T90] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
-;  V121 rat35       [V121,T91] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
-;  V122 rat36       [V122,T92] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
-;  V123 rat37       [V123,T93] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
-;  V124 rat38       [V124,T94] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
-;  V125 rat39       [V125,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat40       [V126    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat41       [V127,T95] (  1,  1   )     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat42       [V128,T74] (  2,  1.50)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat43       [V129    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat44       [V130,T96] (  1,  1   )     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat45       [V131,T75] (  2,  1.50)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat46       [V132,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat47       [V133    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat48       [V134,T97] (  1,  1   )     int  ->   r0         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat49       [V135,T76] (  2,  1.50)     int  ->   r1         "field V133.hi (fldOffset=0x4)" P-INDEP
-;  V136 rat50       [V136    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat51       [V137,T98] (  1,  1   )     int  ->   r0         "field V136.lo (fldOffset=0x0)" P-INDEP
-;  V138 rat52       [V138,T77] (  2,  1.50)     int  ->   r1         "field V136.hi (fldOffset=0x4)" P-INDEP
-;  V139 rat53       [V139,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V140 rat54       [V140    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V141 rat55       [V141,T99] (  1,  1   )     int  ->   r0         "field V140.lo (fldOffset=0x0)" P-INDEP
-;  V142 rat56       [V142,T78] (  2,  1.50)     int  ->   r1         "field V140.hi (fldOffset=0x4)" P-INDEP
-;  V143 rat57       [V143    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V144 rat58       [V144,T100] (  1,  1   )     int  ->   r0         "field V143.lo (fldOffset=0x0)" P-INDEP
-;  V145 rat59       [V145,T79] (  2,  1.50)     int  ->   r1         "field V143.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat27       [V113,T83] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
+;  V114 rat28       [V114,T84] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
+;  V115 rat29       [V115,T85] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
+;  V116 rat30       [V116,T86] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
+;  V117 rat31       [V117,T87] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
+;  V118 rat32       [V118,T88] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
+;  V119 rat33       [V119,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat34       [V120    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat35       [V121,T89] (  1,  1   )     int  ->   r0         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat36       [V122,T70] (  2,  1.50)     int  ->   r1         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat37       [V123    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat38       [V124,T90] (  1,  1   )     int  ->   r0         "field V123.lo (fldOffset=0x0)" P-INDEP
+;  V125 rat39       [V125,T71] (  2,  1.50)     int  ->   r1         "field V123.hi (fldOffset=0x4)" P-INDEP
+;  V126 rat40       [V126,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat41       [V127    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat42       [V128,T91] (  1,  1   )     int  ->   r0         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat43       [V129,T72] (  2,  1.50)     int  ->   r1         "field V127.hi (fldOffset=0x4)" P-INDEP
+;  V130 rat44       [V130    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V131 rat45       [V131,T92] (  1,  1   )     int  ->   r0         "field V130.lo (fldOffset=0x0)" P-INDEP
+;  V132 rat46       [V132,T73] (  2,  1.50)     int  ->   r1         "field V130.hi (fldOffset=0x4)" P-INDEP
+;  V133 rat47       [V133,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V134 rat48       [V134    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V135 rat49       [V135,T93] (  1,  1   )     int  ->   r0         "field V134.lo (fldOffset=0x0)" P-INDEP
+;  V136 rat50       [V136,T74] (  2,  1.50)     int  ->   r1         "field V134.hi (fldOffset=0x4)" P-INDEP
+;  V137 rat51       [V137    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat52       [V138,T94] (  1,  1   )     int  ->   r0         "field V137.lo (fldOffset=0x0)" P-INDEP
+;  V139 rat53       [V139,T75] (  2,  1.50)     int  ->   r1         "field V137.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 92
 
@@ -483,8 +477,8 @@ G_M18379_IG29:        ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             subs    r3, r0, 1
             str     r3, [sp+0x48]  // [V13 loc10]
             cmp     r3, 0
-            blt     SHORT G_M18379_IG39
             ldr     r3, [sp+0x48]  // [V13 loc10]
+            blt     SHORT G_M18379_IG39
                        ;; size=64 bbWeight=0.50 PerfScore 13.00
 G_M18379_IG30:        ; bbWeight=4, gcVars=00000000000000000000000020000000 {V07}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz
             ; byrRegs -[r4]

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

@@ -17,7 +17,7 @@
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V07 loc3         [V07,T14] (  4,  5   )     int  ->  [r11-0x28] 
 ;  V08 loc4         [V08,T15] (  4,  5   )     int  ->  [r11-0x2C] 
-;  V09 loc5         [V09,T36] (  3,  1.50)     int  ->   r6        
+;  V09 loc5         [V09,T34] (  3,  1.50)     int  ->   r6        
 ;  V10 loc6         [V10,T07] ( 13, 11.50)     ref  ->  [r11-0x38]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V11 loc7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V12 loc8         [V12,T05] (  5, 14   )     int  ->   r4        
@@ -40,7 +40,7 @@
 ;* V29 tmp16        [V29    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V30 tmp17        [V30,T18] (  8,  4   )     int  ->   r8         "Inline return value spill temp"
 ;  V31 tmp18        [V31,T23] (  3,  3   )     int  ->   r0         "Inlining Arg"
-;  V32 tmp19        [V32,T32] (  2,  2   )     int  ->   r3         "Inlining Arg"
+;  V32 tmp19        [V32,T30] (  2,  2   )     int  ->   r3         "Inlining Arg"
 ;  V33 tmp20        [V33,T22] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V34 tmp21        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V35 tmp22        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -49,24 +49,24 @@
 ;* V38 tmp25        [V38    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V39 tmp26        [V39    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V40 tmp27        [V40    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V41 tmp28        [V41,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V41 tmp28        [V41,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V42 tmp29        [V42,T10] (  3,  6   )     int  ->   r0         "Inline stloc first use temp"
 ;  V43 tmp30        [V43,T11] (  3,  6   )     int  ->   r7         "Inline stloc first use temp"
 ;  V44 tmp31        [V44,T06] (  3, 12   )   byref  ->   r7         "dup spill"
 ;* V45 tmp32        [V45    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp33        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V05._length (fldOffset=0x4)" P-INDEP
-;  V47 tmp34        [V47,T34] (  3,  1.50)   byref  ->  [r11-0x3C]  spill-single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;  V47 tmp34        [V47,T32] (  3,  1.50)   byref  ->  [r11-0x3C]  spill-single-def "field V14._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp35        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "field V14._length (fldOffset=0x4)" P-INDEP
 ;* V49 tmp36        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V16._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp37        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x4)" P-INDEP
-;  V51 tmp38        [V51,T39] (  2,  1   )     int  ->   r7         single-def "field V22.Item1 (fldOffset=0x0)" P-INDEP
-;  V52 tmp39        [V52,T40] (  2,  1   )     int  ->   r4         single-def "field V22.Item2 (fldOffset=0x4)" P-INDEP
+;  V51 tmp38        [V51,T37] (  2,  1   )     int  ->   r7         single-def "field V22.Item1 (fldOffset=0x0)" P-INDEP
+;  V52 tmp39        [V52,T38] (  2,  1   )     int  ->   r4         single-def "field V22.Item2 (fldOffset=0x4)" P-INDEP
 ;* V53 tmp40        [V53    ] (  0,  0   )   byref  ->  zero-ref    "field V24._reference (fldOffset=0x0)" P-INDEP
 ;* V54 tmp41        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V24._length (fldOffset=0x4)" P-INDEP
-;* V55 tmp42        [V55,T45] (  0,  0   )     int  ->  zero-ref    single-def "field V29.Item1 (fldOffset=0x0)" P-INDEP
-;  V56 tmp43        [V56,T41] (  2,  1   )     int  ->   r6         single-def "field V29.Item2 (fldOffset=0x4)" P-INDEP
-;  V57 tmp44        [V57,T38] (  2,  1   )   byref  ->   r8         "field V34._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp45        [V58,T42] (  2,  1   )     int  ->   r3         "field V34._length (fldOffset=0x4)" P-INDEP
+;* V55 tmp42        [V55,T42] (  0,  0   )     int  ->  zero-ref    single-def "field V29.Item1 (fldOffset=0x0)" P-INDEP
+;  V56 tmp43        [V56,T39] (  2,  1   )     int  ->   r6         single-def "field V29.Item2 (fldOffset=0x4)" P-INDEP
+;  V57 tmp44        [V57,T36] (  2,  1   )   byref  ->   r8         "field V34._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp45        [V58,T40] (  2,  1   )     int  ->   r3         "field V34._length (fldOffset=0x4)" P-INDEP
 ;* V59 tmp46        [V59    ] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
 ;* V60 tmp47        [V60    ] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x4)" P-INDEP
 ;* V61 tmp48        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V36._reference (fldOffset=0x0)" P-INDEP
@@ -75,23 +75,20 @@
 ;* V64 tmp51        [V64    ] (  0,  0   )     int  ->  zero-ref    single-def "field V40._length (fldOffset=0x4)" P-INDEP
 ;  V65 tmp52        [V65,T16] (  3,  4.50)   byref  ->   r8         single-def "V06.[000..004)"
 ;  V66 tmp53        [V66,T17] (  3,  4.50)     int  ->  [r11-0x30]  spill-single-def "V06.[004..008)"
-;  V67 tmp54        [V67,T35] (  3,  1.50)   byref  ->  registers   "V17.[000..004)"
-;  V68 tmp55        [V68,T37] (  3,  1.50)     int  ->  registers   "V17.[004..008)"
+;  V67 tmp54        [V67,T33] (  3,  1.50)   byref  ->  registers   "V17.[000..004)"
+;  V68 tmp55        [V68,T35] (  3,  1.50)     int  ->  registers   "V17.[004..008)"
 ;  V69 tmp56        [V69,T03] (  2, 16   )     ref  ->   r1         "argument with side effect"
 ;  V70 GsCookie     [V70    ] (  1,  1   )     int  ->  [r11-0x40]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V71 PSPSym       [V71,T44] (  1,  1   )     int  ->  [r11-0x20]  do-not-enreg[V] "PSPSym"
+;  V71 PSPSym       [V71,T41] (  1,  1   )     int  ->  [r11-0x20]  do-not-enreg[V] "PSPSym"
 ;  V72 cse0         [V72,T12] (  3,  6   )     int  ->   r7         "CSE - aggressive"
-;  V73 rat0         [V73,T28] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V73 rat0         [V73,T27] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V74 rat1         [V74,T24] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V75 rat2         [V75,T29] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V75 rat2         [V75,T28] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V76 rat3         [V76,T25] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V77 rat4         [V77,T30] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V77 rat4         [V77,T29] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V78 rat5         [V78,T26] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V79 rat6         [V79,T31] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V80 rat7         [V80,T43] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V81 rat8         [V81,T27] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V82 rat9         [V82,T02] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V83 rat10        [V83,T01] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V79 rat6         [V79,T02] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V80 rat7         [V80,T01] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
 ;  TEMP_01                                     int  ->  [r11-0x44]
 ;
 ; Lcl frame size = 44
@@ -274,10 +271,10 @@ G_M62176_IG16:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r
             ldr     r3, [r0+0x04]
             b       SHORT G_M62176_IG19
                        ;; size=48 bbWeight=0.50 PerfScore 8.50
-G_M62176_IG17:        ; bbWeight=0.50, gcVars=0000000400000010 {V00 V47}, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
+G_M62176_IG17:        ; bbWeight=0.50, gcVars=0000000100000010 {V00 V47}, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
             ; gcrRegs -[r0]
             ; byrRegs -[r8]
-            ; GC ptr vars +{V47}
+            ; GC ptr vars +{V32 V47}
             ldr     r3, [r9+0x0C]  // [V47 tmp34]
             ; byrRegs +[r3]
             cmp     r8, 100
@@ -315,7 +312,7 @@ G_M62176_IG18:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0028 {r
                        ;; size=26 bbWeight=0.50 PerfScore 4.50
 G_M62176_IG19:        ; bbWeight=0.50, gcVars=0000000000000010 {V00}, gcrefRegs=0090 {r4 r7}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz
             ; byrRegs -[r0]
-            ; GC ptr vars -{V47}
+            ; GC ptr vars -{V32 V47}
             str     r3, [r9+0x18]  // [V66 tmp53]
             movs    r2, 0
             str     r2, [r9+0x20]  // [V07 loc3]

+0 (0.00%) : 65048.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  ->   r5         this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->   r6         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T06] (  5, 50   )     int  ->   r4        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->   r7         class-hnd exact single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->   r7         class-hnd exact single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->   r8        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 4) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
 ;  V06 loc3         [V06,T02] (  7, 88   )     ref  ->  [sp+0x08]  class-hnd <<unknown class>>
@@ -22,20 +22,17 @@
 ;* V11 tmp4         [V11    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V12 tmp5         [V12,T04] (  2, 64   )     ref  ->   r2         class-hnd "Inlining Arg" <System.__Canon>
 ;  V13 tmp6         [V13,T05] (  2, 64   )     ref  ->   r1         class-hnd "Inlining Arg" <System.__Canon>
-;  V14 tmp7         [V14,T16] (  2,  8   )     ref  ->   r3         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V14 tmp7         [V14,T14] (  2,  8   )     ref  ->   r3         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T07] (  2, 32   )     ref  ->  [sp+0x04]  spill-single-def "field V08.key (fldOffset=0x0)" P-INDEP
 ;  V16 tmp9         [V16,T08] (  2, 32   )     ref  ->  [sp+0x00]  spill-single-def "field V08.value (fldOffset=0x4)" P-INDEP
 ;  V17 cse0         [V17,T13] (  2, 17   )     int  ->  r10         hoist "CSE - aggressive"
-;  V18 cse1         [V18,T18] (  3,  6   )     int  ->   r9         "CSE - moderate"
-;  V19 rat0         [V19,T20] (  3,  4.40)     int  ->   r0         "Spilling to split statement for tree"
-;  V20 rat1         [V20,T21] (  3,  4   )     int  ->  r10         "runtime lookup"
-;  V21 rat2         [V21,T19] (  3,  5.60)     int  ->  r10         "fgMakeTemp is creating a new local variable"
-;* V22 rat3         [V22,T15] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V23 rat4         [V23,T22] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V24 rat5         [V24,T14] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V25 rat6         [V25,T03] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V26 rat7         [V26,T09] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V27 rat8         [V27,T01] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V18 cse1         [V18,T16] (  3,  6   )     int  ->   r9         "CSE - moderate"
+;  V19 rat0         [V19,T18] (  3,  4.40)     int  ->   r0         "Spilling to split statement for tree"
+;  V20 rat1         [V20,T19] (  3,  4   )     int  ->  r10         "runtime lookup"
+;  V21 rat2         [V21,T17] (  3,  5.60)     int  ->  r10         "fgMakeTemp is creating a new local variable"
+;* V22 rat3         [V22,T03] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V23 rat4         [V23,T09] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V24 rat5         [V24,T01] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 20
 

realworld.run.linux.arm.checked.mch

+0 (0.00%) : 22743.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  ->  [sp+0x04]  spill-single-def
 ;  V13 loc10        [V13,T17] (  6, 13.50)     int  ->  [sp+0x48] 
 ;  V14 loc11        [V14,T15] (  4, 14   )   byref  ->  [sp+0x00]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->   r9         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->   r9         single-def
 ;# V16 OutArgs      [V16    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V18 tmp2         [V18,T31] (  4,  3   )     int  ->   r4         "VirtualCall with runtime lookup"
-;  V19 tmp3         [V19,T70] (  3,  1.50)     int  ->  r10        
+;  V19 tmp3         [V19,T66] (  3,  1.50)     int  ->  r10        
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V22 tmp6         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -35,8 +35,8 @@
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V25 tmp9         [V25    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V26 tmp10        [V26,T28] (  4,  4   )   byref  ->   r0         single-def "dup spill"
-;  V27 tmp11        [V27,T64] (  3,  2   )     int  ->   r1         "spilling helperCall"
-;  V28 tmp12        [V28,T71] (  3,  1.50)     int  ->  r10        
+;  V27 tmp11        [V27,T60] (  3,  2   )     int  ->   r1         "spilling helperCall"
+;  V28 tmp12        [V28,T67] (  3,  1.50)     int  ->  r10        
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V31 tmp15        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -48,9 +48,9 @@
 ;  V37 tmp21        [V37,T32] (  3,  3   )     ref  ->   r8         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V38 tmp22        [V38,T33] (  3,  3   )     ref  ->   r0         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,T101] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V40 tmp24        [V40,T95] (  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,T102] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V42 tmp26        [V42,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V43 tmp27        [V43    ] (  0,  0   )  struct ( 8) 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  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V48 tmp32        [V48,T35] (  3,  3   )     ref  ->   r0         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,T103] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V50 tmp34        [V50,T97] (  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,T104] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V52 tmp36        [V52,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V53 tmp37        [V53    ] (  0,  0   )  struct ( 8) 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,17 +68,17 @@
 ;  V57 tmp41        [V57,T36] (  3,  3   )     ref  ->   r4         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V58 tmp42        [V58,T37] (  3,  3   )     ref  ->   r0         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,T105] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V60 tmp44        [V60,T99] (  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,T106] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V62 tmp46        [V62,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V63 tmp47        [V63    ] (  6, 10.50)     ref  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V64 tmp48        [V64    ] (  9, 19   )     int  ->  [sp+0x50]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V65 tmp49        [V65,T80] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
-;  V66 tmp50        [V66,T83] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
-;  V67 tmp51        [V67,T81] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
-;  V68 tmp52        [V68,T84] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
-;  V69 tmp53        [V69,T82] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
-;  V70 tmp54        [V70,T85] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
+;  V65 tmp49        [V65,T76] (  2,  1   )     ref  ->   r8         single-def "field V33._items (fldOffset=0x0)" P-INDEP
+;  V66 tmp50        [V66,T79] (  2,  1   )     int  ->   r4         single-def "field V33._length (fldOffset=0x4)" P-INDEP
+;  V67 tmp51        [V67,T77] (  2,  1   )     ref  ->   r4         single-def "field V43._items (fldOffset=0x0)" P-INDEP
+;  V68 tmp52        [V68,T80] (  2,  1   )     int  ->  [sp+0x40]  spill-single-def "field V43._length (fldOffset=0x4)" P-INDEP
+;  V69 tmp53        [V69,T78] (  2,  1   )     ref  ->   r4         single-def "field V53._items (fldOffset=0x0)" P-INDEP
+;  V70 tmp54        [V70,T81] (  2,  1   )     int  ->   r8         single-def "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V71 tmp55        [V71    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->   r0         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->   r1         "index expr"
@@ -87,73 +87,67 @@
 ;  V76 tmp60        [V76,T47] (  3,  3   )     int  ->   r1         "index expr"
 ;  V77 tmp61        [V77,T12] (  2, 16   )     int  ->   r1         "argument with side effect"
 ;  V78 tmp62        [V78,T13] (  2, 16   )     int  ->   r1         "argument with side effect"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->   r1         "argument with side effect"
 ;* V80 tmp64        [V80    ] (  0,  0   )    long  ->  zero-ref    "argument with side effect"
 ;  V81 tmp65        [V81,T48] (  3,  3   )     int  ->   r0         "index expr"
 ;  V82 tmp66        [V82,T49] (  3,  3   )     int  ->   r1         "index expr"
-;  V83 tmp67        [V83,T68] (  2,  2   )     int  ->   r1         "argument with side effect"
-;  V84 cse0         [V84,T72] (  3,  1.50)     int  ->   r0         "CSE - conservative"
-;  V85 cse1         [V85,T73] (  3,  1.50)     int  ->   r8         "CSE - conservative"
-;  V86 rat0         [V86,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V87 rat1         [V87,T65] (  3,  2   )     int  ->   r1         "runtime lookup"
+;  V83 tmp67        [V83,T64] (  2,  2   )     int  ->   r1         "argument with side effect"
+;  V84 cse0         [V84,T68] (  3,  1.50)     int  ->   r0         "CSE - conservative"
+;  V85 cse1         [V85,T69] (  3,  1.50)     int  ->   r8         "CSE - conservative"
+;  V86 rat0         [V86,T55] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V87 rat1         [V87,T61] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V88 rat2         [V88,T50] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V89 rat3         [V89,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V90 rat4         [V90,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V91 rat5         [V91,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V92 rat6         [V92,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V93 rat7         [V93,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V94 rat8         [V94,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V95 rat9         [V95,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V96 rat10        [V96,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V97 rat11        [V97,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V98 rat12        [V98,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V99 rat13        [V99,T52] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
-;* V100 rat14       [V100,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V101 rat15       [V101,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V102 rat16       [V102,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V103 rat17       [V103,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V104 rat18       [V104,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
-;  V105 rat19       [V105,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V106 rat20       [V106,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
-;  V107 rat21       [V107,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V108 rat22       [V108,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V109 rat23       [V109,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V110 rat24       [V110,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V111 rat25       [V111,T61] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V89 rat3         [V89,T06] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V90 rat4         [V90,T10] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V91 rat5         [V91,T02] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V92 rat6         [V92,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V93 rat7         [V93,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V94 rat8         [V94,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V95 rat9         [V95,T56] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V96 rat10        [V96,T51] (  3,  2.80)     int  ->   r4         "fgMakeTemp is creating a new local variable"
+;  V97 rat11        [V97,T08] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V98 rat12        [V98,T11] (  3, 16   )     int  ->   r1         "runtime lookup"
+;  V99 rat13        [V99,T04] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V100 rat14       [V100,T22] (  3,  8.80)     int  ->   r0         "Spilling to split statement for tree"
+;  V101 rat15       [V101,T19] (  3, 11.20)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V102 rat16       [V102,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V103 rat17       [V103,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V104 rat18       [V104,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V105 rat19       [V105,T57] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V106 rat20       [V106,T52] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;* V107 rat21       [V107,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V108 rat22       [V108,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V109 rat23       [V109,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V110 rat24       [V110,T59] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V111 rat25       [V111,T62] (  3,  2   )     int  ->   r1         "runtime lookup"
 ;  V112 rat26       [V112,T54] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V113 rat27       [V113,T62] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V114 rat28       [V114,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V115 rat29       [V115,T55] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V116 rat30       [V116,T63] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
-;  V117 rat31       [V117,T66] (  3,  2   )     int  ->   r1         "runtime lookup"
-;  V118 rat32       [V118,T56] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V119 rat33       [V119,T89] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
-;  V120 rat34       [V120,T90] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
-;  V121 rat35       [V121,T91] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
-;  V122 rat36       [V122,T92] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
-;  V123 rat37       [V123,T93] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
-;  V124 rat38       [V124,T94] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
-;  V125 rat39       [V125,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V126 rat40       [V126    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat41       [V127,T95] (  1,  1   )     int  ->   r0         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat42       [V128,T74] (  2,  1.50)     int  ->   r1         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat43       [V129    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat44       [V130,T96] (  1,  1   )     int  ->   r0         "field V129.lo (fldOffset=0x0)" P-INDEP
-;  V131 rat45       [V131,T75] (  2,  1.50)     int  ->   r1         "field V129.hi (fldOffset=0x4)" P-INDEP
-;  V132 rat46       [V132,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V133 rat47       [V133    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat48       [V134,T97] (  1,  1   )     int  ->   r0         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat49       [V135,T76] (  2,  1.50)     int  ->   r1         "field V133.hi (fldOffset=0x4)" P-INDEP
-;  V136 rat50       [V136    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V137 rat51       [V137,T98] (  1,  1   )     int  ->   r0         "field V136.lo (fldOffset=0x0)" P-INDEP
-;  V138 rat52       [V138,T77] (  2,  1.50)     int  ->   r1         "field V136.hi (fldOffset=0x4)" P-INDEP
-;  V139 rat53       [V139,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
-;  V140 rat54       [V140    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V141 rat55       [V141,T99] (  1,  1   )     int  ->   r0         "field V140.lo (fldOffset=0x0)" P-INDEP
-;  V142 rat56       [V142,T78] (  2,  1.50)     int  ->   r1         "field V140.hi (fldOffset=0x4)" P-INDEP
-;  V143 rat57       [V143    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V144 rat58       [V144,T100] (  1,  1   )     int  ->   r0         "field V143.lo (fldOffset=0x0)" P-INDEP
-;  V145 rat59       [V145,T79] (  2,  1.50)     int  ->   r1         "field V143.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat27       [V113,T83] (  2,  1   )     int  ->   r0         "field V71.lo (fldOffset=0x0)" P-INDEP
+;  V114 rat28       [V114,T84] (  2,  1   )     int  ->   r1         "field V71.hi (fldOffset=0x4)" P-INDEP
+;  V115 rat29       [V115,T85] (  2,  1   )     int  ->   r0         "field V74.lo (fldOffset=0x0)" P-INDEP
+;  V116 rat30       [V116,T86] (  2,  1   )     int  ->   r1         "field V74.hi (fldOffset=0x4)" P-INDEP
+;  V117 rat31       [V117,T87] (  2,  1   )     int  ->   r0         "field V80.lo (fldOffset=0x0)" P-INDEP
+;  V118 rat32       [V118,T88] (  2,  1   )     int  ->   r1         "field V80.hi (fldOffset=0x4)" P-INDEP
+;  V119 rat33       [V119,T38] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V120 rat34       [V120    ] (  1,  1   )    long  ->  [sp+0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat35       [V121,T89] (  1,  1   )     int  ->   r0         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat36       [V122,T70] (  2,  1.50)     int  ->   r1         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat37       [V123    ] (  1,  1   )    long  ->  [sp+0x30]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat38       [V124,T90] (  1,  1   )     int  ->   r0         "field V123.lo (fldOffset=0x0)" P-INDEP
+;  V125 rat39       [V125,T71] (  2,  1.50)     int  ->   r1         "field V123.hi (fldOffset=0x4)" P-INDEP
+;  V126 rat40       [V126,T39] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V127 rat41       [V127    ] (  1,  1   )    long  ->  [sp+0x28]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat42       [V128,T91] (  1,  1   )     int  ->   r0         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat43       [V129,T72] (  2,  1.50)     int  ->   r1         "field V127.hi (fldOffset=0x4)" P-INDEP
+;  V130 rat44       [V130    ] (  1,  1   )    long  ->  [sp+0x20]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V131 rat45       [V131,T92] (  1,  1   )     int  ->   r0         "field V130.lo (fldOffset=0x0)" P-INDEP
+;  V132 rat46       [V132,T73] (  2,  1.50)     int  ->   r1         "field V130.hi (fldOffset=0x4)" P-INDEP
+;  V133 rat47       [V133,T40] (  3,  3   )   byref  ->   r1         "ReplaceWithLclVar is creating a new local variable"
+;  V134 rat48       [V134    ] (  1,  1   )    long  ->  [sp+0x18]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V135 rat49       [V135,T93] (  1,  1   )     int  ->   r0         "field V134.lo (fldOffset=0x0)" P-INDEP
+;  V136 rat50       [V136,T74] (  2,  1.50)     int  ->   r1         "field V134.hi (fldOffset=0x4)" P-INDEP
+;  V137 rat51       [V137    ] (  1,  1   )    long  ->  [sp+0x10]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V138 rat52       [V138,T94] (  1,  1   )     int  ->   r0         "field V137.lo (fldOffset=0x0)" P-INDEP
+;  V139 rat53       [V139,T75] (  2,  1.50)     int  ->   r1         "field V137.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 92
 
@@ -483,8 +477,8 @@ G_M18379_IG29:        ; bbWeight=0.50, gcrefRegs=0170 {r4 r5 r6 r8}, byrefRegs=0
             subs    r3, r0, 1
             str     r3, [sp+0x48]  // [V13 loc10]
             cmp     r3, 0
-            blt     SHORT G_M18379_IG39
             ldr     r3, [sp+0x48]  // [V13 loc10]
+            blt     SHORT G_M18379_IG39
                        ;; size=64 bbWeight=0.50 PerfScore 13.00
 G_M18379_IG30:        ; bbWeight=4, gcVars=00000000000000000000000020000000 {V07}, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0080 {r7}, gcvars, byref, isz
             ; byrRegs -[r4]

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

@@ -17,7 +17,7 @@
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V07 loc3         [V07,T14] (  4,  5   )     int  ->  [r11-0x28] 
 ;  V08 loc4         [V08,T15] (  4,  5   )     int  ->  [r11-0x2C] 
-;  V09 loc5         [V09,T36] (  3,  1.50)     int  ->   r6        
+;  V09 loc5         [V09,T34] (  3,  1.50)     int  ->   r6        
 ;  V10 loc6         [V10,T07] ( 13, 11.50)     ref  ->  [r11-0x38]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V11 loc7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V12 loc8         [V12,T05] (  5, 14   )     int  ->   r4        
@@ -40,31 +40,31 @@
 ;* V29 tmp16        [V29    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V30 tmp17        [V30,T18] (  8,  4   )     int  ->   r8         "Inline return value spill temp"
 ;  V31 tmp18        [V31,T23] (  3,  3   )     int  ->   r0         "Inlining Arg"
-;  V32 tmp19        [V32,T32] (  2,  2   )     int  ->   r3         "Inlining Arg"
+;  V32 tmp19        [V32,T30] (  2,  2   )     int  ->   r3         "Inlining Arg"
 ;  V33 tmp20        [V33,T22] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V34 tmp21        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V35 tmp22        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V36 tmp23        [V36    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V37 tmp24        [V37    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V38 tmp25        [V38    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V39 tmp26        [V39,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V39 tmp26        [V39,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V40 tmp27        [V40,T10] (  3,  6   )     int  ->   r0         "Inline stloc first use temp"
 ;  V41 tmp28        [V41,T11] (  3,  6   )     int  ->   r7         "Inline stloc first use temp"
 ;  V42 tmp29        [V42,T06] (  3, 12   )   byref  ->   r7         "dup spill"
 ;* V43 tmp30        [V43    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V44 tmp31        [V44    ] (  0,  0   )     int  ->  zero-ref    single-def "field V05._length (fldOffset=0x4)" P-INDEP
-;  V45 tmp32        [V45,T34] (  3,  1.50)   byref  ->  [r11-0x3C]  spill-single-def "field V14._reference (fldOffset=0x0)" P-INDEP
+;  V45 tmp32        [V45,T32] (  3,  1.50)   byref  ->  [r11-0x3C]  spill-single-def "field V14._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp33        [V46    ] (  0,  0   )     int  ->  zero-ref    single-def "field V14._length (fldOffset=0x4)" P-INDEP
 ;* V47 tmp34        [V47    ] (  0,  0   )   byref  ->  zero-ref    "field V16._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp35        [V48    ] (  0,  0   )     int  ->  zero-ref    "field V16._length (fldOffset=0x4)" P-INDEP
-;  V49 tmp36        [V49,T39] (  2,  1   )     int  ->   r7         single-def "field V22.Item1 (fldOffset=0x0)" P-INDEP
-;  V50 tmp37        [V50,T40] (  2,  1   )     int  ->   r4         single-def "field V22.Item2 (fldOffset=0x4)" P-INDEP
+;  V49 tmp36        [V49,T37] (  2,  1   )     int  ->   r7         single-def "field V22.Item1 (fldOffset=0x0)" P-INDEP
+;  V50 tmp37        [V50,T38] (  2,  1   )     int  ->   r4         single-def "field V22.Item2 (fldOffset=0x4)" P-INDEP
 ;* V51 tmp38        [V51    ] (  0,  0   )   byref  ->  zero-ref    "field V24._reference (fldOffset=0x0)" P-INDEP
 ;* V52 tmp39        [V52    ] (  0,  0   )     int  ->  zero-ref    "field V24._length (fldOffset=0x4)" P-INDEP
-;* V53 tmp40        [V53,T45] (  0,  0   )     int  ->  zero-ref    single-def "field V29.Item1 (fldOffset=0x0)" P-INDEP
-;  V54 tmp41        [V54,T41] (  2,  1   )     int  ->   r6         single-def "field V29.Item2 (fldOffset=0x4)" P-INDEP
-;  V55 tmp42        [V55,T38] (  2,  1   )   byref  ->   r8         "field V34._reference (fldOffset=0x0)" P-INDEP
-;  V56 tmp43        [V56,T42] (  2,  1   )     int  ->   r3         "field V34._length (fldOffset=0x4)" P-INDEP
+;* V53 tmp40        [V53,T42] (  0,  0   )     int  ->  zero-ref    single-def "field V29.Item1 (fldOffset=0x0)" P-INDEP
+;  V54 tmp41        [V54,T39] (  2,  1   )     int  ->   r6         single-def "field V29.Item2 (fldOffset=0x4)" P-INDEP
+;  V55 tmp42        [V55,T36] (  2,  1   )   byref  ->   r8         "field V34._reference (fldOffset=0x0)" P-INDEP
+;  V56 tmp43        [V56,T40] (  2,  1   )     int  ->   r3         "field V34._length (fldOffset=0x4)" P-INDEP
 ;* V57 tmp44        [V57    ] (  0,  0   )   byref  ->  zero-ref    "field V35._reference (fldOffset=0x0)" P-INDEP
 ;* V58 tmp45        [V58    ] (  0,  0   )     int  ->  zero-ref    "field V35._length (fldOffset=0x4)" P-INDEP
 ;* V59 tmp46        [V59    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V36._reference (fldOffset=0x0)" P-INDEP
@@ -73,23 +73,20 @@
 ;* V62 tmp49        [V62    ] (  0,  0   )     int  ->  zero-ref    single-def "field V38._length (fldOffset=0x4)" P-INDEP
 ;  V63 tmp50        [V63,T16] (  3,  4.50)   byref  ->   r8         single-def "V06.[000..004)"
 ;  V64 tmp51        [V64,T17] (  3,  4.50)     int  ->  [r11-0x30]  spill-single-def "V06.[004..008)"
-;  V65 tmp52        [V65,T35] (  3,  1.50)   byref  ->  registers   "V17.[000..004)"
-;  V66 tmp53        [V66,T37] (  3,  1.50)     int  ->  registers   "V17.[004..008)"
+;  V65 tmp52        [V65,T33] (  3,  1.50)   byref  ->  registers   "V17.[000..004)"
+;  V66 tmp53        [V66,T35] (  3,  1.50)     int  ->  registers   "V17.[004..008)"
 ;  V67 tmp54        [V67,T03] (  2, 16   )     ref  ->   r1         "argument with side effect"
 ;  V68 GsCookie     [V68    ] (  1,  1   )     int  ->  [r11-0x40]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
-;  V69 PSPSym       [V69,T44] (  1,  1   )     int  ->  [r11-0x20]  do-not-enreg[V] "PSPSym"
+;  V69 PSPSym       [V69,T41] (  1,  1   )     int  ->  [r11-0x20]  do-not-enreg[V] "PSPSym"
 ;  V70 cse0         [V70,T12] (  3,  6   )     int  ->   r7         "CSE - aggressive"
-;  V71 rat0         [V71,T28] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V71 rat0         [V71,T27] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V72 rat1         [V72,T24] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V73 rat2         [V73,T29] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V73 rat2         [V73,T28] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V74 rat3         [V74,T25] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;  V75 rat4         [V75,T30] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
+;  V75 rat4         [V75,T29] (  3,  2.20)     int  ->   r0         "Spilling to split statement for tree"
 ;  V76 rat5         [V76,T26] (  3,  2.80)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V77 rat6         [V77,T31] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V78 rat7         [V78,T43] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V79 rat8         [V79,T27] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V80 rat9         [V80,T02] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
-;  V81 rat10        [V81,T01] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
+;  V77 rat6         [V77,T02] (  3, 17.60)     int  ->   r0         "Spilling to split statement for tree"
+;  V78 rat7         [V78,T01] (  3, 22.40)     int  ->   r1         "fgMakeTemp is creating a new local variable"
 ;  TEMP_01                                     int  ->  [r11-0x44]
 ;
 ; Lcl frame size = 44
@@ -272,10 +269,10 @@ G_M62176_IG16:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r
             ldr     r3, [r0+0x04]
             b       SHORT G_M62176_IG20
                        ;; size=48 bbWeight=0.50 PerfScore 8.50
-G_M62176_IG17:        ; bbWeight=0.50, gcVars=0000000400000010 {V00 V45}, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
+G_M62176_IG17:        ; bbWeight=0.50, gcVars=0000000100000010 {V00 V45}, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, gcvars, byref, isz
             ; gcrRegs -[r0]
             ; byrRegs -[r8]
-            ; GC ptr vars +{V45}
+            ; GC ptr vars +{V32 V45}
             cmp     r8, 100
             bhi     G_M62176_IG36
             cmp     r8, 0
@@ -309,7 +306,7 @@ G_M62176_IG19:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r
                        ;; size=40 bbWeight=0.50 PerfScore 6.50
 G_M62176_IG20:        ; bbWeight=0.50, gcVars=0000000000000010 {V00}, gcrefRegs=0090 {r4 r7}, byrefRegs=0120 {r5 r8}, gcvars, byref, isz
             ; byrRegs -[r0]
-            ; GC ptr vars -{V45}
+            ; GC ptr vars -{V32 V45}
             str     r3, [r9+0x18]  // [V64 tmp51]
             movs    r2, 0
             str     r2, [r9+0x20]  // [V07 loc3]

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 2 1 0 1 -4 +0
benchmarks.run_pgo.linux.arm.checked.mch 2 1 0 1 -4 +0
benchmarks.run_tiered.linux.arm.checked.mch 2 1 0 1 -4 +0
coreclr_tests.run.linux.arm.checked.mch 4 2 0 2 -24 +0
libraries.crossgen2.linux.arm.checked.mch 9 9 0 0 -104 +0
libraries.pmi.linux.arm.checked.mch 20 10 0 10 -98 +0
libraries_tests.run.linux.arm.Release.mch 11 4 0 7 -40 +0
librariestestsnotieredcompilation.run.linux.arm.Release.mch 11 5 0 6 -50 +0
realworld.run.linux.arm.checked.mch 2 0 0 2 -0 +0
63 33 0 30 -328 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.linux.arm.checked.mch 46,289 5,344 40,945 1,203 (2.53%) 1,203 (2.53%)
benchmarks.run_pgo.linux.arm.checked.mch 155,316 54,949 100,367 3,303 (2.08%) 3,303 (2.08%)
benchmarks.run_tiered.linux.arm.checked.mch 81,830 45,099 36,731 1,118 (1.35%) 1,118 (1.35%)
coreclr_tests.run.linux.arm.checked.mch 471,748 258,996 212,752 7,540 (1.57%) 7,540 (1.57%)
libraries.crossgen2.linux.arm.checked.mch 193,690 14 193,676 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.arm.checked.mch 270,805 6 270,799 7,820 (2.81%) 7,820 (2.81%)
libraries_tests.run.linux.arm.Release.mch 707,770 441,682 266,088 18,876 (2.60%) 18,876 (2.60%)
librariestestsnotieredcompilation.run.linux.arm.Release.mch 273,853 21,565 252,288 33,275 (10.83%) 33,275 (10.83%)
realworld.run.linux.arm.checked.mch 36,402 157 36,245 1,408 (3.72%) 1,408 (3.72%)
2,237,703 827,812 1,409,891 74,543 (3.22%) 74,543 (3.22%)

jit-analyze output

benchmarks.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15304700 (overridden on cmd)
Total bytes of diff: 15304696 (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 : 14561.dasm (-0.18 % of base)

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

Top method improvements (bytes):
          -4 (-0.18 % of base) : 14561.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (FullOpts)

Top method improvements (percentages):
          -4 (-0.18 % of base) : 14561.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (FullOpts)

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


benchmarks.run_pgo.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 60239142 (overridden on cmd)
Total bytes of diff: 60239138 (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 : 48266.dasm (-0.18 % of base)

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

Top method improvements (bytes):
          -4 (-0.18 % of base) : 48266.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)

Top method improvements (percentages):
          -4 (-0.18 % of base) : 48266.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)

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


benchmarks.run_tiered.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 22645116 (overridden on cmd)
Total bytes of diff: 22645112 (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 : 32299.dasm (-0.18 % of base)

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

Top method improvements (bytes):
          -4 (-0.18 % of base) : 32299.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)

Top method improvements (percentages):
          -4 (-0.18 % of base) : 32299.dasm - System.Linq.Tests.PersonData:Generate(int):System.Linq.Tests.Person[] (Tier0-FullOpts)

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


coreclr_tests.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 321624414 (overridden on cmd)
Total bytes of diff: 321624390 (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):
         -12 : 272471.dasm (-1.72 % of base)
         -12 : 463304.dasm (-1.72 % of base)

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

Top method improvements (bytes):
         -12 (-1.72 % of base) : 463304.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
         -12 (-1.72 % of base) : 272471.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (Tier0-FullOpts)

Top method improvements (percentages):
         -12 (-1.72 % of base) : 463304.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (FullOpts)
         -12 (-1.72 % of base) : 272471.dasm - ILCompiler.LazyGenericsSupport+Graph`1+TarjanWorkerClass[System.__Canon]:StrongConnectIterative(ILCompiler.LazyGenericsSupport+Graph`1+Vertex[System.__Canon]):this (Tier0-FullOpts)

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


libraries.crossgen2.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 35174564 (overridden on cmd)
Total bytes of diff: 35174460 (overridden on cmd)
Total bytes of delta: -104 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -22 : 59013.dasm (-0.39 % of base)
         -12 : 173422.dasm (-0.53 % of base)
         -12 : 165962.dasm (-0.54 % of base)
         -10 : 115121.dasm (-0.32 % of base)
         -10 : 59508.dasm (-3.14 % of base)
         -10 : 95402.dasm (-0.71 % of base)
         -10 : 165961.dasm (-0.58 % of base)
         -10 : 173421.dasm (-0.57 % of base)
          -8 : 114850.dasm (-0.36 % of base)

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

Top method improvements (bytes):
         -22 (-0.39 % of base) : 59013.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -12 (-0.53 % of base) : 173422.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -12 (-0.54 % of base) : 165962.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-0.71 % of base) : 95402.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)
         -10 (-0.32 % of base) : 115121.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)
         -10 (-3.14 % of base) : 59508.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -10 (-0.58 % of base) : 165961.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.57 % of base) : 173421.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.36 % of base) : 114850.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)

Top method improvements (percentages):
         -10 (-3.14 % of base) : 59508.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -10 (-0.71 % of base) : 95402.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)
         -10 (-0.58 % of base) : 165961.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.57 % of base) : 173421.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -12 (-0.54 % of base) : 165962.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -12 (-0.53 % of base) : 173422.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -22 (-0.39 % of base) : 59013.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -8 (-0.36 % of base) : 114850.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -10 (-0.32 % of base) : 115121.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)

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


libraries.pmi.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 49554232 (overridden on cmd)
Total bytes of diff: 49554134 (overridden on cmd)
Total bytes of delta: -98 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -10 : 104278.dasm (-0.29 % of base)
         -10 : 104281.dasm (-0.23 % of base)
         -10 : 235458.dasm (-0.54 % of base)
         -10 : 120281.dasm (-0.24 % of base)
         -10 : 159012.dasm (-0.62 % of base)
         -10 : 187304.dasm (-1.20 % of base)
         -10 : 228808.dasm (-0.55 % of base)
         -10 : 228807.dasm (-0.66 % of base)
         -10 : 235457.dasm (-0.65 % of base)
          -8 : 120002.dasm (-0.23 % of base)

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

Top method improvements (bytes):
         -10 (-0.23 % of base) : 104281.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 (-0.29 % of base) : 104278.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
         -10 (-0.24 % of base) : 120281.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)
         -10 (-0.66 % of base) : 228807.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.65 % of base) : 235457.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.54 % of base) : 235458.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-0.55 % of base) : 228808.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-1.20 % of base) : 187304.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -10 (-0.62 % of base) : 159012.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-0.23 % of base) : 120002.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)

Top method improvements (percentages):
         -10 (-1.20 % of base) : 187304.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -10 (-0.66 % of base) : 228807.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.65 % of base) : 235457.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.62 % of base) : 159012.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -10 (-0.55 % of base) : 228808.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-0.54 % of base) : 235458.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
         -10 (-0.29 % of base) : 104278.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
         -10 (-0.24 % of base) : 120281.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)
         -10 (-0.23 % of base) : 104281.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.23 % of base) : 120002.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)

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


libraries_tests.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 241872272 (overridden on cmd)
Total bytes of diff: 241872232 (overridden on cmd)
Total bytes of delta: -40 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -10 : 268701.dasm (-2.99 % of base)
         -10 : 388457.dasm (-1.26 % of base)
         -10 : 464372.dasm (-0.66 % of base)
         -10 : 428642.dasm (-0.62 % of base)

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

Top method improvements (bytes):
         -10 (-2.99 % of base) : 268701.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (Tier0-FullOpts)
         -10 (-0.66 % of base) : 464372.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -10 (-1.26 % of base) : 388457.dasm - System.Net.Cookie:set_Port(System.String):this (Tier0-FullOpts)
         -10 (-0.62 % of base) : 428642.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier0-FullOpts)

Top method improvements (percentages):
         -10 (-2.99 % of base) : 268701.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (Tier0-FullOpts)
         -10 (-1.26 % of base) : 388457.dasm - System.Net.Cookie:set_Port(System.String):this (Tier0-FullOpts)
         -10 (-0.66 % of base) : 464372.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -10 (-0.62 % of base) : 428642.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier0-FullOpts)

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


librariestestsnotieredcompilation.run.linux.arm.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 93042524 (overridden on cmd)
Total bytes of diff: 93042474 (overridden on cmd)
Total bytes of delta: -50 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -10 : 149411.dasm (-1.26 % of base)
         -10 : 96743.dasm (-2.99 % of base)
         -10 : 152547.dasm (-1.26 % of base)
         -10 : 164647.dasm (-0.62 % of base)
         -10 : 180560.dasm (-0.66 % of base)

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

Top method improvements (bytes):
         -10 (-2.99 % of base) : 96743.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -10 (-0.66 % of base) : 180560.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-1.26 % of base) : 149411.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -10 (-1.26 % of base) : 152547.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -10 (-0.62 % of base) : 164647.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

Top method improvements (percentages):
         -10 (-2.99 % of base) : 96743.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -10 (-1.26 % of base) : 149411.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -10 (-1.26 % of base) : 152547.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -10 (-0.66 % of base) : 180560.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -10 (-0.62 % of base) : 164647.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

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


realworld.run.linux.arm.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13613090 (overridden on cmd)
Total bytes of diff: 13613090 (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), 2 unchanged.

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



windows x86

Diffs are based on 2,298,783 contexts (841,817 MinOpts, 1,456,966 FullOpts).

MISSED contexts: base: 2,552 (0.11%), diff: 2,555 (0.11%)

Overall (-1,172 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,118,376 -4
benchmarks.run_pgo.windows.x86.checked.mch 43,731,319 -17
benchmarks.run_tiered.windows.x86.checked.mch 9,520,854 -4
coreclr_tests.run.windows.x86.checked.mch 308,762,969 -8
libraries.crossgen2.windows.x86.checked.mch 31,656,762 -97
libraries.pmi.windows.x86.checked.mch 48,900,145 -153
libraries_tests.run.windows.x86.Release.mch 185,428,227 -744
librariestestsnotieredcompilation.run.windows.x86.Release.mch 102,142,025 -92
realworld.run.windows.x86.checked.mch 11,369,042 -53

FullOpts (-1,172 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,118,097 -4
benchmarks.run_pgo.windows.x86.checked.mch 37,101,829 -17
benchmarks.run_tiered.windows.x86.checked.mch 5,251,045 -4
coreclr_tests.run.windows.x86.checked.mch 107,091,200 -8
libraries.crossgen2.windows.x86.checked.mch 31,655,705 -97
libraries.pmi.windows.x86.checked.mch 48,804,831 -153
libraries_tests.run.windows.x86.Release.mch 87,096,720 -744
librariestestsnotieredcompilation.run.windows.x86.Release.mch 93,472,233 -92
realworld.run.windows.x86.checked.mch 11,073,342 -53

Example diffs

benchmarks.run.windows.x86.checked.mch

-4 (-0.37%) : 18028.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -10,7 +10,7 @@
 ;
 ;  V00 this         [V00,T00] ( 33, 27.50)     ref  ->  ebx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 arg1         [V01,T17] ( 10,  9   )     ref  ->  [ebp-0x6C]  ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T68] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
+;  V02 arg2         [V02,T64] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
 ;  V03 loc0         [V03    ] (  9, 19   )  struct ( 8) [ebp-0x14]  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 loc1         [V04,T25] (  4,  4.50)     ref  ->  [ebp-0x70]  class-hnd spill-single-def <<unknown class>>
 ;  V05 loc2         [V05,T18] (  8, 11   )     int  ->  [ebp-0x18] 
@@ -23,10 +23,10 @@
 ;  V12 loc9         [V12,T12] (  4, 14   )   byref  ->  esi        
 ;  V13 loc10        [V13,T15] (  6, 13.50)     int  ->  [ebp-0x24] 
 ;  V14 loc11        [V14,T13] (  4, 14   )   byref  ->  [ebp-0x7C]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->  edi         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->  edi         single-def
 ;* V16 tmp0         [V16    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V17 tmp1         [V17,T62] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
-;  V18 tmp2         [V18,T70] (  3,  1.50)     int  ->  registers  
+;  V17 tmp1         [V17,T58] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
+;  V18 tmp2         [V18,T66] (  3,  1.50)     int  ->  registers  
 ;* V19 tmp3         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -34,8 +34,8 @@
 ;* V23 tmp7         [V23    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp9         [V25,T27] (  4,  4   )   byref  ->  eax         single-def "dup spill"
-;  V26 tmp10        [V26,T63] (  3,  2   )     int  ->  eax         "spilling helperCall"
-;  V27 tmp11        [V27,T71] (  3,  1.50)     int  ->  eax        
+;  V26 tmp10        [V26,T59] (  3,  2   )     int  ->  eax         "spilling helperCall"
+;  V27 tmp11        [V27,T67] (  3,  1.50)     int  ->  eax        
 ;* V28 tmp12        [V28    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -47,9 +47,9 @@
 ;  V36 tmp20        [V36,T30] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V37 tmp21        [V37,T31] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V38 tmp22        [V38    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V39 tmp23        [V39,T95] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V39 tmp23        [V39,T89] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V40 tmp24        [V40    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V41 tmp25        [V41,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V41 tmp25        [V41,T90] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V42 tmp26        [V42    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V43 tmp27        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp28        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -57,9 +57,9 @@
 ;  V46 tmp30        [V46,T32] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V47 tmp31        [V47,T33] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V48 tmp32        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V49 tmp33        [V49,T97] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V49 tmp33        [V49,T91] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V50 tmp34        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V51 tmp35        [V51,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V51 tmp35        [V51,T92] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V52 tmp36        [V52    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V53 tmp37        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V54 tmp38        [V54    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -67,83 +67,77 @@
 ;  V56 tmp40        [V56,T34] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V57 tmp41        [V57,T35] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V58 tmp42        [V58    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V59 tmp43        [V59,T99] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V59 tmp43        [V59,T93] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V61 tmp45        [V61,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V61 tmp45        [V61,T94] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V62 tmp46        [V62    ] (  6, 10.50)     ref  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V63 tmp47        [V63    ] (  9, 19   )     int  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V64 tmp48        [V64,T80] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
-;  V65 tmp49        [V65,T83] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
-;  V66 tmp50        [V66,T81] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
-;  V67 tmp51        [V67,T84] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
-;  V68 tmp52        [V68,T82] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
-;  V69 tmp53        [V69,T85] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
+;  V64 tmp48        [V64,T76] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
+;  V65 tmp49        [V65,T79] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
+;  V66 tmp50        [V66,T77] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
+;  V67 tmp51        [V67,T80] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
+;  V68 tmp52        [V68,T78] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
+;  V69 tmp53        [V69,T81] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
 ;  V70 tmp54        [V70,T42] (  3,  3   )     int  ->  eax         "index expr"
 ;  V71 tmp55        [V71,T43] (  3,  3   )     int  ->  edx         "index expr"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->  eax         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->  edx         "index expr"
 ;  V74 tmp58        [V74,T21] (  2,  8   )     ref  ->  edx         "argument with side effect"
 ;  V75 tmp59        [V75,T22] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V76 tmp60        [V76,T66] (  2,  2   )     int  ->  edx         "argument with side effect"
+;  V76 tmp60        [V76,T62] (  2,  2   )     int  ->  edx         "argument with side effect"
 ;  V77 tmp61        [V77,T46] (  3,  3   )     int  ->  eax         "index expr"
 ;  V78 tmp62        [V78,T47] (  3,  3   )     int  ->  edx         "index expr"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->  esi         "argument with side effect"
-;  V80 cse0         [V80,T72] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
-;  V81 cse1         [V81,T73] (  3,  1.50)     int  ->  esi         "CSE - conservative"
-;  V82 rat0         [V82,T55] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
-;  V83 rat1         [V83,T64] (  3,  2   )     int  ->  ecx         "runtime lookup"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->  esi         "argument with side effect"
+;  V80 cse0         [V80,T68] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
+;  V81 cse1         [V81,T69] (  3,  1.50)     int  ->  esi         "CSE - conservative"
+;  V82 rat0         [V82,T53] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
+;  V83 rat1         [V83,T60] (  3,  2   )     int  ->  ecx         "runtime lookup"
 ;  V84 rat2         [V84,T48] (  3,  2.80)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V85 rat3         [V85,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V86 rat4         [V86,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V87 rat5         [V87,T49] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V88 rat6         [V88,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V89 rat7         [V89,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
-;  V90 rat8         [V90,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V91 rat9         [V91,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V92 rat10        [V92,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V93 rat11        [V93,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V94 rat12        [V94,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V95 rat13        [V95,T50] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V96 rat14        [V96,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V97 rat15        [V97,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V98 rat16        [V98,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V99 rat17        [V99,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V100 rat18       [V100,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
-;  V101 rat19       [V101,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V102 rat20       [V102,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
-;  V103 rat21       [V103,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V104 rat22       [V104,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat23       [V105,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V106 rat24       [V106,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat25       [V107,T59] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;* V109 rat27       [V109,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V110 rat28       [V110,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V111 rat29       [V111,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V112 rat30       [V112,T61] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V113 rat31       [V113,T65] (  3,  2   )     int  ->  esi         "runtime lookup"
-;  V114 rat32       [V114,T54] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;  V115 rat33       [V115,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat34       [V116    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat35       [V117,T89] (  1,  1   )     int  ->  eax         "field V116.lo (fldOffset=0x0)" P-INDEP
-;  V118 rat36       [V118,T74] (  2,  1.50)     int  ->  edx         "field V116.hi (fldOffset=0x4)" P-INDEP
-;  V119 rat37       [V119    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat38       [V120,T90] (  1,  1   )     int  ->  eax         "field V119.lo (fldOffset=0x0)" P-INDEP
-;  V121 rat39       [V121,T75] (  2,  1.50)     int  ->  edx         "field V119.hi (fldOffset=0x4)" P-INDEP
-;  V122 rat40       [V122,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat41       [V123    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat42       [V124,T91] (  1,  1   )     int  ->  eax         "field V123.lo (fldOffset=0x0)" P-INDEP
-;  V125 rat43       [V125,T76] (  2,  1.50)     int  ->  edx         "field V123.hi (fldOffset=0x4)" P-INDEP
-;  V126 rat44       [V126    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat45       [V127,T92] (  1,  1   )     int  ->  eax         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat46       [V128,T77] (  2,  1.50)     int  ->  edx         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat47       [V129,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat48       [V130    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V131 rat49       [V131,T93] (  1,  1   )     int  ->  eax         "field V130.lo (fldOffset=0x0)" P-INDEP
-;  V132 rat50       [V132,T78] (  2,  1.50)     int  ->  edx         "field V130.hi (fldOffset=0x4)" P-INDEP
-;  V133 rat51       [V133    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat52       [V134,T94] (  1,  1   )     int  ->  eax         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat53       [V135,T79] (  2,  1.50)     int  ->  edx         "field V133.hi (fldOffset=0x4)" P-INDEP
+;  V85 rat3         [V85,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V86 rat4         [V86,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
+;  V87 rat5         [V87,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V88 rat6         [V88,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V89 rat7         [V89,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V90 rat8         [V90,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V91 rat9         [V91,T54] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V92 rat10        [V92,T49] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V93 rat11        [V93,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 rat12        [V94,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
+;  V95 rat13        [V95,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V96 rat14        [V96,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat15        [V97,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V98 rat16        [V98,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V99 rat17        [V99,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V100 rat18       [V100,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V101 rat19       [V101,T55] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V102 rat20       [V102,T50] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;* V103 rat21       [V103,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V104 rat22       [V104,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V105 rat23       [V105,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V106 rat24       [V106,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V107 rat25       [V107,T61] (  3,  2   )     int  ->  esi         "runtime lookup"
+;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;  V109 rat27       [V109,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat28       [V110    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat29       [V111,T83] (  1,  1   )     int  ->  eax         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat30       [V112,T70] (  2,  1.50)     int  ->  edx         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat31       [V113    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat32       [V114,T84] (  1,  1   )     int  ->  eax         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat33       [V115,T71] (  2,  1.50)     int  ->  edx         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat34       [V116,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat35       [V117    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat36       [V118,T85] (  1,  1   )     int  ->  eax         "field V117.lo (fldOffset=0x0)" P-INDEP
+;  V119 rat37       [V119,T72] (  2,  1.50)     int  ->  edx         "field V117.hi (fldOffset=0x4)" P-INDEP
+;  V120 rat38       [V120    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat39       [V121,T86] (  1,  1   )     int  ->  eax         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat40       [V122,T73] (  2,  1.50)     int  ->  edx         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat41       [V123,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat42       [V124    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat43       [V125,T87] (  1,  1   )     int  ->  eax         "field V124.lo (fldOffset=0x0)" P-INDEP
+;  V126 rat44       [V126,T74] (  2,  1.50)     int  ->  edx         "field V124.hi (fldOffset=0x4)" P-INDEP
+;  V127 rat45       [V127    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat46       [V128,T88] (  1,  1   )     int  ->  eax         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat47       [V129,T75] (  2,  1.50)     int  ->  edx         "field V127.hi (fldOffset=0x4)" P-INDEP
 ;  TEMP_02                                     ref  ->  [ebp-0x90]
 ;  TEMP_01                                     int  ->  [ebp-0x94]
 ;
@@ -165,7 +159,7 @@ G_M18379_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      ebx, ecx
        ; gcrRegs +[ebx]
                        ;; size=31 bbWeight=1 PerfScore 9.00
-G_M18379_IG02:        ; bbWeight=1, gcVars=00000000000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG02:        ; bbWeight=1, gcVars=000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [ebx+0x24], 0
        jne      SHORT G_M18379_IG04
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -191,7 +185,7 @@ G_M18379_IG04:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        xor      edi, edi
        ; byrRegs -[edi]
        test     esi, esi
-       jne      G_M18379_IG21
+       jne      G_M18379_IG20
                        ;; size=24 bbWeight=1 PerfScore 7.50
 G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi]
@@ -203,7 +197,7 @@ G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
        xor      eax, eax
        jmp      SHORT G_M18379_IG07
                        ;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M18379_IG06:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -216,7 +210,7 @@ G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      esi, gword ptr [ebp-0x6C]
        ; gcrRegs +[esi]
                        ;; size=16 bbWeight=0.50 PerfScore 4.62
-G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG07:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V01}
        mov      edx, gword ptr [ebx+0x20]
        ; gcrRegs +[edx]
@@ -248,11 +242,11 @@ G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      eax, edx
        sar      eax, 14
        cmp      eax, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        mov      ecx, gword ptr [ecx+4*eax+0x08]
        and      edx, 0x3FFF
        cmp      edx, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        lea      eax, bword ptr [ecx+4*edx+0x08]
        ; byrRegs +[eax]
...

benchmarks.run_pgo.windows.x86.checked.mch

-13 (-2.08%) : 12020.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.Canon]:Create(System.String):System.Canon:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@
 ; 5 inlinees with PGO data; 11 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] ( 15, 18   )     ref  ->  edi         this class-hnd single-def <Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]>
+;  V00 this         [V00,T02] ( 14, 17   )     ref  ->  edi         this class-hnd single-def <Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]>
 ;  V01 arg1         [V01,T01] ( 12, 20   )     ref  ->  esi         class-hnd single-def <System.String>
 ;  V02 loc0         [V02,T12] (  6, 14   )     ref  ->  ebx         class-hnd single-def <System.__Canon>
 ;  V03 loc1         [V03,T16] (  4, 10   )     ref  ->  [ebp-0x34]  class-hnd spill-single-def <<unknown class>>
@@ -18,7 +18,7 @@
 ;  V07 loc5         [V07,T17] (  4, 10   )     ref  ->  [ebp-0x40]  class-hnd spill-single-def <<unknown class>>
 ;  V08 loc6         [V08,T06] (  5, 17   )     int  ->  [ebp-0x14] 
 ;  V09 loc7         [V09,T27] (  2,  8   )     ref  ->  eax         class-hnd <<unknown class>>
-;  V10 loc8         [V10,T41] (  4,  3   )     ref  ->  [ebp-0x44]  class-hnd exact single-def <<unknown class>>
+;  V10 loc8         [V10,T38] (  4,  3   )     ref  ->  [ebp-0x44]  class-hnd exact single-def <<unknown class>>
 ;  V11 loc9         [V11,T22] (  4,  9   )     ref  ->  [ebp-0x48]  class-hnd spill-single-def <<unknown class>>
 ;  V12 loc10        [V12,T07] (  5, 16.50)     int  ->  [ebp-0x18] 
 ;  V13 loc11        [V13,T28] (  2,  8   )     ref  ->  edx         class-hnd <<unknown class>>
@@ -30,43 +30,39 @@
 ;  V19 tmp4         [V19,T26] (  3,  8   )     int  ->  [ebp-0x1C]  "VirtualCall with runtime lookup"
 ;* V20 tmp5         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V21 tmp6         [V21,T09] (  2, 16   )     int  ->  [ebp-0x20]  spill-single-def "VirtualCall with runtime lookup"
-;  V22 tmp7         [V22,T42] (  3,  3   )     ref  ->  eax         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V22 tmp7         [V22,T39] (  3,  3   )     ref  ->  eax         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V23 tmp8         [V23    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V24 tmp9         [V24,T10] (  2, 16   )     int  ->  eax         "VirtualCall with runtime lookup"
-;  V25 tmp10        [V25,T50] (  3,  0   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V26 tmp11        [V26,T31] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V27 tmp12        [V27,T44] (  3,  2.67)   byref  ->  ecx         "impAppendStmt"
-;  V28 tmp13        [V28,T45] (  3,  2.67)   byref  ->  edx         "spilling arg"
-;  V29 tmp14        [V29,T40] (  3,  3.33)     int  ->  eax         "spilling arg"
-;  V30 tmp15        [V30,T32] (  3,  5.33)     int  ->  eax         "Grabbing temp for Qmark"
+;  V25 tmp10        [V25,T46] (  3,  0   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V26 tmp11        [V26,T30] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
+;  V27 tmp12        [V27,T41] (  3,  2.67)   byref  ->  ecx         "impAppendStmt"
+;  V28 tmp13        [V28,T42] (  3,  2.67)   byref  ->  edx         "spilling arg"
+;  V29 tmp14        [V29,T37] (  3,  3.33)     int  ->  eax         "spilling arg"
+;  V30 tmp15        [V30,T31] (  3,  5.33)     int  ->  eax         "Grabbing temp for Qmark"
 ;* V31 tmp16        [V31    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V32 tmp17        [V32    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V33 tmp18        [V33    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V34 tmp19        [V34,T11] (  2, 16   )     int  ->  ecx         "argument with side effect"
-;  V35 cse0         [V35,T36] (  2,  4.50)     int  ->  [ebp-0x24]  spill-single-def hoist "CSE - conservative"
-;  V36 cse1         [V36,T33] (  2,  5   )     int  ->  [ebp-0x28]  spill-single-def hoist "CSE - conservative"
-;  V37 rat0         [V37,T34] (  2,  4   )     int  ->  ecx         "Spilling to split statement for tree"
-;* V38 rat1         [V38,T49] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;  V39 rat2         [V39,T29] (  2,  4   )     int  ->  ecx         "spilling expr"
-;* V40 rat3         [V40,T37] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V41 rat4         [V41,T03] (  3, 18.88)     int  ->  eax         "Spilling to split statement for tree"
-;  V42 rat5         [V42,T08] (  3, 16   )     int  ->  ecx         "runtime lookup"
-;  V43 rat6         [V43,T00] (  3, 22.40)     int  ->  ecx         "spilling expr"
-;  V44 rat7         [V44,T04] (  3, 17.92)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;  V45 rat8         [V45,T20] (  3,  9.44)     int  ->  ecx         "Spilling to split statement for tree"
-;  V46 rat9         [V46,T14] (  3, 11.20)     int  ->  edx         "spilling expr"
-;  V47 rat10        [V47,T23] (  3,  8.96)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;  V48 rat11        [V48,T21] (  3,  9.44)     int  ->  ecx         "Spilling to split statement for tree"
-;  V49 rat12        [V49,T15] (  3, 11.20)     int  ->  edx         "spilling expr"
-;  V50 rat13        [V50,T24] (  3,  8.96)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V51 rat14        [V51,T35] (  3,  4.72)     int  ->  [ebp-0x2C]  spill-single-def "Spilling to split statement for tree"
-;  V52 rat15        [V52,T39] (  3,  4   )     int  ->  registers   "runtime lookup"
-;  V53 rat16        [V53,T30] (  3,  5.60)     int  ->  ecx         "spilling expr"
-;  V54 rat17        [V54,T38] (  3,  4.48)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;  V55 rat18        [V55,T46] (  3,  2.36)     int  ->  [ebp-0x30]  spill-single-def "Spilling to split statement for tree"
-;  V56 rat19        [V56,T48] (  3,  2   )     int  ->  eax         "runtime lookup"
-;  V57 rat20        [V57,T43] (  3,  2.80)     int  ->  eax         "spilling expr"
-;  V58 rat21        [V58,T47] (  3,  2.24)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V35 cse0         [V35,T34] (  2,  4.50)     int  ->  [ebp-0x24]  spill-single-def hoist "CSE - conservative"
+;  V36 cse1         [V36,T32] (  2,  5   )     int  ->  [ebp-0x28]  spill-single-def hoist "CSE - conservative"
+;  V37 rat0         [V37,T03] (  3, 18.88)     int  ->  eax         "Spilling to split statement for tree"
+;  V38 rat1         [V38,T08] (  3, 16   )     int  ->  ecx         "runtime lookup"
+;  V39 rat2         [V39,T00] (  3, 22.40)     int  ->  ecx         "spilling expr"
+;  V40 rat3         [V40,T04] (  3, 17.92)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
+;  V41 rat4         [V41,T20] (  3,  9.44)     int  ->  ecx         "Spilling to split statement for tree"
+;  V42 rat5         [V42,T14] (  3, 11.20)     int  ->  edx         "spilling expr"
+;  V43 rat6         [V43,T23] (  3,  8.96)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V44 rat7         [V44,T21] (  3,  9.44)     int  ->  ecx         "Spilling to split statement for tree"
+;  V45 rat8         [V45,T15] (  3, 11.20)     int  ->  edx         "spilling expr"
+;  V46 rat9         [V46,T24] (  3,  8.96)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V47 rat10        [V47,T33] (  3,  4.72)     int  ->  [ebp-0x2C]  spill-single-def "Spilling to split statement for tree"
+;  V48 rat11        [V48,T36] (  3,  4   )     int  ->  registers   "runtime lookup"
+;  V49 rat12        [V49,T29] (  3,  5.60)     int  ->  ecx         "spilling expr"
+;  V50 rat13        [V50,T35] (  3,  4.48)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
+;  V51 rat14        [V51,T43] (  3,  2.36)     int  ->  [ebp-0x30]  spill-single-def "Spilling to split statement for tree"
+;  V52 rat15        [V52,T45] (  3,  2   )     int  ->  eax         "runtime lookup"
+;  V53 rat16        [V53,T40] (  3,  2.80)     int  ->  eax         "spilling expr"
+;  V54 rat17        [V54,T44] (  3,  2.24)     int  ->  eax         "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 60
 
@@ -81,7 +77,7 @@ G_M22830_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      esi, edx
        ; gcrRegs +[esi]
                        ;; size=13 bbWeight=1 PerfScore 5.00
-G_M22830_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M22830_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs +[edi]
        mov      ecx, edi
        ; gcrRegs +[ecx]
@@ -99,12 +95,7 @@ G_M22830_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        xor      edx, edx
        cmp      dword ptr [eax+0x04], 0
        jle      G_M22830_IG26
-       mov      ecx, dword ptr [edi]
-       mov      ecx, dword ptr [ecx+0x24]
-       mov      ecx, dword ptr [ecx]
-       cmp      dword ptr [ecx+0x04], 32
-       jle      SHORT G_M22830_IG03
-                       ;; size=45 bbWeight=1 PerfScore 25.00
+                       ;; size=32 bbWeight=1 PerfScore 15.00
 G_M22830_IG03:        ; bbWeight=4, gcVars=0000000000010000 {V03}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      dword ptr [ebp-0x10], edx
        mov      ecx, gword ptr [eax+4*edx+0x08]
@@ -359,7 +350,7 @@ G_M22830_IG33:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
        cmp      dword ptr [eax+0x04], 48
        jle      SHORT G_M22830_IG37
                        ;; size=53 bbWeight=0.50 PerfScore 11.25
-G_M22830_IG34:        ; bbWeight=0.40, gcVars=0000020000400000 {V10 V11}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M22830_IG34:        ; bbWeight=0.40, gcVars=0000004000400000 {V10 V11}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[edx]
        mov      eax, dword ptr [eax+0x30]
        test     eax, eax
@@ -373,8 +364,8 @@ G_M22830_IG36:        ; bbWeight=2, gcVars=0000000000020000 {V07}, gcrefRegs=000
        mov      ecx, dword ptr [ebp-0x28]
        jmp      SHORT G_M22830_IG31
                        ;; size=5 bbWeight=2 PerfScore 6.00
-G_M22830_IG37:        ; bbWeight=0.18, gcVars=0000020000400000 {V10 V11}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; GC ptr vars -{V07 V17} +{V10 V11 V22 V41}
+G_M22830_IG37:        ; bbWeight=0.18, gcVars=0000004000400000 {V10 V11}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+       ; GC ptr vars -{V07 V17} +{V10 V11 V22 V38}
        mov      ecx, dword ptr [ebp-0x30]
        mov      edx, 0xD1FFAB1E      ; global ptr
        call     CORINFO_HELP_RUNTIMEHANDLE_CLASS
@@ -418,9 +409,9 @@ G_M22830_IG41:        ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
        mov      dword ptr [ebp-0x18], ecx
        jg       SHORT G_M22830_IG45
                        ;; size=15 bbWeight=4 PerfScore 29.00
-G_M22830_IG42:        ; bbWeight=0.50, gcVars=0000020000000000 {V10}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M22830_IG42:        ; bbWeight=0.50, gcVars=0000004000000000 {V10}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax]
-       ; GC ptr vars -{V11 V22 V41}
+       ; GC ptr vars -{V11 V22 V38}
        mov      edx, gword ptr [ebp-0x44]
        ; gcrRegs +[edx]
        cmp      dword ptr [edx+0x08], 0
@@ -441,15 +432,15 @@ G_M22830_IG44:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=1 PerfScore 3.50
-G_M22830_IG45:        ; bbWeight=2, gcVars=0000020000400000 {V10 V11}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M22830_IG45:        ; bbWeight=2, gcVars=0000004000400000 {V10 V11}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax] +[esi]
-       ; GC ptr vars +{V10 V11 V22 V41}
+       ; GC ptr vars +{V10 V11 V22 V38}
        mov      eax, dword ptr [ebp-0x24]
        jmp      SHORT G_M22830_IG39
                        ;; size=5 bbWeight=2 PerfScore 6.00
-G_M22830_IG46:        ; bbWeight=0, gcVars=0000020000000000 {V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M22830_IG46:        ; bbWeight=0, gcVars=0000004000000000 {V10}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[ebx]
-       ; GC ptr vars -{V11 V22 V41}
+       ; GC ptr vars -{V11 V22 V38}
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
@@ -479,6 +470,6 @@ G_M22830_IG46:        ; bbWeight=0, gcVars=0000020000000000 {V10}, gcrefRegs=000
        int3     
                        ;; size=48 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 625, prolog size 13, PerfScore 486.79, instruction count 224, allocated bytes for code 625 (MethodHash=445da6d1) for method Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier0-FullOpts)
+; Total bytes of code 612, prolog size 13, PerfScore 476.79, instruction count 219, allocated bytes for code 612 (MethodHash=445da6d1) for method Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier0-FullOpts)
 ; ============================================================
 

-4 (-0.37%) : 72723.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (Tier0-FullOpts)

@@ -10,7 +10,7 @@
 ;
 ;  V00 this         [V00,T00] ( 33, 27.50)     ref  ->  ebx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 arg1         [V01,T17] ( 10,  9   )     ref  ->  [ebp-0x6C]  ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T68] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
+;  V02 arg2         [V02,T64] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
 ;  V03 loc0         [V03    ] (  9, 19   )  struct ( 8) [ebp-0x14]  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 loc1         [V04,T25] (  4,  4.50)     ref  ->  [ebp-0x70]  class-hnd spill-single-def <<unknown class>>
 ;  V05 loc2         [V05,T18] (  8, 11   )     int  ->  [ebp-0x18] 
@@ -23,10 +23,10 @@
 ;  V12 loc9         [V12,T12] (  4, 14   )   byref  ->  esi        
 ;  V13 loc10        [V13,T15] (  6, 13.50)     int  ->  [ebp-0x24] 
 ;  V14 loc11        [V14,T13] (  4, 14   )   byref  ->  [ebp-0x7C]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->  edi         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->  edi         single-def
 ;* V16 tmp0         [V16    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V17 tmp1         [V17,T62] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
-;  V18 tmp2         [V18,T70] (  3,  1.50)     int  ->  registers  
+;  V17 tmp1         [V17,T58] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
+;  V18 tmp2         [V18,T66] (  3,  1.50)     int  ->  registers  
 ;* V19 tmp3         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -34,8 +34,8 @@
 ;* V23 tmp7         [V23    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp9         [V25,T27] (  4,  4   )   byref  ->  eax         single-def "dup spill"
-;  V26 tmp10        [V26,T63] (  3,  2   )     int  ->  eax         "spilling helperCall"
-;  V27 tmp11        [V27,T71] (  3,  1.50)     int  ->  eax        
+;  V26 tmp10        [V26,T59] (  3,  2   )     int  ->  eax         "spilling helperCall"
+;  V27 tmp11        [V27,T67] (  3,  1.50)     int  ->  eax        
 ;* V28 tmp12        [V28    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -47,9 +47,9 @@
 ;  V36 tmp20        [V36,T30] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V37 tmp21        [V37,T31] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V38 tmp22        [V38    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V39 tmp23        [V39,T95] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V39 tmp23        [V39,T89] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V40 tmp24        [V40    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V41 tmp25        [V41,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V41 tmp25        [V41,T90] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V42 tmp26        [V42    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V43 tmp27        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp28        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -57,9 +57,9 @@
 ;  V46 tmp30        [V46,T32] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V47 tmp31        [V47,T33] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V48 tmp32        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V49 tmp33        [V49,T97] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V49 tmp33        [V49,T91] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V50 tmp34        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V51 tmp35        [V51,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V51 tmp35        [V51,T92] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V52 tmp36        [V52    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V53 tmp37        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V54 tmp38        [V54    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -67,83 +67,77 @@
 ;  V56 tmp40        [V56,T34] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V57 tmp41        [V57,T35] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V58 tmp42        [V58    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V59 tmp43        [V59,T99] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V59 tmp43        [V59,T93] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V61 tmp45        [V61,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V61 tmp45        [V61,T94] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V62 tmp46        [V62    ] (  6, 10.50)     ref  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V63 tmp47        [V63    ] (  9, 19   )     int  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V64 tmp48        [V64,T80] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
-;  V65 tmp49        [V65,T83] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
-;  V66 tmp50        [V66,T81] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
-;  V67 tmp51        [V67,T84] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
-;  V68 tmp52        [V68,T82] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
-;  V69 tmp53        [V69,T85] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
+;  V64 tmp48        [V64,T76] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
+;  V65 tmp49        [V65,T79] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
+;  V66 tmp50        [V66,T77] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
+;  V67 tmp51        [V67,T80] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
+;  V68 tmp52        [V68,T78] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
+;  V69 tmp53        [V69,T81] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
 ;  V70 tmp54        [V70,T42] (  3,  3   )     int  ->  eax         "index expr"
 ;  V71 tmp55        [V71,T43] (  3,  3   )     int  ->  edx         "index expr"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->  eax         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->  edx         "index expr"
 ;  V74 tmp58        [V74,T21] (  2,  8   )     ref  ->  edx         "argument with side effect"
 ;  V75 tmp59        [V75,T22] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V76 tmp60        [V76,T66] (  2,  2   )     int  ->  edx         "argument with side effect"
+;  V76 tmp60        [V76,T62] (  2,  2   )     int  ->  edx         "argument with side effect"
 ;  V77 tmp61        [V77,T46] (  3,  3   )     int  ->  eax         "index expr"
 ;  V78 tmp62        [V78,T47] (  3,  3   )     int  ->  edx         "index expr"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->  esi         "argument with side effect"
-;  V80 cse0         [V80,T72] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
-;  V81 cse1         [V81,T73] (  3,  1.50)     int  ->  esi         "CSE - conservative"
-;  V82 rat0         [V82,T55] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
-;  V83 rat1         [V83,T64] (  3,  2   )     int  ->  ecx         "runtime lookup"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->  esi         "argument with side effect"
+;  V80 cse0         [V80,T68] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
+;  V81 cse1         [V81,T69] (  3,  1.50)     int  ->  esi         "CSE - conservative"
+;  V82 rat0         [V82,T53] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
+;  V83 rat1         [V83,T60] (  3,  2   )     int  ->  ecx         "runtime lookup"
 ;  V84 rat2         [V84,T48] (  3,  2.80)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V85 rat3         [V85,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V86 rat4         [V86,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V87 rat5         [V87,T49] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V88 rat6         [V88,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V89 rat7         [V89,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
-;  V90 rat8         [V90,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V91 rat9         [V91,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V92 rat10        [V92,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V93 rat11        [V93,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V94 rat12        [V94,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V95 rat13        [V95,T50] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V96 rat14        [V96,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V97 rat15        [V97,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V98 rat16        [V98,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V99 rat17        [V99,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V100 rat18       [V100,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
-;  V101 rat19       [V101,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V102 rat20       [V102,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
-;  V103 rat21       [V103,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V104 rat22       [V104,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat23       [V105,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V106 rat24       [V106,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat25       [V107,T59] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;* V109 rat27       [V109,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V110 rat28       [V110,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V111 rat29       [V111,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V112 rat30       [V112,T61] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V113 rat31       [V113,T65] (  3,  2   )     int  ->  esi         "runtime lookup"
-;  V114 rat32       [V114,T54] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;  V115 rat33       [V115,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat34       [V116    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat35       [V117,T89] (  1,  1   )     int  ->  eax         "field V116.lo (fldOffset=0x0)" P-INDEP
-;  V118 rat36       [V118,T74] (  2,  1.50)     int  ->  edx         "field V116.hi (fldOffset=0x4)" P-INDEP
-;  V119 rat37       [V119    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat38       [V120,T90] (  1,  1   )     int  ->  eax         "field V119.lo (fldOffset=0x0)" P-INDEP
-;  V121 rat39       [V121,T75] (  2,  1.50)     int  ->  edx         "field V119.hi (fldOffset=0x4)" P-INDEP
-;  V122 rat40       [V122,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat41       [V123    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat42       [V124,T91] (  1,  1   )     int  ->  eax         "field V123.lo (fldOffset=0x0)" P-INDEP
-;  V125 rat43       [V125,T76] (  2,  1.50)     int  ->  edx         "field V123.hi (fldOffset=0x4)" P-INDEP
-;  V126 rat44       [V126    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat45       [V127,T92] (  1,  1   )     int  ->  eax         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat46       [V128,T77] (  2,  1.50)     int  ->  edx         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat47       [V129,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat48       [V130    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V131 rat49       [V131,T93] (  1,  1   )     int  ->  eax         "field V130.lo (fldOffset=0x0)" P-INDEP
-;  V132 rat50       [V132,T78] (  2,  1.50)     int  ->  edx         "field V130.hi (fldOffset=0x4)" P-INDEP
-;  V133 rat51       [V133    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat52       [V134,T94] (  1,  1   )     int  ->  eax         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat53       [V135,T79] (  2,  1.50)     int  ->  edx         "field V133.hi (fldOffset=0x4)" P-INDEP
+;  V85 rat3         [V85,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V86 rat4         [V86,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
+;  V87 rat5         [V87,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V88 rat6         [V88,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V89 rat7         [V89,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V90 rat8         [V90,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V91 rat9         [V91,T54] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V92 rat10        [V92,T49] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V93 rat11        [V93,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 rat12        [V94,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
+;  V95 rat13        [V95,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V96 rat14        [V96,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat15        [V97,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V98 rat16        [V98,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V99 rat17        [V99,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V100 rat18       [V100,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V101 rat19       [V101,T55] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V102 rat20       [V102,T50] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;* V103 rat21       [V103,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V104 rat22       [V104,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V105 rat23       [V105,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V106 rat24       [V106,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V107 rat25       [V107,T61] (  3,  2   )     int  ->  esi         "runtime lookup"
+;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;  V109 rat27       [V109,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat28       [V110    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat29       [V111,T83] (  1,  1   )     int  ->  eax         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat30       [V112,T70] (  2,  1.50)     int  ->  edx         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat31       [V113    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat32       [V114,T84] (  1,  1   )     int  ->  eax         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat33       [V115,T71] (  2,  1.50)     int  ->  edx         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat34       [V116,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat35       [V117    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat36       [V118,T85] (  1,  1   )     int  ->  eax         "field V117.lo (fldOffset=0x0)" P-INDEP
+;  V119 rat37       [V119,T72] (  2,  1.50)     int  ->  edx         "field V117.hi (fldOffset=0x4)" P-INDEP
+;  V120 rat38       [V120    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat39       [V121,T86] (  1,  1   )     int  ->  eax         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat40       [V122,T73] (  2,  1.50)     int  ->  edx         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat41       [V123,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat42       [V124    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat43       [V125,T87] (  1,  1   )     int  ->  eax         "field V124.lo (fldOffset=0x0)" P-INDEP
+;  V126 rat44       [V126,T74] (  2,  1.50)     int  ->  edx         "field V124.hi (fldOffset=0x4)" P-INDEP
+;  V127 rat45       [V127    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat46       [V128,T88] (  1,  1   )     int  ->  eax         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat47       [V129,T75] (  2,  1.50)     int  ->  edx         "field V127.hi (fldOffset=0x4)" P-INDEP
 ;  TEMP_02                                     ref  ->  [ebp-0x90]
 ;  TEMP_01                                     int  ->  [ebp-0x94]
 ;
@@ -165,7 +159,7 @@ G_M18379_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      ebx, ecx
        ; gcrRegs +[ebx]
                        ;; size=31 bbWeight=1 PerfScore 9.00
-G_M18379_IG02:        ; bbWeight=1, gcVars=00000000000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG02:        ; bbWeight=1, gcVars=000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [ebx+0x24], 0
        jne      SHORT G_M18379_IG04
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -191,7 +185,7 @@ G_M18379_IG04:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        xor      edi, edi
        ; byrRegs -[edi]
        test     esi, esi
-       jne      G_M18379_IG21
+       jne      G_M18379_IG20
                        ;; size=24 bbWeight=1 PerfScore 7.50
 G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi]
@@ -203,7 +197,7 @@ G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
        xor      eax, eax
        jmp      SHORT G_M18379_IG07
                        ;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M18379_IG06:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -216,7 +210,7 @@ G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      esi, gword ptr [ebp-0x6C]
        ; gcrRegs +[esi]
                        ;; size=16 bbWeight=0.50 PerfScore 4.62
-G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG07:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V01}
        mov      edx, gword ptr [ebx+0x20]
        ; gcrRegs +[edx]
@@ -248,11 +242,11 @@ G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      eax, edx
        sar      eax, 14
        cmp      eax, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        mov      ecx, gword ptr [ecx+4*eax+0x08]
        and      edx, 0x3FFF
        cmp      edx, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        lea      eax, bword ptr [ecx+4*edx+0x08]
        ; byrRegs +[eax]
...

benchmarks.run_tiered.windows.x86.checked.mch

-4 (-0.37%) : 34115.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (Tier0-FullOpts)

@@ -10,7 +10,7 @@
 ;
 ;  V00 this         [V00,T00] ( 33, 27.50)     ref  ->  ebx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 arg1         [V01,T17] ( 10,  9   )     ref  ->  [ebp-0x6C]  ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T68] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
+;  V02 arg2         [V02,T64] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
 ;  V03 loc0         [V03    ] (  9, 19   )  struct ( 8) [ebp-0x14]  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 loc1         [V04,T25] (  4,  4.50)     ref  ->  [ebp-0x70]  class-hnd spill-single-def <<unknown class>>
 ;  V05 loc2         [V05,T18] (  8, 11   )     int  ->  [ebp-0x18] 
@@ -23,10 +23,10 @@
 ;  V12 loc9         [V12,T12] (  4, 14   )   byref  ->  esi        
 ;  V13 loc10        [V13,T15] (  6, 13.50)     int  ->  [ebp-0x24] 
 ;  V14 loc11        [V14,T13] (  4, 14   )   byref  ->  [ebp-0x7C]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->  edi         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->  edi         single-def
 ;* V16 tmp0         [V16    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V17 tmp1         [V17,T62] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
-;  V18 tmp2         [V18,T70] (  3,  1.50)     int  ->  registers  
+;  V17 tmp1         [V17,T58] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
+;  V18 tmp2         [V18,T66] (  3,  1.50)     int  ->  registers  
 ;* V19 tmp3         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -34,8 +34,8 @@
 ;* V23 tmp7         [V23    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp9         [V25,T27] (  4,  4   )   byref  ->  eax         single-def "dup spill"
-;  V26 tmp10        [V26,T63] (  3,  2   )     int  ->  eax         "spilling helperCall"
-;  V27 tmp11        [V27,T71] (  3,  1.50)     int  ->  eax        
+;  V26 tmp10        [V26,T59] (  3,  2   )     int  ->  eax         "spilling helperCall"
+;  V27 tmp11        [V27,T67] (  3,  1.50)     int  ->  eax        
 ;* V28 tmp12        [V28    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -47,9 +47,9 @@
 ;  V36 tmp20        [V36,T30] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V37 tmp21        [V37,T31] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V38 tmp22        [V38    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V39 tmp23        [V39,T95] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V39 tmp23        [V39,T89] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V40 tmp24        [V40    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V41 tmp25        [V41,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V41 tmp25        [V41,T90] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V42 tmp26        [V42    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V43 tmp27        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp28        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -57,9 +57,9 @@
 ;  V46 tmp30        [V46,T32] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V47 tmp31        [V47,T33] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V48 tmp32        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V49 tmp33        [V49,T97] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V49 tmp33        [V49,T91] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V50 tmp34        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V51 tmp35        [V51,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V51 tmp35        [V51,T92] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V52 tmp36        [V52    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V53 tmp37        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V54 tmp38        [V54    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -67,83 +67,77 @@
 ;  V56 tmp40        [V56,T34] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V57 tmp41        [V57,T35] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V58 tmp42        [V58    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V59 tmp43        [V59,T99] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V59 tmp43        [V59,T93] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V61 tmp45        [V61,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V61 tmp45        [V61,T94] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V62 tmp46        [V62    ] (  6, 10.50)     ref  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V63 tmp47        [V63    ] (  9, 19   )     int  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V64 tmp48        [V64,T80] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
-;  V65 tmp49        [V65,T83] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
-;  V66 tmp50        [V66,T81] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
-;  V67 tmp51        [V67,T84] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
-;  V68 tmp52        [V68,T82] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
-;  V69 tmp53        [V69,T85] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
+;  V64 tmp48        [V64,T76] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
+;  V65 tmp49        [V65,T79] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
+;  V66 tmp50        [V66,T77] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
+;  V67 tmp51        [V67,T80] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
+;  V68 tmp52        [V68,T78] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
+;  V69 tmp53        [V69,T81] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
 ;  V70 tmp54        [V70,T42] (  3,  3   )     int  ->  eax         "index expr"
 ;  V71 tmp55        [V71,T43] (  3,  3   )     int  ->  edx         "index expr"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->  eax         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->  edx         "index expr"
 ;  V74 tmp58        [V74,T21] (  2,  8   )     ref  ->  edx         "argument with side effect"
 ;  V75 tmp59        [V75,T22] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V76 tmp60        [V76,T66] (  2,  2   )     int  ->  edx         "argument with side effect"
+;  V76 tmp60        [V76,T62] (  2,  2   )     int  ->  edx         "argument with side effect"
 ;  V77 tmp61        [V77,T46] (  3,  3   )     int  ->  eax         "index expr"
 ;  V78 tmp62        [V78,T47] (  3,  3   )     int  ->  edx         "index expr"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->  esi         "argument with side effect"
-;  V80 cse0         [V80,T72] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
-;  V81 cse1         [V81,T73] (  3,  1.50)     int  ->  esi         "CSE - conservative"
-;  V82 rat0         [V82,T55] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
-;  V83 rat1         [V83,T64] (  3,  2   )     int  ->  ecx         "runtime lookup"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->  esi         "argument with side effect"
+;  V80 cse0         [V80,T68] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
+;  V81 cse1         [V81,T69] (  3,  1.50)     int  ->  esi         "CSE - conservative"
+;  V82 rat0         [V82,T53] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
+;  V83 rat1         [V83,T60] (  3,  2   )     int  ->  ecx         "runtime lookup"
 ;  V84 rat2         [V84,T48] (  3,  2.80)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V85 rat3         [V85,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V86 rat4         [V86,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V87 rat5         [V87,T49] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V88 rat6         [V88,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V89 rat7         [V89,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
-;  V90 rat8         [V90,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V91 rat9         [V91,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V92 rat10        [V92,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V93 rat11        [V93,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V94 rat12        [V94,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V95 rat13        [V95,T50] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V96 rat14        [V96,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V97 rat15        [V97,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V98 rat16        [V98,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V99 rat17        [V99,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V100 rat18       [V100,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
-;  V101 rat19       [V101,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V102 rat20       [V102,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
-;  V103 rat21       [V103,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V104 rat22       [V104,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat23       [V105,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V106 rat24       [V106,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat25       [V107,T59] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;* V109 rat27       [V109,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V110 rat28       [V110,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V111 rat29       [V111,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V112 rat30       [V112,T61] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V113 rat31       [V113,T65] (  3,  2   )     int  ->  esi         "runtime lookup"
-;  V114 rat32       [V114,T54] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;  V115 rat33       [V115,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat34       [V116    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat35       [V117,T89] (  1,  1   )     int  ->  eax         "field V116.lo (fldOffset=0x0)" P-INDEP
-;  V118 rat36       [V118,T74] (  2,  1.50)     int  ->  edx         "field V116.hi (fldOffset=0x4)" P-INDEP
-;  V119 rat37       [V119    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat38       [V120,T90] (  1,  1   )     int  ->  eax         "field V119.lo (fldOffset=0x0)" P-INDEP
-;  V121 rat39       [V121,T75] (  2,  1.50)     int  ->  edx         "field V119.hi (fldOffset=0x4)" P-INDEP
-;  V122 rat40       [V122,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat41       [V123    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat42       [V124,T91] (  1,  1   )     int  ->  eax         "field V123.lo (fldOffset=0x0)" P-INDEP
-;  V125 rat43       [V125,T76] (  2,  1.50)     int  ->  edx         "field V123.hi (fldOffset=0x4)" P-INDEP
-;  V126 rat44       [V126    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat45       [V127,T92] (  1,  1   )     int  ->  eax         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat46       [V128,T77] (  2,  1.50)     int  ->  edx         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat47       [V129,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat48       [V130    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V131 rat49       [V131,T93] (  1,  1   )     int  ->  eax         "field V130.lo (fldOffset=0x0)" P-INDEP
-;  V132 rat50       [V132,T78] (  2,  1.50)     int  ->  edx         "field V130.hi (fldOffset=0x4)" P-INDEP
-;  V133 rat51       [V133    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat52       [V134,T94] (  1,  1   )     int  ->  eax         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat53       [V135,T79] (  2,  1.50)     int  ->  edx         "field V133.hi (fldOffset=0x4)" P-INDEP
+;  V85 rat3         [V85,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V86 rat4         [V86,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
+;  V87 rat5         [V87,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V88 rat6         [V88,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V89 rat7         [V89,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V90 rat8         [V90,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V91 rat9         [V91,T54] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V92 rat10        [V92,T49] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V93 rat11        [V93,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 rat12        [V94,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
+;  V95 rat13        [V95,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V96 rat14        [V96,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat15        [V97,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V98 rat16        [V98,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V99 rat17        [V99,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V100 rat18       [V100,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V101 rat19       [V101,T55] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V102 rat20       [V102,T50] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;* V103 rat21       [V103,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V104 rat22       [V104,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V105 rat23       [V105,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V106 rat24       [V106,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V107 rat25       [V107,T61] (  3,  2   )     int  ->  esi         "runtime lookup"
+;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;  V109 rat27       [V109,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat28       [V110    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat29       [V111,T83] (  1,  1   )     int  ->  eax         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat30       [V112,T70] (  2,  1.50)     int  ->  edx         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat31       [V113    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat32       [V114,T84] (  1,  1   )     int  ->  eax         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat33       [V115,T71] (  2,  1.50)     int  ->  edx         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat34       [V116,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat35       [V117    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat36       [V118,T85] (  1,  1   )     int  ->  eax         "field V117.lo (fldOffset=0x0)" P-INDEP
+;  V119 rat37       [V119,T72] (  2,  1.50)     int  ->  edx         "field V117.hi (fldOffset=0x4)" P-INDEP
+;  V120 rat38       [V120    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat39       [V121,T86] (  1,  1   )     int  ->  eax         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat40       [V122,T73] (  2,  1.50)     int  ->  edx         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat41       [V123,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat42       [V124    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat43       [V125,T87] (  1,  1   )     int  ->  eax         "field V124.lo (fldOffset=0x0)" P-INDEP
+;  V126 rat44       [V126,T74] (  2,  1.50)     int  ->  edx         "field V124.hi (fldOffset=0x4)" P-INDEP
+;  V127 rat45       [V127    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat46       [V128,T88] (  1,  1   )     int  ->  eax         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat47       [V129,T75] (  2,  1.50)     int  ->  edx         "field V127.hi (fldOffset=0x4)" P-INDEP
 ;  TEMP_02                                     ref  ->  [ebp-0x90]
 ;  TEMP_01                                     int  ->  [ebp-0x94]
 ;
@@ -165,7 +159,7 @@ G_M18379_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      ebx, ecx
        ; gcrRegs +[ebx]
                        ;; size=31 bbWeight=1 PerfScore 9.00
-G_M18379_IG02:        ; bbWeight=1, gcVars=00000000000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG02:        ; bbWeight=1, gcVars=000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [ebx+0x24], 0
        jne      SHORT G_M18379_IG04
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -191,7 +185,7 @@ G_M18379_IG04:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        xor      edi, edi
        ; byrRegs -[edi]
        test     esi, esi
-       jne      G_M18379_IG21
+       jne      G_M18379_IG20
                        ;; size=24 bbWeight=1 PerfScore 7.50
 G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi]
@@ -203,7 +197,7 @@ G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
        xor      eax, eax
        jmp      SHORT G_M18379_IG07
                        ;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M18379_IG06:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -216,7 +210,7 @@ G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      esi, gword ptr [ebp-0x6C]
        ; gcrRegs +[esi]
                        ;; size=16 bbWeight=0.50 PerfScore 4.62
-G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG07:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V01}
        mov      edx, gword ptr [ebx+0x20]
        ; gcrRegs +[edx]
@@ -248,11 +242,11 @@ G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      eax, edx
        sar      eax, 14
        cmp      eax, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        mov      ecx, gword ptr [ecx+4*eax+0x08]
        and      edx, 0x3FFF
        cmp      edx, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        lea      eax, bword ptr [ecx+4*edx+0x08]
        ; byrRegs +[eax]
...

coreclr_tests.run.windows.x86.checked.mch

-4 (-0.37%) : 223677.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (Tier0-FullOpts)

@@ -10,7 +10,7 @@
 ;
 ;  V00 this         [V00,T00] ( 33, 27.50)     ref  ->  ebx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 arg1         [V01,T17] ( 10,  9   )     ref  ->  [ebp-0x6C]  ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T68] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
+;  V02 arg2         [V02,T64] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
 ;  V03 loc0         [V03    ] (  9, 19   )  struct ( 8) [ebp-0x14]  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 loc1         [V04,T25] (  4,  4.50)     ref  ->  [ebp-0x70]  class-hnd spill-single-def <<unknown class>>
 ;  V05 loc2         [V05,T18] (  8, 11   )     int  ->  [ebp-0x18] 
@@ -23,10 +23,10 @@
 ;  V12 loc9         [V12,T12] (  4, 14   )   byref  ->  esi        
 ;  V13 loc10        [V13,T15] (  6, 13.50)     int  ->  [ebp-0x24] 
 ;  V14 loc11        [V14,T13] (  4, 14   )   byref  ->  [ebp-0x7C]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->  edi         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->  edi         single-def
 ;* V16 tmp0         [V16    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V17 tmp1         [V17,T62] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
-;  V18 tmp2         [V18,T70] (  3,  1.50)     int  ->  registers  
+;  V17 tmp1         [V17,T58] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
+;  V18 tmp2         [V18,T66] (  3,  1.50)     int  ->  registers  
 ;* V19 tmp3         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -34,8 +34,8 @@
 ;* V23 tmp7         [V23    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp9         [V25,T27] (  4,  4   )   byref  ->  eax         single-def "dup spill"
-;  V26 tmp10        [V26,T63] (  3,  2   )     int  ->  eax         "spilling helperCall"
-;  V27 tmp11        [V27,T71] (  3,  1.50)     int  ->  eax        
+;  V26 tmp10        [V26,T59] (  3,  2   )     int  ->  eax         "spilling helperCall"
+;  V27 tmp11        [V27,T67] (  3,  1.50)     int  ->  eax        
 ;* V28 tmp12        [V28    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -47,9 +47,9 @@
 ;  V36 tmp20        [V36,T30] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V37 tmp21        [V37,T31] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V38 tmp22        [V38    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V39 tmp23        [V39,T95] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V39 tmp23        [V39,T89] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V40 tmp24        [V40    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V41 tmp25        [V41,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V41 tmp25        [V41,T90] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V42 tmp26        [V42    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V43 tmp27        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp28        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -57,9 +57,9 @@
 ;  V46 tmp30        [V46,T32] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V47 tmp31        [V47,T33] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V48 tmp32        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V49 tmp33        [V49,T97] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V49 tmp33        [V49,T91] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V50 tmp34        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V51 tmp35        [V51,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V51 tmp35        [V51,T92] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V52 tmp36        [V52    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V53 tmp37        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V54 tmp38        [V54    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -67,83 +67,77 @@
 ;  V56 tmp40        [V56,T34] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V57 tmp41        [V57,T35] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V58 tmp42        [V58    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V59 tmp43        [V59,T99] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V59 tmp43        [V59,T93] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V61 tmp45        [V61,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V61 tmp45        [V61,T94] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V62 tmp46        [V62    ] (  6, 10.50)     ref  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V63 tmp47        [V63    ] (  9, 19   )     int  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V64 tmp48        [V64,T80] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
-;  V65 tmp49        [V65,T83] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
-;  V66 tmp50        [V66,T81] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
-;  V67 tmp51        [V67,T84] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
-;  V68 tmp52        [V68,T82] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
-;  V69 tmp53        [V69,T85] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
+;  V64 tmp48        [V64,T76] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
+;  V65 tmp49        [V65,T79] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
+;  V66 tmp50        [V66,T77] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
+;  V67 tmp51        [V67,T80] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
+;  V68 tmp52        [V68,T78] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
+;  V69 tmp53        [V69,T81] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
 ;  V70 tmp54        [V70,T42] (  3,  3   )     int  ->  eax         "index expr"
 ;  V71 tmp55        [V71,T43] (  3,  3   )     int  ->  edx         "index expr"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->  eax         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->  edx         "index expr"
 ;  V74 tmp58        [V74,T21] (  2,  8   )     ref  ->  edx         "argument with side effect"
 ;  V75 tmp59        [V75,T22] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V76 tmp60        [V76,T66] (  2,  2   )     int  ->  edx         "argument with side effect"
+;  V76 tmp60        [V76,T62] (  2,  2   )     int  ->  edx         "argument with side effect"
 ;  V77 tmp61        [V77,T46] (  3,  3   )     int  ->  eax         "index expr"
 ;  V78 tmp62        [V78,T47] (  3,  3   )     int  ->  edx         "index expr"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->  esi         "argument with side effect"
-;  V80 cse0         [V80,T72] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
-;  V81 cse1         [V81,T73] (  3,  1.50)     int  ->  esi         "CSE - conservative"
-;  V82 rat0         [V82,T55] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
-;  V83 rat1         [V83,T64] (  3,  2   )     int  ->  ecx         "runtime lookup"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->  esi         "argument with side effect"
+;  V80 cse0         [V80,T68] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
+;  V81 cse1         [V81,T69] (  3,  1.50)     int  ->  esi         "CSE - conservative"
+;  V82 rat0         [V82,T53] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
+;  V83 rat1         [V83,T60] (  3,  2   )     int  ->  ecx         "runtime lookup"
 ;  V84 rat2         [V84,T48] (  3,  2.80)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V85 rat3         [V85,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V86 rat4         [V86,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V87 rat5         [V87,T49] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V88 rat6         [V88,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V89 rat7         [V89,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
-;  V90 rat8         [V90,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V91 rat9         [V91,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V92 rat10        [V92,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V93 rat11        [V93,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V94 rat12        [V94,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V95 rat13        [V95,T50] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V96 rat14        [V96,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V97 rat15        [V97,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V98 rat16        [V98,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V99 rat17        [V99,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V100 rat18       [V100,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
-;  V101 rat19       [V101,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V102 rat20       [V102,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
-;  V103 rat21       [V103,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V104 rat22       [V104,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat23       [V105,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V106 rat24       [V106,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat25       [V107,T59] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;* V109 rat27       [V109,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V110 rat28       [V110,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V111 rat29       [V111,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V112 rat30       [V112,T61] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V113 rat31       [V113,T65] (  3,  2   )     int  ->  esi         "runtime lookup"
-;  V114 rat32       [V114,T54] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;  V115 rat33       [V115,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat34       [V116    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat35       [V117,T89] (  1,  1   )     int  ->  eax         "field V116.lo (fldOffset=0x0)" P-INDEP
-;  V118 rat36       [V118,T74] (  2,  1.50)     int  ->  edx         "field V116.hi (fldOffset=0x4)" P-INDEP
-;  V119 rat37       [V119    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat38       [V120,T90] (  1,  1   )     int  ->  eax         "field V119.lo (fldOffset=0x0)" P-INDEP
-;  V121 rat39       [V121,T75] (  2,  1.50)     int  ->  edx         "field V119.hi (fldOffset=0x4)" P-INDEP
-;  V122 rat40       [V122,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat41       [V123    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat42       [V124,T91] (  1,  1   )     int  ->  eax         "field V123.lo (fldOffset=0x0)" P-INDEP
-;  V125 rat43       [V125,T76] (  2,  1.50)     int  ->  edx         "field V123.hi (fldOffset=0x4)" P-INDEP
-;  V126 rat44       [V126    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat45       [V127,T92] (  1,  1   )     int  ->  eax         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat46       [V128,T77] (  2,  1.50)     int  ->  edx         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat47       [V129,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat48       [V130    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V131 rat49       [V131,T93] (  1,  1   )     int  ->  eax         "field V130.lo (fldOffset=0x0)" P-INDEP
-;  V132 rat50       [V132,T78] (  2,  1.50)     int  ->  edx         "field V130.hi (fldOffset=0x4)" P-INDEP
-;  V133 rat51       [V133    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat52       [V134,T94] (  1,  1   )     int  ->  eax         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat53       [V135,T79] (  2,  1.50)     int  ->  edx         "field V133.hi (fldOffset=0x4)" P-INDEP
+;  V85 rat3         [V85,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V86 rat4         [V86,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
+;  V87 rat5         [V87,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V88 rat6         [V88,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V89 rat7         [V89,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V90 rat8         [V90,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V91 rat9         [V91,T54] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V92 rat10        [V92,T49] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V93 rat11        [V93,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 rat12        [V94,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
+;  V95 rat13        [V95,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V96 rat14        [V96,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat15        [V97,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V98 rat16        [V98,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V99 rat17        [V99,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V100 rat18       [V100,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V101 rat19       [V101,T55] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V102 rat20       [V102,T50] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;* V103 rat21       [V103,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V104 rat22       [V104,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V105 rat23       [V105,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V106 rat24       [V106,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V107 rat25       [V107,T61] (  3,  2   )     int  ->  esi         "runtime lookup"
+;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;  V109 rat27       [V109,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat28       [V110    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat29       [V111,T83] (  1,  1   )     int  ->  eax         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat30       [V112,T70] (  2,  1.50)     int  ->  edx         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat31       [V113    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat32       [V114,T84] (  1,  1   )     int  ->  eax         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat33       [V115,T71] (  2,  1.50)     int  ->  edx         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat34       [V116,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat35       [V117    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat36       [V118,T85] (  1,  1   )     int  ->  eax         "field V117.lo (fldOffset=0x0)" P-INDEP
+;  V119 rat37       [V119,T72] (  2,  1.50)     int  ->  edx         "field V117.hi (fldOffset=0x4)" P-INDEP
+;  V120 rat38       [V120    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat39       [V121,T86] (  1,  1   )     int  ->  eax         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat40       [V122,T73] (  2,  1.50)     int  ->  edx         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat41       [V123,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat42       [V124    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat43       [V125,T87] (  1,  1   )     int  ->  eax         "field V124.lo (fldOffset=0x0)" P-INDEP
+;  V126 rat44       [V126,T74] (  2,  1.50)     int  ->  edx         "field V124.hi (fldOffset=0x4)" P-INDEP
+;  V127 rat45       [V127    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat46       [V128,T88] (  1,  1   )     int  ->  eax         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat47       [V129,T75] (  2,  1.50)     int  ->  edx         "field V127.hi (fldOffset=0x4)" P-INDEP
 ;  TEMP_02                                     ref  ->  [ebp-0x90]
 ;  TEMP_01                                     int  ->  [ebp-0x94]
 ;
@@ -165,7 +159,7 @@ G_M18379_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      ebx, ecx
        ; gcrRegs +[ebx]
                        ;; size=31 bbWeight=1 PerfScore 9.00
-G_M18379_IG02:        ; bbWeight=1, gcVars=00000000000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG02:        ; bbWeight=1, gcVars=000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [ebx+0x24], 0
        jne      SHORT G_M18379_IG04
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -191,7 +185,7 @@ G_M18379_IG04:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        xor      edi, edi
        ; byrRegs -[edi]
        test     esi, esi
-       jne      G_M18379_IG21
+       jne      G_M18379_IG20
                        ;; size=24 bbWeight=1 PerfScore 7.50
 G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi]
@@ -203,7 +197,7 @@ G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
        xor      eax, eax
        jmp      SHORT G_M18379_IG07
                        ;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M18379_IG06:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -216,7 +210,7 @@ G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      esi, gword ptr [ebp-0x6C]
        ; gcrRegs +[esi]
                        ;; size=16 bbWeight=0.50 PerfScore 4.62
-G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG07:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V01}
        mov      edx, gword ptr [ebx+0x20]
        ; gcrRegs +[edx]
@@ -248,11 +242,11 @@ G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      eax, edx
        sar      eax, 14
        cmp      eax, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        mov      ecx, gword ptr [ecx+4*eax+0x08]
        and      edx, 0x3FFF
        cmp      edx, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        lea      eax, bword ptr [ecx+4*edx+0x08]
        ; byrRegs +[eax]
...

-4 (-0.37%) : 476978.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -10,7 +10,7 @@
 ;
 ;  V00 this         [V00,T00] ( 33, 27.50)     ref  ->  ebx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 arg1         [V01,T17] ( 10,  9   )     ref  ->  [ebp-0x6C]  ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T68] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
+;  V02 arg2         [V02,T64] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
 ;  V03 loc0         [V03    ] (  9, 19   )  struct ( 8) [ebp-0x14]  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 loc1         [V04,T25] (  4,  4.50)     ref  ->  [ebp-0x70]  class-hnd spill-single-def <<unknown class>>
 ;  V05 loc2         [V05,T18] (  8, 11   )     int  ->  [ebp-0x18] 
@@ -23,10 +23,10 @@
 ;  V12 loc9         [V12,T12] (  4, 14   )   byref  ->  esi        
 ;  V13 loc10        [V13,T15] (  6, 13.50)     int  ->  [ebp-0x24] 
 ;  V14 loc11        [V14,T13] (  4, 14   )   byref  ->  [ebp-0x7C]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->  edi         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->  edi         single-def
 ;* V16 tmp0         [V16    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V17 tmp1         [V17,T62] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
-;  V18 tmp2         [V18,T70] (  3,  1.50)     int  ->  registers  
+;  V17 tmp1         [V17,T58] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
+;  V18 tmp2         [V18,T66] (  3,  1.50)     int  ->  registers  
 ;* V19 tmp3         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -34,8 +34,8 @@
 ;* V23 tmp7         [V23    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp9         [V25,T27] (  4,  4   )   byref  ->  eax         single-def "dup spill"
-;  V26 tmp10        [V26,T63] (  3,  2   )     int  ->  eax         "spilling helperCall"
-;  V27 tmp11        [V27,T71] (  3,  1.50)     int  ->  eax        
+;  V26 tmp10        [V26,T59] (  3,  2   )     int  ->  eax         "spilling helperCall"
+;  V27 tmp11        [V27,T67] (  3,  1.50)     int  ->  eax        
 ;* V28 tmp12        [V28    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -47,9 +47,9 @@
 ;  V36 tmp20        [V36,T30] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V37 tmp21        [V37,T31] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V38 tmp22        [V38    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V39 tmp23        [V39,T95] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V39 tmp23        [V39,T89] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V40 tmp24        [V40    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V41 tmp25        [V41,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V41 tmp25        [V41,T90] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V42 tmp26        [V42    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V43 tmp27        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp28        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -57,9 +57,9 @@
 ;  V46 tmp30        [V46,T32] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V47 tmp31        [V47,T33] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V48 tmp32        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V49 tmp33        [V49,T97] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V49 tmp33        [V49,T91] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V50 tmp34        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V51 tmp35        [V51,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V51 tmp35        [V51,T92] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V52 tmp36        [V52    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V53 tmp37        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V54 tmp38        [V54    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -67,83 +67,77 @@
 ;  V56 tmp40        [V56,T34] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V57 tmp41        [V57,T35] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V58 tmp42        [V58    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V59 tmp43        [V59,T99] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V59 tmp43        [V59,T93] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V61 tmp45        [V61,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V61 tmp45        [V61,T94] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V62 tmp46        [V62    ] (  6, 10.50)     ref  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V63 tmp47        [V63    ] (  9, 19   )     int  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V64 tmp48        [V64,T80] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
-;  V65 tmp49        [V65,T83] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
-;  V66 tmp50        [V66,T81] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
-;  V67 tmp51        [V67,T84] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
-;  V68 tmp52        [V68,T82] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
-;  V69 tmp53        [V69,T85] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
+;  V64 tmp48        [V64,T76] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
+;  V65 tmp49        [V65,T79] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
+;  V66 tmp50        [V66,T77] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
+;  V67 tmp51        [V67,T80] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
+;  V68 tmp52        [V68,T78] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
+;  V69 tmp53        [V69,T81] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
 ;  V70 tmp54        [V70,T42] (  3,  3   )     int  ->  eax         "index expr"
 ;  V71 tmp55        [V71,T43] (  3,  3   )     int  ->  edx         "index expr"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->  eax         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->  edx         "index expr"
 ;  V74 tmp58        [V74,T21] (  2,  8   )     ref  ->  edx         "argument with side effect"
 ;  V75 tmp59        [V75,T22] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V76 tmp60        [V76,T66] (  2,  2   )     int  ->  edx         "argument with side effect"
+;  V76 tmp60        [V76,T62] (  2,  2   )     int  ->  edx         "argument with side effect"
 ;  V77 tmp61        [V77,T46] (  3,  3   )     int  ->  eax         "index expr"
 ;  V78 tmp62        [V78,T47] (  3,  3   )     int  ->  edx         "index expr"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->  esi         "argument with side effect"
-;  V80 cse0         [V80,T72] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
-;  V81 cse1         [V81,T73] (  3,  1.50)     int  ->  esi         "CSE - conservative"
-;  V82 rat0         [V82,T55] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
-;  V83 rat1         [V83,T64] (  3,  2   )     int  ->  ecx         "runtime lookup"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->  esi         "argument with side effect"
+;  V80 cse0         [V80,T68] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
+;  V81 cse1         [V81,T69] (  3,  1.50)     int  ->  esi         "CSE - conservative"
+;  V82 rat0         [V82,T53] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
+;  V83 rat1         [V83,T60] (  3,  2   )     int  ->  ecx         "runtime lookup"
 ;  V84 rat2         [V84,T48] (  3,  2.80)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V85 rat3         [V85,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V86 rat4         [V86,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V87 rat5         [V87,T49] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V88 rat6         [V88,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V89 rat7         [V89,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
-;  V90 rat8         [V90,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V91 rat9         [V91,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V92 rat10        [V92,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V93 rat11        [V93,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V94 rat12        [V94,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V95 rat13        [V95,T50] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V96 rat14        [V96,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V97 rat15        [V97,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V98 rat16        [V98,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V99 rat17        [V99,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V100 rat18       [V100,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
-;  V101 rat19       [V101,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V102 rat20       [V102,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
-;  V103 rat21       [V103,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V104 rat22       [V104,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat23       [V105,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V106 rat24       [V106,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat25       [V107,T59] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;* V109 rat27       [V109,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V110 rat28       [V110,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V111 rat29       [V111,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V112 rat30       [V112,T61] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V113 rat31       [V113,T65] (  3,  2   )     int  ->  esi         "runtime lookup"
-;  V114 rat32       [V114,T54] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;  V115 rat33       [V115,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat34       [V116    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat35       [V117,T89] (  1,  1   )     int  ->  eax         "field V116.lo (fldOffset=0x0)" P-INDEP
-;  V118 rat36       [V118,T74] (  2,  1.50)     int  ->  edx         "field V116.hi (fldOffset=0x4)" P-INDEP
-;  V119 rat37       [V119    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat38       [V120,T90] (  1,  1   )     int  ->  eax         "field V119.lo (fldOffset=0x0)" P-INDEP
-;  V121 rat39       [V121,T75] (  2,  1.50)     int  ->  edx         "field V119.hi (fldOffset=0x4)" P-INDEP
-;  V122 rat40       [V122,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat41       [V123    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat42       [V124,T91] (  1,  1   )     int  ->  eax         "field V123.lo (fldOffset=0x0)" P-INDEP
-;  V125 rat43       [V125,T76] (  2,  1.50)     int  ->  edx         "field V123.hi (fldOffset=0x4)" P-INDEP
-;  V126 rat44       [V126    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat45       [V127,T92] (  1,  1   )     int  ->  eax         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat46       [V128,T77] (  2,  1.50)     int  ->  edx         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat47       [V129,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat48       [V130    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V131 rat49       [V131,T93] (  1,  1   )     int  ->  eax         "field V130.lo (fldOffset=0x0)" P-INDEP
-;  V132 rat50       [V132,T78] (  2,  1.50)     int  ->  edx         "field V130.hi (fldOffset=0x4)" P-INDEP
-;  V133 rat51       [V133    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat52       [V134,T94] (  1,  1   )     int  ->  eax         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat53       [V135,T79] (  2,  1.50)     int  ->  edx         "field V133.hi (fldOffset=0x4)" P-INDEP
+;  V85 rat3         [V85,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V86 rat4         [V86,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
+;  V87 rat5         [V87,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V88 rat6         [V88,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V89 rat7         [V89,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V90 rat8         [V90,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V91 rat9         [V91,T54] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V92 rat10        [V92,T49] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V93 rat11        [V93,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 rat12        [V94,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
+;  V95 rat13        [V95,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V96 rat14        [V96,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat15        [V97,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V98 rat16        [V98,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V99 rat17        [V99,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V100 rat18       [V100,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V101 rat19       [V101,T55] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V102 rat20       [V102,T50] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;* V103 rat21       [V103,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V104 rat22       [V104,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V105 rat23       [V105,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V106 rat24       [V106,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V107 rat25       [V107,T61] (  3,  2   )     int  ->  esi         "runtime lookup"
+;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;  V109 rat27       [V109,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat28       [V110    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat29       [V111,T83] (  1,  1   )     int  ->  eax         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat30       [V112,T70] (  2,  1.50)     int  ->  edx         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat31       [V113    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat32       [V114,T84] (  1,  1   )     int  ->  eax         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat33       [V115,T71] (  2,  1.50)     int  ->  edx         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat34       [V116,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat35       [V117    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat36       [V118,T85] (  1,  1   )     int  ->  eax         "field V117.lo (fldOffset=0x0)" P-INDEP
+;  V119 rat37       [V119,T72] (  2,  1.50)     int  ->  edx         "field V117.hi (fldOffset=0x4)" P-INDEP
+;  V120 rat38       [V120    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat39       [V121,T86] (  1,  1   )     int  ->  eax         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat40       [V122,T73] (  2,  1.50)     int  ->  edx         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat41       [V123,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat42       [V124    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat43       [V125,T87] (  1,  1   )     int  ->  eax         "field V124.lo (fldOffset=0x0)" P-INDEP
+;  V126 rat44       [V126,T74] (  2,  1.50)     int  ->  edx         "field V124.hi (fldOffset=0x4)" P-INDEP
+;  V127 rat45       [V127    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat46       [V128,T88] (  1,  1   )     int  ->  eax         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat47       [V129,T75] (  2,  1.50)     int  ->  edx         "field V127.hi (fldOffset=0x4)" P-INDEP
 ;  TEMP_02                                     ref  ->  [ebp-0x90]
 ;  TEMP_01                                     int  ->  [ebp-0x94]
 ;
@@ -165,7 +159,7 @@ G_M18379_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      ebx, ecx
        ; gcrRegs +[ebx]
                        ;; size=31 bbWeight=1 PerfScore 9.00
-G_M18379_IG02:        ; bbWeight=1, gcVars=00000000000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG02:        ; bbWeight=1, gcVars=000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [ebx+0x24], 0
        jne      SHORT G_M18379_IG04
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -191,7 +185,7 @@ G_M18379_IG04:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        xor      edi, edi
        ; byrRegs -[edi]
        test     esi, esi
-       jne      G_M18379_IG21
+       jne      G_M18379_IG20
                        ;; size=24 bbWeight=1 PerfScore 7.50
 G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi]
@@ -203,7 +197,7 @@ G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
        xor      eax, eax
        jmp      SHORT G_M18379_IG07
                        ;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M18379_IG06:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -216,7 +210,7 @@ G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      esi, gword ptr [ebp-0x6C]
        ; gcrRegs +[esi]
                        ;; size=16 bbWeight=0.50 PerfScore 4.62
-G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG07:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V01}
        mov      edx, gword ptr [ebx+0x20]
        ; gcrRegs +[edx]
@@ -248,11 +242,11 @@ G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      eax, edx
        sar      eax, 14
        cmp      eax, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        mov      ecx, gword ptr [ecx+4*eax+0x08]
        and      edx, 0x3FFF
        cmp      edx, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        lea      eax, bword ptr [ecx+4*edx+0x08]
        ; byrRegs +[eax]
...

libraries.crossgen2.windows.x86.checked.mch

-9 (-2.91%) : 32127.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -16,7 +16,7 @@
 ;  V05 loc2         [V05,T01] (  6, 20   )   byref  ->  ecx         "impAppendStmt"
 ;  V06 tmp1         [V06,T04] (  6,  8   )   byref  ->  ebx        
 ;  V07 tmp2         [V07,T06] (  4,  8   )     int  ->  eax         "VirtualCall with runtime lookup"
-;  V08 tmp3         [V08,T08] (  4,  4   )     int  ->  eax        
+;  V08 tmp3         [V08,T08] (  2,  3.96)     int  ->  ecx        
 ;  V09 tmp4         [V09,T05] (  4,  8   )     ref  ->  ecx         "argument with side effect"
 ;  V10 cse0         [V10,T07] (  5,  7   )     int  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
 ;
@@ -108,13 +108,13 @@ G_M22994_IG09:        ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        nop      
        call     [eax]
        ; gcrRegs -[ecx edx]
+       xor      ecx, ecx
        test     eax, eax
-       sete     al
-       movzx    eax, al
-       test     eax, eax
+       sete     cl
+       test     ecx, ecx
        mov      dword ptr [ebp-0x14], ebx
        jne      G_M22994_IG21
-                       ;; size=42 bbWeight=1.98 PerfScore 31.68
+                       ;; size=41 bbWeight=1.98 PerfScore 31.68
 G_M22994_IG10:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      eax, dword ptr [ebp-0x14]
        inc      eax
@@ -184,13 +184,10 @@ G_M22994_IG17:        ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        call     [eax]
        ; gcrRegs -[ecx edx]
        test     eax, eax
-       sete     al
-       movzx    eax, al
-       test     eax, eax
        mov      dword ptr [ebp-0x14], ebx
        mov      edx, dword ptr [ebp-0x1C]
-       jne      SHORT G_M22994_IG21
-                       ;; size=46 bbWeight=0.02 PerfScore 0.42
+       je       SHORT G_M22994_IG21
+                       ;; size=38 bbWeight=0.02 PerfScore 0.39
 G_M22994_IG18:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      eax, dword ptr [ebp-0x14]
        inc      eax
@@ -225,6 +222,6 @@ G_M22994_IG23:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 309, prolog size 24, PerfScore 128.36, instruction count 117, allocated bytes for code 309 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 300, prolog size 24, PerfScore 128.33, instruction count 114, allocated bytes for code 300 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 

-20 (-2.04%) : 76488.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)

@@ -41,9 +41,8 @@
 ;  V29 tmp10        [V29,T13] (  4,  8   )     ref  ->  eax         "argument with side effect"
 ;  V30 tmp11        [V30,T14] (  4,  8   )     ref  ->  eax         "argument with side effect"
 ;  V31 tmp12        [V31,T08] (  4, 16   )     ref  ->  edx         "argument with side effect"
-;  TEMP_01                                   byref  ->  [ebp-0x5C]
 ;
-; Lcl frame size = 80
+; Lcl frame size = 76
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -51,16 +50,14 @@ G_M1087_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
        push     edi
        push     esi
        push     ebx
-       sub      esp, 80
+       sub      esp, 76
        xorps    xmm4, xmm4
-       movups   xmmword ptr [ebp-0x5C], xmm4
-       movups   xmmword ptr [ebp-0x4C], xmm4
        movups   xmmword ptr [ebp-0x3C], xmm4
        movups   xmmword ptr [ebp-0x2C], xmm4
        movups   xmmword ptr [ebp-0x1C], xmm4
        mov      esi, edx
        ; gcrRegs +[esi]
-                       ;; size=34 bbWeight=1 PerfScore 15.08
+                       ;; size=26 bbWeight=1 PerfScore 11.08
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
        ; gcrRegs +[ecx]
        cmp      byte  ptr [ecx], cl
@@ -296,21 +293,16 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefReg
        ; gcrRegs +[ecx]
        mov      edx, dword ptr [ebp-0x24]
        mov      dword ptr [ecx+0x1C], edx
+       mov      gword ptr [ebp-0x58], ecx
        lea      edx, bword ptr [ecx+0x14]
        ; byrRegs +[edx]
-       ; GC ptr vars -{V20}
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
-       ; gcrRegs -[eax]
+       ; gcrRegs -[eax ecx]
        ; byrRegs -[edx]
-       mov      gword ptr [ebp-0x58], ecx
-       ; GC ptr vars +{V20}
-       lea      edx, bword ptr [ecx+0x18]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x5C], edx
        mov      ecx, gword ptr [ebp-0x44]
+       ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx] +[eax]
-       ; byrRegs -[edx]
        mov      ecx, eax
        ; gcrRegs +[ecx]
        mov      edx, gword ptr [ebp-0x44]
@@ -319,18 +311,19 @@ G_M1087_IG10:        ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefReg
        ; GC ptr vars -{V10}
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-       mov      edx, bword ptr [ebp-0x5C]
+       mov      ecx, gword ptr [ebp-0x58]
+       ; gcrRegs +[ecx]
+       lea      edx, bword ptr [ecx+0x18]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V20}
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      ecx, gword ptr [ebp-0x58]
-       ; gcrRegs +[ecx]
        jmp      SHORT G_M1087_IG12
-                       ;; size=106 bbWeight=0.02 PerfScore 0.93
+                       ;; size=100 bbWeight=0.02 PerfScore 0.89
 G_M1087_IG11:        ; bbWeight=0.02, gcVars=00000040 {V07}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[ecx]
-       ; GC ptr vars -{V20} +{V06 V07}
+       ; GC ptr vars +{V06 V07}
        mov      gword ptr [ebp+0x08], edi
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs -[edi] +[eax]
@@ -342,21 +335,18 @@ G_M1087_IG11:        ; bbWeight=0.02, gcVars=00000040 {V07}, gcrefRegs=000000C8
        mov      edx, dword ptr [(reloc)]
        mov      edi, gword ptr [edx]
        ; gcrRegs +[edi]
-       lea      edx, bword ptr [ecx+0x14]
-       ; byrRegs +[edx]
-       call     [CORINFO_HELP_ASSIGN_REF_EDI]
-       ; gcrRegs -[edi]
-       ; byrRegs -[edx]
        mov      gword ptr [ebp-0x54], ecx
        ; GC ptr vars +{V19}
-       lea      edx, bword ptr [ecx+0x18]
+       lea      edx, bword ptr [ecx+0x14]
        ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x5C], edx
-       mov      ecx, gword ptr [ebp-0x40]
        ; GC ptr vars -{V06}
+       call     [CORINFO_HELP_ASSIGN_REF_EDI]
+       ; gcrRegs -[ecx edi]
+       ; byrRegs -[edx]
+       mov      ecx, gword ptr [ebp-0x40]
+       ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx] +[eax]
-       ; byrRegs -[edx]
        mov      ecx, eax
        ; gcrRegs +[ecx]
        mov      edx, gword ptr [ebp-0x40]
@@ -365,19 +355,19 @@ G_M1087_IG11:        ; bbWeight=0.02, gcVars=00000040 {V07}, gcrefRegs=000000C8
        ; GC ptr vars -{V07}
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-       mov      edx, bword ptr [ebp-0x5C]
+       mov      edi, gword ptr [ebp-0x54]
+       ; gcrRegs +[edi]
+       lea      edx, bword ptr [edi+0x18]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V19}
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      edi, gword ptr [ebp-0x54]
-       ; gcrRegs +[edi]
        mov      ecx, edi
        ; gcrRegs +[ecx]
        mov      edi, gword ptr [ebp+0x08]
-                       ;; size=82 bbWeight=0.02 PerfScore 0.68
-G_M1087_IG12:        ; bbWeight=0.04, gcVars=00000000 {}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; GC ptr vars -{V19}
+                       ;; size=76 bbWeight=0.02 PerfScore 0.64
+G_M1087_IG12:        ; bbWeight=0.04, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      eax, dword ptr [ebp-0x24]
        cmp      eax, dword ptr [ebx+0x04]
        jae      G_M1087_IG23
@@ -543,6 +533,6 @@ G_M1087_IG23:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, by
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 979, prolog size 32, PerfScore 977.83, instruction count 283, allocated bytes for code 979 (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 959, prolog size 24, PerfScore 973.75, instruction count 277, allocated bytes for code 959 (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)
 ; ============================================================
 

-20 (-1.50%) : 152646.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)

@@ -62,9 +62,8 @@
 ;  V50 tmp33        [V50,T34] (  2, 16   )     ref  ->  [ebp-0x7C]  spill-single-def "argument with side effect"
 ;  V51 tmp34        [V51,T35] (  2, 16   )     ref  ->  [ebp-0x80]  spill-single-def "argument with side effect"
 ;  V52 tmp35        [V52,T30] (  4, 16   )     ref  ->  edx         "argument with side effect"
-;  TEMP_01                                   byref  ->  [ebp-0x84]
 ;
-; Lcl frame size = 120
+; Lcl frame size = 116
 
 G_M15781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -72,14 +71,12 @@ G_M15781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 120
-       xor      eax, eax
-       mov      dword ptr [ebp-0x84], eax
+       sub      esp, 116
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      ebx, edx
        ; gcrRegs +[ebx]
-                       ;; size=21 bbWeight=1 PerfScore 6.25
+                       ;; size=13 bbWeight=1 PerfScore 5.00
 G_M15781_IG02:        ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
@@ -691,21 +688,17 @@ G_M15781_IG32:        ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
        call     [CORINFO_HELP_ASSIGN_REF_ECX]
        ; gcrRegs -[ecx]
        ; byrRegs -[edx]
+       mov      gword ptr [ebp-0x50], eax
+       ; GC ptr vars +{V21}
        lea      edx, bword ptr [eax+0x0C]
        ; byrRegs +[edx]
        mov      ecx, gword ptr [ebp-0x74]
        ; gcrRegs +[ecx]
        call     [CORINFO_HELP_ASSIGN_REF_ECX]
-       ; gcrRegs -[ecx]
+       ; gcrRegs -[eax ecx]
        ; byrRegs -[edx]
-       mov      gword ptr [ebp-0x50], eax
-       ; GC ptr vars +{V21}
-       lea      edx, bword ptr [eax+0x08]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x84], edx
        call     [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
-       ; gcrRegs -[eax]
-       ; byrRegs -[edx] +[eax]
+       ; byrRegs +[eax]
        mov      edx, gword ptr [eax]
        ; gcrRegs +[edx]
        mov      ecx, gword ptr [ebp-0x74]
@@ -715,30 +708,31 @@ G_M15781_IG32:        ; bbWeight=0.04, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
        call     [<unknown method>]
        ; gcrRegs -[ecx edx] +[eax]
        ; byrRegs -[eax]
-       mov      edx, bword ptr [ebp-0x84]
+       mov      ecx, gword ptr [ebp-0x50]
+       ; gcrRegs +[ecx]
+       lea      edx, bword ptr [ecx+0x08]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V21}
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      ecx, dword ptr [ebp-0x38]
+       mov      eax, dword ptr [ebp-0x38]
        mov      edx, gword ptr [ebp-0x4C]
        ; gcrRegs +[edx]
-       cmp      ecx, dword ptr [edx+0x04]
+       cmp      eax, dword ptr [edx+0x04]
        jae      SHORT G_M15781_IG35
-       lea      edx, bword ptr [edx+4*ecx+0x08]
+       lea      edx, bword ptr [edx+4*eax+0x08]
        ; gcrRegs -[edx]
        ; byrRegs +[edx]
-       mov      eax, gword ptr [ebp-0x50]
-       ; gcrRegs +[eax]
-       ; GC ptr vars -{V20 V21}
-       call     [CORINFO_HELP_ASSIGN_REF_EAX]
-       ; gcrRegs -[eax]
+       ; GC ptr vars -{V20}
+       call     [CORINFO_HELP_ASSIGN_REF_ECX]
+       ; gcrRegs -[ecx]
        ; byrRegs -[edx]
-       inc      ecx
-       cmp      ecx, edi
-       mov      dword ptr [ebp-0x38], ecx
+       inc      eax
+       cmp      eax, edi
+       mov      dword ptr [ebp-0x38], eax
        jl       G_M15781_IG32
-                       ;; size=160 bbWeight=0.04 PerfScore 2.57
+                       ;; size=148 bbWeight=0.04 PerfScore 2.49
 G_M15781_IG33:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi]
        mov      ecx, ebx
@@ -773,6 +767,6 @@ G_M15781_IG36:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=25 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1336, prolog size 17, PerfScore 1559.57, instruction count 394, allocated bytes for code 1336 (MethodHash=127bc25a) for method System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
+; Total bytes of code 1316, prolog size 9, PerfScore 1558.24, instruction count 390, allocated bytes for code 1316 (MethodHash=127bc25a) for method System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
 ; ============================================================
 

-15 (-1.29%) : 154738.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

@@ -54,9 +54,8 @@
 ;  V42 cse2         [V42,T30] (  5,  0.16)     ref  ->  [ebp-0x58]  spill-single-def "CSE - conservative"
 ;  V43 cse3         [V43,T24] (  3,  7.92)     ref  ->  edx         "CSE - moderate"
 ;  V44 cse4         [V44,T27] (  4,  3   )     ref  ->  ecx         "CSE - conservative"
-;  TEMP_01                                   byref  ->  [ebp-0x5C]
 ;
-; Lcl frame size = 80
+; Lcl frame size = 76
 
 G_M44608_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -64,14 +63,12 @@ G_M44608_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 80
-       xor      eax, eax
-       mov      dword ptr [ebp-0x5C], eax
+       sub      esp, 76
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
        ; gcrRegs +[edi]
-                       ;; size=18 bbWeight=1 PerfScore 6.25
+                       ;; size=13 bbWeight=1 PerfScore 5.00
 G_M44608_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
@@ -432,7 +429,7 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=4000C000 {V02 V03 V42}, gcrefRegs=
        ; gcrRegs +[eax ecx]
        ; GC ptr vars -{V02} +{V42}
        cmp      byte  ptr [eax+0x3E], 0
-       jne      G_M44608_IG18
+       jne      SHORT G_M44608_IG18
        mov      gword ptr [ebp-0x1C], ecx
        ; GC ptr vars +{V08}
        ; GC ptr vars +{V02}
@@ -445,14 +442,10 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=4000C000 {V02 V03 V42}, gcrefRegs=
        call     [CORINFO_HELP_ASSIGN_REF_ECX]
        ; gcrRegs -[ecx]
        ; byrRegs -[edx]
-       lea      edx, bword ptr [eax+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x5C], edx
        mov      gword ptr [ebp-0x24], eax
        ; GC ptr vars +{V11}
        mov      edx, gword ptr [eax+0x08]
        ; gcrRegs +[edx]
-       ; byrRegs -[edx]
        mov      edx, gword ptr [edx+0x08]
        mov      edx, gword ptr [edx+0x08]
        mov      gword ptr [ebp-0x4C], edx
@@ -472,19 +465,19 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=4000C000 {V02 V03 V42}, gcrefRegs=
        ; GC ptr vars -{V38}
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-       mov      edx, bword ptr [ebp-0x5C]
+       mov      ebx, gword ptr [ebp-0x24]
+       ; gcrRegs +[ebx]
+       lea      edx, bword ptr [ebx+0x04]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V11}
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      ebx, gword ptr [ebp-0x24]
-       ; gcrRegs +[ebx]
        mov      eax, gword ptr [ebx+0x08]
        ; gcrRegs +[eax]
        mov      eax, gword ptr [eax+0x04]
        mov      gword ptr [ebp-0x3C], eax
        ; GC ptr vars +{V26}
-       ; GC ptr vars -{V11}
        call     [CORINFO_HELP_READYTORUN_NEW]
        mov      gword ptr [ebp-0x38], eax
        ; GC ptr vars +{V25}
@@ -504,7 +497,7 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=4000C000 {V02 V03 V42}, gcrefRegs=
        ; gcrRegs -[ebx]
        ; byrRegs -[edx]
        jmp      SHORT G_M44608_IG20
-                       ;; size=134 bbWeight=0.02 PerfScore 1.21
+                       ;; size=124 bbWeight=0.02 PerfScore 1.17
 G_M44608_IG18:        ; bbWeight=0.02, gcVars=0000C000 {V02 V03}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ecx]
        ; GC ptr vars -{V02 V08}
@@ -766,6 +759,6 @@ G_M44608_IG30:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        int3     
                        ;; size=23 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1160, prolog size 18, PerfScore 627.64, instruction count 335, allocated bytes for code 1160 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1145, prolog size 13, PerfScore 626.35, instruction count 331, allocated bytes for code 1145 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
 ; ============================================================
 

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

@@ -62,9 +62,8 @@
 ;  V50 tmp35        [V50,T03] (  4, 16   )     ref  ->  eax         "argument with side effect"
 ;  V51 tmp36        [V51,T16] (  4,  8   )     ref  ->  eax         "argument with side effect"
 ;  V52 cse0         [V52,T04] ( 17, 12.50)   byref  ->  [ebp-0x98]  spill-single-def "CSE - moderate"
-;  TEMP_01                                   byref  ->  [ebp-0x9C]
 ;
-; Lcl frame size = 144
+; Lcl frame size = 140
 
 G_M28747_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -72,20 +71,20 @@ G_M28747_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 144
+       sub      esp, 140
        xorps    xmm4, xmm4
-       mov      ebx, -144
-       movups   xmmword ptr [ebp+ebx-0x0C], xmm4
-       movups   xmmword ptr [ebp+ebx+0x04], xmm4
-       movups   xmmword ptr [ebp+ebx+0x14], xmm4
-       add      ebx, 48
-       jne      SHORT  -5 instr
+       movups   xmmword ptr [ebp-0x38], xmm4
+       movups   xmmword ptr [ebp-0x28], xmm4
+       xor      ebx, ebx
+       mov      dword ptr [ebp-0x18], ebx
+       mov      dword ptr [ebp-0x14], ebx
+       mov      dword ptr [ebp-0x10], ebx
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
        ; gcrRegs +[edi]
        xor      ebx, ebx
-                       ;; size=46 bbWeight=1 PerfScore 13.08
+                       ;; size=40 bbWeight=1 PerfScore 12.83
 G_M28747_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs +[ebx]
        call     [CORINFO_HELP_READYTORUN_NEW]
@@ -676,6 +675,8 @@ G_M28747_IG21:        ; bbWeight=0.02, gcVars=0000000018801410 {V03 V04 V05 V12
        ; GC ptr vars +{V12}
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
+       mov      gword ptr [ebp-0x78], eax
+       ; GC ptr vars +{V31}
        mov      edx, dword ptr [ebp-0x18]
        mov      ecx, gword ptr [ebp-0x3C]
        ; gcrRegs +[ecx]
@@ -685,15 +686,9 @@ G_M28747_IG21:        ; bbWeight=0.02, gcVars=0000000018801410 {V03 V04 V05 V12
        mov      ecx, gword ptr [ecx+4*edx+0x08]
        mov      gword ptr [ebp-0x94], ecx
        ; GC ptr vars +{V44}
-       mov      gword ptr [ebp-0x78], eax
-       ; GC ptr vars +{V31}
-       lea      edx, bword ptr [eax+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x9C], edx
        mov      ecx, gword ptr [ebp-0x48]
        call     [<unknown method>]
        ; gcrRegs -[ecx]
-       ; byrRegs -[edx]
        mov      ecx, eax
        ; gcrRegs +[ecx]
        mov      edx, gword ptr [ebp-0x48]
@@ -702,25 +697,26 @@ G_M28747_IG21:        ; bbWeight=0.02, gcVars=0000000018801410 {V03 V04 V05 V12
        ; GC ptr vars -{V12}
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-       mov      edx, bword ptr [ebp-0x9C]
+       mov      ecx, gword ptr [ebp-0x78]
+       ; gcrRegs +[ecx]
+       lea      edx, bword ptr [ecx+0x04]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V31}
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      eax, gword ptr [ebp-0x78]
-       ; gcrRegs +[eax]
-       lea      edx, bword ptr [eax+0x08]
+       lea      edx, bword ptr [ecx+0x08]
        ; byrRegs +[edx]
-       mov      ecx, gword ptr [ebp-0x94]
-       ; gcrRegs +[ecx]
-       ; GC ptr vars -{V31 V44}
-       call     [CORINFO_HELP_ASSIGN_REF_ECX]
-       ; gcrRegs -[ecx]
+       mov      eax, gword ptr [ebp-0x94]
+       ; gcrRegs +[eax]
+       ; GC ptr vars -{V44}
+       call     [CORINFO_HELP_ASSIGN_REF_EAX]
+       ; gcrRegs -[eax]
        ; byrRegs -[edx]
        lea      edx, bword ptr [ebx+0x04]
        ; byrRegs +[edx]
-       call     [CORINFO_HELP_ASSIGN_REF_EAX]
-       ; gcrRegs -[eax]
+       call     [CORINFO_HELP_ASSIGN_REF_ECX]
+       ; gcrRegs -[ecx]
        ; byrRegs -[edx]
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
@@ -756,7 +752,7 @@ G_M28747_IG21:        ; bbWeight=0.02, gcVars=0000000018801410 {V03 V04 V05 V12
        mov      edx, gword ptr [eax+0x1018]
        ; gcrRegs +[edx]
        jmp      SHORT G_M28747_IG23
-                       ;; size=182 bbWeight=0.02 PerfScore 1.42
+                       ;; size=170 bbWeight=0.02 PerfScore 1.38
 G_M28747_IG22:        ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000001 {eax}, byref
        ; gcrRegs -[edx]
        mov      edx, gword ptr [eax+0x100C]
@@ -843,6 +839,6 @@ G_M28747_IG28:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=000000
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1641, prolog size 40, PerfScore 565.10, instruction count 407, allocated bytes for code 1641 (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 1623, prolog size 34, PerfScore 564.81, instruction count 405, allocated bytes for code 1623 (MethodHash=f6968fb4) for method Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
 ; ============================================================
 

-15 (-0.41%) : 31631.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

@@ -121,9 +121,8 @@
 ;  V109 rat9        [V109    ] (  1,  0.08)    long  ->  [ebp-0x38]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
 ;  V110 rat10       [V110,T102] (  2,  0.12)     int  ->  eax         "field V109.lo (fldOffset=0x0)" P-INDEP
 ;  V111 rat11       [V111,T103] (  2,  0.12)     int  ->  edx         "field V109.hi (fldOffset=0x4)" P-INDEP
-;  TEMP_01                                   byref  ->  [ebp-0xD4]
 ;
-; Lcl frame size = 200
+; Lcl frame size = 196
 
 G_M28852_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -131,14 +130,12 @@ G_M28852_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 200
-       xor      eax, eax
-       mov      dword ptr [ebp-0xD4], eax
+       sub      esp, 196
        mov      edi, ecx
        ; gcrRegs +[edi]
        mov      esi, edx
        ; gcrRegs +[esi]
-                       ;; size=24 bbWeight=1 PerfScore 6.25
+                       ;; size=16 bbWeight=1 PerfScore 5.00
 G_M28852_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      edx, dword ptr [(reloc)]      ; const ptr
        mov      edx, gword ptr [edx]
@@ -363,7 +360,7 @@ G_M28852_IG05:        ; bbWeight=1, extend
        mov      dword ptr [ebp-0x18], edx
        mov      ecx, dword ptr [ebp-0x14]
        test     ecx, ecx
-       jle      G_M28852_IG35
+       jle      G_M28852_IG36
        mov      ebx, gword ptr [ebp-0x40]
        ; gcrRegs +[ebx]
        cmp      dword ptr [ebx+0x04], ecx
@@ -1072,11 +1069,9 @@ G_M28852_IG18:        ; bbWeight=1.98, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
        lea      edx, bword ptr [ebx+4*ecx+0x08]
        ; byrRegs +[edx]
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
-       ; gcrRegs -[eax ebx]
+       ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      ebx, gword ptr [ebp-0x40]
-       ; gcrRegs +[ebx]
-                       ;; size=56 bbWeight=1.98 PerfScore 46.53
+                       ;; size=53 bbWeight=1.98 PerfScore 44.55
 G_M28852_IG19:        ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
@@ -1133,10 +1128,9 @@ G_M28852_IG19:        ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
 G_M28852_IG20:        ; bbWeight=1, gcVars=00000000000000020000000000000000 {V08}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V09 V76 V77 V78 V79 V80 V81 V82 V83 V84 V85 V86 V87 V88 V89 V90 V91 V92 V93 V94 V95 V96 V97 V98 V99}
        mov      ecx, dword ptr [ebp-0x14]
-       jmp      G_M28852_IG35
+       jmp      G_M28852_IG36
                        ;; size=8 bbWeight=1 PerfScore 3.00
-G_M28852_IG21:        ; bbWeight=0.04, gcVars=00000000000000820000000000000008 {V08 V09 V78}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[ebx]
+G_M28852_IG21:        ; bbWeight=0.04, gcVars=00000000000000820000000000000008 {V08 V09 V78}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars +{V09 V71 V78}
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
@@ -1189,46 +1183,8 @@ G_M28852_IG21:        ; bbWeight=0.04, gcVars=00000000000000820000000000000008 {
        ; gcrRegs +[eax]
        mov      ecx, dword ptr [ebp-0x18]
        mov      dword ptr [eax+0x04], ecx
-       mov      edx, dword ptr [(reloc)]
-       mov      ebx, gword ptr [ebp-0x54]
-       ; gcrRegs +[ebx]
-       lea      edx, bword ptr [ebx+edx+0x2C]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0xD4], edx
        push     eax
        ; gcr arg push 0
-       mov      eax, dword ptr [(reloc)]
-       ; gcrRegs -[eax]
-       mov      eax, gword ptr [eax]
-       ; gcrRegs +[eax]
-       mov      edx, eax
-       ; gcrRegs +[edx]
-       ; byrRegs -[edx]
-       mov      ecx, gword ptr [ebp-0x44]
-       ; gcrRegs +[ecx]
-       ; GC ptr vars -{V17}
-       call     [<unknown method>]
-       ; gcrRegs -[ecx edx]
-       ; gcr arg pop 1
-       mov      edx, eax
-       ; gcrRegs +[edx]
-       mov      ecx, esi
-       ; gcrRegs +[ecx]
-       call     [<unknown method>]
-       ; gcrRegs -[ecx edx]
-       mov      edx, bword ptr [ebp-0xD4]
-       ; byrRegs +[edx]
-       call     [CORINFO_HELP_ASSIGN_REF_EAX]
-       ; gcrRegs -[eax]
-       ; byrRegs -[edx]
-       call     [CORINFO_HELP_READYTORUN_NEW]
-       ; gcrRegs +[eax]
-       mov      ecx, dword ptr [ebp-0x18]
-       mov      dword ptr [eax+0x04], ecx
-       push     eax
-       ; gcr arg push 0
-                       ;; size=176 bbWeight=0.04 PerfScore 2.87
-G_M28852_IG22:        ; bbWeight=0.04, extend
        mov      edx, dword ptr [(reloc)]
        mov      edx, gword ptr [edx]
        ; gcrRegs +[edx]
@@ -1243,9 +1199,39 @@ G_M28852_IG22:        ; bbWeight=0.04, extend
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
+       mov      edx, dword ptr [(reloc)]
+       mov      ecx, gword ptr [ebp-0x54]
+       ; gcrRegs +[ecx]
+       lea      edx, bword ptr [ecx+edx+0x2C]
+       ; byrRegs +[edx]
+       call     [CORINFO_HELP_ASSIGN_REF_EAX]
+       ; gcrRegs -[eax ecx]
+       ; byrRegs -[edx]
+       call     [CORINFO_HELP_READYTORUN_NEW]
+       ; gcrRegs +[eax]
+       mov      ecx, dword ptr [ebp-0x18]
+       mov      dword ptr [eax+0x04], ecx
+       push     eax
+       ; gcr arg push 0
+       mov      edx, dword ptr [(reloc)]
+       mov      edx, gword ptr [edx]
+       ; gcrRegs +[edx]
+       mov      ecx, gword ptr [ebp-0x44]
+       ; gcrRegs +[ecx]
+                       ;; size=174 bbWeight=0.04 PerfScore 2.98
+G_M28852_IG22:        ; bbWeight=0.04, extend
+       call     [<unknown method>]
+       ; gcrRegs -[ecx edx]
+       ; gcr arg pop 1
        mov      edx, eax
        ; gcrRegs +[edx]
-       mov      ecx, ebx
+       mov      ecx, esi
+       ; gcrRegs +[ecx]
+       call     [<unknown method>]
+       ; gcrRegs -[ecx edx]
+       mov      edx, eax
+       ; gcrRegs +[edx]
+       mov      ecx, gword ptr [ebp-0x54]
        ; gcrRegs +[ecx]
        call     [System.Data.DataColumn:set_Prefix(System.String):this]
        ; gcrRegs -[eax ecx edx]
@@ -1283,7 +1269,7 @@ G_M28852_IG22:        ; bbWeight=0.04, extend
        ; gcrRegs -[ecx]
        mov      edx, eax
        ; gcrRegs +[edx]
-       mov      ecx, ebx
+       mov      ecx, gword ptr [ebp-0x54]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
@@ -1316,13 +1302,15 @@ G_M28852_IG22:        ; bbWeight=0.04, extend
        call     [CORINFO_HELP_READYTORUN_CHKCAST]
        ; gcrRegs -[ecx]
        mov      edx, dword ptr [(reloc)]
-       lea      edx, bword ptr [ebx+edx+0x3C]
+       mov      ecx, gword ptr [ebp-0x54]
+       ; gcrRegs +[ecx]
+       lea      edx, bword ptr [ecx+edx+0x3C]
        ; byrRegs +[edx]
-                       ;; size=172 bbWeight=0.04 PerfScore 2.74
-G_M28852_IG23:        ; bbWeight=0.04, isz, extend
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
-       ; gcrRegs -[eax]
+       ; gcrRegs -[eax ecx]
        ; byrRegs -[edx]
+                       ;; size=172 bbWeight=0.04 PerfScore 2.76
+G_M28852_IG23:        ; bbWeight=0.04, isz, extend
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
        mov      ecx, dword ptr [ebp-0x18]
@@ -1357,13 +1345,16 @@ G_M28852_IG23:        ; bbWeight=0.04, isz, extend
        call     [CORINFO_HELP_READYTORUN_CHKCAST]
        ; gcrRegs -[ecx]
        mov      edx, dword ptr [(reloc)]
-       lea      edx, bword ptr [ebx+edx+0x38]
+       mov      ecx, gword ptr [ebp-0x54]
+       ; gcrRegs +[ecx]
+       lea      edx, bword ptr [ecx+edx+0x38]
        ; byrRegs +[edx]
        call     [CORINFO_HELP_ASSIGN_REF_EAX]
+       ; gcrRegs -[ecx]
        ; byrRegs -[edx]
        test     eax, eax
        je       SHORT G_M28852_IG25
-                       ;; size=93 bbWeight=0.04 PerfScore 1.56
+                       ;; size=90 bbWeight=0.04 PerfScore 1.48
 G_M28852_IG24:        ; bbWeight=0.02, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      gword ptr [ebp-0x60], eax
        ; GC ptr vars +{V41}
@@ -1378,9 +1369,12 @@ G_M28852_IG24:        ; bbWeight=0.02, gcrefRegs=000000C9 {eax ebx esi edi}, byr
        mov      eax, dword ptr [eax+0x38]
        ; gcrRegs -[eax]
        mov      edx, dword ptr [(reloc)]
-       mov      dword ptr [ebx+edx+0x4C], eax
-                       ;; size=31 bbWeight=0.02 PerfScore 0.23
-G_M28852_IG25:        ; bbWeight=0.04, gcVars=00000000000000820000000000000008 {V08 V09 V78}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       mov      ecx, gword ptr [ebp-0x54]
+       ; gcrRegs +[ecx]
+       mov      dword ptr [ecx+edx+0x4C], eax
+                       ;; size=34 bbWeight=0.02 PerfScore 0.25
+G_M28852_IG25:        ; bbWeight=0.04, gcVars=00000000000000820000000000000009 {V08 V09 V17 V78}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
        ; GC ptr vars -{V41}
        call     [CORINFO_HELP_READYTORUN_NEW]
        ; gcrRegs +[eax]
@@ -1426,10 +1420,10 @@ G_M28852_IG26:        ; bbWeight=0.01, gcrefRegs=000000C9 {eax ebx esi edi}, byr
        mov      eax, gword ptr [ebp-0x58]
        ; gcrRegs +[eax]
                        ;; size=20 bbWeight=0.01 PerfScore 0.07
-G_M28852_IG27:        ; bbWeight=0.04, gcVars=00000000000000820000000000000008 {V08 V09 V78}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M28852_IG27:        ; bbWeight=0.04, gcVars=00000000000000820000000000000009 {V08 V09 V17 V78}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V25}
        mov      edx, dword ptr [eax+0x04]
-       mov      ecx, ebx
+       mov      ecx, gword ptr [ebp-0x54]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[eax ecx]
@@ -1465,7 +1459,7 @@ G_M28852_IG27:        ; bbWeight=0.04, gcVars=00000000000000820000000000000008 {
        mov      ecx, dword ptr [eax]
        cmp      ecx, dword ptr [(reloc)]
        je       SHORT G_M28852_IG29
-                       ;; size=80 bbWeight=0.04 PerfScore 1.47
+                       ;; size=81 bbWeight=0.04 PerfScore 1.50
 G_M28852_IG28:        ; bbWeight=0.01, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      ecx, dword ptr [(reloc)]
        mov      gword ptr [ebp-0x5C], eax
@@ -1477,10 +1471,10 @@ G_M28852_IG28:        ; bbWeight=0.01, gcrefRegs=000000C9 {eax ebx esi edi}, byr
        mov      eax, gword ptr [ebp-0x5C]
        ; gcrRegs +[eax]
                        ;; size=20 bbWeight=0.01 PerfScore 0.07
-G_M28852_IG29:        ; bbWeight=0.04, gcVars=00000000000000820000000000000008 {V08 V09 V78}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M28852_IG29:        ; bbWeight=0.04, gcVars=00000000000000820000000000000009 {V08 V09 V17 V78}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V27}
        mov      edx, dword ptr [eax+0x04]
-       mov      ecx, ebx
+       mov      ecx, gword ptr [ebp-0x54]
        ; gcrRegs +[ecx]
        call     [<unknown method>]
...

libraries.pmi.windows.x86.checked.mch

-27 (-2.20%) : 79515.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,11 +86,10 @@
 ;  V75 tmp56        [V75,T29] (  2,  8   )     ref  ->  ecx         "argument with side effect"
 ;  V76 tmp57        [V76,T30] (  2,  8   )     ref  ->  ecx         "argument with side effect"
 ;  V77 cse0         [V77,T01] (  7, 88   )     int  ->  [ebp-0x40]  spill-single-def "CSE - aggressive"
-;  TEMP_03                                   byref  ->  [ebp-0x68]
-;  TEMP_02                                     int  ->  [ebp-0x6C]
-;  TEMP_01                                     int  ->  [ebp-0x70]
+;  TEMP_02                                     int  ->  [ebp-0x68]
+;  TEMP_01                                     int  ->  [ebp-0x6C]
 ;
-; Lcl frame size = 100
+; Lcl frame size = 96
 
 G_M1087_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -98,20 +97,17 @@ G_M1087_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
        push     edi
        push     esi
        push     ebx
-       sub      esp, 100
+       sub      esp, 96
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [ebp-0x68], ymm4
-       vmovdqu  ymmword ptr [ebp-0x48], ymm4
-       vmovdqu  xmmword ptr [ebp-0x28], xmm4
+       vmovdqu  ymmword ptr [ebp-0x34], ymm4
        xor      eax, eax
-       mov      dword ptr [ebp-0x18], eax
        mov      dword ptr [ebp-0x14], eax
        mov      dword ptr [ebp-0x10], eax
        mov      edi, ecx
        ; gcrRegs +[edi]
        mov      esi, edx
        ; gcrRegs +[esi]
-                       ;; size=43 bbWeight=1 PerfScore 14.58
+                       ;; size=30 bbWeight=1 PerfScore 9.58
 G_M1087_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      eax, edi
        ; gcrRegs +[eax]
@@ -136,12 +132,12 @@ G_M1087_IG03:        ; bbWeight=0.50, gcVars=0000010100000000 {V32 V33}, gcrefRe
        mov      ecx, gword ptr [edi+0x0C]
        ; gcrRegs +[ecx]
        mov      edx, 1
-       mov      dword ptr [ebp-0x6C], edx
+       mov      dword ptr [ebp-0x68], edx
        mov      edx, dword ptr [ecx]
        mov      edx, dword ptr [edx+0x30]
-       mov      dword ptr [ebp-0x70], edx
-       mov      edx, dword ptr [ebp-0x6C]
-       mov      edi, dword ptr [ebp-0x70]
+       mov      dword ptr [ebp-0x6C], edx
+       mov      edx, dword ptr [ebp-0x68]
+       mov      edi, dword ptr [ebp-0x6C]
        ; gcrRegs -[edi]
        call     [edi+0x10]<unknown method>
        ; gcrRegs -[ecx] +[eax]
@@ -461,24 +457,20 @@ G_M1087_IG22:        ; bbWeight=0.02, gcVars=0000000001000800 {V21 V43}, gcrefRe
        ; gcrRegs +[eax]
        mov      ecx, dword ptr [ebp-0x24]
        mov      dword ptr [eax+0x1C], ecx
+       mov      gword ptr [ebp-0x58], eax
+       ; GC ptr vars +{V22}
        lea      edx, bword ptr [eax+0x14]
        ; byrRegs +[edx]
        mov      ebx, gword ptr [ebp-0x64]
        ; gcrRegs +[ebx]
        ; GC ptr vars -{V43}
        call     CORINFO_HELP_ASSIGN_REF_EBX
-       ; gcrRegs -[ebx]
+       ; gcrRegs -[eax ebx]
        ; byrRegs -[edx]
-       mov      gword ptr [ebp-0x58], eax
-       ; GC ptr vars +{V22}
-       lea      edx, bword ptr [eax+0x18]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x68], edx
        mov      ecx, gword ptr [ebp-0x54]
        ; gcrRegs +[ecx]
        call     [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
-       ; gcrRegs -[ecx]
-       ; byrRegs -[edx]
+       ; gcrRegs -[ecx] +[eax]
        mov      ecx, eax
        ; gcrRegs +[ecx]
        mov      edx, gword ptr [ebp-0x54]
@@ -489,34 +481,31 @@ G_M1087_IG22:        ; bbWeight=0.02, gcVars=0000000001000800 {V21 V43}, gcrefRe
        ; GC ptr vars -{V21}
        call     [eax+0x1C]<unknown method>
        ; gcrRegs -[ecx edx] +[eax]
-       mov      edx, bword ptr [ebp-0x68]
+       mov      ebx, gword ptr [ebp-0x58]
+       ; gcrRegs +[ebx]
+       lea      edx, bword ptr [ebx+0x18]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V22}
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      ebx, gword ptr [ebp-0x58]
-       ; gcrRegs +[ebx]
        jmp      SHORT G_M1087_IG24
-                       ;; size=71 bbWeight=0.02 PerfScore 0.51
+                       ;; size=65 bbWeight=0.02 PerfScore 0.47
 G_M1087_IG23:        ; bbWeight=0.02, gcVars=0000000000000200 {V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[ebx]
-       ; GC ptr vars -{V22} +{V07}
+       ; GC ptr vars +{V07}
        mov      ecx, 0xD1FFAB1E      ; Microsoft.CodeAnalysis.VisualBasic.Symbols.CrefTypeParameterSymbol
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
        mov      edx, dword ptr [ebp-0x24]
        mov      dword ptr [eax+0x1C], edx
-       mov      gword ptr [eax+0x14], 0xD1FFAB1E
        mov      gword ptr [ebp-0x50], eax
        ; GC ptr vars +{V19}
-       lea      edx, bword ptr [eax+0x18]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x68], edx
+       mov      gword ptr [eax+0x14], 0xD1FFAB1E
        mov      ecx, gword ptr [ebp-0x48]
        ; gcrRegs +[ecx]
        call     [Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:get_SyntaxTree():Microsoft.CodeAnalysis.SyntaxTree:this]
        ; gcrRegs -[ecx]
-       ; byrRegs -[edx]
        mov      ecx, eax
        ; gcrRegs +[ecx]
        mov      edx, gword ptr [ebp-0x48]
@@ -527,21 +516,19 @@ G_M1087_IG23:        ; bbWeight=0.02, gcVars=0000000000000200 {V07}, gcrefRegs=0
        ; GC ptr vars -{V07}
        call     [eax+0x1C]<unknown method>
        ; gcrRegs -[ecx edx] +[eax]
-       mov      edx, bword ptr [ebp-0x68]
+       mov      ecx, gword ptr [ebp-0x50]
+       ; gcrRegs +[ecx]
+       lea      edx, bword ptr [ecx+0x18]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V19}
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      edx, gword ptr [ebp-0x50]
-       ; gcrRegs +[edx]
-       mov      ecx, edx
-       ; gcrRegs +[ecx]
        mov      ebx, ecx
        ; gcrRegs +[ebx]
-                       ;; size=69 bbWeight=0.02 PerfScore 0.45
-G_M1087_IG24:        ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[ecx edx]
-       ; GC ptr vars -{V19}
+                       ;; size=61 bbWeight=0.02 PerfScore 0.41
+G_M1087_IG24:        ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[ecx]
        mov      eax, dword ptr [ebp-0x24]
        cmp      eax, dword ptr [edi+0x04]
        jae      G_M1087_IG41
@@ -794,6 +781,6 @@ G_M1087_IG46:        ; bbWeight=0, gcVars=0000000000000001 {V14}, gcrefRegs=0000
        int3     
                        ;; size=9 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1228, prolog size 39, PerfScore 1019.57, instruction count 384, allocated bytes for code 1228 (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 1201, prolog size 26, PerfScore 1014.49, instruction count 376, allocated bytes for code 1201 (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)
 ; ============================================================
 

-7 (-1.09%) : 269944.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -26,7 +26,7 @@
 ;* V15 tmp9         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V17 tmp11        [V17,T00] (  8, 24   )     ref  ->  registers   class-hnd exact "Inlining Arg" <System.String>
-;  V18 tmp12        [V18,T18] (  2,  0.04)   ubyte  ->  edx         "Inline return value spill temp"
+;* V18 tmp12        [V18,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V19 tmp13        [V19    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -258,12 +258,9 @@ G_M10809_IG19:        ; bbWeight=0.02, gcVars=00000300 {V02 V03}, gcrefRegs=0000
        call     [<unknown method>]
        ; gcrRegs -[eax edx]
        ; gcr arg pop 1
-       xor      edx, edx
        test     eax, eax
-       sete     dl
-       test     edx, edx
-       je       G_M10809_IG28
-                       ;; size=46 bbWeight=0.02 PerfScore 0.31
+       jne      G_M10809_IG28
+                       ;; size=39 bbWeight=0.02 PerfScore 0.28
 G_M10809_IG20:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        cmp      dword ptr [ebp-0x14], 0xFFFF
        ja       G_M10809_IG29
@@ -429,6 +426,6 @@ G_M10809_IG29:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        int3     
                        ;; size=64 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 642, prolog size 13, PerfScore 124.57, instruction count 196, allocated bytes for code 642 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 635, prolog size 13, PerfScore 124.54, instruction count 193, allocated bytes for code 635 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 

-11 (-0.93%) : 192539.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)

@@ -59,9 +59,8 @@
 ;  V48 cse0         [V48,T13] (  5, 15.84)     ref  ->  [ebp-0x40]  spill-single-def "CSE - moderate"
 ;  V49 cse1         [V49,T36] (  5,  0.16)     ref  ->  [ebp-0x44]  spill-single-def "CSE - conservative"
 ;  V50 cse2         [V50,T30] (  4,  3   )     ref  ->  ecx         "CSE - conservative"
-;  TEMP_01                                   byref  ->  [ebp-0x48]
 ;
-; Lcl frame size = 60
+; Lcl frame size = 56
 
 G_M44608_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -69,14 +68,12 @@ G_M44608_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 60
-       xor      eax, eax
-       mov      dword ptr [ebp-0x48], eax
+       sub      esp, 56
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
        ; gcrRegs +[edi]
-                       ;; size=18 bbWeight=1 PerfScore 6.25
+                       ;; size=13 bbWeight=1 PerfScore 5.00
 G_M44608_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, 0xD1FFAB1E      ; System.Xml.Serialization.ReflectionXmlSerializationReader+<>c__DisplayClass47_0
        call     CORINFO_HELP_NEWSFAST
@@ -430,14 +427,10 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=00000010000C0008 {V02 V03 V08 V49}
        call     CORINFO_HELP_ASSIGN_REF_ECX
        ; gcrRegs -[ecx]
        ; byrRegs -[edx]
-       lea      edx, bword ptr [eax+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x48], edx
        mov      gword ptr [ebp-0x24], eax
        ; GC ptr vars +{V11}
        mov      edx, gword ptr [eax+0x08]
        ; gcrRegs +[edx]
-       ; byrRegs -[edx]
        mov      edx, gword ptr [edx+0x08]
        mov      edx, gword ptr [edx+0x08]
        mov      gword ptr [ebp-0x3C], edx
@@ -460,16 +453,17 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=00000010000C0008 {V02 V03 V08 V49}
        ; GC ptr vars -{V39}
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-       mov      edx, bword ptr [ebp-0x48]
+       mov      ebx, gword ptr [ebp-0x24]
+       ; gcrRegs +[ebx]
+       lea      edx, bword ptr [ebx+0x04]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V11}
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
-       mov      ebx, gword ptr [ebp-0x24]
-       ; gcrRegs +[ebx]
        mov      edx, gword ptr [ebx+0x08]
        ; gcrRegs +[edx]
        mov      ecx, gword ptr [edx+0x04]
@@ -477,7 +471,6 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=00000010000C0008 {V02 V03 V08 V49}
        lea      edx, bword ptr [eax+0x04]
        ; gcrRegs -[edx]
        ; byrRegs +[edx]
-       ; GC ptr vars -{V11}
        call     CORINFO_HELP_ASSIGN_REF_EBX
        ; gcrRegs -[ebx]
        ; byrRegs -[edx]
@@ -488,7 +481,7 @@ G_M44608_IG17:        ; bbWeight=0.02, gcVars=00000010000C0008 {V02 V03 V08 V49}
        ; gcrRegs -[eax ecx]
        ; byrRegs -[edx]
        jmp      SHORT G_M44608_IG20
-                       ;; size=127 bbWeight=0.02 PerfScore 0.92
+                       ;; size=121 bbWeight=0.02 PerfScore 0.88
 G_M44608_IG18:        ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, gword ptr [ebp-0x1C]
        ; gcrRegs +[ecx]
@@ -739,6 +732,6 @@ G_M44608_IG30:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        int3     
                        ;; size=22 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 1185, prolog size 18, PerfScore 507.20, instruction count 344, allocated bytes for code 1185 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
+; Total bytes of code 1174, prolog size 13, PerfScore 505.91, instruction count 340, allocated bytes for code 1174 (MethodHash=bd8b51bf) for method System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
 ; ============================================================
 

+0 (0.00%) : 216967.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  ->  ebx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T13] (  4,  4   )     int  ->  edx         single-def
-;  V02 loc0         [V02,T28] (  3,  2.50)     int  ->  [ebp-0x10]  spill-single-def
+;  V02 loc0         [V02,T27] (  3,  2.50)     int  ->  [ebp-0x10]  spill-single-def
 ;  V03 loc1         [V03    ] (  5, 12   )  struct ( 8) [ebp-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]]]>
-;  V04 loc2         [V04,T30] (  2,  2   )     int  ->  ecx         single-def
+;  V04 loc2         [V04,T28] (  2,  2   )     int  ->  ecx         single-def
 ;  V05 loc3         [V05,T21] (  3,  5   )     int  ->  [ebp-0x1C]  spill-single-def
 ;  V06 loc4         [V06    ] (  2,  2.50)  struct ( 8) [ebp-0x24]  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,T12] (  5,  7   )     int  ->  [ebp-0x28] 
@@ -43,24 +43,21 @@
 ;  V32 tmp21        [V32,T09] (  3, 12   )     int  ->  edi         "index expr"
 ;  V33 tmp22        [V33,T10] (  3, 12   )     int  ->  eax         "index expr"
 ;  V34 cse0         [V34,T11] (  4,  9   )     int  ->  [ebp-0x34]  spill-single-def "CSE - moderate"
-;* V35 cse1         [V35,T31] (  0,  0   )     int  ->  zero-ref    "CSE - moderate"
+;* V35 cse1         [V35,T29] (  0,  0   )     int  ->  zero-ref    "CSE - moderate"
 ;  V36 cse2         [V36,T16] (  3,  6   )     int  ->  esi         "CSE - moderate"
 ;  V37 rat0         [V37,T22] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V38 rat1         [V38,T23] (  3,  4   )     int  ->  eax         "runtime lookup"
 ;  V39 rat2         [V39,T20] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;* V40 rat3         [V40,T29] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V41 rat4         [V41,T32] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V42 rat5         [V42,T27] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V43 rat6         [V43,T03] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V44 rat7         [V44,T04] (  3, 16   )     int  ->  edx         "runtime lookup"
-;  V45 rat8         [V45,T01] (  3, 22.40)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;  V46 rat9         [V46,T07] (  3, 12   )   byref  ->  eax         "ReplaceWithLclVar is creating a new local variable"
-;  V47 rat10        [V47    ] (  1,  4   )    long  ->  [ebp-0x3C]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V48 rat11        [V48,T25] (  1,  4   )     int  ->  eax         "field V47.lo (fldOffset=0x0)" P-INDEP
-;  V49 rat12        [V49,T18] (  2,  6   )     int  ->  edx         "field V47.hi (fldOffset=0x4)" P-INDEP
-;  V50 rat13        [V50    ] (  1,  4   )    long  ->  [ebp-0x44]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V51 rat14        [V51,T26] (  1,  4   )     int  ->  eax         "field V50.lo (fldOffset=0x0)" P-INDEP
-;  V52 rat15        [V52,T19] (  2,  6   )     int  ->  edi         "field V50.hi (fldOffset=0x4)" P-INDEP
+;  V40 rat3         [V40,T03] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V41 rat4         [V41,T04] (  3, 16   )     int  ->  edx         "runtime lookup"
+;  V42 rat5         [V42,T01] (  3, 22.40)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V43 rat6         [V43,T07] (  3, 12   )   byref  ->  eax         "ReplaceWithLclVar is creating a new local variable"
+;  V44 rat7         [V44    ] (  1,  4   )    long  ->  [ebp-0x3C]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V45 rat8         [V45,T25] (  1,  4   )     int  ->  eax         "field V44.lo (fldOffset=0x0)" P-INDEP
+;  V46 rat9         [V46,T18] (  2,  6   )     int  ->  edx         "field V44.hi (fldOffset=0x4)" P-INDEP
+;  V47 rat10        [V47    ] (  1,  4   )    long  ->  [ebp-0x44]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V48 rat11        [V48,T26] (  1,  4   )     int  ->  eax         "field V47.lo (fldOffset=0x0)" P-INDEP
+;  V49 rat12        [V49,T19] (  2,  6   )     int  ->  edi         "field V47.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 60
 
@@ -123,7 +120,7 @@ G_M3693_IG06:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=000000
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M3693_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M3693_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
        mov      eax, dword ptr [ebx+0x18]
        mov      dword ptr [ebp-0x1C], eax
        inc      dword ptr [ebx+0x24]
@@ -256,7 +253,7 @@ G_M3693_IG14:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
        mov      edi, dword ptr [ebp-0x2C]
        ; byrRegs -[edi]
                        ;; size=52 bbWeight=2 PerfScore 51.50
-G_M3693_IG15:        ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M3693_IG15:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
        ; byrRegs -[ecx]
        ; GC ptr vars -{V15}
        inc      edi
@@ -277,7 +274,7 @@ G_M3693_IG17:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M3693_IG18:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M3693_IG18:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
 G_M3693_IG19:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
@@ -285,7 +282,7 @@ G_M3693_IG19:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        call     [Microsoft.CodeAnalysis.Collections.Internal.ThrowHelper:ThrowArgumentOutOfRangeException(int)]
        int3     
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M3693_IG20:        ; bbWeight=0, gcVars=0000000000000020 {V15}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M3693_IG20:        ; bbWeight=0, gcVars=00000020 {V15}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[esi]
        ; GC ptr vars +{V05 V15}
        mov      ecx, 0xD1FFAB1E

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

@@ -10,14 +10,14 @@
 ;
 ;  V00 this         [V00,T06] (  8, 22   )     ref  ->  [ebp-0x50]  do-not-enreg[H] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 RetBuf       [V01,T16] (  4,  4   )   byref  ->  [ebp-0x54]  EH-live single-def
-;  V02 arg1         [V02,T40] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V03 arg2         [V03,T33] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
+;  V02 arg1         [V02,T38] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V03 arg2         [V03,T31] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
 ;* V04 loc0         [V04    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V05 loc1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V07 loc3         [V07,T11] (  4, 10   )     int  ->  [ebp-0x28]  do-not-enreg[Z] EH-live
 ;  V08 loc4         [V08,T12] (  4, 10   )     int  ->  [ebp-0x2C]  do-not-enreg[Z] EH-live
-;  V09 loc5         [V09,T37] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
+;  V09 loc5         [V09,T35] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
 ;  V10 loc6         [V10,T05] ( 13, 27   )     ref  ->  [ebp-0x58]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V11 loc7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V12 loc8         [V12,T04] (  5, 28   )     int  ->  eax        
@@ -26,20 +26,20 @@
 ;* V15 tmp2         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V16 tmp3         [V16    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;* V17 tmp4         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T29] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
+;  V18 tmp5         [V18,T27] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
 ;* V19 tmp6         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V20 tmp7         [V20,T02] (  3, 32   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;  V21 tmp8         [V21    ] (  3,  6   )  struct ( 8) [ebp-0x38]  do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V22 tmp9         [V22    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;* V23 tmp10        [V23    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V24 tmp11        [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T30] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T28] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V27 tmp14        [V27,T31] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V27 tmp14        [V27,T29] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;  V28 tmp15        [V28    ] (  3,  6   )  struct ( 8) [ebp-0x40]  do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp16        [V29,T15] (  8,  8   )     int  ->  [ebp-0x44]  "Inline return value spill temp"
 ;  V30 tmp17        [V30,T18] (  3,  6   )     int  ->  eax         "Inlining Arg"
-;  V31 tmp18        [V31,T32] (  2,  4   )     int  ->  edi         "Inlining Arg"
+;  V31 tmp18        [V31,T30] (  2,  4   )     int  ->  edi         "Inlining Arg"
 ;  V32 tmp19        [V32,T17] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp20        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp21        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -48,13 +48,13 @@
 ;* V37 tmp24        [V37    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V38 tmp25        [V38    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V39 tmp26        [V39    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V40 tmp27        [V40,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V40 tmp27        [V40,T32] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V41 tmp28        [V41,T08] (  3, 12   )     int  ->  edx         "Inline stloc first use temp"
 ;  V42 tmp29        [V42,T09] (  3, 12   )     int  ->  ecx         "Inline stloc first use temp"
 ;  V43 tmp30        [V43,T07] (  3, 24   )   byref  ->  edx         "dup spill"
 ;* V44 tmp31        [V44    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V45 tmp32        [V45    ] (  0,  0   )     int  ->  zero-ref    single-def "field V05._length (fldOffset=0x4)" P-INDEP
-;  V46 tmp33        [V46,T35] (  3,  3   )   byref  ->  edi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V46 tmp33        [V46,T33] (  3,  3   )   byref  ->  edi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V47 tmp34        [V47    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x4)" P-INDEP
 ;* V48 tmp35        [V48    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V49 tmp36        [V49    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
@@ -64,8 +64,8 @@
 ;* V53 tmp40        [V53    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x4)" P-INDEP
 ;  V54 tmp41        [V54    ] (  3,  6   )     int  ->  [ebp-0x40]  do-not-enreg[X] addr-exposed "field V28.Item1 (fldOffset=0x0)" P-DEP
 ;  V55 tmp42        [V55    ] (  3,  6   )     int  ->  [ebp-0x3C]  do-not-enreg[X] addr-exposed "field V28.Item2 (fldOffset=0x4)" P-DEP
-;  V56 tmp43        [V56,T41] (  2,  2   )   byref  ->  edi         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V57 tmp44        [V57,T42] (  2,  2   )     int  ->  eax         "field V33._length (fldOffset=0x4)" P-INDEP
+;  V56 tmp43        [V56,T39] (  2,  2   )   byref  ->  edi         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V57 tmp44        [V57,T40] (  2,  2   )     int  ->  eax         "field V33._length (fldOffset=0x4)" P-INDEP
 ;* V58 tmp45        [V58    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V59 tmp46        [V59    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x4)" P-INDEP
 ;* V60 tmp47        [V60    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -74,27 +74,24 @@
 ;* V63 tmp50        [V63    ] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x4)" P-INDEP
 ;  V64 tmp51        [V64,T13] (  3,  9   )   byref  ->  edi         single-def "V06.[000..004)"
 ;  V65 tmp52        [V65,T14] (  3,  9   )     int  ->  [ebp-0x48]  spill-single-def "V06.[004..008)"
-;  V66 tmp53        [V66,T36] (  3,  3   )   byref  ->  edi         "V16.[000..004)"
-;  V67 tmp54        [V67,T38] (  3,  3   )     int  ->  eax         "V16.[004..008)"
+;  V66 tmp53        [V66,T34] (  3,  3   )   byref  ->  edi         "V16.[000..004)"
+;  V67 tmp54        [V67,T36] (  3,  3   )     int  ->  eax         "V16.[004..008)"
 ;  V68 tmp55        [V68,T03] (  2, 32   )     ref  ->  edx         "argument with side effect"
 ;  V69 GsCookie     [V69    ] (  1,  1   )     int  ->  [ebp-0x5C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V70 EHSlots      [V70    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-;  V71 LocAllocSP   [V71,T44] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
+;  V71 LocAllocSP   [V71,T41] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V72 cse0         [V72,T10] (  3, 12   )     int  ->  ecx         "CSE - moderate"
-;  V73 cse1         [V73,T39] (  3,  3   )     int  ->  eax         "CSE - conservative"
-;  V74 rat0         [V74,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V73 cse1         [V73,T37] (  3,  3   )     int  ->  eax         "CSE - conservative"
+;  V74 rat0         [V74,T24] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V75 rat1         [V75,T21] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V76 rat2         [V76,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V76 rat2         [V76,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V77 rat3         [V77,T22] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V78 rat4         [V78,T27] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V78 rat4         [V78,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V79 rat5         [V79,T23] (  3,  5.60)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V80 rat6         [V80,T28] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V81 rat7         [V81,T43] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V82 rat8         [V82,T24] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V83 rat9         [V83,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V84 rat10        [V84,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V85 rat11        [V85,T19] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
-;  V86 rat12        [V86,T20] (  3,  6   )     int  ->  [ebp-0x4C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V80 rat6         [V80,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V81 rat7         [V81,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V82 rat8         [V82,T19] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
+;  V83 rat9         [V83,T20] (  3,  6   )     int  ->  [ebp-0x4C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 84
 

+0 (0.00%) : 168620.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  ->  ebx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedDictionary`2[System.__Canon,System.Nullable`1[int]]>
 ;  V01 arg1         [V01,T14] (  4,  4   )     int  ->  edx         single-def
-;  V02 loc0         [V02,T29] (  3,  2.50)     int  ->  [ebp-0x10]  spill-single-def
+;  V02 loc0         [V02,T28] (  3,  2.50)     int  ->  [ebp-0x10]  spill-single-def
 ;  V03 loc1         [V03    ] (  5, 12   )  struct ( 8) [ebp-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]]]>
-;  V04 loc2         [V04,T31] (  2,  2   )     int  ->  ecx         single-def
+;  V04 loc2         [V04,T29] (  2,  2   )     int  ->  ecx         single-def
 ;  V05 loc3         [V05,T21] (  3,  5   )     int  ->  [ebp-0x1C]  spill-single-def
 ;  V06 loc4         [V06    ] (  2,  2.50)  struct ( 8) [ebp-0x24]  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,T13] (  5,  7   )     int  ->  [ebp-0x28] 
@@ -32,9 +32,9 @@
 ;  V21 tmp10        [V21,T06] (  3, 12   )     ref  ->  esi         class-hnd "impAppendStmt" <<unknown class>>
 ;  V22 tmp11        [V22,T07] (  3, 12   )     ref  ->  ecx         class-hnd "impAppendStmt" <<unknown class>>
 ;* V23 tmp12        [V23    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V24 tmp13        [V24,T32] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V24 tmp13        [V24,T30] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V25 tmp14        [V25    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;* V26 tmp15        [V26,T33] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
+;* V26 tmp15        [V26,T31] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V27 tmp16        [V27    ] (  4, 11   )     ref  ->  [ebp-0x18]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V28 tmp17        [V28    ] (  5, 12   )     int  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
 ;  V29 tmp18        [V29    ] (  2,  2.50)     ref  ->  [ebp-0x24]  do-not-enreg[X] addr-exposed "field V06._items (fldOffset=0x0)" P-DEP
@@ -48,19 +48,16 @@
 ;  V37 rat0         [V37,T22] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V38 rat1         [V38,T23] (  3,  4   )     int  ->  eax         "runtime lookup"
 ;  V39 rat2         [V39,T20] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;* V40 rat3         [V40,T30] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V41 rat4         [V41,T34] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V42 rat5         [V42,T28] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V43 rat6         [V43,T03] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V44 rat7         [V44,T04] (  3, 16   )     int  ->  edx         "runtime lookup"
-;  V45 rat8         [V45,T01] (  3, 22.40)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;  V46 rat9         [V46,T08] (  3, 12   )   byref  ->  eax         "ReplaceWithLclVar is creating a new local variable"
-;  V47 rat10        [V47    ] (  1,  4   )    long  ->  [ebp-0x3C]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V48 rat11        [V48,T26] (  1,  4   )     int  ->  eax         "field V47.lo (fldOffset=0x0)" P-INDEP
-;  V49 rat12        [V49,T18] (  2,  6   )     int  ->  edx         "field V47.hi (fldOffset=0x4)" P-INDEP
-;  V50 rat13        [V50    ] (  1,  4   )    long  ->  [ebp-0x44]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V51 rat14        [V51,T27] (  1,  4   )     int  ->  eax         "field V50.lo (fldOffset=0x0)" P-INDEP
-;  V52 rat15        [V52,T19] (  2,  6   )     int  ->  edx         "field V50.hi (fldOffset=0x4)" P-INDEP
+;  V40 rat3         [V40,T03] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V41 rat4         [V41,T04] (  3, 16   )     int  ->  edx         "runtime lookup"
+;  V42 rat5         [V42,T01] (  3, 22.40)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V43 rat6         [V43,T08] (  3, 12   )   byref  ->  eax         "ReplaceWithLclVar is creating a new local variable"
+;  V44 rat7         [V44    ] (  1,  4   )    long  ->  [ebp-0x3C]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V45 rat8         [V45,T26] (  1,  4   )     int  ->  eax         "field V44.lo (fldOffset=0x0)" P-INDEP
+;  V46 rat9         [V46,T18] (  2,  6   )     int  ->  edx         "field V44.hi (fldOffset=0x4)" P-INDEP
+;  V47 rat10        [V47    ] (  1,  4   )    long  ->  [ebp-0x44]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V48 rat11        [V48,T27] (  1,  4   )     int  ->  eax         "field V47.lo (fldOffset=0x0)" P-INDEP
+;  V49 rat12        [V49,T19] (  2,  6   )     int  ->  edx         "field V47.hi (fldOffset=0x4)" P-INDEP
 ;
 ; Lcl frame size = 60
 
@@ -123,7 +120,7 @@ G_M3693_IG06:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=000000
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M3693_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M3693_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
        mov      eax, dword ptr [ebx+0x18]
        mov      dword ptr [ebp-0x1C], eax
        inc      dword ptr [ebx+0x24]
@@ -250,7 +247,7 @@ G_M3693_IG13:        ; bbWeight=2, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        mov      edi, dword ptr [ebp-0x2C]
        ; byrRegs -[edi]
                        ;; size=144 bbWeight=2 PerfScore 156.00
-G_M3693_IG14:        ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M3693_IG14:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
        ; byrRegs -[ecx]
        ; GC ptr vars -{V15}
        inc      edi
@@ -271,7 +268,7 @@ G_M3693_IG16:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M3693_IG17:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
+G_M3693_IG17:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
 G_M3693_IG18:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref

libraries_tests.run.windows.x86.Release.mch

-15 (-4.02%) : 237079.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (Tier0-FullOpts)

@@ -16,7 +16,7 @@
 ;  V06 tmp1         [V06,T05] (  6,  8   )   byref  ->  ebx        
 ;* V07 tmp2         [V07    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V08 tmp3         [V08,T06] (  6,  8   )     int  ->  [ebp-0x1C]  "VirtualCall with runtime lookup"
-;  V09 tmp4         [V09,T09] (  4,  4   )     int  ->  ebx        
+;  V09 tmp4         [V09,T09] (  2,  3.96)     int  ->  ecx        
 ;  V10 tmp5         [V10,T07] (  4,  8   )     ref  ->  ebx         "argument with side effect"
 ;  V11 cse0         [V11,T08] (  5,  7   )     int  ->  [ebp-0x20]  spill-single-def "CSE - moderate"
 ;  V12 rat0         [V12,T02] (  3, 11.09)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
@@ -120,10 +120,10 @@ G_M22994_IG10:        ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        nop      
        call     [eax]
        ; gcrRegs -[ecx edx ebx]
-       xor      ebx, ebx
+       xor      ecx, ecx
        test     eax, eax
-       sete     bl
-       test     ebx, ebx
+       sete     cl
+       test     ecx, ecx
        jne      G_M22994_IG23
                        ;; size=34 bbWeight=1.98 PerfScore 24.26
 G_M22994_IG11:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
@@ -161,11 +161,11 @@ G_M22994_IG14:        ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        cmp      gword ptr [ebp-0x18], 0
        jne      SHORT G_M22994_IG16
        cmp      eax, dword ptr [esi+0x04]
-       jae      G_M22994_IG25
+       jae      SHORT G_M22994_IG25
        mov      dword ptr [ebp-0x14], eax
        cmp      gword ptr [esi+4*eax+0x08], 0
        je       SHORT G_M22994_IG20
-                       ;; size=33 bbWeight=0.02 PerfScore 0.31
+                       ;; size=29 bbWeight=0.02 PerfScore 0.31
 G_M22994_IG15:        ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[ecx esi edi]
        ; byrRegs -[ebx]
@@ -207,19 +207,16 @@ G_M22994_IG19:        ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        nop      
        call     [eax]
        ; gcrRegs -[ecx edx ebx]
-       xor      ebx, ebx
        test     eax, eax
-       sete     bl
-       test     ebx, ebx
        mov      edx, dword ptr [ebp-0x20]
-       jne      SHORT G_M22994_IG23
-                       ;; size=38 bbWeight=0.02 PerfScore 0.35
-G_M22994_IG20:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       je       SHORT G_M22994_IG23
+                       ;; size=31 bbWeight=0.02 PerfScore 0.32
+G_M22994_IG20:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      eax, dword ptr [ebp-0x14]
        inc      eax
        cmp      edx, eax
-       jg       G_M22994_IG13
-                       ;; size=12 bbWeight=0.04 PerfScore 0.10
+       jg       SHORT G_M22994_IG13
+                       ;; size=8 bbWeight=0.04 PerfScore 0.10
 G_M22994_IG21:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi edi]
        mov      eax, 1
@@ -248,6 +245,6 @@ G_M22994_IG25:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 373, prolog size 24, PerfScore 131.30, instruction count 134, allocated bytes for code 373 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (Tier0-FullOpts)
+; Total bytes of code 358, prolog size 24, PerfScore 131.27, instruction count 131, allocated bytes for code 358 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (Tier0-FullOpts)
 ; ============================================================
 

-47 (-2.25%) : 327043.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

@@ -13,10 +13,10 @@
 ;  V01 arg1         [V01,T08] ( 10,  7   )     ref  ->  edi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.String]>
 ;  V02 loc0         [V02,T41] (  5,  2   )     ref  ->  ebx         class-hnd single-def <<unknown class>>
 ;  V03 loc1         [V03,T36] (  5,  2.50)     ref  ->  ebx         class-hnd exact <<unknown class>>
-;  V04 loc2         [V04,T00] ( 41, 65.24)     ref  ->  [ebp-0x60]  class-hnd EH-live single-def <System.Collections.Generic.IEnumerator`1[System.String]>
-;  V05 loc3         [V05,T12] ( 12,  7.62)     ref  ->  [ebp-0x64]  class-hnd <System.String>
+;  V04 loc2         [V04,T00] ( 41, 65.24)     ref  ->  [ebp-0x5C]  class-hnd EH-live single-def <System.Collections.Generic.IEnumerator`1[System.String]>
+;  V05 loc3         [V05,T12] ( 12,  7.62)     ref  ->  [ebp-0x60]  class-hnd <System.String>
 ;  V06 loc4         [V06    ] ( 68, 32.10)  struct (16) [ebp-0x34]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-;  V07 loc5         [V07,T42] (  4,  2   )     ref  ->  [ebp-0x68]  do-not-enreg[M] must-init class-hnd EH-live <System.String>
+;  V07 loc5         [V07,T42] (  4,  2   )     ref  ->  [ebp-0x64]  do-not-enreg[M] must-init class-hnd EH-live <System.String>
 ;* V08 loc6         [V08    ] (  0,  0   )  struct ( 8) zero-ref    <System.Span`1[ushort]>
 ;* V09 tmp0         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
 ;* V10 tmp1         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -46,7 +46,7 @@
 ;* V34 tmp25        [V34    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.Span`1[System.String]>
 ;* V35 tmp26        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[System.String]>
 ;  V36 tmp27        [V36,T64] (  4,  0   )     int  ->  [ebp-0x40]  spill-single-def "Inline stloc first use temp"
-;  V37 tmp28        [V37,T63] (  4,  0   )     ref  ->  [ebp-0x6C]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V37 tmp28        [V37,T63] (  4,  0   )     ref  ->  [ebp-0x68]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;* V38 tmp29        [V38    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.String]>
 ;* V39 tmp30        [V39    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V40 tmp31        [V40    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -69,7 +69,7 @@
 ;* V57 tmp48        [V57    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V58 tmp49        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;  V59 tmp50        [V59,T17] (  3,  5.42)     int  ->  edi         "Inlining Arg"
-;  V60 tmp51        [V60,T33] (  2,  3.62)   byref  ->  [ebp-0x70]  spill-single-def "Inlining Arg"
+;  V60 tmp51        [V60,T33] (  2,  3.62)   byref  ->  [ebp-0x6C]  spill-single-def "Inlining Arg"
 ;* V61 tmp52        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V62 tmp53        [V62    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;  V63 tmp54        [V63,T34] (  2,  3.62)   byref  ->  edx         single-def "Inlining Arg"
@@ -79,7 +79,7 @@
 ;* V67 tmp58        [V67    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V68 tmp59        [V68    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;  V69 tmp60        [V69,T15] (  6,  5.42)     int  ->  edi         "Inlining Arg"
-;  V70 tmp61        [V70,T27] (  4,  3.62)   byref  ->  [ebp-0x74]  "Inlining Arg"
+;  V70 tmp61        [V70,T27] (  4,  3.62)   byref  ->  [ebp-0x70]  "Inlining Arg"
 ;* V71 tmp62        [V71    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V72 tmp63        [V72    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V73 tmp64        [V73,T28] (  4,  3.62)   byref  ->  edx         "Inlining Arg"
@@ -89,7 +89,7 @@
 ;* V77 tmp68        [V77    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V78 tmp69        [V78    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;  V79 tmp70        [V79,T16] (  6,  5.42)     int  ->  [ebp-0x50]  "Inlining Arg"
-;  V80 tmp71        [V80,T29] (  4,  3.62)   byref  ->  [ebp-0x78]  "Inlining Arg"
+;  V80 tmp71        [V80,T29] (  4,  3.62)   byref  ->  [ebp-0x74]  "Inlining Arg"
 ;* V81 tmp72        [V81    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V82 tmp73        [V82    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V83 tmp74        [V83,T30] (  4,  3.62)   byref  ->  edx         "Inlining Arg"
@@ -155,18 +155,18 @@
 ;  V143 tmp134      [V143,T48] (  2,  2   )   byref  ->  edi         single-def "field V91._reference (fldOffset=0x0)" P-INDEP
 ;  V144 tmp135      [V144,T49] (  2,  2   )     int  ->  esi         "field V91._length (fldOffset=0x4)" P-INDEP
 ;  V145 tmp136      [V145,T24] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
-;  V146 tmp137      [V146,T13] (  3,  6   )     ref  ->  [ebp-0x7C]  spill-single-def "argument with side effect"
+;  V146 tmp137      [V146,T13] (  3,  6   )     ref  ->  [ebp-0x78]  spill-single-def "argument with side effect"
 ;  V147 tmp138      [V147,T25] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
-;  V148 tmp139      [V148,T14] (  3,  6   )     ref  ->  [ebp-0x80]  spill-single-def "argument with side effect"
+;  V148 tmp139      [V148,T14] (  3,  6   )     ref  ->  [ebp-0x7C]  spill-single-def "argument with side effect"
 ;  V149 tmp140      [V149,T02] (  4, 32   )     ref  ->  eax         "argument with side effect"
-;  V150 tmp141      [V150,T01] (  6, 48   )     ref  ->  [ebp-0x84]  "argument with side effect"
-;  V151 GsCookie    [V151    ] (  1,  1   )     int  ->  [ebp-0x88]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
+;  V150 tmp141      [V150,T01] (  6, 48   )     ref  ->  [ebp-0x80]  "argument with side effect"
+;  V151 GsCookie    [V151    ] (  1,  1   )     int  ->  [ebp-0x84]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V152 EHSlots     [V152    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
 ;  V153 LocAllocSP  [V153,T54] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V154 cse0        [V154,T04] (  3, 23.76)     int  ->  edx         "CSE - aggressive"
 ;  V155 cse1        [V155,T38] (  3,  3   )     int  ->  edx         "CSE - conservative"
 ;  V156 cse2        [V156,T39] (  3,  3   )     int  ->  edx         "CSE - conservative"
-;  V157 cse3        [V157,T55] (  3,  0.24)     int  ->  [ebp-0x5C]  spill-single-def "CSE - conservative"
+;  V157 cse3        [V157,T55] (  3,  0.24)     int  ->  edx         "CSE - conservative"
 ;  V158 cse4        [V158,T45] (  3,  2   )     int  ->  eax         "CSE - conservative"
 ;  V159 cse5        [V159,T58] (  3,  0.03)     int  ->  ecx         "CSE - conservative"
 ;  V160 cse6        [V160,T59] (  3,  0.03)     int  ->  ecx         "CSE - conservative"
@@ -175,9 +175,8 @@
 ;  V163 cse9        [V163,T60] (  5,  0.02)     int  ->  eax         multi-def "CSE - conservative"
 ;  V164 cse10       [V164,T61] (  5,  0.02)     int  ->  edx         multi-def "CSE - conservative"
 ;  V165 rat0        [V165,T09] (  6,  8   )     ref  ->  ebx         class-hnd "replacement local" <<unknown class>>
-;  TEMP_01                                   byref  ->  [ebp-0x8C]
 ;
-; Lcl frame size = 128
+; Lcl frame size = 124
 
 G_M8186_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -185,23 +184,20 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
        push     edi
        push     esi
        push     ebx
-       sub      esp, 128
+       sub      esp, 124
        vzeroupper 
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [ebp-0x8C], ymm4
-       vmovdqu  ymmword ptr [ebp-0x6C], ymm4
-       vmovdqu  ymmword ptr [ebp-0x4C], ymm4
+       vmovdqu  ymmword ptr [ebp-0x64], ymm4
+       vmovdqu  ymmword ptr [ebp-0x44], ymm4
        xor      eax, eax
-       mov      dword ptr [ebp-0x2C], eax
-       mov      dword ptr [ebp-0x28], eax
        mov      dword ptr [ebp-0x1C], eax
        mov      dword ptr [ebp-0x10], esp
-       mov      dword ptr [ebp-0x88], 0xD1FFAB1E
+       mov      dword ptr [ebp-0x84], 0xD1FFAB1E
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
        ; gcrRegs +[edi]
-                       ;; size=65 bbWeight=1 PerfScore 17.58
+                       ;; size=48 bbWeight=1 PerfScore 13.58
 G_M8186_IG02:        ; bbWeight=1, gcVars=000000000000040000000000 {V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars +{V07 V42}
        mov      ebx, edi
@@ -259,7 +255,7 @@ G_M8186_IG09:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080
        mov      dword ptr [ebp-0x40], eax
        mov      edx, gword ptr [ebx+0x04]
        ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x6C], edx
+       mov      gword ptr [ebp-0x68], edx
        ; GC ptr vars +{V37}
        test     edx, edx
        jne      SHORT G_M8186_IG10
@@ -270,7 +266,7 @@ G_M8186_IG09:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080
        ; gcrRegs -[ecx edx]
                        ;; size=32 bbWeight=0 PerfScore 0.00
 G_M8186_IG10:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, byref, isz
-       mov      edx, gword ptr [ebp-0x6C]
+       mov      edx, gword ptr [ebp-0x68]
        ; gcrRegs +[edx]
        mov      eax, dword ptr [ebp-0x40]
        cmp      dword ptr [edx+0x04], eax
@@ -296,7 +292,7 @@ G_M8186_IG11:        ; bbWeight=0, gcVars=000000008000000000000000 {V37}, gcrefR
        ; gcrRegs -[ecx edx ebx]
                        ;; size=27 bbWeight=0 PerfScore 0.00
 G_M8186_IG12:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
-       mov      edx, gword ptr [ebp-0x6C]
+       mov      edx, gword ptr [ebp-0x68]
        ; gcrRegs +[edx]
        lea      ebx, bword ptr [edx+0x08]
        ; byrRegs +[ebx]
@@ -325,7 +321,7 @@ G_M8186_IG12:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {ed
        ; gcrRegs +[eax]
        ; byrRegs -[edi]
        ; gcr arg pop 2
-       cmp      dword ptr [ebp-0x88], 0xD1FFAB1E
+       cmp      dword ptr [ebp-0x84], 0xD1FFAB1E
        je       SHORT G_M8186_IG13
        call     CORINFO_HELP_FAIL_FAST
        ; gcrRegs -[eax]
@@ -395,7 +391,7 @@ G_M8186_IG19:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080
        ; gcrRegs -[ebx] +[eax]
        ; byrRegs -[edx edi]
        ; gcr arg pop 2
-       cmp      dword ptr [ebp-0x88], 0xD1FFAB1E
+       cmp      dword ptr [ebp-0x84], 0xD1FFAB1E
        je       SHORT G_M8186_IG20
        call     CORINFO_HELP_FAIL_FAST
        ; gcrRegs -[eax]
@@ -427,7 +423,7 @@ G_M8186_IG23:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
        ; gcrRegs -[eax]
        mov      ebx, edi
        ; gcrRegs +[ebx]
-       mov      gword ptr [ebp-0x60], ebx
+       mov      gword ptr [ebp-0x5C], ebx
        ; GC ptr vars +{V04}
        jmp      SHORT G_M8186_IG27
                        ;; size=7 bbWeight=1 PerfScore 3.25
@@ -476,7 +472,7 @@ G_M8186_IG27:        ; bbWeight=1, gcVars=000000000000040000000001 {V04 V07}, gc
        jle      SHORT G_M8186_IG28
        mov      eax, gword ptr [edi+0x14]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x7C], eax
+       mov      gword ptr [ebp-0x78], eax
        ; GC ptr vars +{V146}
        add      edx, ecx
        mov      ecx, gword ptr [edi+0x10]
@@ -486,7 +482,7 @@ G_M8186_IG27:        ; bbWeight=1, gcVars=000000000000040000000001 {V04 V07}, gc
        ; gcrRegs -[ecx]
        mov      edx, eax
        ; gcrRegs +[edx]
-       mov      eax, gword ptr [ebp-0x7C]
+       mov      eax, gword ptr [ebp-0x78]
        mov      ecx, gword ptr [eax+0x04]
        ; gcrRegs +[ecx]
        ; GC ptr vars -{V146}
@@ -519,7 +515,7 @@ G_M8186_IG29:        ; bbWeight=0, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
                        ;; size=16 bbWeight=0 PerfScore 0.00
 G_M8186_IG30:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi edi]
-       mov      gword ptr [ebp-0x68], 0xD1FFAB1E
+       mov      gword ptr [ebp-0x64], 0xD1FFAB1E
        mov      dword ptr [ebp-0x20], 0
        mov      dword ptr [ebp-0x1C], 252
        push     G_M8186_IG89
@@ -529,7 +525,7 @@ G_M8186_IG31:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
        ; gcrRegs +[esi edi]
        mov      eax, gword ptr [edi+0x04]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x64], eax
+       mov      gword ptr [ebp-0x60], eax
        ; GC ptr vars +{V05}
        mov      edx, dword ptr [edi+0x0C]
        dec      edx
@@ -549,7 +545,7 @@ G_M8186_IG31:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
        jle      SHORT G_M8186_IG32
        mov      eax, gword ptr [edi+0x14]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x80], eax
+       mov      gword ptr [ebp-0x7C], eax
        ; GC ptr vars +{V148}
        add      edx, ecx
        mov      ecx, gword ptr [edi+0x10]
@@ -558,7 +554,7 @@ G_M8186_IG31:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
        ; gcrRegs -[ecx]
        mov      edx, eax
        ; gcrRegs +[edx]
-       mov      eax, gword ptr [ebp-0x80]
+       mov      eax, gword ptr [ebp-0x7C]
        mov      ecx, gword ptr [eax+0x04]
        ; gcrRegs +[ecx]
        ; GC ptr vars -{V148}
@@ -591,13 +587,13 @@ G_M8186_IG33:        ; bbWeight=0, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M8186_IG34:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi]
-       mov      eax, gword ptr [ebp-0x64]
+       mov      eax, gword ptr [ebp-0x60]
        ; gcrRegs +[eax]
        mov      edx, 0xD1FFAB1E
        ; gcrRegs +[edx]
        test     eax, eax
        cmove    eax, edx
-       mov      gword ptr [ebp-0x68], eax
+       mov      gword ptr [ebp-0x64], eax
        mov      dword ptr [ebp-0x20], 0
        mov      dword ptr [ebp-0x1C], 252
        push     G_M8186_IG90
@@ -610,7 +606,7 @@ G_M8186_IG35:        ; bbWeight=0, gcVars=000000000000040000000001 {V04 V07}, gc
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx] +[eax]
-       mov      gword ptr [ebp-0x64], eax
+       mov      gword ptr [ebp-0x60], eax
        ; GC ptr vars +{V05}
        jmp      SHORT G_M8186_IG33
                        ;; size=13 bbWeight=0 PerfScore 0.00
@@ -638,7 +634,7 @@ G_M8186_IG37:        ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
 G_M8186_IG38:        ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[edx]
...

-47 (-2.20%) : 628116.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)

@@ -13,10 +13,10 @@
 ;  V01 arg1         [V01,T08] ( 10,  6.98)     ref  ->  edi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.String]>
 ;  V02 loc0         [V02,T41] (  5,  2   )     ref  ->  ebx         class-hnd single-def <<unknown class>>
 ;  V03 loc1         [V03,T36] (  5,  2.50)     ref  ->  ebx         class-hnd exact <<unknown class>>
-;  V04 loc2         [V04,T00] ( 41, 81.70)     ref  ->  [ebp-0x60]  class-hnd EH-live single-def <System.Collections.Generic.IEnumerator`1[System.String]>
-;  V05 loc3         [V05,T12] ( 12,  7.62)     ref  ->  [ebp-0x64]  class-hnd <System.String>
+;  V04 loc2         [V04,T00] ( 41, 81.70)     ref  ->  [ebp-0x5C]  class-hnd EH-live single-def <System.Collections.Generic.IEnumerator`1[System.String]>
+;  V05 loc3         [V05,T12] ( 12,  7.62)     ref  ->  [ebp-0x60]  class-hnd <System.String>
 ;  V06 loc4         [V06    ] ( 68, 32.10)  struct (16) [ebp-0x34]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Text.ValueStringBuilder>
-;  V07 loc5         [V07,T42] (  4,  2   )     ref  ->  [ebp-0x68]  do-not-enreg[M] must-init class-hnd EH-live <System.String>
+;  V07 loc5         [V07,T42] (  4,  2   )     ref  ->  [ebp-0x64]  do-not-enreg[M] must-init class-hnd EH-live <System.String>
 ;* V08 loc6         [V08    ] (  0,  0   )  struct ( 8) zero-ref    <System.Span`1[ushort]>
 ;* V09 tmp0         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
 ;* V10 tmp1         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -46,7 +46,7 @@
 ;* V34 tmp25        [V34    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.Span`1[System.String]>
 ;* V35 tmp26        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[System.String]>
 ;  V36 tmp27        [V36,T64] (  4,  0   )     int  ->  [ebp-0x40]  spill-single-def "Inline stloc first use temp"
-;  V37 tmp28        [V37,T63] (  4,  0   )     ref  ->  [ebp-0x6C]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V37 tmp28        [V37,T63] (  4,  0   )     ref  ->  [ebp-0x68]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;* V38 tmp29        [V38    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[System.String]>
 ;* V39 tmp30        [V39    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V40 tmp31        [V40    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -69,7 +69,7 @@
 ;* V57 tmp48        [V57    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V58 tmp49        [V58    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;  V59 tmp50        [V59,T17] (  3,  5.42)     int  ->  ebx         "Inlining Arg"
-;  V60 tmp51        [V60,T33] (  2,  3.62)   byref  ->  [ebp-0x70]  spill-single-def "Inlining Arg"
+;  V60 tmp51        [V60,T33] (  2,  3.62)   byref  ->  [ebp-0x6C]  spill-single-def "Inlining Arg"
 ;* V61 tmp52        [V61    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V62 tmp53        [V62    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;  V63 tmp54        [V63,T34] (  2,  3.62)   byref  ->  edx         single-def "Inlining Arg"
@@ -79,7 +79,7 @@
 ;* V67 tmp58        [V67    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V68 tmp59        [V68    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;  V69 tmp60        [V69,T15] (  6,  5.42)     int  ->  ebx         "Inlining Arg"
-;  V70 tmp61        [V70,T27] (  4,  3.62)   byref  ->  [ebp-0x74]  "Inlining Arg"
+;  V70 tmp61        [V70,T27] (  4,  3.62)   byref  ->  [ebp-0x70]  "Inlining Arg"
 ;* V71 tmp62        [V71    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V72 tmp63        [V72    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V73 tmp64        [V73,T28] (  4,  3.62)   byref  ->  edx         "Inlining Arg"
@@ -89,7 +89,7 @@
 ;* V77 tmp68        [V77    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[ushort]>
 ;* V78 tmp69        [V78    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
 ;  V79 tmp70        [V79,T16] (  6,  5.42)     int  ->  [ebp-0x50]  "Inlining Arg"
-;  V80 tmp71        [V80,T29] (  4,  3.62)   byref  ->  [ebp-0x78]  "Inlining Arg"
+;  V80 tmp71        [V80,T29] (  4,  3.62)   byref  ->  [ebp-0x74]  "Inlining Arg"
 ;* V81 tmp72        [V81    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
 ;* V82 tmp73        [V82    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V83 tmp74        [V83,T30] (  4,  3.62)   byref  ->  edx         "Inlining Arg"
@@ -155,18 +155,18 @@
 ;  V143 tmp134      [V143,T48] (  2,  2   )   byref  ->  ebx         single-def "field V91._reference (fldOffset=0x0)" P-INDEP
 ;  V144 tmp135      [V144,T49] (  2,  2   )     int  ->  esi         "field V91._length (fldOffset=0x4)" P-INDEP
 ;  V145 tmp136      [V145,T24] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
-;  V146 tmp137      [V146,T13] (  3,  6   )     ref  ->  [ebp-0x7C]  spill-single-def "argument with side effect"
+;  V146 tmp137      [V146,T13] (  3,  6   )     ref  ->  [ebp-0x78]  spill-single-def "argument with side effect"
 ;  V147 tmp138      [V147,T25] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
-;  V148 tmp139      [V148,T14] (  3,  6   )     ref  ->  [ebp-0x80]  spill-single-def "argument with side effect"
+;  V148 tmp139      [V148,T14] (  3,  6   )     ref  ->  [ebp-0x7C]  spill-single-def "argument with side effect"
 ;  V149 tmp140      [V149,T02] (  4, 32.00)     ref  ->  eax         "argument with side effect"
-;  V150 tmp141      [V150,T01] (  6, 48.00)     ref  ->  [ebp-0x84]  "argument with side effect"
-;  V151 GsCookie    [V151    ] (  1,  1   )     int  ->  [ebp-0x88]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
+;  V150 tmp141      [V150,T01] (  6, 48.00)     ref  ->  [ebp-0x80]  "argument with side effect"
+;  V151 GsCookie    [V151    ] (  1,  1   )     int  ->  [ebp-0x84]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V152 EHSlots     [V152    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
 ;  V153 LocAllocSP  [V153,T54] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V154 cse0        [V154,T05] (  3, 23.76)     int  ->  edx         "CSE - aggressive"
 ;  V155 cse1        [V155,T38] (  3,  3   )     int  ->  edx         "CSE - conservative"
 ;  V156 cse2        [V156,T39] (  3,  3   )     int  ->  edx         "CSE - conservative"
-;  V157 cse3        [V157,T55] (  3,  0.24)     int  ->  [ebp-0x5C]  spill-single-def "CSE - conservative"
+;  V157 cse3        [V157,T55] (  3,  0.24)     int  ->  edx         "CSE - conservative"
 ;  V158 cse4        [V158,T45] (  3,  2   )     int  ->  eax         "CSE - conservative"
 ;  V159 cse5        [V159,T58] (  3,  0.03)     int  ->  ecx         "CSE - conservative"
 ;  V160 cse6        [V160,T59] (  3,  0.03)     int  ->  ecx         "CSE - conservative"
@@ -175,9 +175,8 @@
 ;  V163 cse9        [V163,T60] (  5,  0.02)     int  ->  eax         multi-def "CSE - conservative"
 ;  V164 cse10       [V164,T61] (  5,  0.02)     int  ->  edx         multi-def "CSE - conservative"
 ;  V165 rat0        [V165,T09] (  6,  8   )     ref  ->  ebx         class-hnd "replacement local" <<unknown class>>
-;  TEMP_01                                   byref  ->  [ebp-0x8C]
 ;
-; Lcl frame size = 128
+; Lcl frame size = 124
 
 G_M8186_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -185,23 +184,20 @@ G_M8186_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {},
        push     edi
        push     esi
        push     ebx
-       sub      esp, 128
+       sub      esp, 124
        vzeroupper 
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [ebp-0x8C], ymm4
-       vmovdqu  ymmword ptr [ebp-0x6C], ymm4
-       vmovdqu  ymmword ptr [ebp-0x4C], ymm4
+       vmovdqu  ymmword ptr [ebp-0x64], ymm4
+       vmovdqu  ymmword ptr [ebp-0x44], ymm4
        xor      eax, eax
-       mov      dword ptr [ebp-0x2C], eax
-       mov      dword ptr [ebp-0x28], eax
        mov      dword ptr [ebp-0x1C], eax
        mov      dword ptr [ebp-0x10], esp
-       mov      dword ptr [ebp-0x88], 0xD1FFAB1E
+       mov      dword ptr [ebp-0x84], 0xD1FFAB1E
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
        ; gcrRegs +[edi]
-                       ;; size=65 bbWeight=1 PerfScore 17.58
+                       ;; size=48 bbWeight=1 PerfScore 13.58
 G_M8186_IG02:        ; bbWeight=1, gcVars=000000000000040000000000 {V07}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars +{V07 V42}
        mov      ebx, edi
@@ -259,7 +255,7 @@ G_M8186_IG09:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080
        mov      dword ptr [ebp-0x40], eax
        mov      edx, gword ptr [ebx+0x04]
        ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x6C], edx
+       mov      gword ptr [ebp-0x68], edx
        ; GC ptr vars +{V37}
        test     edx, edx
        jne      SHORT G_M8186_IG10
@@ -270,7 +266,7 @@ G_M8186_IG09:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080
        ; gcrRegs -[ecx edx]
                        ;; size=32 bbWeight=0 PerfScore 0.00
 G_M8186_IG10:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, byref, isz
-       mov      edx, gword ptr [ebp-0x6C]
+       mov      edx, gword ptr [ebp-0x68]
        ; gcrRegs +[edx]
        mov      eax, dword ptr [ebp-0x40]
        cmp      dword ptr [edx+0x04], eax
@@ -296,7 +292,7 @@ G_M8186_IG11:        ; bbWeight=0, gcVars=000000008000000000000000 {V37}, gcrefR
        ; gcrRegs -[ecx edx ebx]
                        ;; size=27 bbWeight=0 PerfScore 0.00
 G_M8186_IG12:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
-       mov      edx, gword ptr [ebp-0x6C]
+       mov      edx, gword ptr [ebp-0x68]
        ; gcrRegs +[edx]
        lea      ebx, bword ptr [edx+0x08]
        ; byrRegs +[ebx]
@@ -325,7 +321,7 @@ G_M8186_IG12:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000080 {ed
        ; gcrRegs +[eax]
        ; byrRegs -[edi]
        ; gcr arg pop 2
-       cmp      dword ptr [ebp-0x88], 0xD1FFAB1E
+       cmp      dword ptr [ebp-0x84], 0xD1FFAB1E
        je       SHORT G_M8186_IG13
        call     CORINFO_HELP_FAIL_FAST
        ; gcrRegs -[eax]
@@ -395,7 +391,7 @@ G_M8186_IG19:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000080
        ; gcrRegs -[ebx] +[eax]
        ; byrRegs -[edx edi]
        ; gcr arg pop 2
-       cmp      dword ptr [ebp-0x88], 0xD1FFAB1E
+       cmp      dword ptr [ebp-0x84], 0xD1FFAB1E
        je       SHORT G_M8186_IG20
        call     CORINFO_HELP_FAIL_FAST
        ; gcrRegs -[eax]
@@ -427,7 +423,7 @@ G_M8186_IG23:        ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000
        ; gcrRegs -[eax]
        mov      edi, ebx
        ; gcrRegs +[edi]
-       mov      gword ptr [ebp-0x60], edi
+       mov      gword ptr [ebp-0x5C], edi
        ; GC ptr vars +{V04}
        jmp      SHORT G_M8186_IG28
                        ;; size=7 bbWeight=1 PerfScore 3.25
@@ -482,7 +478,7 @@ G_M8186_IG28:        ; bbWeight=1, gcVars=000000000000040000000001 {V04 V07}, gc
        jle      SHORT G_M8186_IG29
        mov      eax, gword ptr [ebx+0x14]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x7C], eax
+       mov      gword ptr [ebp-0x78], eax
        ; GC ptr vars +{V146}
        add      edx, ecx
        mov      ecx, gword ptr [ebx+0x10]
@@ -492,7 +488,7 @@ G_M8186_IG28:        ; bbWeight=1, gcVars=000000000000040000000001 {V04 V07}, gc
        ; gcrRegs -[ecx]
        mov      edx, eax
        ; gcrRegs +[edx]
-       mov      eax, gword ptr [ebp-0x7C]
+       mov      eax, gword ptr [ebp-0x78]
        mov      ecx, gword ptr [eax+0x04]
        ; gcrRegs +[ecx]
        ; GC ptr vars -{V146}
@@ -525,7 +521,7 @@ G_M8186_IG30:        ; bbWeight=0, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
                        ;; size=16 bbWeight=0 PerfScore 0.00
 G_M8186_IG31:        ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ebx esi]
-       mov      gword ptr [ebp-0x68], 0xD1FFAB1E
+       mov      gword ptr [ebp-0x64], 0xD1FFAB1E
        mov      dword ptr [ebp-0x20], 0
        mov      dword ptr [ebp-0x1C], 252
        push     G_M8186_IG92
@@ -535,7 +531,7 @@ G_M8186_IG32:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
        ; gcrRegs +[ebx esi]
        mov      eax, gword ptr [ebx+0x04]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x64], eax
+       mov      gword ptr [ebp-0x60], eax
        ; GC ptr vars +{V05}
        mov      edx, dword ptr [ebx+0x0C]
        dec      edx
@@ -555,7 +551,7 @@ G_M8186_IG32:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
        jle      SHORT G_M8186_IG33
        mov      eax, gword ptr [ebx+0x14]
        ; gcrRegs +[eax]
-       mov      gword ptr [ebp-0x80], eax
+       mov      gword ptr [ebp-0x7C], eax
        ; GC ptr vars +{V148}
        add      edx, ecx
        mov      ecx, gword ptr [ebx+0x10]
@@ -564,7 +560,7 @@ G_M8186_IG32:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
        ; gcrRegs -[ecx]
        mov      edx, eax
        ; gcrRegs +[edx]
-       mov      eax, gword ptr [ebp-0x80]
+       mov      eax, gword ptr [ebp-0x7C]
        mov      ecx, gword ptr [eax+0x04]
        ; gcrRegs +[ecx]
        ; GC ptr vars -{V148}
@@ -597,13 +593,13 @@ G_M8186_IG34:        ; bbWeight=0, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=0
                        ;; size=12 bbWeight=0 PerfScore 0.00
 G_M8186_IG35:        ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi]
-       mov      eax, gword ptr [ebp-0x64]
+       mov      eax, gword ptr [ebp-0x60]
        ; gcrRegs +[eax]
        mov      edx, 0xD1FFAB1E
        ; gcrRegs +[edx]
        test     eax, eax
        cmove    eax, edx
-       mov      gword ptr [ebp-0x68], eax
+       mov      gword ptr [ebp-0x64], eax
        mov      dword ptr [ebp-0x20], 0
        mov      dword ptr [ebp-0x1C], 252
        push     G_M8186_IG93
@@ -616,7 +612,7 @@ G_M8186_IG36:        ; bbWeight=0, gcVars=000000000000040000000001 {V04 V07}, gc
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx] +[eax]
-       mov      gword ptr [ebp-0x64], eax
+       mov      gword ptr [ebp-0x60], eax
        ; GC ptr vars +{V05}
        jmp      SHORT G_M8186_IG34
                        ;; size=13 bbWeight=0 PerfScore 0.00
@@ -644,7 +640,7 @@ G_M8186_IG38:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000
 G_M8186_IG39:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[edx]
...

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

@@ -10,14 +10,14 @@
 ;
 ;  V00 this         [V00,T06] (  8, 22   )     ref  ->  [ebp-0x40]  do-not-enreg[H] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 RetBuf       [V01,T16] (  6,  6   )   byref  ->  [ebp-0x44]  EH-live single-def
-;  V02 arg1         [V02,T40] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V03 arg2         [V03,T33] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
+;  V02 arg1         [V02,T38] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V03 arg2         [V03,T31] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
 ;* V04 loc0         [V04    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V05 loc1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V07 loc3         [V07,T11] (  4, 10   )     int  ->  [ebp-0x28]  do-not-enreg[Z] EH-live
 ;  V08 loc4         [V08,T12] (  4, 10   )     int  ->  [ebp-0x2C]  do-not-enreg[Z] EH-live
-;  V09 loc5         [V09,T37] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
+;  V09 loc5         [V09,T35] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
 ;  V10 loc6         [V10,T05] ( 13, 27   )     ref  ->  [ebp-0x48]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V11 loc7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V12 loc8         [V12,T04] (  5, 28   )     int  ->  eax        
@@ -26,44 +26,44 @@
 ;* V15 tmp2         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V16 tmp3         [V16    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;* V17 tmp4         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T29] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
+;  V18 tmp5         [V18,T27] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
 ;* V19 tmp6         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V20 tmp7         [V20,T02] (  3, 32   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V21 tmp8         [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V22 tmp9         [V22    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;* V23 tmp10        [V23    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V24 tmp11        [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T30] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T28] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V27 tmp14        [V27,T31] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V27 tmp14        [V27,T29] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V28 tmp15        [V28    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp16        [V29,T15] (  8,  8   )     int  ->  [ebp-0x34]  "Inline return value spill temp"
 ;  V30 tmp17        [V30,T18] (  3,  6   )     int  ->  eax         "Inlining Arg"
-;  V31 tmp18        [V31,T32] (  2,  4   )     int  ->  edi         "Inlining Arg"
+;  V31 tmp18        [V31,T30] (  2,  4   )     int  ->  edi         "Inlining Arg"
 ;  V32 tmp19        [V32,T17] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp20        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp21        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V35 tmp22        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V36 tmp23        [V36    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V37 tmp24        [V37    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V38 tmp25        [V38,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V38 tmp25        [V38,T32] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V39 tmp26        [V39,T08] (  3, 12   )     int  ->  edx         "Inline stloc first use temp"
 ;  V40 tmp27        [V40,T09] (  3, 12   )     int  ->  ecx         "Inline stloc first use temp"
 ;  V41 tmp28        [V41,T07] (  3, 24   )   byref  ->  edx         "dup spill"
 ;* V42 tmp29        [V42    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V43 tmp30        [V43    ] (  0,  0   )     int  ->  zero-ref    single-def "field V05._length (fldOffset=0x4)" P-INDEP
-;  V44 tmp31        [V44,T35] (  3,  3   )   byref  ->  edi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V44 tmp31        [V44,T33] (  3,  3   )   byref  ->  edi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V45 tmp32        [V45    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x4)" P-INDEP
 ;* V46 tmp33        [V46    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V47 tmp34        [V47    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V48 tmp35        [V48,T42] (  2,  2   )     int  ->  eax         single-def "field V21.Item1 (fldOffset=0x0)" P-INDEP
-;  V49 tmp36        [V49,T43] (  2,  2   )     int  ->  edx         single-def "field V21.Item2 (fldOffset=0x4)" P-INDEP
+;  V48 tmp35        [V48,T40] (  2,  2   )     int  ->  eax         single-def "field V21.Item1 (fldOffset=0x0)" P-INDEP
+;  V49 tmp36        [V49,T41] (  2,  2   )     int  ->  edx         single-def "field V21.Item2 (fldOffset=0x4)" P-INDEP
 ;* V50 tmp37        [V50    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V51 tmp38        [V51    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x4)" P-INDEP
-;* V52 tmp39        [V52,T47] (  0,  0   )     int  ->  zero-ref    single-def "field V28.Item1 (fldOffset=0x0)" P-INDEP
-;  V53 tmp40        [V53,T44] (  2,  2   )     int  ->  eax         single-def "field V28.Item2 (fldOffset=0x4)" P-INDEP
-;  V54 tmp41        [V54,T41] (  2,  2   )   byref  ->  edi         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V55 tmp42        [V55,T45] (  2,  2   )     int  ->  eax         "field V33._length (fldOffset=0x4)" P-INDEP
+;* V52 tmp39        [V52,T44] (  0,  0   )     int  ->  zero-ref    single-def "field V28.Item1 (fldOffset=0x0)" P-INDEP
+;  V53 tmp40        [V53,T42] (  2,  2   )     int  ->  eax         single-def "field V28.Item2 (fldOffset=0x4)" P-INDEP
+;  V54 tmp41        [V54,T39] (  2,  2   )   byref  ->  edi         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V55 tmp42        [V55,T43] (  2,  2   )     int  ->  eax         "field V33._length (fldOffset=0x4)" P-INDEP
 ;* V56 tmp43        [V56    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V57 tmp44        [V57    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x4)" P-INDEP
 ;* V58 tmp45        [V58    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -72,27 +72,24 @@
 ;* V61 tmp48        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x4)" P-INDEP
 ;  V62 tmp49        [V62,T13] (  3,  9   )   byref  ->  edi         single-def "V06.[000..004)"
 ;  V63 tmp50        [V63,T14] (  3,  9   )     int  ->  [ebp-0x38]  spill-single-def "V06.[004..008)"
-;  V64 tmp51        [V64,T36] (  3,  3   )   byref  ->  edi         "V16.[000..004)"
-;  V65 tmp52        [V65,T38] (  3,  3   )     int  ->  eax         "V16.[004..008)"
+;  V64 tmp51        [V64,T34] (  3,  3   )   byref  ->  edi         "V16.[000..004)"
+;  V65 tmp52        [V65,T36] (  3,  3   )     int  ->  eax         "V16.[004..008)"
 ;  V66 tmp53        [V66,T03] (  2, 32   )     ref  ->  edx         "argument with side effect"
 ;  V67 GsCookie     [V67    ] (  1,  1   )     int  ->  [ebp-0x4C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V68 EHSlots      [V68    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-;  V69 LocAllocSP   [V69,T48] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
+;  V69 LocAllocSP   [V69,T45] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V70 cse0         [V70,T10] (  3, 12   )     int  ->  ecx         "CSE - moderate"
-;  V71 cse1         [V71,T39] (  3,  3   )     int  ->  eax         "CSE - conservative"
-;  V72 rat0         [V72,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V71 cse1         [V71,T37] (  3,  3   )     int  ->  eax         "CSE - conservative"
+;  V72 rat0         [V72,T24] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V73 rat1         [V73,T21] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V74 rat2         [V74,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V74 rat2         [V74,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V75 rat3         [V75,T22] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V76 rat4         [V76,T27] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V76 rat4         [V76,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V77 rat5         [V77,T23] (  3,  5.60)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V78 rat6         [V78,T28] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V79 rat7         [V79,T46] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V80 rat8         [V80,T24] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V81 rat9         [V81,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V82 rat10        [V82,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V83 rat11        [V83,T19] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
-;  V84 rat12        [V84,T20] (  3,  6   )     int  ->  [ebp-0x3C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V78 rat6         [V78,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V79 rat7         [V79,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V80 rat8         [V80,T19] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
+;  V81 rat9         [V81,T20] (  3,  6   )     int  ->  [ebp-0x3C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 68
 

+0 (0.00%) : 201876.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 (Tier0-FullOpts)

@@ -10,49 +10,49 @@
 ;
 ;  V00 this         [V00,T04] ( 10, 24   )     ref  ->  [ebp-0x50]  do-not-enreg[H] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[System.__Canon,int]]>
 ;  V01 RetBuf       [V01,T15] (  6,  6   )   byref  ->  [ebp-0x54]  EH-live single-def
-;  V02 arg1         [V02,T41] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
-;  V03 arg2         [V03,T32] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
-;  V04 loc0         [V04,T36] (  3,  3   )     int  ->  edi        
+;  V02 arg1         [V02,T39] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
+;  V03 arg2         [V03,T30] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
+;  V04 loc0         [V04,T34] (  3,  3   )     int  ->  edi        
 ;* V05 loc1         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V07 loc3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
 ;  V08 loc4         [V08,T11] (  4, 10   )     int  ->  [ebp-0x28]  do-not-enreg[Z] EH-live
 ;  V09 loc5         [V09,T12] (  4, 10   )     int  ->  [ebp-0x2C]  do-not-enreg[Z] EH-live
-;  V10 loc6         [V10,T37] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
-;  V11 loc7         [V11,T23] (  6,  5   )     ref  ->  [ebp-0x58]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V10 loc6         [V10,T35] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
+;  V11 loc7         [V11,T22] (  6,  5   )     ref  ->  [ebp-0x58]  class-hnd EH-live spill-single-def <<unknown class>>
 ;  V12 loc8         [V12    ] (  1,  1   )  struct ( 8) [ebp-0x38]  do-not-enreg[XS] must-init addr-exposed <System.ValueTuple`2[System.__Canon,int]>
 ;* V13 loc9         [V13    ] (  0,  0   )  struct ( 8) zero-ref    <System.Span`1[int]>
 ;  V14 loc10        [V14,T06] (  7, 20   )     ref  ->  [ebp-0x5C]  class-hnd EH-live spill-single-def <<unknown class>>
 ;  V15 loc11        [V15    ] (  2, 16   )  struct ( 8) [ebp-0x40]  do-not-enreg[XS] must-init addr-exposed <System.ValueTuple`2[System.__Canon,int]>
 ;  V16 loc12        [V16,T02] (  6, 32   )     int  ->  esi        
-;  V17 loc13        [V17,T38] (  2,  2   )     int  ->  ecx        
+;  V17 loc13        [V17,T36] (  2,  2   )     int  ->  ecx        
 ;* V18 tmp1         [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V19 tmp2         [V19    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V20 tmp3         [V20    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V21 tmp4         [V21    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] <System.Collections.Generic.BitHelper>
 ;* V22 tmp5         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V23 tmp6         [V23,T28] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
+;  V23 tmp6         [V23,T26] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
 ;* V24 tmp7         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp8         [V25,T03] (  3, 32   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V26 tmp9         [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V27 tmp10        [V27    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V28 tmp11        [V28    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V29 tmp12        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V30 tmp13        [V30,T29] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V30 tmp13        [V30,T27] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V31 tmp14        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V32 tmp15        [V32,T30] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V32 tmp15        [V32,T28] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V33 tmp16        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V34 tmp17        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp18        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V36 tmp19        [V36,T16] (  8,  7   )     int  ->  edi         "Inline return value spill temp"
-;  V37 tmp20        [V37,T31] (  2,  4   )     int  ->  eax         "Inlining Arg"
+;  V37 tmp20        [V37,T29] (  2,  4   )     int  ->  eax         "Inlining Arg"
 ;  V38 tmp21        [V38,T17] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V39 tmp22        [V39    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V40 tmp23        [V40    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V41 tmp24        [V41    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V42 tmp25        [V42    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V43 tmp26        [V43    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V44 tmp27        [V44,T33] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V44 tmp27        [V44,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V45 tmp28        [V45,T07] (  3, 12   )     int  ->  ecx         "Inline stloc first use temp"
 ;* V46 tmp29        [V46    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
 ;  V47 tmp30        [V47,T08] (  3, 12   )     int  ->  ecx         "Inline stloc first use temp"
@@ -66,18 +66,18 @@
 ;* V55 tmp38        [V55    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x4)" P-INDEP
 ;  V56 tmp39        [V56    ] (  2, 16   )     ref  ->  [ebp-0x40]  do-not-enreg[X] addr-exposed "field V15.Item1 (fldOffset=0x0)" P-DEP
 ;  V57 tmp40        [V57    ] (  2, 16   )     int  ->  [ebp-0x3C]  do-not-enreg[X] addr-exposed "field V15.Item2 (fldOffset=0x4)" P-DEP
-;  V58 tmp41        [V58,T34] (  3,  3   )   byref  ->  [ebp-0x60]  spill-single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp41        [V58,T32] (  3,  3   )   byref  ->  [ebp-0x60]  spill-single-def "field V18._reference (fldOffset=0x0)" P-INDEP
 ;* V59 tmp42        [V59    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x4)" P-INDEP
 ;* V60 tmp43        [V60    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
 ;* V61 tmp44        [V61    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x4)" P-INDEP
-;  V62 tmp45        [V62,T43] (  2,  2   )     int  ->  eax         "field V26.Item1 (fldOffset=0x0)" P-INDEP
-;  V63 tmp46        [V63,T44] (  2,  2   )     int  ->  edx         "field V26.Item2 (fldOffset=0x4)" P-INDEP
+;  V62 tmp45        [V62,T41] (  2,  2   )     int  ->  eax         "field V26.Item1 (fldOffset=0x0)" P-INDEP
+;  V63 tmp46        [V63,T42] (  2,  2   )     int  ->  edx         "field V26.Item2 (fldOffset=0x4)" P-INDEP
 ;* V64 tmp47        [V64    ] (  0,  0   )   byref  ->  zero-ref    "field V28._reference (fldOffset=0x0)" P-INDEP
 ;* V65 tmp48        [V65    ] (  0,  0   )     int  ->  zero-ref    "field V28._length (fldOffset=0x4)" P-INDEP
-;* V66 tmp49        [V66,T48] (  0,  0   )     int  ->  zero-ref    "field V33.Item1 (fldOffset=0x0)" P-INDEP
-;  V67 tmp50        [V67,T45] (  2,  2   )     int  ->  ecx         "field V33.Item2 (fldOffset=0x4)" P-INDEP
-;  V68 tmp51        [V68,T42] (  2,  2   )   byref  ->  edi         "field V39._reference (fldOffset=0x0)" P-INDEP
-;  V69 tmp52        [V69,T46] (  2,  2   )     int  ->  eax         "field V39._length (fldOffset=0x4)" P-INDEP
+;* V66 tmp49        [V66,T45] (  0,  0   )     int  ->  zero-ref    "field V33.Item1 (fldOffset=0x0)" P-INDEP
+;  V67 tmp50        [V67,T43] (  2,  2   )     int  ->  ecx         "field V33.Item2 (fldOffset=0x4)" P-INDEP
+;  V68 tmp51        [V68,T40] (  2,  2   )   byref  ->  edi         "field V39._reference (fldOffset=0x0)" P-INDEP
+;  V69 tmp52        [V69,T44] (  2,  2   )     int  ->  eax         "field V39._length (fldOffset=0x4)" P-INDEP
 ;* V70 tmp53        [V70    ] (  0,  0   )   byref  ->  zero-ref    "field V40._reference (fldOffset=0x0)" P-INDEP
 ;* V71 tmp54        [V71    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x4)" P-INDEP
 ;* V72 tmp55        [V72    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V41._reference (fldOffset=0x0)" P-INDEP
@@ -90,26 +90,23 @@
 ;* V79 tmp62        [V79    ] (  0,  0   )     int  ->  zero-ref    "field V48._length (fldOffset=0x4)" P-INDEP
 ;  V80 tmp63        [V80,T13] (  3,  9   )   byref  ->  edi         single-def "V07.[000..004)"
 ;  V81 tmp64        [V81,T14] (  3,  9   )     int  ->  [ebp-0x44]  spill-single-def "V07.[004..008)"
-;  V82 tmp65        [V82,T35] (  3,  3   )   byref  ->  registers   "V21.[000..004)"
-;  V83 tmp66        [V83,T39] (  3,  3   )     int  ->  registers   "V21.[004..008)"
+;  V82 tmp65        [V82,T33] (  3,  3   )   byref  ->  registers   "V21.[000..004)"
+;  V83 tmp66        [V83,T37] (  3,  3   )     int  ->  registers   "V21.[004..008)"
 ;  V84 GsCookie     [V84    ] (  1,  1   )     int  ->  [ebp-0x64]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V85 EHSlots      [V85    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
-;  V86 LocAllocSP   [V86,T49] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
+;  V86 LocAllocSP   [V86,T46] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V87 cse0         [V87,T09] (  3, 12   )     int  ->  [ebp-0x48]  spill-single-def "CSE - moderate"
 ;  V88 cse1         [V88,T10] (  3, 12   )     int  ->  [ebp-0x4C]  spill-single-def "CSE - moderate"
-;  V89 cse2         [V89,T40] (  3,  3   )     int  ->  edi         "CSE - conservative"
-;  V90 rat0         [V90,T24] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V89 cse2         [V89,T38] (  3,  3   )     int  ->  edi         "CSE - conservative"
+;  V90 rat0         [V90,T23] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V91 rat1         [V91,T19] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V92 rat2         [V92,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V92 rat2         [V92,T24] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V93 rat3         [V93,T20] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V94 rat4         [V94,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 rat4         [V94,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V95 rat5         [V95,T21] (  3,  5.60)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V96 rat6         [V96,T27] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V97 rat7         [V97,T47] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V98 rat8         [V98,T22] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V99 rat9         [V99,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V100 rat10       [V100,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V101 rat11       [V101,T18] (  3,  6   )     int  ->  edi         "ReplaceWithLclVar is creating a new local variable"
+;  V96 rat6         [V96,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat7         [V97,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V98 rat8         [V98,T18] (  3,  6   )     int  ->  edi         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 92
 
@@ -168,7 +165,7 @@ G_M10461_IG05:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      gword ptr [ebp-0x58], eax
        ; GC ptr vars +{V11}
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M10461_IG06:        ; bbWeight=1, gcVars=0000000000808010 {V00 V01 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10461_IG06:        ; bbWeight=1, gcVars=0000000000408010 {V00 V01 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      ecx, eax
        ; gcrRegs +[ecx]
        call     [<unknown method>]
@@ -217,13 +214,13 @@ G_M10461_IG11:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      dword ptr [ebp-0x1C], 0
        jmp      SHORT G_M10461_IG14
                        ;; size=9 bbWeight=1 PerfScore 3.00
-G_M10461_IG12:        ; bbWeight=1, gcVars=0000000000808010 {V00 V01 V11}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars +{V11 V23}
+G_M10461_IG12:        ; bbWeight=1, gcVars=0000000000408010 {V00 V01 V11}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars +{V11}
        mov      ecx, gword ptr [ebp-0x58]
        ; gcrRegs +[ecx]
        test     ecx, ecx
        je       SHORT G_M10461_IG13
-       ; GC ptr vars -{V11 V23}
+       ; GC ptr vars -{V11}
        call     [<unknown method>]
        ; gcrRegs -[ecx]
                        ;; size=13 bbWeight=1 PerfScore 5.25
@@ -324,21 +321,21 @@ G_M10461_IG22:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs -[eax]
        jmp      SHORT G_M10461_IG26
                        ;; size=49 bbWeight=1 PerfScore 14.50
-G_M10461_IG23:        ; bbWeight=1, gcVars=0000000400008010 {V00 V01 V58}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10461_IG23:        ; bbWeight=1, gcVars=0000000100008010 {V00 V01 V58}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[edi]
-       ; GC ptr vars +{V58}
+       ; GC ptr vars +{V32 V58}
        cmp      edi, 100
        jbe      SHORT G_M10461_IG25
                        ;; size=5 bbWeight=1 PerfScore 1.25
 G_M10461_IG24:        ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[esi]
-       ; GC ptr vars -{V01 V58}
+       ; GC ptr vars -{V01 V32 V58}
        call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M10461_IG25:        ; bbWeight=1, gcVars=0000000400008010 {V00 V01 V58}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M10461_IG25:        ; bbWeight=1, gcVars=0000000100008010 {V00 V01 V58}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs +[esi]
-       ; GC ptr vars +{V01 V58}
+       ; GC ptr vars +{V01 V32 V58}
        mov      ecx, edi
        not      ecx
        shr      ecx, 31
@@ -356,7 +353,7 @@ G_M10461_IG25:        ; bbWeight=1, gcVars=0000000400008010 {V00 V01 V58}, gcref
                        ;; size=36 bbWeight=1 PerfScore 10.00
 G_M10461_IG26:        ; bbWeight=1, gcVars=0000000000008010 {V00 V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref
        ; byrRegs -[ecx]
-       ; GC ptr vars -{V58}
+       ; GC ptr vars -{V32 V58}
        mov      dword ptr [ebp-0x44], eax
        xor      ecx, ecx
        mov      dword ptr [ebp-0x28], ecx

+0 (0.00%) : 202620.dasm - System.Collections.Generic.HashSet1[System.__Canon]:CheckUniqueAndUnfoundElements(System.Collections.Generic.IEnumerable1[System.__Canon],ubyte):System.ValueTuple`2[int,int]:this (Instrumented Tier1)

@@ -10,37 +10,37 @@
 ;
 ;  V00 this         [V00,T05] ( 10, 24   )     ref  ->  [ebp-0x44]  do-not-enreg[H] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.__Canon]>
 ;  V01 RetBuf       [V01,T17] (  6,  6   )   byref  ->  [ebp-0x48]  EH-live single-def
-;  V02 arg1         [V02,T46] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V03 arg2         [V03,T37] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
-;  V04 loc0         [V04,T41] (  3,  3   )     int  ->  edi        
+;  V02 arg1         [V02,T44] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V03 arg2         [V03,T35] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
+;  V04 loc0         [V04,T39] (  3,  3   )     int  ->  edi        
 ;* V05 loc1         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V07 loc3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
 ;  V08 loc4         [V08,T13] (  4, 10   )     int  ->  [ebp-0x28]  do-not-enreg[Z] EH-live
 ;  V09 loc5         [V09,T14] (  4, 10   )     int  ->  [ebp-0x2C]  do-not-enreg[Z] EH-live
-;  V10 loc6         [V10,T42] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
+;  V10 loc6         [V10,T40] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
 ;  V11 loc7         [V11,T18] (  8,  7   )     ref  ->  [ebp-0x4C]  class-hnd EH-live spill-single-def <<unknown class>>
 ;* V12 loc8         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;* V13 loc9         [V13    ] (  0,  0   )  struct ( 8) zero-ref    <System.Span`1[int]>
 ;  V14 loc10        [V14,T07] (  9, 22   )     ref  ->  [ebp-0x50]  class-hnd EH-live spill-single-def <<unknown class>>
 ;* V15 loc11        [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V16 loc12        [V16,T02] (  6, 32   )     int  ->  [ebp-0x34]  spill-single-def
-;  V17 loc13        [V17,T43] (  2,  2   )     int  ->  ecx        
+;  V17 loc13        [V17,T41] (  2,  2   )     int  ->  ecx        
 ;* V18 tmp1         [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V19 tmp2         [V19    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V20 tmp3         [V20    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V21 tmp4         [V21    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] <System.Collections.Generic.BitHelper>
 ;* V22 tmp5         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V23 tmp6         [V23,T33] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
+;  V23 tmp6         [V23,T31] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
 ;* V24 tmp7         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp8         [V25,T03] (  3, 32   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V26 tmp9         [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V27 tmp10        [V27    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V28 tmp11        [V28    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V29 tmp12        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V30 tmp13        [V30,T34] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V30 tmp13        [V30,T32] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V31 tmp14        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V32 tmp15        [V32,T35] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V32 tmp15        [V32,T33] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V33 tmp16        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V34 tmp17        [V34    ] (  0,  0   )     ref  ->  zero-ref    single-def "handle histogram profile tmp"
 ;* V35 tmp18        [V35    ] (  0,  0   )     ref  ->  zero-ref    "handle histogram profile tmp"
@@ -49,14 +49,14 @@
 ;* V38 tmp21        [V38    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V39 tmp22        [V39    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V40 tmp23        [V40,T19] (  8,  7   )     int  ->  edi         "Inline return value spill temp"
-;  V41 tmp24        [V41,T36] (  2,  4   )     int  ->  eax         "Inlining Arg"
+;  V41 tmp24        [V41,T34] (  2,  4   )     int  ->  eax         "Inlining Arg"
 ;  V42 tmp25        [V42,T20] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V43 tmp26        [V43    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V44 tmp27        [V44    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V45 tmp28        [V45    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V46 tmp29        [V46    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V47 tmp30        [V47    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V48 tmp31        [V48,T38] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V48 tmp31        [V48,T36] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V49 tmp32        [V49,T09] (  3, 12   )     int  ->  ecx         "Inline stloc first use temp"
 ;* V50 tmp33        [V50    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
 ;  V51 tmp34        [V51,T10] (  3, 12   )     int  ->  ecx         "Inline stloc first use temp"
@@ -66,18 +66,18 @@
 ;* V55 tmp38        [V55    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x4)" P-INDEP
 ;* V56 tmp39        [V56    ] (  0,  0   )   byref  ->  zero-ref    "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V57 tmp40        [V57    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x4)" P-INDEP
-;  V58 tmp41        [V58,T39] (  3,  3   )   byref  ->  [ebp-0x54]  spill-single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp41        [V58,T37] (  3,  3   )   byref  ->  [ebp-0x54]  spill-single-def "field V18._reference (fldOffset=0x0)" P-INDEP
 ;* V59 tmp42        [V59    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x4)" P-INDEP
 ;* V60 tmp43        [V60    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
 ;* V61 tmp44        [V61    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x4)" P-INDEP
-;  V62 tmp45        [V62,T48] (  2,  2   )     int  ->  eax         "field V26.Item1 (fldOffset=0x0)" P-INDEP
-;  V63 tmp46        [V63,T49] (  2,  2   )     int  ->  edx         "field V26.Item2 (fldOffset=0x4)" P-INDEP
+;  V62 tmp45        [V62,T46] (  2,  2   )     int  ->  eax         "field V26.Item1 (fldOffset=0x0)" P-INDEP
+;  V63 tmp46        [V63,T47] (  2,  2   )     int  ->  edx         "field V26.Item2 (fldOffset=0x4)" P-INDEP
 ;* V64 tmp47        [V64    ] (  0,  0   )   byref  ->  zero-ref    "field V28._reference (fldOffset=0x0)" P-INDEP
 ;* V65 tmp48        [V65    ] (  0,  0   )     int  ->  zero-ref    "field V28._length (fldOffset=0x4)" P-INDEP
-;* V66 tmp49        [V66,T53] (  0,  0   )     int  ->  zero-ref    "field V33.Item1 (fldOffset=0x0)" P-INDEP
-;  V67 tmp50        [V67,T50] (  2,  2   )     int  ->  ecx         "field V33.Item2 (fldOffset=0x4)" P-INDEP
-;  V68 tmp51        [V68,T47] (  2,  2   )   byref  ->  edi         "field V43._reference (fldOffset=0x0)" P-INDEP
-;  V69 tmp52        [V69,T51] (  2,  2   )     int  ->  eax         "field V43._length (fldOffset=0x4)" P-INDEP
+;* V66 tmp49        [V66,T50] (  0,  0   )     int  ->  zero-ref    "field V33.Item1 (fldOffset=0x0)" P-INDEP
+;  V67 tmp50        [V67,T48] (  2,  2   )     int  ->  ecx         "field V33.Item2 (fldOffset=0x4)" P-INDEP
+;  V68 tmp51        [V68,T45] (  2,  2   )   byref  ->  edi         "field V43._reference (fldOffset=0x0)" P-INDEP
+;  V69 tmp52        [V69,T49] (  2,  2   )     int  ->  eax         "field V43._length (fldOffset=0x4)" P-INDEP
 ;* V70 tmp53        [V70    ] (  0,  0   )   byref  ->  zero-ref    "field V44._reference (fldOffset=0x0)" P-INDEP
 ;* V71 tmp54        [V71    ] (  0,  0   )     int  ->  zero-ref    "field V44._length (fldOffset=0x4)" P-INDEP
 ;* V72 tmp55        [V72    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V45._reference (fldOffset=0x0)" P-INDEP
@@ -90,31 +90,28 @@
 ;* V79 tmp62        [V79    ] (  0,  0   )     int  ->  zero-ref    "field V52._length (fldOffset=0x4)" P-INDEP
 ;  V80 tmp63        [V80,T15] (  3,  9   )   byref  ->  edi         single-def "V07.[000..004)"
 ;  V81 tmp64        [V81,T16] (  3,  9   )     int  ->  [ebp-0x38]  spill-single-def "V07.[004..008)"
-;  V82 tmp65        [V82,T40] (  3,  3   )   byref  ->  registers   "V21.[000..004)"
-;  V83 tmp66        [V83,T44] (  3,  3   )     int  ->  registers   "V21.[004..008)"
+;  V82 tmp65        [V82,T38] (  3,  3   )   byref  ->  registers   "V21.[000..004)"
+;  V83 tmp66        [V83,T42] (  3,  3   )     int  ->  registers   "V21.[004..008)"
 ;  V84 tmp67        [V84,T04] (  2, 32   )     ref  ->  edx         "argument with side effect"
 ;  V85 GsCookie     [V85    ] (  1,  1   )     int  ->  [ebp-0x58]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V86 EHSlots      [V86    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
-;  V87 LocAllocSP   [V87,T54] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
+;  V87 LocAllocSP   [V87,T51] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V88 cse0         [V88,T11] (  3, 12   )     int  ->  [ebp-0x3C]  spill-single-def "CSE - moderate"
-;  V89 cse1         [V89,T31] (  4,  4   )     ref  ->  esi         multi-def "CSE - moderate"
+;  V89 cse1         [V89,T29] (  4,  4   )     ref  ->  esi         multi-def "CSE - moderate"
 ;  V90 cse2         [V90,T08] (  6, 13   )     ref  ->  esi         multi-def "CSE - moderate"
-;  V91 cse3         [V91,T32] (  4,  4   )     ref  ->  edi         multi-def "CSE - conservative"
-;  V92 cse4         [V92,T26] (  5,  5   )     ref  ->  edi         multi-def "CSE - conservative"
+;  V91 cse3         [V91,T30] (  4,  4   )     ref  ->  edi         multi-def "CSE - conservative"
+;  V92 cse4         [V92,T25] (  5,  5   )     ref  ->  edi         multi-def "CSE - conservative"
 ;  V93 cse5         [V93,T12] (  3, 12   )     int  ->  [ebp-0x40]  spill-single-def "CSE - moderate"
-;  V94 cse6         [V94,T45] (  3,  3   )     int  ->  edi         "CSE - conservative"
-;  V95 rat0         [V95,T27] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 cse6         [V94,T43] (  3,  3   )     int  ->  edi         "CSE - conservative"
+;  V95 rat0         [V95,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V96 rat1         [V96,T22] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V97 rat2         [V97,T28] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat2         [V97,T27] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V98 rat3         [V98,T23] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V99 rat4         [V99,T29] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V99 rat4         [V99,T28] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V100 rat5        [V100,T24] (  3,  5.60)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V101 rat6        [V101,T30] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V102 rat7        [V102,T52] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V103 rat8        [V103,T25] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V104 rat9        [V104,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V105 rat10       [V105,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V106 rat11       [V106,T21] (  3,  6   )     int  ->  edi         "ReplaceWithLclVar is creating a new local variable"
+;  V101 rat6        [V101,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V102 rat7        [V102,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V103 rat8        [V103,T21] (  3,  6   )     int  ->  edi         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 80
 
@@ -366,7 +363,7 @@ G_M33533_IG23:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs -[eax]
        jmp      SHORT G_M33533_IG27
                        ;; size=49 bbWeight=1 PerfScore 14.50
-G_M33533_IG24:        ; bbWeight=1, gcVars=0000008000020020 {V00 V01 V58}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33533_IG24:        ; bbWeight=1, gcVars=0000002000020020 {V00 V01 V58}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[edi]
        ; GC ptr vars +{V58}
        mov      ecx, 0xD1FFAB1E
@@ -380,7 +377,7 @@ G_M33533_IG25:        ; bbWeight=0, gcVars=0000000000000020 {V00}, gcrefRegs=000
        call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33533_IG26:        ; bbWeight=1, gcVars=0000008000020020 {V00 V01 V58}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M33533_IG26:        ; bbWeight=1, gcVars=0000002000020020 {V00 V01 V58}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs +[esi]
        ; GC ptr vars +{V01 V17 V58}
        mov      ecx, edi

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-15 (-4.02%) : 99311.dasm - System.Data.DataRowComparer:CompareEquatableArraySystem.__Canon:ubyte (FullOpts)

@@ -16,7 +16,7 @@
 ;  V06 tmp1         [V06,T05] (  6,  8   )   byref  ->  ebx        
 ;* V07 tmp2         [V07    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V08 tmp3         [V08,T06] (  6,  8   )     int  ->  [ebp-0x1C]  "VirtualCall with runtime lookup"
-;  V09 tmp4         [V09,T09] (  4,  4   )     int  ->  ebx        
+;  V09 tmp4         [V09,T09] (  2,  3.96)     int  ->  ecx        
 ;  V10 tmp5         [V10,T07] (  4,  8   )     ref  ->  ebx         "argument with side effect"
 ;  V11 cse0         [V11,T08] (  5,  7   )     int  ->  [ebp-0x20]  spill-single-def "CSE - moderate"
 ;  V12 rat0         [V12,T02] (  3, 11.09)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
@@ -120,10 +120,10 @@ G_M22994_IG10:        ; bbWeight=1.98, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        nop      
        call     [eax]
        ; gcrRegs -[ecx edx ebx]
-       xor      ebx, ebx
+       xor      ecx, ecx
        test     eax, eax
-       sete     bl
-       test     ebx, ebx
+       sete     cl
+       test     ecx, ecx
        jne      G_M22994_IG23
                        ;; size=34 bbWeight=1.98 PerfScore 24.26
 G_M22994_IG11:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
@@ -161,11 +161,11 @@ G_M22994_IG14:        ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        cmp      gword ptr [ebp-0x18], 0
        jne      SHORT G_M22994_IG16
        cmp      eax, dword ptr [esi+0x04]
-       jae      G_M22994_IG25
+       jae      SHORT G_M22994_IG25
        mov      dword ptr [ebp-0x14], eax
        cmp      gword ptr [esi+4*eax+0x08], 0
        je       SHORT G_M22994_IG20
-                       ;; size=33 bbWeight=0.02 PerfScore 0.31
+                       ;; size=29 bbWeight=0.02 PerfScore 0.31
 G_M22994_IG15:        ; bbWeight=0.01, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[ecx esi edi]
        ; byrRegs -[ebx]
@@ -207,19 +207,16 @@ G_M22994_IG19:        ; bbWeight=0.02, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        nop      
        call     [eax]
        ; gcrRegs -[ecx edx ebx]
-       xor      ebx, ebx
        test     eax, eax
-       sete     bl
-       test     ebx, ebx
        mov      edx, dword ptr [ebp-0x20]
-       jne      SHORT G_M22994_IG23
-                       ;; size=38 bbWeight=0.02 PerfScore 0.35
-G_M22994_IG20:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       je       SHORT G_M22994_IG23
+                       ;; size=31 bbWeight=0.02 PerfScore 0.32
+G_M22994_IG20:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      eax, dword ptr [ebp-0x14]
        inc      eax
        cmp      edx, eax
-       jg       G_M22994_IG13
-                       ;; size=12 bbWeight=0.04 PerfScore 0.10
+       jg       SHORT G_M22994_IG13
+                       ;; size=8 bbWeight=0.04 PerfScore 0.10
 G_M22994_IG21:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi edi]
        mov      eax, 1
@@ -248,6 +245,6 @@ G_M22994_IG25:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 373, prolog size 24, PerfScore 131.30, instruction count 134, allocated bytes for code 373 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
+; Total bytes of code 358, prolog size 24, PerfScore 131.27, instruction count 131, allocated bytes for code 358 (MethodHash=f2dda62d) for method System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
 ; ============================================================
 

-7 (-1.15%) : 157676.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -26,7 +26,7 @@
 ;* V15 tmp9         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V17 tmp11        [V17,T00] (  8, 24   )     ref  ->  registers   class-hnd exact "Inlining Arg" <System.String>
-;  V18 tmp12        [V18,T18] (  2,  0.04)   ubyte  ->  edx         "Inline return value spill temp"
+;* V18 tmp12        [V18,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V19 tmp13        [V19    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -254,12 +254,9 @@ G_M10809_IG18:        ; bbWeight=0.02, gcVars=00000300 {V02 V03}, gcrefRegs=0000
        call     [<unknown method>]
        ; gcrRegs -[eax edx]
        ; gcr arg pop 1
-       xor      edx, edx
        test     eax, eax
-       sete     dl
-       test     edx, edx
-       je       G_M10809_IG26
-                       ;; size=46 bbWeight=0.02 PerfScore 0.31
+       jne      G_M10809_IG26
+                       ;; size=39 bbWeight=0.02 PerfScore 0.28
 G_M10809_IG19:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        cmp      dword ptr [ebp-0x14], 0xFFFF
        ja       G_M10809_IG27
@@ -418,6 +415,6 @@ G_M10809_IG27:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        int3     
                        ;; size=64 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 609, prolog size 13, PerfScore 122.57, instruction count 190, allocated bytes for code 609 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 602, prolog size 13, PerfScore 122.54, instruction count 187, allocated bytes for code 602 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 

-7 (-1.14%) : 160975.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)

@@ -26,7 +26,7 @@
 ;* V15 tmp9         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V16 tmp10        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V17 tmp11        [V17,T00] (  8, 24   )     ref  ->  registers   class-hnd exact "Inlining Arg" <System.String>
-;  V18 tmp12        [V18,T18] (  2,  0.04)   ubyte  ->  edx         "Inline return value spill temp"
+;* V18 tmp12        [V18,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V19 tmp13        [V19    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V20 tmp14        [V20    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V21 tmp15        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
@@ -256,12 +256,9 @@ G_M10809_IG18:        ; bbWeight=0.02, gcVars=00000300 {V02 V03}, gcrefRegs=0000
        call     [<unknown method>]
        ; gcrRegs -[eax edx]
        ; gcr arg pop 1
-       xor      edx, edx
        test     eax, eax
-       sete     dl
-       test     edx, edx
-       je       G_M10809_IG26
-                       ;; size=46 bbWeight=0.02 PerfScore 0.31
+       jne      G_M10809_IG26
+                       ;; size=39 bbWeight=0.02 PerfScore 0.28
 G_M10809_IG19:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        cmp      dword ptr [ebp-0x14], 0xFFFF
        ja       G_M10809_IG27
@@ -420,6 +417,6 @@ G_M10809_IG27:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        int3     
                        ;; size=64 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 614, prolog size 18, PerfScore 123.82, instruction count 192, allocated bytes for code 614 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
+; Total bytes of code 607, prolog size 18, PerfScore 123.79, instruction count 189, allocated bytes for code 607 (MethodHash=6068d5c6) for method System.Net.Cookie:set_Port(System.String):this (FullOpts)
 ; ============================================================
 

+0 (0.00%) : 79241.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)

@@ -10,42 +10,42 @@
 ;
 ;  V00 this         [V00,T04] ( 10, 24   )     ref  ->  [ebp-0x48]  do-not-enreg[H] this class-hnd EH-live single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[System.__Canon,int]]>
 ;  V01 RetBuf       [V01,T14] (  6,  6   )   byref  ->  [ebp-0x4C]  EH-live single-def
-;  V02 arg1         [V02,T40] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
-;  V03 arg2         [V03,T31] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
-;  V04 loc0         [V04,T35] (  3,  3   )     int  ->  edi        
+;  V02 arg1         [V02,T38] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.ValueTuple`2[System.__Canon,int]]>
+;  V03 arg2         [V03,T29] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
+;  V04 loc0         [V04,T33] (  3,  3   )     int  ->  edi        
 ;* V05 loc1         [V05    ] (  0,  0   )     int  ->  zero-ref   
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V07 loc3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op <System.Collections.Generic.BitHelper>
 ;  V08 loc4         [V08,T10] (  4, 10   )     int  ->  [ebp-0x28]  do-not-enreg[Z] EH-live
 ;  V09 loc5         [V09,T11] (  4, 10   )     int  ->  [ebp-0x2C]  do-not-enreg[Z] EH-live
-;  V10 loc6         [V10,T36] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
-;  V11 loc7         [V11,T22] (  6,  5   )     ref  ->  [ebp-0x50]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V10 loc6         [V10,T34] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
+;  V11 loc7         [V11,T21] (  6,  5   )     ref  ->  [ebp-0x50]  class-hnd EH-live spill-single-def <<unknown class>>
 ;  V12 loc8         [V12    ] (  1,  1   )  struct ( 8) [ebp-0x38]  do-not-enreg[XS] must-init addr-exposed <System.ValueTuple`2[System.__Canon,int]>
 ;* V13 loc9         [V13    ] (  0,  0   )  struct ( 8) zero-ref    <System.Span`1[int]>
 ;  V14 loc10        [V14,T06] (  7, 20   )     ref  ->  [ebp-0x54]  class-hnd EH-live spill-single-def <<unknown class>>
 ;  V15 loc11        [V15    ] (  2, 16   )  struct ( 8) [ebp-0x40]  do-not-enreg[XS] must-init addr-exposed <System.ValueTuple`2[System.__Canon,int]>
 ;  V16 loc12        [V16,T03] (  5, 28   )     int  ->  eax        
-;  V17 loc13        [V17,T37] (  2,  2   )     int  ->  ecx        
+;  V17 loc13        [V17,T35] (  2,  2   )     int  ->  ecx        
 ;* V18 tmp1         [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V19 tmp2         [V19    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V20 tmp3         [V20    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V21 tmp4         [V21    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] <System.Collections.Generic.BitHelper>
 ;* V22 tmp5         [V22    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V23 tmp6         [V23,T27] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
+;  V23 tmp6         [V23,T25] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
 ;* V24 tmp7         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp8         [V25,T02] (  3, 32   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V26 tmp9         [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V27 tmp10        [V27    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.BitHelper>
 ;* V28 tmp11        [V28    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V29 tmp12        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V30 tmp13        [V30,T28] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V30 tmp13        [V30,T26] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V31 tmp14        [V31    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V32 tmp15        [V32,T29] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V32 tmp15        [V32,T27] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V33 tmp16        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V34 tmp17        [V34    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V35 tmp18        [V35    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V36 tmp19        [V36,T15] (  8,  7   )     int  ->  edi         "Inline return value spill temp"
-;  V37 tmp20        [V37,T30] (  2,  4   )     int  ->  eax         "Inlining Arg"
+;  V37 tmp20        [V37,T28] (  2,  4   )     int  ->  eax         "Inlining Arg"
 ;  V38 tmp21        [V38,T16] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V39 tmp22        [V39    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V40 tmp23        [V40    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -54,7 +54,7 @@
 ;* V43 tmp26        [V43    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp27        [V44    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V45 tmp28        [V45    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V46 tmp29        [V46,T32] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V46 tmp29        [V46,T30] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V47 tmp30        [V47,T07] (  3, 12   )     int  ->  edx         "Inline stloc first use temp"
 ;* V48 tmp31        [V48    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Span`1[int]>
 ;* V49 tmp32        [V49    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -72,18 +72,18 @@
 ;* V61 tmp44        [V61    ] (  0,  0   )     int  ->  zero-ref    "field V13._length (fldOffset=0x4)" P-INDEP
 ;  V62 tmp45        [V62    ] (  2, 16   )     ref  ->  [ebp-0x40]  do-not-enreg[X] addr-exposed "field V15.Item1 (fldOffset=0x0)" P-DEP
 ;  V63 tmp46        [V63    ] (  2, 16   )     int  ->  [ebp-0x3C]  do-not-enreg[X] addr-exposed "field V15.Item2 (fldOffset=0x4)" P-DEP
-;  V64 tmp47        [V64,T33] (  3,  3   )   byref  ->  [ebp-0x58]  spill-single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+;  V64 tmp47        [V64,T31] (  3,  3   )   byref  ->  [ebp-0x58]  spill-single-def "field V18._reference (fldOffset=0x0)" P-INDEP
 ;* V65 tmp48        [V65    ] (  0,  0   )     int  ->  zero-ref    "field V18._length (fldOffset=0x4)" P-INDEP
 ;* V66 tmp49        [V66    ] (  0,  0   )   byref  ->  zero-ref    "field V20._reference (fldOffset=0x0)" P-INDEP
 ;* V67 tmp50        [V67    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x4)" P-INDEP
-;  V68 tmp51        [V68,T42] (  2,  2   )     int  ->  eax         "field V26.Item1 (fldOffset=0x0)" P-INDEP
-;  V69 tmp52        [V69,T43] (  2,  2   )     int  ->  edx         "field V26.Item2 (fldOffset=0x4)" P-INDEP
+;  V68 tmp51        [V68,T40] (  2,  2   )     int  ->  eax         "field V26.Item1 (fldOffset=0x0)" P-INDEP
+;  V69 tmp52        [V69,T41] (  2,  2   )     int  ->  edx         "field V26.Item2 (fldOffset=0x4)" P-INDEP
 ;* V70 tmp53        [V70    ] (  0,  0   )   byref  ->  zero-ref    "field V28._reference (fldOffset=0x0)" P-INDEP
 ;* V71 tmp54        [V71    ] (  0,  0   )     int  ->  zero-ref    "field V28._length (fldOffset=0x4)" P-INDEP
-;* V72 tmp55        [V72,T47] (  0,  0   )     int  ->  zero-ref    "field V33.Item1 (fldOffset=0x0)" P-INDEP
-;  V73 tmp56        [V73,T44] (  2,  2   )     int  ->  ecx         "field V33.Item2 (fldOffset=0x4)" P-INDEP
-;  V74 tmp57        [V74,T41] (  2,  2   )   byref  ->  edi         "field V39._reference (fldOffset=0x0)" P-INDEP
-;  V75 tmp58        [V75,T45] (  2,  2   )     int  ->  eax         "field V39._length (fldOffset=0x4)" P-INDEP
+;* V72 tmp55        [V72,T44] (  0,  0   )     int  ->  zero-ref    "field V33.Item1 (fldOffset=0x0)" P-INDEP
+;  V73 tmp56        [V73,T42] (  2,  2   )     int  ->  ecx         "field V33.Item2 (fldOffset=0x4)" P-INDEP
+;  V74 tmp57        [V74,T39] (  2,  2   )   byref  ->  edi         "field V39._reference (fldOffset=0x0)" P-INDEP
+;  V75 tmp58        [V75,T43] (  2,  2   )     int  ->  eax         "field V39._length (fldOffset=0x4)" P-INDEP
 ;* V76 tmp59        [V76    ] (  0,  0   )   byref  ->  zero-ref    "field V40._reference (fldOffset=0x0)" P-INDEP
 ;* V77 tmp60        [V77    ] (  0,  0   )     int  ->  zero-ref    "field V40._length (fldOffset=0x4)" P-INDEP
 ;* V78 tmp61        [V78    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V41._reference (fldOffset=0x0)" P-INDEP
@@ -96,25 +96,22 @@
 ;* V85 tmp68        [V85    ] (  0,  0   )     int  ->  zero-ref    "field V52._length (fldOffset=0x4)" P-INDEP
 ;  V86 tmp69        [V86,T12] (  3,  9   )   byref  ->  edi         single-def "V07.[000..004)"
 ;  V87 tmp70        [V87,T13] (  3,  9   )     int  ->  [ebp-0x44]  spill-single-def "V07.[004..008)"
-;  V88 tmp71        [V88,T34] (  3,  3   )   byref  ->  registers   "V21.[000..004)"
-;  V89 tmp72        [V89,T38] (  3,  3   )     int  ->  registers   "V21.[004..008)"
+;  V88 tmp71        [V88,T32] (  3,  3   )   byref  ->  registers   "V21.[000..004)"
+;  V89 tmp72        [V89,T36] (  3,  3   )     int  ->  registers   "V21.[004..008)"
 ;  V90 GsCookie     [V90    ] (  1,  1   )     int  ->  [ebp-0x5C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V91 EHSlots      [V91    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] addr-exposed "lvaShadowSPslotsVar"
-;  V92 LocAllocSP   [V92,T48] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
+;  V92 LocAllocSP   [V92,T45] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V93 cse0         [V93,T09] (  3, 12   )     int  ->  ecx         "CSE - moderate"
-;  V94 cse1         [V94,T39] (  3,  3   )     int  ->  edi         "CSE - conservative"
-;  V95 rat0         [V95,T23] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 cse1         [V94,T37] (  3,  3   )     int  ->  edi         "CSE - conservative"
+;  V95 rat0         [V95,T22] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V96 rat1         [V96,T18] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V97 rat2         [V97,T24] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat2         [V97,T23] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V98 rat3         [V98,T19] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V99 rat4         [V99,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V99 rat4         [V99,T24] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V100 rat5        [V100,T20] (  3,  5.60)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V101 rat6        [V101,T26] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V102 rat7        [V102,T46] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V103 rat8        [V103,T21] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V104 rat9        [V104,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V105 rat10       [V105,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V106 rat11       [V106,T17] (  3,  6   )     int  ->  edi         "ReplaceWithLclVar is creating a new local variable"
+;  V101 rat6        [V101,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V102 rat7        [V102,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V103 rat8        [V103,T17] (  3,  6   )     int  ->  edi         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 84
 
@@ -174,7 +171,7 @@ G_M10461_IG05:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      gword ptr [ebp-0x50], eax
        ; GC ptr vars +{V11}
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M10461_IG06:        ; bbWeight=1, gcVars=0000000000404010 {V00 V01 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10461_IG06:        ; bbWeight=1, gcVars=0000000000204010 {V00 V01 V11}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      ecx, eax
        ; gcrRegs +[ecx]
        call     [<unknown method>]
@@ -223,7 +220,7 @@ G_M10461_IG11:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      dword ptr [ebp-0x1C], 0
        jmp      SHORT G_M10461_IG14
                        ;; size=9 bbWeight=1 PerfScore 3.00
-G_M10461_IG12:        ; bbWeight=1, gcVars=0000000000404010 {V00 V01 V11}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10461_IG12:        ; bbWeight=1, gcVars=0000000000204010 {V00 V01 V11}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars +{V11}
        mov      ecx, gword ptr [ebp-0x50]
        ; gcrRegs +[ecx]
@@ -330,7 +327,7 @@ G_M10461_IG22:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs -[eax]
        jmp      SHORT G_M10461_IG27
                        ;; size=49 bbWeight=1 PerfScore 14.50
-G_M10461_IG23:        ; bbWeight=1, gcVars=0000000200004010 {V00 V01 V64}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M10461_IG23:        ; bbWeight=1, gcVars=0000000080004010 {V00 V01 V64}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[edi]
        ; GC ptr vars +{V64}
        mov      eax, bword ptr [ebp-0x58]
@@ -345,7 +342,7 @@ G_M10461_IG24:        ; bbWeight=0, gcVars=0000000000000010 {V00}, gcrefRegs=000
        call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M10461_IG25:        ; bbWeight=1, gcVars=0000000200004010 {V00 V01 V64}, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, gcvars, byref, isz
+G_M10461_IG25:        ; bbWeight=1, gcVars=0000000080004010 {V00 V01 V64}, gcrefRegs=00000040 {esi}, byrefRegs=00000001 {eax}, gcvars, byref, isz
        ; gcrRegs +[esi]
        ; byrRegs +[eax]
        ; GC ptr vars +{V01 V14 V64}

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

@@ -10,14 +10,14 @@
 ;
 ;  V00 this         [V00,T06] (  8, 22   )     ref  ->  [ebp-0x40]  do-not-enreg[H] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 RetBuf       [V01,T16] (  6,  6   )   byref  ->  [ebp-0x44]  EH-live single-def
-;  V02 arg1         [V02,T40] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V03 arg2         [V03,T33] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
+;  V02 arg1         [V02,T38] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V03 arg2         [V03,T31] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
 ;* V04 loc0         [V04    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V05 loc1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V07 loc3         [V07,T11] (  4, 10   )     int  ->  [ebp-0x28]  do-not-enreg[Z] EH-live
 ;  V08 loc4         [V08,T12] (  4, 10   )     int  ->  [ebp-0x2C]  do-not-enreg[Z] EH-live
-;  V09 loc5         [V09,T37] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
+;  V09 loc5         [V09,T35] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
 ;  V10 loc6         [V10,T05] ( 13, 27   )     ref  ->  [ebp-0x48]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V11 loc7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V12 loc8         [V12,T04] (  5, 28   )     int  ->  eax        
@@ -26,20 +26,20 @@
 ;* V15 tmp2         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V16 tmp3         [V16    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;* V17 tmp4         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T29] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
+;  V18 tmp5         [V18,T27] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
 ;* V19 tmp6         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V20 tmp7         [V20,T02] (  3, 32   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V21 tmp8         [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V22 tmp9         [V22    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;* V23 tmp10        [V23    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V24 tmp11        [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T30] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T28] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V27 tmp14        [V27,T31] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V27 tmp14        [V27,T29] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V28 tmp15        [V28    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp16        [V29,T15] (  8,  8   )     int  ->  [ebp-0x34]  "Inline return value spill temp"
 ;  V30 tmp17        [V30,T18] (  3,  6   )     int  ->  eax         "Inlining Arg"
-;  V31 tmp18        [V31,T32] (  2,  4   )     int  ->  edi         "Inlining Arg"
+;  V31 tmp18        [V31,T30] (  2,  4   )     int  ->  edi         "Inlining Arg"
 ;  V32 tmp19        [V32,T17] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp20        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp21        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
@@ -48,24 +48,24 @@
 ;* V37 tmp24        [V37    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V38 tmp25        [V38    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V39 tmp26        [V39    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V40 tmp27        [V40,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V40 tmp27        [V40,T32] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V41 tmp28        [V41,T08] (  3, 12   )     int  ->  edx         "Inline stloc first use temp"
 ;  V42 tmp29        [V42,T09] (  3, 12   )     int  ->  ecx         "Inline stloc first use temp"
 ;  V43 tmp30        [V43,T07] (  3, 24   )   byref  ->  edx         "dup spill"
 ;* V44 tmp31        [V44    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V45 tmp32        [V45    ] (  0,  0   )     int  ->  zero-ref    single-def "field V05._length (fldOffset=0x4)" P-INDEP
-;  V46 tmp33        [V46,T35] (  3,  3   )   byref  ->  edi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V46 tmp33        [V46,T33] (  3,  3   )   byref  ->  edi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V47 tmp34        [V47    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x4)" P-INDEP
 ;* V48 tmp35        [V48    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V49 tmp36        [V49    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V50 tmp37        [V50,T42] (  2,  2   )     int  ->  eax         single-def "field V21.Item1 (fldOffset=0x0)" P-INDEP
-;  V51 tmp38        [V51,T43] (  2,  2   )     int  ->  edx         single-def "field V21.Item2 (fldOffset=0x4)" P-INDEP
+;  V50 tmp37        [V50,T40] (  2,  2   )     int  ->  eax         single-def "field V21.Item1 (fldOffset=0x0)" P-INDEP
+;  V51 tmp38        [V51,T41] (  2,  2   )     int  ->  edx         single-def "field V21.Item2 (fldOffset=0x4)" P-INDEP
 ;* V52 tmp39        [V52    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V53 tmp40        [V53    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x4)" P-INDEP
-;* V54 tmp41        [V54,T47] (  0,  0   )     int  ->  zero-ref    single-def "field V28.Item1 (fldOffset=0x0)" P-INDEP
-;  V55 tmp42        [V55,T44] (  2,  2   )     int  ->  eax         single-def "field V28.Item2 (fldOffset=0x4)" P-INDEP
-;  V56 tmp43        [V56,T41] (  2,  2   )   byref  ->  edi         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V57 tmp44        [V57,T45] (  2,  2   )     int  ->  eax         "field V33._length (fldOffset=0x4)" P-INDEP
+;* V54 tmp41        [V54,T44] (  0,  0   )     int  ->  zero-ref    single-def "field V28.Item1 (fldOffset=0x0)" P-INDEP
+;  V55 tmp42        [V55,T42] (  2,  2   )     int  ->  eax         single-def "field V28.Item2 (fldOffset=0x4)" P-INDEP
+;  V56 tmp43        [V56,T39] (  2,  2   )   byref  ->  edi         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V57 tmp44        [V57,T43] (  2,  2   )     int  ->  eax         "field V33._length (fldOffset=0x4)" P-INDEP
 ;* V58 tmp45        [V58    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V59 tmp46        [V59    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x4)" P-INDEP
 ;* V60 tmp47        [V60    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -74,27 +74,24 @@
 ;* V63 tmp50        [V63    ] (  0,  0   )     int  ->  zero-ref    single-def "field V39._length (fldOffset=0x4)" P-INDEP
 ;  V64 tmp51        [V64,T13] (  3,  9   )   byref  ->  edi         single-def "V06.[000..004)"
 ;  V65 tmp52        [V65,T14] (  3,  9   )     int  ->  [ebp-0x38]  spill-single-def "V06.[004..008)"
-;  V66 tmp53        [V66,T36] (  3,  3   )   byref  ->  edi         "V16.[000..004)"
-;  V67 tmp54        [V67,T38] (  3,  3   )     int  ->  eax         "V16.[004..008)"
+;  V66 tmp53        [V66,T34] (  3,  3   )   byref  ->  edi         "V16.[000..004)"
+;  V67 tmp54        [V67,T36] (  3,  3   )     int  ->  eax         "V16.[004..008)"
 ;  V68 tmp55        [V68,T03] (  2, 32   )     ref  ->  edx         "argument with side effect"
 ;  V69 GsCookie     [V69    ] (  1,  1   )     int  ->  [ebp-0x4C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V70 EHSlots      [V70    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-;  V71 LocAllocSP   [V71,T48] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
+;  V71 LocAllocSP   [V71,T45] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V72 cse0         [V72,T10] (  3, 12   )     int  ->  ecx         "CSE - moderate"
-;  V73 cse1         [V73,T39] (  3,  3   )     int  ->  eax         "CSE - conservative"
-;  V74 rat0         [V74,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V73 cse1         [V73,T37] (  3,  3   )     int  ->  eax         "CSE - conservative"
+;  V74 rat0         [V74,T24] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V75 rat1         [V75,T21] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V76 rat2         [V76,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V76 rat2         [V76,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V77 rat3         [V77,T22] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V78 rat4         [V78,T27] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V78 rat4         [V78,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V79 rat5         [V79,T23] (  3,  5.60)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V80 rat6         [V80,T28] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V81 rat7         [V81,T46] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V82 rat8         [V82,T24] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V83 rat9         [V83,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V84 rat10        [V84,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V85 rat11        [V85,T19] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
-;  V86 rat12        [V86,T20] (  3,  6   )     int  ->  [ebp-0x3C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V80 rat6         [V80,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V81 rat7         [V81,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V82 rat8         [V82,T19] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
+;  V83 rat9         [V83,T20] (  3,  6   )     int  ->  [ebp-0x3C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 68
 

+0 (0.00%) : 68139.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  ->  [ebp-0x1C]  this class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]>
 ;  V01 arg1         [V01,T11] (  3, 18   )     ref  ->  ebx         class-hnd single-def <System.Object[]>
 ;  V02 arg2         [V02,T06] (  3, 48   )     int  ->  esi        
-;  V03 loc0         [V03,T17] (  3,  6   )     ref  ->  [ebp-0x20]  class-hnd exact spill-single-def <<unknown class>>
+;  V03 loc0         [V03,T15] (  3,  6   )     ref  ->  [ebp-0x20]  class-hnd exact spill-single-def <<unknown class>>
 ;  V04 loc1         [V04,T12] (  5, 17   )     int  ->  [ebp-0x10] 
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 4) zero-ref    <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[System.__Canon,System.__Canon]>
 ;  V06 loc3         [V06,T02] (  7, 88   )     ref  ->  [ebp-0x24]  class-hnd <<unknown class>>
@@ -21,20 +21,17 @@
 ;* V10 tmp3         [V10    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V11 tmp4         [V11,T04] (  2, 64   )     ref  ->  ecx         class-hnd "Inlining Arg" <System.__Canon>
 ;  V12 tmp5         [V12,T05] (  2, 64   )     ref  ->  edx         class-hnd "Inlining Arg" <System.__Canon>
-;  V13 tmp6         [V13,T16] (  2,  8   )     ref  ->  eax         "field V05._node (fldOffset=0x0)" P-INDEP
+;  V13 tmp6         [V13,T14] (  2,  8   )     ref  ->  eax         "field V05._node (fldOffset=0x0)" P-INDEP
 ;  V14 tmp7         [V14,T07] (  2, 32   )     ref  ->  [ebp-0x28]  spill-single-def "field V07.key (fldOffset=0x0)" P-INDEP
 ;  V15 tmp8         [V15,T08] (  2, 32   )     ref  ->  [ebp-0x2C]  spill-single-def "field V07.value (fldOffset=0x4)" P-INDEP
 ;  V16 cse0         [V16,T13] (  2, 17   )     int  ->  edi         hoist "CSE - moderate"
-;  V17 cse1         [V17,T18] (  3,  6   )     int  ->  [ebp-0x14]  spill-single-def "CSE - moderate"
-;  V18 rat0         [V18,T20] (  3,  4.40)     int  ->  [ebp-0x18]  spill-single-def "Spilling to split statement for tree"
-;  V19 rat1         [V19,T21] (  3,  4   )     int  ->  edi         "runtime lookup"
-;  V20 rat2         [V20,T19] (  3,  5.60)     int  ->  edi         "fgMakeTemp is creating a new local variable"
-;* V21 rat3         [V21,T15] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V22 rat4         [V22,T22] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V23 rat5         [V23,T14] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;* V24 rat6         [V24,T03] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V25 rat7         [V25,T09] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V26 rat8         [V26,T01] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V17 cse1         [V17,T16] (  3,  6   )     int  ->  [ebp-0x14]  spill-single-def "CSE - moderate"
+;  V18 rat0         [V18,T18] (  3,  4.40)     int  ->  [ebp-0x18]  spill-single-def "Spilling to split statement for tree"
+;  V19 rat1         [V19,T19] (  3,  4   )     int  ->  edi         "runtime lookup"
+;  V20 rat2         [V20,T17] (  3,  5.60)     int  ->  edi         "fgMakeTemp is creating a new local variable"
+;* V21 rat3         [V21,T03] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V22 rat4         [V22,T09] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V23 rat5         [V23,T01] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
 ;
 ; Lcl frame size = 32
 
@@ -77,7 +74,7 @@ G_M20844_IG02:        ; bbWeight=1, gcVars=00000400 {V00}, gcrefRegs=00000008 {e
        test     edi, edi
        je       SHORT G_M20844_IG04
                        ;; size=51 bbWeight=1 PerfScore 22.75
-G_M20844_IG03:        ; bbWeight=0.80, gcVars=00020400 {V00 V03}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M20844_IG03:        ; bbWeight=0.80, gcVars=00008400 {V00 V03}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax]
        jmp      SHORT G_M20844_IG05
                        ;; size=2 bbWeight=0.80 PerfScore 1.60
@@ -141,7 +138,7 @@ G_M20844_IG06:        ; bbWeight=16, gcrefRegs=00000009 {eax ebx}, byrefRegs=000
        test     eax, eax
        jne      SHORT G_M20844_IG06
                        ;; size=65 bbWeight=16 PerfScore 324.00
-G_M20844_IG07:        ; bbWeight=4, gcVars=00020400 {V00 V03}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M20844_IG07:        ; bbWeight=4, gcVars=00008400 {V00 V03}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax]
        ; GC ptr vars -{V06}
        mov      edx, dword ptr [ebp-0x10]

realworld.run.windows.x86.checked.mch

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

@@ -139,34 +139,34 @@
 ;  V128 tmp94       [V128,T17] (  6, 16   )     ref  ->  [ebp-0x168]  class-hnd exact "Inlining Arg" <System.String>
 ;  V129 tmp95       [V129,T132] (  3,  3   )     ref  ->  [ebp-0x16C]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
 ;  V130 tmp96       [V130,T28] (  4, 16   )     ref  ->  esi         class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
-;  V131 tmp97       [V131,T29] (  4, 16   )     ref  ->  [ebp-0x170]  class-hnd exact "Inlining Arg" <System.String>
-;  V132 tmp98       [V132,T53] (  6, 10   )     ref  ->  [ebp-0x174]  class-hnd "Inline stloc first use temp" <System.String[]>
+;  V131 tmp97       [V131,T29] (  4, 16   )     ref  ->  edx         class-hnd exact "Inlining Arg" <System.String>
+;  V132 tmp98       [V132,T53] (  6, 10   )     ref  ->  [ebp-0x170]  class-hnd "Inline stloc first use temp" <System.String[]>
 ;  V133 tmp99       [V133,T46] (  8, 12   )     int  ->  registers   "Inline stloc first use temp"
 ;  V134 tmp100      [V134,T18] (  6, 16   )     ref  ->  eax         class-hnd exact "Inlining Arg" <System.String>
 ;* V135 tmp101      [V135    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V136 tmp102      [V136,T133] (  3,  3   )     ref  ->  [ebp-0x178]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
+;  V136 tmp102      [V136,T133] (  3,  3   )     ref  ->  [ebp-0x174]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
 ;* V137 tmp103      [V137    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
 ;* V138 tmp104      [V138    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V139 tmp105      [V139,T188] (  3,  1.50)     ref  ->  [ebp-0x17C]  class-hnd spill-single-def "Inline stloc first use temp" <System.String[]>
+;  V139 tmp105      [V139,T188] (  3,  1.50)     ref  ->  [ebp-0x178]  class-hnd spill-single-def "Inline stloc first use temp" <System.String[]>
 ;  V140 tmp106      [V140,T153] (  4,  2   )     int  ->  [ebp-0x24]  spill-single-def "Inline stloc first use temp"
 ;  V141 tmp107      [V141,T134] (  3,  3   )     ref  ->  ebx         class-hnd single-def "Inlining Arg" <Microsoft.ML.ITransformer>
 ;* V142 tmp108      [V142,T243] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V143 tmp109      [V143,T86] (  3,  5   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <System.String>
 ;* V144 tmp110      [V144    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.ML.IDataView>
 ;* V145 tmp111      [V145    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;  V146 tmp112      [V146,T135] (  3,  3   )     ref  ->  [ebp-0x180]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
-;  V147 tmp113      [V147,T93] (  4,  4   )     ref  ->  [ebp-0x184]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
-;  V148 tmp114      [V148,T110] (  7,  3.50)     ref  ->  [ebp-0x188]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V146 tmp112      [V146,T135] (  3,  3   )     ref  ->  [ebp-0x17C]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
+;  V147 tmp113      [V147,T93] (  4,  4   )     ref  ->  [ebp-0x180]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+;  V148 tmp114      [V148,T110] (  7,  3.50)     ref  ->  [ebp-0x184]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V149 tmp115      [V149,T206] (  3,  1.50)     int  ->  edx         "Inline return value spill temp"
 ;* V150 tmp116      [V150    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline return value spill temp" <int[]>
-;  V151 tmp117      [V151,T94] (  4,  4   )     ref  ->  [ebp-0x18C]  class-hnd spill-single-def "Inlining Arg" <int[]>
-;  V152 tmp118      [V152,T111] (  7,  3.50)     ref  ->  [ebp-0x190]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
+;  V151 tmp117      [V151,T94] (  4,  4   )     ref  ->  [ebp-0x188]  class-hnd spill-single-def "Inlining Arg" <int[]>
+;  V152 tmp118      [V152,T111] (  7,  3.50)     ref  ->  [ebp-0x18C]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
 ;  V153 tmp119      [V153,T207] (  3,  1.50)     int  ->  edx         "Inline return value spill temp"
 ;* V154 tmp120      [V154    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
 ;* V155 tmp121      [V155    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V156 tmp122      [V156,T30] (  4, 16   )     ref  ->  eax         class-hnd exact "Inlining Arg" <System.String>
 ;  V157 tmp123      [V157,T31] (  4, 16   )     ref  ->  edx         class-hnd exact "Inlining Arg" <System.String>
-;  V158 tmp124      [V158,T54] (  6, 10   )     ref  ->  [ebp-0x194]  class-hnd "Inline stloc first use temp" <System.String[]>
+;  V158 tmp124      [V158,T54] (  6, 10   )     ref  ->  [ebp-0x190]  class-hnd "Inline stloc first use temp" <System.String[]>
 ;  V159 tmp125      [V159,T47] (  8, 12   )     int  ->  registers   "Inline stloc first use temp"
 ;  V160 tmp126      [V160,T19] (  6, 16   )     ref  ->  edx         class-hnd "Inlining Arg" <System.__Canon>
 ;* V161 tmp127      [V161    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[int]>
@@ -175,21 +175,21 @@
 ;* V164 tmp130      [V164    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[int]>
 ;* V165 tmp131      [V165    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.ML.IDataView>
 ;* V166 tmp132      [V166    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;  V167 tmp133      [V167,T136] (  3,  3   )     ref  ->  [ebp-0x198]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
-;  V168 tmp134      [V168,T95] (  4,  4   )     ref  ->  [ebp-0x19C]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
-;  V169 tmp135      [V169,T112] (  7,  3.50)     ref  ->  [ebp-0x1A0]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V167 tmp133      [V167,T136] (  3,  3   )     ref  ->  [ebp-0x194]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
+;  V168 tmp134      [V168,T95] (  4,  4   )     ref  ->  [ebp-0x198]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+;  V169 tmp135      [V169,T112] (  7,  3.50)     ref  ->  [ebp-0x19C]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V170 tmp136      [V170,T208] (  3,  1.50)     int  ->  edx         "Inline return value spill temp"
 ;* V171 tmp137      [V171    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline return value spill temp" <int[]>
-;  V172 tmp138      [V172,T96] (  4,  4   )     ref  ->  [ebp-0x1A4]  class-hnd spill-single-def "Inlining Arg" <int[]>
-;  V173 tmp139      [V173,T113] (  7,  3.50)     ref  ->  [ebp-0x1A8]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
+;  V172 tmp138      [V172,T96] (  4,  4   )     ref  ->  [ebp-0x1A0]  class-hnd spill-single-def "Inlining Arg" <int[]>
+;  V173 tmp139      [V173,T113] (  7,  3.50)     ref  ->  [ebp-0x1A4]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
 ;  V174 tmp140      [V174,T209] (  3,  1.50)     int  ->  edx         "Inline return value spill temp"
 ;* V175 tmp141      [V175    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
 ;* V176 tmp142      [V176    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V177 tmp143      [V177,T189] (  3,  1.50)     ref  ->  [ebp-0x1AC]  class-hnd spill-single-def "Inline stloc first use temp" <System.String[]>
+;  V177 tmp143      [V177,T189] (  3,  1.50)     ref  ->  [ebp-0x1A8]  class-hnd spill-single-def "Inline stloc first use temp" <System.String[]>
 ;  V178 tmp144      [V178,T154] (  4,  2   )     int  ->  ecx         single-def "Inline stloc first use temp"
-;  V179 tmp145      [V179,T137] (  3,  3   )     ref  ->  [ebp-0x1B0]  class-hnd spill-single-def "Inlining Arg" <Microsoft.ML.ITransformer>
+;  V179 tmp145      [V179,T137] (  3,  3   )     ref  ->  [ebp-0x1AC]  class-hnd spill-single-def "Inlining Arg" <Microsoft.ML.ITransformer>
 ;* V180 tmp146      [V180    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
-;  V181 tmp147      [V181,T190] (  3,  1.50)     ref  ->  [ebp-0x1B4]  class-hnd spill-single-def "Inline stloc first use temp" <System.String[]>
+;  V181 tmp147      [V181,T190] (  3,  1.50)     ref  ->  [ebp-0x1B0]  class-hnd spill-single-def "Inline stloc first use temp" <System.String[]>
 ;  V182 tmp148      [V182,T155] (  4,  2   )     int  ->  [ebp-0x28]  spill-single-def "Inline stloc first use temp"
 ;* V183 tmp149      [V183,T237] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V184 tmp150      [V184,T238] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -197,72 +197,72 @@
 ;  V186 tmp152      [V186,T185] (  2,  2   )   ubyte  ->  [ebp-0x2C]  spill-single-def "Inlining Arg"
 ;* V187 tmp153      [V187    ] (  0,  0   )     int  ->  zero-ref   
 ;* V188 tmp154      [V188    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V189 tmp155      [V189,T192] (  3,  1.50)     ref  ->  [ebp-0x1B8]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V189 tmp155      [V189,T192] (  3,  1.50)     ref  ->  [ebp-0x1B4]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V190 tmp156      [V190,T156] (  4,  2   )     int  ->  ecx         single-def "Inline stloc first use temp"
 ;* V191 tmp157      [V191    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.ML.DataViewSchema>
-;  V192 tmp158      [V192,T193] (  3,  1.50)     ref  ->  [ebp-0x1BC]  class-hnd spill-single-def "Inline stloc first use temp" <System.String[]>
+;  V192 tmp158      [V192,T193] (  3,  1.50)     ref  ->  [ebp-0x1B8]  class-hnd spill-single-def "Inline stloc first use temp" <System.String[]>
 ;  V193 tmp159      [V193,T157] (  4,  2   )     int  ->  [ebp-0x30]  spill-single-def "Inline stloc first use temp"
 ;* V194 tmp160      [V194,T239] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V195 tmp161      [V195,T240] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V196 tmp162      [V196,T194] (  3,  1.50)     ref  ->  [ebp-0x1C0]  spill-single-def
+;  V196 tmp162      [V196,T194] (  3,  1.50)     ref  ->  [ebp-0x1BC]  spill-single-def
 ;  V197 tmp163      [V197,T186] (  2,  2   )   ubyte  ->  [ebp-0x34]  spill-single-def "Inlining Arg"
 ;* V198 tmp164      [V198    ] (  0,  0   )     int  ->  zero-ref   
 ;* V199 tmp165      [V199    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V200 tmp166      [V200,T195] (  3,  1.50)     ref  ->  [ebp-0x1C4]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V200 tmp166      [V200,T195] (  3,  1.50)     ref  ->  [ebp-0x1C0]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V201 tmp167      [V201,T158] (  4,  2   )     int  ->  [ebp-0x38]  spill-single-def "Inline stloc first use temp"
 ;* V202 tmp168      [V202    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.ML.IDataView>
 ;* V203 tmp169      [V203    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <<unknown class>>
-;  V204 tmp170      [V204,T138] (  3,  3   )     ref  ->  [ebp-0x1C8]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
-;  V205 tmp171      [V205,T97] (  4,  4   )     ref  ->  [ebp-0x1CC]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
-;  V206 tmp172      [V206,T114] (  7,  3.50)     ref  ->  [ebp-0x1D0]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V204 tmp170      [V204,T138] (  3,  3   )     ref  ->  [ebp-0x1C4]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
+;  V205 tmp171      [V205,T97] (  4,  4   )     ref  ->  [ebp-0x1C8]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+;  V206 tmp172      [V206,T114] (  7,  3.50)     ref  ->  [ebp-0x1CC]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V207 tmp173      [V207,T210] (  3,  1.50)     int  ->  edx         "Inline return value spill temp"
 ;* V208 tmp174      [V208    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline return value spill temp" <int[]>
-;  V209 tmp175      [V209,T98] (  4,  4   )     ref  ->  [ebp-0x1D4]  class-hnd spill-single-def "Inlining Arg" <int[]>
-;  V210 tmp176      [V210,T115] (  7,  3.50)     ref  ->  [ebp-0x1D8]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
+;  V209 tmp175      [V209,T98] (  4,  4   )     ref  ->  [ebp-0x1D0]  class-hnd spill-single-def "Inlining Arg" <int[]>
+;  V210 tmp176      [V210,T115] (  7,  3.50)     ref  ->  [ebp-0x1D4]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
 ;  V211 tmp177      [V211,T211] (  3,  1.50)     int  ->  edx         "Inline return value spill temp"
-;  V212 tmp178      [V212,T196] (  3,  1.50)     ref  ->  [ebp-0x1DC]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V212 tmp178      [V212,T196] (  3,  1.50)     ref  ->  [ebp-0x1D8]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V213 tmp179      [V213,T159] (  4,  2   )     int  ->  edi         single-def "Inline stloc first use temp"
 ;* V214 tmp180      [V214    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
 ;  V215 tmp181      [V215,T197] (  3,  1.50)     ref  ->  edx         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
 ;  V216 tmp182      [V216,T160] (  4,  2   )     int  ->  edi         single-def "Inline stloc first use temp"
 ;* V217 tmp183      [V217    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
-;  V218 tmp184      [V218,T198] (  3,  1.50)     ref  ->  [ebp-0x1E0]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V218 tmp184      [V218,T198] (  3,  1.50)     ref  ->  [ebp-0x1DC]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V219 tmp185      [V219,T161] (  4,  2   )     int  ->  edi         single-def "Inline stloc first use temp"
 ;* V220 tmp186      [V220    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
-;  V221 tmp187      [V221,T199] (  3,  1.50)     ref  ->  [ebp-0x1E4]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V221 tmp187      [V221,T199] (  3,  1.50)     ref  ->  [ebp-0x1E0]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V222 tmp188      [V222,T162] (  4,  2   )     int  ->  edi         single-def "Inline stloc first use temp"
 ;* V223 tmp189      [V223    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[System.String,System.String]>
 ;  V224 tmp190      [V224,T139] (  3,  3   )     ref  ->  ecx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;* V225 tmp191      [V225    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.ML.IDataView>
 ;* V226 tmp192      [V226    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "impAppendStmt" <<unknown class>>
 ;  V227 tmp193      [V227,T140] (  3,  3   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
-;  V228 tmp194      [V228,T99] (  4,  4   )     ref  ->  [ebp-0x1E8]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
-;  V229 tmp195      [V229,T116] (  7,  3.50)     ref  ->  [ebp-0x1EC]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
+;  V228 tmp194      [V228,T99] (  4,  4   )     ref  ->  [ebp-0x1E4]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+;  V229 tmp195      [V229,T116] (  7,  3.50)     ref  ->  [ebp-0x1E8]  class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
 ;  V230 tmp196      [V230,T212] (  3,  1.50)     int  ->  edx         "Inline return value spill temp"
 ;* V231 tmp197      [V231    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline return value spill temp" <int[]>
 ;  V232 tmp198      [V232,T100] (  4,  4   )     ref  ->  edi         class-hnd single-def "Inlining Arg" <int[]>
-;  V233 tmp199      [V233,T117] (  7,  3.50)     ref  ->  [ebp-0x1F0]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
+;  V233 tmp199      [V233,T117] (  7,  3.50)     ref  ->  [ebp-0x1EC]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
 ;  V234 tmp200      [V234,T213] (  3,  1.50)     int  ->  edx         "Inline return value spill temp"
 ;  V235 tmp201      [V235,T101] (  2,  4   )     ref  ->  ebx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V236 tmp202      [V236,T75] (  3,  6   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.ML.Data.TransformerChain`1[Microsoft.ML.ITransformer]>
 ;* V237 tmp203      [V237    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline return value spill temp" <int[]>
 ;  V238 tmp204      [V238,T70] (  4,  7   )     ref  ->  edi         class-hnd single-def "Inlining Arg" <int[]>
-;  V239 tmp205      [V239,T68] (  7,  7   )     ref  ->  [ebp-0x1F4]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
+;  V239 tmp205      [V239,T68] (  7,  7   )     ref  ->  [ebp-0x1F0]  class-hnd exact spill-single-def "Inline stloc first use temp" <int[]>
 ;  V240 tmp206      [V240,T163] (  3,  2   )     int  ->  edx         "Inline return value spill temp"
 ;  V241 tmp207      [V241,T227] (  2,  1   )     ref  ->  eax         single-def "field V54.key (fldOffset=0x0)" P-INDEP
 ;  V242 tmp208      [V242,T148] (  5,  2.50)     ref  ->  eax         single-def "field V54.value (fldOffset=0x4)" P-INDEP
 ;  V243 tmp209      [V243,T228] (  2,  1   )     ref  ->  eax         single-def "field V55.key (fldOffset=0x0)" P-INDEP
 ;  V244 tmp210      [V244,T149] (  5,  2.50)     ref  ->  eax         single-def "field V55.value (fldOffset=0x4)" P-INDEP
 ;* V245 tmp211      [V245,T241] (  0,  0   )     ref  ->  zero-ref    single-def "field V56.key (fldOffset=0x0)" P-INDEP
-;  V246 tmp212      [V246,T200] (  3,  1.50)     ref  ->  [ebp-0x1F8]  spill-single-def "field V56.value (fldOffset=0x4)" P-INDEP
+;  V246 tmp212      [V246,T200] (  3,  1.50)     ref  ->  [ebp-0x1F4]  spill-single-def "field V56.value (fldOffset=0x4)" P-INDEP
 ;* V247 tmp213      [V247,T242] (  0,  0   )     ref  ->  zero-ref    single-def "field V57.key (fldOffset=0x0)" P-INDEP
-;  V248 tmp214      [V248,T201] (  3,  1.50)     ref  ->  [ebp-0x1FC]  spill-single-def "field V57.value (fldOffset=0x4)" P-INDEP
+;  V248 tmp214      [V248,T201] (  3,  1.50)     ref  ->  [ebp-0x1F8]  spill-single-def "field V57.value (fldOffset=0x4)" P-INDEP
 ;  V249 tmp215      [V249,T60] (  4,  8   )     ref  ->  eax         "field V63.Item1 (fldOffset=0x0)" P-INDEP
-;  V250 tmp216      [V250,T61] (  4,  8   )     ref  ->  [ebp-0x200]  "field V63.Item2 (fldOffset=0x4)" P-INDEP
+;  V250 tmp216      [V250,T61] (  4,  8   )     ref  ->  [ebp-0x1FC]  "field V63.Item2 (fldOffset=0x4)" P-INDEP
 ;* V251 tmp217      [V251,T105] (  0,  0   )   ubyte  ->  zero-ref    "field V77.hasValue (fldOffset=0x0)" P-INDEP
 ;  V252 tmp218      [V252,T64] (  4,  8   )     int  ->  eax         "field V77.value (fldOffset=0x4)" P-INDEP
 ;  V253 tmp219      [V253,T62] (  4,  8   )     ref  ->  eax         "field V82.Item1 (fldOffset=0x0)" P-INDEP
-;  V254 tmp220      [V254,T63] (  4,  8   )     ref  ->  [ebp-0x204]  "field V82.Item2 (fldOffset=0x4)" P-INDEP
+;  V254 tmp220      [V254,T63] (  4,  8   )     ref  ->  [ebp-0x200]  "field V82.Item2 (fldOffset=0x4)" P-INDEP
 ;* V255 tmp221      [V255    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V161.hasValue (fldOffset=0x0)" P-INDEP
 ;* V256 tmp222      [V256    ] (  0,  0   )     int  ->  zero-ref    single-def "field V161.value (fldOffset=0x4)" P-INDEP
 ;* V257 tmp223      [V257,T244] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V163.hasValue (fldOffset=0x0)" P-INDEP
@@ -279,29 +279,29 @@
 ;* V268 tmp234      [V268    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V223.value (fldOffset=0x4)" P-INDEP
 ;  V269 tmp235      [V269,T102] (  2,  4   )     ref  ->  edx         single-def "argument with side effect"
 ;  V270 tmp236      [V270,T170] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V271 tmp237      [V271,T171] (  2,  2   )     ref  ->  [ebp-0x208]  spill-single-def "argument with side effect"
+;  V271 tmp237      [V271,T171] (  2,  2   )     ref  ->  [ebp-0x204]  spill-single-def "argument with side effect"
 ;  V272 tmp238      [V272,T172] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V273 tmp239      [V273,T32] (  4, 16   )     ref  ->  edx         "argument with side effect"
 ;  V274 tmp240      [V274,T33] (  4, 16   )     ref  ->  edi         "argument with side effect"
 ;  V275 tmp241      [V275,T34] (  4, 16   )     ref  ->  eax         "argument with side effect"
-;  V276 tmp242      [V276,T11] (  6, 24   )   byref  ->  [ebp-0x20C]  "BlockOp address local"
+;  V276 tmp242      [V276,T11] (  6, 24   )   byref  ->  [ebp-0x208]  "BlockOp address local"
 ;  V277 tmp243      [V277,T35] (  4, 16   )     ref  ->  eax         "argument with side effect"
 ;  V278 tmp244      [V278,T36] (  4, 16   )     ref  ->  eax         "argument with side effect"
-;  V279 tmp245      [V279,T173] (  2,  2   )     ref  ->  [ebp-0x210]  spill-single-def "argument with side effect"
+;  V279 tmp245      [V279,T173] (  2,  2   )     ref  ->  [ebp-0x20C]  spill-single-def "argument with side effect"
 ;  V280 tmp246      [V280,T174] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V281 tmp247      [V281,T175] (  2,  2   )     ref  ->  [ebp-0x214]  spill-single-def "argument with side effect"
+;  V281 tmp247      [V281,T175] (  2,  2   )     ref  ->  [ebp-0x210]  spill-single-def "argument with side effect"
 ;  V282 tmp248      [V282,T176] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V283 tmp249      [V283,T37] (  4, 16   )     ref  ->  edx         "argument with side effect"
-;  V284 tmp250      [V284,T38] (  4, 16   )     ref  ->  [ebp-0x218]  "argument with side effect"
+;  V284 tmp250      [V284,T38] (  4, 16   )     ref  ->  [ebp-0x214]  "argument with side effect"
 ;  V285 tmp251      [V285,T39] (  4, 16   )     ref  ->  eax         "argument with side effect"
 ;  V286 tmp252      [V286,T12] (  6, 24   )   byref  ->  registers   "BlockOp address local"
 ;  V287 tmp253      [V287,T177] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V288 tmp254      [V288,T178] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V289 tmp255      [V289,T179] (  2,  2   )     ref  ->  [ebp-0x21C]  spill-single-def "argument with side effect"
+;  V289 tmp255      [V289,T179] (  2,  2   )     ref  ->  [ebp-0x218]  spill-single-def "argument with side effect"
 ;  V290 tmp256      [V290,T180] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V291 tmp257      [V291,T181] (  2,  2   )     ref  ->  [ebp-0x220]  spill-single-def "argument with side effect"
+;  V291 tmp257      [V291,T181] (  2,  2   )     ref  ->  [ebp-0x21C]  spill-single-def "argument with side effect"
 ;  V292 tmp258      [V292,T182] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
-;  V293 tmp259      [V293,T183] (  2,  2   )     ref  ->  [ebp-0x224]  spill-single-def "argument with side effect"
+;  V293 tmp259      [V293,T183] (  2,  2   )     ref  ->  [ebp-0x220]  spill-single-def "argument with side effect"
 ;  V294 tmp260      [V294,T184] (  2,  2   )     ref  ->  edx         single-def "argument with side effect"
 ;  V295 tmp261      [V295,T141] (  3,  3   )   byref  ->  edi         single-def "BlockOp address local"
 ;  V296 tmp262      [V296,T142] (  3,  3   )   byref  ->  edi         single-def "BlockOp address local"
@@ -338,11 +338,10 @@
 ;  V327 cse21       [V327,T48] (  3, 11.88)     ref  ->  esi         "CSE - conservative"
 ;  V328 cse22       [V328,T49] (  3, 11.88)     ref  ->  eax         "CSE - conservative"
 ;  V329 cse23       [V329,T202] (  3,  1.50)     ref  ->  eax         "CSE - conservative"
-;  V330 cse24       [V330,T248] (  3,  0.12)     ref  ->  [ebp-0x228]  spill-single-def "CSE - conservative"
+;  V330 cse24       [V330,T248] (  3,  0.12)     ref  ->  [ebp-0x224]  spill-single-def "CSE - conservative"
 ;  V331 cse25       [V331,T249] (  3,  0.12)     ref  ->  eax         "CSE - conservative"
-;  TEMP_01                                   byref  ->  [ebp-0x22C]
 ;
-; Lcl frame size = 544
+; Lcl frame size = 536
 
 G_M30044_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -350,14 +349,12 @@ G_M30044_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 544
-       xor      eax, eax
-       mov      dword ptr [ebp-0x22C], eax
+       sub      esp, 536
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
        ; gcrRegs +[edi]
-                       ;; size=24 bbWeight=1 PerfScore 6.25
+                       ;; size=16 bbWeight=1 PerfScore 5.00
 G_M30044_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, gword ptr [esi+0x20]
        ; gcrRegs +[ebx]
@@ -474,7 +471,7 @@ G_M30044_IG06:        ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
        ; GC ptr vars +{V05}
        call     [<unknown method>]
        ; gcrRegs -[ecx]
-       mov      gword ptr [ebp-0x208], eax
+       mov      gword ptr [ebp-0x204], eax
        ; GC ptr vars +{V271}
        mov      gword ptr [ebp-0x6C], esi
        ; GC ptr vars +{V00}
@@ -487,7 +484,7 @@ G_M30044_IG06:        ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
        ; gcrRegs -[ecx edx esi]
        mov      edx, eax
        ; gcrRegs +[edx]
...

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

@@ -1360,41 +1360,34 @@ G_M4474_IG54:        ; bbWeight=0.04, gcVars=00000000000000000000000000000000000
        ; gcrRegs -[ecx] +[eax]
        mov      edi, eax
        ; gcrRegs +[edi]
-       mov      eax, gword ptr [ebp-0x48]
-       lea      edx, bword ptr [eax+0x04]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0xA8], edx
-       mov      ecx, dword ptr [ebp-0x14]
+       mov      eax, dword ptr [ebp-0x14]
+       ; gcrRegs -[eax]
        mov      edx, gword ptr [ebp-0x3C]
        ; gcrRegs +[edx]
-       ; byrRegs -[edx]
-       cmp      ecx, dword ptr [edx+0x04]
+       cmp      eax, dword ptr [edx+0x04]
        jae      G_M4474_IG108
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ebx, gword ptr [edx+4*ecx+0x08]
-       ; gcrRegs +[ebx]
-       mov      ecx, ebx
+       mov      dword ptr [ebp-0x14], eax
+       mov      ecx, gword ptr [edx+4*eax+0x08]
        ; gcrRegs +[ecx]
-       mov      ebx, dword ptr [ebx]
-       ; gcrRegs -[ebx]
+       mov      ebx, dword ptr [ecx]
        mov      ebx, dword ptr [ebx+0x2C]
        call     [ebx+0x18]<unknown method>
-       ; gcrRegs -[ecx edx]
-       mov      edx, bword ptr [ebp-0xA8]
+       ; gcrRegs -[ecx edx] +[eax]
+       mov      ebx, gword ptr [ebp-0x48]
+       ; gcrRegs +[ebx]
+       lea      edx, bword ptr [ebx+0x04]
        ; byrRegs +[edx]
+       ; GC ptr vars -{V01 V17}
        call     CORINFO_HELP_ASSIGN_REF_EAX
        ; gcrRegs -[eax]
        ; byrRegs -[edx]
-       mov      ebx, gword ptr [ebp-0x48]
-       ; gcrRegs +[ebx]
        mov      ecx, gword ptr [ebx+0x04]
        ; gcrRegs +[ecx]
-       ; GC ptr vars -{V01 V17}
        call     [System.String:IsNullOrWhiteSpace(System.String):ubyte]
        ; gcrRegs -[ecx]
        test     eax, eax
        je       SHORT G_M4474_IG56
-                       ;; size=126 bbWeight=0.04 PerfScore 1.93
+                       ;; size=109 bbWeight=0.04 PerfScore 1.80
 G_M4474_IG55:        ; bbWeight=0.02, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        call     [<unknown method>]
        ; gcrRegs +[eax]
@@ -2558,6 +2551,6 @@ G_M4474_IG109:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 4410, prolog size 26, PerfScore 1390.03, instruction count 1274, allocated bytes for code 4410 (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 4393, prolog size 26, PerfScore 1389.90, instruction count 1270, allocated bytes for code 4393 (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)
 ; ============================================================
 

-4 (-0.37%) : 20024.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.Canon]:AddIfNotPresent(System.Canon,byref):ubyte:this (FullOpts)

@@ -10,7 +10,7 @@
 ;
 ;  V00 this         [V00,T00] ( 33, 27.50)     ref  ->  ebx         this class-hnd single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 arg1         [V01,T17] ( 10,  9   )     ref  ->  [ebp-0x6C]  ld-addr-op class-hnd single-def <System.__Canon>
-;  V02 arg2         [V02,T68] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
+;  V02 arg2         [V02,T64] (  3,  1.50)   byref  ->  [ebp+0x08]  single-def
 ;  V03 loc0         [V03    ] (  9, 19   )  struct ( 8) [ebp-0x14]  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 loc1         [V04,T25] (  4,  4.50)     ref  ->  [ebp-0x70]  class-hnd spill-single-def <<unknown class>>
 ;  V05 loc2         [V05,T18] (  8, 11   )     int  ->  [ebp-0x18] 
@@ -23,10 +23,10 @@
 ;  V12 loc9         [V12,T12] (  4, 14   )   byref  ->  esi        
 ;  V13 loc10        [V13,T15] (  6, 13.50)     int  ->  [ebp-0x24] 
 ;  V14 loc11        [V14,T13] (  4, 14   )   byref  ->  [ebp-0x7C]  spill-single-def
-;  V15 loc12        [V15,T69] (  3,  1.50)     int  ->  edi         single-def
+;  V15 loc12        [V15,T65] (  3,  1.50)     int  ->  edi         single-def
 ;* V16 tmp0         [V16    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V17 tmp1         [V17,T62] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
-;  V18 tmp2         [V18,T70] (  3,  1.50)     int  ->  registers  
+;  V17 tmp1         [V17,T58] (  3,  2   )     int  ->  [ebp-0x28]  "VirtualCall with runtime lookup"
+;  V18 tmp2         [V18,T66] (  3,  1.50)     int  ->  registers  
 ;* V19 tmp3         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V20 tmp4         [V20    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V21 tmp5         [V21    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -34,8 +34,8 @@
 ;* V23 tmp7         [V23    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V24 tmp8         [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V25 tmp9         [V25,T27] (  4,  4   )   byref  ->  eax         single-def "dup spill"
-;  V26 tmp10        [V26,T63] (  3,  2   )     int  ->  eax         "spilling helperCall"
-;  V27 tmp11        [V27,T71] (  3,  1.50)     int  ->  eax        
+;  V26 tmp10        [V26,T59] (  3,  2   )     int  ->  eax         "spilling helperCall"
+;  V27 tmp11        [V27,T67] (  3,  1.50)     int  ->  eax        
 ;* V28 tmp12        [V28    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V29 tmp13        [V29    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;* V30 tmp14        [V30    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
@@ -47,9 +47,9 @@
 ;  V36 tmp20        [V36,T30] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V37 tmp21        [V37,T31] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V38 tmp22        [V38    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V39 tmp23        [V39,T95] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V39 tmp23        [V39,T89] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V40 tmp24        [V40    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V41 tmp25        [V41,T96] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V41 tmp25        [V41,T90] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V42 tmp26        [V42    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V43 tmp27        [V43    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V44 tmp28        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -57,9 +57,9 @@
 ;  V46 tmp30        [V46,T32] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V47 tmp31        [V47,T33] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V48 tmp32        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V49 tmp33        [V49,T97] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V49 tmp33        [V49,T91] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V50 tmp34        [V50    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V51 tmp35        [V51,T98] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V51 tmp35        [V51,T92] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V52 tmp36        [V52    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <Microsoft.CodeAnalysis.Collections.SegmentedArray`1[int]>
 ;* V53 tmp37        [V53    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
 ;* V54 tmp38        [V54    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -67,83 +67,77 @@
 ;  V56 tmp40        [V56,T34] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;  V57 tmp41        [V57,T35] (  3,  3   )     ref  ->  ecx         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V58 tmp42        [V58    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V59 tmp43        [V59,T99] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V59 tmp43        [V59,T93] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;* V60 tmp44        [V60    ] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
-;* V61 tmp45        [V61,T100] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
+;* V61 tmp45        [V61,T94] (  0,  0   )     int  ->  zero-ref    single-def "Inline stloc first use temp"
 ;  V62 tmp46        [V62    ] (  6, 10.50)     ref  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V03._items (fldOffset=0x0)" P-DEP
 ;  V63 tmp47        [V63    ] (  9, 19   )     int  ->  [ebp-0x10]  do-not-enreg[X] addr-exposed "field V03._length (fldOffset=0x4)" P-DEP
-;  V64 tmp48        [V64,T80] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
-;  V65 tmp49        [V65,T83] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
-;  V66 tmp50        [V66,T81] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
-;  V67 tmp51        [V67,T84] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
-;  V68 tmp52        [V68,T82] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
-;  V69 tmp53        [V69,T85] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
+;  V64 tmp48        [V64,T76] (  2,  1   )     ref  ->  [ebp-0x80]  spill-single-def "field V32._items (fldOffset=0x0)" P-INDEP
+;  V65 tmp49        [V65,T79] (  2,  1   )     int  ->  [ebp-0x2C]  spill-single-def "field V32._length (fldOffset=0x4)" P-INDEP
+;  V66 tmp50        [V66,T77] (  2,  1   )     ref  ->  [ebp-0x84]  spill-single-def "field V42._items (fldOffset=0x0)" P-INDEP
+;  V67 tmp51        [V67,T80] (  2,  1   )     int  ->  [ebp-0x30]  spill-single-def "field V42._length (fldOffset=0x4)" P-INDEP
+;  V68 tmp52        [V68,T78] (  2,  1   )     ref  ->  [ebp-0x88]  spill-single-def "field V52._items (fldOffset=0x0)" P-INDEP
+;  V69 tmp53        [V69,T81] (  2,  1   )     int  ->  [ebp-0x34]  spill-single-def "field V52._length (fldOffset=0x4)" P-INDEP
 ;  V70 tmp54        [V70,T42] (  3,  3   )     int  ->  eax         "index expr"
 ;  V71 tmp55        [V71,T43] (  3,  3   )     int  ->  edx         "index expr"
 ;  V72 tmp56        [V72,T44] (  3,  3   )     int  ->  eax         "index expr"
 ;  V73 tmp57        [V73,T45] (  3,  3   )     int  ->  edx         "index expr"
 ;  V74 tmp58        [V74,T21] (  2,  8   )     ref  ->  edx         "argument with side effect"
 ;  V75 tmp59        [V75,T22] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V76 tmp60        [V76,T66] (  2,  2   )     int  ->  edx         "argument with side effect"
+;  V76 tmp60        [V76,T62] (  2,  2   )     int  ->  edx         "argument with side effect"
 ;  V77 tmp61        [V77,T46] (  3,  3   )     int  ->  eax         "index expr"
 ;  V78 tmp62        [V78,T47] (  3,  3   )     int  ->  edx         "index expr"
-;  V79 tmp63        [V79,T67] (  2,  2   )     int  ->  esi         "argument with side effect"
-;  V80 cse0         [V80,T72] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
-;  V81 cse1         [V81,T73] (  3,  1.50)     int  ->  esi         "CSE - conservative"
-;  V82 rat0         [V82,T55] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
-;  V83 rat1         [V83,T64] (  3,  2   )     int  ->  ecx         "runtime lookup"
+;  V79 tmp63        [V79,T63] (  2,  2   )     int  ->  esi         "argument with side effect"
+;  V80 cse0         [V80,T68] (  3,  1.50)     int  ->  ecx         "CSE - conservative"
+;  V81 cse1         [V81,T69] (  3,  1.50)     int  ->  esi         "CSE - conservative"
+;  V82 rat0         [V82,T53] (  3,  2.20)     int  ->  [ebp-0x38]  spill-single-def "Spilling to split statement for tree"
+;  V83 rat1         [V83,T60] (  3,  2   )     int  ->  ecx         "runtime lookup"
 ;  V84 rat2         [V84,T48] (  3,  2.80)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V85 rat3         [V85,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V86 rat4         [V86,T86] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V87 rat5         [V87,T49] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V88 rat6         [V88,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V89 rat7         [V89,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
-;  V90 rat8         [V90,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V91 rat9         [V91,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V92 rat10        [V92,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V93 rat11        [V93,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V94 rat12        [V94,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V95 rat13        [V95,T50] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V96 rat14        [V96,T58] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V97 rat15        [V97,T87] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V98 rat16        [V98,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V99 rat17        [V99,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
-;  V100 rat18       [V100,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
-;  V101 rat19       [V101,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V102 rat20       [V102,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
-;  V103 rat21       [V103,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;* V104 rat22       [V104,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V105 rat23       [V105,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V106 rat24       [V106,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V107 rat25       [V107,T59] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;* V109 rat27       [V109,T60] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V110 rat28       [V110,T88] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V111 rat29       [V111,T53] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V112 rat30       [V112,T61] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V113 rat31       [V113,T65] (  3,  2   )     int  ->  esi         "runtime lookup"
-;  V114 rat32       [V114,T54] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
-;  V115 rat33       [V115,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V116 rat34       [V116    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V117 rat35       [V117,T89] (  1,  1   )     int  ->  eax         "field V116.lo (fldOffset=0x0)" P-INDEP
-;  V118 rat36       [V118,T74] (  2,  1.50)     int  ->  edx         "field V116.hi (fldOffset=0x4)" P-INDEP
-;  V119 rat37       [V119    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V120 rat38       [V120,T90] (  1,  1   )     int  ->  eax         "field V119.lo (fldOffset=0x0)" P-INDEP
-;  V121 rat39       [V121,T75] (  2,  1.50)     int  ->  edx         "field V119.hi (fldOffset=0x4)" P-INDEP
-;  V122 rat40       [V122,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
-;  V123 rat41       [V123    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V124 rat42       [V124,T91] (  1,  1   )     int  ->  eax         "field V123.lo (fldOffset=0x0)" P-INDEP
-;  V125 rat43       [V125,T76] (  2,  1.50)     int  ->  edx         "field V123.hi (fldOffset=0x4)" P-INDEP
-;  V126 rat44       [V126    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V127 rat45       [V127,T92] (  1,  1   )     int  ->  eax         "field V126.lo (fldOffset=0x0)" P-INDEP
-;  V128 rat46       [V128,T77] (  2,  1.50)     int  ->  edx         "field V126.hi (fldOffset=0x4)" P-INDEP
-;  V129 rat47       [V129,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
-;  V130 rat48       [V130    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V131 rat49       [V131,T93] (  1,  1   )     int  ->  eax         "field V130.lo (fldOffset=0x0)" P-INDEP
-;  V132 rat50       [V132,T78] (  2,  1.50)     int  ->  edx         "field V130.hi (fldOffset=0x4)" P-INDEP
-;  V133 rat51       [V133    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
-;  V134 rat52       [V134,T94] (  1,  1   )     int  ->  eax         "field V133.lo (fldOffset=0x0)" P-INDEP
-;  V135 rat53       [V135,T79] (  2,  1.50)     int  ->  edx         "field V133.hi (fldOffset=0x4)" P-INDEP
+;  V85 rat3         [V85,T06] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V86 rat4         [V86,T10] (  3, 16   )     int  ->  esi         "runtime lookup"
+;  V87 rat5         [V87,T02] (  3, 22.40)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V88 rat6         [V88,T07] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V89 rat7         [V89,T23] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V90 rat8         [V90,T03] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V91 rat9         [V91,T54] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V92 rat10        [V92,T49] (  3,  2.80)     int  ->  edx         "fgMakeTemp is creating a new local variable"
+;  V93 rat11        [V93,T08] (  3, 17.60)     int  ->  ecx         "Spilling to split statement for tree"
+;  V94 rat12        [V94,T11] (  3, 16   )     int  ->  eax         "runtime lookup"
+;  V95 rat13        [V95,T04] (  3, 22.40)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V96 rat14        [V96,T19] (  3,  8.80)     int  ->  ecx         "Spilling to split statement for tree"
+;  V97 rat15        [V97,T16] (  3, 11.20)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;* V98 rat16        [V98,T09] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V99 rat17        [V99,T24] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V100 rat18       [V100,T05] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V101 rat19       [V101,T55] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V102 rat20       [V102,T50] (  3,  2.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;* V103 rat21       [V103,T56] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
+;* V104 rat22       [V104,T82] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
+;* V105 rat23       [V105,T51] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
+;  V106 rat24       [V106,T57] (  3,  2.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V107 rat25       [V107,T61] (  3,  2   )     int  ->  esi         "runtime lookup"
+;  V108 rat26       [V108,T52] (  3,  2.80)     int  ->  esi         "fgMakeTemp is creating a new local variable"
+;  V109 rat27       [V109,T36] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V110 rat28       [V110    ] (  1,  1   )    long  ->  [ebp-0x40]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V111 rat29       [V111,T83] (  1,  1   )     int  ->  eax         "field V110.lo (fldOffset=0x0)" P-INDEP
+;  V112 rat30       [V112,T70] (  2,  1.50)     int  ->  edx         "field V110.hi (fldOffset=0x4)" P-INDEP
+;  V113 rat31       [V113    ] (  1,  1   )    long  ->  [ebp-0x48]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V114 rat32       [V114,T84] (  1,  1   )     int  ->  eax         "field V113.lo (fldOffset=0x0)" P-INDEP
+;  V115 rat33       [V115,T71] (  2,  1.50)     int  ->  edx         "field V113.hi (fldOffset=0x4)" P-INDEP
+;  V116 rat34       [V116,T37] (  3,  3   )   byref  ->  [ebp-0x8C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V117 rat35       [V117    ] (  1,  1   )    long  ->  [ebp-0x50]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V118 rat36       [V118,T85] (  1,  1   )     int  ->  eax         "field V117.lo (fldOffset=0x0)" P-INDEP
+;  V119 rat37       [V119,T72] (  2,  1.50)     int  ->  edx         "field V117.hi (fldOffset=0x4)" P-INDEP
+;  V120 rat38       [V120    ] (  1,  1   )    long  ->  [ebp-0x58]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V121 rat39       [V121,T86] (  1,  1   )     int  ->  eax         "field V120.lo (fldOffset=0x0)" P-INDEP
+;  V122 rat40       [V122,T73] (  2,  1.50)     int  ->  edx         "field V120.hi (fldOffset=0x4)" P-INDEP
+;  V123 rat41       [V123,T38] (  3,  3   )   byref  ->  ecx         "ReplaceWithLclVar is creating a new local variable"
+;  V124 rat42       [V124    ] (  1,  1   )    long  ->  [ebp-0x60]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V125 rat43       [V125,T87] (  1,  1   )     int  ->  eax         "field V124.lo (fldOffset=0x0)" P-INDEP
+;  V126 rat44       [V126,T74] (  2,  1.50)     int  ->  edx         "field V124.hi (fldOffset=0x4)" P-INDEP
+;  V127 rat45       [V127    ] (  1,  1   )    long  ->  [ebp-0x68]  multireg-ret "ReplaceWithLclVar is creating a new local variable"
+;  V128 rat46       [V128,T88] (  1,  1   )     int  ->  eax         "field V127.lo (fldOffset=0x0)" P-INDEP
+;  V129 rat47       [V129,T75] (  2,  1.50)     int  ->  edx         "field V127.hi (fldOffset=0x4)" P-INDEP
 ;  TEMP_02                                     ref  ->  [ebp-0x90]
 ;  TEMP_01                                     int  ->  [ebp-0x94]
 ;
@@ -165,7 +159,7 @@ G_M18379_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      ebx, ecx
        ; gcrRegs +[ebx]
                        ;; size=31 bbWeight=1 PerfScore 9.00
-G_M18379_IG02:        ; bbWeight=1, gcVars=00000000000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG02:        ; bbWeight=1, gcVars=000000000000000000020000 {V01}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        cmp      dword ptr [ebx+0x24], 0
        jne      SHORT G_M18379_IG04
                        ;; size=6 bbWeight=1 PerfScore 4.00
@@ -191,7 +185,7 @@ G_M18379_IG04:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        xor      edi, edi
        ; byrRegs -[edi]
        test     esi, esi
-       jne      G_M18379_IG21
+       jne      G_M18379_IG20
                        ;; size=24 bbWeight=1 PerfScore 7.50
 G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi]
@@ -203,7 +197,7 @@ G_M18379_IG05:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000
        xor      eax, eax
        jmp      SHORT G_M18379_IG07
                        ;; size=11 bbWeight=0.50 PerfScore 2.25
-G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+G_M18379_IG06:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -216,7 +210,7 @@ G_M18379_IG06:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      esi, gword ptr [ebp-0x6C]
        ; gcrRegs +[esi]
                        ;; size=16 bbWeight=0.50 PerfScore 4.62
-G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M18379_IG07:        ; bbWeight=0.50, gcVars=000000000000000000000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V01}
        mov      edx, gword ptr [ebx+0x20]
        ; gcrRegs +[edx]
@@ -248,11 +242,11 @@ G_M18379_IG07:        ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {
        mov      eax, edx
        sar      eax, 14
        cmp      eax, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        mov      ecx, gword ptr [ecx+4*eax+0x08]
        and      edx, 0x3FFF
        cmp      edx, dword ptr [ecx+0x04]
-       jae      G_M18379_IG49
+       jae      G_M18379_IG48
        lea      eax, bword ptr [ecx+4*edx+0x08]
        ; byrRegs +[eax]
...

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

@@ -10,14 +10,14 @@
 ;
 ;  V00 this         [V00,T06] (  8, 22   )     ref  ->  [ebp-0x40]  do-not-enreg[H] this class-hnd EH-live single-def <Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]>
 ;  V01 RetBuf       [V01,T16] (  6,  6   )   byref  ->  [ebp-0x44]  EH-live single-def
-;  V02 arg1         [V02,T40] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
-;  V03 arg2         [V03,T33] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
+;  V02 arg1         [V02,T38] (  2,  2   )     ref  ->  esi         class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
+;  V03 arg2         [V03,T31] (  1,  4   )   ubyte  ->  [ebp+0x08]  single-def
 ;* V04 loc0         [V04    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V05 loc1         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Span`1[int]>
 ;* V06 loc2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] ld-addr-op <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;  V07 loc3         [V07,T11] (  4, 10   )     int  ->  [ebp-0x28]  do-not-enreg[Z] EH-live
 ;  V08 loc4         [V08,T12] (  4, 10   )     int  ->  [ebp-0x2C]  do-not-enreg[Z] EH-live
-;  V09 loc5         [V09,T37] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
+;  V09 loc5         [V09,T35] (  3,  3   )     int  ->  [ebp-0x30]  do-not-enreg[Z] EH-live
 ;  V10 loc6         [V10,T05] ( 13, 27   )     ref  ->  [ebp-0x48]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V11 loc7         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.__Canon>
 ;  V12 loc8         [V12,T04] (  5, 28   )     int  ->  eax        
@@ -26,44 +26,44 @@
 ;* V15 tmp2         [V15    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V16 tmp3         [V16    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;* V17 tmp4         [V17    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V18 tmp5         [V18,T29] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
+;  V18 tmp5         [V18,T27] (  3,  4   )     int  ->  edx         "VirtualCall with runtime lookup"
 ;* V19 tmp6         [V19    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
 ;  V20 tmp7         [V20,T02] (  3, 32   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V21 tmp8         [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;* V22 tmp9         [V22    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.Collections.Internal.BitHelper>
 ;* V23 tmp10        [V23    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.Span`1[int]>
 ;* V24 tmp11        [V24    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V25 tmp12        [V25,T30] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V25 tmp12        [V25,T28] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V26 tmp13        [V26    ] (  0,  0   )     int  ->  zero-ref    "spilling helperCall"
-;  V27 tmp14        [V27,T31] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
+;  V27 tmp14        [V27,T29] (  3,  4   )     int  ->  eax         "VirtualCall with runtime lookup"
 ;* V28 tmp15        [V28    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[int,int]>
 ;  V29 tmp16        [V29,T15] (  8,  8   )     int  ->  [ebp-0x34]  "Inline return value spill temp"
 ;  V30 tmp17        [V30,T18] (  3,  6   )     int  ->  eax         "Inlining Arg"
-;  V31 tmp18        [V31,T32] (  2,  4   )     int  ->  edi         "Inlining Arg"
+;  V31 tmp18        [V31,T30] (  2,  4   )     int  ->  edi         "Inlining Arg"
 ;  V32 tmp19        [V32,T17] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "Inlining Arg" <int[]>
 ;* V33 tmp20        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V34 tmp21        [V34    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
 ;* V35 tmp22        [V35    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
 ;* V36 tmp23        [V36    ] (  0,  0   )   byref  ->  zero-ref    single-def "Inlining Arg"
 ;* V37 tmp24        [V37    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[int]>
-;* V38 tmp25        [V38,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;* V38 tmp25        [V38,T32] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V39 tmp26        [V39,T08] (  3, 12   )     int  ->  edx         "Inline stloc first use temp"
 ;  V40 tmp27        [V40,T09] (  3, 12   )     int  ->  ecx         "Inline stloc first use temp"
 ;  V41 tmp28        [V41,T07] (  3, 24   )   byref  ->  edx         "dup spill"
 ;* V42 tmp29        [V42    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V43 tmp30        [V43    ] (  0,  0   )     int  ->  zero-ref    single-def "field V05._length (fldOffset=0x4)" P-INDEP
-;  V44 tmp31        [V44,T35] (  3,  3   )   byref  ->  edi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
+;  V44 tmp31        [V44,T33] (  3,  3   )   byref  ->  edi         single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V45 tmp32        [V45    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x4)" P-INDEP
 ;* V46 tmp33        [V46    ] (  0,  0   )   byref  ->  zero-ref    "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V47 tmp34        [V47    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V48 tmp35        [V48,T42] (  2,  2   )     int  ->  eax         single-def "field V21.Item1 (fldOffset=0x0)" P-INDEP
-;  V49 tmp36        [V49,T43] (  2,  2   )     int  ->  edx         single-def "field V21.Item2 (fldOffset=0x4)" P-INDEP
+;  V48 tmp35        [V48,T40] (  2,  2   )     int  ->  eax         single-def "field V21.Item1 (fldOffset=0x0)" P-INDEP
+;  V49 tmp36        [V49,T41] (  2,  2   )     int  ->  edx         single-def "field V21.Item2 (fldOffset=0x4)" P-INDEP
 ;* V50 tmp37        [V50    ] (  0,  0   )   byref  ->  zero-ref    "field V23._reference (fldOffset=0x0)" P-INDEP
 ;* V51 tmp38        [V51    ] (  0,  0   )     int  ->  zero-ref    "field V23._length (fldOffset=0x4)" P-INDEP
-;* V52 tmp39        [V52,T47] (  0,  0   )     int  ->  zero-ref    single-def "field V28.Item1 (fldOffset=0x0)" P-INDEP
-;  V53 tmp40        [V53,T44] (  2,  2   )     int  ->  eax         single-def "field V28.Item2 (fldOffset=0x4)" P-INDEP
-;  V54 tmp41        [V54,T41] (  2,  2   )   byref  ->  edi         "field V33._reference (fldOffset=0x0)" P-INDEP
-;  V55 tmp42        [V55,T45] (  2,  2   )     int  ->  eax         "field V33._length (fldOffset=0x4)" P-INDEP
+;* V52 tmp39        [V52,T44] (  0,  0   )     int  ->  zero-ref    single-def "field V28.Item1 (fldOffset=0x0)" P-INDEP
+;  V53 tmp40        [V53,T42] (  2,  2   )     int  ->  eax         single-def "field V28.Item2 (fldOffset=0x4)" P-INDEP
+;  V54 tmp41        [V54,T39] (  2,  2   )   byref  ->  edi         "field V33._reference (fldOffset=0x0)" P-INDEP
+;  V55 tmp42        [V55,T43] (  2,  2   )     int  ->  eax         "field V33._length (fldOffset=0x4)" P-INDEP
 ;* V56 tmp43        [V56    ] (  0,  0   )   byref  ->  zero-ref    "field V34._reference (fldOffset=0x0)" P-INDEP
 ;* V57 tmp44        [V57    ] (  0,  0   )     int  ->  zero-ref    "field V34._length (fldOffset=0x4)" P-INDEP
 ;* V58 tmp45        [V58    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V35._reference (fldOffset=0x0)" P-INDEP
@@ -72,27 +72,24 @@
 ;* V61 tmp48        [V61    ] (  0,  0   )     int  ->  zero-ref    single-def "field V37._length (fldOffset=0x4)" P-INDEP
 ;  V62 tmp49        [V62,T13] (  3,  9   )   byref  ->  edi         single-def "V06.[000..004)"
 ;  V63 tmp50        [V63,T14] (  3,  9   )     int  ->  [ebp-0x38]  spill-single-def "V06.[004..008)"
-;  V64 tmp51        [V64,T36] (  3,  3   )   byref  ->  edi         "V16.[000..004)"
-;  V65 tmp52        [V65,T38] (  3,  3   )     int  ->  eax         "V16.[004..008)"
+;  V64 tmp51        [V64,T34] (  3,  3   )   byref  ->  edi         "V16.[000..004)"
+;  V65 tmp52        [V65,T36] (  3,  3   )     int  ->  eax         "V16.[004..008)"
 ;  V66 tmp53        [V66,T03] (  2, 32   )     ref  ->  edx         "argument with side effect"
 ;  V67 GsCookie     [V67    ] (  1,  1   )     int  ->  [ebp-0x4C]  do-not-enreg[X] addr-exposed "GSSecurityCookie"
 ;  V68 EHSlots      [V68    ] (  1,  1   )  struct (16) [ebp-0x24]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-;  V69 LocAllocSP   [V69,T48] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
+;  V69 LocAllocSP   [V69,T45] (  1,  1   )     int  ->  [ebp-0x10]  "LocAllocSPvar"
 ;  V70 cse0         [V70,T10] (  3, 12   )     int  ->  ecx         "CSE - moderate"
-;  V71 cse1         [V71,T39] (  3,  3   )     int  ->  eax         "CSE - conservative"
-;  V72 rat0         [V72,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V71 cse1         [V71,T37] (  3,  3   )     int  ->  eax         "CSE - conservative"
+;  V72 rat0         [V72,T24] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V73 rat1         [V73,T21] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V74 rat2         [V74,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V74 rat2         [V74,T25] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V75 rat3         [V75,T22] (  3,  5.60)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V76 rat4         [V76,T27] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
+;  V76 rat4         [V76,T26] (  3,  4.40)     int  ->  ecx         "Spilling to split statement for tree"
 ;  V77 rat5         [V77,T23] (  3,  5.60)     int  ->  edx         "fgMakeTemp is creating a new local variable"
-;* V78 rat6         [V78,T28] (  0,  0   )     int  ->  zero-ref    "Spilling to split statement for tree"
-;* V79 rat7         [V79,T46] (  0,  0   )     int  ->  zero-ref    "runtime lookup"
-;* V80 rat8         [V80,T24] (  0,  0   )     int  ->  zero-ref    "fgMakeTemp is creating a new local variable"
-;  V81 rat9         [V81,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
-;  V82 rat10        [V82,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
-;  V83 rat11        [V83,T19] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
-;  V84 rat12        [V84,T20] (  3,  6   )     int  ->  [ebp-0x3C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
+;  V78 rat6         [V78,T01] (  3, 35.20)     int  ->  ecx         "Spilling to split statement for tree"
+;  V79 rat7         [V79,T00] (  3, 44.80)     int  ->  eax         "fgMakeTemp is creating a new local variable"
+;  V80 rat8         [V80,T19] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
+;  V81 rat9         [V81,T20] (  3,  6   )     int  ->  [ebp-0x3C]  spill-single-def "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 68
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 1 1 0 0 -4 +0
benchmarks.run_pgo.windows.x86.checked.mch 2 2 0 0 -17 +0
benchmarks.run_tiered.windows.x86.checked.mch 1 1 0 0 -4 +0
coreclr_tests.run.windows.x86.checked.mch 2 2 0 0 -8 +0
libraries.crossgen2.windows.x86.checked.mch 6 6 0 0 -97 +0
libraries.pmi.windows.x86.checked.mch 24 15 0 9 -153 +0
libraries_tests.run.windows.x86.Release.mch 28 24 0 4 -744 +0
librariestestsnotieredcompilation.run.windows.x86.Release.mch 11 8 0 3 -92 +0
realworld.run.windows.x86.checked.mch 4 3 0 1 -53 +0
79 62 0 17 -1,172 +0

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,485 4 24,481 3 (0.01%) 3 (0.01%)
benchmarks.run_pgo.windows.x86.checked.mch 119,688 42,004 77,684 175 (0.15%) 175 (0.15%)
benchmarks.run_tiered.windows.x86.checked.mch 47,905 28,726 19,179 2 (0.00%) 2 (0.00%)
coreclr_tests.run.windows.x86.checked.mch 575,025 320,010 255,015 348 (0.06%) 350 (0.06%)
libraries.crossgen2.windows.x86.checked.mch 241,923 15 241,908 4 (0.00%) 4 (0.00%)
libraries.pmi.windows.x86.checked.mch 304,227 6 304,221 4 (0.00%) 5 (0.00%)
libraries_tests.run.windows.x86.Release.mch 633,816 429,177 204,639 1,993 (0.31%) 1,993 (0.31%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 315,735 21,872 293,863 20 (0.01%) 20 (0.01%)
realworld.run.windows.x86.checked.mch 35,979 3 35,976 3 (0.01%) 3 (0.01%)
2,298,783 841,817 1,456,966 2,552 (0.11%) 2,555 (0.11%)

jit-analyze output

benchmarks.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7118376 (overridden on cmd)
Total bytes of diff: 7118372 (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 : 18028.dasm (-0.37 % of base)

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

Top method improvements (bytes):
          -4 (-0.37 % of base) : 18028.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)

Top method improvements (percentages):
          -4 (-0.37 % of base) : 18028.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)

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


benchmarks.run_pgo.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 43731319 (overridden on cmd)
Total bytes of diff: 43731302 (overridden on cmd)
Total bytes of delta: -17 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -13 : 12020.dasm (-2.08 % of base)
          -4 : 72723.dasm (-0.37 % of base)

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

Top method improvements (bytes):
         -13 (-2.08 % of base) : 12020.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier0-FullOpts)
          -4 (-0.37 % of base) : 72723.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)

Top method improvements (percentages):
         -13 (-2.08 % of base) : 12020.dasm - Microsoft.Extensions.Options.OptionsFactory`1[System.__Canon]:Create(System.String):System.__Canon:this (Tier0-FullOpts)
          -4 (-0.37 % of base) : 72723.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)

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


benchmarks.run_tiered.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 9520854 (overridden on cmd)
Total bytes of diff: 9520850 (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 : 34115.dasm (-0.37 % of base)

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

Top method improvements (bytes):
          -4 (-0.37 % of base) : 34115.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)

Top method improvements (percentages):
          -4 (-0.37 % of base) : 34115.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)

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


coreclr_tests.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 308762969 (overridden on cmd)
Total bytes of diff: 308762961 (overridden on cmd)
Total bytes of delta: -8 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
          -4 : 476978.dasm (-0.37 % of base)
          -4 : 223677.dasm (-0.37 % of base)

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

Top method improvements (bytes):
          -4 (-0.37 % of base) : 476978.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          -4 (-0.37 % of base) : 223677.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)

Top method improvements (percentages):
          -4 (-0.37 % of base) : 476978.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          -4 (-0.37 % of base) : 223677.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (Tier0-FullOpts)

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


libraries.crossgen2.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31656762 (overridden on cmd)
Total bytes of diff: 31656665 (overridden on cmd)
Total bytes of delta: -97 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -20 : 76488.dasm (-2.04 % of base)
         -20 : 152646.dasm (-1.50 % of base)
         -18 : 96225.dasm (-1.10 % of base)
         -15 : 154738.dasm (-1.29 % of base)
         -15 : 31631.dasm (-0.41 % of base)
          -9 : 32127.dasm (-2.91 % of base)

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

Top method improvements (bytes):
         -20 (-2.04 % of base) : 76488.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 (-1.50 % of base) : 152646.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
         -18 (-1.10 % of base) : 96225.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -15 (-0.41 % of base) : 31631.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -15 (-1.29 % of base) : 154738.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -9 (-2.91 % of base) : 32127.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)

Top method improvements (percentages):
          -9 (-2.91 % of base) : 32127.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -20 (-2.04 % of base) : 76488.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 (-1.50 % of base) : 152646.dasm - System.Xml.Xsl.Runtime.XmlQueryStaticData:.ctor(ubyte[],System.Type[]):this (FullOpts)
         -15 (-1.29 % of base) : 154738.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -18 (-1.10 % of base) : 96225.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -15 (-0.41 % of base) : 31631.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)

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


libraries.pmi.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 48900145 (overridden on cmd)
Total bytes of diff: 48899992 (overridden on cmd)
Total bytes of delta: -153 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -27 : 79515.dasm (-2.20 % of base)
         -23 : 70069.dasm (-0.50 % of base)
         -19 : 101930.dasm (-0.70 % of base)
         -11 : 192539.dasm (-0.93 % of base)
          -8 : 221414.dasm (-0.57 % of base)
          -8 : 221415.dasm (-0.45 % of base)
          -8 : 276481.dasm (-0.57 % of base)
          -8 : 276482.dasm (-0.46 % of base)
          -7 : 102209.dasm (-0.19 % of base)
          -7 : 269944.dasm (-1.09 % of base)
          -7 : 86094.dasm (-0.25 % of base)
          -7 : 86097.dasm (-0.17 % of base)
          -5 : 239851.dasm (-0.19 % of base)
          -4 : 120953.dasm (-0.37 % of base)
          -4 : 168768.dasm (-0.37 % of base)

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

Top method improvements (bytes):
         -27 (-2.20 % of base) : 79515.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 (-0.50 % of base) : 70069.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -19 (-0.70 % of base) : 101930.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
         -11 (-0.93 % of base) : 192539.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-0.57 % of base) : 221414.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.57 % of base) : 276481.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.45 % of base) : 221415.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.46 % of base) : 276482.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -7 (-0.17 % of base) : 86097.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.25 % of base) : 86094.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.19 % of base) : 102209.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 (-1.09 % of base) : 269944.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -5 (-0.19 % of base) : 239851.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
          -4 (-0.37 % of base) : 120953.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          -4 (-0.37 % of base) : 168768.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)

Top method improvements (percentages):
         -27 (-2.20 % of base) : 79515.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)
          -7 (-1.09 % of base) : 269944.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -11 (-0.93 % of base) : 192539.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -19 (-0.70 % of base) : 101930.dasm - Microsoft.CodeAnalysis.VisualBasic.OptionsValidator:ParseImports(System.Collections.Generic.IEnumerable`1[System.String],Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.GlobalImport[] (FullOpts)
          -8 (-0.57 % of base) : 276481.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -8 (-0.57 % of base) : 221414.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -23 (-0.50 % of base) : 70069.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -8 (-0.46 % of base) : 276482.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -8 (-0.45 % of base) : 221415.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
          -4 (-0.37 % of base) : 120953.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          -4 (-0.37 % of base) : 168768.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)
          -7 (-0.25 % of base) : 86094.dasm - Microsoft.CodeAnalysis.VisualBasic.CodeGen.CodeGenerator:EmitOnedimensionalElementInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte):this (FullOpts)
          -5 (-0.19 % of base) : 239851.dasm - System.Data.Odbc.OdbcDataReader:BuildMetaDataInfo():this (FullOpts)
          -7 (-0.19 % of base) : 102209.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.17 % of base) : 86097.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)

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


libraries_tests.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 185428227 (overridden on cmd)
Total bytes of diff: 185427483 (overridden on cmd)
Total bytes of delta: -744 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -51 : 381338.dasm (-2.39 % of base)
         -51 : 118265.dasm (-2.39 % of base)
         -47 : 327043.dasm (-2.25 % of base)
         -47 : 628116.dasm (-2.20 % of base)
         -44 : 217641.dasm (-2.03 % of base)
         -44 : 508316.dasm (-2.03 % of base)
         -41 : 237144.dasm (-1.82 % of base)
         -41 : 246616.dasm (-1.82 % of base)
         -38 : 338778.dasm (-1.73 % of base)
         -38 : 483381.dasm (-1.74 % of base)
         -37 : 275642.dasm (-1.71 % of base)
         -35 : 448915.dasm (-1.63 % of base)
         -31 : 171359.dasm (-1.46 % of base)
         -31 : 317857.dasm (-1.45 % of base)
         -31 : 305295.dasm (-1.45 % of base)
         -31 : 349418.dasm (-1.45 % of base)
         -28 : 625967.dasm (-1.34 % of base)
         -23 : 236905.dasm (-0.50 % of base)
         -15 : 237079.dasm (-4.02 % of base)
         -11 : 174443.dasm (-0.93 % of base)

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

Top method improvements (bytes):
         -51 (-2.39 % of base) : 381338.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -51 (-2.39 % of base) : 118265.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -47 (-2.25 % of base) : 327043.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -47 (-2.20 % of base) : 628116.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -44 (-2.03 % of base) : 217641.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -44 (-2.03 % of base) : 508316.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -41 (-1.82 % of base) : 237144.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -41 (-1.82 % of base) : 246616.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -38 (-1.73 % of base) : 338778.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -38 (-1.74 % of base) : 483381.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -37 (-1.71 % of base) : 275642.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -35 (-1.63 % of base) : 448915.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -31 (-1.46 % of base) : 171359.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -31 (-1.45 % of base) : 317857.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -31 (-1.45 % of base) : 305295.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -31 (-1.45 % of base) : 349418.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -28 (-1.34 % of base) : 625967.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (Tier0-FullOpts)
         -23 (-0.50 % of base) : 236905.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (Tier0-FullOpts)
         -15 (-4.02 % of base) : 237079.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (Tier0-FullOpts)
         -11 (-0.93 % of base) : 174443.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (Tier0-FullOpts)

Top method improvements (percentages):
         -15 (-4.02 % of base) : 237079.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (Tier0-FullOpts)
         -51 (-2.39 % of base) : 381338.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -51 (-2.39 % of base) : 118265.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -47 (-2.25 % of base) : 327043.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -47 (-2.20 % of base) : 628116.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -44 (-2.03 % of base) : 217641.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -44 (-2.03 % of base) : 508316.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -41 (-1.82 % of base) : 237144.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -41 (-1.82 % of base) : 246616.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -38 (-1.74 % of base) : 483381.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -38 (-1.73 % of base) : 338778.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -37 (-1.71 % of base) : 275642.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -35 (-1.63 % of base) : 448915.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -10 (-1.55 % of base) : 347996.dasm - System.Net.Cookie:set_Port(System.String):this (Tier0-FullOpts)
         -31 (-1.46 % of base) : 171359.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -31 (-1.45 % of base) : 305295.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -31 (-1.45 % of base) : 349418.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -31 (-1.45 % of base) : 317857.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
         -28 (-1.34 % of base) : 625967.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (Tier0-FullOpts)
          -7 (-1.14 % of base) : 356840.dasm - System.Net.Cookie:set_Port(System.String):this (Tier0-FullOpts)

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


librariestestsnotieredcompilation.run.windows.x86.Release.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 102142025 (overridden on cmd)
Total bytes of diff: 102141933 (overridden on cmd)
Total bytes of delta: -92 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -23 : 99271.dasm (-0.50 % of base)
         -17 : 311445.dasm (-0.75 % of base)
         -15 : 99311.dasm (-4.02 % of base)
         -11 : 62896.dasm (-0.93 % of base)
          -8 : 185203.dasm (-0.57 % of base)
          -7 : 160975.dasm (-1.14 % of base)
          -7 : 157676.dasm (-1.15 % of base)
          -4 : 4863.dasm (-0.37 % of base)

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

Top method improvements (bytes):
         -23 (-0.50 % of base) : 99271.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
         -17 (-0.75 % of base) : 311445.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
         -15 (-4.02 % of base) : 99311.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
         -11 (-0.93 % of base) : 62896.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
          -8 (-0.57 % of base) : 185203.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          -7 (-1.14 % of base) : 160975.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -7 (-1.15 % of base) : 157676.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -4 (-0.37 % of base) : 4863.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)

Top method improvements (percentages):
         -15 (-4.02 % of base) : 99311.dasm - System.Data.DataRowComparer:CompareEquatableArray[System.__Canon](System.__Canon[],System.__Canon[]):ubyte (FullOpts)
          -7 (-1.15 % of base) : 157676.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
          -7 (-1.14 % of base) : 160975.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
         -11 (-0.93 % of base) : 62896.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteEncodedStructMethod(System.Xml.Serialization.StructMapping):System.Object:this (FullOpts)
         -17 (-0.75 % of base) : 311445.dasm - System.Threading.Tests.AsyncLocalTests+<AddUpdateAndRemoveManyLocals_ReferenceType_NotifyOnChange>d__15:MoveNext():this (FullOpts)
          -8 (-0.57 % of base) : 185203.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
         -23 (-0.50 % of base) : 99271.dasm - System.Data.DataTable:DeserializeTableSchema(System.Runtime.Serialization.SerializationInfo,ubyte):this (FullOpts)
          -4 (-0.37 % of base) : 4863.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)

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


realworld.run.windows.x86.checked.mch

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 11369042 (overridden on cmd)
Total bytes of diff: 11368989 (overridden on cmd)
Total bytes of delta: -53 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file improvements (bytes):
         -32 : 15279.dasm (-0.43 % of base)
         -17 : 34093.dasm (-0.39 % of base)
          -4 : 20024.dasm (-0.37 % of base)

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

Top method improvements (bytes):
         -32 (-0.43 % of base) : 15279.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         -17 (-0.39 % of base) : 34093.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
          -4 (-0.37 % of base) : 20024.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)

Top method improvements (percentages):
         -32 (-0.43 % of base) : 15279.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
         -17 (-0.39 % of base) : 34093.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeMethod(System.Reflection.MethodBase,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],ubyte,int):System.Linq.Expressions.Expression (FullOpts)
          -4 (-0.37 % of base) : 20024.dasm - Microsoft.CodeAnalysis.Collections.SegmentedHashSet`1[System.__Canon]:AddIfNotPresent(System.__Canon,byref):ubyte:this (FullOpts)

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