Assembly Diffs

linux arm

Diffs are based on 2,238,225 contexts (827,812 MinOpts, 1,410,413 FullOpts).

MISSED contexts: base: 74,052 (3.20%), diff: 74,053 (3.20%)

Overall (-72,938 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 15,304,692 +962
benchmarks.run_pgo.linux.arm.checked.mch 60,239,130 -2,152
benchmarks.run_tiered.linux.arm.checked.mch 22,645,104 +672
coreclr_tests.run.linux.arm.checked.mch 321,777,660 -18,494
libraries.crossgen2.linux.arm.checked.mch 35,174,904 -1,196
libraries.pmi.linux.arm.checked.mch 49,554,486 -2,374
libraries_tests.run.linux.arm.Release.mch 241,721,946 -37,822
librariestestsnotieredcompilation.run.linux.arm.Release.mch 93,043,072 -12,090
realworld.run.linux.arm.checked.mch 13,613,084 -444

FullOpts (-72,938 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm.checked.mch 14,915,436 +962
benchmarks.run_pgo.linux.arm.checked.mch 49,441,528 -2,152
benchmarks.run_tiered.linux.arm.checked.mch 13,537,948 +672
coreclr_tests.run.linux.arm.checked.mch 109,047,526 -18,494
libraries.crossgen2.linux.arm.checked.mch 35,173,674 -1,196
libraries.pmi.linux.arm.checked.mch 49,447,982 -2,374
libraries_tests.run.linux.arm.Release.mch 119,719,002 -37,822
librariestestsnotieredcompilation.run.linux.arm.Release.mch 82,959,252 -12,090
realworld.run.linux.arm.checked.mch 13,163,138 -444

Example diffs

benchmarks.run.linux.arm.checked.mch

-4 (-5.00%) : 17780.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)

@@ -61,11 +61,8 @@ G_M65029_IG02:        ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
 G_M65029_IG03:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ldr     r2, [r0+0x04]
             cmp     r2, 0
-            beq     SHORT G_M65029_IG04
-            cmp     r1, 0
-            beq     SHORT G_M65029_IG08
-            b       SHORT G_M65029_IG07
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M65029_IG07
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M65029_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             cmp     r1, 0
@@ -83,21 +80,20 @@ G_M65029_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M65029_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+            cmp     r1, 0
+            beq     SHORT G_M65029_IG08
             ldr     r3, [r1+0x04]
             cmp     r3, 0
-            beq     SHORT G_M65029_IG08
-            adds    r0, 8
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            b       SHORT G_M65029_IG09
+            bne     SHORT G_M65029_IG09
                        ;; size=10 bbWeight=0.50 PerfScore 2.50
 G_M65029_IG08:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[r1] +[r0]
-            ; byrRegs -[r0]
+            ; gcrRegs -[r1]
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M65029_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref
-            ; gcrRegs -[r0] +[r1]
+G_M65029_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[r1]
+            adds    r0, 8
+            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             adds    r1, 8
             ; gcrRegs -[r1]
@@ -115,12 +111,12 @@ G_M65029_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1},
             blx     lr     // <unknown method>
             ; gcrRegs +[r0]
             ; byrRegs -[r0 r2]
-                       ;; size=22 bbWeight=0.50 PerfScore 4.00
+                       ;; size=24 bbWeight=0.50 PerfScore 4.50
 G_M65029_IG10:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 80, prolog size 6, PerfScore 17.50, instruction count 31, allocated bytes for code 80 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 76, prolog size 6, PerfScore 16.50, instruction count 29, allocated bytes for code 76 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -132,7 +128,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 40 (0x00028) Actual length = 80 (0x000050)
+  Function Length   : 38 (0x00026) Actual length = 76 (0x00004c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-4.55%) : 5449.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)

@@ -80,11 +80,8 @@ G_M49441_IG02:        ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
 G_M49441_IG03:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ldr     r2, [r0+0x04]
             cmp     r2, 0
-            beq     SHORT G_M49441_IG04
-            cmp     r1, 0
-            beq     SHORT G_M49441_IG07
-            b       SHORT G_M49441_IG06
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M49441_IG06
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M49441_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             mov     r0, r1
@@ -94,31 +91,30 @@ G_M49441_IG05:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M49441_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+            cmp     r1, 0
+            beq     SHORT G_M49441_IG07
             ldr     r3, [r1+0x04]
             cmp     r3, 0
-            beq     SHORT G_M49441_IG07
+            bne     SHORT G_M49441_IG08
+                       ;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[r1]
+            pop     {r3,r4,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M49441_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs +[r1]
             add     lr, r1, 8
             ; byrRegs +[lr]
             mov     r12, lr
             ; byrRegs +[r12]
             mov     r4, r3
-            b       SHORT G_M49441_IG08
-                       ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M49441_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[r1]
-            ; byrRegs -[r12 lr]
-            pop     {r3,r4,r11,pc}
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49441_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=5000 {r12 lr}, gcvars, byref, isz
-            ; gcrRegs +[r1]
-            ; byrRegs +[r12 lr]
             cmp     r4, 0
             ble     SHORT G_M49441_IG09
             ldrh    r12, [r12]
             ; byrRegs -[r12]
             cmp     r12, 47
             beq     SHORT G_M49441_IG04
-                       ;; size=14 bbWeight=0.50 PerfScore 2.50
+                       ;; size=22 bbWeight=0.50 PerfScore 4.00
 G_M49441_IG09:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref
             ; gcrRegs -[r1]
             adds    r0, 8
@@ -139,7 +135,7 @@ G_M49441_IG10:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 88, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 88 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 84, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 84 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -151,7 +147,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 44 (0x0002c) Actual length = 88 (0x000058)
+  Function Length   : 42 (0x0002a) Actual length = 84 (0x000054)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-30 (-3.52%) : 16608.dasm - System.Xml.XmlBinaryReader:ReadElementContentAsInt():int:this (FullOpts)

@@ -9,16 +9,16 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 30, 13.50)     ref  ->   r4         this class-hnd single-def <System.Xml.XmlBinaryReader>
-;  V01 loc0         [V01,T05] (  7,  3.50)     int  ->   r9        
-;  V02 loc1         [V02,T19] (  4,  2   )     int  ->   r7        
+;  V01 loc0         [V01,T05] (  7,  3.50)     int  ->   r7        
+;  V02 loc1         [V02,T19] (  4,  2   )     int  ->   r6        
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Xml.XmlBaseReader+XmlNode>
 ;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "non-inline candidate call" <System.String>
 ;* V06 tmp3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V07 tmp4         [V07,T24] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V08 tmp5         [V08,T02] (  8,  8   )     ref  ->   r5         class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
-;  V09 tmp6         [V09,T22] (  3,  1.50)   ubyte  ->   r7         "Inline return value spill temp"
-;  V10 tmp7         [V10,T20] (  4,  2   )     int  ->   r6         "Inline stloc first use temp"
+;  V09 tmp6         [V09,T22] (  3,  1.50)   ubyte  ->   r6         "Inline return value spill temp"
+;  V10 tmp7         [V10,T20] (  4,  2   )     int  ->   r0         "Inline stloc first use temp"
 ;  V11 tmp8         [V11,T06] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
 ;* V12 tmp9         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V13 tmp10        [V13,T07] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
@@ -27,7 +27,7 @@
 ;  V16 tmp13        [V16,T01] (  9,  9   )     ref  ->   r5         class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
 ;* V17 tmp14        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
 ;  V18 tmp15        [V18,T23] (  3,  1.50)   ubyte  ->   r6         "Inline return value spill temp"
-;  V19 tmp16        [V19,T21] (  4,  2   )     int  ->   r8         "Inline stloc first use temp"
+;  V19 tmp16        [V19,T21] (  4,  2   )     int  ->   r6         "Inline stloc first use temp"
 ;* V20 tmp17        [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;  V21 tmp18        [V21,T09] (  3,  3   )     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
 ;  V22 tmp19        [V22,T10] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Inlining Arg" <System.Xml.XmlBufferReader>
@@ -38,7 +38,7 @@
 ;  V27 tmp24        [V27,T26] (  2,  0   )     ref  ->   r2         single-def "argument with side effect"
 ;  V28 tmp25        [V28,T12] (  3,  3   )     ref  ->   r0         single-def "arr expr"
 ;  V29 tmp26        [V29,T16] (  3,  3   )     int  ->   r3         "index expr"
-;  V30 tmp27        [V30,T13] (  3,  3   )     ref  ->   r0         single-def "arr expr"
+;  V30 tmp27        [V30,T13] (  3,  3   )     ref  ->   r3         single-def "arr expr"
 ;  V31 tmp28        [V31,T27] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
 ;  V32 tmp29        [V32,T28] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
 ;  V33 tmp30        [V33,T29] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
@@ -47,15 +47,15 @@
 ;  V36 tmp33        [V36,T17] (  3,  3   )     int  ->   r3         "index expr"
 ;  V37 tmp34        [V37,T15] (  3,  3   )     ref  ->   r0         single-def "arr expr"
 ;  V38 tmp35        [V38,T31] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
-;  V39 cse0         [V39,T04] ( 11,  5.50)     int  ->   r8         multi-def "CSE - aggressive"
+;  V39 cse0         [V39,T04] ( 11,  5.50)     int  ->   r6         multi-def "CSE - aggressive"
 ;  V40 cse1         [V40,T03] ( 13,  6.50)     ref  ->   r0         multi-def "CSE - aggressive"
-;  V41 rat0         [V41,T18] (  3,  3   )     int  ->   r7         "ReplaceWithLclVar is creating a new local variable"
+;  V41 rat0         [V41,T18] (  3,  3   )     int  ->   r5         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 8
 
 G_M45055_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r6,r7,r8,r9,r11,lr}
-            add     r11, sp, 32
+            push    {r2,r3,r4,r5,r6,r7,r11,lr}
+            add     r11, sp, 24
             mov     r4, r0
             ; gcrRegs +[r4]
                        ;; size=10 bbWeight=1 PerfScore 3.00
@@ -87,17 +87,9 @@ G_M45055_IG04:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
 G_M45055_IG05:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldrb    r0, [r4+0x7A]
             cmp     r0, 0
-            bne     SHORT G_M45055_IG06
-            ldr     r5, [r4+0x04]
-            ; gcrRegs +[r5]
-            ldr     r6, [r5+0x2C]
-            ldr     r0, [r5+0x28]
-            cmp     r6, r0
-            bge     SHORT G_M45055_IG09
-            b       SHORT G_M45055_IG08
-                       ;; size=20 bbWeight=0.50 PerfScore 4.50
+            beq     SHORT G_M45055_IG08
+                       ;; size=8 bbWeight=0.50 PerfScore 1.50
 G_M45055_IG06:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r5]
             mov     r0, r4
             ; gcrRegs +[r0]
             movw    r3, 0xd1ff
@@ -106,25 +98,31 @@ G_M45055_IG06:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
                        ;; size=12 bbWeight=0.50 PerfScore 2.00
 G_M45055_IG07:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 8
-            pop     {r4,r5,r6,r7,r8,r9,r11,lr}
+            pop     {r4,r5,r6,r7,r11,lr}
             bx      r3     // System.Xml.XmlDictionaryReader:ReadElementContentAsInt():int:this
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M45055_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[r0] +[r5]
-            ldr     r0, [r5+0x10]
-            ; gcrRegs +[r0]
-            ldr     r3, [r0+0x04]
-            cmp     r6, r3
-            bhs     G_M45055_IG24
-            adds    r0, 8
+G_M45055_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            ldrb    r7, [r0+r6]
+            ldr     r5, [r4+0x04]
+            ; gcrRegs +[r5]
+            ldr     r0, [r5+0x2C]
+            ldr     r3, [r5+0x28]
+            cmp     r0, r3
+            bge     SHORT G_M45055_IG09
+            ldr     r3, [r5+0x10]
+            ; gcrRegs +[r3]
+            ldr     r2, [r3+0x04]
+            cmp     r0, r2
+            bhs     G_M45055_IG24
+            adds    r3, 8
+            ; gcrRegs -[r3]
+            ; byrRegs +[r3]
+            ldrb    r6, [r3+r0]
             b       SHORT G_M45055_IG11
-                       ;; size=16 bbWeight=0.50 PerfScore 3.50
+                       ;; size=26 bbWeight=0.50 PerfScore 6.00
 G_M45055_IG09:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ; byrRegs -[r0]
+            ; byrRegs -[r3]
             mov     r0, r5
             ; gcrRegs +[r0]
             movw    r3, 0xd1ff
@@ -154,17 +152,17 @@ G_M45055_IG10:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             adds    r0, 8
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldrb    r7, [r0+r3]
+            ldrb    r6, [r0+r3]
                        ;; size=16 bbWeight=0.50 PerfScore 3.50
 G_M45055_IG11:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r5]
             ; byrRegs -[r0]
-            cmp     r7, 129
+            cmp     r6, 129
             beq     SHORT G_M45055_IG12
-            cmp     r7, 131
+            cmp     r6, 131
             beq     SHORT G_M45055_IG14
-            subs    r7, 137
-            cmp     r7, 4
+            sub     r5, r6, 137
+            cmp     r5, 4
             bhi     G_M45055_IG21
             movw    r0, LOW ADDRESS J_M45055_DS00
             movt    r0, HIGH ADDRESS J_M45055_DS00
@@ -175,20 +173,20 @@ G_M45055_IG11:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             DD      G_M45055_IG19
             DD      G_M45055_IG21
             DD      G_M45055_IG20
-            ldr     pc, [r0+4*r7]
-                       ;; size=28 bbWeight=0.50 PerfScore 5.00
+            ldr     pc, [r0+4*r5]
+                       ;; size=30 bbWeight=0.50 PerfScore 5.00
 G_M45055_IG12:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [r4+0x04]
             ; gcrRegs +[r0]
             ldr     r3, [r0+0x2C]
-            add     r8, r3, 1
-            str     r8, [r0+0x2C]
-            mov     r9, 0
+            adds    r6, r3, 1
+            str     r6, [r0+0x2C]
+            movs    r7, 0
             ldr     r0, [r4+0x60]
             ; gcrRegs -[r0]
             cmp     r0, 0
             beq     G_M45055_IG26
-                       ;; size=24 bbWeight=0.50 PerfScore 4.00
+                       ;; size=18 bbWeight=0.50 PerfScore 4.00
 G_M45055_IG13:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [r4+0x60]
             subs    r0, r0, 1
@@ -217,41 +215,41 @@ G_M45055_IG14:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             ldr     r0, [r4+0x04]
             ; gcrRegs +[r0]
             ldr     r3, [r0+0x2C]
-            add     r8, r3, 1
-            str     r8, [r0+0x2C]
-            mov     r9, 1
+            adds    r6, r3, 1
+            str     r6, [r0+0x2C]
+            movs    r7, 1
             ldr     r0, [r4+0x60]
             ; gcrRegs -[r0]
             cmp     r0, 0
             beq     G_M45055_IG27
             b       SHORT G_M45055_IG13
-                       ;; size=26 bbWeight=0.50 PerfScore 4.50
+                       ;; size=20 bbWeight=0.50 PerfScore 4.50
 G_M45055_IG15:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [r4+0x04]
             ; gcrRegs +[r0]
             mov     r3, r0
             ; gcrRegs +[r3]
             ldr     r2, [r3+0x2C]
-            add     r8, r2, 1
-            str     r8, [r3+0x2C]
+            adds    r6, r2, 1
+            str     r6, [r3+0x2C]
             mov     r5, r0
             ; gcrRegs +[r5]
             ldr     r0, [r5+0x28]
             ; gcrRegs -[r0]
-            cmp     r8, r0
+            cmp     r6, r0
             bge     SHORT G_M45055_IG16
             ldr     r0, [r5+0x10]
             ; gcrRegs +[r0]
             ldr     r3, [r0+0x04]
             ; gcrRegs -[r3]
-            cmp     r8, r3
+            cmp     r6, r3
             bhs     SHORT G_M45055_IG24
             adds    r0, 8
             ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            ldrb    r6, [r0+r8]
+            ldrb    r6, [r0+r6]
             b       SHORT G_M45055_IG18
-                       ;; size=38 bbWeight=0.50 PerfScore 8.00
+                       ;; size=32 bbWeight=0.50 PerfScore 8.00
 G_M45055_IG16:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ; byrRegs -[r0]
             mov     r0, r5
@@ -290,12 +288,12 @@ G_M45055_IG18:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}
             ldr     r0, [r5+0x2C]
             adds    r0, r0, 1
             str     r0, [r5+0x2C]
-            sxtb    r9, r6
+            sxtb    r7, r6
             ldr     r0, [r4+0x60]
             cmp     r0, 0
             beq     G_M45055_IG28
             b       SHORT G_M45055_IG13
-                       ;; size=20 bbWeight=0.50 PerfScore 4.00
+                       ;; size=18 bbWeight=0.50 PerfScore 4.00
 G_M45055_IG19:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r5]
             ldr     r0, [r4+0x04]
@@ -303,8 +301,8 @@ G_M45055_IG19:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, b
             mov     r3, r0
             ; gcrRegs +[r3]
             ldr     r2, [r3+0x2C]
-            add     r8, r2, 1
-            str     r8, [r3+0x2C]
+            adds    r6, r2, 1
+            str     r6, [r3+0x2C]
             ldrsb   r3, [r0]
...

+6 (+4.62%) : 27196.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)

@@ -37,78 +37,82 @@ G_M44751_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byre
             adds    r1, r0, r1
             mov     lr, 0
             cmp     r0, r1
-            bhs     SHORT G_M44751_IG13
+            bhs     SHORT G_M44751_IG05
                        ;; size=12 bbWeight=1 PerfScore 5.00
 G_M44751_IG03:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             add     r12, r0, 2
             ldrh    r0, [r0]
             cmp     r0, 128
-            bge     SHORT G_M44751_IG05
+            bge     SHORT G_M44751_IG06
                        ;; size=10 bbWeight=4 PerfScore 16.00
 G_M44751_IG04:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             movs    r4, 1
-            b       SHORT G_M44751_IG08
+            b       SHORT G_M44751_IG09
                        ;; size=4 bbWeight=2 PerfScore 4.00
-G_M44751_IG05:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
-            cmp     r0, 0x800
-            bge     SHORT G_M44751_IG06
-            movs    r4, 2
-            b       SHORT G_M44751_IG08
-                       ;; size=10 bbWeight=2 PerfScore 8.00
+G_M44751_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+            mov     r12, r0
+            b       SHORT G_M44751_IG14
+                       ;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M44751_IG06:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+            cmp     r0, 0x800
+            bge     SHORT G_M44751_IG07
+            movs    r4, 2
+            b       SHORT G_M44751_IG09
+                       ;; size=10 bbWeight=2 PerfScore 8.00
+G_M44751_IG07:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             sub     r0, r0, 0xd800
             movw    r4, 0xd1ff
             cmp     r0, r4
-            bhi     SHORT G_M44751_IG07
+            bhi     SHORT G_M44751_IG08
             cmp     r12, r1
-            bhs     SHORT G_M44751_IG07
+            bhs     SHORT G_M44751_IG08
             ldrh    r0, [r12]
             sub     r0, r0, 0xdc00
             movw    r4, 0xd1ff
             cmp     r0, r4
-            bhi     SHORT G_M44751_IG07
+            bhi     SHORT G_M44751_IG08
             movs    r4, 4
             add     r12, r12, 2
-            b       SHORT G_M44751_IG08
+            b       SHORT G_M44751_IG09
                        ;; size=40 bbWeight=2 PerfScore 28.00
-G_M44751_IG07:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG08:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
             movs    r4, 3
                        ;; size=2 bbWeight=2 PerfScore 2.00
-G_M44751_IG08:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+G_M44751_IG09:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             add     r0, lr, r4
             cmp     r0, r2
-            bgt     SHORT G_M44751_IG10
+            bgt     SHORT G_M44751_IG11
             mov     lr, r0
             cmp     r12, r1
-            mov     r0, r12
-            blo     SHORT G_M44751_IG03
+            blo     SHORT G_M44751_IG10
+            b       SHORT G_M44751_IG14
                        ;; size=16 bbWeight=4 PerfScore 28.00
-G_M44751_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
-            b       SHORT G_M44751_IG13
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44751_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+G_M44751_IG10:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+            mov     r0, r12
+            b       SHORT G_M44751_IG03
+                       ;; size=4 bbWeight=2 PerfScore 4.00
+G_M44751_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             cmp     r4, 4
-            blt     SHORT G_M44751_IG11
+            blt     SHORT G_M44751_IG12
             movs    r0, 2
-            b       SHORT G_M44751_IG12
+            b       SHORT G_M44751_IG13
                        ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M44751_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
             movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44751_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
             lsls    r0, r0, 1
             sub     r12, r12, r0
-            mov     r0, r12
-                       ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M44751_IG13:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
-            str     r0, [r3]
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M44751_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+            str     r12, [r3]
             mov     r0, lr
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M44751_IG14:        ; bbWeight=1, epilog, nogc, extend
+                       ;; size=6 bbWeight=1 PerfScore 2.00
+G_M44751_IG15:        ; bbWeight=1, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 130, prolog size 8, PerfScore 100.50, instruction count 51, allocated bytes for code 130 (MethodHash=6d775130) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 104.50, instruction count 53, allocated bytes for code 136 (MethodHash=6d775130) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -120,7 +124,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 65 (0x00041) Actual length = 130 (0x000082)
+  Function Length   : 68 (0x00044) Actual length = 136 (0x000088)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

+4 (+4.76%) : 17450.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)

@@ -16,7 +16,7 @@
 ;
 ; Lcl frame size = 0
 
-G_M26551_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M26551_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r11,lr}
             add     r11, sp, 16
             mov     r4, r0
@@ -39,17 +39,17 @@ G_M26551_IG03:        ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             movt    r0, HIGH ADDRESS J_M26551_DS00
 
     J_M26551_DS00 LABEL   DWORD
-            DD      G_M26551_IG05
             DD      G_M26551_IG07
             DD      G_M26551_IG05
-            DD      G_M26551_IG05
-            DD      G_M26551_IG05
+            DD      G_M26551_IG07
+            DD      G_M26551_IG07
+            DD      G_M26551_IG07
             ldr     pc, [r0+4*r7]
                        ;; size=24 bbWeight=8 PerfScore 72.00
 G_M26551_IG04:        ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             subs    r0, 15
             cmp     r0, 1
-            bls     SHORT G_M26551_IG05
+            bls     SHORT G_M26551_IG07
             mov     r0, r4
             ; gcrRegs +[r0]
             ldr     r3, [r5+0x4C]
@@ -58,18 +58,9 @@ G_M26551_IG04:        ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             ; gcrRegs -[r0]
             cmp     r0, 0
             bne     SHORT G_M26551_IG03
-                       ;; size=18 bbWeight=4 PerfScore 36.00
+            b       SHORT G_M26551_IG09
+                       ;; size=20 bbWeight=4 PerfScore 40.00
 G_M26551_IG05:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
-            mov     r0, r4
-            ; gcrRegs +[r0]
-            ldr     r3, [r6+0x14]
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M26551_IG06:        ; bbWeight=0.50, epilog, nogc, extend
-            pop     {r4,r5,r6,r7,r11,lr}
-            bx      r3     // <unknown method>
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M26551_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[r0]
             mov     r0, r4
             ; gcrRegs +[r0]
             ldr     r3, [r5+0x4C]
@@ -80,18 +71,32 @@ G_M26551_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4},
             ; gcrRegs +[r0]
             ldr     r3, [r6+0x14]
                        ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M26551_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+            pop     {r4,r5,r6,r7,r11,lr}
+            bx      r3     // <unknown method>
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M26551_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r0]
+            mov     r0, r4
+            ; gcrRegs +[r0]
+            ldr     r3, [r6+0x14]
+                       ;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M26551_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r4,r5,r6,r7,r11,lr}
             bx      r3     // <unknown method>
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-RWD00      dd  G_M26551_IG05
+G_M26551_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[r0]
+            b       SHORT G_M26551_IG07
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
+RWD00      dd  G_M26551_IG07
+           dd  G_M26551_IG05
+           dd  G_M26551_IG07
+           dd  G_M26551_IG07
            dd  G_M26551_IG07
-           dd  G_M26551_IG05
-           dd  G_M26551_IG05
-           dd  G_M26551_IG05
 
 
-; Total bytes of code 84, prolog size 8, PerfScore 119.00, instruction count 35, allocated bytes for code 84 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 123.50, instruction count 37, allocated bytes for code 88 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -103,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 84 (0x000054)
+  Function Length   : 44 (0x0002c) Actual length = 88 (0x000058)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+14 (+6.03%) : 14084.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)

@@ -9,95 +9,90 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 12,  8.50)   byref  ->   r0         this single-def
-;  V01 loc0         [V01,T01] (  7,  4.50)   ubyte  ->   r4        
+;  V01 loc0         [V01,T01] (  7,  4.50)   ubyte  ->   r3        
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T11] (  3,  0   )     ref  ->   r4         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V04 tmp2         [V04,T07] (  3,  1.50)     int  ->   r3        
 ;  V05 tmp3         [V05,T08] (  3,  1.50)     int  ->   r3        
 ;* V06 tmp4         [V06,T09] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V07 tmp5         [V07,T06] (  2,  2   )   byref  ->   r3         single-def "Inlining Arg"
+;  V07 tmp5         [V07,T06] (  2,  2   )   byref  ->   r1         single-def "Inlining Arg"
 ;* V08 tmp6         [V08,T10] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V09 tmp7         [V09    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V10 tmp8         [V10,T12] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
-;  V11 cse0         [V11,T05] (  5,  2.50)     int  ->   r3         "CSE - aggressive"
-;  V12 cse1         [V12,T02] (  8,  4   )     ref  ->   r6         multi-def "CSE - aggressive"
-;  V13 cse2         [V13,T04] (  5,  3.50)     ref  ->   r3         multi-def "CSE - aggressive"
-;  V14 cse3         [V14,T03] (  6,  4   )     ref  ->   r5         "CSE - aggressive"
+;  V11 cse0         [V11,T05] (  5,  2.50)     int  ->   r1         "CSE - aggressive"
+;  V12 cse1         [V12,T02] (  8,  4   )     ref  ->   lr         multi-def "CSE - aggressive"
+;  V13 cse2         [V13,T04] (  5,  3.50)     ref  ->   r1         multi-def "CSE - aggressive"
+;  V14 cse3         [V14,T03] (  6,  4   )     ref  ->   r2         "CSE - aggressive"
 ;
 ; Lcl frame size = 4
 
 G_M35532_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r3,r4,r5,r6,r11,lr}
-            add     r11, sp, 16
+            push    {r3,r4,r11,lr}
+            add     r11, sp, 8
                        ;; size=8 bbWeight=1 PerfScore 2.00
 G_M35532_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
             ; byrRegs +[r0]
-            movs    r4, 1
-            ldr     r5, [r0]
-            ; gcrRegs +[r5]
-            cmp     r5, 0
+            movs    r3, 1
+            ldr     r2, [r0]
+            ; gcrRegs +[r2]
+            cmp     r2, 0
             beq     SHORT G_M35532_IG04
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M35532_IG03:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            ldr     r3, [r0+0x08]
-            ; gcrRegs +[r3]
-            cmp     r3, 0
+G_M35532_IG03:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            ldr     r1, [r0+0x08]
+            ; gcrRegs +[r1]
+            cmp     r1, 0
             bne     SHORT G_M35532_IG04
-            ldr     r6, [r0+0x04]
-            ; gcrRegs +[r6]
-            cmp     r6, 0
+            ldr     lr, [r0+0x04]
+            ; gcrRegs +[lr]
+            cmp     lr, 0
             bne     SHORT G_M35532_IG04
-            movs    r4, 0
-                       ;; size=14 bbWeight=0.50 PerfScore 3.50
-G_M35532_IG04:        ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            ; gcrRegs -[r3 r6]
-            ldr     r3, [r0+0x08]
-            ; gcrRegs +[r3]
-            cmp     r3, 0
+            movs    r3, 0
+                       ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M35532_IG04:        ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            ; gcrRegs -[r1 lr]
+            ldr     r1, [r0+0x08]
+            ; gcrRegs +[r1]
+            cmp     r1, 0
             beq     SHORT G_M35532_IG06
                        ;; size=6 bbWeight=1 PerfScore 3.00
-G_M35532_IG05:        ; bbWeight=0.50, gcrefRegs=0028 {r3 r5}, byrefRegs=0001 {r0}, byref, isz
-            ldr     r6, [r0+0x04]
-            ; gcrRegs +[r6]
-            cmp     r6, 0
+G_M35532_IG05:        ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0001 {r0}, byref, isz
+            ldr     lr, [r0+0x04]
+            ; gcrRegs +[lr]
+            cmp     lr, 0
             beq     SHORT G_M35532_IG06
-            ldr     r3, [r3+0x04]
-            ; gcrRegs -[r3]
-            ldr     r2, [r6+0x04]
-            cmp     r3, r2
+            ldr     r1, [r1+0x04]
+            ; gcrRegs -[r1]
+            ldr     lr, [lr+0x04]
+            ; gcrRegs -[lr]
+            cmp     r1, lr
             bne     SHORT G_M35532_IG06
-            movs    r4, 0
+            movs    r3, 0
             b       SHORT G_M35532_IG07
-                       ;; size=18 bbWeight=0.50 PerfScore 4.50
-G_M35532_IG06:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            ; gcrRegs -[r6]
-            cmp     r4, 0
+                       ;; size=24 bbWeight=0.50 PerfScore 4.50
+G_M35532_IG06:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            cmp     r3, 0
             bne     SHORT G_M35532_IG18
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M35532_IG07:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            add     r3, r0, 12
-            ; byrRegs +[r3]
-            ldr     r3, [r3+0x20]
-            ; byrRegs -[r3]
-            cmp     r3, 1
+G_M35532_IG07:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            add     r1, r0, 12
+            ; byrRegs +[r1]
+            ldr     r1, [r1+0x20]
+            ; byrRegs -[r1]
+            cmp     r1, 1
             beq     SHORT G_M35532_IG08
-            cmp     r3, 3
+            cmp     r1, 3
             beq     SHORT G_M35532_IG08
-            cmp     r3, 2
+            cmp     r1, 2
             beq     SHORT G_M35532_IG08
-            cmp     r3, 4
-            beq     SHORT G_M35532_IG08
-            ldr     r3, [r0+0x2C]
-            cmp     r3, 5
-            bne     SHORT G_M35532_IG18
-            b       SHORT G_M35532_IG13
-                       ;; size=30 bbWeight=0.50 PerfScore 7.00
-G_M35532_IG08:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r5, 0
+            cmp     r1, 4
+            bne     SHORT G_M35532_IG13
+                       ;; size=22 bbWeight=0.50 PerfScore 5.00
+G_M35532_IG08:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            cmp     r2, 0
             beq     SHORT G_M35532_IG11
-            ldr     r3, [r5+0x04]
+            ldr     r3, [r2+0x04]
             ldr     r2, [r0+0x14]
-            ; gcrRegs +[r2]
             ldr     r2, [r2+0x04]
             ; gcrRegs -[r2]
             cmp     r3, r2
@@ -106,7 +101,6 @@ G_M35532_IG08:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0},
             b       SHORT G_M35532_IG10
                        ;; size=18 bbWeight=0.50 PerfScore 4.50
 G_M35532_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
-            ; gcrRegs -[r5]
             movs    r3, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
@@ -116,26 +110,30 @@ G_M35532_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
             movs    r3, 0
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            uxtb    r4, r3
+            uxtb    r3, r3
             b       SHORT G_M35532_IG18
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M35532_IG13:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            ; gcrRegs +[r5]
-            ldr     r6, [r0+0x04]
-            ; gcrRegs +[r6]
-            cmp     r6, 0
+G_M35532_IG13:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            ; gcrRegs +[r2]
+            ldr     r1, [r0+0x2C]
+            cmp     r1, 5
+            bne     SHORT G_M35532_IG18
+            ldr     lr, [r0+0x04]
+            ; gcrRegs +[lr]
+            cmp     lr, 0
             beq     SHORT G_M35532_IG18
-            cmp     r5, 0
+            cmp     r2, 0
             beq     SHORT G_M35532_IG16
-            ldr     r3, [r5+0x04]
-            ldr     r2, [r6+0x04]
+            ldr     r3, [r2+0x04]
+            ldr     r2, [lr+0x04]
+            ; gcrRegs -[r2]
             cmp     r3, r2
             bne     SHORT G_M35532_IG14
             movs    r3, 0
             b       SHORT G_M35532_IG15
-                       ;; size=22 bbWeight=0.50 PerfScore 5.50
+                       ;; size=34 bbWeight=0.50 PerfScore 7.00
 G_M35532_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
-            ; gcrRegs -[r5-r6]
+            ; gcrRegs -[lr]
             movs    r3, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG15:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
@@ -145,10 +143,10 @@ G_M35532_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
             movs    r3, 0
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG17:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
-            uxtb    r4, r3
+            uxtb    r3, r3
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG18:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r4, 0
+            cmp     r3, 0
             bne     SHORT G_M35532_IG20
             adds    r0, 12
             movw    r3, 0xd1ff
@@ -157,7 +155,7 @@ G_M35532_IG18:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
                        ;; size=16 bbWeight=1 PerfScore 6.00
 G_M35532_IG19:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 4
-            pop     {r4,r5,r6,r11,lr}
+            pop     {r4,r11,lr}
             bx      r3     // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=1 PerfScore 3.00
@@ -196,7 +194,7 @@ G_M35532_IG20:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=62 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 232, prolog size 8, PerfScore 48.50, instruction count 100, allocated bytes for code 232 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
+; Total bytes of code 246, prolog size 8, PerfScore 48.00, instruction count 99, allocated bytes for code 246 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -208,18 +206,18 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 116 (0x00074) Actual length = 232 (0x0000e8)
+  Function Length   : 123 (0x0007b) Actual length = 246 (0x0000f6)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 3 (0x03)
   ---- Unwind codes ----
-    A8 78       pop {r3,r4,r5,r6,r11,lr}            ; opsize 32
+    A8 18       pop {r3,r4,r11,lr}                  ; opsize 32
     FF          end
     ---- Epilog start at index 3 ----
     01          add sp, sp, #4                      ; opsize 16
-    A8 70       pop {r4,r5,r6,r11,lr}               ; opsize 32
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
...

benchmarks.run_pgo.linux.arm.checked.mch

-4 (-9.09%) : 17325.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)

@@ -39,29 +39,21 @@ G_M52491_IG05:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0009 {r0 r3},
             ; gcrRegs +[r0 r3]
             uxtb    r2, r1
             cmp     r2, 0
-            beq     SHORT G_M52491_IG07
-                       ;; size=6 bbWeight=1 PerfScore 3.00
-G_M52491_IG06:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r3]
-            b       SHORT G_M52491_IG08
-                       ;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG07:        ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[r3]
+            bne     SHORT G_M52491_IG06
             ldr     r3, [r3+0x30]
             ; gcrRegs -[r3]
             and     r3, r3, 7
             cmp     r3, 6
-            beq     SHORT G_M52491_IG08
-            b       SHORT G_M52491_IG03
-                       ;; size=12 bbWeight=1 PerfScore 5.00
-G_M52491_IG08:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+            bne     SHORT G_M52491_IG03
+                       ;; size=16 bbWeight=1 PerfScore 7.00
+G_M52491_IG06:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
             ldr     r0, [r0+0x10]
                        ;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M52491_IG07:        ; bbWeight=0, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 44, prolog size 6, PerfScore 13.00, instruction count 18, allocated bytes for code 44 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 40, prolog size 6, PerfScore 12.00, instruction count 16, allocated bytes for code 40 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -73,7 +65,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 22 (0x00016) Actual length = 44 (0x00002c)
+  Function Length   : 20 (0x00014) Actual length = 40 (0x000028)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-9.09%) : 24573.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)

@@ -39,29 +39,21 @@ G_M57887_IG05:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0009 {r0 r3},
             ; gcrRegs +[r0 r3]
             uxtb    r2, r1
             cmp     r2, 0
-            beq     SHORT G_M57887_IG07
-                       ;; size=6 bbWeight=1 PerfScore 3.00
-G_M57887_IG06:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r3]
-            b       SHORT G_M57887_IG08
-                       ;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG07:        ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[r3]
+            bne     SHORT G_M57887_IG06
             ldr     r3, [r3+0x30]
             ; gcrRegs -[r3]
             and     r3, r3, 7
             cmp     r3, 6
-            beq     SHORT G_M57887_IG08
-            b       SHORT G_M57887_IG03
-                       ;; size=12 bbWeight=1 PerfScore 5.00
-G_M57887_IG08:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+            bne     SHORT G_M57887_IG03
+                       ;; size=16 bbWeight=1 PerfScore 7.00
+G_M57887_IG06:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
             ldr     r0, [r0+0x0C]
                        ;; size=2 bbWeight=0 PerfScore 0.00
-G_M57887_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M57887_IG07:        ; bbWeight=0, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 44, prolog size 6, PerfScore 13.00, instruction count 18, allocated bytes for code 44 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 40, prolog size 6, PerfScore 12.00, instruction count 16, allocated bytes for code 40 (MethodHash=f3d51de0) for method System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -73,7 +65,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 22 (0x00016) Actual length = 44 (0x00002c)
+  Function Length   : 20 (0x00014) Actual length = 40 (0x000028)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-9.09%) : 31393.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)

@@ -39,29 +39,21 @@ G_M52491_IG05:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0009 {r0 r3},
             ; gcrRegs +[r0 r3]
             uxtb    r2, r1
             cmp     r2, 0
-            beq     SHORT G_M52491_IG07
-                       ;; size=6 bbWeight=1 PerfScore 3.00
-G_M52491_IG06:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r3]
-            b       SHORT G_M52491_IG08
-                       ;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG07:        ; bbWeight=1, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs +[r3]
+            bne     SHORT G_M52491_IG06
             ldr     r3, [r3+0x30]
             ; gcrRegs -[r3]
             and     r3, r3, 7
             cmp     r3, 6
-            beq     SHORT G_M52491_IG08
-            b       SHORT G_M52491_IG03
-                       ;; size=12 bbWeight=1 PerfScore 5.00
-G_M52491_IG08:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
+            bne     SHORT G_M52491_IG03
+                       ;; size=16 bbWeight=1 PerfScore 7.00
+G_M52491_IG06:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
             ldr     r0, [r0+0x10]
                        ;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG09:        ; bbWeight=0, epilog, nogc, extend
+G_M52491_IG07:        ; bbWeight=0, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 44, prolog size 6, PerfScore 13.00, instruction count 18, allocated bytes for code 44 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 40, prolog size 6, PerfScore 12.00, instruction count 16, allocated bytes for code 40 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -73,7 +65,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 22 (0x00016) Actual length = 44 (0x00002c)
+  Function Length   : 20 (0x00014) Actual length = 40 (0x000028)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+5.94%) : 120204.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)

@@ -5,22 +5,22 @@
 ; optimized using Dynamic PGO
 ; r11 based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 2280
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 2280
 ; 5 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T03] (  6,  3   )     ref  ->   r7         this class-hnd single-def <System.Text.Encoding>
 ;  V01 arg1         [V01,T02] (  7,  5   )     int  ->   r6         single-def
-;  V02 arg2         [V02,T00] (  9,  6.00)     int  ->   r4         single-def
+;  V02 arg2         [V02,T00] ( 11,  6.00)     int  ->   r4         single-def
 ;  V03 arg3         [V03,T01] (  7,  5.00)     int  ->   r5         single-def
 ;  V04 arg4         [V04,T06] (  5,  2.00)     int  ->   r9         single-def
-;  V05 arg5         [V05,T04] (  4,  3.00)     ref  ->   r8         class-hnd single-def <System.Text.DecoderNLS>
-;  V06 loc0         [V06,T07] (  3,  2.00)     int  ->  r10        
-;  V07 loc1         [V07    ] (  5,  3.00)     int  ->  [sp+0x1C]  do-not-enreg[X] addr-exposed ld-addr-op
+;  V05 arg5         [V05,T05] (  4,  3.00)     ref  ->   r8         class-hnd single-def <System.Text.DecoderNLS>
+;  V06 loc0         [V06,T07] (  4,  2.00)     int  ->  r10        
+;  V07 loc1         [V07    ] (  6,  3.00)     int  ->  [sp+0x1C]  do-not-enreg[X] addr-exposed ld-addr-op
 ;  V08 OutArgs      [V08    ] (  1,  1   )  struct (16) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V09 tmp1         [V09,T08] (  2,  0.00)     int  ->   r0        
 ;  V10 tmp2         [V10,T09] (  2,  0.00)     int  ->   r0        
-;  V11 tmp3         [V11,T05] (  4,  3   )     int  ->   r0         "guarded devirt return temp"
+;  V11 tmp3         [V11,T04] (  5,  3   )     int  ->   r0         "guarded devirt return temp"
 ;* V12 tmp4         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Text.UTF8Encoding+UTF8EncodingSealed>
 ;* V13 tmp5         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp6         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -52,146 +52,36 @@ G_M57765_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=26 bbWeight=1 PerfScore 9.00
 G_M57765_IG02:        ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
             cmp     r8, 0
-            bne     SHORT G_M57765_IG04
-                       ;; size=6 bbWeight=1 PerfScore 2.00
-G_M57765_IG03:        ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // <unknown method>
-                       ;; size=28 bbWeight=0 PerfScore 0.00
-G_M57765_IG04:        ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+            beq     G_M57765_IG20
             cmp     r4, 0
-            bge     SHORT G_M57765_IG06
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M57765_IG05:        ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // <unknown method>
-                       ;; size=28 bbWeight=0 PerfScore 0.00
-G_M57765_IG06:        ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+            blt     G_M57765_IG21
+                       ;; size=14 bbWeight=1 PerfScore 4.00
+G_M57765_IG03:        ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
             cmp     r6, 0
-            bne     SHORT G_M57765_IG10
+            beq     SHORT G_M57765_IG10
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M57765_IG07:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
-            cmp     r4, 0
-            beq     SHORT G_M57765_IG08
-            movs    r0, 0
-            b       SHORT G_M57765_IG09
-                       ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG08:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
-            movs    r0, 1
-                       ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG09:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
-            uxtb    r0, r0
-            cmp     r0, 0
-            beq     SHORT G_M57765_IG24
-                       ;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG10:        ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M57765_IG04:        ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
             cmp     r9, 0
-            bge     SHORT G_M57765_IG12
-                       ;; size=6 bbWeight=1.00 PerfScore 2.00
-G_M57765_IG11:        ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // <unknown method>
-                       ;; size=28 bbWeight=0 PerfScore 0.00
-G_M57765_IG12:        ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+            blt     G_M57765_IG22
+                       ;; size=8 bbWeight=1.00 PerfScore 2.00
+G_M57765_IG05:        ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
             cmp     r5, 0
-            bne     SHORT G_M57765_IG16
+            beq     SHORT G_M57765_IG13
                        ;; size=4 bbWeight=1.00 PerfScore 2.00
-G_M57765_IG13:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
-            cmp     r9, 0
-            beq     SHORT G_M57765_IG14
-            movs    r0, 0
-            b       SHORT G_M57765_IG15
-                       ;; size=10 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG14:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
-            movs    r0, 1
-                       ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG15:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
-            uxtb    r0, r0
-            cmp     r0, 0
-            beq     SHORT G_M57765_IG25
-                       ;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M57765_IG16:        ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M57765_IG06:        ; bbWeight=1.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
             mov     r10, 0
             movs    r0, 0
             str     r0, [sp+0x1C]  // [V07 loc1]
             ldr     r0, [r8+0x18]
             cmp     r0, 0
-            beq     SHORT G_M57765_IG19
+            bne     SHORT G_M57765_IG18
                        ;; size=16 bbWeight=1.00 PerfScore 6.00
-G_M57765_IG17:        ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
-            str     r9, [sp]   // [V08 OutArgs]
-            ldr     r0, [sp+0x1C]  // [V07 loc1]
-            str     r0, [sp+0x04]  // [V08 OutArgs+0x04]
-            str     r10, [sp+0x08] // [V08 OutArgs+0x08]
-            str     r8, [sp+0x0C]  // [V08 OutArgs+0x0c]
-            mov     r0, r7
-            ; gcrRegs +[r0]
-            mov     r1, r6
-            mov     r2, r4
-            mov     r3, r5
-            movw    lr, 0xd1ff
-            movt    lr, 0xd1ff
-            ldr     lr, [lr]
-            blx     lr     // System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this
-            ; gcrRegs -[r0 r7-r8]
-                       ;; size=38 bbWeight=0 PerfScore 0.00
-G_M57765_IG18:        ; bbWeight=0, epilog, nogc, extend
-            add     sp, 36
-            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
-                       ;; size=6 bbWeight=0 PerfScore 0.00
-G_M57765_IG19:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[r7-r8]
+G_M57765_IG07:        ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [r7]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M57765_IG23
-                       ;; size=14 bbWeight=1 PerfScore 5.00
-G_M57765_IG20:        ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
-            str     r9, [sp]   // [V08 OutArgs]
-            add     r0, sp, 28 // [V07 loc1]
-            str     r0, [sp+0x04]  // [V08 OutArgs+0x04]
-            mov     r0, r7
-            ; gcrRegs +[r0]
-            mov     r1, r6
-            mov     r2, r4
-            mov     r3, r5
-            ldr     lr, [r7]
-            ldr     lr, [lr+0x48]
-            ldr     lr, [lr+0x14]
-            blx     lr     // <unknown method>
-            ; gcrRegs -[r0]
-                       ;; size=30 bbWeight=0 PerfScore 0.00
-G_M57765_IG21:        ; bbWeight=1, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
-            mov     r10, r0
-            ldr     r1, [sp+0x1C]  // [V07 loc1]
-            cmp     r1, r4
             bne     SHORT G_M57765_IG17
-            str     r4, [r8+0x10]
-                       ;; size=12 bbWeight=1 PerfScore 5.00
-G_M57765_IG22:        ; bbWeight=1, epilog, nogc, extend
-            add     sp, 36
-            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
-                       ;; size=6 bbWeight=1 PerfScore 2.00
-G_M57765_IG23:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
             add     r0, sp, 24 // [V23 tmp15]
             str     r0, [sp]   // [V08 OutArgs]
             add     r0, sp, 20 // [V24 tmp16]
@@ -213,9 +103,50 @@ G_M57765_IG23:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8},
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_DIV
-            b       SHORT G_M57765_IG21
-                       ;; size=54 bbWeight=1 PerfScore 22.00
-G_M57765_IG24:        ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+            mov     r10, r0
+            ldr     r1, [sp+0x1C]  // [V07 loc1]
+            cmp     r1, r4
+            bne     SHORT G_M57765_IG18
+                       ;; size=74 bbWeight=1 PerfScore 30.00
+G_M57765_IG08:        ; bbWeight=1, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r7]
+            str     r4, [r8+0x10]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M57765_IG09:        ; bbWeight=1, epilog, nogc, extend
+            add     sp, 36
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
+G_M57765_IG10:        ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs +[r7]
+            cmp     r4, 0
+            beq     SHORT G_M57765_IG11
+            movs    r0, 0
+            b       SHORT G_M57765_IG12
+                       ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG11:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
+            movs    r0, 1
+                       ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG12:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+            uxtb    r0, r0
+            cmp     r0, 0
+            beq     SHORT G_M57765_IG23
+            b       SHORT G_M57765_IG04
+                       ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG13:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+            cmp     r9, 0
+            beq     SHORT G_M57765_IG14
+            movs    r0, 0
+            b       SHORT G_M57765_IG15
+                       ;; size=10 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG14:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref
+            movs    r0, 1
+                       ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG15:        ; bbWeight=0.00, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
+            uxtb    r0, r0
+            cmp     r0, 0
+            bne     SHORT G_M57765_IG06
+                       ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M57765_IG16:        ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, byref, isz
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r1, 0xd1ff
@@ -224,9 +155,50 @@ G_M57765_IG24:        ; bbWeight=0, gcrefRegs=0180 {r7 r8}, byrefRegs=0000 {}, b
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
-            b       SHORT G_M57765_IG10
+            b       SHORT G_M57765_IG06
                        ;; size=30 bbWeight=0 PerfScore 0.00
...

+20 (+6.10%) : 21084.dasm - System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)

@@ -7,7 +7,7 @@
 ; 5 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  8,  8   )     ref  ->   r4         this class-hnd single-def <System.Xml.Serialization.CodeGenerator>
+;  V00 this         [V00,T00] ( 10,  8   )     ref  ->   r4         this class-hnd single-def <System.Xml.Serialization.CodeGenerator>
 ;  V01 arg1         [V01,T06] (  3,  3   )     ref  ->   r1         class-hnd single-def <System.Type>
 ;  V02 arg2         [V02,T03] (  6,  4.50)     ref  ->   r5         class-hnd single-def <System.String>
 ;  V03 arg3         [V03,T04] (  4,  4   )     ref  ->   r6         class-hnd single-def <System.Type[]>
@@ -15,19 +15,19 @@
 ;  V05 arg5         [V05,T14] (  1,  1   )     int  ->  [sp+0x44]  single-def
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (24) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V07 tmp1         [V07,T12] (  3,  1.50)     int  ->   r9         "guarded devirt return temp"
-;  V08 tmp2         [V08,T05] (  5,  5   )     ref  ->   r0         single-def "guarded devirt arg temp"
+;  V08 tmp2         [V08,T05] (  7,  5   )     ref  ->   r0         single-def "guarded devirt arg temp"
 ;* V09 tmp3         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeMethodBuilder>
 ;  V10 tmp4         [V10,T02] (  4,  8   )     ref  ->   r0         class-hnd single-def "Inlining Arg" <System.Reflection.Emit.TypeBuilder>
 ;* V11 tmp5         [V11,T15] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V12 tmp6         [V12,T01] (  9,  9   )     ref  ->   r7         class-hnd single-def "Inlining Arg" <System.Reflection.Emit.MethodBuilder>
-;  V13 tmp7         [V13,T11] (  3,  1.50)     ref  ->   r1         "guarded devirt return temp"
+;  V13 tmp7         [V13,T10] (  4,  2   )     ref  ->   r1         "guarded devirt return temp"
 ;* V14 tmp8         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "guarded devirt this exact temp" <System.Reflection.Emit.RuntimeMethodBuilder>
-;  V15 tmp9         [V15,T10] (  2,  2   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
-;  V16 tmp10        [V16,T09] (  4,  2   )     ref  ->   r1        
+;  V15 tmp9         [V15,T11] (  2,  2   )     ref  ->   r1         class-hnd single-def "dup spill" <System.Reflection.Emit.RuntimeILGenerator>
+;  V16 tmp10        [V16,T09] (  4,  2.50)     ref  ->   r1        
 ;  V17 tmp11        [V17,T07] (  4,  4   )     ref  ->   r9         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Emit.RuntimeILGenerator>
 ;* V18 tmp12        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Reflection.Emit.RuntimeILGenerator>
 ;  V19 tmp13        [V19,T16] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
-;  V20 cse0         [V20,T08] (  3,  3   )     int  ->   r8         "CSE - aggressive"
+;  V20 cse0         [V20,T08] (  4,  3   )     int  ->   r8         "CSE - aggressive"
 ;  TEMP_01                                     ref  ->  [r11-0x1C]
 ;
 ; Lcl frame size = 32
@@ -51,47 +51,27 @@ G_M17396_IG02:        ; bbWeight=1, gcrefRegs=0072 {r1 r4 r5 r6}, byrefRegs=0000
             ; gcrRegs +[r0]
             ldrsb   r2, [r0]
             cmp     r5, 0
-            beq     SHORT G_M17396_IG04
+            beq     SHORT G_M17396_IG15
                        ;; size=10 bbWeight=1 PerfScore 4.00
 G_M17396_IG03:        ; bbWeight=0.50, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             ldr     r2, [r5+0x04]
             cmp     r2, 0
-            bne     SHORT G_M17396_IG05
+            beq     SHORT G_M17396_IG15
                        ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M17396_IG04:        ; bbWeight=0, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r0-r1 r4 r6]
-            movw    r0, 0xd1ff
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_STRCNS
-            ; gcrRegs +[r0]
-            mov     r1, r0
-            ; gcrRegs +[r1]
-            mov     r0, r5
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)
-            ; gcrRegs -[r0-r1 r5]
-            bkpt    
-                       ;; size=40 bbWeight=0 PerfScore 0.00
-G_M17396_IG05:        ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref
-            ; gcrRegs +[r0-r1 r4-r6]
+G_M17396_IG04:        ; bbWeight=1, gcrefRegs=0073 {r0 r1 r4 r5 r6}, byrefRegs=0000 {}, byref
             str     r1, [sp]
             movs    r1, 0
             ; gcrRegs -[r1]
             str     r1, [sp+0x04]
                        ;; size=6 bbWeight=1 PerfScore 3.00
-G_M17396_IG06:        ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG05:        ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref
             str     r1, [sp+0x08]
             str     r6, [sp+0x0C]
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M17396_IG07:        ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG06:        ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref
             str     r1, [sp+0x10]
                        ;; size=2 bbWeight=1 PerfScore 1.00
-G_M17396_IG08:        ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG07:        ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             str     r1, [sp+0x14]
             mov     r1, r5
             ; gcrRegs +[r1]
@@ -119,9 +99,9 @@ G_M17396_IG08:        ; bbWeight=1, gcrefRegs=0071 {r0 r4 r5 r6}, byrefRegs=0000
             movw    r8, 0xd1ff
             movt    r8, 0xd1ff
             cmp     r0, r8
-            bne     SHORT G_M17396_IG11
+            bne     SHORT G_M17396_IG16
                        ;; size=56 bbWeight=1 PerfScore 20.00
-G_M17396_IG09:        ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG08:        ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
             mov     r0, r7
             ; gcrRegs +[r0]
             movw    r3, 0xd1ff
@@ -139,7 +119,7 @@ G_M17396_IG09:        ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
             ldr     r1, [r7+0x1C]
             ; gcrRegs +[r1]
             cmp     r1, 0
-            bne     SHORT G_M17396_IG10
+            bne     SHORT G_M17396_IG09
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
@@ -169,25 +149,8 @@ G_M17396_IG09:        ; bbWeight=0.50, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000
             mov     r1, r9
             ; gcrRegs +[r1]
                        ;; size=90 bbWeight=0.50 PerfScore 16.00
-G_M17396_IG10:        ; bbWeight=0.50, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG09:        ; bbWeight=1, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r9]
-            b       SHORT G_M17396_IG12
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M17396_IG11:        ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r1] +[r7]
-            mov     r0, r7
-            ; gcrRegs +[r0]
-            movs    r1, 64
-            ldr     r3, [r7]
-            ldr     r3, [r3+0x44]
-            ldr     r3, [r3+0x04]
-            blx     r3     // <unknown method>
-            ; gcrRegs -[r7]
-            mov     r1, r0
-            ; gcrRegs +[r1]
-                       ;; size=14 bbWeight=0 PerfScore 0.00
-G_M17396_IG12:        ; bbWeight=1, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r0]
             add     r0, r4, 12
             ; byrRegs +[r0]
             movw    r12, 0xd1ff
@@ -199,23 +162,23 @@ G_M17396_IG12:        ; bbWeight=1, gcrefRegs=0052 {r1 r4 r6}, byrefRegs=0000 {}
             ; gcrRegs +[r0]
             ldr     r3, [r0]
             cmp     r3, r8
-            bne     SHORT G_M17396_IG18
+            bne     SHORT G_M17396_IG17
                        ;; size=22 bbWeight=1 PerfScore 8.00
-G_M17396_IG13:        ; bbWeight=0.50, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG10:        ; bbWeight=0.50, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, byref
             ldr     r9, [r0+0x4C]
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17396_IG14:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
+G_M17396_IG11:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             and     r3, r9, 16
             cmp     r3, 16
-            beq     SHORT G_M17396_IG15
+            beq     SHORT G_M17396_IG12
             movs    r3, 0
-            b       SHORT G_M17396_IG16
+            b       SHORT G_M17396_IG13
                        ;; size=12 bbWeight=1 PerfScore 5.00
-G_M17396_IG15:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG12:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
             movs    r3, 1
                        ;; size=2 bbWeight=1 PerfScore 1.00
-G_M17396_IG16:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
+G_M17396_IG13:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, byref
             mov     r0, r4
             ; gcrRegs +[r0]
             mov     r1, r6
@@ -226,23 +189,67 @@ G_M17396_IG16:        ; bbWeight=1, gcrefRegs=0050 {r4 r6}, byrefRegs=0000 {}, b
             movt    lr, 0xd1ff
             ldr     r12, [lr]
                        ;; size=18 bbWeight=1 PerfScore 6.00
-G_M17396_IG17:        ; bbWeight=1, epilog, nogc, extend
+G_M17396_IG14:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 32
             pop     {r4,r5,r6,r7,r8,r9,r11,lr}
             bx      r12        // <unknown method>
                        ;; size=8 bbWeight=1 PerfScore 3.00
-G_M17396_IG18:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[r1-r2]
+G_M17396_IG15:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r0-r2 r4 r6] +[r5]
+            movw    r0, 0xd1ff
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_STRCNS
+            ; gcrRegs +[r0]
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            mov     r0, r5
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)
+            ; gcrRegs -[r0-r1 r5]
+            bkpt    
+                       ;; size=40 bbWeight=0 PerfScore 0.00
+G_M17396_IG16:        ; bbWeight=0, gcrefRegs=00D0 {r4 r6 r7}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs +[r4 r6-r7]
+            mov     r0, r7
+            ; gcrRegs +[r0]
+            movs    r1, 64
+            ldr     r3, [r7]
+            ldr     r3, [r3+0x44]
+            ldr     r3, [r3+0x04]
+            blx     r3     // <unknown method>
+            ; gcrRegs -[r7]
+            mov     r1, r0
+            ; gcrRegs +[r1]
+            add     r0, r4, 12
+            ; gcrRegs -[r0]
+            ; byrRegs +[r0]
+            movw    r12, 0xd1ff
+            movt    r12, 0xd1ff
+            blx     r12        // CORINFO_HELP_ASSIGN_REF
+            ; gcrRegs -[r1]
+            ; byrRegs -[r0]
+            ldr     r0, [r4+0x08]
+            ; gcrRegs +[r0]
+            ldr     r3, [r0]
+            cmp     r3, r8
+            beq     SHORT G_M17396_IG10
+                       ;; size=36 bbWeight=0 PerfScore 0.00
+G_M17396_IG17:        ; bbWeight=0, gcrefRegs=0051 {r0 r4 r6}, byrefRegs=0000 {}, byref, isz
             ldr     r3, [r0]
             ldr     r3, [r3+0x34]
             ldr     r3, [r3+0x10]
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
             mov     r9, r0
-            b       SHORT G_M17396_IG14
+            b       SHORT G_M17396_IG11
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 328, prolog size 14, PerfScore 79.50, instruction count 124, allocated bytes for code 328 (MethodHash=d7c6bc0b) for method System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)
+; Total bytes of code 348, prolog size 14, PerfScore 79.00, instruction count 131, allocated bytes for code 348 (MethodHash=d7c6bc0b) for method System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -254,7 +261,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 164 (0x000a4) Actual length = 328 (0x000148)
+  Function Length   : 174 (0x000ae) Actual length = 348 (0x00015c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+26 (+6.44%) : 144810.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)

@@ -5,11 +5,11 @@
 ; optimized using Dynamic PGO
 ; r11 based frame
 ; partially interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 50208
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 50208
 ; 3 inlinees with PGO data; 5 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T00] (  6,  5.88)   byref  ->  [sp+0x24]  this single-def
+;  V00 this         [V00,T00] (  7,  5.88)   byref  ->  [sp+0x24]  this single-def
 ;  V01 arg1         [V01,T01] (  9,  4.56)     int  ->   r8         single-def
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
 ;  V03 loc1         [V03,T02] (  6,  3.75)     int  ->   r0        
@@ -17,7 +17,7 @@
 ;  V05 tmp1         [V05,T09] (  2,  0.02)     int  ->   r0        
 ;* V06 tmp2         [V06    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V07 tmp3         [V07    ] (  0,  0   )   byref  ->  zero-ref    single-def
-;  V08 tmp4         [V08,T08] (  3,  2   )     int  ->   r4        
+;  V08 tmp4         [V08,T08] (  3,  2   )     int  ->   r6        
 ;  V09 tmp5         [V09,T10] (  2,  0.25)     int  ->   r0        
 ;* V10 tmp6         [V10    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -27,7 +27,7 @@
 ;  V15 PInvokeFrame [V15    ] (  6,  3.35)  struct (36) [sp+0x00]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
 ;  V16 cse0         [V16,T07] (  3,  2.00)     int  ->   r3         "CSE - aggressive"
 ;  V17 cse1         [V17,T05] (  3,  2.62)     int  ->   r3         "CSE - aggressive"
-;  V18 cse2         [V18,T04] (  3,  3   )     int  ->   r0         "CSE - aggressive"
+;  V18 cse2         [V18,T04] (  5,  3   )     int  ->   r4         "CSE - aggressive"
 ;  V19 cse3         [V19,T06] (  6,  2.55)     int  ->   r0         "CSE - aggressive"
 ;
 ; Lcl frame size = 44
@@ -46,73 +46,107 @@ G_M55570_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byre
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_INIT_PINVOKE_FRAME
             cmp     r8, -1
-            bge     SHORT G_M55570_IG04
-                       ;; size=18 bbWeight=1 PerfScore 6.00
-G_M55570_IG03:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // <unknown method>
-                       ;; size=28 bbWeight=0 PerfScore 0.00
-G_M55570_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
+            blt     G_M55570_IG33
+                       ;; size=20 bbWeight=1 PerfScore 6.00
+G_M55570_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
             cmp     r8, 0
-            blt     SHORT G_M55570_IG08
+            bge     SHORT G_M55570_IG25
                        ;; size=6 bbWeight=1 PerfScore 2.00
-G_M55570_IG05:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
-            cmp     r8, 10
-            bge     SHORT G_M55570_IG06
-            movs    r0, 0
-            b       SHORT G_M55570_IG07
-                       ;; size=10 bbWeight=0.01 PerfScore 0.04
-G_M55570_IG06:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref
-            movs    r0, 1
-                       ;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M55570_IG07:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
-            uxtb    r0, r0
-            cmp     r0, 0
-            beq     G_M55570_IG33
-                       ;; size=8 bbWeight=0.01 PerfScore 0.03
-G_M55570_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
+G_M55570_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref, isz
             str     r7, [sp+0x24]
             ; GC ptr vars +{V00}
             ldr     r0, [r7]
             cmp     r0, 10
-            blt     SHORT G_M55570_IG16
+            bge     SHORT G_M55570_IG15
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M55570_IG09:        ; bbWeight=0.15, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M55570_IG05:        ; bbWeight=0.88, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ; byrRegs -[r7]
-            cmp     r0, r8
-            blt     SHORT G_M55570_IG10
-            cmp     r8, 0
-            bge     SHORT G_M55570_IG12
-                       ;; size=10 bbWeight=0.15 PerfScore 0.60
-G_M55570_IG10:        ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            sub     r1, r0, 10
-            ands    r1, r1, 1
-            cmp     r1, 0
-            bne     SHORT G_M55570_IG16
-                       ;; size=12 bbWeight=0.15 PerfScore 0.60
-G_M55570_IG11:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            cmp     r0, r8
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // <unknown method>
+            ldr     r7, [sp+0x24]  // [V00 this]
+            ; byrRegs +[r7]
+            ldr     r3, [r7]
+            cmp     r3, 30
+            bgt     SHORT G_M55570_IG07
+                       ;; size=18 bbWeight=0.88 PerfScore 6.13
+G_M55570_IG06:        ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            ; byrRegs -[r7]
+            and     r3, r3, 31
+            movs    r2, 1
+            lsl     r3, r2, r3
+            cmp     r3, r0
             blt     SHORT G_M55570_IG14
-                       ;; size=4 bbWeight=0.12 PerfScore 0.25
-G_M55570_IG12:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            cmp     r8, 0
-            blt     SHORT G_M55570_IG14
-                       ;; size=6 bbWeight=0.12 PerfScore 0.23
-G_M55570_IG13:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            movs    r0, 1
+                       ;; size=14 bbWeight=0.87 PerfScore 4.37
+G_M55570_IG07:        ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, 0x400
+            bge     G_M55570_IG31
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+                       ;; size=16 bbWeight=0.88 PerfScore 3.50
+G_M55570_IG08:        ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            blx     r3     // <unknown method>
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
-            blx     r3     // <unknown method>
-            b       SHORT G_M55570_IG21
-                       ;; size=16 bbWeight=0 PerfScore 0.00
-G_M55570_IG14:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            cmp     r3, 0
+            bne     SHORT G_M55570_IG13
+                       ;; size=16 bbWeight=0.88 PerfScore 5.25
+G_M55570_IG09:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            ldr     r7, [sp+0x24]  // [V00 this]
+            ; byrRegs +[r7]
+            ldr     r4, [r7]
+            mvn     r0, 0x80000000
+            cmp     r4, r0
+            beq     G_M55570_IG32
+                       ;; size=14 bbWeight=1 PerfScore 5.00
+G_M55570_IG10:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, gcvars, byref
+            ; GC ptr vars -{V00}
+            adds    r6, r4, 1
+                       ;; size=2 bbWeight=1 PerfScore 1.00
+G_M55570_IG11:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, byref
+            str     r6, [r7]
+            ldr     r0, [sp+0x08]  // [V15 PInvokeFrame+0x08]
+            ; byrRegs +[r0]
+            str     r0, [r5+0x0C]
+                       ;; size=6 bbWeight=1 PerfScore 3.00
+G_M55570_IG12:        ; bbWeight=1, epilog, nogc, extend
+            add     sp, 44
+            pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
+                       ;; size=6 bbWeight=1 PerfScore 2.00
+G_M55570_IG13:        ; bbWeight=0.44, gcVars=00000001 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; byrRegs -[r0 r7]
+            ; GC ptr vars +{V00}
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_POLL_GC
+            b       SHORT G_M55570_IG09
+                       ;; size=12 bbWeight=0.44 PerfScore 1.75
+G_M55570_IG14:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            mov     r0, r3
+            b       SHORT G_M55570_IG07
+                       ;; size=4 bbWeight=0.25 PerfScore 0.51
+G_M55570_IG15:        ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, r8
+            blt     SHORT G_M55570_IG16
+            cmp     r8, 0
+            bge     SHORT G_M55570_IG18
+                       ;; size=10 bbWeight=0.15 PerfScore 0.60
+G_M55570_IG16:        ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            sub     r1, r0, 10
+            ands    r1, r1, 1
+            cmp     r1, 0
+            bne     SHORT G_M55570_IG05
+                       ;; size=12 bbWeight=0.15 PerfScore 0.60
+G_M55570_IG17:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, r8
+            blt     SHORT G_M55570_IG19
+                       ;; size=4 bbWeight=0.12 PerfScore 0.25
+G_M55570_IG18:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+            cmp     r8, 0
+            bge     SHORT G_M55570_IG29
+                       ;; size=6 bbWeight=0.12 PerfScore 0.23
+G_M55570_IG19:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             subs    r0, 10
             movs    r1, 2
             movw    r3, 0xd1ff
@@ -123,127 +157,78 @@ G_M55570_IG14:        ; bbWeight=0.12, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_MOD
             cmp     r0, 4
-            bne     SHORT G_M55570_IG28
+            beq     SHORT G_M55570_IG28
                        ;; size=30 bbWeight=0.12 PerfScore 1.37
-G_M55570_IG15:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            movs    r0, 0
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // <unknown method>
-            b       SHORT G_M55570_IG21
-                       ;; size=16 bbWeight=0.01 PerfScore 0.06
-G_M55570_IG16:        ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            blx     r3     // <unknown method>
-            ldr     r7, [sp+0x24]  // [V00 this]
-            ; byrRegs +[r7]
-            ldr     r3, [r7]
-            cmp     r3, 30
-            bgt     SHORT G_M55570_IG19
-                       ;; size=18 bbWeight=0.88 PerfScore 6.13
-G_M55570_IG17:        ; bbWeight=0.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ; byrRegs -[r7]
-            and     r3, r3, 31
-            movs    r2, 1
-            lsl     r3, r2, r3
-            cmp     r3, r0
-            bge     SHORT G_M55570_IG19
-                       ;; size=14 bbWeight=0.87 PerfScore 4.37
-G_M55570_IG18:        ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            mov     r0, r3
-                       ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M55570_IG19:        ; bbWeight=0.88, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            cmp     r0, 0x400
-            blt     SHORT G_M55570_IG26
-                       ;; size=6 bbWeight=0.88 PerfScore 1.75
-G_M55570_IG20:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // <unknown method>
-                       ;; size=12 bbWeight=0 PerfScore 0.00
-G_M55570_IG21:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ldr     r7, [sp+0x24]  // [V00 this]
-            ; byrRegs +[r7]
-            ldr     r0, [r7]
-            mvn     r1, 0x80000000
-            cmp     r0, r1
-            bne     SHORT G_M55570_IG25
-                       ;; size=12 bbWeight=1 PerfScore 5.00
-G_M55570_IG22:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {r7}, gcvars, byref
...

benchmarks.run_tiered.linux.arm.checked.mch

-4 (-5.00%) : 34605.dasm - System.IO.Path:Join(System.String,System.String):System.String (Tier1)

@@ -61,11 +61,8 @@ G_M65029_IG02:        ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
 G_M65029_IG03:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ldr     r2, [r0+0x04]
             cmp     r2, 0
-            beq     SHORT G_M65029_IG04
-            cmp     r1, 0
-            beq     SHORT G_M65029_IG08
-            b       SHORT G_M65029_IG07
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M65029_IG07
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M65029_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             cmp     r1, 0
@@ -83,21 +80,20 @@ G_M65029_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M65029_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+            cmp     r1, 0
+            beq     SHORT G_M65029_IG08
             ldr     r3, [r1+0x04]
             cmp     r3, 0
-            beq     SHORT G_M65029_IG08
-            adds    r0, 8
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            b       SHORT G_M65029_IG09
+            bne     SHORT G_M65029_IG09
                        ;; size=10 bbWeight=0.50 PerfScore 2.50
 G_M65029_IG08:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[r1] +[r0]
-            ; byrRegs -[r0]
+            ; gcrRegs -[r1]
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M65029_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1}, byrefRegs=0001 {r0}, gcvars, byref
-            ; gcrRegs -[r0] +[r1]
+G_M65029_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[r1]
+            adds    r0, 8
+            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             adds    r1, 8
             ; gcrRegs -[r1]
@@ -115,12 +111,12 @@ G_M65029_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0002 {r1},
             blx     lr     // <unknown method>
             ; gcrRegs +[r0]
             ; byrRegs -[r0 r2]
-                       ;; size=22 bbWeight=0.50 PerfScore 4.00
+                       ;; size=24 bbWeight=0.50 PerfScore 4.50
 G_M65029_IG10:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 80, prolog size 6, PerfScore 17.50, instruction count 31, allocated bytes for code 80 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (Tier1)
+; Total bytes of code 76, prolog size 6, PerfScore 16.50, instruction count 29, allocated bytes for code 76 (MethodHash=9b9401fa) for method System.IO.Path:Join(System.String,System.String):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -132,7 +128,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 40 (0x00028) Actual length = 80 (0x000050)
+  Function Length   : 38 (0x00026) Actual length = 76 (0x00004c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-4.55%) : 9357.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)

@@ -80,11 +80,8 @@ G_M49441_IG02:        ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, b
 G_M49441_IG03:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ldr     r2, [r0+0x04]
             cmp     r2, 0
-            beq     SHORT G_M49441_IG04
-            cmp     r1, 0
-            beq     SHORT G_M49441_IG07
-            b       SHORT G_M49441_IG06
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M49441_IG06
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M49441_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             mov     r0, r1
@@ -94,31 +91,30 @@ G_M49441_IG05:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M49441_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+            cmp     r1, 0
+            beq     SHORT G_M49441_IG07
             ldr     r3, [r1+0x04]
             cmp     r3, 0
-            beq     SHORT G_M49441_IG07
+            bne     SHORT G_M49441_IG08
+                       ;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M49441_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs -[r1]
+            pop     {r3,r4,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M49441_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs +[r1]
             add     lr, r1, 8
             ; byrRegs +[lr]
             mov     r12, lr
             ; byrRegs +[r12]
             mov     r4, r3
-            b       SHORT G_M49441_IG08
-                       ;; size=16 bbWeight=0.50 PerfScore 3.50
-G_M49441_IG07:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
-            ; gcrRegs -[r1]
-            ; byrRegs -[r12 lr]
-            pop     {r3,r4,r11,pc}
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M49441_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0003 {r0 r1}, byrefRegs=5000 {r12 lr}, gcvars, byref, isz
-            ; gcrRegs +[r1]
-            ; byrRegs +[r12 lr]
             cmp     r4, 0
             ble     SHORT G_M49441_IG09
             ldrh    r12, [r12]
             ; byrRegs -[r12]
             cmp     r12, 47
             beq     SHORT G_M49441_IG04
-                       ;; size=14 bbWeight=0.50 PerfScore 2.50
+                       ;; size=22 bbWeight=0.50 PerfScore 4.00
 G_M49441_IG09:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=4000 {lr}, byref
             ; gcrRegs -[r1]
             adds    r0, 8
@@ -139,7 +135,7 @@ G_M49441_IG10:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 88, prolog size 8, PerfScore 18.50, instruction count 33, allocated bytes for code 88 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
+; Total bytes of code 84, prolog size 8, PerfScore 17.50, instruction count 31, allocated bytes for code 84 (MethodHash=f73b3ede) for method System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -151,7 +147,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 44 (0x0002c) Actual length = 88 (0x000058)
+  Function Length   : 42 (0x0002a) Actual length = 84 (0x000054)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-2 (-3.12%) : 20932.dasm - System.Collections.Generic.SortedSet1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet1+Node[System.Canon],System.Collections.Generic.SortedSet`1+Node[System.Canon]):ubyte:this (Tier1)

@@ -45,11 +45,8 @@ G_M938_IG05:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byr
             ldrb    r0, [r0+0x10]
             ; gcrRegs -[r0]
             cmp     r0, 1
-            bne     SHORT G_M938_IG06
-            cmp     r3, 0
-            bne     SHORT G_M938_IG12
-            b       SHORT G_M938_IG10
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+            beq     SHORT G_M938_IG10
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M938_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             cmp     r3, 0
             bne     SHORT G_M938_IG08
@@ -64,9 +61,11 @@ G_M938_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byre
 G_M938_IG09:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M938_IG10:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M938_IG10:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+            cmp     r3, 0
+            bne     SHORT G_M938_IG12
             movs    r0, 2
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M938_IG11:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
@@ -77,7 +76,7 @@ G_M938_IG13:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 64, prolog size 6, PerfScore 19.00, instruction count 27, allocated bytes for code 64 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (Tier1)
+; Total bytes of code 62, prolog size 6, PerfScore 18.50, instruction count 26, allocated bytes for code 62 (MethodHash=eeeffc55) for method System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -89,7 +88,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 32 (0x00020) Actual length = 64 (0x000040)
+  Function Length   : 31 (0x0001f) Actual length = 62 (0x00003e)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+4.76%) : 35269.dasm - System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)

@@ -16,7 +16,7 @@
 ;
 ; Lcl frame size = 0
 
-G_M26551_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M26551_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r4,r5,r6,r7,r11,lr}
             add     r11, sp, 16
             mov     r4, r0
@@ -39,17 +39,17 @@ G_M26551_IG03:        ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             movt    r0, HIGH ADDRESS J_M26551_DS00
 
     J_M26551_DS00 LABEL   DWORD
-            DD      G_M26551_IG05
             DD      G_M26551_IG07
             DD      G_M26551_IG05
-            DD      G_M26551_IG05
-            DD      G_M26551_IG05
+            DD      G_M26551_IG07
+            DD      G_M26551_IG07
+            DD      G_M26551_IG07
             ldr     pc, [r0+4*r7]
                        ;; size=24 bbWeight=8 PerfScore 72.00
 G_M26551_IG04:        ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             subs    r0, 15
             cmp     r0, 1
-            bls     SHORT G_M26551_IG05
+            bls     SHORT G_M26551_IG07
             mov     r0, r4
             ; gcrRegs +[r0]
             ldr     r3, [r5+0x4C]
@@ -58,18 +58,9 @@ G_M26551_IG04:        ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byre
             ; gcrRegs -[r0]
             cmp     r0, 0
             bne     SHORT G_M26551_IG03
-                       ;; size=18 bbWeight=4 PerfScore 36.00
+            b       SHORT G_M26551_IG09
+                       ;; size=20 bbWeight=4 PerfScore 40.00
 G_M26551_IG05:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
-            mov     r0, r4
-            ; gcrRegs +[r0]
-            ldr     r3, [r6+0x14]
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M26551_IG06:        ; bbWeight=0.50, epilog, nogc, extend
-            pop     {r4,r5,r6,r7,r11,lr}
-            bx      r3     // <unknown method>
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M26551_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[r0]
             mov     r0, r4
             ; gcrRegs +[r0]
             ldr     r3, [r5+0x4C]
@@ -80,18 +71,32 @@ G_M26551_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4},
             ; gcrRegs +[r0]
             ldr     r3, [r6+0x14]
                        ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M26551_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+            pop     {r4,r5,r6,r7,r11,lr}
+            bx      r3     // <unknown method>
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M26551_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r0]
+            mov     r0, r4
+            ; gcrRegs +[r0]
+            ldr     r3, [r6+0x14]
+                       ;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M26551_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r4,r5,r6,r7,r11,lr}
             bx      r3     // <unknown method>
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-RWD00      dd  G_M26551_IG05
+G_M26551_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[r0]
+            b       SHORT G_M26551_IG07
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
+RWD00      dd  G_M26551_IG07
+           dd  G_M26551_IG05
+           dd  G_M26551_IG07
+           dd  G_M26551_IG07
            dd  G_M26551_IG07
-           dd  G_M26551_IG05
-           dd  G_M26551_IG05
-           dd  G_M26551_IG05
 
 
-; Total bytes of code 84, prolog size 8, PerfScore 119.00, instruction count 35, allocated bytes for code 84 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 123.50, instruction count 37, allocated bytes for code 88 (MethodHash=17d09848) for method System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -103,7 +108,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 42 (0x0002a) Actual length = 84 (0x000054)
+  Function Length   : 44 (0x0002c) Actual length = 88 (0x000058)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+14 (+6.03%) : 29364.dasm - System.Security.Cryptography.ECParameters:Validate():this (Tier1)

@@ -9,95 +9,90 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 12,  8.50)   byref  ->   r0         this single-def
-;  V01 loc0         [V01,T01] (  7,  4.50)   ubyte  ->   r4        
+;  V01 loc0         [V01,T01] (  7,  4.50)   ubyte  ->   r3        
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T11] (  3,  0   )     ref  ->   r4         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V04 tmp2         [V04,T07] (  3,  1.50)     int  ->   r3        
 ;  V05 tmp3         [V05,T08] (  3,  1.50)     int  ->   r3        
 ;* V06 tmp4         [V06,T09] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V07 tmp5         [V07,T06] (  2,  2   )   byref  ->   r3         single-def "Inlining Arg"
+;  V07 tmp5         [V07,T06] (  2,  2   )   byref  ->   r1         single-def "Inlining Arg"
 ;* V08 tmp6         [V08,T10] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V09 tmp7         [V09    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V10 tmp8         [V10,T12] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
-;  V11 cse0         [V11,T05] (  5,  2.50)     int  ->   r3         "CSE - aggressive"
-;  V12 cse1         [V12,T02] (  8,  4   )     ref  ->   r6         multi-def "CSE - aggressive"
-;  V13 cse2         [V13,T04] (  5,  3.50)     ref  ->   r3         multi-def "CSE - aggressive"
-;  V14 cse3         [V14,T03] (  6,  4   )     ref  ->   r5         "CSE - aggressive"
+;  V11 cse0         [V11,T05] (  5,  2.50)     int  ->   r1         "CSE - aggressive"
+;  V12 cse1         [V12,T02] (  8,  4   )     ref  ->   lr         multi-def "CSE - aggressive"
+;  V13 cse2         [V13,T04] (  5,  3.50)     ref  ->   r1         multi-def "CSE - aggressive"
+;  V14 cse3         [V14,T03] (  6,  4   )     ref  ->   r2         "CSE - aggressive"
 ;
 ; Lcl frame size = 4
 
 G_M35532_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r3,r4,r5,r6,r11,lr}
-            add     r11, sp, 16
+            push    {r3,r4,r11,lr}
+            add     r11, sp, 8
                        ;; size=8 bbWeight=1 PerfScore 2.00
 G_M35532_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
             ; byrRegs +[r0]
-            movs    r4, 1
-            ldr     r5, [r0]
-            ; gcrRegs +[r5]
-            cmp     r5, 0
+            movs    r3, 1
+            ldr     r2, [r0]
+            ; gcrRegs +[r2]
+            cmp     r2, 0
             beq     SHORT G_M35532_IG04
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M35532_IG03:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            ldr     r3, [r0+0x08]
-            ; gcrRegs +[r3]
-            cmp     r3, 0
+G_M35532_IG03:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            ldr     r1, [r0+0x08]
+            ; gcrRegs +[r1]
+            cmp     r1, 0
             bne     SHORT G_M35532_IG04
-            ldr     r6, [r0+0x04]
-            ; gcrRegs +[r6]
-            cmp     r6, 0
+            ldr     lr, [r0+0x04]
+            ; gcrRegs +[lr]
+            cmp     lr, 0
             bne     SHORT G_M35532_IG04
-            movs    r4, 0
-                       ;; size=14 bbWeight=0.50 PerfScore 3.50
-G_M35532_IG04:        ; bbWeight=1, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            ; gcrRegs -[r3 r6]
-            ldr     r3, [r0+0x08]
-            ; gcrRegs +[r3]
-            cmp     r3, 0
+            movs    r3, 0
+                       ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M35532_IG04:        ; bbWeight=1, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            ; gcrRegs -[r1 lr]
+            ldr     r1, [r0+0x08]
+            ; gcrRegs +[r1]
+            cmp     r1, 0
             beq     SHORT G_M35532_IG06
                        ;; size=6 bbWeight=1 PerfScore 3.00
-G_M35532_IG05:        ; bbWeight=0.50, gcrefRegs=0028 {r3 r5}, byrefRegs=0001 {r0}, byref, isz
-            ldr     r6, [r0+0x04]
-            ; gcrRegs +[r6]
-            cmp     r6, 0
+G_M35532_IG05:        ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0001 {r0}, byref, isz
+            ldr     lr, [r0+0x04]
+            ; gcrRegs +[lr]
+            cmp     lr, 0
             beq     SHORT G_M35532_IG06
-            ldr     r3, [r3+0x04]
-            ; gcrRegs -[r3]
-            ldr     r2, [r6+0x04]
-            cmp     r3, r2
+            ldr     r1, [r1+0x04]
+            ; gcrRegs -[r1]
+            ldr     lr, [lr+0x04]
+            ; gcrRegs -[lr]
+            cmp     r1, lr
             bne     SHORT G_M35532_IG06
-            movs    r4, 0
+            movs    r3, 0
             b       SHORT G_M35532_IG07
-                       ;; size=18 bbWeight=0.50 PerfScore 4.50
-G_M35532_IG06:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            ; gcrRegs -[r6]
-            cmp     r4, 0
+                       ;; size=24 bbWeight=0.50 PerfScore 4.50
+G_M35532_IG06:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            cmp     r3, 0
             bne     SHORT G_M35532_IG18
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M35532_IG07:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            add     r3, r0, 12
-            ; byrRegs +[r3]
-            ldr     r3, [r3+0x20]
-            ; byrRegs -[r3]
-            cmp     r3, 1
+G_M35532_IG07:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            add     r1, r0, 12
+            ; byrRegs +[r1]
+            ldr     r1, [r1+0x20]
+            ; byrRegs -[r1]
+            cmp     r1, 1
             beq     SHORT G_M35532_IG08
-            cmp     r3, 3
+            cmp     r1, 3
             beq     SHORT G_M35532_IG08
-            cmp     r3, 2
+            cmp     r1, 2
             beq     SHORT G_M35532_IG08
-            cmp     r3, 4
-            beq     SHORT G_M35532_IG08
-            ldr     r3, [r0+0x2C]
-            cmp     r3, 5
-            bne     SHORT G_M35532_IG18
-            b       SHORT G_M35532_IG13
-                       ;; size=30 bbWeight=0.50 PerfScore 7.00
-G_M35532_IG08:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r5, 0
+            cmp     r1, 4
+            bne     SHORT G_M35532_IG13
+                       ;; size=22 bbWeight=0.50 PerfScore 5.00
+G_M35532_IG08:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            cmp     r2, 0
             beq     SHORT G_M35532_IG11
-            ldr     r3, [r5+0x04]
+            ldr     r3, [r2+0x04]
             ldr     r2, [r0+0x14]
-            ; gcrRegs +[r2]
             ldr     r2, [r2+0x04]
             ; gcrRegs -[r2]
             cmp     r3, r2
@@ -106,7 +101,6 @@ G_M35532_IG08:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0},
             b       SHORT G_M35532_IG10
                        ;; size=18 bbWeight=0.50 PerfScore 4.50
 G_M35532_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
-            ; gcrRegs -[r5]
             movs    r3, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
@@ -116,26 +110,30 @@ G_M35532_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
             movs    r3, 0
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            uxtb    r4, r3
+            uxtb    r3, r3
             b       SHORT G_M35532_IG18
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M35532_IG13:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0001 {r0}, byref, isz
-            ; gcrRegs +[r5]
-            ldr     r6, [r0+0x04]
-            ; gcrRegs +[r6]
-            cmp     r6, 0
+G_M35532_IG13:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0001 {r0}, byref, isz
+            ; gcrRegs +[r2]
+            ldr     r1, [r0+0x2C]
+            cmp     r1, 5
+            bne     SHORT G_M35532_IG18
+            ldr     lr, [r0+0x04]
+            ; gcrRegs +[lr]
+            cmp     lr, 0
             beq     SHORT G_M35532_IG18
-            cmp     r5, 0
+            cmp     r2, 0
             beq     SHORT G_M35532_IG16
-            ldr     r3, [r5+0x04]
-            ldr     r2, [r6+0x04]
+            ldr     r3, [r2+0x04]
+            ldr     r2, [lr+0x04]
+            ; gcrRegs -[r2]
             cmp     r3, r2
             bne     SHORT G_M35532_IG14
             movs    r3, 0
             b       SHORT G_M35532_IG15
-                       ;; size=22 bbWeight=0.50 PerfScore 5.50
+                       ;; size=34 bbWeight=0.50 PerfScore 7.00
 G_M35532_IG14:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
-            ; gcrRegs -[r5-r6]
+            ; gcrRegs -[lr]
             movs    r3, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG15:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
@@ -145,10 +143,10 @@ G_M35532_IG16:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, b
             movs    r3, 0
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG17:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
-            uxtb    r4, r3
+            uxtb    r3, r3
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M35532_IG18:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r4, 0
+            cmp     r3, 0
             bne     SHORT G_M35532_IG20
             adds    r0, 12
             movw    r3, 0xd1ff
@@ -157,7 +155,7 @@ G_M35532_IG18:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byre
                        ;; size=16 bbWeight=1 PerfScore 6.00
 G_M35532_IG19:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 4
-            pop     {r4,r5,r6,r11,lr}
+            pop     {r4,r11,lr}
             bx      r3     // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=1 PerfScore 3.00
@@ -196,7 +194,7 @@ G_M35532_IG20:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
             bkpt    
                        ;; size=62 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 232, prolog size 8, PerfScore 48.50, instruction count 100, allocated bytes for code 232 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (Tier1)
+; Total bytes of code 246, prolog size 8, PerfScore 48.00, instruction count 99, allocated bytes for code 246 (MethodHash=77317533) for method System.Security.Cryptography.ECParameters:Validate():this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -208,18 +206,18 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 116 (0x00074) Actual length = 232 (0x0000e8)
+  Function Length   : 123 (0x0007b) Actual length = 246 (0x0000f6)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 3 (0x03)
   ---- Unwind codes ----
-    A8 78       pop {r3,r4,r5,r6,r11,lr}            ; opsize 32
+    A8 18       pop {r3,r4,r11,lr}                  ; opsize 32
     FF          end
     ---- Epilog start at index 3 ----
     01          add sp, sp, #4                      ; opsize 16
-    A8 70       pop {r4,r5,r6,r11,lr}               ; opsize 32
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
...

+8 (+12.50%) : 41805.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)

@@ -11,24 +11,23 @@
 ;  V00 this         [V00,T02] (  3,  2.50)     ref  ->   r0         this class-hnd single-def <System.Xml.Serialization.XmlSerializationWriter>
 ;  V01 arg1         [V01,T03] (  3,  2.50)     ref  ->   r1         class-hnd single-def <System.String>
 ;  V02 arg2         [V02,T04] (  3,  2.50)     ref  ->   r2         class-hnd single-def <System.String>
-;  V03 arg3         [V03,T00] (  5,  4   )     ref  ->   r4         class-hnd single-def <System.String>
+;  V03 arg3         [V03,T01] (  5,  4   )     ref  ->   r4         class-hnd single-def <System.String>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;* V06 tmp2         [V06    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V07 tmp3         [V07,T01] (  5,  5   )     ref  ->   r5         class-hnd single-def "Inlining Arg" <System.Xml.XmlWriter>
+;  V07 tmp3         [V07,T00] (  6,  6   )     ref  ->   r5         class-hnd single-def "Inlining Arg" <System.Xml.XmlWriter>
 ;* V08 tmp4         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Xml.XmlWriter>
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;* V11 tmp7         [V11    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;* V12 tmp8         [V12    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V14 cse0         [V14,T05] (  3,  1.50)     int  ->   r7         "CSE - moderate"
-;  V15 cse1         [V15,T06] (  3,  1.50)     int  ->   r6         "CSE - moderate"
+;  V14 cse0         [V14,T05] (  3,  1.50)     int  ->   r6         "CSE - moderate"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 4
 
 G_M11953_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
-            push    {r4,r5,r6,r7,r11,lr}
+            push    {r3,r4,r5,r6,r11,lr}
             add     r11, sp, 16
             mov     r4, r3
             ; gcrRegs +[r4]
@@ -47,9 +46,9 @@ G_M11953_IG03:        ; bbWeight=0.50, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0
             mov     r2, r1
             movs    r1, 0
             ; gcrRegs -[r1]
-            ldr     r6, [r5]
-            ldr     r7, [r6+0x30]
-            ldr     lr, [r7+0x04]
+            ldr     lr, [r5]
+            ldr     r6, [lr+0x30]
+            ldr     lr, [r6+0x04]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0 r2-r3]
             ldr     r0, [r4+0x04]
@@ -59,50 +58,56 @@ G_M11953_IG03:        ; bbWeight=0.50, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0
             ; gcrRegs +[r0]
             mov     r1, r4
             ; gcrRegs +[r1]
-            ldr     r3, [r6+0x34]
+            ldr     r3, [r5]
+            ldr     r3, [r3+0x34]
             ldr     r3, [r3+0x10]
             blx     r3     // <unknown method>
             ; gcrRegs -[r0-r1 r4]
-                       ;; size=36 bbWeight=0.50 PerfScore 8.50
+                       ;; size=42 bbWeight=0.50 PerfScore 9.00
 G_M11953_IG04:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             mov     r0, r5
             ; gcrRegs +[r0]
-            ldr     r3, [r7+0x08]
+            ldr     r3, [r6+0x08]
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M11953_IG05:        ; bbWeight=0.50, epilog, nogc, extend
-            pop     {r4,r5,r6,r7,r11,lr}
+            add     sp, 4
+            pop     {r4,r5,r6,r11,lr}
             bx      r3     // <unknown method>
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+                       ;; size=8 bbWeight=0.50 PerfScore 1.50
 G_M11953_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[r0 r5]
-            pop     {r4,r5,r6,r7,r11,pc}
+            pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 64, prolog size 8, PerfScore 16.00, instruction count 27, allocated bytes for code 64 (MethodHash=0412d14e) for method System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 17.00, instruction count 29, allocated bytes for code 72 (MethodHash=0412d14e) for method System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
 ; ============================================================
 
 Unwind Info:
   >> Start offset   : 0x000000 (not in unwind data)
   >>   End offset   : 0xd1ffab1e (not in unwind data)
-  Code Words        : 1
+  Code Words        : 2
   Epilog Count      : 2
   F bit             : 0
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 32 (0x00020) Actual length = 64 (0x000040)
+  Function Length   : 36 (0x00024) Actual length = 72 (0x000048)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
-  Epilog Start Index         : 0 (0x00)
+  Epilog Start Index         : 3 (0x03)
   ---- Scope 1
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 F0       pop {r4,r5,r6,r7,r11,lr}            ; opsize 32
+    A8 78       pop {r3,r4,r5,r6,r11,lr}            ; opsize 32
+    FF          end
+    ---- Epilog start at index 3 ----
+    01          add sp, sp, #4                      ; opsize 16
+    A8 70       pop {r4,r5,r6,r11,lr}               ; opsize 32
     FF          end
     FF          end
 

coreclr_tests.run.linux.arm.checked.mch

-18 (-10.47%) : 157996.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)

@@ -11,16 +11,14 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->   r4         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T02] (  4,  3.50)     ref  ->   r6         class-hnd single-def <System.Type>
-;  V03 arg3         [V03,T01] (  7,  4.25)     ref  ->   r5         class-hnd single-def <System.Object>
-;* V04 loc0         [V04,T09] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
+;  V03 arg3         [V03,T01] (  6,  4   )     ref  ->   r5         class-hnd single-def <System.Object>
+;* V04 loc0         [V04,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T03] (  3,  2.50)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V07 tmp2         [V07,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp3         [V08,T10] (  0,  0   )     int  ->  zero-ref   
-;  V09 tmp4         [V09,T08] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
-;  V10 tmp5         [V10,T05] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V11 cse0         [V11,T06] (  3,  1.50)     int  ->   r1         "CSE - moderate"
-;  V12 cse1         [V12,T04] (  4,  1.75)     int  ->   r0         "CSE - moderate"
+;* V07 tmp2         [V07,T05] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp3         [V08,T08] (  0,  0   )     int  ->  zero-ref   
+;  V09 tmp4         [V09,T06] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
+;  V10 tmp5         [V10,T04] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
 ;
 ; Lcl frame size = 4
 
@@ -35,34 +33,32 @@ G_M32564_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[r5]
                        ;; size=14 bbWeight=1 PerfScore 5.00
 G_M32564_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            cmp     r6, r1
-            bne     SHORT G_M32564_IG07
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            cmp     r6, r0
+            bne     SHORT G_M32564_IG04
                        ;; size=12 bbWeight=1 PerfScore 4.00
 G_M32564_IG03:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r5, 0
-            beq     SHORT G_M32564_IG07
-            ldr     r1, [r5]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M32564_IG07
-            cmp     r1, r0
-            beq     SHORT G_M32564_IG05
-                       ;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M32564_IG04:        ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+            beq     SHORT G_M32564_IG04
+            ldr     r0, [r5]
+            movw    r2, 0xd1ff
+            movt    r2, 0xd1ff
+            cmp     r0, r2
+            beq     SHORT G_M32564_IG06
+                       ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M32564_IG04:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+            ldrb    r0, [r4+0x08]
+            movs    r2, 0
+            strb    r2, [r4+0x08]
+            cmp     r0, 0
+            beq     SHORT G_M32564_IG08
+                       ;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M32564_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+            pop     {r3,r4,r5,r6,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M32564_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r4 r6]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-            ; gcr arg pop 0
-                       ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M32564_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             ldrb    r0, [r5+0x04]
             movw    r2, 0xd1ff
             movt    r2, 0xd1ff
@@ -73,31 +69,21 @@ G_M32564_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             movt    r3, 0xd1ff
             ldr     r3, [r3]
                        ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M32564_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG07:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 4
             pop     {r4,r5,r6,r11,lr}
             bx      r3     // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M32564_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M32564_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r2] +[r4 r6]
-            ldrb    r0, [r4+0x08]
-            movs    r1, 0
-            strb    r1, [r4+0x08]
-            cmp     r0, 0
-            beq     SHORT G_M32564_IG09
-                       ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-            pop     {r3,r4,r5,r6,r11,pc}
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M32564_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [r4]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M32564_IG11
+            beq     SHORT G_M32564_IG10
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M32564_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M32564_IG09:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r1
             mov     r1, r4
             ; gcrRegs +[r1]
@@ -108,7 +94,7 @@ G_M32564_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M32564_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M32564_IG10:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
@@ -124,14 +110,14 @@ G_M32564_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs +[r0]
             ldr     r12, [lr+0x0C]
                        ;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M32564_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG11:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 4
             pop     {r4,r5,r6,r11,lr}
             bx      r12        // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 172, prolog size 14, PerfScore 32.75, instruction count 62, allocated bytes for code 172 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
+; Total bytes of code 154, prolog size 14, PerfScore 30.50, instruction count 55, allocated bytes for code 154 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -143,16 +129,16 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 86 (0x00056) Actual length = 172 (0x0000ac)
+  Function Length   : 77 (0x0004d) Actual length = 154 (0x00009a)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
-  Epilog Start Index         : 3 (0x03)
+  Epilog Start Index         : 0 (0x00)
   ---- Scope 1
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
-  Epilog Start Index         : 0 (0x00)
+  Epilog Start Index         : 3 (0x03)
   ---- Scope 2
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)

-18 (-9.78%) : 157932.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)

@@ -11,17 +11,15 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->   r4         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T02] (  4,  3.50)     ref  ->   r6         class-hnd single-def <System.Type>
-;  V03 arg3         [V03,T01] (  7,  4.25)     ref  ->   r5         class-hnd single-def <System.Object>
-;* V04 loc0         [V04,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
+;  V03 arg3         [V03,T01] (  6,  4   )     ref  ->   r5         class-hnd single-def <System.Object>
+;* V04 loc0         [V04,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V06 tmp1         [V06,T04] (  3,  2.50)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V07 tmp2         [V07,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp3         [V08,T11] (  0,  0   )     int  ->  zero-ref   
+;* V07 tmp2         [V07,T06] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp3         [V08,T09] (  0,  0   )     int  ->  zero-ref   
 ;  V09 tmp4         [V09,T03] (  3,  3   )     ref  ->   r4         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-;  V10 tmp5         [V10,T09] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
-;  V11 tmp6         [V11,T06] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V12 cse0         [V12,T07] (  3,  1.50)     int  ->   r1         "CSE - moderate"
-;  V13 cse1         [V13,T05] (  4,  1.75)     int  ->   r0         "CSE - moderate"
+;  V10 tmp5         [V10,T07] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
+;  V11 tmp6         [V11,T05] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
 ;
 ; Lcl frame size = 4
 
@@ -36,34 +34,33 @@ G_M59248_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ; gcrRegs +[r5]
                        ;; size=14 bbWeight=1 PerfScore 5.00
 G_M59248_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
-            movw    r1, 0xd1ff
-            movt    r1, 0xd1ff
-            cmp     r6, r1
-            bne     SHORT G_M59248_IG07
+            movw    r0, 0xd1ff
+            movt    r0, 0xd1ff
+            cmp     r6, r0
+            bne     SHORT G_M59248_IG04
                        ;; size=12 bbWeight=1 PerfScore 4.00
 G_M59248_IG03:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r5, 0
-            beq     SHORT G_M59248_IG07
-            ldr     r1, [r5]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M59248_IG07
-            cmp     r1, r0
-            beq     SHORT G_M59248_IG05
-                       ;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M59248_IG04:        ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r4 r6]
-            mov     r1, r5
-            ; gcrRegs +[r1]
+            beq     SHORT G_M59248_IG04
+            ldr     r0, [r5]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-            ; gcr arg pop 0
-                       ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M59248_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+            cmp     r0, r3
+            beq     SHORT G_M59248_IG06
+                       ;; size=18 bbWeight=0.50 PerfScore 3.50
+G_M59248_IG04:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
+            ldrb    r0, [r4+0x08]
+            movs    r3, 0
+            strb    r3, [r4+0x08]
+            cmp     r0, 0
+            beq     SHORT G_M59248_IG08
+            movs    r0, 0
+                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+G_M59248_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+            pop     {r3,r4,r5,r6,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M59248_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r4 r6]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
@@ -85,29 +82,18 @@ G_M59248_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             mov     r0, r4
             ; gcrRegs +[r0]
                        ;; size=38 bbWeight=0.50 PerfScore 6.50
-G_M59248_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+G_M59248_IG07:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59248_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M59248_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r5-r6]
-            ldrb    r0, [r4+0x08]
-            movs    r1, 0
-            strb    r1, [r4+0x08]
-            cmp     r0, 0
-            beq     SHORT G_M59248_IG09
-            movs    r0, 0
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M59248_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-            pop     {r3,r4,r5,r6,r11,pc}
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59248_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [r4]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M59248_IG11
+            beq     SHORT G_M59248_IG10
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M59248_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M59248_IG09:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r1
             mov     r1, r4
             ; gcrRegs +[r1]
@@ -118,7 +104,7 @@ G_M59248_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
                        ;; size=16 bbWeight=0.25 PerfScore 1.50
-G_M59248_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M59248_IG10:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
@@ -134,14 +120,14 @@ G_M59248_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs +[r0]
             ldr     r12, [lr+0x0C]
                        ;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M59248_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M59248_IG11:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 4
             pop     {r4,r5,r6,r11,lr}
             bx      r12        // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 184, prolog size 14, PerfScore 34.75, instruction count 66, allocated bytes for code 184 (MethodHash=45f7188f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
+; Total bytes of code 166, prolog size 14, PerfScore 32.50, instruction count 59, allocated bytes for code 166 (MethodHash=45f7188f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -153,7 +139,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 92 (0x0005c) Actual length = 184 (0x0000b8)
+  Function Length   : 83 (0x00053) Actual length = 166 (0x0000a6)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-14 (-9.46%) : 326544.dasm - testout1:SubFunclet221():int (FullOpts)

@@ -13,7 +13,7 @@
 ;* V02 loc2         [V02    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V03 loc3         [V03    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V04 loc4         [V04    ] (  0,  0   )   ubyte  ->  zero-ref   
-;  V05 loc5         [V05,T01] (  5,  5   )     ref  ->   r4         class-hnd exact single-def <testout1>
+;  V05 loc5         [V05,T01] (  4,  4   )     ref  ->   r4         class-hnd exact single-def <testout1>
 ;* V06 loc6         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
 ;  V07 loc7         [V07,T04] (  4,  4   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
 ;  V08 loc8         [V08,T00] (  6,  6   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
@@ -21,72 +21,71 @@
 ;* V10 tmp1         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <testout1>
 ;* V11 tmp2         [V11    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V12 tmp3         [V12    ] (  0,  0   )     int  ->  zero-ref    single-def
-;  V13 tmp4         [V13,T11] (  2,  2   )     int  ->   r3        
+;* V13 tmp4         [V13,T10] (  0,  0   )     int  ->  zero-ref   
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V16 tmp7         [V16,T30] (  0,  0   )     int  ->  zero-ref   
-;  V17 tmp8         [V17,T12] (  2,  2   )     int  ->   r3         single-def
+;* V16 tmp7         [V16,T29] (  0,  0   )     int  ->  zero-ref   
+;* V17 tmp8         [V17,T11] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V18 tmp9         [V18    ] (  0,  0   )     int  ->  zero-ref    single-def
-;  V19 tmp10        [V19,T13] (  2,  2   )     int  ->   r2        
-;  V20 tmp11        [V20,T14] (  2,  2   )     int  ->   r3         single-def
+;* V19 tmp10        [V19,T12] (  0,  0   )     int  ->  zero-ref   
+;* V20 tmp11        [V20,T13] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref    single-def
-;  V22 tmp13        [V22,T15] (  2,  2   )     int  ->   r0        
-;  V23 tmp14        [V23,T16] (  2,  2   )     int  ->   r0         single-def
+;* V22 tmp13        [V22,T14] (  0,  0   )     int  ->  zero-ref   
+;* V23 tmp14        [V23,T15] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V24 tmp15        [V24    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V25 tmp16        [V25,T31] (  0,  0   )     int  ->  zero-ref   
-;  V26 tmp17        [V26,T17] (  2,  2   )     int  ->   r0         single-def
+;* V25 tmp16        [V25,T30] (  0,  0   )     int  ->  zero-ref   
+;* V26 tmp17        [V26    ] (  0,  0   )     int  ->  zero-ref   
 ;* V27 tmp18        [V27    ] (  0,  0   )     int  ->  zero-ref   
 ;* V28 tmp19        [V28    ] (  0,  0   )     int  ->  zero-ref   
-;* V29 tmp20        [V29,T18] (  0,  0   )     int  ->  zero-ref    single-def
+;* V29 tmp20        [V29,T16] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V32 tmp23        [V32,T32] (  0,  0   )     int  ->  zero-ref    single-def
+;* V32 tmp23        [V32,T31] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V33 tmp24        [V33    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V34 tmp25        [V34,T33] (  0,  0   )     int  ->  zero-ref   
-;* V35 tmp26        [V35,T19] (  0,  0   )     int  ->  zero-ref    single-def
+;* V34 tmp25        [V34,T32] (  0,  0   )     int  ->  zero-ref   
+;* V35 tmp26        [V35,T17] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V36 tmp27        [V36    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V37 tmp28        [V37,T20] (  0,  0   )     int  ->  zero-ref   
-;* V38 tmp29        [V38,T21] (  0,  0   )     int  ->  zero-ref    single-def
+;* V37 tmp28        [V37,T18] (  0,  0   )     int  ->  zero-ref   
+;* V38 tmp29        [V38,T19] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V40 tmp31        [V40,T34] (  0,  0   )     int  ->  zero-ref   
-;* V41 tmp32        [V41,T22] (  0,  0   )     int  ->  zero-ref    single-def
+;* V40 tmp31        [V40,T33] (  0,  0   )     int  ->  zero-ref   
+;* V41 tmp32        [V41,T20] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V43 tmp34        [V43,T23] (  0,  0   )     int  ->  zero-ref   
-;* V44 tmp35        [V44,T35] (  0,  0   )     int  ->  zero-ref    single-def
+;* V43 tmp34        [V43,T21] (  0,  0   )     int  ->  zero-ref   
+;* V44 tmp35        [V44,T34] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V45 tmp36        [V45    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V46 tmp37        [V46,T36] (  0,  0   )     int  ->  zero-ref   
-;  V47 tmp38        [V47,T24] (  2,  2   )     int  ->   r0         single-def
+;* V46 tmp37        [V46,T35] (  0,  0   )     int  ->  zero-ref   
+;* V47 tmp38        [V47,T22] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V48 tmp39        [V48    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V49 tmp40        [V49,T37] (  0,  0   )     int  ->  zero-ref   
-;  V50 tmp41        [V50,T25] (  2,  2   )     int  ->   r0         single-def
+;* V49 tmp40        [V49,T36] (  0,  0   )     int  ->  zero-ref   
+;* V50 tmp41        [V50,T23] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V51 tmp42        [V51    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V52 tmp43        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V53 tmp44        [V53,T26] (  0,  0   )     int  ->  zero-ref    single-def
+;* V53 tmp44        [V53    ] (  0,  0   )     int  ->  zero-ref   
 ;* V54 tmp45        [V54    ] (  0,  0   )     int  ->  zero-ref   
 ;* V55 tmp46        [V55    ] (  0,  0   )     int  ->  zero-ref   
-;* V56 tmp47        [V56,T38] (  0,  0   )     int  ->  zero-ref    single-def
+;* V56 tmp47        [V56,T37] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V57 tmp48        [V57    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V58 tmp49        [V58,T39] (  0,  0   )     int  ->  zero-ref   
-;* V59 tmp50        [V59,T27] (  0,  0   )     int  ->  zero-ref    single-def
+;* V58 tmp49        [V58,T38] (  0,  0   )     int  ->  zero-ref   
+;* V59 tmp50        [V59,T24] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V60 tmp51        [V60    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V61 tmp52        [V61,T28] (  0,  0   )     int  ->  zero-ref   
-;* V62 tmp53        [V62,T29] (  0,  0   )     int  ->  zero-ref    single-def
+;* V61 tmp52        [V61,T25] (  0,  0   )     int  ->  zero-ref   
+;* V62 tmp53        [V62,T26] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V63 tmp54        [V63    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V64 tmp55        [V64,T40] (  0,  0   )     int  ->  zero-ref   
-;* V65 tmp56        [V65,T41] (  0,  0   )     int  ->  zero-ref    single-def
+;* V64 tmp55        [V64,T39] (  0,  0   )     int  ->  zero-ref   
+;* V65 tmp56        [V65,T40] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V66 tmp57        [V66    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V67 tmp58        [V67,T42] (  0,  0   )     int  ->  zero-ref   
-;* V68 tmp59        [V68,T43] (  0,  0   )     int  ->  zero-ref    single-def
+;* V67 tmp58        [V67,T41] (  0,  0   )     int  ->  zero-ref   
+;  V68 tmp59        [V68,T27] (  2,  2   )     int  ->   r3         single-def
 ;* V69 tmp60        [V69    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V70 tmp61        [V70,T44] (  0,  0   )     int  ->  zero-ref   
-;  V71 cse0         [V71,T05] (  2,  2   )     int  ->   r0         "CSE - aggressive"
-;  V72 cse1         [V72,T08] (  2,  2   )     int  ->   r0         "CSE - moderate"
+;  V70 tmp61        [V70,T28] (  2,  2   )     int  ->   r0        
+;* V71 cse0         [V71,T05] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
+;* V72 cse1         [V72,T08] (  0,  0   )     int  ->  zero-ref    "CSE - moderate"
 ;* V73 cse2         [V73,T09] (  0,  0   )     int  ->  zero-ref    "CSE - conservative"
-;  V74 cse3         [V74,T02] (  2,  2   )     int  ->   r2         "CSE - moderate"
-;  V75 cse4         [V75,T06] (  2,  2   )     int  ->   r3         "CSE - conservative"
+;  V74 cse3         [V74,T02] (  2,  2   )     int  ->   r3         "CSE - moderate"
+;* V75 cse4         [V75,T06] (  0,  0   )     int  ->  zero-ref    "CSE - conservative"
 ;  V76 cse5         [V76,T07] (  2,  2   )     int  ->   r0         "CSE - conservative"
-;  V77 cse6         [V77,T10] (  2,  2   )     int  ->   r0         "CSE - moderate"
-;  V78 cse7         [V78,T03] (  4,  4   )     int  ->   r3         "CSE - aggressive"
+;  V77 cse6         [V77,T03] (  4,  4   )     int  ->   r3         "CSE - aggressive"
 ;
 ; Lcl frame size = 4
 
@@ -142,23 +141,16 @@ G_M59959_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movs    r3, 0
             strb    r3, [r4+0x08]
             strb    r2, [r4+0x09]
-            ldr     r3, [r4+0x04]
-            adds    r3, 17
-            ldr     r2, [r0+0x0C]
-            adds    r3, r3, r2
+            ldr     r3, [r0+0x0C]
             ldr     r0, [r0+0x08]
             ; gcrRegs -[r0]
             adds    r0, r3, r0
-            adds    r0, r0, 3
-            subs    r0, r0, 5
-            adds    r0, r0, 3
-            subs    r0, r0, 5
-                       ;; size=136 bbWeight=1 PerfScore 51.00
+                       ;; size=122 bbWeight=1 PerfScore 44.00
 G_M59959_IG03:        ; bbWeight=1, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 148, prolog size 8, PerfScore 54.00, instruction count 54, allocated bytes for code 148 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 134, prolog size 8, PerfScore 47.00, instruction count 47, allocated bytes for code 134 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -170,7 +162,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 74 (0x0004a) Actual length = 148 (0x000094)
+  Function Length   : 67 (0x00043) Actual length = 134 (0x000086)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

+28 (+18.92%) : 325627.dasm - testout1:SubFunclet223():int (FullOpts)

@@ -8,83 +8,82 @@
 ; 0 inlinees with PGO data; 29 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;* V00 loc0         [V00    ] (  0,  0   )     int  ->  zero-ref    single-def
+;  V00 loc0         [V00,T00] (  8,  8   )     int  ->   lr        
 ;* V01 loc1         [V01    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V02 loc2         [V02    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V03 loc3         [V03    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V04 loc4         [V04    ] (  0,  0   )   ubyte  ->  zero-ref   
-;  V05 loc5         [V05,T01] (  5,  5   )     ref  ->   r4         class-hnd exact single-def <testout1>
+;  V05 loc5         [V05,T02] (  5,  5   )     ref  ->   r4         class-hnd exact single-def <testout1>
 ;* V06 loc6         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
-;  V07 loc7         [V07,T03] (  4,  4   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
-;  V08 loc8         [V08,T00] (  6,  6   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
+;  V07 loc7         [V07,T04] (  4,  4   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
+;  V08 loc8         [V08,T01] (  6,  6   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2         [V11    ] (  0,  0   )     int  ->  zero-ref    single-def
+;* V11 tmp2         [V11    ] (  0,  0   )     int  ->  zero-ref   
 ;* V12 tmp3         [V12    ] (  0,  0   )     int  ->  zero-ref   
 ;* V13 tmp4         [V13    ] (  0,  0   )     int  ->  zero-ref   
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
-;  V17 tmp8         [V17,T09] (  2,  2   )     int  ->   r3         single-def
+;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     int  ->  zero-ref   
 ;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
-;  V20 tmp11        [V20,T10] (  2,  2   )     int  ->   r3         single-def
+;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
-;  V23 tmp14        [V23,T11] (  2,  2   )     int  ->   r0         single-def
+;* V23 tmp14        [V23    ] (  0,  0   )     int  ->  zero-ref   
 ;* V24 tmp15        [V24    ] (  0,  0   )     int  ->  zero-ref   
 ;* V25 tmp16        [V25    ] (  0,  0   )     int  ->  zero-ref   
-;  V26 tmp17        [V26,T12] (  2,  2   )     int  ->   r0         single-def
+;* V26 tmp17        [V26    ] (  0,  0   )     int  ->  zero-ref   
 ;* V27 tmp18        [V27    ] (  0,  0   )     int  ->  zero-ref   
 ;* V28 tmp19        [V28    ] (  0,  0   )     int  ->  zero-ref   
-;* V29 tmp20        [V29,T13] (  0,  0   )     int  ->  zero-ref    single-def
+;* V29 tmp20        [V29    ] (  0,  0   )     int  ->  zero-ref   
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref   
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref   
-;* V32 tmp23        [V32,T21] (  0,  0   )     int  ->  zero-ref    single-def
+;* V32 tmp23        [V32    ] (  0,  0   )     int  ->  zero-ref   
 ;* V33 tmp24        [V33    ] (  0,  0   )     int  ->  zero-ref   
 ;* V34 tmp25        [V34    ] (  0,  0   )     int  ->  zero-ref   
-;* V35 tmp26        [V35,T14] (  0,  0   )     int  ->  zero-ref    single-def
+;* V35 tmp26        [V35    ] (  0,  0   )     int  ->  zero-ref   
 ;* V36 tmp27        [V36    ] (  0,  0   )     int  ->  zero-ref   
 ;* V37 tmp28        [V37    ] (  0,  0   )     int  ->  zero-ref   
-;* V38 tmp29        [V38,T15] (  0,  0   )     int  ->  zero-ref    single-def
+;* V38 tmp29        [V38    ] (  0,  0   )     int  ->  zero-ref   
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref   
 ;* V40 tmp31        [V40    ] (  0,  0   )     int  ->  zero-ref   
 ;* V41 tmp32        [V41    ] (  0,  0   )     int  ->  zero-ref   
 ;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref   
 ;* V43 tmp34        [V43    ] (  0,  0   )     int  ->  zero-ref   
-;* V44 tmp35        [V44,T22] (  0,  0   )     int  ->  zero-ref    single-def
+;* V44 tmp35        [V44    ] (  0,  0   )     int  ->  zero-ref   
 ;* V45 tmp36        [V45    ] (  0,  0   )     int  ->  zero-ref   
 ;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref   
-;  V47 tmp38        [V47,T16] (  2,  2   )     int  ->   r0         single-def
+;* V47 tmp38        [V47    ] (  0,  0   )     int  ->  zero-ref   
 ;* V48 tmp39        [V48    ] (  0,  0   )     int  ->  zero-ref   
 ;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref   
-;  V50 tmp41        [V50,T17] (  2,  2   )     int  ->   r0         single-def
+;* V50 tmp41        [V50    ] (  0,  0   )     int  ->  zero-ref   
 ;* V51 tmp42        [V51    ] (  0,  0   )     int  ->  zero-ref   
 ;* V52 tmp43        [V52    ] (  0,  0   )     int  ->  zero-ref   
-;* V53 tmp44        [V53,T18] (  0,  0   )     int  ->  zero-ref    single-def
+;* V53 tmp44        [V53    ] (  0,  0   )     int  ->  zero-ref   
 ;* V54 tmp45        [V54    ] (  0,  0   )     int  ->  zero-ref   
 ;* V55 tmp46        [V55    ] (  0,  0   )     int  ->  zero-ref   
-;* V56 tmp47        [V56,T23] (  0,  0   )     int  ->  zero-ref    single-def
+;* V56 tmp47        [V56    ] (  0,  0   )     int  ->  zero-ref   
 ;* V57 tmp48        [V57    ] (  0,  0   )     int  ->  zero-ref   
 ;* V58 tmp49        [V58    ] (  0,  0   )     int  ->  zero-ref   
-;* V59 tmp50        [V59,T19] (  0,  0   )     int  ->  zero-ref    single-def
+;* V59 tmp50        [V59    ] (  0,  0   )     int  ->  zero-ref   
 ;* V60 tmp51        [V60    ] (  0,  0   )     int  ->  zero-ref   
 ;* V61 tmp52        [V61    ] (  0,  0   )     int  ->  zero-ref   
-;* V62 tmp53        [V62,T20] (  0,  0   )     int  ->  zero-ref    single-def
+;* V62 tmp53        [V62    ] (  0,  0   )     int  ->  zero-ref   
 ;* V63 tmp54        [V63    ] (  0,  0   )     int  ->  zero-ref   
 ;* V64 tmp55        [V64    ] (  0,  0   )     int  ->  zero-ref   
-;* V65 tmp56        [V65,T24] (  0,  0   )     int  ->  zero-ref    single-def
+;* V65 tmp56        [V65    ] (  0,  0   )     int  ->  zero-ref   
 ;* V66 tmp57        [V66    ] (  0,  0   )     int  ->  zero-ref   
 ;* V67 tmp58        [V67    ] (  0,  0   )     int  ->  zero-ref   
 ;* V68 tmp59        [V68    ] (  0,  0   )     int  ->  zero-ref   
 ;* V69 tmp60        [V69    ] (  0,  0   )     int  ->  zero-ref   
 ;* V70 tmp61        [V70    ] (  0,  0   )     int  ->  zero-ref   
-;  V71 cse0         [V71,T06] (  2,  2   )     int  ->   r0         "CSE - aggressive"
-;  V72 cse1         [V72,T04] (  2,  2   )     int  ->   r0         "CSE - aggressive"
-;  V73 cse2         [V73,T07] (  2,  2   )     int  ->   r0         "CSE - aggressive"
-;  V74 cse3         [V74,T08] (  2,  2   )     int  ->   r2         "CSE - aggressive"
-;  V75 cse4         [V75,T05] (  2,  2   )     int  ->   r3         "CSE - aggressive"
-;  V76 cse5         [V76,T02] (  4,  4   )     int  ->   r3         "CSE - aggressive"
+;  V71 cse0         [V71,T08] (  2,  2   )     int  ->   lr         "CSE - aggressive"
+;  V72 cse1         [V72,T05] (  4,  4   )     int  ->   r2         "CSE - aggressive"
+;  V73 cse2         [V73,T06] (  4,  4   )     int  ->   r1         "CSE - aggressive"
+;  V74 cse3         [V74,T07] (  4,  4   )     int  ->   r0         "CSE - aggressive"
+;  V75 cse4         [V75,T03] (  5,  5   )     int  ->   r3         "CSE - aggressive"
 ;
 ; Lcl frame size = 4
 
@@ -135,28 +134,36 @@ G_M37173_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             strb    r2, [r3+0x04]
             movs    r2, 1
             strb    r2, [r3+0x05]
-            mvn     r3, 12
-            str     r3, [r4+0x04]
-            movs    r3, 0
-            strb    r3, [r4+0x08]
+            mvn     r2, 12
+            str     r2, [r4+0x04]
+            movs    r2, 0
+            strb    r2, [r4+0x08]
+            movs    r2, 1
             strb    r2, [r4+0x09]
-            ldr     r3, [r4+0x04]
-            adds    r3, 17
-            ldr     r2, [r0+0x0C]
-            adds    r3, r3, r2
+            ldr     r2, [r4+0x04]
+            ldr     r1, [r0+0x0C]
+            add     lr, r2, r1
             ldr     r0, [r0+0x08]
             ; gcrRegs -[r0]
+            add     lr, r0
+            add     lr, lr, 17
+            ldr     r3, [r3]
+            add     lr, r3
+            add     r3, lr, r2
+            adds    r3, r3, r1
+            add     lr, r3, 10
+            add     lr, r0
+            add     lr, r2
+            add     r3, lr, r1
             adds    r0, r3, r0
-            adds    r0, r0, 3
-            subs    r0, r0, 5
-            adds    r0, r0, 3
-            subs    r0, r0, 5
-                       ;; size=136 bbWeight=1 PerfScore 51.00
+            add     lr, r0, 17
+            mov     r0, lr
+                       ;; size=164 bbWeight=1 PerfScore 59.00
 G_M37173_IG03:        ; bbWeight=1, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 148, prolog size 8, PerfScore 54.00, instruction count 54, allocated bytes for code 148 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
+; Total bytes of code 176, prolog size 8, PerfScore 62.00, instruction count 62, allocated bytes for code 176 (MethodHash=49726eca) for method testout1:Sub_Funclet_223():int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -168,7 +175,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 74 (0x0004a) Actual length = 148 (0x000094)
+  Function Length   : 88 (0x00058) Actual length = 176 (0x0000b0)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

+32 (+23.88%) : 326042.dasm - testout1:SubFunclet221():int (FullOpts)

@@ -10,78 +10,76 @@
 ;
 ;* V00 loc0         [V00    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V01 loc1         [V01    ] (  0,  0   )     int  ->  zero-ref    single-def
-;  V02 loc2         [V02,T02] (  4,  4   )     ref  ->   r4         class-hnd exact single-def <testout1>
+;  V02 loc2         [V02,T02] (  5,  5   )     ref  ->   r4         class-hnd exact single-def <testout1>
 ;  V03 loc3         [V03,T01] (  6,  6   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <testout1>
 ;  V06 tmp2         [V06,T00] (  4,  8   )     ref  ->   r0         class-hnd exact single-def "dup spill" <<unknown class>>
-;* V07 tmp3         [V07    ] (  0,  0   )     int  ->  zero-ref    single-def
+;* V07 tmp3         [V07    ] (  0,  0   )     int  ->  zero-ref   
 ;* V08 tmp4         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref   
-;* V10 tmp6         [V10,T10] (  0,  0   )     int  ->  zero-ref    single-def
+;* V10 tmp6         [V10    ] (  0,  0   )     int  ->  zero-ref   
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref   
 ;* V12 tmp8         [V12    ] (  0,  0   )     int  ->  zero-ref   
-;* V13 tmp9         [V13,T11] (  0,  0   )     int  ->  zero-ref    single-def
+;* V13 tmp9         [V13    ] (  0,  0   )     int  ->  zero-ref   
 ;* V14 tmp10        [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp11        [V15    ] (  0,  0   )     int  ->  zero-ref   
-;* V16 tmp12        [V16,T12] (  0,  0   )     int  ->  zero-ref    single-def
+;* V16 tmp12        [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp13        [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp14        [V18    ] (  0,  0   )     int  ->  zero-ref   
-;* V19 tmp15        [V19,T13] (  0,  0   )     int  ->  zero-ref    single-def
+;  V19 tmp15        [V19,T07] (  2,  2   )     int  ->   lr         single-def
 ;* V20 tmp16        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp17        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp18        [V22    ] (  0,  0   )     int  ->  zero-ref   
 ;* V23 tmp19        [V23    ] (  0,  0   )     int  ->  zero-ref   
 ;* V24 tmp20        [V24    ] (  0,  0   )     int  ->  zero-ref   
-;* V25 tmp21        [V25,T14] (  0,  0   )     int  ->  zero-ref    single-def
+;* V25 tmp21        [V25    ] (  0,  0   )     int  ->  zero-ref   
 ;* V26 tmp22        [V26    ] (  0,  0   )     int  ->  zero-ref   
 ;* V27 tmp23        [V27    ] (  0,  0   )     int  ->  zero-ref   
-;* V28 tmp24        [V28,T23] (  0,  0   )     int  ->  zero-ref    single-def
+;* V28 tmp24        [V28    ] (  0,  0   )     int  ->  zero-ref   
 ;* V29 tmp25        [V29    ] (  0,  0   )     int  ->  zero-ref   
 ;* V30 tmp26        [V30    ] (  0,  0   )     int  ->  zero-ref   
-;* V31 tmp27        [V31,T15] (  0,  0   )     int  ->  zero-ref    single-def
+;* V31 tmp27        [V31    ] (  0,  0   )     int  ->  zero-ref   
 ;* V32 tmp28        [V32    ] (  0,  0   )     int  ->  zero-ref   
 ;* V33 tmp29        [V33    ] (  0,  0   )     int  ->  zero-ref   
-;* V34 tmp30        [V34,T16] (  0,  0   )     int  ->  zero-ref    single-def
+;* V34 tmp30        [V34    ] (  0,  0   )     int  ->  zero-ref   
 ;* V35 tmp31        [V35    ] (  0,  0   )     int  ->  zero-ref   
 ;* V36 tmp32        [V36    ] (  0,  0   )     int  ->  zero-ref   
-;* V37 tmp33        [V37,T17] (  0,  0   )     int  ->  zero-ref    single-def
+;* V37 tmp33        [V37    ] (  0,  0   )     int  ->  zero-ref   
 ;* V38 tmp34        [V38    ] (  0,  0   )     int  ->  zero-ref   
 ;* V39 tmp35        [V39    ] (  0,  0   )     int  ->  zero-ref   
-;* V40 tmp36        [V40,T24] (  0,  0   )     int  ->  zero-ref    single-def
+;  V40 tmp36        [V40,T08] (  2,  2   )     int  ->   r3         single-def
 ;* V41 tmp37        [V41    ] (  0,  0   )     int  ->  zero-ref   
 ;* V42 tmp38        [V42    ] (  0,  0   )     int  ->  zero-ref   
-;* V43 tmp39        [V43,T18] (  0,  0   )     int  ->  zero-ref    single-def
+;* V43 tmp39        [V43    ] (  0,  0   )     int  ->  zero-ref   
 ;* V44 tmp40        [V44    ] (  0,  0   )     int  ->  zero-ref   
 ;* V45 tmp41        [V45    ] (  0,  0   )     int  ->  zero-ref   
-;* V46 tmp42        [V46,T19] (  0,  0   )     int  ->  zero-ref    single-def
+;* V46 tmp42        [V46    ] (  0,  0   )     int  ->  zero-ref   
 ;* V47 tmp43        [V47    ] (  0,  0   )     int  ->  zero-ref   
 ;* V48 tmp44        [V48    ] (  0,  0   )     int  ->  zero-ref   
 ;* V49 tmp45        [V49    ] (  0,  0   )     int  ->  zero-ref   
 ;* V50 tmp46        [V50    ] (  0,  0   )     int  ->  zero-ref   
 ;* V51 tmp47        [V51    ] (  0,  0   )     int  ->  zero-ref   
-;* V52 tmp48        [V52,T25] (  0,  0   )     int  ->  zero-ref    single-def
+;* V52 tmp48        [V52    ] (  0,  0   )     int  ->  zero-ref   
 ;* V53 tmp49        [V53    ] (  0,  0   )     int  ->  zero-ref   
 ;* V54 tmp50        [V54    ] (  0,  0   )     int  ->  zero-ref   
-;* V55 tmp51        [V55,T20] (  0,  0   )     int  ->  zero-ref    single-def
+;  V55 tmp51        [V55,T09] (  2,  2   )     int  ->   r3         single-def
 ;* V56 tmp52        [V56    ] (  0,  0   )     int  ->  zero-ref   
 ;* V57 tmp53        [V57    ] (  0,  0   )     int  ->  zero-ref   
-;* V58 tmp54        [V58,T21] (  0,  0   )     int  ->  zero-ref    single-def
+;* V58 tmp54        [V58    ] (  0,  0   )     int  ->  zero-ref   
 ;* V59 tmp55        [V59    ] (  0,  0   )     int  ->  zero-ref   
 ;* V60 tmp56        [V60    ] (  0,  0   )     int  ->  zero-ref   
-;* V61 tmp57        [V61,T26] (  0,  0   )     int  ->  zero-ref    single-def
+;* V61 tmp57        [V61    ] (  0,  0   )     int  ->  zero-ref   
 ;* V62 tmp58        [V62    ] (  0,  0   )     int  ->  zero-ref   
 ;* V63 tmp59        [V63    ] (  0,  0   )     int  ->  zero-ref   
-;  V64 tmp60        [V64,T22] (  2,  2   )     int  ->   r3         single-def
+;* V64 tmp60        [V64    ] (  0,  0   )     int  ->  zero-ref   
 ;* V65 tmp61        [V65    ] (  0,  0   )     int  ->  zero-ref   
 ;* V66 tmp62        [V66    ] (  0,  0   )     int  ->  zero-ref   
-;* V67 cse0         [V67,T07] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;* V68 cse1         [V68,T04] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V69 cse2         [V69,T05] (  2,  2   )     int  ->   r3         "CSE - aggressive"
-;* V70 cse3         [V70,T06] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V71 cse4         [V71,T08] (  2,  2   )     int  ->   r0         "CSE - aggressive"
-;  V72 cse5         [V72,T03] (  4,  4   )     int  ->   r3         "CSE - aggressive"
-;  V73 cse6         [V73,T09] (  2,  2   )     int  ->   r0         "CSE - aggressive"
+;  V67 cse0         [V67,T10] (  2,  2   )     int  ->   r3         "CSE - aggressive"
+;  V68 cse1         [V68,T04] (  4,  4   )     int  ->   r2         "CSE - aggressive"
+;  V69 cse2         [V69,T05] (  4,  4   )     int  ->   r1         "CSE - aggressive"
+;  V70 cse3         [V70,T06] (  4,  4   )     int  ->   r0         "CSE - aggressive"
+;  V71 cse4         [V71,T03] (  5,  5   )     int  ->   r3         "CSE - aggressive"
 ;
 ; Lcl frame size = 4
 
@@ -132,21 +130,35 @@ G_M59959_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             strb    r2, [r3+0x04]
             movs    r2, 1
             strb    r2, [r3+0x05]
-            mvn     r3, 12
-            str     r3, [r4+0x04]
-            movs    r3, 0
-            strb    r3, [r4+0x08]
+            mvn     r2, 12
+            str     r2, [r4+0x04]
+            movs    r2, 0
+            strb    r2, [r4+0x08]
+            movs    r2, 1
             strb    r2, [r4+0x09]
-            ldr     r3, [r0+0x0C]
+            ldr     r2, [r4+0x04]
+            ldr     r1, [r0+0x0C]
+            add     lr, r2, r1
             ldr     r0, [r0+0x08]
             ; gcrRegs -[r0]
+            add     lr, r0
+            add     lr, lr, 17
+            ldr     r3, [r3]
+            add     r3, lr
+            adds    r3, r3, r2
+            adds    r3, r3, r1
+            adds    r3, 10
+            adds    r3, r3, r0
+            adds    r3, r3, r2
+            adds    r3, r3, r1
             adds    r0, r3, r0
-                       ;; size=122 bbWeight=1 PerfScore 44.00
+            adds    r0, 17
+                       ;; size=154 bbWeight=1 PerfScore 58.00
 G_M59959_IG03:        ; bbWeight=1, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 134, prolog size 8, PerfScore 47.00, instruction count 47, allocated bytes for code 134 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 166, prolog size 8, PerfScore 61.00, instruction count 61, allocated bytes for code 166 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -158,7 +170,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 67 (0x00043) Actual length = 134 (0x000086)
+  Function Length   : 83 (0x00053) Actual length = 166 (0x0000a6)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

+42 (+31.34%) : 325625.dasm - testout1:SubFunclet221():int (FullOpts)

@@ -8,83 +8,82 @@
 ; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;* V00 loc0         [V00    ] (  0,  0   )     int  ->  zero-ref    single-def
+;  V00 loc0         [V00,T00] (  8,  8   )     int  ->   lr        
 ;* V01 loc1         [V01    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V02 loc2         [V02    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V03 loc3         [V03    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V04 loc4         [V04    ] (  0,  0   )   ubyte  ->  zero-ref   
-;  V05 loc5         [V05,T01] (  4,  4   )     ref  ->   r4         class-hnd exact single-def <testout1>
+;  V05 loc5         [V05,T02] (  5,  5   )     ref  ->   r4         class-hnd exact single-def <testout1>
 ;* V06 loc6         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
-;  V07 loc7         [V07,T03] (  4,  4   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
-;  V08 loc8         [V08,T00] (  6,  6   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
+;  V07 loc7         [V07,T04] (  4,  4   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
+;  V08 loc8         [V08,T01] (  6,  6   )     ref  ->   r0         class-hnd exact single-def <<unknown class>>
 ;# V09 OutArgs      [V09    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <testout1>
-;* V11 tmp2         [V11    ] (  0,  0   )     int  ->  zero-ref    single-def
+;* V11 tmp2         [V11    ] (  0,  0   )     int  ->  zero-ref   
 ;* V12 tmp3         [V12    ] (  0,  0   )     int  ->  zero-ref   
 ;* V13 tmp4         [V13    ] (  0,  0   )     int  ->  zero-ref   
-;* V14 tmp5         [V14,T09] (  0,  0   )     int  ->  zero-ref    single-def
+;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
-;* V17 tmp8         [V17,T10] (  0,  0   )     int  ->  zero-ref    single-def
+;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     int  ->  zero-ref   
 ;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
-;* V20 tmp11        [V20,T11] (  0,  0   )     int  ->  zero-ref    single-def
+;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
-;* V23 tmp14        [V23,T12] (  0,  0   )     int  ->  zero-ref    single-def
+;* V23 tmp14        [V23    ] (  0,  0   )     int  ->  zero-ref   
 ;* V24 tmp15        [V24    ] (  0,  0   )     int  ->  zero-ref   
 ;* V25 tmp16        [V25    ] (  0,  0   )     int  ->  zero-ref   
 ;* V26 tmp17        [V26    ] (  0,  0   )     int  ->  zero-ref   
 ;* V27 tmp18        [V27    ] (  0,  0   )     int  ->  zero-ref   
 ;* V28 tmp19        [V28    ] (  0,  0   )     int  ->  zero-ref   
-;* V29 tmp20        [V29,T13] (  0,  0   )     int  ->  zero-ref    single-def
+;* V29 tmp20        [V29    ] (  0,  0   )     int  ->  zero-ref   
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref   
 ;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref   
-;* V32 tmp23        [V32,T22] (  0,  0   )     int  ->  zero-ref    single-def
+;* V32 tmp23        [V32    ] (  0,  0   )     int  ->  zero-ref   
 ;* V33 tmp24        [V33    ] (  0,  0   )     int  ->  zero-ref   
 ;* V34 tmp25        [V34    ] (  0,  0   )     int  ->  zero-ref   
-;* V35 tmp26        [V35,T14] (  0,  0   )     int  ->  zero-ref    single-def
+;* V35 tmp26        [V35    ] (  0,  0   )     int  ->  zero-ref   
 ;* V36 tmp27        [V36    ] (  0,  0   )     int  ->  zero-ref   
 ;* V37 tmp28        [V37    ] (  0,  0   )     int  ->  zero-ref   
-;* V38 tmp29        [V38,T15] (  0,  0   )     int  ->  zero-ref    single-def
+;* V38 tmp29        [V38    ] (  0,  0   )     int  ->  zero-ref   
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref   
 ;* V40 tmp31        [V40    ] (  0,  0   )     int  ->  zero-ref   
-;* V41 tmp32        [V41,T16] (  0,  0   )     int  ->  zero-ref    single-def
+;* V41 tmp32        [V41    ] (  0,  0   )     int  ->  zero-ref   
 ;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref   
 ;* V43 tmp34        [V43    ] (  0,  0   )     int  ->  zero-ref   
-;* V44 tmp35        [V44,T23] (  0,  0   )     int  ->  zero-ref    single-def
+;* V44 tmp35        [V44    ] (  0,  0   )     int  ->  zero-ref   
 ;* V45 tmp36        [V45    ] (  0,  0   )     int  ->  zero-ref   
 ;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref   
-;* V47 tmp38        [V47,T17] (  0,  0   )     int  ->  zero-ref    single-def
+;* V47 tmp38        [V47    ] (  0,  0   )     int  ->  zero-ref   
 ;* V48 tmp39        [V48    ] (  0,  0   )     int  ->  zero-ref   
 ;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref   
-;* V50 tmp41        [V50,T18] (  0,  0   )     int  ->  zero-ref    single-def
+;* V50 tmp41        [V50    ] (  0,  0   )     int  ->  zero-ref   
 ;* V51 tmp42        [V51    ] (  0,  0   )     int  ->  zero-ref   
 ;* V52 tmp43        [V52    ] (  0,  0   )     int  ->  zero-ref   
 ;* V53 tmp44        [V53    ] (  0,  0   )     int  ->  zero-ref   
 ;* V54 tmp45        [V54    ] (  0,  0   )     int  ->  zero-ref   
 ;* V55 tmp46        [V55    ] (  0,  0   )     int  ->  zero-ref   
-;* V56 tmp47        [V56,T24] (  0,  0   )     int  ->  zero-ref    single-def
+;* V56 tmp47        [V56    ] (  0,  0   )     int  ->  zero-ref   
 ;* V57 tmp48        [V57    ] (  0,  0   )     int  ->  zero-ref   
 ;* V58 tmp49        [V58    ] (  0,  0   )     int  ->  zero-ref   
-;* V59 tmp50        [V59,T19] (  0,  0   )     int  ->  zero-ref    single-def
+;* V59 tmp50        [V59    ] (  0,  0   )     int  ->  zero-ref   
 ;* V60 tmp51        [V60    ] (  0,  0   )     int  ->  zero-ref   
 ;* V61 tmp52        [V61    ] (  0,  0   )     int  ->  zero-ref   
-;* V62 tmp53        [V62,T20] (  0,  0   )     int  ->  zero-ref    single-def
+;* V62 tmp53        [V62    ] (  0,  0   )     int  ->  zero-ref   
 ;* V63 tmp54        [V63    ] (  0,  0   )     int  ->  zero-ref   
 ;* V64 tmp55        [V64    ] (  0,  0   )     int  ->  zero-ref   
-;* V65 tmp56        [V65,T25] (  0,  0   )     int  ->  zero-ref    single-def
+;* V65 tmp56        [V65    ] (  0,  0   )     int  ->  zero-ref   
 ;* V66 tmp57        [V66    ] (  0,  0   )     int  ->  zero-ref   
 ;* V67 tmp58        [V67    ] (  0,  0   )     int  ->  zero-ref   
-;  V68 tmp59        [V68,T21] (  2,  2   )     int  ->   r3         single-def
+;* V68 tmp59        [V68    ] (  0,  0   )     int  ->  zero-ref   
 ;* V69 tmp60        [V69    ] (  0,  0   )     int  ->  zero-ref   
 ;* V70 tmp61        [V70    ] (  0,  0   )     int  ->  zero-ref   
-;* V71 cse0         [V71,T07] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;* V72 cse1         [V72,T04] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V73 cse2         [V73,T05] (  2,  2   )     int  ->   r3         "CSE - aggressive"
-;* V74 cse3         [V74,T06] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V75 cse4         [V75,T08] (  2,  2   )     int  ->   r0         "CSE - aggressive"
-;  V76 cse5         [V76,T02] (  4,  4   )     int  ->   r3         "CSE - aggressive"
+;  V71 cse0         [V71,T08] (  2,  2   )     int  ->   lr         "CSE - aggressive"
+;  V72 cse1         [V72,T05] (  4,  4   )     int  ->   r2         "CSE - aggressive"
+;  V73 cse2         [V73,T06] (  4,  4   )     int  ->   r1         "CSE - aggressive"
+;  V74 cse3         [V74,T07] (  4,  4   )     int  ->   r0         "CSE - aggressive"
+;  V75 cse4         [V75,T03] (  5,  5   )     int  ->   r3         "CSE - aggressive"
 ;
 ; Lcl frame size = 4
 
@@ -135,21 +134,36 @@ G_M59959_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             strb    r2, [r3+0x04]
             movs    r2, 1
             strb    r2, [r3+0x05]
-            mvn     r3, 12
-            str     r3, [r4+0x04]
-            movs    r3, 0
-            strb    r3, [r4+0x08]
+            mvn     r2, 12
+            str     r2, [r4+0x04]
+            movs    r2, 0
+            strb    r2, [r4+0x08]
+            movs    r2, 1
             strb    r2, [r4+0x09]
-            ldr     r3, [r0+0x0C]
+            ldr     r2, [r4+0x04]
+            ldr     r1, [r0+0x0C]
+            add     lr, r2, r1
             ldr     r0, [r0+0x08]
             ; gcrRegs -[r0]
+            add     lr, r0
+            add     lr, lr, 17
+            ldr     r3, [r3]
+            add     lr, r3
+            add     r3, lr, r2
+            adds    r3, r3, r1
+            add     lr, r3, 10
+            add     lr, r0
+            add     lr, r2
+            add     r3, lr, r1
             adds    r0, r3, r0
-                       ;; size=122 bbWeight=1 PerfScore 44.00
+            add     lr, r0, 17
+            mov     r0, lr
+                       ;; size=164 bbWeight=1 PerfScore 59.00
 G_M59959_IG03:        ; bbWeight=1, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 134, prolog size 8, PerfScore 47.00, instruction count 47, allocated bytes for code 134 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 176, prolog size 8, PerfScore 62.00, instruction count 62, allocated bytes for code 176 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -161,7 +175,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 67 (0x00043) Actual length = 134 (0x000086)
+  Function Length   : 88 (0x00058) Actual length = 176 (0x0000b0)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

libraries.crossgen2.linux.arm.checked.mch

-16 (-10.53%) : 18761.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)

@@ -28,51 +28,50 @@
 ;* V16 tmp13        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V17 tmp14        [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
 ;  V18 tmp15        [V18,T07] (  2,  2   )     int  ->   r6         "Inlining Arg"
-;  V19 tmp16        [V19,T04] (  2,  2   )   byref  ->   r3         single-def "Inlining Arg"
+;  V19 tmp16        [V19,T04] (  2,  2   )   byref  ->   r2         single-def "Inlining Arg"
 ;* V20 tmp17        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp18        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V22 tmp19        [V22    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V23 tmp20        [V23    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V24 tmp21        [V24    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V25 tmp22        [V25,T08] (  2,  2   )     int  ->   r2         "Inlining Arg"
+;  V25 tmp22        [V25,T08] (  2,  2   )     int  ->   r7         "Inlining Arg"
 ;  V26 tmp23        [V26,T05] (  2,  2   )   byref  ->   r1         single-def "Inlining Arg"
 ;* V27 tmp24        [V27    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V28 tmp25        [V28    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V29 tmp26        [V29,T12] (  2,  1   )   byref  ->   r0         "field V04._reference (fldOffset=0x0)" P-INDEP
 ;  V30 tmp27        [V30,T18] (  2,  1   )     int  ->   r5         "field V04._length (fldOffset=0x4)" P-INDEP
-;  V31 tmp28        [V31,T13] (  2,  1   )   byref  ->   r3         "field V05._reference (fldOffset=0x0)" P-INDEP
-;  V32 tmp29        [V32,T19] (  2,  1   )     int  ->   r6         "field V05._length (fldOffset=0x4)" P-INDEP
+;  V31 tmp28        [V31,T13] (  2,  1   )   byref  ->   r2         "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V32 tmp29        [V32,T19] (  2,  1   )     int  ->   r3         "field V05._length (fldOffset=0x4)" P-INDEP
 ;* V33 tmp30        [V33    ] (  0,  0   )   byref  ->  zero-ref    "field V06._reference (fldOffset=0x0)" P-INDEP
 ;* V34 tmp31        [V34    ] (  0,  0   )     int  ->  zero-ref    "field V06._length (fldOffset=0x4)" P-INDEP
 ;  V35 tmp32        [V35,T14] (  2,  1   )   byref  ->   r0         single-def "field V10._reference (fldOffset=0x0)" P-INDEP
 ;  V36 tmp33        [V36,T20] (  2,  1   )     int  ->   r5         "field V10._length (fldOffset=0x4)" P-INDEP
 ;* V37 tmp34        [V37    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V11._reference (fldOffset=0x0)" P-INDEP
 ;* V38 tmp35        [V38    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x4)" P-INDEP
-;  V39 tmp36        [V39,T15] (  2,  1   )   byref  ->   r3         single-def "field V16._reference (fldOffset=0x0)" P-INDEP
-;  V40 tmp37        [V40,T21] (  2,  1   )     int  ->   r6         "field V16._length (fldOffset=0x4)" P-INDEP
+;  V39 tmp36        [V39,T15] (  2,  1   )   byref  ->   r2         single-def "field V16._reference (fldOffset=0x0)" P-INDEP
+;  V40 tmp37        [V40,T21] (  2,  1   )     int  ->   r3         "field V16._length (fldOffset=0x4)" P-INDEP
 ;* V41 tmp38        [V41    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V17._reference (fldOffset=0x0)" P-INDEP
 ;* V42 tmp39        [V42    ] (  0,  0   )     int  ->  zero-ref    "field V17._length (fldOffset=0x4)" P-INDEP
 ;  V43 tmp40        [V43,T16] (  2,  1   )   byref  ->   r1         "field V22._reference (fldOffset=0x0)" P-INDEP
-;  V44 tmp41        [V44,T22] (  2,  1   )     int  ->   r2         "field V22._length (fldOffset=0x4)" P-INDEP
+;  V44 tmp41        [V44,T22] (  2,  1   )     int  ->   r7         "field V22._length (fldOffset=0x4)" P-INDEP
 ;  V45 tmp42        [V45,T17] (  2,  1   )   byref  ->   r1         single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-;  V46 tmp43        [V46,T23] (  2,  1   )     int  ->   r2         "field V23._length (fldOffset=0x4)" P-INDEP
+;  V46 tmp43        [V46,T23] (  2,  1   )     int  ->   r7         "field V23._length (fldOffset=0x4)" P-INDEP
 ;* V47 tmp44        [V47    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V24._reference (fldOffset=0x0)" P-INDEP
 ;* V48 tmp45        [V48    ] (  0,  0   )     int  ->  zero-ref    "field V24._length (fldOffset=0x4)" P-INDEP
 ;  V49 cse0         [V49,T09] (  3,  1.50)     int  ->   r5         "CSE - moderate"
 ;  V50 cse1         [V50,T10] (  3,  1.50)     int  ->   r6         "CSE - moderate"
-;  V51 cse2         [V51,T11] (  3,  1.50)     int  ->   r2         "CSE - moderate"
+;  V51 cse2         [V51,T11] (  3,  1.50)     int  ->   r7         "CSE - moderate"
 ;
-; Lcl frame size = 12
+; Lcl frame size = 8
 
 G_M4343_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
-            push    {r4,r5,r6,r11,lr}
-            sub     sp, 12
+            push    {r2,r3,r4,r5,r6,r7,r11,lr}
             add     r11, sp, 24
             mov     r3, r1
             ; gcrRegs +[r3]
             mov     r1, r2
             ; gcrRegs +[r1]
-                       ;; size=14 bbWeight=1 PerfScore 5.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M4343_IG02:        ; bbWeight=1, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r0]
             cmp     r0, 0
@@ -81,11 +80,8 @@ G_M4343_IG02:        ; bbWeight=1, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {},
 G_M4343_IG03:        ; bbWeight=0.50, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, byref, isz
             ldr     r5, [r0+0x04]
             cmp     r5, 0
-            beq     SHORT G_M4343_IG04
-            cmp     r3, 0
-            beq     SHORT G_M4343_IG07
-            b       SHORT G_M4343_IG06
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M4343_IG06
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M4343_IG04:        ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             mov     r0, r3
@@ -99,18 +95,16 @@ G_M4343_IG04:        ; bbWeight=0.50, gcrefRegs=000A {r1 r3}, byrefRegs=0000 {},
             ; gcrRegs -[r1]
                        ;; size=16 bbWeight=0.50 PerfScore 3.00
 G_M4343_IG05:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 12
-            pop     {r4,r5,r6,r11,pc}
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+            pop     {r2,r3,r4,r5,r6,r7,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M4343_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[r1 r3]
+            cmp     r3, 0
+            beq     SHORT G_M4343_IG07
             ldr     r6, [r3+0x04]
             cmp     r6, 0
-            beq     SHORT G_M4343_IG07
-            cmp     r1, 0
-            beq     SHORT G_M4343_IG10
-            b       SHORT G_M4343_IG09
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M4343_IG09
+                       ;; size=10 bbWeight=0.50 PerfScore 2.50
 G_M4343_IG07:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r3]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -121,22 +115,18 @@ G_M4343_IG07:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {},
             ; gcrRegs -[r1]
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
 G_M4343_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 12
-            pop     {r4,r5,r6,r11,pc}
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+            pop     {r2,r3,r4,r5,r6,r7,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M4343_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs +[r1 r3]
-            ldr     r2, [r1+0x04]
-            cmp     r2, 0
+            cmp     r1, 0
             beq     SHORT G_M4343_IG10
-            adds    r0, 8
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            b       SHORT G_M4343_IG12
+            ldr     r7, [r1+0x04]
+            cmp     r7, 0
+            bne     SHORT G_M4343_IG12
                        ;; size=10 bbWeight=0.50 PerfScore 2.50
 G_M4343_IG10:        ; bbWeight=0.50, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r1] +[r0]
-            ; byrRegs -[r0]
+            ; gcrRegs -[r1]
             mov     r1, r3
             ; gcrRegs +[r1]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -148,26 +138,24 @@ G_M4343_IG10:        ; bbWeight=0.50, gcrefRegs=0009 {r0 r3}, byrefRegs=0000 {},
             ; gcrRegs -[r1]
                        ;; size=16 bbWeight=0.50 PerfScore 3.00
 G_M4343_IG11:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 12
-            pop     {r4,r5,r6,r11,pc}
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M4343_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}, byrefRegs=0001 {r0}, gcvars, byref
-            ; gcrRegs -[r0] +[r1 r3]
+            pop     {r2,r3,r4,r5,r6,r7,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M4343_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000B {r0 r1 r3}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs +[r1 r3]
+            adds    r0, 8
+            ; gcrRegs -[r0]
             ; byrRegs +[r0]
-            adds    r3, 8
+            add     r2, r3, 8
+            ; byrRegs +[r2]
+            mov     r3, r6
             ; gcrRegs -[r3]
-            ; byrRegs +[r3]
             adds    r1, 8
             ; gcrRegs -[r1]
             ; byrRegs +[r1]
             str     r1, [sp]
-            str     r2, [sp+0x04]
+            str     r7, [sp+0x04]
             mov     r1, r5
             ; byrRegs -[r1]
-            mov     r2, r3
-            ; byrRegs +[r2]
-            mov     r3, r6
-            ; byrRegs -[r3]
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -175,13 +163,12 @@ G_M4343_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000A {r1 r3}
             blx     lr     // <unknown method>
             ; gcrRegs +[r0]
             ; byrRegs -[r0 r2]
-                       ;; size=30 bbWeight=0.50 PerfScore 6.00
+                       ;; size=32 bbWeight=0.50 PerfScore 6.00
 G_M4343_IG13:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 12
-            pop     {r4,r5,r6,r11,pc}
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+            pop     {r2,r3,r4,r5,r6,r7,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 152, prolog size 10, PerfScore 34.00, instruction count 61, allocated bytes for code 152 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 29.00, instruction count 52, allocated bytes for code 136 (MethodHash=bb15ef08) for method System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -193,7 +180,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 76 (0x0004c) Actual length = 152 (0x000098)
+  Function Length   : 68 (0x00044) Actual length = 136 (0x000088)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -213,7 +200,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    03          add sp, sp, #12                     ; opsize 16
-    A8 70       pop {r4,r5,r6,r11,lr}               ; opsize 32
+    A8 FC       pop {r2,r3,r4,r5,r6,r7,r11,lr}      ; opsize 32
+    FF          end
     FF          end
 

-16 (-8.33%) : 18762.dasm - System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)

@@ -37,22 +37,22 @@
 ;* V25 tmp21        [V25    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V26 tmp22        [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
 ;  V27 tmp23        [V27,T11] (  2,  2   )     int  ->   r6         "Inlining Arg"
-;  V28 tmp24        [V28,T07] (  2,  2   )   byref  ->   lr         single-def "Inlining Arg"
+;  V28 tmp24        [V28,T07] (  2,  2   )   byref  ->   r1         single-def "Inlining Arg"
 ;* V29 tmp25        [V29    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V30 tmp26        [V30    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V31 tmp27        [V31    ] (  0,  0   )  struct ( 8) zero-ref    "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V32 tmp28        [V32    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V33 tmp29        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-;  V34 tmp30        [V34,T12] (  2,  2   )     int  ->  r12         "Inlining Arg"
+;  V34 tmp30        [V34,T12] (  2,  2   )     int  ->   r7         "Inlining Arg"
 ;  V35 tmp31        [V35,T08] (  2,  2   )   byref  ->   r2         single-def "Inlining Arg"
 ;* V36 tmp32        [V36    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V37 tmp33        [V37    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V38 tmp34        [V38,T04] (  6,  7   )     ref  ->   r0         "Single return block return value"
 ;  V39 tmp35        [V39,T17] (  2,  1   )   byref  ->   r0         "field V05._reference (fldOffset=0x0)" P-INDEP
 ;  V40 tmp36        [V40,T25] (  2,  1   )     int  ->   r5         "field V05._length (fldOffset=0x4)" P-INDEP
-;  V41 tmp37        [V41,T18] (  2,  1   )   byref  ->  [sp+0x14]  spill-single-def "field V06._reference (fldOffset=0x0)" P-INDEP
+;  V41 tmp37        [V41,T18] (  2,  1   )   byref  ->  r12         "field V06._reference (fldOffset=0x0)" P-INDEP
 ;  V42 tmp38        [V42,T26] (  2,  1   )     int  ->   r3         "field V06._length (fldOffset=0x4)" P-INDEP
-;  V43 tmp39        [V43,T19] (  2,  1   )   byref  ->   lr         "field V07._reference (fldOffset=0x0)" P-INDEP
+;  V43 tmp39        [V43,T19] (  2,  1   )   byref  ->   r1         "field V07._reference (fldOffset=0x0)" P-INDEP
 ;  V44 tmp40        [V44,T27] (  2,  1   )     int  ->   r6         "field V07._length (fldOffset=0x4)" P-INDEP
 ;* V45 tmp41        [V45    ] (  0,  0   )   byref  ->  zero-ref    "field V08._reference (fldOffset=0x0)" P-INDEP
 ;* V46 tmp42        [V46    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x4)" P-INDEP
@@ -64,26 +64,26 @@
 ;  V52 tmp48        [V52,T29] (  2,  1   )     int  ->   r3         "field V19._length (fldOffset=0x4)" P-INDEP
 ;* V53 tmp49        [V53    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V20._reference (fldOffset=0x0)" P-INDEP
 ;* V54 tmp50        [V54    ] (  0,  0   )     int  ->  zero-ref    "field V20._length (fldOffset=0x4)" P-INDEP
-;  V55 tmp51        [V55,T22] (  2,  1   )   byref  ->   lr         single-def "field V25._reference (fldOffset=0x0)" P-INDEP
+;  V55 tmp51        [V55,T22] (  2,  1   )   byref  ->   r1         single-def "field V25._reference (fldOffset=0x0)" P-INDEP
 ;  V56 tmp52        [V56,T30] (  2,  1   )     int  ->   r6         "field V25._length (fldOffset=0x4)" P-INDEP
 ;* V57 tmp53        [V57    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V26._reference (fldOffset=0x0)" P-INDEP
 ;* V58 tmp54        [V58    ] (  0,  0   )     int  ->  zero-ref    "field V26._length (fldOffset=0x4)" P-INDEP
 ;  V59 tmp55        [V59,T23] (  2,  1   )   byref  ->   r2         "field V31._reference (fldOffset=0x0)" P-INDEP
-;  V60 tmp56        [V60,T31] (  2,  1   )     int  ->  r12         "field V31._length (fldOffset=0x4)" P-INDEP
+;  V60 tmp56        [V60,T31] (  2,  1   )     int  ->   r7         "field V31._length (fldOffset=0x4)" P-INDEP
 ;  V61 tmp57        [V61,T24] (  2,  1   )   byref  ->   r2         single-def "field V32._reference (fldOffset=0x0)" P-INDEP
-;  V62 tmp58        [V62,T32] (  2,  1   )     int  ->  r12         "field V32._length (fldOffset=0x4)" P-INDEP
+;  V62 tmp58        [V62,T32] (  2,  1   )     int  ->   r7         "field V32._length (fldOffset=0x4)" P-INDEP
 ;* V63 tmp59        [V63    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V33._reference (fldOffset=0x0)" P-INDEP
 ;* V64 tmp60        [V64    ] (  0,  0   )     int  ->  zero-ref    "field V33._length (fldOffset=0x4)" P-INDEP
 ;  V65 cse0         [V65,T13] (  3,  1.50)     int  ->   r5         "CSE - moderate"
 ;  V66 cse1         [V66,T14] (  3,  1.50)     int  ->   r3         "CSE - moderate"
 ;  V67 cse2         [V67,T15] (  3,  1.50)     int  ->   r6         "CSE - moderate"
-;  V68 cse3         [V68,T16] (  3,  1.50)     int  ->  r12         "CSE - moderate"
+;  V68 cse3         [V68,T16] (  3,  1.50)     int  ->   r7         "CSE - moderate"
 ;
-; Lcl frame size = 24
+; Lcl frame size = 20
 
 G_M48965_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r4,r5,r6,r10,r11,lr}
-            sub     sp, 24
+            push    {r4,r5,r6,r7,r10,r11,lr}
+            sub     sp, 20
             add     r11, sp, 40
             mov     lr, r2
             ; gcrRegs +[lr]
@@ -98,11 +98,8 @@ G_M48965_IG02:        ; bbWeight=1, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000
 G_M48965_IG03:        ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref, isz
             ldr     r5, [r0+0x04]
             cmp     r5, 0
-            beq     SHORT G_M48965_IG04
-            cmp     r1, 0
-            beq     SHORT G_M48965_IG06
-            b       SHORT G_M48965_IG05
-                       ;; size=12 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M48965_IG05
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
 G_M48965_IG04:        ; bbWeight=0.50, gcrefRegs=4006 {r1 r2 lr}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             mov     r0, r1
@@ -118,13 +115,12 @@ G_M48965_IG04:        ; bbWeight=0.50, gcrefRegs=4006 {r1 r2 lr}, byrefRegs=0000
                        ;; size=20 bbWeight=0.50 PerfScore 4.00
 G_M48965_IG05:        ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r1-r2 lr]
+            cmp     r1, 0
+            beq     SHORT G_M48965_IG06
             ldr     r3, [r1+0x04]
             cmp     r3, 0
-            beq     SHORT G_M48965_IG06
-            cmp     lr, 0
-            beq     SHORT G_M48965_IG08
-            b       SHORT G_M48965_IG07
-                       ;; size=14 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M48965_IG07
+                       ;; size=10 bbWeight=0.50 PerfScore 2.50
 G_M48965_IG06:        ; bbWeight=0.50, gcrefRegs=4005 {r0 r2 lr}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r1]
             mov     r1, lr
@@ -139,13 +135,12 @@ G_M48965_IG06:        ; bbWeight=0.50, gcrefRegs=4005 {r0 r2 lr}, byrefRegs=0000
                        ;; size=18 bbWeight=0.50 PerfScore 3.50
 G_M48965_IG07:        ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r1-r2 lr]
+            cmp     lr, 0
+            beq     SHORT G_M48965_IG08
             ldr     r6, [lr+0x04]
             cmp     r6, 0
-            beq     SHORT G_M48965_IG08
-            cmp     r2, 0
-            beq     SHORT G_M48965_IG10
-            b       SHORT G_M48965_IG09
-                       ;; size=14 bbWeight=0.50 PerfScore 3.00
+            bne     SHORT G_M48965_IG09
+                       ;; size=14 bbWeight=0.50 PerfScore 2.50
 G_M48965_IG08:        ; bbWeight=0.50, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[lr]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -158,17 +153,14 @@ G_M48965_IG08:        ; bbWeight=0.50, gcrefRegs=0007 {r0 r1 r2}, byrefRegs=0000
                        ;; size=16 bbWeight=0.50 PerfScore 3.00
 G_M48965_IG09:        ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r1-r2 lr]
-            ldr     r12, [r2+0x04]
-            cmp     r12, 0
+            cmp     r2, 0
             beq     SHORT G_M48965_IG10
-            adds    r0, 8
-            ; gcrRegs -[r0]
-            ; byrRegs +[r0]
-            b       SHORT G_M48965_IG11
-                       ;; size=14 bbWeight=0.50 PerfScore 2.50
+            ldr     r7, [r2+0x04]
+            cmp     r7, 0
+            bne     SHORT G_M48965_IG11
+                       ;; size=10 bbWeight=0.50 PerfScore 2.50
 G_M48965_IG10:        ; bbWeight=0.50, gcrefRegs=4003 {r0 r1 lr}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r2] +[r0]
-            ; byrRegs -[r0]
+            ; gcrRegs -[r2]
             mov     r2, lr
             ; gcrRegs +[r2]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -179,43 +171,42 @@ G_M48965_IG10:        ; bbWeight=0.50, gcrefRegs=4003 {r0 r1 lr}, byrefRegs=0000
             ; gcrRegs -[r1-r2 lr]
             b       SHORT G_M48965_IG12
                        ;; size=18 bbWeight=0.50 PerfScore 3.50
-G_M48965_IG11:        ; bbWeight=0.50, gcrefRegs=4006 {r1 r2 lr}, byrefRegs=0001 {r0}, byref
-            ; gcrRegs -[r0] +[r1-r2 lr]
+G_M48965_IG11:        ; bbWeight=0.50, gcrefRegs=4007 {r0 r1 r2 lr}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[r1-r2 lr]
+            adds    r0, 8
+            ; gcrRegs -[r0]
             ; byrRegs +[r0]
             adds    r1, 8
             ; gcrRegs -[r1]
             ; byrRegs +[r1]
-            str     r1, [sp+0x14]  // [V41 tmp37]
-            ; GC ptr vars +{V41}
-            add     lr, lr, 8
-            ; gcrRegs -[lr]
-            ; byrRegs +[lr]
+            mov     r12, r1
+            ; byrRegs +[r12]
+            add     r1, lr, 8
             adds    r2, 8
             ; gcrRegs -[r2]
             ; byrRegs +[r2]
-            str     lr, [sp]   // [V04 OutArgs]
-            str     r6, [sp+0x04]  // [V04 OutArgs+0x04]
-            str     r2, [sp+0x08]  // [V04 OutArgs+0x08]
-            str     r12, [sp+0x0C] // [V04 OutArgs+0x0c]
+            str     r1, [sp]
+            str     r6, [sp+0x04]
+            str     r2, [sp+0x08]
+            str     r7, [sp+0x0C]
             mov     r1, r5
             ; byrRegs -[r1]
-            ldr     r2, [sp+0x14]  // [V41 tmp37]
+            mov     r2, r12
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
             ldr     lr, [r4]
-            ; byrRegs -[lr]
-            ; GC ptr vars -{V41}
+            ; gcrRegs -[lr]
             blx     lr     // <unknown method>
             ; gcrRegs +[r0]
-            ; byrRegs -[r0 r2]
-                       ;; size=42 bbWeight=0.50 PerfScore 7.50
+            ; byrRegs -[r0 r2 r12]
+                       ;; size=40 bbWeight=0.50 PerfScore 8.00
 G_M48965_IG12:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
-            add     sp, 24
-            pop     {r4,r5,r6,r10,r11,pc}
+            add     sp, 20
+            pop     {r4,r5,r6,r7,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 192, prolog size 10, PerfScore 42.00, instruction count 75, allocated bytes for code 192 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
+; Total bytes of code 176, prolog size 10, PerfScore 40.00, instruction count 71, allocated bytes for code 176 (MethodHash=a8d740ba) for method System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -227,11 +218,11 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 96 (0x00060) Actual length = 192 (0x0000c0)
+  Function Length   : 88 (0x00058) Actual length = 176 (0x0000b0)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    06          add sp, sp, #24                     ; opsize 16
-    AC 70       pop {r4,r5,r6,r10,r11,lr}           ; opsize 32
+    05          add sp, sp, #20                     ; opsize 16
+    AC F0       pop {r4,r5,r6,r7,r10,r11,lr}        ; opsize 32
     FF          end
 

-16 (-4.94%) : 177983.dasm - System.ComponentModel.Design.RuntimeLicenseContext:CaseInsensitiveManifestResourceStreamLookup(System.Reflection.Assembly,System.String):System.IO.Stream (FullOpts)

@@ -76,21 +76,18 @@ G_M18319_IG02:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             mov     r9, 0
             ldr     r10, [r0+0x04]
             cmp     r10, 0
-            ldr     r6, [sp+0x0C]  // [V00 arg0]
-            ; gcrRegs +[r6]
-            ble     SHORT G_M18319_IG09
+            ble     SHORT G_M18319_IG05
             add     r4, r0, 8
             ; byrRegs +[r4]
-            str     r4, [sp+0x04]  // [V12 cse0]
+            str     r4, [sp+0x04]
             ; GC ptr vars +{V12}
-            str     r6, [sp+0x0C]  // [V00 arg0]
-                       ;; size=110 bbWeight=1 PerfScore 41.00
+                       ;; size=106 bbWeight=1 PerfScore 39.00
 G_M18319_IG03:        ; bbWeight=4, gcVars=00000280 {V00 V12}, gcrefRegs=01A0 {r5 r7 r8}, byrefRegs=0010 {r4}, gcvars, byref, isz
-            ; gcrRegs -[r0 r6]
+            ; gcrRegs -[r0]
             lsl     r0, r9, 2
             ldr     lr, [r4+r0]
             ; gcrRegs +[lr]
-            str     lr, [sp+0x08]  // [V06 loc4]
+            str     lr, [sp+0x08]
             ; GC ptr vars +{V06}
             mov     r0, r7
             ; gcrRegs +[r0]
@@ -108,7 +105,7 @@ G_M18319_IG03:        ; bbWeight=4, gcVars=00000280 {V00 V12}, gcrefRegs=01A0 {r
             blx     r12        // <unknown method>
             ; gcrRegs -[r0-r2 lr]
             cmp     r0, 0
-            beq     SHORT G_M18319_IG07
+            beq     SHORT G_M18319_IG04
             movw    r1, LOW RELOC 0xD1FFAB1E
             movt    r1, HIGH RELOC 0xD1FFAB1E
             add     r1, pc
@@ -135,7 +132,7 @@ G_M18319_IG03:        ; bbWeight=4, gcVars=00000280 {V00 V12}, gcrefRegs=01A0 {r
             blx     r3     // <unknown method>
             ; gcrRegs -[r0-r2]
             cmp     r0, 0
-            beq     SHORT G_M18319_IG06
+            beq     SHORT G_M18319_IG04
             movw    r1, LOW RELOC 0xD1FFAB1E
             movt    r1, HIGH RELOC 0xD1FFAB1E
             add     r1, pc
@@ -162,47 +159,24 @@ G_M18319_IG03:        ; bbWeight=4, gcVars=00000280 {V00 V12}, gcrefRegs=01A0 {r
             blx     r3     // <unknown method>
             ; gcrRegs -[r0-r2]
             cmp     r0, 0
-            beq     SHORT G_M18319_IG05
+            beq     SHORT G_M18319_IG04
             add     r9, r9, 1
             cmp     r10, r9
             ldr     r4, [sp+0x04]  // [V12 cse0]
             ; byrRegs +[r4]
             bgt     SHORT G_M18319_IG03
-                       ;; size=160 bbWeight=4 PerfScore 244.00
-G_M18319_IG04:        ; bbWeight=0.50, gcVars=00000080 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[r7-r8]
+            b       SHORT G_M18319_IG05
+                       ;; size=162 bbWeight=4 PerfScore 248.00
+G_M18319_IG04:        ; bbWeight=0.50, gcVars=00000082 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r5 r7-r8]
             ; byrRegs -[r4]
-            ; GC ptr vars -{V06 V12}
-            ldr     r6, [sp+0x0C]  // [V00 arg0]
-            ; gcrRegs +[r6]
-            b       SHORT G_M18319_IG09
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M18319_IG05:        ; bbWeight=2, gcVars=00000082 {V00 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[r5-r6]
-            ; GC ptr vars +{V01 V06}
-            ldr     r6, [sp+0x0C]  // [V00 arg0]
-            ; gcrRegs +[r6]
-            b       SHORT G_M18319_IG08
-                       ;; size=4 bbWeight=2 PerfScore 4.00
-G_M18319_IG06:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r6]
-            ldr     r6, [sp+0x0C]  // [V00 arg0]
-            ; gcrRegs +[r6]
-            b       SHORT G_M18319_IG08
-                       ;; size=4 bbWeight=2 PerfScore 4.00
-G_M18319_IG07:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r6]
-            ldr     r6, [sp+0x0C]  // [V00 arg0]
-            ; gcrRegs +[r6]
-                       ;; size=2 bbWeight=2 PerfScore 2.00
-G_M18319_IG08:        ; bbWeight=0.50, gcVars=00000002 {V06}, gcrefRegs=0040 {r6}, byrefRegs=0000 {}, gcvars, byref
-            ; GC ptr vars -{V00 V01}
+            ; GC ptr vars -{V12}
             ldr     r5, [sp+0x08]  // [V06 loc4]
             ; gcrRegs +[r5]
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M18319_IG09:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref
+G_M18319_IG05:        ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, gcvars, byref
             ; GC ptr vars -{V06}
-            mov     r0, r6
+            ldr     r0, [sp+0x0C]  // [V00 arg0]
             ; gcrRegs +[r0]
             mov     r1, r5
             ; gcrRegs +[r1]
@@ -210,15 +184,16 @@ G_M18319_IG09:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6},
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
             ldr     r3, [r4]
+            ; GC ptr vars -{V00}
             blx     r3     // <unknown method>
-            ; gcrRegs -[r1 r5-r6]
+            ; gcrRegs -[r1 r5]
                        ;; size=18 bbWeight=1 PerfScore 7.00
-G_M18319_IG10:        ; bbWeight=1, epilog, nogc, extend
+G_M18319_IG06:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 20
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 324, prolog size 10, PerfScore 310.50, instruction count 124, allocated bytes for code 324 (MethodHash=e6ecb870) for method System.ComponentModel.Design.RuntimeLicenseContext:CaseInsensitiveManifestResourceStreamLookup(System.Reflection.Assembly,System.String):System.IO.Stream (FullOpts)
+; Total bytes of code 308, prolog size 10, PerfScore 301.50, instruction count 116, allocated bytes for code 308 (MethodHash=e6ecb870) for method System.ComponentModel.Design.RuntimeLicenseContext:CaseInsensitiveManifestResourceStreamLookup(System.Reflection.Assembly,System.String):System.IO.Stream (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -230,7 +205,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 162 (0x000a2) Actual length = 324 (0x000144)
+  Function Length   : 154 (0x0009a) Actual length = 308 (0x000134)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

+42 (+5.74%) : 121663.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)

@@ -84,7 +84,7 @@ G_M20448_IG03:        ; bbWeight=0.50, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=000
             ldr     r0, [r0]
             ldr     r0, [r5+r0]
             cmp     r0, 0
-            bne     G_M20448_IG12
+            bne     G_M20448_IG11
             ldr     r3, [r6+0x0C]
             ; gcrRegs +[r3]
             str     r3, [sp+0x04]  // [V28 tmp19]
@@ -119,7 +119,7 @@ G_M20448_IG03:        ; bbWeight=0.50, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=000
             blx     lr     // Microsoft.CodeAnalysis.VisualBasic.BoundNodeFinder:ContainsNode(Microsoft.CodeAnalysis.VisualBasic.BoundNode,Microsoft.CodeAnalysis.VisualBasic.BoundNode,int,ubyte):ubyte
             ; gcrRegs -[r0-r1 r10]
             cmp     r0, 0
-            beq     G_M20448_IG12
+            beq     G_M20448_IG10
             movs    r7, 1
             ldr     r2, [r6+0x14]
             ; gcrRegs +[r2]
@@ -154,8 +154,9 @@ G_M20448_IG03:        ; bbWeight=0.50, gcrefRegs=0460 {r5 r6 r10}, byrefRegs=000
             ldr     r3, [r4]
             blx     r3     // <unknown method>
             cmp     r0, 0
-            beq     SHORT G_M20448_IG12
-                       ;; size=180 bbWeight=0.50 PerfScore 33.50
+            str     r8, [sp+0x34]  // [V03 loc1]
+            beq     SHORT G_M20448_IG14
+                       ;; size=184 bbWeight=0.50 PerfScore 34.00
 G_M20448_IG04:        ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             mov     r1, r10
             add     r0, sp, 44 // [V04 loc2]
@@ -196,7 +197,7 @@ G_M20448_IG06:        ; bbWeight=4, gcrefRegs=0160 {r5 r6 r8}, byrefRegs=0000 {}
             ldr     r3, [r5+r9]
             ; gcrRegs +[r3]
             cmp     r3, r8
-            beq     SHORT G_M20448_IG11
+            beq     SHORT G_M20448_IG13
             str     r3, [sp+0x0C]  // [V13 tmp4]
             ; GC ptr vars +{V13}
             ldr     r2, [sp+0x10]  // [V37 cse4]
@@ -264,7 +265,7 @@ G_M20448_IG08:        ; bbWeight=2, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}
             ldr     r1, [r4+0x08]
             ; gcrRegs +[r1]
             cmp     r1, 0
-            bne     SHORT G_M20448_IG11
+            bne     SHORT G_M20448_IG13
                        ;; size=6 bbWeight=2 PerfScore 6.00
 G_M20448_IG09:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r1 r4]
@@ -278,21 +279,33 @@ G_M20448_IG09:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6},
             blx     r3     // <unknown method>
             cmp     r0, 0
             bne     SHORT G_M20448_IG04
-                       ;; size=22 bbWeight=4 PerfScore 36.00
-G_M20448_IG10:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r8, [sp+0x34]  // [V03 loc1]
-            b       SHORT G_M20448_IG12
+            b       SHORT G_M20448_IG14
+                       ;; size=24 bbWeight=4 PerfScore 40.00
+G_M20448_IG10:        ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+            str     r8, [sp+0x34]  // [V03 loc1]
+            b       SHORT G_M20448_IG14
+                       ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M20448_IG11:        ; bbWeight=0.25, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+            str     r8, [sp+0x34]  // [V03 loc1]
+            b       SHORT G_M20448_IG14
+                       ;; size=6 bbWeight=0.25 PerfScore 0.50
+G_M20448_IG12:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+            str     r8, [sp+0x34]  // [V03 loc1]
+            b       SHORT G_M20448_IG14
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M20448_IG11:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
-            mov     r8, 0
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M20448_IG12:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG13:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref
+            movs    r4, 0
+            mov     r8, r4
+            str     r8, [sp+0x34]  // [V03 loc1]
+                       ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M20448_IG14:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r7, 0
-            beq     SHORT G_M20448_IG14
+            beq     SHORT G_M20448_IG16
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M20448_IG13:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG15:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+            ldr     r8, [sp+0x34]  // [V03 loc1]
             cmp     r8, 0
-            beq     SHORT G_M20448_IG14
+            beq     G_M20448_IG24
             mov     r0, r5
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -302,8 +315,9 @@ G_M20448_IG13:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
             ldr     r3, [r4]
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
-                       ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M20448_IG14:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+            str     r8, [sp+0x34]  // [V03 loc1]
+                       ;; size=34 bbWeight=0.50 PerfScore 5.50
+G_M20448_IG16:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             ldr     r2, [r6+0x14]
             ; gcrRegs +[r2]
             ldr     r2, [r2+0x28]
@@ -337,9 +351,9 @@ G_M20448_IG14:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             ldr     r3, [r4]
             blx     r3     // <unknown method>
             cmp     r0, 0
-            beq     SHORT G_M20448_IG16
+            beq     SHORT G_M20448_IG18
                        ;; size=86 bbWeight=1 PerfScore 32.00
-G_M20448_IG15:        ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG17:        ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             mov     r1, r10
             add     r0, sp, 32 // [V07 loc5]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -367,15 +381,16 @@ G_M20448_IG15:        ; bbWeight=4, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             ldr     r3, [r4]
             blx     r3     // <unknown method>
             cmp     r0, 0
-            bne     SHORT G_M20448_IG15
+            bne     SHORT G_M20448_IG17
                        ;; size=64 bbWeight=4 PerfScore 100.00
-G_M20448_IG16:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG18:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r7, 0
-            beq     SHORT G_M20448_IG18
+            beq     SHORT G_M20448_IG20
                        ;; size=4 bbWeight=1 PerfScore 2.00
-G_M20448_IG17:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG19:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+            ldr     r8, [sp+0x34]  // [V03 loc1]
             cmp     r8, 0
-            beq     SHORT G_M20448_IG18
+            beq     SHORT G_M20448_IG20
             mov     r0, r5
             ; gcrRegs +[r0]
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -385,8 +400,8 @@ G_M20448_IG17:        ; bbWeight=0.50, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}
             ldr     r3, [r4]
             blx     r3     // <unknown method>
             ; gcrRegs -[r0]
-                       ;; size=24 bbWeight=0.50 PerfScore 4.50
-G_M20448_IG18:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
+                       ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M20448_IG20:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [r6+0x10]
             ; gcrRegs +[r1]
             mov     r0, r5
@@ -399,9 +414,9 @@ G_M20448_IG18:        ; bbWeight=1, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, b
             blx     r3     // <unknown method>
             ; gcrRegs -[r1 r6]
             cmp     r7, 0
-            beq     SHORT G_M20448_IG20
+            beq     SHORT G_M20448_IG22
                        ;; size=24 bbWeight=1 PerfScore 10.00
-G_M20448_IG19:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+G_M20448_IG21:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
             movw    r0, LOW RELOC 0xD1FFAB1E
             movt    r0, HIGH RELOC 0xD1FFAB1E
@@ -409,7 +424,7 @@ G_M20448_IG19:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             ldr     r0, [r0]
             ldr     r0, [r5+r0]
             cmp     r0, 2
-            beq     SHORT G_M20448_IG20
+            beq     SHORT G_M20448_IG22
             movw    r0, LOW RELOC 0xD1FFAB1E
             movt    r0, HIGH RELOC 0xD1FFAB1E
             add     r0, pc
@@ -417,30 +432,39 @@ G_M20448_IG19:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, b
             movs    r3, 1
             strb    r3, [r5+r0]
                        ;; size=34 bbWeight=0.50 PerfScore 6.50
-G_M20448_IG20:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M20448_IG22:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r5]
             movs    r0, 0
             ; gcrRegs +[r0]
                        ;; size=2 bbWeight=1 PerfScore 1.00
-G_M20448_IG21:        ; bbWeight=1, epilog, nogc, extend
+G_M20448_IG23:        ; bbWeight=1, epilog, nogc, extend
             add     sp, 60
             pop     {r4,r5,r6,r7,r8,r9,r10,r11,pc}
                        ;; size=6 bbWeight=1 PerfScore 2.00
+G_M20448_IG24:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0060 {r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[r0] +[r5-r6]
+            str     r8, [sp+0x34]  // [V03 loc1]
+            b       SHORT G_M20448_IG16
+                       ;; size=6 bbWeight=0.25 PerfScore 0.50
 
-; Total bytes of code 732, prolog size 24, PerfScore 503.50, instruction count 275, allocated bytes for code 732 (MethodHash=b55db01f) for method Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
+; Total bytes of code 774, prolog size 24, PerfScore 512.00, instruction count 288, allocated bytes for code 774 (MethodHash=b55db01f) for method Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
   >> Start offset   : 0x000000 (not in unwind data)
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Code Words        : 1
-  Epilog Count      : 0
+  Epilog Count      : 1
   F bit             : 0
-  E bit             : 1
+  E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 366 (0x0016e) Actual length = 732 (0x0002dc)
-  --- One epilog, unwind codes at 0
+  Function Length   : 387 (0x00183) Actual length = 774 (0x000306)
+  ---- Epilog scopes ----
+  ---- Scope 0
+  Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+  Condition                  : 14 (0xe) (always)
+  Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
     0F          add sp, sp, #60                     ; opsize 16

+4 (+5.88%) : 27482.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)

@@ -17,21 +17,21 @@
 ;
 ; Lcl frame size = 4
 
-G_M12753_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12753_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r3,r4,r11,lr}
             add     r11, sp, 8
                        ;; size=8 bbWeight=1 PerfScore 2.00
 G_M12753_IG02:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r0]
             cmp     r0, 0
-            beq     SHORT G_M12753_IG04
+            beq     SHORT G_M12753_IG06
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M12753_IG03:        ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
             ldrb    r3, [r0+0x0A]
             cmp     r3, 117
-            beq     SHORT G_M12753_IG06
+            beq     SHORT G_M12753_IG04
             cmp     r3, 188
-            bne     SHORT G_M12753_IG04
+            bne     SHORT G_M12753_IG06
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -41,16 +41,9 @@ G_M12753_IG03:        ; bbWeight=4, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byre
             ldr     r0, [r0+0x10]
             cmp     r0, 0
             bne     SHORT G_M12753_IG03
-                       ;; size=30 bbWeight=4 PerfScore 52.00
-G_M12753_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r0]
-            movs    r0, 0
-            ; gcrRegs +[r0]
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M12753_IG05:        ; bbWeight=0.50, epilog, nogc, extend
-            pop     {r3,r4,r11,pc}
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M12753_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
+            b       SHORT G_M12753_IG08
+                       ;; size=32 bbWeight=4 PerfScore 56.00
+G_M12753_IG04:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref
             movw    r4, LOW RELOC 0xD1FFAB1E
             movt    r4, HIGH RELOC 0xD1FFAB1E
             add     r4, pc
@@ -59,11 +52,23 @@ G_M12753_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0001 {r0},
             ; gcr arg pop 0
             ldr     r0, [r0+0x10]
                        ;; size=16 bbWeight=0.50 PerfScore 3.00
+G_M12753_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+            pop     {r3,r4,r11,pc}
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M12753_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r0]
+            movs    r0, 0
+            ; gcrRegs +[r0]
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M12753_IG07:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M12753_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[r0]
+            b       SHORT G_M12753_IG06
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 68, prolog size 8, PerfScore 60.50, instruction count 26, allocated bytes for code 68 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 72, prolog size 8, PerfScore 65.00, instruction count 28, allocated bytes for code 72 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -75,7 +80,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 34 (0x00022) Actual length = 68 (0x000044)
+  Function Length   : 36 (0x00024) Actual length = 72 (0x000048)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+44 (+9.05%) : 189730.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)

@@ -9,13 +9,13 @@
 ; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] ( 12, 11   )  struct (52) [sp+0xC8]  do-not-enreg[SF] ld-addr-op single-def <System.Security.Cryptography.ECCurve>
-;  V01 loc0         [V01,T05] (  4,  3   )     ref  ->   r3         class-hnd <<unknown class>>
-;  V02 loc1         [V02,T02] (  6,  4   )     ref  ->  [sp+0x80]  class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
+;  V00 arg0         [V00,T00] ( 12, 11   )  struct (52) [sp+0xC0]  do-not-enreg[SF] ld-addr-op single-def <System.Security.Cryptography.ECCurve>
+;  V01 loc0         [V01,T05] (  4,  3   )     ref  ->   r6         class-hnd <<unknown class>>
+;  V02 loc1         [V02,T02] (  6,  4   )     ref  ->  [sp+0x7C]  class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
 ;  V03 loc2         [V03,T23] (  2,  0   )     ref  ->   r6         class-hnd single-def <System.Exception>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (76) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T21] (  3,  0   )     ref  ->   r5         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-;  V06 tmp2         [V06,T24] (  2,  0   )     ref  ->   r6         class-hnd single-def "impImportAndPushBox" <<unknown class>>
+;  V05 tmp1         [V05,T21] (  3,  0   )     ref  ->   r6         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+;  V06 tmp2         [V06,T24] (  2,  0   )     ref  ->   r7         class-hnd single-def "impImportAndPushBox" <<unknown class>>
 ;  V07 tmp3         [V07,T22] (  3,  0   )     ref  ->   r6         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V08 tmp4         [V08,T25] (  2,  0   )     ref  ->   r5         class-hnd single-def "finalizable newobj spill" <<unknown class>>
 ;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref   
@@ -26,19 +26,19 @@
 ;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V15 tmp11        [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp12        [V16    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V17 tmp13        [V17,T13] (  2,  2   )     int  ->   r0        
+;  V17 tmp13        [V17,T13] (  2,  2   )     int  ->   r7        
 ;* V18 tmp14        [V18    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V19 tmp15        [V19,T14] (  2,  2   )     int  ->   r1        
+;  V19 tmp15        [V19,T14] (  2,  2   )     int  ->   r8        
 ;* V20 tmp16        [V20    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V21 tmp17        [V21,T15] (  2,  2   )     int  ->  [sp+0x9C]  spill-single-def
+;  V21 tmp17        [V21,T15] (  2,  2   )     int  ->  [sp+0x94]  spill-single-def
 ;* V22 tmp18        [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V23 tmp19        [V23,T16] (  2,  2   )     int  ->  [sp+0x98]  spill-single-def
+;  V23 tmp19        [V23,T16] (  2,  2   )     int  ->  [sp+0x90]  spill-single-def
 ;* V24 tmp20        [V24    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V25 tmp21        [V25,T17] (  2,  2   )     int  ->  [sp+0x94]  spill-single-def
+;  V25 tmp21        [V25,T17] (  2,  2   )     int  ->  [sp+0x8C]  spill-single-def
 ;* V26 tmp22        [V26    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V27 tmp23        [V27,T18] (  2,  2   )     int  ->  [sp+0x90]  spill-single-def
+;  V27 tmp23        [V27,T18] (  2,  2   )     int  ->  [sp+0x88]  spill-single-def
 ;* V28 tmp24        [V28    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V29 tmp25        [V29,T19] (  2,  2   )     int  ->  [sp+0x8C]  spill-single-def
+;  V29 tmp25        [V29,T19] (  2,  2   )     int  ->  [sp+0x84]  spill-single-def
 ;* V30 tmp26        [V30    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V31 tmp27        [V31    ] (  0,  0   )     int  ->  zero-ref   
 ;* V32 tmp28        [V32    ] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -62,27 +62,27 @@
 ;* V50 tmp46        [V50    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V51 tmp47        [V51    ] (  0,  0   )     int  ->  zero-ref   
 ;* V52 tmp48        [V52    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V53 tmp49        [V53,T12] (  3,  2   )     int  ->  [sp+0x88] 
+;  V53 tmp49        [V53,T12] (  3,  2   )     int  ->  [sp+0x80] 
 ;* V54 tmp50        [V54,T20] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V55 tmp51        [V55,T03] (  2,  4   )     ref  ->   r0         single-def "Single return block return value"
-;  V56 PInvokeFrame [V56    ] (  3,  3   )  struct (44) [sp+0x54]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V57 tmp53        [V57,T06] (  3,  3   )     ref  ->   r5         single-def "V00.[000..004)"
-;  V58 tmp54        [V58,T07] (  3,  3   )     ref  ->   r6         single-def "V00.[004..008)"
-;  V59 tmp55        [V59,T08] (  3,  3   )     ref  ->   r7         single-def "V00.[008..012)"
-;  V60 tmp56        [V60,T09] (  3,  3   )     ref  ->   r8         single-def "V00.[012..016)"
-;  V61 tmp57        [V61,T04] (  4,  3.50)     ref  ->   r9         single-def "V00.[016..020)"
-;  V62 tmp58        [V62,T01] (  7,  4.50)     int  ->  [sp+0x84]  spill-single-def "V00.[032..036)"
-;  V63 tmp59        [V63,T10] (  3,  3   )     ref  ->   lr         single-def "V00.[036..040)"
-;  V64 tmp60        [V64,T11] (  3,  3   )     ref  ->  r12         single-def "V00.[040..044)"
+;  V56 PInvokeFrame [V56    ] (  3,  3   )  struct (44) [sp+0x50]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V57 tmp53        [V57,T06] (  3,  3   )     ref  ->   r0         single-def "V00.[000..004)"
+;  V58 tmp54        [V58,T07] (  3,  3   )     ref  ->   r1         single-def "V00.[004..008)"
+;  V59 tmp55        [V59,T08] (  3,  3   )     ref  ->   r2         single-def "V00.[008..012)"
+;  V60 tmp56        [V60,T09] (  3,  3   )     ref  ->   r3         single-def "V00.[012..016)"
+;  V61 tmp57        [V61,T04] (  4,  3.50)     ref  ->   lr         single-def "V00.[016..020)"
+;  V62 tmp58        [V62,T01] (  7,  4.50)     int  ->   r5         "V00.[032..036)"
+;  V63 tmp59        [V63,T10] (  3,  3   )     ref  ->  r12         single-def "V00.[036..040)"
+;  V64 tmp60        [V64,T11] (  3,  3   )     ref  ->   r4         single-def "V00.[040..044)"
 ;  V65 tmp61        [V65,T26] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
 ;
-; Lcl frame size = 164
+; Lcl frame size = 156
 
 G_M7764_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r0,r1,r2,r3}
             push    {r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            sub     sp, 164
-            add     r11, sp, 192
+            sub     sp, 156
+            add     r11, sp, 184
                        ;; size=12 bbWeight=1 PerfScore 4.00
 G_M7764_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             movw    r4, LOW RELOC 0xD1FFAB1E
@@ -91,116 +91,116 @@ G_M7764_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ldr     r3, [r4]
             blx     r3     // CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE
             ; byrRegs +[r0]
-            ldr     r5, [sp+0xC8]
-            ; gcrRegs +[r5]
-            ldr     r6, [sp+0xCC]
-            ; gcrRegs +[r6]
-            ldr     r7, [sp+0xD0]
-            ; gcrRegs +[r7]
-            ldr     r8, [sp+0xD4]
-            ; gcrRegs +[r8]
-            ldr     r9, [sp+0xD8]
-            ; gcrRegs +[r9]
-            ldr     r4, [sp+0xE8]
-            str     r4, [sp+0x84]
-            ldr     lr, [sp+0xEC]
-            ; gcrRegs +[lr]
-            ldr     r12, [sp+0xF0]
-            ; gcrRegs +[r12]
-            cmp     r4, 1
-            beq     SHORT G_M7764_IG04
-                       ;; size=44 bbWeight=1 PerfScore 16.00
-G_M7764_IG03:        ; bbWeight=0.50, gcrefRegs=53E0 {r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r0, [sp+0xC0]
+            ; gcrRegs +[r0]
             ; byrRegs -[r0]
-            cmp     r4, 3
-            beq     SHORT G_M7764_IG04
-            cmp     r4, 2
-            beq     SHORT G_M7764_IG04
-            cmp     r4, 4
-            bne     SHORT G_M7764_IG16
-            b       SHORT G_M7764_IG05
-                       ;; size=14 bbWeight=0.50 PerfScore 3.50
-G_M7764_IG04:        ; bbWeight=0.50, gcrefRegs=53E0 {r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
-            ldr     r3, [sp+0xE0]
+            ldr     r1, [sp+0xC4]
+            ; gcrRegs +[r1]
+            ldr     r2, [sp+0xC8]
+            ; gcrRegs +[r2]
+            ldr     r3, [sp+0xCC]
             ; gcrRegs +[r3]
+            ldr     lr, [sp+0xD0]
+            ; gcrRegs +[lr]
+            ldr     r5, [sp+0xE0]
+            ldr     r12, [sp+0xE4]
+            ; gcrRegs +[r12]
+            ldr     r4, [sp+0xE8]
+            ; gcrRegs +[r4]
+            cmp     r5, 1
+            beq     SHORT G_M7764_IG04
+                       ;; size=38 bbWeight=1 PerfScore 15.00
+G_M7764_IG03:        ; bbWeight=0.50, gcrefRegs=501F {r0 r1 r2 r3 r4 r12 lr}, byrefRegs=0000 {}, byref, isz
+            cmp     r5, 3
+            beq     SHORT G_M7764_IG04
+            cmp     r5, 2
+            bne     SHORT G_M7764_IG05
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M7764_IG04:        ; bbWeight=0.50, gcrefRegs=501F {r0 r1 r2 r3 r4 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r6, [sp+0xD8]
+            ; gcrRegs +[r6]
             b       SHORT G_M7764_IG06
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG05:        ; bbWeight=0.50, gcrefRegs=53E0 {r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r3]
-            ldr     r3, [sp+0xDC]
-            ; gcrRegs +[r3]
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M7764_IG06:        ; bbWeight=1, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r3+0x04]
-            ldr     r1, [r5+0x04]
-            ldr     r2, [r6+0x04]
-            str     r2, [sp+0x9C]  // [V21 tmp17]
-            ldr     r2, [lr+0x04]
-            str     r2, [sp+0x98]  // [V23 tmp19]
-            ldr     r2, [r12+0x04]
-            str     r2, [sp+0x94]  // [V25 tmp21]
-            ldr     r2, [r7+0x04]
-            str     r2, [sp+0x90]  // [V27 tmp23]
-            ldr     r2, [r8+0x04]
-            str     r2, [sp+0x8C]  // [V29 tmp25]
-            cmp     r9, 0
-            beq     SHORT G_M7764_IG08
-                       ;; size=36 bbWeight=1 PerfScore 14.00
-G_M7764_IG07:        ; bbWeight=0.50, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
-            ldr     r2, [r9+0x04]
-            str     r2, [sp+0x88]  // [V53 tmp49]
-            b       SHORT G_M7764_IG09
+G_M7764_IG05:        ; bbWeight=0.50, gcrefRegs=501F {r0 r1 r2 r3 r4 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r6]
+            cmp     r5, 4
+            bne     G_M7764_IG16
+            ldr     r6, [sp+0xD4]
+            ; gcrRegs +[r6]
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M7764_IG08:        ; bbWeight=0.50, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref
-            movs    r2, 0
-            str     r2, [sp+0x88]  // [V53 tmp49]
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG09:        ; bbWeight=1, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref
-            movs    r2, 0
-            str     r2, [sp]   // [V04 OutArgs]
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M7764_IG10:        ; bbWeight=1, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref
-            str     r2, [sp+0x04]  // [V04 OutArgs+0x04]
-                       ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7764_IG11:        ; bbWeight=1, gcrefRegs=53E8 {r3 r5 r6 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
-            str     r2, [sp+0x08]  // [V04 OutArgs+0x08]
-            str     r3, [sp+0x0C]  // [V04 OutArgs+0x0c]
-            str     r0, [sp+0x10]  // [V04 OutArgs+0x10]
-            str     r5, [sp+0x14]  // [V04 OutArgs+0x14]
-            str     r1, [sp+0x18]  // [V04 OutArgs+0x18]
-            str     r6, [sp+0x1C]  // [V04 OutArgs+0x1c]
-            ldr     r2, [sp+0x9C]  // [V21 tmp17]
-            str     r2, [sp+0x20]  // [V04 OutArgs+0x20]
-            str     lr, [sp+0x24]  // [V04 OutArgs+0x24]
-            ldr     r2, [sp+0x98]  // [V23 tmp19]
-            str     r2, [sp+0x28]  // [V04 OutArgs+0x28]
-            str     r12, [sp+0x2C] // [V04 OutArgs+0x2c]
-            ldr     r2, [sp+0x94]  // [V25 tmp21]
-            str     r2, [sp+0x30]  // [V04 OutArgs+0x30]
-            str     r7, [sp+0x34]  // [V04 OutArgs+0x34]
-            ldr     r2, [sp+0x90]  // [V27 tmp23]
-            str     r2, [sp+0x38]  // [V04 OutArgs+0x38]
-            str     r8, [sp+0x3C]  // [V04 OutArgs+0x3c]
-            ldr     r2, [sp+0x8C]  // [V29 tmp25]
-            str     r2, [sp+0x40]  // [V04 OutArgs+0x40]
-            str     r9, [sp+0x44]  // [V04 OutArgs+0x44]
-            ldr     r2, [sp+0x88]  // [V53 tmp49]
-            str     r2, [sp+0x48]  // [V04 OutArgs+0x48]
-            mov     r0, r4
+G_M7764_IG06:        ; bbWeight=1, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r7, [r6+0x04]
+            ldr     r8, [r0+0x04]
+            ldr     r9, [r1+0x04]
+            str     r9, [sp+0x94]  // [V21 tmp17]
+            ldr     r9, [r12+0x04]
+            str     r9, [sp+0x90]  // [V23 tmp19]
+            ldr     r9, [r4+0x04]
+            str     r9, [sp+0x8C]  // [V25 tmp21]
+            ldr     r9, [r2+0x04]
+            str     r9, [sp+0x88]  // [V27 tmp23]
+            ldr     r9, [r3+0x04]
+            str     r9, [sp+0x84]  // [V29 tmp25]
+            cmp     lr, 0
+            beq     SHORT G_M7764_IG08
+                       ;; size=52 bbWeight=1 PerfScore 14.00
+G_M7764_IG07:        ; bbWeight=0.50, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r9, [lr+0x04]
+            str     r9, [sp+0x80]  // [V53 tmp49]
+            b       SHORT G_M7764_IG09
+                       ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M7764_IG08:        ; bbWeight=0.50, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref
+            mov     r9, 0
+            str     r9, [sp+0x80]  // [V53 tmp49]
+                       ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M7764_IG09:        ; bbWeight=1, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref
+            mov     r9, 0
+            str     r9, [sp]   // [V04 OutArgs]
+                       ;; size=8 bbWeight=1 PerfScore 2.00
+G_M7764_IG10:        ; bbWeight=1, gcrefRegs=505F {r0 r1 r2 r3 r4 r6 r12 lr}, byrefRegs=0000 {}, byref
+            str     r9, [sp+0x04]  // [V04 OutArgs+0x04]
...

libraries.pmi.linux.arm.checked.mch

-28 (-8.92%) : 265255.dasm - System.Diagnostics.ActivityContext:op_Inequality(System.Diagnostics.ActivityContext,System.Diagnostics.ActivityContext):ubyte (FullOpts)

@@ -12,7 +12,7 @@
 ;  V01 arg1         [V01,T01] (  5,  5   )  struct (20) [sp+0x44]  do-not-enreg[S] single-def <System.Diagnostics.ActivityContext>
 ;# V02 OutArgs      [V02    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V03 tmp1         [V03    ] (  0,  0   )  struct (20) zero-ref    do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Diagnostics.ActivityContext>
-;  V04 tmp2         [V04,T08] (  3,  2   )   ubyte  ->   r8         "Inline return value spill temp"
+;  V04 tmp2         [V04,T08] (  3,  2   )   ubyte  ->   lr         "Inline return value spill temp"
 ;* V05 tmp3         [V05    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Diagnostics.ActivitySpanId>
 ;* V06 tmp4         [V06    ] (  0,  0   )  struct (20) zero-ref    do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Diagnostics.ActivityContext>
 ;* V07 tmp5         [V07    ] (  0,  0   )  struct ( 4) zero-ref    "spilled call-like call argument" <System.Diagnostics.ActivitySpanId>
@@ -54,13 +54,13 @@
 ;  V43 tmp41        [V43,T13] (  2,  1.50)     int  ->   r5         "V03.[004..008)"
 ;  V44 tmp42        [V44,T14] (  2,  1.50)   ubyte  ->   r6         "V03.[008..009)"
 ;  V45 tmp43        [V45,T03] (  6,  3.38)     ref  ->   r7         single-def "V03.[012..016)"
-;  V46 tmp44        [V46,T02] (  6,  3.88)     ref  ->   r8         single-def "V03.[016..020)"
-;  V47 tmp45        [V47,T04] (  6,  3.38)     ref  ->   r9         single-def "V06.[000..004)"
-;  V48 tmp46        [V48,T15] (  2,  1.50)     int  ->  r10         "V06.[004..008)"
-;  V49 tmp47        [V49,T16] (  2,  1.50)   ubyte  ->  [sp+0x04]  spill-single-def "V06.[008..009)"
-;  V50 tmp48        [V50,T07] (  5,  2.88)     ref  ->  [sp+0x00]  spill-single-def "V06.[012..016)"
-;  V51 tmp49        [V51,T05] (  5,  3.38)     ref  ->  r12         single-def "V06.[016..020)"
-;  V52 cse0         [V52,T12] (  4,  1.88)     int  ->   r8         "CSE - moderate"
+;  V46 tmp44        [V46,T02] (  6,  3.88)     ref  ->   r2         single-def "V03.[016..020)"
+;  V47 tmp45        [V47,T04] (  6,  3.38)     ref  ->   r8         single-def "V06.[000..004)"
+;  V48 tmp46        [V48,T15] (  2,  1.50)     int  ->   r9         "V06.[004..008)"
+;  V49 tmp47        [V49,T16] (  2,  1.50)   ubyte  ->  r10         "V06.[008..009)"
+;  V50 tmp48        [V50,T07] (  5,  2.88)     ref  ->  [sp+0x04]  spill-single-def "V06.[012..016)"
+;  V51 tmp49        [V51,T05] (  5,  3.38)     ref  ->   r1         single-def "V06.[016..020)"
+;  V52 cse0         [V52,T12] (  4,  1.88)     int  ->   r5         "CSE - moderate"
 ;
 ; Lcl frame size = 12
 
@@ -77,186 +77,191 @@ G_M40484_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             ldrb    r6, [sp+0x38]
             ldr     r7, [sp+0x3C]
             ; gcrRegs +[r7]
-            ldr     r8, [sp+0x40]
+            ldr     r2, [sp+0x40]
+            ; gcrRegs +[r2]
+            ldr     r8, [sp+0x44]
             ; gcrRegs +[r8]
-            ldr     r9, [sp+0x44]
-            ; gcrRegs +[r9]
-            ldr     r10, [sp+0x48]
-            ldrb    r3, [sp+0x4C]
-            str     r3, [sp+0x04]  // [V49 tmp47]
-            ldr     lr, [sp+0x50]  // [V01 arg1+0x0c]
-            ; gcrRegs +[lr]
-            str     lr, [sp]   // [V50 tmp48]
+            ldr     r9, [sp+0x48]
+            ldrb    r10, [sp+0x4C]
+            ldr     r3, [sp+0x50]
+            ; gcrRegs +[r3]
+            str     r3, [sp+0x04]  // [V50 tmp48]
             ; GC ptr vars +{V50}
-            ldr     r12, [sp+0x54] // [V01 arg1+0x10]
-            ; gcrRegs +[r12]
-            cmp     r8, r12
-            beq     SHORT G_M40484_IG06
-                       ;; size=44 bbWeight=1 PerfScore 14.00
-G_M40484_IG03:        ; bbWeight=0.44, gcVars=00000080 {V50}, gcrefRegs=5390 {r4 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, gcvars, byref, isz
-            cmp     r8, 0
-            beq     SHORT G_M40484_IG23
-                       ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG04:        ; bbWeight=0.44, gcrefRegs=5390 {r4 r7 r8 r9 r12 lr}, byrefRegs=0000 {}, byref, isz
-            b       SHORT G_M40484_IG21
-                       ;; size=2 bbWeight=0.44 PerfScore 0.44
-G_M40484_IG05:        ; bbWeight=0.50, gcrefRegs=1390 {r4 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[lr]
-            add     r0, r8, 8
+            ldr     r1, [sp+0x54]  // [V01 arg1+0x10]
+            ; gcrRegs +[r1]
+            cmp     r2, r1
+            beq     SHORT G_M40484_IG05
+                       ;; size=34 bbWeight=1 PerfScore 13.00
+G_M40484_IG03:        ; bbWeight=0.44, gcVars=00000080 {V50}, gcrefRegs=0196 {r1 r2 r4 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[r3]
+            cmp     r2, 0
+            beq     SHORT G_M40484_IG22
+            b       SHORT G_M40484_IG20
+                       ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M40484_IG04:        ; bbWeight=0.50, gcrefRegs=0196 {r1 r2 r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+            add     r0, r2, 8
             ; byrRegs +[r0]
-            add     r1, r12, 8
+            adds    r1, 8
+            ; gcrRegs -[r1]
             ; byrRegs +[r1]
-            ldr     r2, [r8+0x04]
+            ldr     r2, [r2+0x04]
+            ; gcrRegs -[r2]
             lsls    r2, r2, 1
-            movw    r12, 0xd1ff
-            ; gcrRegs -[r12]
-            movt    r12, 0xd1ff
-            ldr     r12, [r12]
-            blx     r12        // <unknown method>
-            ; gcrRegs -[r8]
+            movw    lr, 0xd1ff
+            movt    lr, 0xd1ff
+            ldr     lr, [lr]
+            blx     lr     // <unknown method>
             ; byrRegs -[r0-r1]
             cmp     r0, 0
-            ldr     lr, [sp]   // [V50 tmp48]
-            ; gcrRegs +[lr]
-            beq     SHORT G_M40484_IG23
-                       ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M40484_IG06:        ; bbWeight=0.50, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
-            cmp     r7, lr
-            beq     SHORT G_M40484_IG11
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M40484_IG07:        ; bbWeight=0.44, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
+            beq     SHORT G_M40484_IG22
+                       ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M40484_IG05:        ; bbWeight=0.50, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+            ldr     r3, [sp+0x04]  // [V50 tmp48]
+            ; gcrRegs +[r3]
+            cmp     r7, r3
+            beq     SHORT G_M40484_IG10
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M40484_IG06:        ; bbWeight=0.44, gcrefRegs=0198 {r3 r4 r7 r8}, byrefRegs=0000 {}, byref, isz
             cmp     r7, 0
-            beq     SHORT G_M40484_IG23
+            beq     SHORT G_M40484_IG22
                        ;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG08:        ; bbWeight=0.44, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
-            cmp     lr, 0
-            beq     SHORT G_M40484_IG23
-                       ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG09:        ; bbWeight=0.44, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
+G_M40484_IG07:        ; bbWeight=0.44, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r3]
+            ldr     r3, [sp+0x04]  // [V50 tmp48]
+            ; gcrRegs +[r3]
+            cmp     r3, 0
+            beq     SHORT G_M40484_IG22
+                       ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M40484_IG08:        ; bbWeight=0.44, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r3]
             ldr     r1, [r7+0x04]
-            ldr     r2, [lr+0x04]
+            ldr     r3, [sp+0x04]  // [V50 tmp48]
+            ; gcrRegs +[r3]
+            ldr     r2, [r3+0x04]
             cmp     r1, r2
-            bne     SHORT G_M40484_IG23
-                       ;; size=10 bbWeight=0.44 PerfScore 1.75
-G_M40484_IG10:        ; bbWeight=0.50, gcrefRegs=4290 {r4 r7 r9 lr}, byrefRegs=0000 {}, byref, isz
+            bne     SHORT G_M40484_IG22
+                       ;; size=10 bbWeight=0.44 PerfScore 2.19
+G_M40484_IG09:        ; bbWeight=0.50, gcrefRegs=0190 {r4 r7 r8}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r3]
             add     r0, r7, 8
             ; byrRegs +[r0]
-            add     r1, lr, 8
+            ldr     r3, [sp+0x04]  // [V50 tmp48]
+            ; gcrRegs +[r3]
+            add     r1, r3, 8
             ; byrRegs +[r1]
             ldr     r2, [r7+0x04]
             lsls    r2, r2, 1
-            movw    lr, 0xd1ff
-            ; gcrRegs -[lr]
-            movt    lr, 0xd1ff
-            ldr     lr, [lr]
+            movw    r3, 0xd1ff
+            ; gcrRegs -[r3]
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
             ; GC ptr vars -{V50}
-            blx     lr     // <unknown method>
+            blx     r3     // <unknown method>
             ; gcrRegs -[r7]
             ; byrRegs -[r0-r1]
             cmp     r0, 0
-            beq     SHORT G_M40484_IG23
-                       ;; size=30 bbWeight=0.50 PerfScore 5.00
-G_M40484_IG11:        ; bbWeight=0.50, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
-            cmp     r5, r10
-            bne     SHORT G_M40484_IG23
-            cmp     r4, r9
-            beq     SHORT G_M40484_IG18
+            beq     SHORT G_M40484_IG22
+                       ;; size=30 bbWeight=0.50 PerfScore 5.50
+G_M40484_IG10:        ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
+            cmp     r5, r9
+            bne     SHORT G_M40484_IG22
+            cmp     r4, r8
+            beq     SHORT G_M40484_IG17
                        ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M40484_IG12:        ; bbWeight=0.44, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
+G_M40484_IG11:        ; bbWeight=0.44, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
             cmp     r4, 0
-            beq     SHORT G_M40484_IG23
+            beq     SHORT G_M40484_IG22
                        ;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG13:        ; bbWeight=0.44, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
-            cmp     r9, 0
-            beq     SHORT G_M40484_IG23
+G_M40484_IG12:        ; bbWeight=0.44, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
+            cmp     r8, 0
+            beq     SHORT G_M40484_IG22
                        ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M40484_IG14:        ; bbWeight=0.44, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
-            ldr     r8, [r4+0x04]
-            ldr     r0, [r9+0x04]
-            cmp     r8, r0
-            bne     SHORT G_M40484_IG23
-                       ;; size=12 bbWeight=0.44 PerfScore 1.75
-G_M40484_IG15:        ; bbWeight=0.50, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
+G_M40484_IG13:        ; bbWeight=0.44, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
+            ldr     r5, [r4+0x04]
+            ldr     r0, [r8+0x04]
+            cmp     r5, r0
+            bne     SHORT G_M40484_IG22
+                       ;; size=10 bbWeight=0.44 PerfScore 1.75
+G_M40484_IG14:        ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
             movs    r0, 1
-            movw    r2, 0xd1ff
-            movt    r2, 0xd1ff
-            ldr     r2, [r2]
-            blx     r2     // System.Diagnostics.Debug:Assert(ubyte)
-            ldr     r0, [r9+0x04]
-            cmp     r0, r8
-            beq     SHORT G_M40484_IG16
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // System.Diagnostics.Debug:Assert(ubyte)
+            ldr     r0, [r8+0x04]
+            cmp     r0, r5
+            beq     SHORT G_M40484_IG15
             movs    r0, 0
-            b       SHORT G_M40484_IG17
+            b       SHORT G_M40484_IG16
                        ;; size=26 bbWeight=0.50 PerfScore 5.00
-G_M40484_IG16:        ; bbWeight=0.50, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref
+G_M40484_IG15:        ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref
             movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M40484_IG17:        ; bbWeight=0.50, gcrefRegs=0210 {r4 r9}, byrefRegs=0000 {}, byref, isz
+G_M40484_IG16:        ; bbWeight=0.50, gcrefRegs=0110 {r4 r8}, byrefRegs=0000 {}, byref, isz
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // System.Diagnostics.Debug:Assert(ubyte)
             add     r0, r4, 8
             ; byrRegs +[r0]
-            add     r1, r9, 8
+            add     r1, r8, 8
             ; byrRegs +[r1]
...

-36 (-7.47%) : 221502.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)

@@ -13,14 +13,14 @@
 ;  V02 loc0         [V02    ] (  2,  1   )  struct (16) [sp+0x10]  do-not-enreg[XS] must-init addr-exposed ld-addr-op double-align <System.DateTimeOffset>
 ;  V03 loc1         [V03,T02] (  7,  4.50)     int  ->   r0         single-def
 ;* V04 loc2         [V04    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] ld-addr-op double-align <System.Nullable`1[System.DateTime]>
-;  V05 loc3         [V05,T10] (  4,  1.75)     ref  ->   r7         class-hnd single-def <<unknown class>>
+;  V05 loc3         [V05,T10] (  3,  1.50)     ref  ->   r0         class-hnd single-def <<unknown class>>
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V07 tmp1         [V07,T06] (  3,  2.50)     ref  ->   r0         class-hnd "spilling QMark2" <System.DateTimeOffset>
+;  V07 tmp1         [V07,T06] (  3,  2.50)     ref  ->   r3         class-hnd "spilling QMark2" <System.DateTimeOffset>
 ;  V08 tmp2         [V08,T03] (  4,  3.50)     ref  ->   r4         single-def "inline UNBOX clone1"
 ;  V09 tmp3         [V09,T09] (  2,  2   )  struct (16) [sp+0x00]  do-not-enreg[SF] ld-addr-op double-align "NewObj constructor temp" <System.Nullable`1[System.DateTime]>
 ;  V10 tmp4         [V10,T05] (  3,  3   )     ref  ->   r7         class-hnd exact single-def "Single-def Box Helper" <System.DateTime>
-;  V11 tmp5         [V11,T14] (  2,  0   )     ref  ->   r5         class-hnd single-def "non-inline candidate call" <<unknown class>>
-;  V12 tmp6         [V12,T13] (  3,  0   )     ref  ->   r7         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+;  V11 tmp5         [V11,T13] (  2,  0   )     ref  ->   r5         class-hnd single-def "non-inline candidate call" <<unknown class>>
+;  V12 tmp6         [V12,T12] (  3,  0   )     ref  ->   r7         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
 ;  V13 tmp7         [V13,T08] (  3,  2   )     ref  ->   r1         single-def "CASTCLASS eval op1"
 ;  V14 tmp8         [V14,T11] (  3,  1   )     int  ->   r3         "fgMakeTemp is creating a new local variable"
 ;  V15 tmp9         [V15,T04] (  4,  3.50)     ref  ->   r2         class-hnd single-def "spilling QMark2" <System.String>
@@ -28,10 +28,9 @@
 ;* V17 tmp11        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V18 tmp12        [V18    ] (  0,  0   )    long  ->  zero-ref    "field V16._dateData (fldOffset=0x0)" P-INDEP
 ;* V19 tmp13        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "V09.[000..001)"
-;  V20 tmp14        [V20,T15] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
-;  V21 tmp15        [V21,T16] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
+;  V20 tmp14        [V20,T14] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
+;  V21 tmp15        [V21,T15] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
 ;  V22 cse0         [V22,T07] (  7,  2.50)     int  ->   r6         multi-def "CSE - aggressive"
-;  V23 cse1         [V23,T12] (  3,  1   )     int  ->   r0         "CSE - conservative"
 ;
 ; Lcl frame size = 32
 
@@ -62,9 +61,9 @@ G_M49315_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, by
                        ;; size=18 bbWeight=1 PerfScore 7.00
 G_M49315_IG03:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
             cmp     r0, 0
-            beq     SHORT G_M49315_IG11
+            beq     SHORT G_M49315_IG10
             cmp     r0, 9
-            bne     G_M49315_IG19
+            bne     G_M49315_IG16
             mov     r0, r4
             ; gcrRegs +[r0]
             ldr     r3, [r4]
@@ -84,7 +83,7 @@ G_M49315_IG04:        ; bbWeight=0.25, gcrefRegs=0016 {r1 r2 r4}, byrefRegs=0020
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             cmp     r0, r3
-            bne     G_M49315_IG20
+            bne     G_M49315_IG17
                        ;; size=16 bbWeight=0.25 PerfScore 1.25
 G_M49315_IG05:        ; bbWeight=0.50, gcrefRegs=0014 {r2 r4}, byrefRegs=0020 {r5}, byref
             ; gcrRegs -[r1]
@@ -107,79 +106,46 @@ G_M49315_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4},
             ; gcrRegs +[r4]
             ; byrRegs +[r5]
             cmp     r0, 11
-            beq     SHORT G_M49315_IG11
+            beq     SHORT G_M49315_IG10
             cmp     r0, 14
-            beq     SHORT G_M49315_IG11
+            beq     SHORT G_M49315_IG10
             cmp     r0, 16
-            bne     SHORT G_M49315_IG19
+            bne     SHORT G_M49315_IG16
             mov     r0, r4
             ; gcrRegs +[r0]
             ldr     r3, [r4]
             ldr     r6, [r3+0x34]
             ldr     r3, [r6+0x04]
             blx     r3     // <unknown method>
-            mov     r7, r0
-            ; gcrRegs +[r7]
-            mov     r0, r7
-            cmp     r0, 0
-            beq     SHORT G_M49315_IG15
-                       ;; size=30 bbWeight=0.50 PerfScore 7.50
-G_M49315_IG08:        ; bbWeight=0.25, gcrefRegs=0091 {r0 r4 r7}, byrefRegs=0020 {r5}, byref, isz
-            ldr     r0, [r0]
-            ; gcrRegs -[r0]
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            cmp     r0, r3
-            bne     SHORT G_M49315_IG15
-                       ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M49315_IG09:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, byref, isz
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            cmp     r0, r3
-            beq     SHORT G_M49315_IG14
-                       ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M49315_IG10:        ; bbWeight=0.25, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, byref, isz
-            b       SHORT G_M49315_IG13
-                       ;; size=2 bbWeight=0.25 PerfScore 0.25
-G_M49315_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
-            ; gcrRegs -[r4 r7]
-            movs    r0, 0
-            str     r0, [r5]
-            str     r0, [r5+0x04]
-            str     r0, [r5+0x08]
-            str     r0, [r5+0x0C]
-                       ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M49315_IG12:        ; bbWeight=0.50, epilog, nogc, extend
-            add     sp, 32
-            pop     {r4,r5,r6,r7,r11,pc}
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M49315_IG13:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, gcvars, byref
-            ; gcrRegs +[r4 r7]
-            mov     r1, r7
-            ; gcrRegs +[r1]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
+            mov     r3, r0
+            ; gcrRegs +[r3]
+            cmp     r3, 0
+            beq     SHORT G_M49315_IG12
+                       ;; size=28 bbWeight=0.50 PerfScore 7.00
+G_M49315_IG08:        ; bbWeight=0.25, gcrefRegs=0019 {r0 r3 r4}, byrefRegs=0020 {r5}, byref, isz
             ldr     r3, [r3]
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-                       ;; size=22 bbWeight=0.25 PerfScore 1.75
-G_M49315_IG14:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r5}, byref
-            ldr     r0, [r7+0x04]
-            str     r0, [sp+0x10]
-            ldr     r0, [r7+0x08]
-            str     r0, [sp+0x14]
-            ldr     r0, [r7+0x0C]
-            str     r0, [sp+0x18]
-            ldr     r0, [r7+0x10]
-            str     r0, [sp+0x1C]
+            ; gcrRegs -[r3]
+            movw    r2, 0xd1ff
+            movt    r2, 0xd1ff
+            cmp     r3, r2
+            bne     SHORT G_M49315_IG12
+                       ;; size=14 bbWeight=0.25 PerfScore 1.25
+G_M49315_IG09:        ; bbWeight=0.50, gcrefRegs=0011 {r0 r4}, byrefRegs=0020 {r5}, byref, isz
+            ldr     r3, [r0+0x04]
+            str     r3, [sp+0x10]
+            ldr     r3, [r0+0x08]
+            str     r3, [sp+0x14]
+            ldr     r3, [r0+0x0C]
+            str     r3, [sp+0x18]
+            ldr     r3, [r0+0x10]
+            str     r3, [sp+0x1C]
             movw    r0, 0xd1ff
+            ; gcrRegs -[r0]
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_NEWFAST
-            ; gcrRegs -[r7] +[r0]
+            ; gcrRegs +[r0]
             mov     r7, r0
             ; gcrRegs +[r7]
             adds    r1, r7, 4
@@ -202,8 +168,22 @@ G_M49315_IG14:        ; bbWeight=0.50, gcrefRegs=0090 {r4 r7}, byrefRegs=0020 {r
             ldr     lr, [lr]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0 r2 r7]
-                       ;; size=74 bbWeight=0.50 PerfScore 14.00
-G_M49315_IG15:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref, isz
+            b       SHORT G_M49315_IG12
+                       ;; size=76 bbWeight=0.50 PerfScore 14.50
+G_M49315_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0020 {r5}, byref
+            ; gcrRegs -[r4]
+            movs    r0, 0
+            str     r0, [r5]
+            str     r0, [r5+0x04]
+            str     r0, [r5+0x08]
+            str     r0, [r5+0x0C]
+                       ;; size=10 bbWeight=0.50 PerfScore 2.50
+G_M49315_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+            add     sp, 32
+            pop     {r4,r5,r6,r7,r11,pc}
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M49315_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, gcvars, byref, isz
+            ; gcrRegs +[r4]
             mov     r0, r4
             ; gcrRegs +[r0]
             ldr     r3, [r6+0x04]
@@ -216,9 +196,9 @@ G_M49315_IG15:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
             ; gcrRegs -[r0]
             movt    r0, 0xd1ff
             cmp     r1, r0
-            beq     SHORT G_M49315_IG17
+            beq     SHORT G_M49315_IG14
                        ;; size=22 bbWeight=0.50 PerfScore 4.50
-G_M49315_IG16:        ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+G_M49315_IG13:        ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
             mov     r1, r4
             ; gcrRegs +[r1]
             movw    r0, 0xd1ff
@@ -229,27 +209,27 @@ G_M49315_IG16:        ; bbWeight=0.25, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5},
             blx     r3     // CORINFO_HELP_UNBOX
             ; gcrRegs -[r1]
                        ;; size=22 bbWeight=0.25 PerfScore 1.75
-G_M49315_IG17:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
-            ldr     r1, [r4+0x04]
-            str     r1, [sp+0x08]
-            ldr     r1, [r4+0x08]
-            str     r1, [sp+0x0C]
-            ldr     r1, [sp]
-            str     r1, [r5]
-            ldr     r1, [sp+0x04]
-            str     r1, [r5+0x04]
-            ldr     r1, [sp+0x08]
-            str     r1, [r5+0x08]
-            ldr     r1, [sp+0x0C]
-            str     r1, [r5+0x0C]
-            movs    r1, 1
-            strb    r1, [r5]
+G_M49315_IG14:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0020 {r5}, byref
+            ldr     r0, [r4+0x04]
+            str     r0, [sp+0x08]
+            ldr     r0, [r4+0x08]
+            str     r0, [sp+0x0C]
+            ldr     r0, [sp]
+            str     r0, [r5]
+            ldr     r0, [sp+0x04]
+            str     r0, [r5+0x04]
+            ldr     r0, [sp+0x08]
+            str     r0, [r5+0x08]
+            ldr     r0, [sp+0x0C]
+            str     r0, [r5+0x0C]
+            movs    r0, 1
+            strb    r0, [r5]
                        ;; size=28 bbWeight=0.50 PerfScore 7.00
-G_M49315_IG18:        ; bbWeight=0.50, epilog, nogc, extend
+G_M49315_IG15:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 32
             pop     {r4,r5,r6,r7,r11,pc}
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M49315_IG19:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
+G_M49315_IG16:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref
             ; byrRegs -[r5]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -304,7 +284,7 @@ G_M49315_IG19:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
             blx     r3     // CORINFO_HELP_THROW
             ; gcrRegs -[r0]
                        ;; size=112 bbWeight=0 PerfScore 0.00
-G_M49315_IG20:        ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+G_M49315_IG17:        ; bbWeight=0, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
             ; gcrRegs +[r1]
             mov     r0, r3
             movw    r3, 0xd1ff
...

-20 (-7.35%) : 243754.dasm - System.ComponentModel.LookupBindingPropertiesAttribute:Equals(System.Object):ubyte:this (FullOpts)

@@ -13,11 +13,11 @@
 ;  V02 loc0         [V02,T09] (  7,  4.25)     ref  ->   r5         class-hnd exact <System.ComponentModel.LookupBindingPropertiesAttribute>
 ;# V03 OutArgs      [V03    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <System.ComponentModel.LookupBindingPropertiesAttribute>
-;  V05 tmp2         [V05,T03] (  5,  4.75)     ref  ->   r6         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V06 tmp3         [V06,T04] (  5,  4.75)     ref  ->   r8         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V07 tmp4         [V07,T05] (  5,  4.75)     ref  ->  r10         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V05 tmp2         [V05,T03] (  5,  4.75)     ref  ->   r2         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V06 tmp3         [V06,T04] (  5,  4.75)     ref  ->   r2         class-hnd exact single-def "impAppendStmt" <System.String>
+;  V07 tmp4         [V07,T05] (  5,  4.75)     ref  ->   r2         class-hnd exact single-def "impAppendStmt" <System.String>
 ;  V08 tmp5         [V08,T02] (  6,  4.98)     ref  ->   r2         class-hnd exact single-def "impAppendStmt" <System.String>
-;  V09 tmp6         [V09,T06] (  5,  4.75)     ref  ->   r7         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V09 tmp6         [V09,T06] (  5,  4.75)     ref  ->   r1         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V10 tmp7         [V10,T18] (  2,  1   )   ubyte  ->   r0         "Inline return value spill temp"
 ;  V11 tmp8         [V11,T11] (  2,  2   )   byref  ->   r0         single-def "impAppendStmt"
 ;* V12 tmp9         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -25,17 +25,17 @@
 ;* V14 tmp11        [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp12        [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V16 tmp13        [V16    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V17 tmp14        [V17,T07] (  5,  4.75)     ref  ->   r9         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V17 tmp14        [V17,T07] (  5,  4.75)     ref  ->   r1         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V18 tmp15        [V18,T19] (  2,  1   )   ubyte  ->   r0         "Inline return value spill temp"
-;  V19 tmp16        [V19,T12] (  2,  2   )   byref  ->   r0         single-def "impAppendStmt"
+;  V19 tmp16        [V19,T12] (  2,  2   )   byref  ->   r3         single-def "impAppendStmt"
 ;* V20 tmp17        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp18        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V22 tmp19        [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V23 tmp20        [V23    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V24 tmp21        [V24    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V25 tmp22        [V25,T08] (  5,  4.75)     ref  ->   r3         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V25 tmp22        [V25,T08] (  5,  4.75)     ref  ->   r1         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V26 tmp23        [V26,T20] (  2,  1   )   ubyte  ->   r0         "Inline return value spill temp"
-;  V27 tmp24        [V27,T13] (  2,  2   )   byref  ->   r0         single-def "impAppendStmt"
+;  V27 tmp24        [V27,T13] (  2,  2   )   byref  ->   r3         single-def "impAppendStmt"
 ;* V28 tmp25        [V28    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V29 tmp26        [V29    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V30 tmp27        [V30    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -49,15 +49,15 @@
 ;* V38 tmp35        [V38    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V39 tmp36        [V39    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V40 tmp37        [V40    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V41 cse0         [V41,T14] (  3,  1.38)     int  ->   r2         "CSE - moderate"
-;  V42 cse1         [V42,T15] (  3,  1.38)     int  ->   r2         "CSE - moderate"
-;  V43 cse2         [V43,T16] (  3,  1.38)     int  ->   r2         "CSE - moderate"
+;  V41 cse0         [V41,T14] (  3,  1.38)     int  ->   r3         "CSE - moderate"
+;  V42 cse1         [V42,T15] (  3,  1.38)     int  ->   r0         "CSE - moderate"
+;  V43 cse2         [V43,T16] (  3,  1.38)     int  ->   r0         "CSE - moderate"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M3330_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r3,r4,r5,r6,r7,r8,r9,r10,r11,lr}
-            add     r11, sp, 32
+            push    {r4,r5,r11,lr}
+            add     r11, sp, 8
             mov     r4, r0
             ; gcrRegs +[r4]
                        ;; size=10 bbWeight=1 PerfScore 3.00
@@ -66,7 +66,7 @@ G_M3330_IG02:        ; bbWeight=1, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, by
             mov     r5, r1
             ; gcrRegs +[r5]
             cmp     r5, 0
-            beq     SHORT G_M3330_IG24
+            beq     SHORT G_M3330_IG21
                        ;; size=6 bbWeight=1 PerfScore 3.00
 G_M3330_IG03:        ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r1]
@@ -74,104 +74,99 @@ G_M3330_IG03:        ; bbWeight=0.25, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {},
             movw    r2, 0xd1ff
             movt    r2, 0xd1ff
             cmp     r0, r2
-            bne     SHORT G_M3330_IG24
+            bne     SHORT G_M3330_IG21
                        ;; size=14 bbWeight=0.25 PerfScore 1.25
 G_M3330_IG04:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ldr     r6, [r5+0x04]
-            ; gcrRegs +[r6]
-            ldr     r7, [r4+0x04]
-            ; gcrRegs +[r7]
-            cmp     r6, r7
-            beq     SHORT G_M3330_IG08
+            ldr     r2, [r5+0x04]
+            ; gcrRegs +[r2]
+            ldr     r1, [r4+0x04]
+            ; gcrRegs +[r1]
+            cmp     r2, r1
+            beq     SHORT G_M3330_IG07
                        ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M3330_IG05:        ; bbWeight=0.44, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
-            cmp     r6, 0
-            beq     SHORT G_M3330_IG24
-                       ;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG06:        ; bbWeight=0.44, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
-            b       SHORT G_M3330_IG22
-                       ;; size=2 bbWeight=0.44 PerfScore 0.44
-G_M3330_IG07:        ; bbWeight=0.50, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, byref, isz
-            add     r0, r6, 8
+G_M3330_IG05:        ; bbWeight=0.44, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r2, 0
+            beq     SHORT G_M3330_IG21
+            b       SHORT G_M3330_IG19
+                       ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M3330_IG06:        ; bbWeight=0.50, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, byref, isz
+            add     r0, r2, 8
             ; byrRegs +[r0]
-            lsls    r2, r2, 1
-            add     r1, r7, 8
+            lsls    r2, r3, 1
+            ; gcrRegs -[r2]
+            adds    r1, 8
+            ; gcrRegs -[r1]
             ; byrRegs +[r1]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
-            ; gcrRegs -[r6-r7]
             ; byrRegs -[r0-r1]
             cmp     r0, 0
-            beq     SHORT G_M3330_IG24
-                       ;; size=26 bbWeight=0.50 PerfScore 4.50
-G_M3330_IG08:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ldr     r8, [r5+0x08]
-            ; gcrRegs +[r8]
-            ldr     r9, [r4+0x08]
-            ; gcrRegs +[r9]
-            cmp     r8, r9
-            beq     SHORT G_M3330_IG11
-                       ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M3330_IG09:        ; bbWeight=0.44, gcrefRegs=0330 {r4 r5 r8 r9}, byrefRegs=0000 {}, byref, isz
-            cmp     r8, 0
-            beq     SHORT G_M3330_IG24
-                       ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG10:        ; bbWeight=0.44, gcrefRegs=0330 {r4 r5 r8 r9}, byrefRegs=0000 {}, byref, isz
-            b       SHORT G_M3330_IG29
-                       ;; size=2 bbWeight=0.44 PerfScore 0.44
-G_M3330_IG11:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r8-r9]
-            ldr     r10, [r5+0x0C]
-            ; gcrRegs +[r10]
-            ldr     r3, [r4+0x0C]
-            ; gcrRegs +[r3]
-            cmp     r10, r3
-            beq     SHORT G_M3330_IG14
-                       ;; size=10 bbWeight=0.50 PerfScore 2.00
-G_M3330_IG12:        ; bbWeight=0.44, gcrefRegs=0438 {r3 r4 r5 r10}, byrefRegs=0000 {}, byref, isz
-            cmp     r10, 0
-            beq     SHORT G_M3330_IG24
-                       ;; size=6 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG13:        ; bbWeight=0.44, gcrefRegs=0438 {r3 r4 r5 r10}, byrefRegs=0000 {}, byref, isz
+            beq     SHORT G_M3330_IG21
+                       ;; size=24 bbWeight=0.50 PerfScore 4.50
+G_M3330_IG07:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+            ldr     r2, [r5+0x08]
+            ; gcrRegs +[r2]
+            ldr     r1, [r4+0x08]
+            ; gcrRegs +[r1]
+            cmp     r2, r1
+            beq     SHORT G_M3330_IG09
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M3330_IG08:        ; bbWeight=0.44, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r2, 0
+            beq     SHORT G_M3330_IG21
             b       SHORT G_M3330_IG26
-                       ;; size=2 bbWeight=0.44 PerfScore 0.44
-G_M3330_IG14:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r3 r10]
+                       ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M3330_IG09:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r1-r2]
+            ldr     r2, [r5+0x0C]
+            ; gcrRegs +[r2]
+            ldr     r1, [r4+0x0C]
+            ; gcrRegs +[r1]
+            cmp     r2, r1
+            beq     SHORT G_M3330_IG11
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M3330_IG10:        ; bbWeight=0.44, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r2, 0
+            beq     SHORT G_M3330_IG21
+            b       SHORT G_M3330_IG23
+                       ;; size=6 bbWeight=0.44 PerfScore 1.31
+G_M3330_IG11:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r1-r2]
             ldr     r2, [r5+0x10]
             ; gcrRegs +[r2]
             ldr     r1, [r4+0x10]
             ; gcrRegs +[r1]
             cmp     r2, r1
-            bne     SHORT G_M3330_IG16
+            bne     SHORT G_M3330_IG13
                        ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M3330_IG15:        ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG12:        ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r1-r2 r4-r5]
             movs    r0, 1
-            b       SHORT G_M3330_IG21
+            b       SHORT G_M3330_IG18
                        ;; size=4 bbWeight=0.06 PerfScore 0.13
-G_M3330_IG16:        ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG13:        ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r1-r2]
             cmp     r2, 0
-            beq     SHORT G_M3330_IG19
+            beq     SHORT G_M3330_IG16
                        ;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG17:        ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG14:        ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
             cmp     r1, 0
-            beq     SHORT G_M3330_IG19
+            beq     SHORT G_M3330_IG16
                        ;; size=4 bbWeight=0.44 PerfScore 0.88
-G_M3330_IG18:        ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG15:        ; bbWeight=0.44, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [r2+0x04]
             ldr     r3, [r1+0x04]
             cmp     r0, r3
-            beq     SHORT G_M3330_IG20
+            beq     SHORT G_M3330_IG17
                        ;; size=8 bbWeight=0.44 PerfScore 1.75
-G_M3330_IG19:        ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M3330_IG16:        ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r1-r2]
             movs    r0, 0
-            b       SHORT G_M3330_IG21
+            b       SHORT G_M3330_IG18
                        ;; size=4 bbWeight=0.13 PerfScore 0.26
-G_M3330_IG20:        ; bbWeight=0.31, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref
+G_M3330_IG17:        ; bbWeight=0.31, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref
             ; gcrRegs +[r1-r2]
             add     r0, r2, 8
             ; byrRegs +[r0]
@@ -187,84 +182,91 @@ G_M3330_IG20:        ; bbWeight=0.31, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {},
             blx     r3     // <unknown method>
             ; byrRegs -[r0-r1]
                        ;; size=22 bbWeight=0.31 PerfScore 2.45
-G_M3330_IG21:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
-            pop     {r3,r4,r5,r6,r7,r8,r9,r10,r11,pc}
+G_M3330_IG18:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+            pop     {r4,r5,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M3330_IG22:        ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=00F0 {r4 r5 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[r4-r7]
-            cmp     r7, 0
-            beq     SHORT G_M3330_IG24
+G_M3330_IG19:        ; bbWeight=0.44, gcVars=00000000 {}, gcrefRegs=0036 {r1 r2 r4 r5}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs +[r1-r2 r4-r5]
+            cmp     r1, 0
...

+14 (+7.53%) : 204457.dasm - Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1System.String

@@ -10,54 +10,35 @@
 ;
 ;  V00 arg0         [V00,T00] (  5,  3.97)     ref  ->   r4         class-hnd single-def <System.String>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct ( 4) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T02] (  3,  3   )     ref  ->   r5         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[System.String]>
+;  V02 tmp1         [V02,T02] (  3,  3   )     ref  ->   r4         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[System.String]>
 ;* V03 tmp2         [V03,T05] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V04 tmp3         [V04,T01] (  4,  3.99)     ref  ->   r5         class-hnd single-def "Inlining Arg" <ushort[]>
+;  V04 tmp3         [V04,T01] (  4,  3.99)     ref  ->   r1         class-hnd single-def "Inlining Arg" <ushort[]>
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
 ;* V06 tmp5         [V06    ] (  0,  0   )  struct ( 8) zero-ref    multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;* V07 tmp6         [V07    ] (  0,  0   )   byref  ->  zero-ref    "field V05._reference (fldOffset=0x0)" P-INDEP
 ;* V08 tmp7         [V08    ] (  0,  0   )     int  ->  zero-ref    "field V05._length (fldOffset=0x4)" P-INDEP
-;  V09 tmp8         [V09,T03] (  3,  1   )   byref  ->   r1         "field V06._reference (fldOffset=0x0)" P-INDEP
-;  V10 tmp9         [V10,T04] (  3,  1   )     int  ->   r2         "field V06._length (fldOffset=0x4)" P-INDEP
+;  V09 tmp8         [V09,T03] (  3,  1   )   byref  ->  registers   "field V06._reference (fldOffset=0x0)" P-INDEP
+;  V10 tmp9         [V10,T04] (  3,  1   )     int  ->  registers   "field V06._length (fldOffset=0x4)" P-INDEP
 ;
-; Lcl frame size = 8
+; Lcl frame size = 12
 
 G_M40468_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r2,r3,r4,r5,r11,lr}
+            push    {r4,r11,lr}
+            sub     sp, 12
             add     r11, sp, 16
             mov     r4, r0
             ; gcrRegs +[r4]
-                       ;; size=10 bbWeight=1 PerfScore 3.00
+                       ;; size=12 bbWeight=1 PerfScore 4.00
 G_M40468_IG02:        ; bbWeight=1, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             cmp     r4, 0
-            beq     SHORT G_M40468_IG07
+            beq     SHORT G_M40468_IG04
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M40468_IG03:        ; bbWeight=0.47, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r0, [r4+0x04]
             cmp     r0, 0
-            beq     SHORT G_M40468_IG07
+            bne     SHORT G_M40468_IG06
                        ;; size=6 bbWeight=0.47 PerfScore 1.41
-G_M40468_IG04:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            ldr     r0, [r0]
-            and     r0, r0, 1
-            cmp     r0, 1
-            bne     SHORT G_M40468_IG13
-                       ;; size=18 bbWeight=0.50 PerfScore 3.00
-G_M40468_IG05:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            ldr     r5, [r0]
-            ; gcrRegs +[r5]
-            cmp     r5, 0
-            bne     SHORT G_M40468_IG10
-                       ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M40468_IG06:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r5]
-            b       SHORT G_M40468_IG09
-                       ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M40468_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M40468_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r4]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -65,8 +46,8 @@ G_M40468_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_NEWSFAST
             ; gcrRegs +[r0]
-            mov     r5, r0
-            ; gcrRegs +[r5]
+            mov     r4, r0
+            ; gcrRegs +[r4]
             movw    r0, 0xd1ff
             ; gcrRegs -[r0]
             movt    r0, 0xd1ff
@@ -81,35 +62,62 @@ G_M40468_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             adds    r1, r1, 4
             ; gcrRegs -[r1]
             ; byrRegs +[r1]
-            adds    r0, r5, 4
+            adds    r0, r4, 4
             ; byrRegs +[r0]
             movw    r12, 0xd1ff
             movt    r12, 0xd1ff
             blx     r12        // CORINFO_HELP_ASSIGN_BYREF
-            mov     r0, r5
+            mov     r0, r4
             ; gcrRegs +[r0]
             ; byrRegs -[r0]
                        ;; size=66 bbWeight=0.50 PerfScore 10.50
-G_M40468_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40468_IG09:        ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[r0 r5] +[r4]
+G_M40468_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M40468_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; gcrRegs -[r0]
             ; byrRegs -[r1]
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            ldr     r1, [r1]
+            and     r1, r1, 1
+            cmp     r1, 1
+            bne     SHORT G_M40468_IG12
+                       ;; size=18 bbWeight=0.50 PerfScore 3.00
+G_M40468_IG07:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+            movw    r1, 0xd1ff
+            movt    r1, 0xd1ff
+            ldr     r1, [r1]
+            ; gcrRegs +[r1]
+            cmp     r1, 0
+            bne     SHORT G_M40468_IG09
+                       ;; size=14 bbWeight=0.50 PerfScore 2.50
+G_M40468_IG08:        ; bbWeight=0.00, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r1]
             movs    r1, 0
             movs    r2, 0
-            b       SHORT G_M40468_IG11
-                       ;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M40468_IG10:        ; bbWeight=0.50, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs +[r5]
-            add     r1, r5, 8
+            mov     r0, r2
+            mov     r2, r1
+            ; byrRegs +[r2]
+            b       SHORT G_M40468_IG10
+                       ;; size=10 bbWeight=0.00 PerfScore 0.01
+G_M40468_IG09:        ; bbWeight=0.50, gcrefRegs=0012 {r1 r4}, byrefRegs=0000 {}, byref
+            ; gcrRegs +[r1]
+            ; byrRegs -[r2]
+            add     r2, r1, 8
+            ; byrRegs +[r2]
+            ldr     r1, [r1+0x04]
+            ; gcrRegs -[r1]
+            mov     r0, r1
+                       ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M40468_IG10:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0004 {r2}, byref
+            movs    r1, 1
+            str     r1, [sp]
+            mov     r1, r2
             ; byrRegs +[r1]
-            ldr     r2, [r5+0x04]
-                       ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M40468_IG11:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1}, byref
-            ; gcrRegs -[r5]
-            movs    r0, 1
-            str     r0, [sp]
+            mov     r2, r0
+            ; byrRegs -[r2]
             mov     r0, r4
             ; gcrRegs +[r0]
             mvn     r3, 0x80000000
@@ -119,11 +127,12 @@ G_M40468_IG11:        ; bbWeight=0.50, gcrefRegs=0010 {r4}, byrefRegs=0002 {r1},
             blx     lr     // <unknown method>
             ; gcrRegs -[r4]
             ; byrRegs -[r1]
-                       ;; size=24 bbWeight=0.50 PerfScore 4.00
-G_M40468_IG12:        ; bbWeight=0.50, epilog, nogc, extend
-            pop     {r2,r3,r4,r5,r11,pc}
-                       ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M40468_IG13:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
+                       ;; size=28 bbWeight=0.50 PerfScore 5.00
+G_M40468_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+            add     sp, 12
+            pop     {r4,r11,pc}
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M40468_IG12:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4]
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
@@ -131,10 +140,10 @@ G_M40468_IG13:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0010 {r4}, byr
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
-            b       SHORT G_M40468_IG05
+            b       SHORT G_M40468_IG07
                        ;; size=22 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 186, prolog size 8, PerfScore 28.41, instruction count 63, allocated bytes for code 186 (MethodHash=807561eb) for method Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1[System.String] (FullOpts)
+; Total bytes of code 200, prolog size 10, PerfScore 31.91, instruction count 70, allocated bytes for code 200 (MethodHash=807561eb) for method Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1[System.String] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -146,7 +155,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 93 (0x0005d) Actual length = 186 (0x0000ba)
+  Function Length   : 100 (0x00064) Actual length = 200 (0x0000c8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -158,7 +167,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 3C       pop {r2,r3,r4,r5,r11,lr}            ; opsize 32
-    FF          end
+    03          add sp, sp, #12                     ; opsize 16
+    A8 10       pop {r4,r11,lr}                     ; opsize 32
     FF          end
 

+6 (+8.57%) : 54247.dasm - Microsoft.CodeAnalysis.CSharp.PatternExplainer:g_makeConjunct|410(System.String,System.String):System.String (FullOpts)

@@ -13,7 +13,7 @@
 ;* V02 loc0         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
 ;* V03 loc1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
 ;* V04 loc2         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.String>
-;  V05 loc3         [V05,T02] (  4,  2.50)     ref  ->   r0         class-hnd <System.String>
+;  V05 loc3         [V05,T02] (  4,  2.50)     ref  ->  registers   class-hnd <System.String>
 ;# V06 OutArgs      [V06    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V07 tmp1         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
 ;* V08 tmp2         [V08,T03] (  0,  0   )     int  ->  zero-ref    "spilling unroll qmark"
@@ -29,44 +29,44 @@ G_M24419_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M24419_IG02:        ; bbWeight=1, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r0-r1]
             cmp     r0, 0
-            beq     SHORT G_M24419_IG06
+            beq     SHORT G_M24419_IG05
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M24419_IG03:        ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ldr     r2, [r0+0x04]
             cmp     r2, 1
-            bne     SHORT G_M24419_IG06
+            bne     SHORT G_M24419_IG05
                        ;; size=6 bbWeight=0.25 PerfScore 0.75
 G_M24419_IG04:        ; bbWeight=0.12, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ldrh    r2, [r0+0x08]
             cmp     r2, 95
-            bne     SHORT G_M24419_IG06
+            beq     SHORT G_M24419_IG08
                        ;; size=6 bbWeight=0.12 PerfScore 0.38
-G_M24419_IG05:        ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r0]
-            mov     r0, r1
-            ; gcrRegs +[r0]
-            b       SHORT G_M24419_IG11
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M24419_IG06:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG05:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             cmp     r1, 0
             beq     SHORT G_M24419_IG10
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M24419_IG07:        ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG06:        ; bbWeight=0.25, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ldr     r2, [r1+0x04]
             cmp     r2, 1
             bne     SHORT G_M24419_IG10
                        ;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M24419_IG08:        ; bbWeight=0.12, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
+G_M24419_IG07:        ; bbWeight=0.12, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
             ldrh    r2, [r1+0x08]
             cmp     r2, 95
-            bne     SHORT G_M24419_IG10
-                       ;; size=6 bbWeight=0.12 PerfScore 0.38
-G_M24419_IG09:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r1]
+            beq     SHORT G_M24419_IG09
+            b       SHORT G_M24419_IG10
+                       ;; size=8 bbWeight=0.12 PerfScore 0.50
+G_M24419_IG08:        ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r0]
             b       SHORT G_M24419_IG11
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M24419_IG10:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref
+G_M24419_IG09:        ; bbWeight=0.50, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r1] +[r0]
+            mov     r1, r0
             ; gcrRegs +[r1]
+            b       SHORT G_M24419_IG11
+                       ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M24419_IG10:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref
             mov     r2, r1
             ; gcrRegs +[r2]
             movw    r1, 0xd1ff
@@ -77,12 +77,19 @@ G_M24419_IG10:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}
             ldr     r3, [r3]
             blx     r3     // <unknown method>
             ; gcrRegs -[r2]
-                       ;; size=22 bbWeight=0.50 PerfScore 3.50
-G_M24419_IG11:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+            mov     r1, r0
+            ; gcrRegs +[r1]
+                       ;; size=24 bbWeight=0.50 PerfScore 4.00
+G_M24419_IG11:        ; bbWeight=1, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r0]
+            mov     r0, r1
+            ; gcrRegs +[r0]
+                       ;; size=2 bbWeight=1 PerfScore 1.00
+G_M24419_IG12:        ; bbWeight=1, epilog, nogc, extend
             pop     {r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 70, prolog size 6, PerfScore 13.25, instruction count 29, allocated bytes for code 70 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
+; Total bytes of code 76, prolog size 6, PerfScore 14.88, instruction count 32, allocated bytes for code 76 (MethodHash=b70da09c) for method Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -94,7 +101,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 35 (0x00023) Actual length = 70 (0x000046)
+  Function Length   : 38 (0x00026) Actual length = 76 (0x00004c)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

+46 (+9.62%) : 267825.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)

@@ -9,13 +9,13 @@
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] ( 12, 11   )  struct (52) [sp+0xC0]  do-not-enreg[SF] ld-addr-op single-def <System.Security.Cryptography.ECCurve>
-;  V01 loc0         [V01,T06] (  4,  3   )     ref  ->   r2         class-hnd <<unknown class>>
-;  V02 loc1         [V02,T03] (  6,  4   )     ref  ->  [sp+0x74]  class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
+;  V01 loc0         [V01,T06] (  4,  3   )     ref  ->   r7         class-hnd <<unknown class>>
+;  V02 loc1         [V02,T03] (  6,  4   )     ref  ->  [sp+0x78]  class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
 ;  V03 loc2         [V03,T24] (  2,  0   )     ref  ->   r5         class-hnd single-def <<unknown class>>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (76) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T22] (  3,  0   )     ref  ->   r4         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-;  V06 tmp2         [V06,T25] (  2,  0   )     ref  ->   r5         class-hnd exact single-def "impImportAndPushBox" <<unknown class>>
-;  V07 tmp3         [V07,T23] (  3,  0   )     ref  ->   r6         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V05 tmp1         [V05,T22] (  3,  0   )     ref  ->   r5         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+;  V06 tmp2         [V06,T25] (  2,  0   )     ref  ->   r6         class-hnd exact single-def "impImportAndPushBox" <<unknown class>>
+;  V07 tmp3         [V07,T23] (  3,  0   )     ref  ->   r4         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V08 tmp4         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V10 tmp6         [V10    ] (  0,  0   )     int  ->  zero-ref   
@@ -24,7 +24,7 @@
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp10        [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp11        [V15    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V16 tmp12        [V16,T14] (  2,  2   )     int  ->   r0        
+;  V16 tmp12        [V16,T14] (  2,  2   )     int  ->   r8        
 ;* V17 tmp13        [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V18 tmp14        [V18,T15] (  2,  2   )     int  ->  [sp+0x94]  spill-single-def
 ;* V19 tmp15        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -64,15 +64,15 @@
 ;* V53 tmp49        [V53,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V54 tmp50        [V54,T04] (  2,  4   )     ref  ->   r0         single-def "Single return block return value"
 ;  V55 FramesRoot   [V55,T01] (  5,  5   )     int  ->   r5         "Pinvoke FrameListRoot"
-;  V56 PInvokeFrame [V56    ] (  6,  6   )  struct (36) [sp+0x50]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V57 tmp53        [V57,T07] (  3,  3   )     ref  ->   r4         single-def "V00.[000..004)"
-;  V58 tmp54        [V58,T08] (  3,  3   )     ref  ->   r6         single-def "V00.[004..008)"
-;  V59 tmp55        [V59,T09] (  3,  3   )     ref  ->   r7         single-def "V00.[008..012)"
-;  V60 tmp56        [V60,T10] (  3,  3   )     ref  ->   r8         single-def "V00.[012..016)"
-;  V61 tmp57        [V61,T05] (  4,  3.50)     ref  ->   r9         single-def "V00.[016..020)"
-;  V62 tmp58        [V62,T02] (  7,  4.50)     int  ->  [sp+0x78]  spill-single-def "V00.[032..036)"
+;  V56 PInvokeFrame [V56    ] (  6,  6   )  struct (36) [sp+0x54]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V57 tmp53        [V57,T07] (  3,  3   )     ref  ->   r0         single-def "V00.[000..004)"
+;  V58 tmp54        [V58,T08] (  3,  3   )     ref  ->   r1         single-def "V00.[004..008)"
+;  V59 tmp55        [V59,T09] (  3,  3   )     ref  ->   r2         single-def "V00.[008..012)"
+;  V60 tmp56        [V60,T10] (  3,  3   )     ref  ->   r3         single-def "V00.[012..016)"
+;  V61 tmp57        [V61,T05] (  4,  3.50)     ref  ->   lr         single-def "V00.[016..020)"
+;  V62 tmp58        [V62,T02] (  7,  4.50)     int  ->   r4         "V00.[032..036)"
 ;  V63 tmp59        [V63,T11] (  3,  3   )     ref  ->  r12         single-def "V00.[036..040)"
-;  V64 tmp60        [V64,T12] (  3,  3   )     ref  ->   r3         single-def "V00.[040..044)"
+;  V64 tmp60        [V64,T12] (  3,  3   )     ref  ->   r6         single-def "V00.[040..044)"
 ;  V65 tmp61        [V65,T26] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
 ;  V66 tmp62        [V66,T27] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
 ;
@@ -85,120 +85,121 @@ G_M7764_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             add     r11, sp, 184
                        ;; size=12 bbWeight=1 PerfScore 4.00
 G_M7764_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            add     r4, sp, 84
+            add     r4, sp, 88
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_INIT_PINVOKE_FRAME
-            ldr     r4, [sp+0xC0]
-            ; gcrRegs +[r4]
-            ldr     r6, [sp+0xC4]
-            ; gcrRegs +[r6]
-            ldr     r7, [sp+0xC8]
-            ; gcrRegs +[r7]
-            ldr     r8, [sp+0xCC]
-            ; gcrRegs +[r8]
-            ldr     r9, [sp+0xD0]
-            ; gcrRegs +[r9]
-            ldr     lr, [sp+0xE0]
-            str     lr, [sp+0x78]
+            ldr     r0, [sp+0xC0]
+            ; gcrRegs +[r0]
+            ldr     r1, [sp+0xC4]
+            ; gcrRegs +[r1]
+            ldr     r2, [sp+0xC8]
+            ; gcrRegs +[r2]
+            ldr     r3, [sp+0xCC]
+            ; gcrRegs +[r3]
+            ldr     lr, [sp+0xD0]
+            ; gcrRegs +[lr]
+            ldr     r4, [sp+0xE0]
             ldr     r12, [sp+0xE4]
             ; gcrRegs +[r12]
-            ldr     r3, [sp+0xE8]
-            ; gcrRegs +[r3]
-            cmp     lr, 1
+            ldr     r6, [sp+0xE8]
+            ; gcrRegs +[r6]
+            cmp     r4, 1
             beq     SHORT G_M7764_IG04
-                       ;; size=46 bbWeight=1 PerfScore 15.00
-G_M7764_IG03:        ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            cmp     lr, 3
+                       ;; size=36 bbWeight=1 PerfScore 14.00
+G_M7764_IG03:        ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+            cmp     r4, 3
             beq     SHORT G_M7764_IG04
-            cmp     lr, 2
-            beq     SHORT G_M7764_IG04
-            cmp     lr, 4
-            bne     SHORT G_M7764_IG18
-            b       SHORT G_M7764_IG05
-                       ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M7764_IG04:        ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            ldr     r2, [sp+0xD8]
-            ; gcrRegs +[r2]
+            cmp     r4, 2
+            bne     SHORT G_M7764_IG05
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M7764_IG04:        ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r7, [sp+0xD8]
+            ; gcrRegs +[r7]
             b       SHORT G_M7764_IG06
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG05:        ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r2]
-            ldr     r2, [sp+0xD4]
-            ; gcrRegs +[r2]
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M7764_IG06:        ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r2+0x04]
-            ldr     r1, [r4+0x04]
-            str     r1, [sp+0x94]  // [V18 tmp14]
-            ldr     r1, [r6+0x04]
-            str     r1, [sp+0x90]  // [V20 tmp16]
-            ldr     r1, [r12+0x04]
-            str     r1, [sp+0x8C]  // [V22 tmp18]
-            ldr     r1, [r3+0x04]
-            str     r1, [sp+0x88]  // [V24 tmp20]
-            ldr     r1, [r7+0x04]
-            str     r1, [sp+0x84]  // [V26 tmp22]
-            ldr     r1, [r8+0x04]
-            str     r1, [sp+0x80]  // [V28 tmp24]
-            cmp     r9, 0
-            beq     SHORT G_M7764_IG08
-                       ;; size=36 bbWeight=1 PerfScore 15.00
-G_M7764_IG07:        ; bbWeight=0.50, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r9+0x04]
-            str     r1, [sp+0x7C]  // [V52 tmp48]
-            b       SHORT G_M7764_IG09
+G_M7764_IG05:        ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r7]
+            cmp     r4, 4
+            bne     G_M7764_IG18
+            ldr     r7, [sp+0xD4]
+            ; gcrRegs +[r7]
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M7764_IG08:        ; bbWeight=0.50, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
-            movs    r1, 0
-            str     r1, [sp+0x7C]  // [V52 tmp48]
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG09:        ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
-            movs    r1, 0
-            str     r1, [sp]   // [V04 OutArgs]
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M7764_IG10:        ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
-            str     r1, [sp+0x04]  // [V04 OutArgs+0x04]
-                       ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7764_IG11:        ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            str     r1, [sp+0x08]  // [V04 OutArgs+0x08]
-            str     r2, [sp+0x0C]  // [V04 OutArgs+0x0c]
-            str     r0, [sp+0x10]  // [V04 OutArgs+0x10]
-            str     r4, [sp+0x14]  // [V04 OutArgs+0x14]
-            ldr     r1, [sp+0x94]  // [V18 tmp14]
-            str     r1, [sp+0x18]  // [V04 OutArgs+0x18]
-            str     r6, [sp+0x1C]  // [V04 OutArgs+0x1c]
-            ldr     r1, [sp+0x90]  // [V20 tmp16]
-            str     r1, [sp+0x20]  // [V04 OutArgs+0x20]
+G_M7764_IG06:        ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r8, [r7+0x04]
+            ldr     r9, [r0+0x04]
+            str     r9, [sp+0x94]  // [V18 tmp14]
+            ldr     r9, [r1+0x04]
+            str     r9, [sp+0x90]  // [V20 tmp16]
+            ldr     r9, [r12+0x04]
+            str     r9, [sp+0x8C]  // [V22 tmp18]
+            ldr     r9, [r6+0x04]
+            str     r9, [sp+0x88]  // [V24 tmp20]
+            ldr     r9, [r2+0x04]
+            str     r9, [sp+0x84]  // [V26 tmp22]
+            ldr     r9, [r3+0x04]
+            str     r9, [sp+0x80]  // [V28 tmp24]
+            cmp     lr, 0
+            beq     SHORT G_M7764_IG08
+                       ;; size=58 bbWeight=1 PerfScore 15.00
+G_M7764_IG07:        ; bbWeight=0.50, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r9, [lr+0x04]
+            str     r9, [sp+0x7C]  // [V52 tmp48]
+            b       SHORT G_M7764_IG09
+                       ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M7764_IG08:        ; bbWeight=0.50, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+            mov     r9, 0
+            str     r9, [sp+0x7C]  // [V52 tmp48]
+                       ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M7764_IG09:        ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+            mov     r9, 0
+            str     r9, [sp]   // [V04 OutArgs]
+                       ;; size=8 bbWeight=1 PerfScore 2.00
+G_M7764_IG10:        ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+            str     r9, [sp+0x04]  // [V04 OutArgs+0x04]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M7764_IG11:        ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+            str     r9, [sp+0x08]  // [V04 OutArgs+0x08]
+            str     r7, [sp+0x0C]  // [V04 OutArgs+0x0c]
+            str     r8, [sp+0x10]  // [V04 OutArgs+0x10]
+            str     r0, [sp+0x14]  // [V04 OutArgs+0x14]
+            ldr     r9, [sp+0x94]  // [V18 tmp14]
+            str     r9, [sp+0x18]  // [V04 OutArgs+0x18]
+            str     r1, [sp+0x1C]  // [V04 OutArgs+0x1c]
+            ldr     r9, [sp+0x90]  // [V20 tmp16]
+            str     r9, [sp+0x20]  // [V04 OutArgs+0x20]
             str     r12, [sp+0x24] // [V04 OutArgs+0x24]
-            ldr     r1, [sp+0x8C]  // [V22 tmp18]
-            str     r1, [sp+0x28]  // [V04 OutArgs+0x28]
-            str     r3, [sp+0x2C]  // [V04 OutArgs+0x2c]
-            ldr     r1, [sp+0x88]  // [V24 tmp20]
-            str     r1, [sp+0x30]  // [V04 OutArgs+0x30]
-            str     r7, [sp+0x34]  // [V04 OutArgs+0x34]
-            ldr     r1, [sp+0x84]  // [V26 tmp22]
-            str     r1, [sp+0x38]  // [V04 OutArgs+0x38]
-            str     r8, [sp+0x3C]  // [V04 OutArgs+0x3c]
-            ldr     r1, [sp+0x80]  // [V28 tmp24]
-            str     r1, [sp+0x40]  // [V04 OutArgs+0x40]
-            str     r9, [sp+0x44]  // [V04 OutArgs+0x44]
-            ldr     r1, [sp+0x7C]  // [V52 tmp48]
-            str     r1, [sp+0x48]  // [V04 OutArgs+0x48]
-            mov     r0, lr
+            ldr     r9, [sp+0x8C]  // [V22 tmp18]
+            str     r9, [sp+0x28]  // [V04 OutArgs+0x28]
+            str     r6, [sp+0x2C]  // [V04 OutArgs+0x2c]
+            ldr     r9, [sp+0x88]  // [V24 tmp20]
+            str     r9, [sp+0x30]  // [V04 OutArgs+0x30]
+            str     r2, [sp+0x34]  // [V04 OutArgs+0x34]
+            ldr     r9, [sp+0x84]  // [V26 tmp22]
+            str     r9, [sp+0x38]  // [V04 OutArgs+0x38]
+            str     r3, [sp+0x3C]  // [V04 OutArgs+0x3c]
+            ldr     r9, [sp+0x80]  // [V28 tmp24]
+            str     r9, [sp+0x40]  // [V04 OutArgs+0x40]
+            str     lr, [sp+0x44]  // [V04 OutArgs+0x44]
+            ldr     r9, [sp+0x7C]  // [V52 tmp48]
+            str     r9, [sp+0x48]  // [V04 OutArgs+0x48]
+            mov     r0, r4
+            ; gcrRegs -[r0]
             movs    r1, 0
+            ; gcrRegs -[r1]
             movs    r2, 0
             ; gcrRegs -[r2]
...

libraries_tests.run.linux.arm.Release.mch

-32 (-16.49%) : 290667.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)

@@ -11,12 +11,12 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->   r4         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T02] (  5,  4   )     ref  ->   r6         class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent>
-;  V03 arg3         [V03,T01] (  7,  4.25)     ref  ->   r5         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T01] (  6,  4   )     ref  ->   r5         class-hnd single-def <System.Object>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1         [V05,T11] (  0,  0   )     int  ->  zero-ref   
+;* V05 tmp1         [V05,T10] (  0,  0   )     int  ->  zero-ref   
 ;  V06 tmp2         [V06,T04] (  3,  2.50)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V07 tmp3         [V07,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4         [V08,T12] (  0,  0   )     int  ->  zero-ref   
+;* V07 tmp3         [V07,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4         [V08,T11] (  0,  0   )     int  ->  zero-ref   
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;  V10 tmp6         [V10,T03] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -25,15 +25,14 @@
 ;* V14 tmp10        [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Nullable`1[int]>
 ;* V15 tmp11        [V15    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V16 tmp12        [V16    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;  V17 tmp13        [V17,T09] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
+;  V17 tmp13        [V17,T08] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
 ;  V18 tmp14        [V18,T05] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
 ;* V19 tmp15        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V09.hasValue (fldOffset=0x0)" P-INDEP
-;  V20 tmp16        [V20,T10] (  2,  1   )     int  ->   r0         single-def "field V09.value (fldOffset=0x4)" P-INDEP
+;  V20 tmp16        [V20,T09] (  2,  1   )     int  ->   r0         single-def "field V09.value (fldOffset=0x4)" P-INDEP
 ;* V21 tmp17        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V13.hasValue (fldOffset=0x0)" P-INDEP
 ;* V22 tmp18        [V22    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13.value (fldOffset=0x4)" P-INDEP
 ;* V23 tmp19        [V23    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V14.hasValue (fldOffset=0x0)" P-INDEP
 ;* V24 tmp20        [V24    ] (  0,  0   )     int  ->  zero-ref    single-def "field V14.value (fldOffset=0x4)" P-INDEP
-;  V25 cse0         [V25,T07] (  3,  1.50)     int  ->   r1         "CSE - moderate"
 ;
 ; Lcl frame size = 4
 
@@ -49,49 +48,33 @@ G_M10879_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=14 bbWeight=1 PerfScore 5.00
 G_M10879_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r6, 0
-            beq     SHORT G_M10879_IG09
+            beq     SHORT G_M10879_IG07
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M10879_IG03:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r6]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M10879_IG09
-            cmp     r5, 0
-            beq     SHORT G_M10879_IG09
-            ldr     r1, [r5]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M10879_IG09
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            beq     SHORT G_M10879_IG05
-                       ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M10879_IG04:        ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r4 r6]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
+            ldr     r0, [r6]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-                       ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M10879_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, r3
+            bne     SHORT G_M10879_IG07
+            cmp     r5, 0
+            beq     SHORT G_M10879_IG07
+            ldr     r0, [r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            cmp     r0, r3
+            bne     SHORT G_M10879_IG07
             ldr     r0, [r5+0x04]
             cmp     r0, 1
-            bne     SHORT G_M10879_IG06
+            bne     SHORT G_M10879_IG04
             movs    r4, 0
-            b       SHORT G_M10879_IG07
-                       ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M10879_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r5]
+            ; gcrRegs -[r4]
+            b       SHORT G_M10879_IG05
+                       ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M10879_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5-r6]
             movs    r4, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10879_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
@@ -100,29 +83,29 @@ G_M10879_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ; gcrRegs +[r0]
             str     r4, [r0+0x04]
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M10879_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10879_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4-r6]
             ldrb    r0, [r4+0x08]
             movs    r1, 0
             strb    r1, [r4+0x08]
             cmp     r0, 0
-            beq     SHORT G_M10879_IG11
+            beq     SHORT G_M10879_IG09
             movs    r0, 0
                        ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M10879_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10879_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [r4]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M10879_IG13
+            beq     SHORT G_M10879_IG11
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M10879_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M10879_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r1
             mov     r1, r4
             ; gcrRegs +[r1]
@@ -131,7 +114,7 @@ G_M10879_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             blx     r3     // CORINFO_HELP_CHKCASTCLASS_SPECIAL
             ; gcrRegs -[r1] +[r0]
                        ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M10879_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M10879_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
@@ -150,11 +133,11 @@ G_M10879_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             blx     lr     // <unknown method>
             ; gcrRegs -[r1-r6]
                        ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M10879_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG12:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 194, prolog size 8, PerfScore 35.25, instruction count 69, allocated bytes for code 194 (MethodHash=cf9bd580) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 162, prolog size 8, PerfScore 31.75, instruction count 59, allocated bytes for code 162 (MethodHash=cf9bd580) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -166,7 +149,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 97 (0x00061) Actual length = 194 (0x0000c2)
+  Function Length   : 81 (0x00051) Actual length = 162 (0x0000a2)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-16.33%) : 293543.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)

@@ -11,18 +11,17 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->   r4         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T02] (  5,  4   )     ref  ->   r6         class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent>
-;  V03 arg3         [V03,T01] (  7,  4.25)     ref  ->   r5         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T01] (  6,  4   )     ref  ->   r5         class-hnd single-def <System.Object>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1         [V05,T11] (  0,  0   )     int  ->  zero-ref   
+;* V05 tmp1         [V05,T10] (  0,  0   )     int  ->  zero-ref   
 ;  V06 tmp2         [V06,T04] (  3,  2.50)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V07 tmp3         [V07,T09] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4         [V08,T12] (  0,  0   )     int  ->  zero-ref   
+;* V07 tmp3         [V07,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4         [V08,T11] (  0,  0   )     int  ->  zero-ref   
 ;  V09 tmp5         [V09,T03] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
 ;  V10 tmp6         [V10,T07] (  3,  1.50)     int  ->   r4         "Inline return value spill temp"
 ;  V11 tmp7         [V11,T05] (  2,  2   )     int  ->   r0         "Inlining Arg"
-;  V12 tmp8         [V12,T10] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
+;  V12 tmp8         [V12,T09] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
 ;  V13 tmp9         [V13,T06] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V14 cse0         [V14,T08] (  3,  1.50)     int  ->   r1         "CSE - moderate"
 ;
 ; Lcl frame size = 4
 
@@ -38,50 +37,33 @@ G_M35982_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=14 bbWeight=1 PerfScore 5.00
 G_M35982_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r6, 0
-            beq     SHORT G_M35982_IG09
+            beq     SHORT G_M35982_IG07
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M35982_IG03:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r6]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M35982_IG09
-            cmp     r5, 0
-            beq     SHORT G_M35982_IG09
-            ldr     r1, [r5]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M35982_IG09
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            beq     SHORT G_M35982_IG05
-                       ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M35982_IG04:        ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r4 r6]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
+            ldr     r0, [r6]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-            ; gcr arg pop 0
-                       ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M35982_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, r3
+            bne     SHORT G_M35982_IG07
+            cmp     r5, 0
+            beq     SHORT G_M35982_IG07
+            ldr     r0, [r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            cmp     r0, r3
+            bne     SHORT G_M35982_IG07
             ldr     r0, [r5+0x04]
             cmp     r0, 2
-            bne     SHORT G_M35982_IG06
+            bne     SHORT G_M35982_IG04
             movs    r4, 0
-            b       SHORT G_M35982_IG07
-                       ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M35982_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r5]
+            ; gcrRegs -[r4]
+            b       SHORT G_M35982_IG05
+                       ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M35982_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5-r6]
             movs    r4, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35982_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
@@ -91,29 +73,29 @@ G_M35982_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ; gcr arg pop 0
             str     r4, [r0+0x04]
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M35982_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35982_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4-r6]
             ldrb    r0, [r4+0x08]
             movs    r1, 0
             strb    r1, [r4+0x08]
             cmp     r0, 0
-            beq     SHORT G_M35982_IG11
+            beq     SHORT G_M35982_IG09
             movs    r0, 0
                        ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M35982_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35982_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [r4]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M35982_IG13
+            beq     SHORT G_M35982_IG11
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M35982_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M35982_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r1
             mov     r1, r4
             ; gcrRegs +[r1]
@@ -123,7 +105,7 @@ G_M35982_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
                        ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M35982_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M35982_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
@@ -139,14 +121,14 @@ G_M35982_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs +[r0]
             ldr     r12, [lr+0x0C]
                        ;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M35982_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG12:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 4
             pop     {r4,r5,r6,r11,lr}
             bx      r12        // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 196, prolog size 14, PerfScore 35.75, instruction count 70, allocated bytes for code 196 (MethodHash=28fa7371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 164, prolog size 14, PerfScore 32.25, instruction count 60, allocated bytes for code 164 (MethodHash=28fa7371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -158,7 +140,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 98 (0x00062) Actual length = 196 (0x0000c4)
+  Function Length   : 82 (0x00052) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-16.33%) : 297072.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)

@@ -11,18 +11,17 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->   r4         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T02] (  5,  4   )     ref  ->   r6         class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent>
-;  V03 arg3         [V03,T01] (  7,  4.25)     ref  ->   r5         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T01] (  6,  4   )     ref  ->   r5         class-hnd single-def <System.Object>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1         [V05,T11] (  0,  0   )     int  ->  zero-ref   
+;* V05 tmp1         [V05,T10] (  0,  0   )     int  ->  zero-ref   
 ;  V06 tmp2         [V06,T04] (  3,  2.50)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V07 tmp3         [V07,T09] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4         [V08,T12] (  0,  0   )     int  ->  zero-ref   
+;* V07 tmp3         [V07,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4         [V08,T11] (  0,  0   )     int  ->  zero-ref   
 ;  V09 tmp5         [V09,T03] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
 ;  V10 tmp6         [V10,T07] (  3,  1.50)     int  ->   r4         "Inline return value spill temp"
 ;  V11 tmp7         [V11,T05] (  2,  2   )     int  ->   r0         "Inlining Arg"
-;  V12 tmp8         [V12,T10] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
+;  V12 tmp8         [V12,T09] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
 ;  V13 tmp9         [V13,T06] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V14 cse0         [V14,T08] (  3,  1.50)     int  ->   r1         "CSE - moderate"
 ;
 ; Lcl frame size = 4
 
@@ -38,50 +37,33 @@ G_M51272_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=14 bbWeight=1 PerfScore 5.00
 G_M51272_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r6, 0
-            beq     SHORT G_M51272_IG09
+            beq     SHORT G_M51272_IG07
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M51272_IG03:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r6]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M51272_IG09
-            cmp     r5, 0
-            beq     SHORT G_M51272_IG09
-            ldr     r1, [r5]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M51272_IG09
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            beq     SHORT G_M51272_IG05
-                       ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M51272_IG04:        ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r4 r6]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
+            ldr     r0, [r6]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-            ; gcr arg pop 0
-                       ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M51272_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, r3
+            bne     SHORT G_M51272_IG07
+            cmp     r5, 0
+            beq     SHORT G_M51272_IG07
+            ldr     r0, [r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            cmp     r0, r3
+            bne     SHORT G_M51272_IG07
             ldr     r0, [r5+0x04]
             cmp     r0, 1
-            bne     SHORT G_M51272_IG06
+            bne     SHORT G_M51272_IG04
             movs    r4, 0
-            b       SHORT G_M51272_IG07
-                       ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M51272_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r5]
+            ; gcrRegs -[r4]
+            b       SHORT G_M51272_IG05
+                       ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M51272_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5-r6]
             movs    r4, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51272_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
@@ -91,29 +73,29 @@ G_M51272_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ; gcr arg pop 0
             str     r4, [r0+0x04]
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M51272_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51272_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4-r6]
             ldrb    r0, [r4+0x08]
             movs    r1, 0
             strb    r1, [r4+0x08]
             cmp     r0, 0
-            beq     SHORT G_M51272_IG11
+            beq     SHORT G_M51272_IG09
             movs    r0, 0
                        ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M51272_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51272_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [r4]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M51272_IG13
+            beq     SHORT G_M51272_IG11
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M51272_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M51272_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r1
             mov     r1, r4
             ; gcrRegs +[r1]
@@ -123,7 +105,7 @@ G_M51272_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
                        ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M51272_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M51272_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
@@ -139,14 +121,14 @@ G_M51272_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs +[r0]
             ldr     r12, [lr+0x0C]
                        ;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M51272_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG12:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 4
             pop     {r4,r5,r6,r11,lr}
             bx      r12        // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 196, prolog size 14, PerfScore 35.75, instruction count 70, allocated bytes for code 196 (MethodHash=814537b7) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 164, prolog size 14, PerfScore 32.25, instruction count 60, allocated bytes for code 164 (MethodHash=814537b7) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -158,7 +140,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 98 (0x00062) Actual length = 196 (0x0000c4)
+  Function Length   : 82 (0x00052) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+8.16%) : 185560.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)

@@ -9,10 +9,10 @@
 ; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  7,  5   )   byref  ->   r4         this single-def
+;  V00 this         [V00,T01] (  9,  5   )   byref  ->   r4         this single-def
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T03] (  3,  6   )     int  ->   r0         "Span.get_Item index"
-;  V03 tmp2         [V03,T02] (  3,  6   )   byref  ->   r3         "Span.get_Item ptrToSpan"
+;  V02 tmp1         [V02,T03] (  3,  6   )     int  ->   r5         "Span.get_Item index"
+;  V03 tmp2         [V03,T02] (  3,  6   )   byref  ->   r0         "Span.get_Item ptrToSpan"
 ;  V04 tmp3         [V04,T06] (  2,  2   )   ubyte  ->   r0         "Inline return value spill temp"
 ;  V05 tmp4         [V05,T00] (  4,  8   )  ushort  ->   r0         "Inlining Arg"
 ;* V06 tmp5         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -34,59 +34,65 @@
 ;* V22 tmp21        [V22    ] (  0,  0   )     int  ->  zero-ref    "field V10._length (fldOffset=0x4)" P-INDEP
 ;  V23 tmp22        [V23,T05] (  2,  2   )   byref  ->   r3         "field V12._reference (fldOffset=0x0)" P-INDEP
 ;* V24 tmp23        [V24    ] (  0,  0   )     int  ->  zero-ref    "field V12._length (fldOffset=0x4)" P-INDEP
-;  V25 cse0         [V25,T04] (  3,  3   )     int  ->   r0         "CSE - aggressive"
+;  V25 cse0         [V25,T04] (  5,  3   )     int  ->   r5         "CSE - aggressive"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M7781_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r3,r4,r11,lr}
+            push    {r4,r5,r11,lr}
             add     r11, sp, 8
             mov     r4, r0
             ; byrRegs +[r4]
                        ;; size=10 bbWeight=1 PerfScore 3.00
 G_M7781_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
-            ldr     r0, [r4+0x10]
-            ldr     r3, [r4+0x24]
-            cmp     r0, r3
-            bge     SHORT G_M7781_IG05
-            add     r3, r4, 32
-            ; byrRegs +[r3]
-            ldr     r2, [r3+0x04]
-            cmp     r0, r2
-            bhs     SHORT G_M7781_IG06
-            ldr     r3, [r3]
-            lsls    r0, r0, 1
-            ldrh    r0, [r3+r0]
+            ldr     r5, [r4+0x10]
+            ldr     r0, [r4+0x24]
+            cmp     r5, r0
+            bge     SHORT G_M7781_IG06
+                       ;; size=8 bbWeight=1 PerfScore 4.00
+G_M7781_IG03:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+            add     r0, r4, 32
+            ; byrRegs +[r0]
+            ldr     r3, [r0+0x04]
+            cmp     r5, r3
+            bhs     SHORT G_M7781_IG07
+            ldr     r0, [r0]
+            lsls    r3, r5, 1
+            ldrh    r0, [r0+r3]
+            ; byrRegs -[r0]
             cmp     r0, 256
             blo     SHORT G_M7781_IG04
             movw    r3, 0xd1ff
-            ; byrRegs -[r3]
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
             ; gcr arg pop 0
             cmp     r0, 0
-            beq     SHORT G_M7781_IG05
-                       ;; size=46 bbWeight=1 PerfScore 19.00
-G_M7781_IG03:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
-            ldr     r3, [r4+0x10]
-            adds    r3, r3, 1
-            str     r3, [r4+0x10]
-            b       SHORT G_M7781_IG02
-                       ;; size=8 bbWeight=0 PerfScore 0.00
+            bne     SHORT G_M7781_IG05
+            b       SHORT G_M7781_IG06
+                       ;; size=40 bbWeight=1 PerfScore 16.00
 G_M7781_IG04:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldrb    r0, [r3+r0]
             ands    r0, r0, 128
             cmp     r0, 0
-            bne     SHORT G_M7781_IG03
+            beq     SHORT G_M7781_IG06
                        ;; size=18 bbWeight=1 PerfScore 6.00
-G_M7781_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M7781_IG05:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0010 {r4}, byref, isz
+            ldr     r3, [r4+0x10]
+            adds    r3, r3, 1
+            str     r3, [r4+0x10]
+            ldr     r5, [r4+0x10]
+            ldr     r3, [r4+0x24]
+            cmp     r5, r3
+            blt     SHORT G_M7781_IG03
+                       ;; size=14 bbWeight=0 PerfScore 0.00
+G_M7781_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; byrRegs -[r4]
-            pop     {r3,r4,r11,pc}
+            pop     {r4,r5,r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
-G_M7781_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M7781_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_RNGCHKFAIL
@@ -94,7 +100,7 @@ G_M7781_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefR
             bkpt    
                        ;; size=12 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 98, prolog size 10, PerfScore 29.00, instruction count 37, allocated bytes for code 98 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 106, prolog size 10, PerfScore 30.00, instruction count 41, allocated bytes for code 106 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -106,7 +112,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 49 (0x00031) Actual length = 98 (0x000062)
+  Function Length   : 53 (0x00035) Actual length = 106 (0x00006a)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -114,7 +120,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 18       pop {r3,r4,r11,lr}                  ; opsize 32
+    A8 30       pop {r4,r5,r11,lr}                  ; opsize 32
     FF          end
     FF          end
 

+8 (+12.50%) : 432035.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)

@@ -11,11 +11,11 @@
 ;  V00 this         [V00,T02] (  3,  2.50)     ref  ->   r0         this class-hnd single-def <System.Xml.Serialization.XmlSerializationWriter>
 ;  V01 arg1         [V01,T03] (  3,  2.50)     ref  ->   r1         class-hnd single-def <System.String>
 ;  V02 arg2         [V02,T04] (  3,  2.50)     ref  ->   r2         class-hnd single-def <System.String>
-;  V03 arg3         [V03,T00] (  5,  4   )     ref  ->   r4         class-hnd single-def <System.String>
+;  V03 arg3         [V03,T00] (  5,  3.95)     ref  ->   r4         class-hnd single-def <System.String>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <System.String>
 ;* V06 tmp2         [V06    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V07 tmp3         [V07,T01] (  5,  4.91)     ref  ->   r5         class-hnd single-def "Inlining Arg" <System.Xml.XmlWriter>
+;  V07 tmp3         [V07,T01] (  6,  5.71)     ref  ->   r5         class-hnd single-def "Inlining Arg" <System.Xml.XmlWriter>
 ;* V08 tmp4         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Xml.XmlWriter>
 ;* V10 tmp6         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
@@ -24,13 +24,12 @@
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
 ;* V15 tmp11        [V15    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V16 cse0         [V16,T06] (  3,  1.46)     int  ->   r7         "CSE - moderate"
-;  V17 cse1         [V17,T05] (  3,  1.50)     int  ->   r6         "CSE - moderate"
+;  V16 cse0         [V16,T05] (  3,  1.46)     int  ->   r6         "CSE - moderate"
 ;
-; Lcl frame size = 0
+; Lcl frame size = 4
 
 G_M11953_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
-            push    {r4,r5,r6,r7,r11,lr}
+            push    {r3,r4,r5,r6,r11,lr}
             add     r11, sp, 16
             mov     r4, r3
             ; gcrRegs +[r4]
@@ -38,7 +37,7 @@ G_M11953_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byref
 G_M11953_IG02:        ; bbWeight=1, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r0-r2]
             cmp     r4, 0
-            beq     SHORT G_M11953_IG06
+            beq     SHORT G_M11953_IG07
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M11953_IG03:        ; bbWeight=0.50, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0000 {}, byref, isz
             ldr     r5, [r0+0x04]
@@ -49,62 +48,70 @@ G_M11953_IG03:        ; bbWeight=0.50, gcrefRegs=0017 {r0 r1 r2 r4}, byrefRegs=0
             mov     r2, r1
             movs    r1, 0
             ; gcrRegs -[r1]
-            ldr     r6, [r5]
-            ldr     r7, [r6+0x30]
-            ldr     lr, [r7+0x04]
+            ldr     lr, [r5]
+            ldr     r6, [lr+0x30]
+            ldr     lr, [r6+0x04]
             blx     lr     // <unknown method>
             ; gcrRegs -[r0 r2-r3]
             ldr     r0, [r4+0x04]
             cmp     r0, 0
-            beq     SHORT G_M11953_IG04
+            beq     SHORT G_M11953_IG05
+                       ;; size=30 bbWeight=0.50 PerfScore 6.00
+G_M11953_IG04:        ; bbWeight=0.45, gcrefRegs=0030 {r4 r5}, byrefRegs=0000 {}, byref
             mov     r0, r5
             ; gcrRegs +[r0]
             mov     r1, r4
             ; gcrRegs +[r1]
-            ldr     r3, [r6+0x34]
+            ldr     r3, [r5]
+            ldr     r3, [r3+0x34]
             ldr     r3, [r3+0x10]
             blx     r3     // <unknown method>
             ; gcrRegs -[r0-r1 r4]
-                       ;; size=36 bbWeight=0.50 PerfScore 8.50
-G_M11953_IG04:        ; bbWeight=0.46, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
+                       ;; size=12 bbWeight=0.45 PerfScore 2.69
+G_M11953_IG05:        ; bbWeight=0.46, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
             mov     r0, r5
             ; gcrRegs +[r0]
-            ldr     r3, [r7+0x08]
+            ldr     r3, [r6+0x08]
                        ;; size=4 bbWeight=0.46 PerfScore 0.91
-G_M11953_IG05:        ; bbWeight=0.46, epilog, nogc, extend
-            pop     {r4,r5,r6,r7,r11,lr}
+G_M11953_IG06:        ; bbWeight=0.46, epilog, nogc, extend
+            add     sp, 4
+            pop     {r4,r5,r6,r11,lr}
             bx      r3     // <unknown method>
-                       ;; size=6 bbWeight=0.46 PerfScore 0.91
-G_M11953_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+                       ;; size=8 bbWeight=0.46 PerfScore 1.37
+G_M11953_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
             ; gcrRegs -[r0 r5]
-            pop     {r4,r5,r6,r7,r11,pc}
+            pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 64, prolog size 8, PerfScore 15.83, instruction count 27, allocated bytes for code 64 (MethodHash=0412d14e) for method System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
+; Total bytes of code 72, prolog size 8, PerfScore 16.47, instruction count 29, allocated bytes for code 72 (MethodHash=0412d14e) for method System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
 ; ============================================================
 
 Unwind Info:
   >> Start offset   : 0x000000 (not in unwind data)
   >>   End offset   : 0xd1ffab1e (not in unwind data)
-  Code Words        : 1
+  Code Words        : 2
   Epilog Count      : 2
   F bit             : 0
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 32 (0x00020) Actual length = 64 (0x000040)
+  Function Length   : 36 (0x00024) Actual length = 72 (0x000048)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
-  Epilog Start Index         : 0 (0x00)
+  Epilog Start Index         : 3 (0x03)
   ---- Scope 1
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
   Condition                  : 14 (0xe) (always)
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 F0       pop {r4,r5,r6,r7,r11,lr}            ; opsize 32
+    A8 78       pop {r3,r4,r5,r6,r11,lr}            ; opsize 32
+    FF          end
+    ---- Epilog start at index 3 ----
+    01          add sp, sp, #4                      ; opsize 16
+    A8 70       pop {r4,r5,r6,r11,lr}               ; opsize 32
     FF          end
     FF          end
 

+34 (+20.00%) : 363539.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)

@@ -13,9 +13,9 @@
 ;  V01 arg1         [V01,T01] (  5, 11.89)     int  ->   r1         single-def
 ;  V02 arg2         [V02,T04] (  3,  2.16)   ubyte  ->   r2         single-def
 ;  V03 loc0         [V03,T02] (  8, 12.71)     int  ->   r3        
-;  V04 loc1         [V04,T00] ( 20, 43.69)     int  ->   r4        
+;  V04 loc1         [V04,T00] ( 20, 43.69)     int  ->   lr        
 ;# V05 OutArgs      [V05    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T10] (  3,  0.00)   byref  ->   r2         single-def "dup spill"
+;  V06 tmp1         [V06,T10] (  3,  0.00)   byref  ->   lr         single-def "dup spill"
 ;  V07 tmp2         [V07,T09] (  3,  0.05)     int  ->   r2         "dup spill"
 ;* V08 tmp3         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.Span`1[ubyte]>
 ;* V09 tmp4         [V09,T08] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
@@ -24,141 +24,140 @@
 ;* V12 tmp7         [V12    ] (  0,  0   )     int  ->  zero-ref    "field V08._length (fldOffset=0x4)" P-INDEP
 ;  V13 tmp8         [V13,T05] (  2,  4   )     int  ->   r3         "Cast away GC"
 ;
-; Lcl frame size = 4
+; Lcl frame size = 0
 
 G_M4398_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-            push    {r3,r4,r11,lr}
-            add     r11, sp, 8
-                       ;; size=8 bbWeight=1 PerfScore 2.00
+            push    {r11,lr}
+            mov     r11, sp
+                       ;; size=6 bbWeight=1 PerfScore 2.00
 G_M4398_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
             ; byrRegs +[r0]
             ldr     r3, [r0+0x0C]
             ; byrRegs +[r3]
-            movs    r4, 0
+            mov     lr, 0
             b       SHORT G_M4398_IG04
-                       ;; size=6 bbWeight=1 PerfScore 3.00
+                       ;; size=8 bbWeight=1 PerfScore 3.00
 G_M4398_IG03:        ; bbWeight=7.73, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
             ; byrRegs -[r3]
-            adds    r4, r4, 1
-                       ;; size=2 bbWeight=7.73 PerfScore 7.73
+            add     lr, lr, 1
+                       ;; size=4 bbWeight=7.73 PerfScore 7.73
 G_M4398_IG04:        ; bbWeight=8.73, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r4, r1
+            cmp     lr, r1
             bge     SHORT G_M4398_IG06
                        ;; size=4 bbWeight=8.73 PerfScore 17.47
 G_M4398_IG05:        ; bbWeight=8.57, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            ldrb    lr, [r3+r4]
-            cmp     lr, 0
+            ldrb    r12, [r3+lr]
+            cmp     r12, 0
             bne     SHORT G_M4398_IG03
                        ;; size=10 bbWeight=8.57 PerfScore 25.71
 G_M4398_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r4, r1
-            bne     SHORT G_M4398_IG12
+            cmp     lr, r1
+            bne     SHORT G_M4398_IG11
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M4398_IG07:        ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
             ldrb    r1, [r3+r1]
             cmp     r1, 0
             beq     SHORT G_M4398_IG08
-            mov     lr, 0
+            mov     r12, 0
             b       SHORT G_M4398_IG09
                        ;; size=12 bbWeight=0.16 PerfScore 0.81
 G_M4398_IG08:        ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
-            mov     lr, 1
+            mov     r12, 1
                        ;; size=4 bbWeight=0.16 PerfScore 0.16
 G_M4398_IG09:        ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
             uxtb    r2, r2
-            orrs    r2, lr, r2
+            orrs    r2, r12, r2
             cmp     r2, 0
-            bne     SHORT G_M4398_IG12
+            bne     SHORT G_M4398_IG11
             cmp     r1, 53
-            blt     SHORT G_M4398_IG12
-                       ;; size=14 bbWeight=0.16 PerfScore 0.97
-G_M4398_IG10:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            b       SHORT G_M4398_IG21
-                       ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M4398_IG11:        ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
-            subs    r4, r4, 1
-                       ;; size=2 bbWeight=0.97 PerfScore 0.97
+            blt     SHORT G_M4398_IG11
+            b       SHORT G_M4398_IG19
+                       ;; size=16 bbWeight=0.16 PerfScore 1.13
+G_M4398_IG10:        ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+            add     lr, lr, -1
+                       ;; size=4 bbWeight=0.97 PerfScore 0.97
+G_M4398_IG11:        ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+            cmp     lr, 0
+            ble     SHORT G_M4398_IG13
+                       ;; size=6 bbWeight=1.96 PerfScore 3.93
 G_M4398_IG12:        ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r4, 0
-            ble     SHORT G_M4398_IG14
-                       ;; size=4 bbWeight=1.96 PerfScore 3.93
-G_M4398_IG13:        ; bbWeight=1.96, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            adds    r2, r3, r4
+            add     r2, r3, lr
             ldrb    r2, [r2-0x01]
             cmp     r2, 48
-            beq     SHORT G_M4398_IG11
-                       ;; size=10 bbWeight=1.96 PerfScore 7.84
-G_M4398_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r4, 0
-            bne     SHORT G_M4398_IG18
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M4398_IG15:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+            beq     SHORT G_M4398_IG10
+                       ;; size=12 bbWeight=1.96 PerfScore 7.84
+G_M4398_IG13:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+            cmp     lr, 0
+            bne     SHORT G_M4398_IG17
+                       ;; size=6 bbWeight=1 PerfScore 2.00
+G_M4398_IG14:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
             ldrb    r2, [r0+0x0A]
             cmp     r2, 3
-            beq     SHORT G_M4398_IG17
+            beq     SHORT G_M4398_IG16
                        ;; size=6 bbWeight=0.02 PerfScore 0.05
-G_M4398_IG16:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+G_M4398_IG15:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
             movs    r2, 0
             strb    r2, [r0+0x08]
                        ;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M4398_IG17:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+G_M4398_IG16:        ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
             movs    r2, 0
             str     r2, [r0+0x04]
                        ;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M4398_IG18:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
+G_M4398_IG17:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref
             movs    r2, 0
-            strb    r2, [r3+r4]
-            str     r4, [r0]
+            strb    r2, [r3+lr]
+            str     lr, [r0]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             ldr     r3, [r3]
             blx     r3     // <unknown method>
             ; byrRegs -[r0]
             ; gcr arg pop 0
-                       ;; size=18 bbWeight=1 PerfScore 7.00
-G_M4398_IG19:        ; bbWeight=1, epilog, nogc, extend
-            pop     {r3,r4,r11,pc}
+                       ;; size=22 bbWeight=1 PerfScore 7.00
+G_M4398_IG18:        ; bbWeight=1, epilog, nogc, extend
+            pop     {r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
-G_M4398_IG20:        ; bbWeight=0.00, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref
+G_M4398_IG19:        ; bbWeight=0.01, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, gcvars, byref, isz
             ; byrRegs +[r0]
-            subs    r4, r4, 1
-                       ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M4398_IG21:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r4, 0
-            ble     SHORT G_M4398_IG23
-                       ;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M4398_IG22:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            adds    r2, r3, r4
+            cmp     lr, 0
+            ble     SHORT G_M4398_IG21
+                       ;; size=6 bbWeight=0.01 PerfScore 0.02
+G_M4398_IG20:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+            add     r2, r3, lr
             ldrb    r2, [r2-0x01]
             cmp     r2, 57
-            beq     SHORT G_M4398_IG20
-                       ;; size=10 bbWeight=0.01 PerfScore 0.05
-G_M4398_IG23:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            cmp     r4, 0
-            ble     SHORT G_M4398_IG25
-                       ;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M4398_IG24:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            adds    r2, r3, r4
+            beq     SHORT G_M4398_IG23
+                       ;; size=12 bbWeight=0.01 PerfScore 0.05
+G_M4398_IG21:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+            cmp     lr, 0
+            ble     SHORT G_M4398_IG24
+                       ;; size=6 bbWeight=0.01 PerfScore 0.02
+G_M4398_IG22:        ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+            add     r2, r3, lr
             subs    r2, r2, 1
             ldrb    r1, [r2]
             adds    r1, r1, 1
             strb    r1, [r2]
-            b       SHORT G_M4398_IG14
-                       ;; size=12 bbWeight=0.01 PerfScore 0.05
-G_M4398_IG25:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
-            adds    r2, r0, 4
-            ; byrRegs +[r2]
-            ldr     r1, [r2]
-            adds    r1, r1, 1
-            str     r1, [r2]
+            b       SHORT G_M4398_IG13
+                       ;; size=14 bbWeight=0.01 PerfScore 0.05
+G_M4398_IG23:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+            add     lr, lr, -1
+            b       SHORT G_M4398_IG19
+                       ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M4398_IG24:        ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0001 {r0}, byref, isz
+            add     lr, r0, 4
+            ; byrRegs +[lr]
+            ldr     r2, [lr]
+            adds    r2, r2, 1
+            str     r2, [lr]
             movs    r2, 49
-            ; byrRegs -[r2]
             strb    r2, [r3]
-            movs    r4, 1
-            b       SHORT G_M4398_IG18
-                       ;; size=16 bbWeight=0.00 PerfScore 0.01
+            mov     lr, 1
+            ; byrRegs -[lr]
+            b       SHORT G_M4398_IG17
+                       ;; size=24 bbWeight=0.00 PerfScore 0.01
 
-; Total bytes of code 170, prolog size 8, PerfScore 82.86, instruction count 73, allocated bytes for code 170 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (Tier1)
+; Total bytes of code 204, prolog size 6, PerfScore 83.02, instruction count 74, allocated bytes for code 204 (MethodHash=4357eed1) for method System.Number:RoundNumber(byref,int,ubyte) (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -170,7 +169,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 85 (0x00055) Actual length = 170 (0x0000aa)
+  Function Length   : 102 (0x00066) Actual length = 204 (0x0000cc)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -178,7 +177,7 @@ Unwind Info:
   Epilog Start Index         : 0 (0x00)
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----
-    A8 18       pop {r3,r4,r11,lr}                  ; opsize 32
+    A8 00       pop {r11,lr}                        ; opsize 32
     FF          end
     FF          end
 

librariestestsnotieredcompilation.run.linux.arm.Release.mch

-32 (-16.49%) : 103093.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)

@@ -11,12 +11,12 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->   r4         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T02] (  5,  4   )     ref  ->   r6         class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent>
-;  V03 arg3         [V03,T01] (  7,  4.25)     ref  ->   r5         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T01] (  6,  4   )     ref  ->   r5         class-hnd single-def <System.Object>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1         [V05,T11] (  0,  0   )     int  ->  zero-ref   
+;* V05 tmp1         [V05,T10] (  0,  0   )     int  ->  zero-ref   
 ;  V06 tmp2         [V06,T04] (  3,  2.50)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V07 tmp3         [V07,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4         [V08,T12] (  0,  0   )     int  ->  zero-ref   
+;* V07 tmp3         [V07,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4         [V08,T11] (  0,  0   )     int  ->  zero-ref   
 ;* V09 tmp5         [V09    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;  V10 tmp6         [V10,T03] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
@@ -25,15 +25,14 @@
 ;* V14 tmp10        [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.Nullable`1[int]>
 ;* V15 tmp11        [V15    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;* V16 tmp12        [V16    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;  V17 tmp13        [V17,T09] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
+;  V17 tmp13        [V17,T08] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
 ;  V18 tmp14        [V18,T05] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
 ;* V19 tmp15        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V09.hasValue (fldOffset=0x0)" P-INDEP
-;  V20 tmp16        [V20,T10] (  2,  1   )     int  ->   r0         single-def "field V09.value (fldOffset=0x4)" P-INDEP
+;  V20 tmp16        [V20,T09] (  2,  1   )     int  ->   r0         single-def "field V09.value (fldOffset=0x4)" P-INDEP
 ;* V21 tmp17        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V13.hasValue (fldOffset=0x0)" P-INDEP
 ;* V22 tmp18        [V22    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13.value (fldOffset=0x4)" P-INDEP
 ;* V23 tmp19        [V23    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V14.hasValue (fldOffset=0x0)" P-INDEP
 ;* V24 tmp20        [V24    ] (  0,  0   )     int  ->  zero-ref    single-def "field V14.value (fldOffset=0x4)" P-INDEP
-;  V25 cse0         [V25,T07] (  3,  1.50)     int  ->   r1         "CSE - moderate"
 ;
 ; Lcl frame size = 4
 
@@ -49,49 +48,33 @@ G_M10879_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=14 bbWeight=1 PerfScore 5.00
 G_M10879_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r6, 0
-            beq     SHORT G_M10879_IG09
+            beq     SHORT G_M10879_IG07
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M10879_IG03:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r6]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M10879_IG09
-            cmp     r5, 0
-            beq     SHORT G_M10879_IG09
-            ldr     r1, [r5]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M10879_IG09
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            beq     SHORT G_M10879_IG05
-                       ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M10879_IG04:        ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r4 r6]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
+            ldr     r0, [r6]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-                       ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M10879_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, r3
+            bne     SHORT G_M10879_IG07
+            cmp     r5, 0
+            beq     SHORT G_M10879_IG07
+            ldr     r0, [r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            cmp     r0, r3
+            bne     SHORT G_M10879_IG07
             ldr     r0, [r5+0x04]
             cmp     r0, 1
-            bne     SHORT G_M10879_IG06
+            bne     SHORT G_M10879_IG04
             movs    r4, 0
-            b       SHORT G_M10879_IG07
-                       ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M10879_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r5]
+            ; gcrRegs -[r4]
+            b       SHORT G_M10879_IG05
+                       ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M10879_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5-r6]
             movs    r4, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M10879_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
@@ -100,29 +83,29 @@ G_M10879_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ; gcrRegs +[r0]
             str     r4, [r0+0x04]
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M10879_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10879_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4-r6]
             ldrb    r0, [r4+0x08]
             movs    r1, 0
             strb    r1, [r4+0x08]
             cmp     r0, 0
-            beq     SHORT G_M10879_IG11
+            beq     SHORT G_M10879_IG09
             movs    r0, 0
                        ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M10879_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M10879_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10879_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [r4]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M10879_IG13
+            beq     SHORT G_M10879_IG11
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M10879_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M10879_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r1
             mov     r1, r4
             ; gcrRegs +[r1]
@@ -131,7 +114,7 @@ G_M10879_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             blx     r3     // CORINFO_HELP_CHKCASTCLASS_SPECIAL
             ; gcrRegs -[r1] +[r0]
                        ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M10879_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M10879_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
@@ -150,11 +133,11 @@ G_M10879_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             blx     lr     // <unknown method>
             ; gcrRegs -[r1-r6]
                        ;; size=28 bbWeight=0.50 PerfScore 4.50
-G_M10879_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+G_M10879_IG12:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 194, prolog size 8, PerfScore 35.25, instruction count 69, allocated bytes for code 194 (MethodHash=cf9bd580) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 162, prolog size 8, PerfScore 31.75, instruction count 59, allocated bytes for code 162 (MethodHash=cf9bd580) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -166,7 +149,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 97 (0x00061) Actual length = 194 (0x0000c2)
+  Function Length   : 81 (0x00051) Actual length = 162 (0x0000a2)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-16.33%) : 108329.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)

@@ -11,18 +11,17 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->   r4         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T02] (  5,  4   )     ref  ->   r6         class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent>
-;  V03 arg3         [V03,T01] (  7,  4.25)     ref  ->   r5         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T01] (  6,  4   )     ref  ->   r5         class-hnd single-def <System.Object>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1         [V05,T11] (  0,  0   )     int  ->  zero-ref   
+;* V05 tmp1         [V05,T10] (  0,  0   )     int  ->  zero-ref   
 ;  V06 tmp2         [V06,T04] (  3,  2.50)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V07 tmp3         [V07,T09] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4         [V08,T12] (  0,  0   )     int  ->  zero-ref   
+;* V07 tmp3         [V07,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4         [V08,T11] (  0,  0   )     int  ->  zero-ref   
 ;  V09 tmp5         [V09,T03] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
 ;  V10 tmp6         [V10,T07] (  3,  1.50)     int  ->   r4         "Inline return value spill temp"
 ;  V11 tmp7         [V11,T05] (  2,  2   )     int  ->   r0         "Inlining Arg"
-;  V12 tmp8         [V12,T10] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
+;  V12 tmp8         [V12,T09] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
 ;  V13 tmp9         [V13,T06] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V14 cse0         [V14,T08] (  3,  1.50)     int  ->   r1         "CSE - moderate"
 ;
 ; Lcl frame size = 4
 
@@ -38,50 +37,33 @@ G_M35982_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=14 bbWeight=1 PerfScore 5.00
 G_M35982_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r6, 0
-            beq     SHORT G_M35982_IG09
+            beq     SHORT G_M35982_IG07
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M35982_IG03:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r6]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M35982_IG09
-            cmp     r5, 0
-            beq     SHORT G_M35982_IG09
-            ldr     r1, [r5]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M35982_IG09
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            beq     SHORT G_M35982_IG05
-                       ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M35982_IG04:        ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r4 r6]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
+            ldr     r0, [r6]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-            ; gcr arg pop 0
-                       ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M35982_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, r3
+            bne     SHORT G_M35982_IG07
+            cmp     r5, 0
+            beq     SHORT G_M35982_IG07
+            ldr     r0, [r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            cmp     r0, r3
+            bne     SHORT G_M35982_IG07
             ldr     r0, [r5+0x04]
             cmp     r0, 2
-            bne     SHORT G_M35982_IG06
+            bne     SHORT G_M35982_IG04
             movs    r4, 0
-            b       SHORT G_M35982_IG07
-                       ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M35982_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r5]
+            ; gcrRegs -[r4]
+            b       SHORT G_M35982_IG05
+                       ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M35982_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5-r6]
             movs    r4, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M35982_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
@@ -91,29 +73,29 @@ G_M35982_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ; gcr arg pop 0
             str     r4, [r0+0x04]
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M35982_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35982_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4-r6]
             ldrb    r0, [r4+0x08]
             movs    r1, 0
             strb    r1, [r4+0x08]
             cmp     r0, 0
-            beq     SHORT G_M35982_IG11
+            beq     SHORT G_M35982_IG09
             movs    r0, 0
                        ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M35982_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35982_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M35982_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [r4]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M35982_IG13
+            beq     SHORT G_M35982_IG11
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M35982_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M35982_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r1
             mov     r1, r4
             ; gcrRegs +[r1]
@@ -123,7 +105,7 @@ G_M35982_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
                        ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M35982_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M35982_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
@@ -139,14 +121,14 @@ G_M35982_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs +[r0]
             ldr     r12, [lr+0x0C]
                        ;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M35982_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+G_M35982_IG12:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 4
             pop     {r4,r5,r6,r11,lr}
             bx      r12        // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 196, prolog size 14, PerfScore 35.75, instruction count 70, allocated bytes for code 196 (MethodHash=28fa7371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 164, prolog size 14, PerfScore 32.25, instruction count 60, allocated bytes for code 164 (MethodHash=28fa7371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -158,7 +140,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 98 (0x00062) Actual length = 196 (0x0000c4)
+  Function Length   : 82 (0x00052) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-32 (-16.33%) : 107618.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)

@@ -11,18 +11,17 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->   r4         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T02] (  5,  4   )     ref  ->   r6         class-hnd single-def <ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent>
-;  V03 arg3         [V03,T01] (  7,  4.25)     ref  ->   r5         class-hnd single-def <System.Object>
+;  V03 arg3         [V03,T01] (  6,  4   )     ref  ->   r5         class-hnd single-def <System.Object>
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1         [V05,T11] (  0,  0   )     int  ->  zero-ref   
+;* V05 tmp1         [V05,T10] (  0,  0   )     int  ->  zero-ref   
 ;  V06 tmp2         [V06,T04] (  3,  2.50)     int  ->   r1         "fgMakeTemp is creating a new local variable"
-;* V07 tmp3         [V07,T09] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp4         [V08,T12] (  0,  0   )     int  ->  zero-ref   
+;* V07 tmp3         [V07,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp4         [V08,T11] (  0,  0   )     int  ->  zero-ref   
 ;  V09 tmp5         [V09,T03] (  3,  3   )     ref  ->   r0         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
 ;  V10 tmp6         [V10,T07] (  3,  1.50)     int  ->   r4         "Inline return value spill temp"
 ;  V11 tmp7         [V11,T05] (  2,  2   )     int  ->   r0         "Inlining Arg"
-;  V12 tmp8         [V12,T10] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
+;  V12 tmp8         [V12,T09] (  2,  1   )   ubyte  ->   r0         single-def "Inline stloc first use temp"
 ;  V13 tmp9         [V13,T06] (  3,  1.50)     ref  ->   lr         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V14 cse0         [V14,T08] (  3,  1.50)     int  ->   r1         "CSE - moderate"
 ;
 ; Lcl frame size = 4
 
@@ -38,50 +37,33 @@ G_M51272_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
                        ;; size=14 bbWeight=1 PerfScore 5.00
 G_M51272_IG02:        ; bbWeight=1, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
             cmp     r6, 0
-            beq     SHORT G_M51272_IG09
+            beq     SHORT G_M51272_IG07
                        ;; size=4 bbWeight=1 PerfScore 2.00
 G_M51272_IG03:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r6]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M51272_IG09
-            cmp     r5, 0
-            beq     SHORT G_M51272_IG09
-            ldr     r1, [r5]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            bne     SHORT G_M51272_IG09
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
-            cmp     r1, r0
-            beq     SHORT G_M51272_IG05
-                       ;; size=44 bbWeight=0.50 PerfScore 8.00
-G_M51272_IG04:        ; bbWeight=0.25, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r4 r6]
-            mov     r1, r5
-            ; gcrRegs +[r1]
-            movw    r0, 0xd1ff
-            movt    r0, 0xd1ff
+            ldr     r0, [r6]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_UNBOX
-            ; gcrRegs -[r1]
-            ; gcr arg pop 0
-                       ;; size=20 bbWeight=0.25 PerfScore 1.50
-G_M51272_IG05:        ; bbWeight=0.50, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
+            cmp     r0, r3
+            bne     SHORT G_M51272_IG07
+            cmp     r5, 0
+            beq     SHORT G_M51272_IG07
+            ldr     r0, [r5]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            cmp     r0, r3
+            bne     SHORT G_M51272_IG07
             ldr     r0, [r5+0x04]
             cmp     r0, 1
-            bne     SHORT G_M51272_IG06
+            bne     SHORT G_M51272_IG04
             movs    r4, 0
-            b       SHORT G_M51272_IG07
-                       ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M51272_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r5]
+            ; gcrRegs -[r4]
+            b       SHORT G_M51272_IG05
+                       ;; size=42 bbWeight=0.50 PerfScore 8.50
+G_M51272_IG04:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5-r6]
             movs    r4, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51272_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             movw    r0, 0xd1ff
             movt    r0, 0xd1ff
             movw    r3, 0xd1ff
@@ -91,29 +73,29 @@ G_M51272_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
             ; gcr arg pop 0
             str     r4, [r0+0x04]
                        ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M51272_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG06:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51272_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r0] +[r4-r6]
             ldrb    r0, [r4+0x08]
             movs    r1, 0
             strb    r1, [r4+0x08]
             cmp     r0, 0
-            beq     SHORT G_M51272_IG11
+            beq     SHORT G_M51272_IG09
             movs    r0, 0
                        ;; size=12 bbWeight=0.50 PerfScore 3.00
-G_M51272_IG10:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r5,r6,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M51272_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M51272_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [r4]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
             cmp     r0, r1
-            beq     SHORT G_M51272_IG13
+            beq     SHORT G_M51272_IG11
                        ;; size=14 bbWeight=0.50 PerfScore 2.50
-G_M51272_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M51272_IG10:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             mov     r0, r1
             mov     r1, r4
             ; gcrRegs +[r1]
@@ -123,7 +105,7 @@ G_M51272_IG12:        ; bbWeight=0.25, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
                        ;; size=14 bbWeight=0.25 PerfScore 1.25
-G_M51272_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
+G_M51272_IG11:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             movw    r1, 0xd1ff
             movt    r1, 0xd1ff
@@ -139,14 +121,14 @@ G_M51272_IG13:        ; bbWeight=0.50, gcrefRegs=0070 {r4 r5 r6}, byrefRegs=0000
             ; gcrRegs +[r0]
             ldr     r12, [lr+0x0C]
                        ;; size=26 bbWeight=0.50 PerfScore 4.00
-G_M51272_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51272_IG12:        ; bbWeight=0.50, epilog, nogc, extend
             add     sp, 4
             pop     {r4,r5,r6,r11,lr}
             bx      r12        // <unknown method>
             ; gcr arg pop 0
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
 
-; Total bytes of code 196, prolog size 14, PerfScore 35.75, instruction count 70, allocated bytes for code 196 (MethodHash=814537b7) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
+; Total bytes of code 164, prolog size 14, PerfScore 32.25, instruction count 60, allocated bytes for code 164 (MethodHash=814537b7) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -158,7 +140,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 98 (0x00062) Actual length = 196 (0x0000c4)
+  Function Length   : 82 (0x00052) Actual length = 164 (0x0000a4)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+18 (+8.49%) : 68366.dasm - System.AssertExtensions:AssertThrowsSystem.__Canon,int:System.__Canon (FullOpts)

@@ -8,40 +8,38 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  4   )     int  ->  [sp+0x08]  EH-live single-def
-;  V01 arg0         [V01,T03] (  4,  4   )  struct ( 8) [sp+0x28]  do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[int]>
-;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->   r3         class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
-;  V03 loc0         [V03,T06] (  5,  3   )     ref  ->  [sp+0x04]  do-not-enreg[M] class-hnd EH-live <System.Exception>
+;  V00 TypeCtx      [V00,T00] (  8,  3   )     int  ->  [sp+0x08]  EH-live single-def
+;  V01 arg0         [V01,T02] (  4,  2   )  struct ( 8) [sp+0x20]  do-not-enreg[SA] multireg-arg single-def <System.ReadOnlySpan`1[int]>
+;  V02 arg1         [V02,T01] (  4,  2   )     ref  ->   r3         class-hnd single-def <System.AssertExtensions+AssertThrowsActionReadOnly`1[int]>
+;  V03 loc0         [V03,T05] (  5,  0   )     ref  ->  [sp+0x04]  do-not-enreg[M] class-hnd EH-live <System.Exception>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Exception>
 ;* V05 loc2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.__Canon>
 ;* V06 loc3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Exception>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T04] (  3,  4.50)     ref  ->   r1         single-def "CASTCLASS eval op1"
-;  V09 tmp2         [V09,T07] (  3,  2.50)     int  ->   r3         "fgMakeTemp is creating a new local variable"
-;  V10 tmp3         [V10,T00] (  5,  7.50)     ref  ->   r0         class-hnd "spilling QMark2" <System.__Canon>
-;  V11 tmp4         [V11,T10] (  2,  0   )     ref  ->   r0         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-;  V12 tmp5         [V12,T11] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
-;  V13 PSPSym       [V13,T09] (  1,  1   )     int  ->  [sp+0x14]  do-not-enreg[V] "PSPSym"
-;  V14 cse0         [V14,T05] (  7,  3.50)     int  ->   r4         multi-def "CSE - aggressive"
-;  V15 cse1         [V15,T08] (  3,  2   )     int  ->   r5         "CSE - moderate"
+;  V08 tmp1         [V08,T06] (  3,  0   )     ref  ->   r1         single-def "CASTCLASS eval op1"
+;  V09 tmp2         [V09,T07] (  3,  0   )     int  ->   lr         "fgMakeTemp is creating a new local variable"
+;  V10 tmp3         [V10,T04] (  6,  0   )     ref  ->   r0         class-hnd "spilling QMark2" <System.__Canon>
+;  V11 tmp4         [V11,T08] (  2,  0   )     ref  ->   r0         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+;  V12 tmp5         [V12,T09] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
+;  V13 PSPSym       [V13,T03] (  1,  1   )     int  ->  [sp+0x14]  do-not-enreg[V] "PSPSym"
 ;
 ; Lcl frame size = 24
 
-G_M22620_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M22620_IG01:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
             push    {r1,r2}
-            push    {r4,r5,r11,lr}
+            push    {r11,lr}
             sub     sp, 24
-            add     r11, sp, 32
-            add     r1, sp, 48
+            add     r11, sp, 24
+            add     r1, sp, 40
             str     r1, [sp+0x14]  // [V13 PSPSym]
-            str     r0, [r11-0x14]
+            str     r0, [r11-0x0C]
             str     r0, [sp+0x08]  // [V00 TypeCtx]
-                       ;; size=22 bbWeight=1 PerfScore 8.00
-G_M22620_IG02:        ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
+                       ;; size=22 bbWeight=0 PerfScore 0.00
+G_M22620_IG02:        ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
             ; gcrRegs +[r3]
-            ldr     r1, [sp+0x28]
+            ldr     r1, [sp+0x20]
             ; byrRegs +[r1]
-            ldr     r2, [sp+0x2C]
+            ldr     r2, [sp+0x24]
             ldr     r0, [r3+0x04]
             ; gcrRegs +[r0]
             ldr     r3, [r3+0x0C]
@@ -53,17 +51,16 @@ G_M22620_IG02:        ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre
             movs    r0, 0
             str     r0, [sp+0x04]  // [V03 loc0]
             ; GC ptr vars +{V03}
-                       ;; size=14 bbWeight=1 PerfScore 7.00
-G_M22620_IG03:        ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+                       ;; size=14 bbWeight=0 PerfScore 0.00
+G_M22620_IG03:        ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [sp+0x04]  // [V03 loc0]
             ; gcrRegs +[r0]
             cmp     r0, 0
-            beq     SHORT G_M22620_IG09
+            beq     SHORT G_M22620_IG05
             ldr     r0, [sp+0x08]  // [V00 TypeCtx]
             ; gcrRegs -[r0]
-            ldr     r0, [r0+0x20]
-            ldr     r4, [r0]
-            mov     r0, r4
+            ldr     r1, [r0+0x20]
+            ldr     r0, [r1]
             ldr     r1, [sp+0x04]  // [V03 loc0]
             ; gcrRegs +[r1]
             movw    r3, 0xd1ff
@@ -75,36 +72,65 @@ G_M22620_IG03:        ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0000 {}, by
             ; gcrRegs +[r1]
             mov     r0, r1
             cmp     r0, 0
-            beq     SHORT G_M22620_IG08
-                       ;; size=34 bbWeight=1 PerfScore 15.00
-G_M22620_IG04:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
-            ldr     r5, [r0]
-            mov     r3, r4
-            cmp     r5, r3
-            beq     SHORT G_M22620_IG06
-                       ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M22620_IG05:        ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+            beq     SHORT G_M22620_IG07
+            ldr     r3, [r0]
+            ldr     r2, [sp+0x08]  // [V00 TypeCtx]
+            ldr     lr, [r2+0x20]
+            ldr     lr, [lr]
+            cmp     r3, lr
+            beq     SHORT G_M22620_IG04
+            mov     r0, lr
             ; gcrRegs -[r0]
-            mov     r0, r3
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_CHKCASTANY
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
-                       ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M22620_IG06:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
-            cmp     r5, r4
-            bne     SHORT G_M22620_IG08
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M22620_IG07:        ; bbWeight=1, epilog, nogc, extend
+                       ;; size=60 bbWeight=0 PerfScore 0.00
+G_M22620_IG04:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+            ldr     r3, [r0]
+            ldr     r2, [sp+0x08]  // [V00 TypeCtx]
+            ldr     r1, [r2+0x20]
+            ldr     r1, [r1]
+            cmp     r3, r1
+            bne     SHORT G_M22620_IG07
+            b       SHORT G_M22620_IG06
+                       ;; size=14 bbWeight=0 PerfScore 0.00
+G_M22620_IG05:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r0]
+            ; GC ptr vars -{V03}
+            ldr     r2, [sp+0x08]  // [V00 TypeCtx]
+            ldr     r0, [r2+0x20]
+            ldr     r0, [r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcr arg pop 0
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_THROW
+            ; gcrRegs -[r0]
+            ; gcr arg pop 0
+                       ;; size=38 bbWeight=0 PerfScore 0.00
+G_M22620_IG06:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs +[r0]
             add     sp, 24
-            pop     {r4,r5,r11,lr}
+            pop     {r11,lr}
             add     sp, 8
             bx      lr
-                       ;; size=10 bbWeight=1 PerfScore 4.00
-G_M22620_IG08:        ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                       ;; size=10 bbWeight=0 PerfScore 0.00
+G_M22620_IG07:        ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
-            mov     r0, r4
+            ; GC ptr vars +{V03}
+            ldr     r2, [sp+0x08]  // [V00 TypeCtx]
+            ldr     r0, [r2+0x20]
+            ldr     r0, [r0]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
@@ -123,50 +149,29 @@ G_M22620_IG08:        ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, by
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_THROW
             ; gcrRegs -[r0]
-            ; gcr arg pop 0
-                       ;; size=36 bbWeight=0 PerfScore 0.00
-G_M22620_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r0, [sp+0x08]  // [V00 TypeCtx]
-            ldr     r0, [r0+0x20]
-            ldr     r4, [r0]
-            mov     r0, r4
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
-            ; gcrRegs +[r0]
-            ; gcr arg pop 0
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // <unknown method>
-            ; gcr arg pop 0
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_THROW
-            ; gcrRegs -[r0]
             ; gcr arg pop 0
             bkpt    
                        ;; size=42 bbWeight=0 PerfScore 0.00
-G_M22620_IG10:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M22620_IG08:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
             ; gcrRegs +[r0]
-            push    {r4,r5,r11,lr}
+            push    {r11,lr}
             sub     sp, 16
             add     r3, r11, 16
             str     r3, [sp+0x04]
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M22620_IG11:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
-            str     r0, [r11-0x1C] // [V03 loc0]
+G_M22620_IG09:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
+            str     r0, [r11-0x14] // [V03 loc0]
             ; GC ptr vars +{V03}
             movw    r0, LOW ADDRESS G_M22620_IG03
             ; gcrRegs -[r0]
             movt    r0, HIGH ADDRESS G_M22620_IG03
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M22620_IG12:        ; bbWeight=0, funclet epilog, nogc, extend
+G_M22620_IG10:        ; bbWeight=0, funclet epilog, nogc, extend
             add     sp, 16
-            pop     {r4,r5,r11,pc}
+            pop     {r11,pc}
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 212, prolog size 22, PerfScore 39.00, instruction count 80, allocated bytes for code 212 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 230, prolog size 22, PerfScore 0.00, instruction count 87, allocated bytes for code 230 (MethodHash=0395a7a3) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -178,7 +183,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 182 (0x0000b6)
+  Function Length   : 100 (0x00064) Actual length = 200 (0x0000c8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -186,12 +191,12 @@ Unwind Info:
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
     06          add sp, sp, #24                     ; opsize 16
-    A8 30       pop {r4,r5,r11,lr}                  ; opsize 32
+    A8 00       pop {r11,lr}                        ; opsize 32
     EC 06       pop {r1,r2}                         ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
     06          add sp, sp, #24                     ; opsize 16
-    A8 30       pop {r4,r5,r11,lr}                  ; opsize 32
+    A8 00       pop {r11,lr}                        ; opsize 32
     02          add sp, sp, #8                      ; opsize 16
     FD          end + nop                           ; opsize 16
...

+18 (+8.49%) : 70464.dasm - System.AssertExtensions:AssertThrowsSystem.__Canon,int:System.__Canon (FullOpts)

@@ -8,40 +8,38 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 TypeCtx      [V00,T01] (  5,  4   )     int  ->  [sp+0x08]  EH-live single-def
-;  V01 arg0         [V01,T03] (  4,  4   )  struct ( 8) [sp+0x28]  do-not-enreg[SA] multireg-arg single-def <System.Span`1[int]>
-;  V02 arg1         [V02,T02] (  4,  4   )     ref  ->   r3         class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
-;  V03 loc0         [V03,T06] (  5,  3   )     ref  ->  [sp+0x04]  do-not-enreg[M] class-hnd EH-live <System.Exception>
+;  V00 TypeCtx      [V00,T00] (  8,  3   )     int  ->  [sp+0x08]  EH-live single-def
+;  V01 arg0         [V01,T02] (  4,  2   )  struct ( 8) [sp+0x20]  do-not-enreg[SA] multireg-arg single-def <System.Span`1[int]>
+;  V02 arg1         [V02,T01] (  4,  2   )     ref  ->   r3         class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
+;  V03 loc0         [V03,T05] (  5,  0   )     ref  ->  [sp+0x04]  do-not-enreg[M] class-hnd EH-live <System.Exception>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Exception>
 ;* V05 loc2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.__Canon>
 ;* V06 loc3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Exception>
 ;# V07 OutArgs      [V07    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T04] (  3,  4.50)     ref  ->   r1         single-def "CASTCLASS eval op1"
-;  V09 tmp2         [V09,T07] (  3,  2.50)     int  ->   r3         "fgMakeTemp is creating a new local variable"
-;  V10 tmp3         [V10,T00] (  5,  7.50)     ref  ->   r0         class-hnd "spilling QMark2" <System.__Canon>
-;  V11 tmp4         [V11,T10] (  2,  0   )     ref  ->   r0         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-;  V12 tmp5         [V12,T11] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
-;  V13 PSPSym       [V13,T09] (  1,  1   )     int  ->  [sp+0x14]  do-not-enreg[V] "PSPSym"
-;  V14 cse0         [V14,T05] (  7,  3.50)     int  ->   r4         multi-def "CSE - aggressive"
-;  V15 cse1         [V15,T08] (  3,  2   )     int  ->   r5         "CSE - moderate"
+;  V08 tmp1         [V08,T06] (  3,  0   )     ref  ->   r1         single-def "CASTCLASS eval op1"
+;  V09 tmp2         [V09,T07] (  3,  0   )     int  ->   lr         "fgMakeTemp is creating a new local variable"
+;  V10 tmp3         [V10,T04] (  6,  0   )     ref  ->   r0         class-hnd "spilling QMark2" <System.__Canon>
+;  V11 tmp4         [V11,T08] (  2,  0   )     ref  ->   r0         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+;  V12 tmp5         [V12,T09] (  2,  0   )     ref  ->   r0         single-def "argument with side effect"
+;  V13 PSPSym       [V13,T03] (  1,  1   )     int  ->  [sp+0x14]  do-not-enreg[V] "PSPSym"
 ;
 ; Lcl frame size = 24
 
-G_M57052_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M57052_IG01:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
             push    {r1,r2}
-            push    {r4,r5,r11,lr}
+            push    {r11,lr}
             sub     sp, 24
-            add     r11, sp, 32
-            add     r1, sp, 48
+            add     r11, sp, 24
+            add     r1, sp, 40
             str     r1, [sp+0x14]  // [V13 PSPSym]
-            str     r0, [r11-0x14]
+            str     r0, [r11-0x0C]
             str     r0, [sp+0x08]  // [V00 TypeCtx]
-                       ;; size=22 bbWeight=1 PerfScore 8.00
-G_M57052_IG02:        ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
+                       ;; size=22 bbWeight=0 PerfScore 0.00
+G_M57052_IG02:        ; bbWeight=0, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byref
             ; gcrRegs +[r3]
-            ldr     r1, [sp+0x28]
+            ldr     r1, [sp+0x20]
             ; byrRegs +[r1]
-            ldr     r2, [sp+0x2C]
+            ldr     r2, [sp+0x24]
             ldr     r0, [r3+0x04]
             ; gcrRegs +[r0]
             ldr     r3, [r3+0x0C]
@@ -53,17 +51,16 @@ G_M57052_IG02:        ; bbWeight=1, gcrefRegs=0008 {r3}, byrefRegs=0000 {}, byre
             movs    r0, 0
             str     r0, [sp+0x04]  // [V03 loc0]
             ; GC ptr vars +{V03}
-                       ;; size=14 bbWeight=1 PerfScore 7.00
-G_M57052_IG03:        ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+                       ;; size=14 bbWeight=0 PerfScore 0.00
+G_M57052_IG03:        ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
             ldr     r0, [sp+0x04]  // [V03 loc0]
             ; gcrRegs +[r0]
             cmp     r0, 0
-            beq     SHORT G_M57052_IG09
+            beq     SHORT G_M57052_IG05
             ldr     r0, [sp+0x08]  // [V00 TypeCtx]
             ; gcrRegs -[r0]
-            ldr     r0, [r0+0x20]
-            ldr     r4, [r0]
-            mov     r0, r4
+            ldr     r1, [r0+0x20]
+            ldr     r0, [r1]
             ldr     r1, [sp+0x04]  // [V03 loc0]
             ; gcrRegs +[r1]
             movw    r3, 0xd1ff
@@ -75,36 +72,65 @@ G_M57052_IG03:        ; bbWeight=1, gcVars=00000040 {V03}, gcrefRegs=0000 {}, by
             ; gcrRegs +[r1]
             mov     r0, r1
             cmp     r0, 0
-            beq     SHORT G_M57052_IG08
-                       ;; size=34 bbWeight=1 PerfScore 15.00
-G_M57052_IG04:        ; bbWeight=0.50, gcrefRegs=0003 {r0 r1}, byrefRegs=0000 {}, byref, isz
-            ldr     r5, [r0]
-            mov     r3, r4
-            cmp     r5, r3
-            beq     SHORT G_M57052_IG06
-                       ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M57052_IG05:        ; bbWeight=0.25, gcrefRegs=0002 {r1}, byrefRegs=0000 {}, byref
+            beq     SHORT G_M57052_IG07
+            ldr     r3, [r0]
+            ldr     r2, [sp+0x08]  // [V00 TypeCtx]
+            ldr     lr, [r2+0x20]
+            ldr     lr, [lr]
+            cmp     r3, lr
+            beq     SHORT G_M57052_IG04
+            mov     r0, lr
             ; gcrRegs -[r0]
-            mov     r0, r3
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_CHKCASTANY
             ; gcrRegs -[r1] +[r0]
             ; gcr arg pop 0
-                       ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M57052_IG06:        ; bbWeight=1, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
-            cmp     r5, r4
-            bne     SHORT G_M57052_IG08
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M57052_IG07:        ; bbWeight=1, epilog, nogc, extend
+                       ;; size=60 bbWeight=0 PerfScore 0.00
+G_M57052_IG04:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
+            ldr     r3, [r0]
+            ldr     r2, [sp+0x08]  // [V00 TypeCtx]
+            ldr     r1, [r2+0x20]
+            ldr     r1, [r1]
+            cmp     r3, r1
+            bne     SHORT G_M57052_IG07
+            b       SHORT G_M57052_IG06
+                       ;; size=14 bbWeight=0 PerfScore 0.00
+G_M57052_IG05:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r0]
+            ; GC ptr vars -{V03}
+            ldr     r2, [sp+0x08]  // [V00 TypeCtx]
+            ldr     r0, [r2+0x20]
+            ldr     r0, [r0]
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+            ; gcrRegs +[r0]
+            ; gcr arg pop 0
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            ldr     r3, [r3]
+            blx     r3     // <unknown method>
+            ; gcr arg pop 0
+            movw    r3, 0xd1ff
+            movt    r3, 0xd1ff
+            blx     r3     // CORINFO_HELP_THROW
+            ; gcrRegs -[r0]
+            ; gcr arg pop 0
+                       ;; size=38 bbWeight=0 PerfScore 0.00
+G_M57052_IG06:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, epilog, nogc
+            ; gcrRegs +[r0]
             add     sp, 24
-            pop     {r4,r5,r11,lr}
+            pop     {r11,lr}
             add     sp, 8
             bx      lr
-                       ;; size=10 bbWeight=1 PerfScore 4.00
-G_M57052_IG08:        ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+                       ;; size=10 bbWeight=0 PerfScore 0.00
+G_M57052_IG07:        ; bbWeight=0, gcVars=00000020 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r0]
-            mov     r0, r4
+            ; GC ptr vars +{V03}
+            ldr     r2, [sp+0x08]  // [V00 TypeCtx]
+            ldr     r0, [r2+0x20]
+            ldr     r0, [r0]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
@@ -123,50 +149,29 @@ G_M57052_IG08:        ; bbWeight=0, gcVars=00000040 {V03}, gcrefRegs=0000 {}, by
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_THROW
             ; gcrRegs -[r0]
-            ; gcr arg pop 0
-                       ;; size=36 bbWeight=0 PerfScore 0.00
-G_M57052_IG09:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ldr     r0, [sp+0x08]  // [V00 TypeCtx]
-            ldr     r0, [r0+0x20]
-            ldr     r4, [r0]
-            mov     r0, r4
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
-            ; gcrRegs +[r0]
-            ; gcr arg pop 0
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            ldr     r3, [r3]
-            blx     r3     // <unknown method>
-            ; gcr arg pop 0
-            movw    r3, 0xd1ff
-            movt    r3, 0xd1ff
-            blx     r3     // CORINFO_HELP_THROW
-            ; gcrRegs -[r0]
             ; gcr arg pop 0
             bkpt    
                        ;; size=42 bbWeight=0 PerfScore 0.00
-G_M57052_IG10:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
+G_M57052_IG08:        ; bbWeight=0, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, funclet prolog, nogc
             ; gcrRegs +[r0]
-            push    {r4,r5,r11,lr}
+            push    {r11,lr}
             sub     sp, 16
             add     r3, r11, 16
             str     r3, [sp+0x04]
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M57052_IG11:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
-            str     r0, [r11-0x1C] // [V03 loc0]
+G_M57052_IG09:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, gcvars, byref
+            str     r0, [r11-0x14] // [V03 loc0]
             ; GC ptr vars +{V03}
             movw    r0, LOW ADDRESS G_M57052_IG03
             ; gcrRegs -[r0]
             movt    r0, HIGH ADDRESS G_M57052_IG03
                        ;; size=12 bbWeight=0 PerfScore 0.00
-G_M57052_IG12:        ; bbWeight=0, funclet epilog, nogc, extend
+G_M57052_IG10:        ; bbWeight=0, funclet epilog, nogc, extend
             add     sp, 16
-            pop     {r4,r5,r11,pc}
+            pop     {r11,pc}
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 212, prolog size 22, PerfScore 39.00, instruction count 80, allocated bytes for code 212 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 230, prolog size 22, PerfScore 0.00, instruction count 87, allocated bytes for code 230 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -178,7 +183,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 91 (0x0005b) Actual length = 182 (0x0000b6)
+  Function Length   : 100 (0x00064) Actual length = 200 (0x0000c8)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -186,12 +191,12 @@ Unwind Info:
   Epilog Start Index         : 6 (0x06)
   ---- Unwind codes ----
     06          add sp, sp, #24                     ; opsize 16
-    A8 30       pop {r4,r5,r11,lr}                  ; opsize 32
+    A8 00       pop {r11,lr}                        ; opsize 32
     EC 06       pop {r1,r2}                         ; opsize 16
     FF          end
     ---- Epilog start at index 6 ----
     06          add sp, sp, #24                     ; opsize 16
-    A8 30       pop {r4,r5,r11,lr}                  ; opsize 32
+    A8 00       pop {r11,lr}                        ; opsize 32
     02          add sp, sp, #8                      ; opsize 16
     FD          end + nop                           ; opsize 16
...

+46 (+9.62%) : 216396.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)

@@ -9,13 +9,13 @@
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T00] ( 12, 11   )  struct (52) [sp+0xC0]  do-not-enreg[SF] ld-addr-op single-def <System.Security.Cryptography.ECCurve>
-;  V01 loc0         [V01,T06] (  4,  3   )     ref  ->   r2         class-hnd <<unknown class>>
-;  V02 loc1         [V02,T03] (  6,  4   )     ref  ->  [sp+0x74]  class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
+;  V01 loc0         [V01,T06] (  4,  3   )     ref  ->   r7         class-hnd <<unknown class>>
+;  V02 loc1         [V02,T03] (  6,  4   )     ref  ->  [sp+0x78]  class-hnd exact spill-single-def <Microsoft.Win32.SafeHandles.SafeEcKeyHandle>
 ;  V03 loc2         [V03,T24] (  2,  0   )     ref  ->   r5         class-hnd single-def <<unknown class>>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (76) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T22] (  3,  0   )     ref  ->   r4         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-;  V06 tmp2         [V06,T25] (  2,  0   )     ref  ->   r5         class-hnd exact single-def "impImportAndPushBox" <<unknown class>>
-;  V07 tmp3         [V07,T23] (  3,  0   )     ref  ->   r6         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V05 tmp1         [V05,T22] (  3,  0   )     ref  ->   r5         class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+;  V06 tmp2         [V06,T25] (  2,  0   )     ref  ->   r6         class-hnd exact single-def "impImportAndPushBox" <<unknown class>>
+;  V07 tmp3         [V07,T23] (  3,  0   )     ref  ->   r4         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V08 tmp4         [V08    ] (  0,  0   )     int  ->  zero-ref   
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V10 tmp6         [V10    ] (  0,  0   )     int  ->  zero-ref   
@@ -24,7 +24,7 @@
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp10        [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp11        [V15    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V16 tmp12        [V16,T14] (  2,  2   )     int  ->   r0        
+;  V16 tmp12        [V16,T14] (  2,  2   )     int  ->   r8        
 ;* V17 tmp13        [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V18 tmp14        [V18,T15] (  2,  2   )     int  ->  [sp+0x94]  spill-single-def
 ;* V19 tmp15        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def
@@ -64,15 +64,15 @@
 ;* V53 tmp49        [V53,T21] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V54 tmp50        [V54,T04] (  2,  4   )     ref  ->   r0         single-def "Single return block return value"
 ;  V55 FramesRoot   [V55,T01] (  5,  5   )     int  ->   r5         "Pinvoke FrameListRoot"
-;  V56 PInvokeFrame [V56    ] (  6,  6   )  struct (36) [sp+0x50]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
-;  V57 tmp53        [V57,T07] (  3,  3   )     ref  ->   r4         single-def "V00.[000..004)"
-;  V58 tmp54        [V58,T08] (  3,  3   )     ref  ->   r6         single-def "V00.[004..008)"
-;  V59 tmp55        [V59,T09] (  3,  3   )     ref  ->   r7         single-def "V00.[008..012)"
-;  V60 tmp56        [V60,T10] (  3,  3   )     ref  ->   r8         single-def "V00.[012..016)"
-;  V61 tmp57        [V61,T05] (  4,  3.50)     ref  ->   r9         single-def "V00.[016..020)"
-;  V62 tmp58        [V62,T02] (  7,  4.50)     int  ->  [sp+0x78]  spill-single-def "V00.[032..036)"
+;  V56 PInvokeFrame [V56    ] (  6,  6   )  struct (36) [sp+0x54]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+;  V57 tmp53        [V57,T07] (  3,  3   )     ref  ->   r0         single-def "V00.[000..004)"
+;  V58 tmp54        [V58,T08] (  3,  3   )     ref  ->   r1         single-def "V00.[004..008)"
+;  V59 tmp55        [V59,T09] (  3,  3   )     ref  ->   r2         single-def "V00.[008..012)"
+;  V60 tmp56        [V60,T10] (  3,  3   )     ref  ->   r3         single-def "V00.[012..016)"
+;  V61 tmp57        [V61,T05] (  4,  3.50)     ref  ->   lr         single-def "V00.[016..020)"
+;  V62 tmp58        [V62,T02] (  7,  4.50)     int  ->   r4         "V00.[032..036)"
 ;  V63 tmp59        [V63,T11] (  3,  3   )     ref  ->  r12         single-def "V00.[036..040)"
-;  V64 tmp60        [V64,T12] (  3,  3   )     ref  ->   r3         single-def "V00.[040..044)"
+;  V64 tmp60        [V64,T12] (  3,  3   )     ref  ->   r6         single-def "V00.[040..044)"
 ;  V65 tmp61        [V65,T26] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
 ;  V66 tmp62        [V66,T27] (  2,  0   )     ref  ->   r1         single-def "argument with side effect"
 ;
@@ -85,120 +85,121 @@ G_M7764_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
             add     r11, sp, 184
                        ;; size=12 bbWeight=1 PerfScore 4.00
 G_M7764_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
-            add     r4, sp, 84
+            add     r4, sp, 88
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             blx     r3     // CORINFO_HELP_INIT_PINVOKE_FRAME
-            ldr     r4, [sp+0xC0]
-            ; gcrRegs +[r4]
-            ldr     r6, [sp+0xC4]
-            ; gcrRegs +[r6]
-            ldr     r7, [sp+0xC8]
-            ; gcrRegs +[r7]
-            ldr     r8, [sp+0xCC]
-            ; gcrRegs +[r8]
-            ldr     r9, [sp+0xD0]
-            ; gcrRegs +[r9]
-            ldr     lr, [sp+0xE0]
-            str     lr, [sp+0x78]
+            ldr     r0, [sp+0xC0]
+            ; gcrRegs +[r0]
+            ldr     r1, [sp+0xC4]
+            ; gcrRegs +[r1]
+            ldr     r2, [sp+0xC8]
+            ; gcrRegs +[r2]
+            ldr     r3, [sp+0xCC]
+            ; gcrRegs +[r3]
+            ldr     lr, [sp+0xD0]
+            ; gcrRegs +[lr]
+            ldr     r4, [sp+0xE0]
             ldr     r12, [sp+0xE4]
             ; gcrRegs +[r12]
-            ldr     r3, [sp+0xE8]
-            ; gcrRegs +[r3]
-            cmp     lr, 1
+            ldr     r6, [sp+0xE8]
+            ; gcrRegs +[r6]
+            cmp     r4, 1
             beq     SHORT G_M7764_IG04
-                       ;; size=46 bbWeight=1 PerfScore 15.00
-G_M7764_IG03:        ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            cmp     lr, 3
+                       ;; size=36 bbWeight=1 PerfScore 14.00
+G_M7764_IG03:        ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+            cmp     r4, 3
             beq     SHORT G_M7764_IG04
-            cmp     lr, 2
-            beq     SHORT G_M7764_IG04
-            cmp     lr, 4
-            bne     SHORT G_M7764_IG18
-            b       SHORT G_M7764_IG05
-                       ;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M7764_IG04:        ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            ldr     r2, [sp+0xD8]
-            ; gcrRegs +[r2]
+            cmp     r4, 2
+            bne     SHORT G_M7764_IG05
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M7764_IG04:        ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r7, [sp+0xD8]
+            ; gcrRegs +[r7]
             b       SHORT G_M7764_IG06
                        ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG05:        ; bbWeight=0.50, gcrefRegs=13D8 {r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r2]
-            ldr     r2, [sp+0xD4]
-            ; gcrRegs +[r2]
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M7764_IG06:        ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            ldr     r0, [r2+0x04]
-            ldr     r1, [r4+0x04]
-            str     r1, [sp+0x94]  // [V18 tmp14]
-            ldr     r1, [r6+0x04]
-            str     r1, [sp+0x90]  // [V20 tmp16]
-            ldr     r1, [r12+0x04]
-            str     r1, [sp+0x8C]  // [V22 tmp18]
-            ldr     r1, [r3+0x04]
-            str     r1, [sp+0x88]  // [V24 tmp20]
-            ldr     r1, [r7+0x04]
-            str     r1, [sp+0x84]  // [V26 tmp22]
-            ldr     r1, [r8+0x04]
-            str     r1, [sp+0x80]  // [V28 tmp24]
-            cmp     r9, 0
-            beq     SHORT G_M7764_IG08
-                       ;; size=36 bbWeight=1 PerfScore 15.00
-G_M7764_IG07:        ; bbWeight=0.50, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            ldr     r1, [r9+0x04]
-            str     r1, [sp+0x7C]  // [V52 tmp48]
-            b       SHORT G_M7764_IG09
+G_M7764_IG05:        ; bbWeight=0.50, gcrefRegs=504F {r0 r1 r2 r3 r6 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ; gcrRegs -[r7]
+            cmp     r4, 4
+            bne     G_M7764_IG18
+            ldr     r7, [sp+0xD4]
+            ; gcrRegs +[r7]
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M7764_IG08:        ; bbWeight=0.50, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
-            movs    r1, 0
-            str     r1, [sp+0x7C]  // [V52 tmp48]
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M7764_IG09:        ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
-            movs    r1, 0
-            str     r1, [sp]   // [V04 OutArgs]
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M7764_IG10:        ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref
-            str     r1, [sp+0x04]  // [V04 OutArgs+0x04]
-                       ;; size=2 bbWeight=1 PerfScore 1.00
-G_M7764_IG11:        ; bbWeight=1, gcrefRegs=13DC {r2 r3 r4 r6 r7 r8 r9 r12}, byrefRegs=0000 {}, byref, isz
-            str     r1, [sp+0x08]  // [V04 OutArgs+0x08]
-            str     r2, [sp+0x0C]  // [V04 OutArgs+0x0c]
-            str     r0, [sp+0x10]  // [V04 OutArgs+0x10]
-            str     r4, [sp+0x14]  // [V04 OutArgs+0x14]
-            ldr     r1, [sp+0x94]  // [V18 tmp14]
-            str     r1, [sp+0x18]  // [V04 OutArgs+0x18]
-            str     r6, [sp+0x1C]  // [V04 OutArgs+0x1c]
-            ldr     r1, [sp+0x90]  // [V20 tmp16]
-            str     r1, [sp+0x20]  // [V04 OutArgs+0x20]
+G_M7764_IG06:        ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r8, [r7+0x04]
+            ldr     r9, [r0+0x04]
+            str     r9, [sp+0x94]  // [V18 tmp14]
+            ldr     r9, [r1+0x04]
+            str     r9, [sp+0x90]  // [V20 tmp16]
+            ldr     r9, [r12+0x04]
+            str     r9, [sp+0x8C]  // [V22 tmp18]
+            ldr     r9, [r6+0x04]
+            str     r9, [sp+0x88]  // [V24 tmp20]
+            ldr     r9, [r2+0x04]
+            str     r9, [sp+0x84]  // [V26 tmp22]
+            ldr     r9, [r3+0x04]
+            str     r9, [sp+0x80]  // [V28 tmp24]
+            cmp     lr, 0
+            beq     SHORT G_M7764_IG08
+                       ;; size=58 bbWeight=1 PerfScore 15.00
+G_M7764_IG07:        ; bbWeight=0.50, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+            ldr     r9, [lr+0x04]
+            str     r9, [sp+0x7C]  // [V52 tmp48]
+            b       SHORT G_M7764_IG09
+                       ;; size=10 bbWeight=0.50 PerfScore 1.50
+G_M7764_IG08:        ; bbWeight=0.50, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+            mov     r9, 0
+            str     r9, [sp+0x7C]  // [V52 tmp48]
+                       ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M7764_IG09:        ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+            mov     r9, 0
+            str     r9, [sp]   // [V04 OutArgs]
+                       ;; size=8 bbWeight=1 PerfScore 2.00
+G_M7764_IG10:        ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref
+            str     r9, [sp+0x04]  // [V04 OutArgs+0x04]
+                       ;; size=4 bbWeight=1 PerfScore 1.00
+G_M7764_IG11:        ; bbWeight=1, gcrefRegs=50CF {r0 r1 r2 r3 r6 r7 r12 lr}, byrefRegs=0000 {}, byref, isz
+            str     r9, [sp+0x08]  // [V04 OutArgs+0x08]
+            str     r7, [sp+0x0C]  // [V04 OutArgs+0x0c]
+            str     r8, [sp+0x10]  // [V04 OutArgs+0x10]
+            str     r0, [sp+0x14]  // [V04 OutArgs+0x14]
+            ldr     r9, [sp+0x94]  // [V18 tmp14]
+            str     r9, [sp+0x18]  // [V04 OutArgs+0x18]
+            str     r1, [sp+0x1C]  // [V04 OutArgs+0x1c]
+            ldr     r9, [sp+0x90]  // [V20 tmp16]
+            str     r9, [sp+0x20]  // [V04 OutArgs+0x20]
             str     r12, [sp+0x24] // [V04 OutArgs+0x24]
-            ldr     r1, [sp+0x8C]  // [V22 tmp18]
-            str     r1, [sp+0x28]  // [V04 OutArgs+0x28]
-            str     r3, [sp+0x2C]  // [V04 OutArgs+0x2c]
-            ldr     r1, [sp+0x88]  // [V24 tmp20]
-            str     r1, [sp+0x30]  // [V04 OutArgs+0x30]
-            str     r7, [sp+0x34]  // [V04 OutArgs+0x34]
-            ldr     r1, [sp+0x84]  // [V26 tmp22]
-            str     r1, [sp+0x38]  // [V04 OutArgs+0x38]
-            str     r8, [sp+0x3C]  // [V04 OutArgs+0x3c]
-            ldr     r1, [sp+0x80]  // [V28 tmp24]
-            str     r1, [sp+0x40]  // [V04 OutArgs+0x40]
-            str     r9, [sp+0x44]  // [V04 OutArgs+0x44]
-            ldr     r1, [sp+0x7C]  // [V52 tmp48]
-            str     r1, [sp+0x48]  // [V04 OutArgs+0x48]
-            mov     r0, lr
+            ldr     r9, [sp+0x8C]  // [V22 tmp18]
+            str     r9, [sp+0x28]  // [V04 OutArgs+0x28]
+            str     r6, [sp+0x2C]  // [V04 OutArgs+0x2c]
+            ldr     r9, [sp+0x88]  // [V24 tmp20]
+            str     r9, [sp+0x30]  // [V04 OutArgs+0x30]
+            str     r2, [sp+0x34]  // [V04 OutArgs+0x34]
+            ldr     r9, [sp+0x84]  // [V26 tmp22]
+            str     r9, [sp+0x38]  // [V04 OutArgs+0x38]
+            str     r3, [sp+0x3C]  // [V04 OutArgs+0x3c]
+            ldr     r9, [sp+0x80]  // [V28 tmp24]
+            str     r9, [sp+0x40]  // [V04 OutArgs+0x40]
+            str     lr, [sp+0x44]  // [V04 OutArgs+0x44]
+            ldr     r9, [sp+0x7C]  // [V52 tmp48]
+            str     r9, [sp+0x48]  // [V04 OutArgs+0x48]
+            mov     r0, r4
+            ; gcrRegs -[r0]
             movs    r1, 0
+            ; gcrRegs -[r1]
             movs    r2, 0
             ; gcrRegs -[r2]
...

realworld.run.linux.arm.checked.mch

-6 (-4.17%) : 16098.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)

@@ -11,7 +11,7 @@
 ;* V00 loc0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.String>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V02 tmp1         [V02,T00] (  5, 44   )     ref  ->   r4         class-hnd exact "impAppendStmt" <System.String>
-;  V03 tmp2         [V03,T02] (  5, 15   )     ref  ->  registers   class-hnd "Inline return value spill temp" <System.String>
+;  V03 tmp2         [V03,T02] (  5, 15   )     ref  ->   r5         class-hnd "Inline return value spill temp" <System.String>
 ;  V04 tmp3         [V04,T01] (  5, 32   )     ref  ->   r0         class-hnd exact "Inlining Arg" <System.String>
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct ( 8) zero-ref    multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
 ;* V06 tmp5         [V06    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
@@ -77,11 +77,8 @@ G_M26077_IG02:        ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 G_M26077_IG03:        ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [r4+0x04]
             cmp     r1, 0
-            beq     SHORT G_M26077_IG04
-            cmp     r0, 0
-            beq     SHORT G_M26077_IG07
-            b       SHORT G_M26077_IG06
-                       ;; size=12 bbWeight=2 PerfScore 12.00
+            bne     SHORT G_M26077_IG06
+                       ;; size=6 bbWeight=2 PerfScore 6.00
 G_M26077_IG04:        ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r4]
             mov     r5, r0
@@ -98,22 +95,21 @@ G_M26077_IG05:        ; bbWeight=2, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byre
                        ;; size=2 bbWeight=2 PerfScore 2.00
 G_M26077_IG06:        ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r5] +[r0 r4]
+            cmp     r0, 0
+            beq     SHORT G_M26077_IG07
             ldr     r3, [r0+0x04]
             cmp     r3, 0
-            beq     SHORT G_M26077_IG07
-            add     r2, r4, 8
-            ; byrRegs +[r2]
-            b       SHORT G_M26077_IG08
-                       ;; size=12 bbWeight=2 PerfScore 10.00
+            bne     SHORT G_M26077_IG08
+                       ;; size=10 bbWeight=2 PerfScore 10.00
 G_M26077_IG07:        ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r0]
-            ; byrRegs -[r2]
             mov     r5, r4
             ; gcrRegs +[r5]
             b       SHORT G_M26077_IG09
                        ;; size=4 bbWeight=2 PerfScore 4.00
-G_M26077_IG08:        ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, byref
-            ; gcrRegs -[r4-r5] +[r0]
+G_M26077_IG08:        ; bbWeight=2, gcrefRegs=0011 {r0 r4}, byrefRegs=0000 {}, byref
+            ; gcrRegs -[r5] +[r0]
+            add     r2, r4, 8
             ; byrRegs +[r2]
             adds    r0, 8
             ; gcrRegs -[r0]
@@ -127,15 +123,13 @@ G_M26077_IG08:        ; bbWeight=2, gcrefRegs=0001 {r0}, byrefRegs=0004 {r2}, by
             movt    lr, 0xd1ff
             ldr     lr, [lr]
             blx     lr     // <unknown method>
-            ; gcrRegs +[r0]
+            ; gcrRegs -[r4] +[r0]
             ; byrRegs -[r0 r2]
-            mov     r4, r0
-            ; gcrRegs +[r4]
-            mov     r5, r4
+            mov     r5, r0
             ; gcrRegs +[r5]
-                       ;; size=26 bbWeight=2 PerfScore 20.00
+                       ;; size=28 bbWeight=2 PerfScore 20.00
 G_M26077_IG09:        ; bbWeight=8, gcrefRegs=0020 {r5}, byrefRegs=0000 {}, byref, isz
-            ; gcrRegs -[r0 r4]
+            ; gcrRegs -[r0]
             mov     r0, r5
             ; gcrRegs +[r0]
             movw    r3, 0xd1ff
@@ -154,7 +148,7 @@ G_M26077_IG11:        ; bbWeight=1, epilog, nogc, extend
             pop     {r4,r5,r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 144, prolog size 8, PerfScore 252.00, instruction count 55, allocated bytes for code 144 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
+; Total bytes of code 138, prolog size 8, PerfScore 246.00, instruction count 52, allocated bytes for code 138 (MethodHash=15049a22) for method ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -166,7 +160,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 72 (0x00048) Actual length = 144 (0x000090)
+  Function Length   : 69 (0x00045) Actual length = 138 (0x00008a)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

-40 (-4.11%) : 37082.dasm - System.RuntimeType:ValidateGenericArguments(System.Reflection.MemberInfo,System.RuntimeType[],System.Exception) (FullOpts)

@@ -46,11 +46,11 @@
 ;* V35 tmp22        [V35    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
 ;* V36 tmp23        [V36    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
 ;  V37 tmp24        [V37,T03] (  6, 12   )     ref  ->   r0         class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;  V38 tmp25        [V38,T29] (  3,  0   )     ref  ->   r8         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V38 tmp25        [V38,T29] (  3,  0   )     ref  ->   r9         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;* V39 tmp26        [V39    ] (  0,  0   )  struct ( 4) zero-ref    ld-addr-op "NewObj constructor temp" <System.RuntimeTypeHandle>
 ;* V40 tmp27        [V40    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.RuntimeType>
-;  V41 tmp28        [V41,T04] (  6, 12   )     ref  ->   r8         class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
-;  V42 tmp29        [V42,T30] (  3,  0   )     ref  ->   r9         class-hnd exact "NewObj constructor temp" <<unknown class>>
+;  V41 tmp28        [V41,T04] (  6, 12   )     ref  ->   r9         class-hnd exact "Inline stloc first use temp" <System.RuntimeType>
+;  V42 tmp29        [V42,T30] (  3,  0   )     ref  ->   r8         class-hnd exact "NewObj constructor temp" <<unknown class>>
 ;  V43 FramesRoot   [V43,T12] (  5,  4   )     int  ->   r5         "Pinvoke FrameListRoot"
 ;  V44 PInvokeFrame [V44    ] (  6,  4.50)  struct (36) [sp+0x04]  do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
 ;  V45 tmp32        [V45    ] ( 10, 17   )     ref  ->  [sp+0x4C]  do-not-enreg[X] addr-exposed "field V09.m_type (fldOffset=0x0)" P-DEP
@@ -109,7 +109,7 @@ G_M20848_IG03:        ; bbWeight=0.50, gcrefRegs=01C0 {r6 r7 r8}, byrefRegs=0000
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             cmp     r0, r3
-            bne     G_M20848_IG30
+            bne     G_M20848_IG25
             mov     r0, r8
             ; gcrRegs +[r0]
             movw    r3, 0xd1ff
@@ -144,7 +144,7 @@ G_M20848_IG05:        ; bbWeight=0.25, gcrefRegs=0191 {r0 r4 r7 r8}, byrefRegs=0
             ; GC ptr vars +{V01}
             str     r4, [sp+0x30]  // [V03 loc0]
             ; GC ptr vars +{V03}
-            bne     G_M20848_IG31
+            bne     G_M20848_IG26
                        ;; size=20 bbWeight=0.25 PerfScore 1.75
 G_M20848_IG06:        ; bbWeight=0.50, gcVars=0000000000002440 {V01 V02 V03}, gcrefRegs=0100 {r8}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs -[r4 r7]
@@ -226,20 +226,16 @@ G_M20848_IG12:        ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs=
 G_M20848_IG13:        ; bbWeight=0.50, gcVars=0000000000002400 {V02 V03}, gcrefRegs=01D0 {r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref
             ; gcrRegs +[r6]
             ; GC ptr vars -{V01}
-            str     r8, [sp+0x3C]  // [V00 arg0]
-            ; GC ptr vars +{V00}
             ldr     r1, [r8+0x1C]
             ; gcrRegs +[r1]
-            ldr     r8, [sp+0x3C]  // [V00 arg0]
-                       ;; size=12 bbWeight=0.50 PerfScore 1.50
+                       ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M20848_IG14:        ; bbWeight=0.50, gcrefRegs=01D2 {r1 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
-            ; GC ptr vars -{V00}
             mov     r0, r1
             ; gcrRegs +[r0]
             cmp     r0, 0
             ldr     r3, [sp+0x30]  // [V03 loc0]
             ; gcrRegs +[r3]
-            beq     SHORT G_M20848_IG23
+            beq     SHORT G_M20848_IG20
                        ;; size=8 bbWeight=0.50 PerfScore 2.00
 G_M20848_IG15:        ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs=01D3 {r0 r1 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
             ; gcrRegs -[r3]
@@ -248,7 +244,7 @@ G_M20848_IG15:        ; bbWeight=0.25, gcVars=0000000000002000 {V02}, gcrefRegs=
             movw    r2, 0xd1ff
             movt    r2, 0xd1ff
             cmp     r3, r2
-            bne     G_M20848_IG32
+            bne     G_M20848_IG27
                        ;; size=16 bbWeight=0.25 PerfScore 1.25
 G_M20848_IG16:        ; bbWeight=0.50, gcrefRegs=01D1 {r0 r4 r6 r7 r8}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r1]
@@ -275,12 +271,12 @@ G_M20848_IG17:        ; bbWeight=1, gcVars=0000000000002040 {V01 V02}, gcrefRegs
             ldr     r12, [r7+0x04]
             str     r12, [sp+0x40] // [V55 cse0]
             cmp     r12, 0
-            ble     SHORT G_M20848_IG25
+            ble     SHORT G_M20848_IG22
             cmp     r4, 0
-            beq     SHORT G_M20848_IG24
+            beq     SHORT G_M20848_IG21
             ldr     r0, [r4+0x04]
             cmp     r0, r12
-            blt     SHORT G_M20848_IG22
+            blt     SHORT G_M20848_IG19
                        ;; size=30 bbWeight=1 PerfScore 11.00
 G_M20848_IG18:        ; bbWeight=3.96, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
             ; GC ptr vars -{V01}
@@ -301,71 +297,49 @@ G_M20848_IG18:        ; bbWeight=3.96, gcVars=0000000000002000 {V02}, gcrefRegs=
             ldr     r0, [sp+0x4C]  // [V45 tmp32]
             ; gcrRegs +[r0]
             cmp     r0, 0
-            str     r8, [sp+0x3C]  // [V00 arg0]
-            ; GC ptr vars +{V00}
-            beq     G_M20848_IG33
-            ldrsb   r8, [r2]
-            ; gcrRegs -[r8]
+            beq     SHORT G_M20848_IG28
+            ldrsb   r9, [r2]
             str     r2, [sp+0x2C]  // [V11 loc8]
             ; GC ptr vars +{V11}
             str     r2, [sp+0x4C]  // [V45 tmp32]
-            ldr     r8, [sp+0x4C]  // [V45 tmp32]
-            ; gcrRegs +[r8]
-            cmp     r8, 0
-            beq     G_M20848_IG34
+            ldr     r9, [sp+0x4C]  // [V45 tmp32]
+            ; gcrRegs +[r9]
+            cmp     r9, 0
+            beq     G_M20848_IG29
             str     r3, [sp+0x30]  // [V03 loc0]
             ; GC ptr vars +{V03}
             mov     r1, r3
             mov     r2, r6
-            mov     r3, r8
-            movw    r8, 0xd1ff
-            ; gcrRegs -[r8]
-            movt    r8, 0xd1ff
-            ldr     r8, [r8]
-            blx     r8     // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
+            mov     r3, r9
+            movw    r9, 0xd1ff
+            ; gcrRegs -[r9]
+            movt    r9, 0xd1ff
+            ldr     r9, [r9]
+            blx     r9     // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
             ; gcrRegs -[r0-r3]
             cmp     r0, 0
-            beq     SHORT G_M20848_IG21
-            ldr     r8, [sp+0x48]  // [V10 loc7]
-            add     r8, r8, 1
+            beq     G_M20848_IG30
+            ldr     r9, [sp+0x48]  // [V10 loc7]
+            add     r9, r9, 1
             ldr     lr, [sp+0x40]  // [V55 cse0]
-            cmp     lr, r8
+            cmp     lr, r9
+            mov     lr, r9
             ldr     r3, [sp+0x30]  // [V03 loc0]
             ; gcrRegs +[r3]
-            bgt     SHORT G_M20848_IG20
-                       ;; size=104 bbWeight=3.96 PerfScore 138.60
-G_M20848_IG19:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[r3-r4 r6-r7]
-            ; GC ptr vars -{V00 V02 V03 V11 V12}
-            b       SHORT G_M20848_IG25
-                       ;; size=2 bbWeight=1 PerfScore 1.00
-G_M20848_IG20:        ; bbWeight=1.98, gcVars=0000000000002080 {V00 V02}, gcrefRegs=00D8 {r3 r4 r6 r7}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs +[r3-r4 r6-r7]
-            ; GC ptr vars +{V00 V02}
-            mov     lr, r8
-            ldr     r8, [sp+0x3C]  // [V00 arg0]
-            ; gcrRegs +[r8]
-            b       SHORT G_M20848_IG18
-                       ;; size=8 bbWeight=1.98 PerfScore 5.94
-G_M20848_IG21:        ; bbWeight=1.98, gcVars=0000000000002086 {V00 V02 V11 V12}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[r3-r4 r6-r8]
-            ; GC ptr vars +{V01 V11 V12}
-            ldr     r9, [sp+0x34]  // [V02 arg2]
-            ; gcrRegs +[r9]
-            b       SHORT G_M20848_IG35
-                       ;; size=6 bbWeight=1.98 PerfScore 3.96
-G_M20848_IG22:        ; bbWeight=0.50, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
-            ; gcrRegs -[r9] +[r3-r4 r6-r8]
-            ; GC ptr vars -{V00 V01 V02 V11 V12}
+            bgt     SHORT G_M20848_IG18
+            b       SHORT G_M20848_IG22
+                       ;; size=104 bbWeight=3.96 PerfScore 142.56
+G_M20848_IG19:        ; bbWeight=0.50, gcVars=0000000000002000 {V02}, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, gcvars, byref, isz
+            ; GC ptr vars -{V02 V03 V11 V12}
             ldr     r12, [sp+0x40] // [V55 cse0]
-            b       SHORT G_M20848_IG24
+            b       SHORT G_M20848_IG21
                        ;; size=6 bbWeight=0.50 PerfScore 1.00
-G_M20848_IG23:        ; bbWeight=0.25, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M20848_IG20:        ; bbWeight=0.25, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             str     r7, [sp+0x38]  // [V01 arg1]
             ; GC ptr vars +{V01}
             b       SHORT G_M20848_IG17
                        ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M20848_IG24:        ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
+G_M20848_IG21:        ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefRegs=0000 {}, byref, isz
             ; GC ptr vars -{V01} +{V02}
             add     r0, r7, 8
             ; byrRegs +[r0]
@@ -375,7 +349,7 @@ G_M20848_IG24:        ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefReg
             ldr     r0, [r4+0x04]
             ; byrRegs -[r0]
             cmp     lr, r0
-            bhs     SHORT G_M20848_IG29
+            bhs     SHORT G_M20848_IG24
             add     r0, r4, 8
             ; byrRegs +[r0]
             str     lr, [sp+0x48]  // [V10 loc7]
@@ -390,75 +364,56 @@ G_M20848_IG24:        ; bbWeight=0.04, gcrefRegs=01D8 {r3 r4 r6 r7 r8}, byrefReg
             ldr     r0, [sp+0x4C]  // [V45 tmp32]
             ; gcrRegs +[r0]
             cmp     r0, 0
-            str     r8, [sp+0x3C]  // [V00 arg0]
-            ; GC ptr vars +{V00}
-            beq     SHORT G_M20848_IG33
-            ldrsb   r8, [r2]
-            ; gcrRegs -[r8]
+            beq     SHORT G_M20848_IG28
+            ldrsb   r9, [r2]
             str     r2, [sp+0x2C]  // [V11 loc8]
             ; GC ptr vars +{V11}
             str     r2, [sp+0x4C]  // [V45 tmp32]
-            ldr     r8, [sp+0x4C]  // [V45 tmp32]
-            ; gcrRegs +[r8]
-            cmp     r8, 0
-            beq     SHORT G_M20848_IG34
+            ldr     r9, [sp+0x4C]  // [V45 tmp32]
+            ; gcrRegs +[r9]
+            cmp     r9, 0
+            beq     SHORT G_M20848_IG29
             str     r3, [sp+0x30]  // [V03 loc0]
             ; GC ptr vars +{V03}
             mov     r1, r3
             mov     r2, r6
-            mov     r3, r8
-            movw    r8, 0xd1ff
-            ; gcrRegs -[r8]
-            movt    r8, 0xd1ff
-            ldr     r8, [r8]
-            blx     r8     // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
+            mov     r3, r9
+            movw    r9, 0xd1ff
+            ; gcrRegs -[r9]
+            movt    r9, 0xd1ff
+            ldr     r9, [r9]
+            blx     r9     // System.RuntimeTypeHandle:SatisfiesConstraints(System.RuntimeType,System.RuntimeType[],System.RuntimeType[],System.RuntimeType):ubyte
             ; gcrRegs -[r0-r3]
             cmp     r0, 0
-            beq     SHORT G_M20848_IG28
-            ldr     r8, [sp+0x48]  // [V10 loc7]
-            add     r8, r8, 1
+            beq     SHORT G_M20848_IG30
+            ldr     r9, [sp+0x48]  // [V10 loc7]
+            add     r9, r9, 1
             ldr     r0, [sp+0x40]  // [V55 cse0]
-            cmp     r0, r8
+            cmp     r0, r9
             mov     r12, r0
-            mov     lr, r8
+            mov     lr, r9
             ldr     r3, [sp+0x30]  // [V03 loc0]
             ; gcrRegs +[r3]
-            bgt     SHORT G_M20848_IG27
-                       ;; size=112 bbWeight=0.04 PerfScore 1.64
-G_M20848_IG25:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            ; gcrRegs -[r3-r4 r6-r7]
-            ; GC ptr vars -{V00 V02 V03 V11 V12}
+            bgt     SHORT G_M20848_IG21
+                       ;; size=108 bbWeight=0.04 PerfScore 1.60
+G_M20848_IG22:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+            ; gcrRegs -[r3-r4 r6-r8]
...

-24 (-3.64%) : 29920.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)

@@ -13,15 +13,15 @@
 ;  V02 arg2         [V02,T21] (  6,  4.50)   byref  ->   r6         single-def
 ;  V03 loc0         [V03,T01] (  7, 36   )   ubyte  ->   r7        
 ;  V04 loc1         [V04,T09] (  5, 16   )     ref  ->   r0         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol>
-;  V05 loc2         [V05,T02] (  7, 24   )     ref  ->   r8         class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
+;  V05 loc2         [V05,T02] (  7, 24   )     ref  ->   r4         class-hnd <Microsoft.CodeAnalysis.CSharp.BoundExpression>
 ;* V06 loc3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundEventAccess>
 ;  V07 loc4         [V07,T22] (  6,  3   )     ref  ->   r4         class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
 ;  V08 loc5         [V08,T31] (  4,  1.75)     ref  ->   r0         class-hnd exact <Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedPrimaryConstructor>
 ;  V09 loc6         [V09,T23] (  4,  2   )     ref  ->   r1         class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol>
-;  V10 loc7         [V10,T08] (  5, 17   )     ref  ->   r8         class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
+;  V10 loc7         [V10,T08] (  5, 17   )     ref  ->   r4         class-hnd exact <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
 ;  V11 OutArgs      [V11    ] (  1,  1   )  struct ( 8) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V12 tmp1         [V12,T19] (  3,  8   )     int  ->   r2         "fgMakeTemp is creating a new local variable"
-;  V13 tmp2         [V13,T07] (  5, 20   )     ref  ->   r8         class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundEventAccess>
+;  V13 tmp2         [V13,T07] (  5, 20   )     ref  ->   r4         class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundEventAccess>
 ;  V14 tmp3         [V14,T20] (  3,  8   )     int  ->   r3         "fgMakeTemp is creating a new local variable"
 ;  V15 tmp4         [V15,T15] (  3, 12   )     ref  ->   r1         class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
 ;  V16 tmp5         [V16,T24] (  3,  2   )     int  ->   r3         "fgMakeTemp is creating a new local variable"
@@ -34,7 +34,7 @@
 ;  V23 tmp12        [V23,T28] (  2,  2   )     ref  ->   r1         class-hnd single-def "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundLocal>
 ;  V24 tmp13        [V24,T11] (  3, 16   )     int  ->   r3         "fgMakeTemp is creating a new local variable"
 ;  V25 tmp14        [V25,T13] (  2, 16   )     ref  ->   r1         class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundPointerElementAccess>
-;  V26 tmp15        [V26,T14] (  2, 16   )     ref  ->   r8         "CASTCLASS eval op1"
+;  V26 tmp15        [V26,T14] (  2, 16   )     ref  ->   r4         "CASTCLASS eval op1"
 ;* V27 tmp16        [V27    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <Microsoft.CodeAnalysis.CSharp.BoundFieldAccess>
 ;  V28 tmp17        [V28,T30] (  2,  2   )     int  ->   r0         "Single return block return value"
 ;  V29 tmp18        [V29,T16] (  3, 12   )     ref  ->   r0         "argument with side effect"
@@ -43,7 +43,7 @@
 ;  V32 tmp21        [V32,T29] (  2,  2   )     ref  ->   r0         "argument with side effect"
 ;  V33 tmp22        [V33,T04] (  3, 24   )     ref  ->   r0         "argument with side effect"
 ;  V34 cse0         [V34,T32] (  3,  1.50)     int  ->   r5         "CSE - moderate"
-;  V35 rat0         [V35,T05] (  3, 24   )     int  ->   r4         "ReplaceWithLclVar is creating a new local variable"
+;  V35 rat0         [V35,T05] (  3, 24   )     int  ->   r8         "ReplaceWithLclVar is creating a new local variable"
 ;  V36 rat1         [V36,T06] (  3, 24   )     int  ->   r9         "ReplaceWithLclVar is creating a new local variable"
 ;  TEMP_01                                     ref  ->  [r11-0x1C]
 ;
@@ -80,21 +80,21 @@ G_M23887_IG04:        ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
             movt    r3, 0xd1ff
             cmp     r0, r3
             bne     G_M23887_IG28
-            ldr     r8, [r1+0x10]
-            ; gcrRegs +[r8]
-            cmp     r8, 0
+            ldr     r4, [r1+0x10]
+            ; gcrRegs +[r4]
+            cmp     r4, 0
             beq     G_M23887_IG22
-                       ;; size=40 bbWeight=4 PerfScore 48.00
-G_M23887_IG05:        ; bbWeight=1, gcrefRegs=0120 {r5 r8}, byrefRegs=0040 {r6}, byref, isz
+                       ;; size=36 bbWeight=4 PerfScore 48.00
+G_M23887_IG05:        ; bbWeight=1, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref, isz
             ; gcrRegs -[r1]
-            ldr     r0, [r8]
+            ldr     r0, [r4]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
             cmp     r0, r3
             bne     G_M23887_IG22
-                       ;; size=18 bbWeight=1 PerfScore 5.00
-G_M23887_IG06:        ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0040 {r6}, byref, isz
-            ldr     r0, [r8+0x14]
+                       ;; size=16 bbWeight=1 PerfScore 5.00
+G_M23887_IG06:        ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref, isz
+            ldr     r0, [r4+0x14]
             ; gcrRegs +[r0]
             ldr     r3, [r0]
             ldr     r3, [r3+0x64]
@@ -105,11 +105,11 @@ G_M23887_IG06:        ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0040 {r6},
             cmp     r0, 0
             beq     G_M23887_IG22
             b       SHORT G_M23887_IG14
-                       ;; size=20 bbWeight=4 PerfScore 32.00
+                       ;; size=18 bbWeight=4 PerfScore 32.00
 G_M23887_IG07:        ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6}, byref, isz
-            ; gcrRegs -[r8] +[r1]
-            sub     r4, r7, 110
-            cmp     r4, 7
+            ; gcrRegs -[r4] +[r1]
+            sub     r8, r7, 110
+            cmp     r8, 7
             bhi     SHORT G_M23887_IG08
             movw    r0, LOW ADDRESS J_M23887_DS00
             movt    r0, HIGH ADDRESS J_M23887_DS00
@@ -123,8 +123,8 @@ G_M23887_IG07:        ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
             DD      G_M23887_IG24
             DD      G_M23887_IG13
             DD      G_M23887_IG15
-            ldr     pc, [r0+4*r4]
-                       ;; size=20 bbWeight=4 PerfScore 24.00
+            ldr     pc, [r0+4*r8]
+                       ;; size=22 bbWeight=4 PerfScore 24.00
 G_M23887_IG08:        ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6}, byref, isz
             sub     r9, r7, 185
             cmp     r9, 5
@@ -153,23 +153,23 @@ G_M23887_IG10:        ; bbWeight=2, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
             bne     G_M23887_IG29
             ldr     r0, [r1+0x14]
             ; gcrRegs +[r0]
-            ldr     r8, [r1+0x10]
-            ; gcrRegs +[r8]
+            ldr     r4, [r1+0x10]
+            ; gcrRegs +[r4]
             b       SHORT G_M23887_IG12
-                       ;; size=24 bbWeight=2 PerfScore 16.00
+                       ;; size=22 bbWeight=2 PerfScore 16.00
 G_M23887_IG11:        ; bbWeight=2, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6}, byref, isz
-            ; gcrRegs -[r0 r8]
+            ; gcrRegs -[r0 r4]
             ldr     r0, [r1]
             movw    r2, 0xd1ff
             movt    r2, 0xd1ff
             cmp     r0, r2
             bne     G_M23887_IG30
-            mov     r8, r1
-            ; gcrRegs +[r8]
-            ldrb    r0, [r8+0x18]
+            mov     r4, r1
+            ; gcrRegs +[r4]
+            ldrb    r0, [r4+0x18]
             cmp     r0, 0
             beq     G_M23887_IG24
-            ldr     r0, [r8+0x14]
+            ldr     r0, [r4+0x14]
             ; gcrRegs +[r0]
             ldr     r3, [r0]
             ldr     r3, [r3+0x5C]
@@ -179,16 +179,16 @@ G_M23887_IG11:        ; bbWeight=2, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
             ; gcr arg pop 0
             cmp     r0, 0
             bne     G_M23887_IG24
-            ldr     r0, [r8+0x14]
+            ldr     r0, [r4+0x14]
             ; gcrRegs +[r0]
             ldr     r3, [r0]
             ldr     r3, [r3+0x60]
             ldr     r3, [r3+0x04]
             blx     r3     // <unknown method>
             ; gcr arg pop 0
-            ldr     r8, [r8+0x10]
-                       ;; size=62 bbWeight=2 PerfScore 44.00
-G_M23887_IG12:        ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r6}, byref, isz
+            ldr     r4, [r4+0x10]
+                       ;; size=54 bbWeight=2 PerfScore 44.00
+G_M23887_IG12:        ; bbWeight=4, gcrefRegs=0031 {r0 r4 r5}, byrefRegs=0040 {r6}, byref, isz
             cmp     r0, 0
             beq     G_M23887_IG24
             ldr     r3, [r0]
@@ -199,7 +199,7 @@ G_M23887_IG12:        ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r
             ; gcr arg pop 0
             cmp     r0, 0
             bne     G_M23887_IG24
-            cmp     r8, 0
+            cmp     r4, 0
             beq     G_M23887_IG24
             movs    r1, 0
             str     r1, [sp]
@@ -209,10 +209,10 @@ G_M23887_IG12:        ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r
             ; gcrRegs +[r1]
             str     r1, [sp+0x04]
             ; gcr arg write
-            ldr     r1, [r8+0x04]
+            ldr     r1, [r4+0x04]
             mov     r0, r5
             ; gcrRegs +[r0]
-            mov     r2, r8
+            mov     r2, r4
             ; gcrRegs +[r2]
             movs    r3, 21
             movw    lr, 0xd1ff
@@ -223,7 +223,7 @@ G_M23887_IG12:        ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r
             ; gcr arg pop 0
             cmp     r0, 0
             beq     SHORT G_M23887_IG24
-            ldr     r0, [r8+0x0C]
+            ldr     r0, [r4+0x0C]
             ; gcrRegs +[r0]
             ldr     r3, [r0]
             ldr     r3, [r3+0x5C]
@@ -233,12 +233,12 @@ G_M23887_IG12:        ; bbWeight=4, gcrefRegs=0121 {r0 r5 r8}, byrefRegs=0040 {r
             ; gcr arg pop 0
             cmp     r0, 0
             bne     SHORT G_M23887_IG24
-            mov     r1, r8
+            mov     r1, r4
             ; gcrRegs +[r1]
             b       SHORT G_M23887_IG03
-                       ;; size=92 bbWeight=4 PerfScore 140.00
+                       ;; size=86 bbWeight=4 PerfScore 140.00
 G_M23887_IG13:        ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6}, byref, isz
-            ; gcrRegs -[r8]
+            ; gcrRegs -[r4]
             ldr     r0, [r1]
             movw    r2, 0xd1ff
             movt    r2, 0xd1ff
@@ -247,14 +247,14 @@ G_M23887_IG13:        ; bbWeight=4, gcrefRegs=0022 {r1 r5}, byrefRegs=0040 {r6},
             ldr     r1, [r1+0x14]
             b       SHORT G_M23887_IG03
                        ;; size=20 bbWeight=4 PerfScore 28.00
-G_M23887_IG14:        ; bbWeight=4, gcrefRegs=0120 {r5 r8}, byrefRegs=0040 {r6}, byref, isz
-            ; gcrRegs -[r1] +[r8]
-            ldr     r1, [r8+0x10]
+G_M23887_IG14:        ; bbWeight=4, gcrefRegs=0030 {r4 r5}, byrefRegs=0040 {r6}, byref, isz
+            ; gcrRegs -[r1] +[r4]
+            ldr     r1, [r4+0x10]
             ; gcrRegs +[r1]
             b       SHORT G_M23887_IG03
-                       ;; size=6 bbWeight=4 PerfScore 8.00
+                       ;; size=4 bbWeight=4 PerfScore 8.00
 G_M23887_IG15:        ; bbWeight=0.50, gcrefRegs=0002 {r1}, byrefRegs=0040 {r6}, byref, isz
-            ; gcrRegs -[r5 r8]
+            ; gcrRegs -[r4-r5]
             ldr     r0, [r1]
             movw    r3, 0xd1ff
             movt    r3, 0xd1ff
@@ -475,7 +475,7 @@ RWD32   dd  G_M23887_IG22
            dd  G_M23887_IG24
 
 
-; Total bytes of code 660, prolog size 18, PerfScore 452.25, instruction count 242, allocated bytes for code 660 (MethodHash=0bf2a2b0) for method Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)
+; Total bytes of code 636, prolog size 18, PerfScore 452.25, instruction count 242, allocated bytes for code 636 (MethodHash=0bf2a2b0) for method Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -487,7 +487,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 330 (0x0014a) Actual length = 660 (0x000294)
+  Function Length   : 318 (0x0013e) Actual length = 636 (0x00027c)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+4 (+4.35%) : 22485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)

@@ -19,7 +19,7 @@
 ;
 ; Lcl frame size = 4
 
-G_M5512_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M5512_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
             push    {r3,r4,r11,lr}
             add     r11, sp, 8
                        ;; size=8 bbWeight=1 PerfScore 2.00
@@ -49,7 +49,7 @@ G_M5512_IG03:        ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r0]
             ; gcr arg pop 0
             cmp     r0, 0
-            bne     SHORT G_M5512_IG09
+            bne     SHORT G_M5512_IG07
                        ;; size=36 bbWeight=2 PerfScore 28.00
 G_M5512_IG04:        ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ldr     r1, [r4+0x08]
@@ -57,13 +57,13 @@ G_M5512_IG04:        ; bbWeight=2, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ldrh    r0, [r1+0x08]
             movw    r3, 0xd1ff
             cmp     r0, r3
-            beq     SHORT G_M5512_IG07
+            beq     SHORT G_M5512_IG09
             ldr     r4, [r4+0x04]
                        ;; size=14 bbWeight=2 PerfScore 12.00
 G_M5512_IG05:        ; bbWeight=8, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r1]
             cmp     r4, 0
-            beq     SHORT G_M5512_IG07
+            beq     SHORT G_M5512_IG09
                        ;; size=4 bbWeight=8 PerfScore 16.00
 G_M5512_IG06:        ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref, isz
             movw    r1, 0xd1ff
@@ -72,22 +72,26 @@ G_M5512_IG06:        ; bbWeight=4, gcrefRegs=0010 {r4}, byrefRegs=0000 {}, byref
             ; gcrRegs +[r1]
             cmp     r4, r1
             bne     SHORT G_M5512_IG03
-                       ;; size=14 bbWeight=4 PerfScore 20.00
+            b       SHORT G_M5512_IG11
+                       ;; size=16 bbWeight=4 PerfScore 24.00
 G_M5512_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             ; gcrRegs -[r1 r4]
-            movs    r0, 0
+            movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M5512_IG08:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
 G_M5512_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-            movs    r0, 1
+            movs    r0, 0
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M5512_IG10:        ; bbWeight=0.50, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M5512_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+            b       SHORT G_M5512_IG09
+                       ;; size=2 bbWeight=0.50 PerfScore 0.50
 
-; Total bytes of code 92, prolog size 8, PerfScore 82.00, instruction count 35, allocated bytes for code 92 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 86.50, instruction count 37, allocated bytes for code 96 (MethodHash=0d76ea77) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -99,7 +103,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 46 (0x0002e) Actual length = 92 (0x00005c)
+  Function Length   : 48 (0x00030) Actual length = 96 (0x000060)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+6 (+4.62%) : 33782.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)

@@ -37,78 +37,82 @@ G_M44751_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byre
             adds    r1, r0, r1
             mov     lr, 0
             cmp     r0, r1
-            bhs     SHORT G_M44751_IG13
+            bhs     SHORT G_M44751_IG05
                        ;; size=12 bbWeight=1 PerfScore 5.00
 G_M44751_IG03:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             add     r12, r0, 2
             ldrh    r0, [r0]
             cmp     r0, 128
-            bge     SHORT G_M44751_IG05
+            bge     SHORT G_M44751_IG06
                        ;; size=10 bbWeight=4 PerfScore 16.00
 G_M44751_IG04:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             movs    r4, 1
-            b       SHORT G_M44751_IG08
+            b       SHORT G_M44751_IG09
                        ;; size=4 bbWeight=2 PerfScore 4.00
-G_M44751_IG05:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
-            cmp     r0, 0x800
-            bge     SHORT G_M44751_IG06
-            movs    r4, 2
-            b       SHORT G_M44751_IG08
-                       ;; size=10 bbWeight=2 PerfScore 8.00
+G_M44751_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+            mov     r12, r0
+            b       SHORT G_M44751_IG14
+                       ;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M44751_IG06:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+            cmp     r0, 0x800
+            bge     SHORT G_M44751_IG07
+            movs    r4, 2
+            b       SHORT G_M44751_IG09
+                       ;; size=10 bbWeight=2 PerfScore 8.00
+G_M44751_IG07:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             sub     r0, r0, 0xd800
             movw    r4, 0xd1ff
             cmp     r0, r4
-            bhi     SHORT G_M44751_IG07
+            bhi     SHORT G_M44751_IG08
             cmp     r12, r1
-            bhs     SHORT G_M44751_IG07
+            bhs     SHORT G_M44751_IG08
             ldrh    r0, [r12]
             sub     r0, r0, 0xdc00
             movw    r4, 0xd1ff
             cmp     r0, r4
-            bhi     SHORT G_M44751_IG07
+            bhi     SHORT G_M44751_IG08
             movs    r4, 4
             add     r12, r12, 2
-            b       SHORT G_M44751_IG08
+            b       SHORT G_M44751_IG09
                        ;; size=40 bbWeight=2 PerfScore 28.00
-G_M44751_IG07:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG08:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
             movs    r4, 3
                        ;; size=2 bbWeight=2 PerfScore 2.00
-G_M44751_IG08:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+G_M44751_IG09:        ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             add     r0, lr, r4
             cmp     r0, r2
-            bgt     SHORT G_M44751_IG10
+            bgt     SHORT G_M44751_IG11
             mov     lr, r0
             cmp     r12, r1
-            mov     r0, r12
-            blo     SHORT G_M44751_IG03
+            blo     SHORT G_M44751_IG10
+            b       SHORT G_M44751_IG14
                        ;; size=16 bbWeight=4 PerfScore 28.00
-G_M44751_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
-            b       SHORT G_M44751_IG13
-                       ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44751_IG10:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+G_M44751_IG10:        ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
+            mov     r0, r12
+            b       SHORT G_M44751_IG03
+                       ;; size=4 bbWeight=2 PerfScore 4.00
+G_M44751_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref, isz
             cmp     r4, 4
-            blt     SHORT G_M44751_IG11
+            blt     SHORT G_M44751_IG12
             movs    r0, 2
-            b       SHORT G_M44751_IG12
+            b       SHORT G_M44751_IG13
                        ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M44751_IG11:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
             movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
-G_M44751_IG12:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+G_M44751_IG13:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
             lsls    r0, r0, 1
             sub     r12, r12, r0
-            mov     r0, r12
-                       ;; size=8 bbWeight=0.50 PerfScore 1.50
-G_M44751_IG13:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
-            str     r0, [r3]
+                       ;; size=6 bbWeight=0.50 PerfScore 1.00
+G_M44751_IG14:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {r3}, byref
+            str     r12, [r3]
             mov     r0, lr
-                       ;; size=4 bbWeight=1 PerfScore 2.00
-G_M44751_IG14:        ; bbWeight=1, epilog, nogc, extend
+                       ;; size=6 bbWeight=1 PerfScore 2.00
+G_M44751_IG15:        ; bbWeight=1, epilog, nogc, extend
             pop     {r3,r4,r11,pc}
                        ;; size=4 bbWeight=1 PerfScore 1.00
 
-; Total bytes of code 130, prolog size 8, PerfScore 100.50, instruction count 51, allocated bytes for code 130 (MethodHash=6d775130) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
+; Total bytes of code 136, prolog size 8, PerfScore 104.50, instruction count 53, allocated bytes for code 136 (MethodHash=6d775130) for method System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -120,7 +124,7 @@ Unwind Info:
   E bit             : 1
   X bit             : 0
   Vers              : 0
-  Function Length   : 65 (0x00041) Actual length = 130 (0x000082)
+  Function Length   : 68 (0x00044) Actual length = 136 (0x000088)
   --- One epilog, unwind codes at 0
   ---- Unwind codes ----
     ---- Epilog start at index 0 ----

+8 (+5.88%) : 34353.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)

@@ -11,15 +11,15 @@
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer>
 ;  V01 arg1         [V01,T06] (  5,  7.50)     ref  ->   r1         class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]>
 ;  V02 arg2         [V02,T05] (  6,  7.50)     ref  ->   r2         class-hnd single-def <System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]>
-;  V03 loc0         [V03,T00] (  9, 32.50)     int  ->   r0        
+;  V03 loc0         [V03,T00] (  9, 32.50)     int  ->   lr        
 ;# V04 OutArgs      [V04    ] (  1,  1   )  struct ( 0) [sp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;  V06 tmp2         [V06,T03] (  2, 16   )     ref  ->   r3         class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.AnalyzerConfig+Section>
+;  V06 tmp2         [V06,T03] (  2, 16   )     ref  ->  r12         class-hnd exact "impAppendStmt" <Microsoft.CodeAnalysis.AnalyzerConfig+Section>
 ;  V07 tmp3         [V07,T09] (  2,  2   )     int  ->   r3         "Single return block return value"
-;  V08 tmp4         [V08,T01] (  3, 24   )     ref  ->   r3         "arr expr"
+;  V08 tmp4         [V08,T01] (  3, 24   )     ref  ->  r12         "arr expr"
 ;  V09 tmp5         [V09,T02] (  3, 24   )     ref  ->   r5         "arr expr"
-;  V10 cse0         [V10,T07] (  5,  9.50)     int  ->   lr         "CSE - aggressive"
-;  V11 cse1         [V11,T08] (  3,  5   )     int  ->  r12         "CSE - aggressive"
+;  V10 cse0         [V10,T07] (  5,  9.50)     int  ->   r0         "CSE - aggressive"
+;  V11 cse1         [V11,T08] (  3,  5   )     int  ->   r3         "CSE - aggressive"
 ;  V12 cse2         [V12,T04] (  3, 12   )     int  ->   r4         "CSE - aggressive"
 ;
 ; Lcl frame size = 4
@@ -36,12 +36,12 @@ G_M39027_IG02:        ; bbWeight=1, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, b
 G_M39027_IG03:        ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
             cmp     r2, 0
             beq     SHORT G_M39027_IG11
-            ldr     lr, [r1+0x08]
-            ldr     r12, [r2+0x08]
-            cmp     lr, r12
+            ldr     r0, [r1+0x08]
+            ldr     r3, [r2+0x08]
+            cmp     r0, r3
             bne     SHORT G_M39027_IG11
             b       SHORT G_M39027_IG07
-                       ;; size=18 bbWeight=0.50 PerfScore 3.50
+                       ;; size=14 bbWeight=0.50 PerfScore 3.50
 G_M39027_IG04:        ; bbWeight=0.50, gcrefRegs=0004 {r2}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs -[r1]
             cmp     r2, 0
@@ -58,45 +58,45 @@ G_M39027_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
 G_M39027_IG07:        ; bbWeight=0.50, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
             ; gcrRegs +[r1-r2]
-            movs    r0, 0
-            cmp     lr, 0
+            mov     lr, 0
+            cmp     r0, 0
             ble     SHORT G_M39027_IG09
                        ;; size=8 bbWeight=0.50 PerfScore 1.50
 G_M39027_IG08:        ; bbWeight=4, gcrefRegs=0006 {r1 r2}, byrefRegs=0000 {}, byref, isz
-            cmp     r0, lr
+            cmp     lr, r0
             bhs     SHORT G_M39027_IG16
-            ldr     r3, [r1+0x04]
-            ; gcrRegs +[r3]
-            ldr     r4, [r3+0x04]
-            cmp     r0, r4
+            ldr     r12, [r1+0x04]
+            ; gcrRegs +[r12]
+            ldr     r4, [r12+0x04]
+            cmp     lr, r4
             bhs     SHORT G_M39027_IG15
-            adds    r3, 8
-            ; gcrRegs -[r3]
-            ; byrRegs +[r3]
-            lsls    r4, r0, 2
-            ldr     r3, [r3+r4]
-            ; gcrRegs +[r3]
-            ; byrRegs -[r3]
-            cmp     r0, r12
+            add     r12, r12, 8
+            ; gcrRegs -[r12]
+            ; byrRegs +[r12]
+            lsl     r4, lr, 2
+            ldr     r12, [r12+r4]
+            ; gcrRegs +[r12]
+            ; byrRegs -[r12]
+            cmp     lr, r3
             bhs     SHORT G_M39027_IG16
             ldr     r5, [r2+0x04]
             ; gcrRegs +[r5]
             ldr     r6, [r5+0x04]
-            cmp     r0, r6
+            cmp     lr, r6
             bhs     SHORT G_M39027_IG15
             adds    r5, 8
             ; gcrRegs -[r5]
             ; byrRegs +[r5]
             ldr     r4, [r5+r4]
             ; gcrRegs +[r4]
-            cmp     r4, r3
+            cmp     r4, r12
             bne     SHORT G_M39027_IG11
-            adds    r0, r0, 1
-            cmp     r0, lr
+            add     lr, lr, 1
+            cmp     lr, r0
             blt     SHORT G_M39027_IG08
-                       ;; size=44 bbWeight=4 PerfScore 88.00
+                       ;; size=56 bbWeight=4 PerfScore 88.00
 G_M39027_IG09:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-            ; gcrRegs -[r1-r4]
+            ; gcrRegs -[r1-r2 r4 r12]
             ; byrRegs -[r5]
             movs    r0, 1
                        ;; size=2 bbWeight=0.50 PerfScore 0.50
@@ -130,7 +130,7 @@ G_M39027_IG16:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
             bkpt    
                        ;; size=14 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 136, prolog size 8, PerfScore 103.00, instruction count 56, allocated bytes for code 136 (MethodHash=dd5d678c) for method Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
+; Total bytes of code 144, prolog size 8, PerfScore 103.00, instruction count 56, allocated bytes for code 144 (MethodHash=dd5d678c) for method Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -142,7 +142,7 @@ Unwind Info:
   E bit             : 0
   X bit             : 0
   Vers              : 0
-  Function Length   : 68 (0x00044) Actual length = 136 (0x000088)
+  Function Length   : 72 (0x00048) Actual length = 144 (0x000090)
   ---- Epilog scopes ----
   ---- Scope 0
   Epilog Start Offset        : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm.checked.mch 1,291 282 193 816 -1,602 +2,564
benchmarks.run_pgo.linux.arm.checked.mch 7,333 2,435 971 3,927 -9,002 +6,850
benchmarks.run_tiered.linux.arm.checked.mch 1,179 259 167 753 -1,478 +2,150
coreclr_tests.run.linux.arm.checked.mch 19,972 10,165 1,398 8,409 -29,896 +11,402
libraries.crossgen2.linux.arm.checked.mch 3,643 515 329 2,799 -3,952 +2,756
libraries.pmi.linux.arm.checked.mch 9,313 2,189 1,391 5,733 -11,944 +9,570
libraries_tests.run.linux.arm.Release.mch 37,731 11,482 7,030 19,219 -83,530 +45,708
librariestestsnotieredcompilation.run.linux.arm.Release.mch 15,523 3,352 1,437 10,734 -24,928 +12,838
realworld.run.linux.arm.checked.mch 1,497 306 233 958 -2,122 +1,678
97,482 30,985 13,149 53,348 -168,454 +95,516

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,864 258,996 212,868 7,456 (1.56%) 7,456 (1.56%)
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 708,176 441,682 266,494 18,469 (2.54%) 18,470 (2.54%)
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,238,225 827,812 1,410,413 74,052 (3.20%) 74,053 (3.20%)

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: 15304692 (overridden on cmd)
Total bytes of diff: 15305654 (overridden on cmd)
Total bytes of delta: 962 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         120 : 21554.dasm (3.80 % of base)
         106 : 44883.dasm (3.38 % of base)
         100 : 42520.dasm (3.12 % of base)
          86 : 18866.dasm (4.15 % of base)
          60 : 5489.dasm (3.29 % of base)
          58 : 11648.dasm (2.88 % of base)
          56 : 8097.dasm (1.45 % of base)
          54 : 17153.dasm (3.15 % of base)
          54 : 18580.dasm (3.09 % of base)
          52 : 46965.dasm (3.44 % of base)
          48 : 8231.dasm (2.40 % of base)
          44 : 18705.dasm (3.06 % of base)
          42 : 543.dasm (2.15 % of base)
          40 : 7990.dasm (0.58 % of base)
          36 : 27725.dasm (2.76 % of base)
          34 : 15862.dasm (2.56 % of base)
          34 : 18842.dasm (1.77 % of base)
          34 : 24749.dasm (1.83 % of base)
          34 : 8513.dasm (1.85 % of base)
          32 : 18450.dasm (3.33 % of base)

Top file improvements (bytes):
         -58 : 1139.dasm (-0.73 % of base)
         -52 : 42254.dasm (-3.85 % of base)
         -42 : 7743.dasm (-1.92 % of base)
         -40 : 24839.dasm (-1.91 % of base)
         -34 : 32920.dasm (-2.11 % of base)
         -32 : 10686.dasm (-0.30 % of base)
         -32 : 45087.dasm (-0.31 % of base)
         -30 : 23893.dasm (-2.18 % of base)
         -30 : 16608.dasm (-3.52 % of base)
         -30 : 25741.dasm (-0.66 % of base)
         -28 : 15039.dasm (-2.29 % of base)
         -26 : 24793.dasm (-1.16 % of base)
         -26 : 6163.dasm (-1.59 % of base)
         -22 : 21341.dasm (-0.51 % of base)
         -22 : 25024.dasm (-1.04 % of base)
         -20 : 9359.dasm (-0.46 % of base)
         -20 : 16146.dasm (-1.66 % of base)
         -18 : 20212.dasm (-2.13 % of base)
         -16 : 10687.dasm (-0.17 % of base)
         -16 : 12593.dasm (-1.43 % of base)

59 total files with Code Size differences (32 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
         120 (3.80 % of base) : 21554.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         106 (3.38 % of base) : 44883.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
         100 (3.12 % of base) : 42520.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
          86 (4.15 % of base) : 18866.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
          60 (3.29 % of base) : 5489.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
          58 (2.88 % of base) : 11648.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveAsyncThenSendAsync_Task>d__10:MoveNext():this (FullOpts)
          56 (1.45 % of base) : 8097.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          54 (3.15 % of base) : 17153.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
          54 (3.09 % of base) : 18580.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
          52 (3.44 % of base) : 46965.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
          48 (2.40 % of base) : 8231.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          44 (3.06 % of base) : 18705.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
          42 (2.15 % of base) : 543.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
          40 (0.58 % of base) : 7990.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
          36 (2.76 % of base) : 27725.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (FullOpts)
          34 (1.83 % of base) : 24749.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
          34 (2.56 % of base) : 15862.dasm - System.Formats.Tar.TarHeader+<WriteDataAsync>d__114:MoveNext():this (FullOpts)
          34 (1.77 % of base) : 18842.dasm - System.IO.File+<InternalReadAllBytesUnknownLengthAsync>d__93:MoveNext():this (FullOpts)
          34 (1.85 % of base) : 8513.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
          32 (3.33 % of base) : 18450.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)

Top method improvements (bytes):
         -58 (-0.73 % of base) : 1139.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -52 (-3.85 % of base) : 42254.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -42 (-1.92 % of base) : 7743.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
         -40 (-1.91 % of base) : 24839.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         -34 (-2.11 % of base) : 32920.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
         -32 (-0.31 % of base) : 45087.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (FullOpts)
         -32 (-0.30 % of base) : 10686.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (FullOpts)
         -30 (-0.66 % of base) : 25741.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -30 (-2.18 % of base) : 23893.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
         -30 (-3.52 % of base) : 16608.dasm - System.Xml.XmlBinaryReader:ReadElementContentAsInt():int:this (FullOpts)
         -28 (-2.29 % of base) : 15039.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (FullOpts)
         -26 (-1.16 % of base) : 24793.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
         -26 (-1.59 % of base) : 6163.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (FullOpts)
         -22 (-0.51 % of base) : 21341.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
         -22 (-1.04 % of base) : 25024.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         -20 (-0.46 % of base) : 9359.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
         -20 (-1.66 % of base) : 16146.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
         -18 (-2.13 % of base) : 20212.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
         -16 (-0.17 % of base) : 10687.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime (FullOpts)
         -16 (-1.43 % of base) : 12593.dasm - System.Runtime.Serialization.Json.JsonReaderDelegator:ParseJsonDateInDefaultFormat(System.String):System.DateTime (FullOpts)

Top method regressions (percentages):
          14 (6.03 % of base) : 14084.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
           4 (4.76 % of base) : 17450.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
           6 (4.62 % of base) : 27196.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
          86 (4.15 % of base) : 18866.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
         120 (3.80 % of base) : 21554.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
          52 (3.44 % of base) : 46965.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
         106 (3.38 % of base) : 44883.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
          32 (3.33 % of base) : 18450.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
           2 (3.33 % of base) : 4846.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
          60 (3.29 % of base) : 5489.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
          54 (3.15 % of base) : 17153.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
         100 (3.12 % of base) : 42520.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
          54 (3.09 % of base) : 18580.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
          44 (3.06 % of base) : 18705.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
          58 (2.88 % of base) : 11648.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveAsyncThenSendAsync_Task>d__10:MoveNext():this (FullOpts)
          36 (2.76 % of base) : 27725.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (FullOpts)
           6 (2.65 % of base) : 5014.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
          30 (2.57 % of base) : 3855.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
          34 (2.56 % of base) : 15862.dasm - System.Formats.Tar.TarHeader+<WriteDataAsync>d__114:MoveNext():this (FullOpts)
          30 (2.51 % of base) : 15853.dasm - System.Formats.Tar.TarWriter+<ReadFileFromDiskAndWriteToArchiveStreamAsEntryAsync>d__17:MoveNext():this (FullOpts)

Top method improvements (percentages):
          -4 (-5.00 % of base) : 17780.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
          -4 (-4.55 % of base) : 5449.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
         -52 (-3.85 % of base) : 42254.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -30 (-3.52 % of base) : 16608.dasm - System.Xml.XmlBinaryReader:ReadElementContentAsInt():int:this (FullOpts)
          -2 (-3.12 % of base) : 5383.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
          -6 (-2.97 % of base) : 14177.dasm - System.IO.Pipes.NamedPipeClientStream:ConnectInternal(int,System.Threading.CancellationToken,int):this (FullOpts)
          -2 (-2.86 % of base) : 26060.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
          -8 (-2.72 % of base) : 7506.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (FullOpts)
          -2 (-2.70 % of base) : 19236.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
          -6 (-2.59 % of base) : 19058.dasm - ProtoBuf.Internal.PrimaryTypeProvider:ProtoBuf.Serializers.ISerializer<System.String>.Write(byref,System.String):this (FullOpts)
         -28 (-2.29 % of base) : 15039.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (FullOpts)
         -30 (-2.18 % of base) : 23893.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
          -8 (-2.17 % of base) : 27044.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (FullOpts)
         -18 (-2.13 % of base) : 20212.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
         -34 (-2.11 % of base) : 32920.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
         -10 (-2.02 % of base) : 9791.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
         -10 (-1.92 % of base) : 2617.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -42 (-1.92 % of base) : 7743.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
         -40 (-1.91 % of base) : 24839.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         -14 (-1.77 % of base) : 12269.dasm - System.Runtime.Serialization.DataContracts.DataContract:GetCollectionXmlName(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type],byref):System.Xml.XmlQualifiedName (FullOpts)


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: 60239130 (overridden on cmd)
Total bytes of diff: 60236978 (overridden on cmd)
Total bytes of delta: -2152 (-0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         128 : 86739.dasm (2.76 % of base)
         120 : 71295.dasm (3.80 % of base)
         102 : 119310.dasm (2.90 % of base)
          78 : 58713.dasm (0.96 % of base)
          60 : 94068.dasm (4.67 % of base)
          56 : 141263.dasm (1.75 % of base)
          54 : 139202.dasm (1.64 % of base)
          48 : 13036.dasm (2.38 % of base)
          46 : 31040.dasm (1.01 % of base)
          46 : 1525.dasm (2.56 % of base)
          44 : 119100.dasm (1.77 % of base)
          44 : 121367.dasm (1.77 % of base)
          40 : 122362.dasm (1.56 % of base)
          40 : 15668.dasm (2.14 % of base)
          36 : 82937.dasm (1.94 % of base)
          34 : 125359.dasm (0.80 % of base)
          30 : 153829.dasm (0.92 % of base)
          30 : 63861.dasm (1.40 % of base)
          30 : 63883.dasm (2.50 % of base)
          30 : 90231.dasm (3.09 % of base)

Top file improvements (bytes):
        -114 : 37198.dasm (-1.06 % of base)
        -112 : 148706.dasm (-1.06 % of base)
         -98 : 37247.dasm (-2.09 % of base)
         -96 : 114076.dasm (-4.15 % of base)
         -86 : 153615.dasm (-1.87 % of base)
         -64 : 83252.dasm (-3.00 % of base)
         -58 : 114075.dasm (-3.64 % of base)
         -58 : 60808.dasm (-1.03 % of base)
         -58 : 6349.dasm (-0.72 % of base)
         -54 : 108739.dasm (-2.16 % of base)
         -54 : 69489.dasm (-2.16 % of base)
         -54 : 70815.dasm (-2.16 % of base)
         -54 : 76853.dasm (-2.16 % of base)
         -54 : 78270.dasm (-2.16 % of base)
         -54 : 79016.dasm (-2.16 % of base)
         -54 : 80388.dasm (-2.16 % of base)
         -54 : 94117.dasm (-2.16 % of base)
         -54 : 95313.dasm (-2.16 % of base)
         -54 : 104226.dasm (-2.16 % of base)
         -54 : 114074.dasm (-2.16 % of base)

82 total files with Code Size differences (41 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         128 (2.76 % of base) : 86739.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckValEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,uint,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0-FullOpts)
         120 (3.80 % of base) : 71295.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
         102 (2.90 % of base) : 119310.dasm - System.Formats.Asn1.WellKnownOids:GetValue(System.ReadOnlySpan`1[ubyte]):System.String (Tier1)
          78 (0.96 % of base) : 58713.dasm - System.Net.WebSockets.ManagedWebSocket+<ReceiveAsyncPrivate>d__64`1[System.Net.WebSockets.ValueWebSocketReceiveResult]:MoveNext():this (Tier0-FullOpts)
          60 (4.67 % of base) : 94068.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexMatcher`1[ulong]:GetOrCreateState_NoLock(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],uint,ubyte):System.Text.RegularExpressions.Symbolic.MatchingState`1[ulong]:this (Tier1)
          56 (1.75 % of base) : 141263.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
          54 (1.64 % of base) : 139202.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
          48 (2.38 % of base) : 13036.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          46 (1.01 % of base) : 31040.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):ubyte (Tier1)
          46 (2.56 % of base) : 1525.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
          44 (1.77 % of base) : 119100.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
          44 (1.77 % of base) : 121367.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
          40 (1.56 % of base) : 122362.dasm - System.IO.Strategies.BufferedFileStreamStrategy:ReadAsync(System.Memory`1[ubyte],System.Threading.CancellationToken):System.Threading.Tasks.ValueTask`1[int]:this (Tier1)
          40 (2.14 % of base) : 15668.dasm - System.Text.RegularExpressions.RegexPrefixAnalyzer:FindLiteralFollowingLeadingLoop(System.Text.RegularExpressions.RegexNode):System.Nullable`1[System.ValueTuple`2[System.Text.RegularExpressions.RegexNode,System.ValueTuple`4[ushort,System.String,int,ushort[]]]] (Tier0-FullOpts)
          36 (1.94 % of base) : 82937.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (Tier0-FullOpts)
          34 (0.80 % of base) : 125359.dasm - System.DateTimeParse:Lex(int,byref,byref,byref,byref,byref,int):ubyte (Tier1)
          30 (3.09 % of base) : 90231.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CanBePassedByReference(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte (Tier1)
          30 (1.40 % of base) : 63861.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
          30 (0.92 % of base) : 153829.dasm - System.Text.Encoding:GetCharsWithFallback(uint,int,uint,int,int,int,System.Text.DecoderNLS):int:this (Tier1)
          30 (2.50 % of base) : 63883.dasm - System.Threading.CancellationTokenSource:Register(System.Delegate,System.Object,System.Threading.SynchronizationContext,System.Threading.ExecutionContext):System.Threading.CancellationTokenRegistration:this (Tier1)

Top method improvements (bytes):
        -114 (-1.06 % of base) : 37198.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
        -112 (-1.06 % of base) : 148706.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (Tier0-FullOpts)
         -98 (-2.09 % of base) : 37247.dasm - Jil.Deserialize.Methods:SkipEncodedStringWithLeadCharThunkReader(byref,int) (Tier0-FullOpts)
         -96 (-4.15 % of base) : 114076.dasm - System.Threading.Tasks.UnwrapPromise`1[System.Threading.Tasks.VoidTaskResult]:InvokeCore(System.Threading.Tasks.Task):this (Tier1)
         -86 (-1.87 % of base) : 153615.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (Tier0-FullOpts)
         -64 (-3.00 % of base) : 83252.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (Tier0-FullOpts)
         -58 (-1.03 % of base) : 60808.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier0-FullOpts)
         -58 (-0.72 % of base) : 6349.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -58 (-3.64 % of base) : 114075.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
         -54 (-2.16 % of base) : 108739.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 69489.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 70815.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 76853.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 78270.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 79016.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 80388.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 94117.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 95313.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 104226.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -54 (-2.16 % of base) : 114074.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)

Top method regressions (percentages):
          26 (6.44 % of base) : 144810.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          20 (6.10 % of base) : 21084.dasm - System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)
          24 (5.94 % of base) : 128217.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 65193.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 65936.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 72877.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 75602.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 81229.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 95539.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 107749.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 120204.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          24 (5.94 % of base) : 103843.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          22 (5.45 % of base) : 40628.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          22 (5.45 % of base) : 99404.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          22 (5.45 % of base) : 137710.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          22 (5.45 % of base) : 135389.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          22 (5.45 % of base) : 148582.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          24 (5.43 % of base) : 96252.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          26 (5.10 % of base) : 92819.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator:CanUseCallOnRefTypeReceiver(Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
          12 (5.04 % of base) : 134886.dasm - System.Threading.LowLevelLock:TryAcquire():ubyte:this (Tier1)

Top method improvements (percentages):
          -4 (-9.09 % of base) : 23558.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 24573.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 3534.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 47965.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 8786.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 104962.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 17325.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 31393.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 38381.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 50971.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 57879.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 59559.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 70419.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 71379.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 81536.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 99297.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 129505.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 117039.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 117465.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-9.09 % of base) : 122496.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)


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: 22645104 (overridden on cmd)
Total bytes of diff: 22645776 (overridden on cmd)
Total bytes of delta: 672 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         120 : 43127.dasm (3.80 % of base)
         106 : 77545.dasm (3.38 % of base)
         100 : 73294.dasm (3.12 % of base)
          86 : 39627.dasm (4.15 % of base)
          60 : 18303.dasm (3.29 % of base)
          58 : 25636.dasm (2.88 % of base)
          56 : 16388.dasm (1.45 % of base)
          48 : 16673.dasm (2.40 % of base)
          44 : 38667.dasm (3.06 % of base)
          42 : 1439.dasm (2.15 % of base)
          40 : 15986.dasm (0.58 % of base)
          36 : 55860.dasm (2.76 % of base)
          34 : 46946.dasm (1.83 % of base)
          34 : 39861.dasm (1.77 % of base)
          34 : 17320.dasm (1.85 % of base)
          32 : 37330.dasm (3.33 % of base)
          30 : 7279.dasm (2.57 % of base)
          30 : 33742.dasm (2.60 % of base)
          30 : 42894.dasm (2.16 % of base)
          28 : 38138.dasm (2.04 % of base)

Top file improvements (bytes):
         -58 : 6129.dasm (-0.73 % of base)
         -52 : 73154.dasm (-3.85 % of base)
         -42 : 15280.dasm (-1.92 % of base)
         -40 : 47227.dasm (-1.91 % of base)
         -34 : 64167.dasm (-2.11 % of base)
         -32 : 77836.dasm (-0.31 % of base)
         -32 : 54769.dasm (-2.26 % of base)
         -32 : 24904.dasm (-0.30 % of base)
         -30 : 49297.dasm (-0.66 % of base)
         -28 : 11990.dasm (-0.63 % of base)
         -28 : 31113.dasm (-2.29 % of base)
         -26 : 47096.dasm (-1.16 % of base)
         -26 : 12505.dasm (-1.59 % of base)
         -22 : 42562.dasm (-0.51 % of base)
         -22 : 47590.dasm (-1.04 % of base)
         -20 : 33190.dasm (-1.66 % of base)
         -16 : 24940.dasm (-0.17 % of base)
         -16 : 38112.dasm (-1.43 % of base)
         -16 : 68045.dasm (-0.17 % of base)
         -14 : 28828.dasm (-1.85 % of base)

61 total files with Code Size differences (34 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
         120 (3.80 % of base) : 43127.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
         106 (3.38 % of base) : 77545.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
         100 (3.12 % of base) : 73294.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
          86 (4.15 % of base) : 39627.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
          60 (3.29 % of base) : 18303.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier0-FullOpts)
          58 (2.88 % of base) : 25636.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveAsyncThenSendAsync_Task>d__10:MoveNext():this (Tier0-FullOpts)
          56 (1.45 % of base) : 16388.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier0-FullOpts)
          48 (2.40 % of base) : 16673.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          44 (3.06 % of base) : 38667.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (Tier0-FullOpts)
          42 (2.15 % of base) : 1439.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (Tier0-FullOpts)
          40 (0.58 % of base) : 15986.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (Tier0-FullOpts)
          36 (2.76 % of base) : 55860.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier0-FullOpts)
          34 (1.83 % of base) : 46946.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (Tier0-FullOpts)
          34 (1.77 % of base) : 39861.dasm - System.IO.File+<InternalReadAllBytesUnknownLengthAsync>d__93:MoveNext():this (Tier0-FullOpts)
          34 (1.85 % of base) : 17320.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier0-FullOpts)
          32 (3.33 % of base) : 37330.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (Tier0-FullOpts)
          30 (2.57 % of base) : 7279.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier0-FullOpts)
          30 (2.60 % of base) : 33742.dasm - System.Formats.Tar.TarWriter+<ReadFileFromDiskAndWriteToArchiveStreamAsEntryAsync>d__17:MoveNext():this (Tier1)
          30 (2.16 % of base) : 42894.dasm - System.IO.Pipes.Tests.Perf_PipeTest+<ReadWriteAsync>d__8:MoveNext():this (Tier0-FullOpts)
          28 (2.04 % of base) : 38138.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier0-FullOpts)

Top method improvements (bytes):
         -58 (-0.73 % of base) : 6129.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
         -52 (-3.85 % of base) : 73154.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
         -42 (-1.92 % of base) : 15280.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier0-FullOpts)
         -40 (-1.91 % of base) : 47227.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (Tier0-FullOpts)
         -34 (-2.11 % of base) : 64167.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
         -32 (-0.31 % of base) : 77836.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (Tier0-FullOpts)
         -32 (-0.30 % of base) : 24904.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
         -32 (-2.26 % of base) : 54769.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (Tier0-FullOpts)
         -30 (-0.66 % of base) : 49297.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
         -28 (-2.29 % of base) : 31113.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (Tier0-FullOpts)
         -28 (-0.63 % of base) : 11990.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier0-FullOpts)
         -26 (-1.16 % of base) : 47096.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (Tier0-FullOpts)
         -26 (-1.59 % of base) : 12505.dasm - System.Reflection.Emit.RuntimeMethodBuilder:CreateMethodBodyHelper(System.Reflection.Emit.RuntimeILGenerator):this (Tier0-FullOpts)
         -22 (-0.51 % of base) : 42562.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.LoginViewModel (FullOpts)
         -22 (-1.04 % of base) : 47590.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (Tier0-FullOpts)
         -20 (-1.66 % of base) : 33190.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier0-FullOpts)
         -16 (-0.17 % of base) : 68045.dasm - Jil.Deserialize.Methods:ParseISO8601Date(System.IO.TextReader,ushort[],int,int):System.DateTime (Tier1)
         -16 (-0.17 % of base) : 24940.dasm - Jil.Deserialize.Methods:ParseISO8601DateThunkReader(byref,ushort[],int,int):System.DateTime (Tier1)
         -16 (-1.43 % of base) : 38112.dasm - System.Runtime.Serialization.Json.JsonReaderDelegator:ParseJsonDateInDefaultFormat(System.String):System.DateTime (Tier1)
         -14 (-0.69 % of base) : 17450.dasm - System.Net.Http.HttpConnectionPool:ReturnHttp11Connection(System.Net.Http.HttpConnection,ubyte,System.Net.Http.HttpConnectionPool+HttpConnectionWaiter`1[System.Net.Http.HttpConnection]):this (Tier0-FullOpts)

Top method regressions (percentages):
           8 (12.50 % of base) : 41805.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
          14 (6.03 % of base) : 29364.dasm - System.Security.Cryptography.ECParameters:Validate():this (Tier1)
           4 (4.76 % of base) : 35269.dasm - System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)
           6 (4.62 % of base) : 52428.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (Tier0-FullOpts)
          86 (4.15 % of base) : 39627.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
         120 (3.80 % of base) : 43127.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
         106 (3.38 % of base) : 77545.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
          32 (3.33 % of base) : 37330.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (Tier0-FullOpts)
           2 (3.33 % of base) : 4035.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (Tier1)
          60 (3.29 % of base) : 18303.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier0-FullOpts)
         100 (3.12 % of base) : 73294.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
          44 (3.06 % of base) : 38667.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (Tier0-FullOpts)
          58 (2.88 % of base) : 25636.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveAsyncThenSendAsync_Task>d__10:MoveNext():this (Tier0-FullOpts)
          36 (2.76 % of base) : 55860.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier0-FullOpts)
           6 (2.65 % of base) : 20752.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (Tier0-FullOpts)
          30 (2.60 % of base) : 33742.dasm - System.Formats.Tar.TarWriter+<ReadFileFromDiskAndWriteToArchiveStreamAsEntryAsync>d__17:MoveNext():this (Tier1)
          30 (2.57 % of base) : 7279.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier0-FullOpts)
          48 (2.40 % of base) : 16673.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          16 (2.35 % of base) : 34259.dasm - System.Threading.Tasks.ValueTaskPerfTest+<AwaitTcsAsValueTask>d__21:MoveNext():this (Tier1)
          30 (2.16 % of base) : 42894.dasm - System.IO.Pipes.Tests.Perf_PipeTest+<ReadWriteAsync>d__8:MoveNext():this (Tier0-FullOpts)

Top method improvements (percentages):
          -4 (-5.00 % of base) : 34605.dasm - System.IO.Path:Join(System.String,System.String):System.String (Tier1)
          -4 (-4.55 % of base) : 9357.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
         -52 (-3.85 % of base) : 73154.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
          -2 (-3.12 % of base) : 20932.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (Tier1)
          -6 (-2.97 % of base) : 29556.dasm - System.IO.Pipes.NamedPipeClientStream:ConnectInternal(int,System.Threading.CancellationToken,int):this (Tier0-FullOpts)
          -2 (-2.86 % of base) : 53465.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (Tier1)
          -8 (-2.72 % of base) : 29248.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String,System.String):System.String (Tier1)
         -28 (-2.29 % of base) : 31113.dasm - System.IO.RandomAccess:WriteGatherAtOffset(Microsoft.Win32.SafeHandles.SafeFileHandle,System.Collections.Generic.IReadOnlyList`1[System.ReadOnlyMemory`1[ubyte]],long) (Tier0-FullOpts)
         -32 (-2.26 % of base) : 54769.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (Tier0-FullOpts)
          -8 (-2.17 % of base) : 53863.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (Tier1)
         -34 (-2.11 % of base) : 64167.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
         -10 (-2.02 % of base) : 20473.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (Tier0-FullOpts)
          -8 (-1.99 % of base) : 5721.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int (Tier0-FullOpts)
         -10 (-1.92 % of base) : 4157.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier0-FullOpts)
         -42 (-1.92 % of base) : 15280.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier0-FullOpts)
         -40 (-1.91 % of base) : 47227.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (Tier0-FullOpts)
         -14 (-1.85 % of base) : 28828.dasm - System.Runtime.Serialization.DataContracts.DataContract:GetCollectionXmlName(System.Type,System.Type,System.Collections.Generic.HashSet`1[System.Type],byref):System.Xml.XmlQualifiedName (Tier1)
          -2 (-1.75 % of base) : 25932.dasm - System.Collections.Generic.HashSet`1+Enumerator[int]:MoveNext():ubyte:this (Tier0-FullOpts)
         -12 (-1.73 % of base) : 47929.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol] (Tier0-FullOpts)
          -4 (-1.72 % of base) : 38210.dasm - System.Collections.IterateForEach`1[int]:Stack():int:this (Tier0-FullOpts)


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: 321777660 (overridden on cmd)
Total bytes of diff: 321759166 (overridden on cmd)
Total bytes of delta: -18494 (-0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         256 : 153429.dasm (2.64 % of base)
         256 : 383307.dasm (2.64 % of base)
         236 : 476153.dasm (2.38 % of base)
         120 : 153049.dasm (3.80 % of base)
         120 : 383179.dasm (3.80 % of base)
         116 : 192579.dasm (6.71 % of base)
         116 : 412019.dasm (6.71 % of base)
          56 : 213675.dasm (1.15 % of base)
          54 : 120353.dasm (1.10 % of base)
          54 : 166334.dasm (1.10 % of base)
          54 : 8274.dasm (1.10 % of base)
          50 : 197804.dasm (2.94 % of base)
          50 : 201664.dasm (2.94 % of base)
          50 : 205352.dasm (2.95 % of base)
          50 : 116096.dasm (2.95 % of base)
          50 : 124180.dasm (2.94 % of base)
          50 : 313772.dasm (2.95 % of base)
          50 : 213624.dasm (2.93 % of base)
          50 : 303224.dasm (2.93 % of base)
          50 : 66116.dasm (2.95 % of base)

Top file improvements (bytes):
         -78 : 200645.dasm (-2.56 % of base)
         -78 : 417594.dasm (-2.56 % of base)
         -70 : 463206.dasm (-1.32 % of base)
         -70 : 272252.dasm (-1.32 % of base)
         -64 : 141009.dasm (-2.99 % of base)
         -64 : 410595.dasm (-2.83 % of base)
         -52 : 272442.dasm (-1.60 % of base)
         -52 : 463295.dasm (-1.59 % of base)
         -50 : 185540.dasm (-9.29 % of base)
         -42 : 312178.dasm (-1.52 % of base)
         -40 : 295401.dasm (-2.29 % of base)
         -38 : 275476.dasm (-2.41 % of base)
         -38 : 311482.dasm (-1.33 % of base)
         -36 : 304954.dasm (-0.75 % of base)
         -36 : 307529.dasm (-0.75 % of base)
         -36 : 309071.dasm (-1.33 % of base)
         -36 : 382732.dasm (-7.47 % of base)
         -34 : 151820.dasm (-2.11 % of base)
         -34 : 167878.dasm (-3.99 % of base)
         -34 : 382788.dasm (-2.11 % of base)

80 total files with Code Size differences (40 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         256 (2.64 % of base) : 383307.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
         256 (2.64 % of base) : 153429.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
         236 (2.38 % of base) : 476153.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
         120 (3.80 % of base) : 383179.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         120 (3.80 % of base) : 153049.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
         116 (6.71 % of base) : 412019.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
         116 (6.71 % of base) : 192579.dasm - JitTest_array1_refany_il.Test:Main():int (Tier0-FullOpts)
          56 (1.15 % of base) : 213675.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          54 (1.10 % of base) : 120353.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          54 (1.10 % of base) : 166334.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          54 (1.10 % of base) : 8274.dasm - System.Number:NumberToStringFormat[ushort](byref,byref,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo) (Tier1)
          50 (2.94 % of base) : 197804.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
          50 (2.94 % of base) : 201664.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
          50 (2.95 % of base) : 205352.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
          50 (2.95 % of base) : 116096.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
          50 (2.94 % of base) : 124180.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
          50 (2.95 % of base) : 313772.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
          50 (2.93 % of base) : 213624.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
          50 (2.93 % of base) : 303224.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)
          50 (2.95 % of base) : 66116.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Instrumented Tier1)

Top method improvements (bytes):
         -78 (-2.56 % of base) : 417594.dasm - Co1245GetBytes_double:runTest():ubyte:this (FullOpts)
         -78 (-2.56 % of base) : 200645.dasm - Co1245GetBytes_double:runTest():ubyte:this (Tier0-FullOpts)
         -70 (-1.32 % of base) : 463206.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
         -70 (-1.32 % of base) : 272252.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (Tier0-FullOpts)
         -64 (-2.99 % of base) : 141009.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (Tier0-FullOpts)
         -64 (-2.83 % of base) : 410595.dasm - Test_baduwinfo1:bar(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String):int (FullOpts)
         -52 (-1.59 % of base) : 463295.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (FullOpts)
         -52 (-1.60 % of base) : 272442.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (Tier0-FullOpts)
         -50 (-9.29 % of base) : 185540.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
         -42 (-1.52 % of base) : 312178.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
         -40 (-2.29 % of base) : 295401.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
         -38 (-1.33 % of base) : 311482.dasm - Program:CompareDLLs(System.String,System.String):int (Tier0-FullOpts)
         -38 (-2.41 % of base) : 275476.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(uint,int,uint,int,byref,byref):int (Tier0-FullOpts)
         -36 (-1.33 % of base) : 309071.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
         -36 (-7.47 % of base) : 382732.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
         -36 (-0.75 % of base) : 304954.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -36 (-0.75 % of base) : 307529.dasm - System.IO.Enumeration.FileSystemEnumerator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -34 (-2.11 % of base) : 382788.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
         -34 (-2.11 % of base) : 151820.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (Tier0-FullOpts)
         -34 (-3.99 % of base) : 167878.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,long,System.Number+HexParser`1[long]](System.ReadOnlySpan`1[ushort],int,byref):int (Tier1)

Top method regressions (percentages):
          42 (31.34 % of base) : 325625.dasm - testout1:Sub_Funclet_221():int (FullOpts)
          32 (23.88 % of base) : 326042.dasm - testout1:Sub_Funclet_221():int (FullOpts)
          28 (18.92 % of base) : 325515.dasm - testout1:Sub_Funclet_107():int (FullOpts)
          28 (18.92 % of base) : 325553.dasm - testout1:Sub_Funclet_145():int (FullOpts)
          28 (18.92 % of base) : 325627.dasm - testout1:Sub_Funclet_223():int (FullOpts)
          22 (14.29 % of base) : 325590.dasm - testout1:Sub_Funclet_183():int (FullOpts)
          18 (12.16 % of base) : 325932.dasm - testout1:Sub_Funclet_107():int (FullOpts)
          18 (12.16 % of base) : 325970.dasm - testout1:Sub_Funclet_145():int (FullOpts)
          18 (12.16 % of base) : 326044.dasm - testout1:Sub_Funclet_223():int (FullOpts)
          12 (8.45 % of base) : 325969.dasm - testout1:Sub_Funclet_144():int (FullOpts)
          12 (8.45 % of base) : 325552.dasm - testout1:Sub_Funclet_144():int (FullOpts)
           8 (8.16 % of base) : 205236.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
           8 (8.16 % of base) : 115379.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
           8 (8.16 % of base) : 134561.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
          12 (7.79 % of base) : 326007.dasm - testout1:Sub_Funclet_183():int (FullOpts)
          10 (6.94 % of base) : 325971.dasm - testout1:Sub_Funclet_146():int (FullOpts)
          10 (6.94 % of base) : 325591.dasm - testout1:Sub_Funclet_184():int (FullOpts)
          10 (6.94 % of base) : 326008.dasm - testout1:Sub_Funclet_184():int (FullOpts)
          10 (6.94 % of base) : 326039.dasm - testout1:Sub_Funclet_218():int (FullOpts)
          10 (6.94 % of base) : 326043.dasm - testout1:Sub_Funclet_222():int (FullOpts)

Top method improvements (percentages):
         -18 (-10.47 % of base) : 157996.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
         -18 (-9.78 % of base) : 157932.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
         -14 (-9.46 % of base) : 326544.dasm - testout1:Sub_Funclet_221():int (FullOpts)
         -14 (-9.46 % of base) : 326960.dasm - testout1:Sub_Funclet_221():int (FullOpts)
         -50 (-9.29 % of base) : 185540.dasm - System.IO.TextWriter:WriteLine(System.String):this (Tier1)
         -36 (-7.47 % of base) : 382732.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
         -18 (-6.21 % of base) : 398971.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
         -18 (-6.21 % of base) : 157325.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (Tier0-FullOpts)
         -12 (-5.94 % of base) : 158017.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
          -2 (-5.00 % of base) : 139233.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 161921.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 172529.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 277285.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 277381.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 213937.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 2981.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 212909.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 295169.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(uint,System.Object):System.Object (Tier1)
          -2 (-5.00 % of base) : 137213.dasm - Tests_len1_2:Test_tst_31(System.String):ubyte (FullOpts)
          -2 (-5.00 % of base) : 137533.dasm - Tests_len4_7:Test_tst_31(System.String):ubyte (FullOpts)


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: 35174904 (overridden on cmd)
Total bytes of diff: 35173708 (overridden on cmd)
Total bytes of delta: -1196 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         110 : 101469.dasm (0.34 % of base)
          94 : 139200.dasm (4.31 % of base)
          78 : 27233.dasm (0.85 % of base)
          60 : 18881.dasm (4.03 % of base)
          60 : 19316.dasm (2.05 % of base)
          58 : 18354.dasm (1.87 % of base)
          58 : 19312.dasm (1.80 % of base)
          52 : 18935.dasm (1.68 % of base)
          44 : 189730.dasm (9.05 % of base)
          42 : 121663.dasm (5.74 % of base)
          42 : 120791.dasm (5.74 % of base)
          42 : 18346.dasm (2.04 % of base)
          40 : 173421.dasm (2.28 % of base)
          40 : 165961.dasm (2.33 % of base)
          40 : 18981.dasm (2.48 % of base)
          38 : 18352.dasm (3.45 % of base)
          38 : 19306.dasm (1.84 % of base)
          38 : 25086.dasm (0.14 % of base)
          38 : 98458.dasm (2.02 % of base)
          34 : 18933.dasm (1.68 % of base)

Top file improvements (bytes):
        -304 : 127173.dasm (-1.37 % of base)
        -112 : 129849.dasm (-2.29 % of base)
         -94 : 58890.dasm (-1.89 % of base)
         -62 : 29900.dasm (-1.54 % of base)
         -62 : 118149.dasm (-1.95 % of base)
         -56 : 29907.dasm (-2.32 % of base)
         -52 : 127875.dasm (-6.75 % of base)
         -48 : 186018.dasm (-2.01 % of base)
         -48 : 59477.dasm (-2.01 % of base)
         -44 : 175400.dasm (-3.05 % of base)
         -44 : 120344.dasm (-2.22 % of base)
         -44 : 185951.dasm (-2.25 % of base)
         -40 : 88530.dasm (-4.34 % of base)
         -38 : 14459.dasm (-1.76 % of base)
         -36 : 17578.dasm (-0.71 % of base)
         -36 : 94693.dasm (-3.31 % of base)
         -34 : 20591.dasm (-2.95 % of base)
         -34 : 14883.dasm (-2.28 % of base)
         -34 : 120532.dasm (-1.78 % of base)
         -32 : 59457.dasm (-0.81 % of base)

68 total files with Code Size differences (36 improved, 32 regressed), 20 unchanged.

Top method regressions (bytes):
         110 (0.34 % of base) : 101469.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
          94 (4.31 % of base) : 139200.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
          78 (0.85 % of base) : 27233.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
          60 (2.05 % of base) : 19316.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (FullOpts)
          60 (4.03 % of base) : 18881.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
          58 (1.87 % of base) : 18354.dasm - System.IO.BufferedStream+<ReadFromUnderlyingStreamAsync>d__48:MoveNext():this (FullOpts)
          58 (1.80 % of base) : 19312.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (FullOpts)
          52 (1.68 % of base) : 18935.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
          44 (9.05 % of base) : 189730.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
          42 (5.74 % of base) : 121663.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
          42 (5.74 % of base) : 120791.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[System.__Canon]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
          42 (2.04 % of base) : 18346.dasm - System.IO.BufferedStream+<CopyToAsyncCore>d__68:MoveNext():this (FullOpts)
          40 (2.28 % of base) : 173421.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          40 (2.33 % of base) : 165961.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)
          40 (2.48 % of base) : 18981.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
          38 (0.14 % of base) : 25086.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
          38 (2.02 % of base) : 98458.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
          38 (3.45 % of base) : 18352.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
          38 (1.84 % of base) : 19306.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (FullOpts)
          34 (1.68 % of base) : 18933.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)

Top method improvements (bytes):
        -304 (-1.37 % of base) : 127173.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        -112 (-2.29 % of base) : 129849.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
         -94 (-1.89 % of base) : 58890.dasm - System.Data.XmlDataTreeWriter:XmlDataRowWriter(System.Data.DataRow,System.String):this (FullOpts)
         -62 (-1.54 % of base) : 29900.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)
         -62 (-1.95 % of base) : 118149.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -56 (-2.32 % of base) : 29907.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort (FullOpts)
         -52 (-6.75 % of base) : 127875.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
         -48 (-2.01 % of base) : 186018.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
         -48 (-2.01 % of base) : 59477.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
         -44 (-2.22 % of base) : 120344.dasm - Microsoft.CodeAnalysis.VisualBasic.TypeArgumentInference+InferenceGraph:Infer(Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[int],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundNode,byref,byref,byref,byref,byref,byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.BitVector):ubyte (FullOpts)
         -44 (-2.25 % of base) : 185951.dasm - System.Data.Odbc.OdbcDataReader:RetrieveKeyInfoFromStatistics(System.Data.Odbc.OdbcDataReader+QualifiedTableName,ubyte):int:this (FullOpts)
         -44 (-3.05 % of base) : 175400.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
         -40 (-4.34 % of base) : 88530.dasm - Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter:GenerateSwitchBuckets(int,int):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter+SwitchBucket]:this (FullOpts)
         -38 (-1.76 % of base) : 14459.dasm - System.Text.StringBuilder:Replace(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,int):System.Text.StringBuilder:this (FullOpts)
         -36 (-3.31 % of base) : 94693.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -36 (-0.71 % of base) : 17578.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
         -34 (-2.95 % of base) : 20591.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
         -34 (-1.78 % of base) : 120532.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
         -34 (-2.28 % of base) : 14883.dasm - System.Text.UTF32Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-4.61 % of base) : 84049.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)

Top method regressions (percentages):
          44 (9.05 % of base) : 189730.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
           4 (5.88 % of base) : 27482.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
          42 (5.74 % of base) : 121663.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[Microsoft.CodeAnalysis.VisualBasic.DataFlowPass+LocalState]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
          42 (5.74 % of base) : 120791.dasm - Microsoft.CodeAnalysis.VisualBasic.AbstractFlowPass`1[System.__Canon]:VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.BoundWithStatement):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this (FullOpts)
           4 (5.00 % of base) : 87799.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
           6 (4.62 % of base) : 169176.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
          12 (4.58 % of base) : 128166.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
          94 (4.31 % of base) : 139200.dasm - Newtonsoft.Json.Utilities.ConvertUtils:DecimalTryParse(ushort[],int,int,byref):int (FullOpts)
          60 (4.03 % of base) : 18881.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
           6 (3.80 % of base) : 53248.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
          38 (3.45 % of base) : 18352.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
           2 (3.33 % of base) : 156381.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
          30 (3.28 % of base) : 19052.dasm - System.IO.TextReader+<ReadBlockAsyncInternal>d__23:MoveNext():this (FullOpts)
          32 (3.27 % of base) : 18888.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
           4 (3.12 % of base) : 59266.dasm - System.Xml.XPathNodePointer:DecideXPNodeTypeForTextNodes(System.Xml.XmlNode):int:this (FullOpts)
          40 (2.48 % of base) : 18981.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
           4 (2.47 % of base) : 37740.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
          10 (2.38 % of base) : 92849.dasm - Microsoft.CodeAnalysis.MetadataDecoder`5[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:DecodeCustomAttributeElementArrayOrThrow(byref,ubyte,System.__Canon,System.__Canon):Microsoft.CodeAnalysis.TypedConstant:this (FullOpts)
          28 (2.37 % of base) : 18563.dasm - System.IO.File+<InternalReadAllBytesAsync>d__92:MoveNext():this (FullOpts)
          40 (2.33 % of base) : 165961.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (FullOpts)

Top method improvements (percentages):
         -16 (-10.53 % of base) : 18761.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (FullOpts)
         -16 (-8.33 % of base) : 18762.dasm - System.IO.Path:Join(System.String,System.String,System.String,System.String):System.String (FullOpts)
         -52 (-6.75 % of base) : 127875.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
         -16 (-4.94 % of base) : 177983.dasm - System.ComponentModel.Design.RuntimeLicenseContext:CaseInsensitiveManifestResourceStreamLookup(System.Reflection.Assembly,System.String):System.IO.Stream (FullOpts)
         -12 (-4.72 % of base) : 146000.dasm - System.IO.Ports.SerialPort:ReadByte():int:this (FullOpts)
         -32 (-4.61 % of base) : 84049.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
          -4 (-4.44 % of base) : 18760.dasm - System.IO.Path:Join(System.String,System.String):System.String (FullOpts)
         -40 (-4.34 % of base) : 88530.dasm - Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter:GenerateSwitchBuckets(int,int):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter+SwitchBucket]:this (FullOpts)
         -22 (-4.21 % of base) : 136209.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (FullOpts)
         -10 (-3.70 % of base) : 44564.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.AbstractTypeMap:SubstituteNamedTypes(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]:this (FullOpts)
         -36 (-3.31 % of base) : 94693.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -18 (-3.30 % of base) : 14961.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
         -24 (-3.26 % of base) : 114318.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:MakeEventAccessorCall(Microsoft.CodeAnalysis.VisualBasic.BoundAddRemoveHandlerStatement,Microsoft.CodeAnalysis.VisualBasic.BoundEventAccess,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
         -20 (-3.23 % of base) : 153196.dasm - System.IPv6AddressHelper:IsValidStrict(uint,int,byref):ubyte (FullOpts)
         -20 (-3.23 % of base) : 149871.dasm - System.IPv6AddressHelper:IsValidStrict(uint,int,byref):ubyte (FullOpts)
         -20 (-3.23 % of base) : 162409.dasm - System.IPv6AddressHelper:IsValidStrict(uint,int,byref):ubyte (FullOpts)
          -2 (-3.12 % of base) : 150305.dasm - System.Collections.Generic.SortedSet`1+Node[System.__Canon]:GetRotation(System.Collections.Generic.SortedSet`1+Node[System.__Canon],System.Collections.Generic.SortedSet`1+Node[System.__Canon]):ubyte:this (FullOpts)
         -44 (-3.05 % of base) : 175400.dasm - System.UriHelper:UnescapeString(uint,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (FullOpts)
         -18 (-3.02 % of base) : 84856.dasm - Microsoft.CodeAnalysis.Debugging.CustomDebugInfoReader:TryParseVisualBasicImportString(System.String,byref,byref,byref,byref):ubyte (FullOpts)
         -30 (-3.01 % of base) : 50311.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)


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: 49554486 (overridden on cmd)
Total bytes of diff: 49552112 (overridden on cmd)
Total bytes of delta: -2374 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         256 : 253699.dasm (2.26 % of base)
         240 : 11462.dasm (2.01 % of base)
         204 : 120152.dasm (13.58 % of base)
         144 : 170130.dasm (3.45 % of base)
          72 : 170566.dasm (1.80 % of base)
          70 : 101363.dasm (4.04 % of base)
          68 : 259691.dasm (2.90 % of base)
          58 : 147660.dasm (2.91 % of base)
          56 : 260569.dasm (0.77 % of base)
          56 : 201512.dasm (2.92 % of base)
          54 : 177631.dasm (2.27 % of base)
          54 : 268987.dasm (2.88 % of base)
          52 : 61001.dasm (1.63 % of base)
          50 : 260410.dasm (3.41 % of base)
          46 : 267825.dasm (9.62 % of base)
          44 : 150437.dasm (0.80 % of base)
          44 : 90.dasm (1.06 % of base)
          44 : 147638.dasm (1.88 % of base)
          42 : 221123.dasm (2.39 % of base)
          42 : 171299.dasm (0.65 % of base)

Top file improvements (bytes):
        -474 : 234082.dasm (-2.11 % of base)
        -314 : 169906.dasm (-6.66 % of base)
         -84 : 167354.dasm (-6.72 % of base)
         -78 : 124402.dasm (-2.17 % of base)
         -74 : 255507.dasm (-3.35 % of base)
         -72 : 132916.dasm (-3.91 % of base)
         -70 : 237694.dasm (-1.32 % of base)
         -68 : 97385.dasm (-2.06 % of base)
         -58 : 52390.dasm (-3.25 % of base)
         -50 : 14072.dasm (-1.51 % of base)
         -50 : 272036.dasm (-2.27 % of base)
         -48 : 206702.dasm (-1.28 % of base)
         -48 : 96976.dasm (-2.75 % of base)
         -46 : 119486.dasm (-1.15 % of base)
         -46 : 125992.dasm (-1.91 % of base)
         -46 : 221493.dasm (-5.78 % of base)
         -44 : 125415.dasm (-2.33 % of base)
         -44 : 67778.dasm (-0.98 % of base)
         -42 : 256471.dasm (-3.32 % of base)
         -40 : 154388.dasm (-1.03 % of base)

72 total files with Code Size differences (37 improved, 35 regressed), 20 unchanged.

Top method regressions (bytes):
         256 (2.26 % of base) : 253699.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
         240 (2.01 % of base) : 11462.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
         204 (13.58 % of base) : 120152.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
         144 (3.45 % of base) : 170130.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
          72 (1.80 % of base) : 170566.dasm - System.Net.WebClient+<UploadBitsAsync>d__152:MoveNext():this (FullOpts)
          70 (4.04 % of base) : 101363.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
          68 (2.90 % of base) : 259691.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
          58 (2.91 % of base) : 147660.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
          56 (0.77 % of base) : 260569.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
          56 (2.92 % of base) : 201512.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
          54 (2.88 % of base) : 268987.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
          54 (2.27 % of base) : 177631.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
          52 (1.63 % of base) : 61001.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          50 (3.41 % of base) : 260410.dasm - System.Net.Http.Http3RequestStream+Http3ReadStream+<DisposeAsync>d__9:MoveNext():this (FullOpts)
          46 (9.62 % of base) : 267825.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
          44 (1.06 % of base) : 90.dasm - System.Text.RegularExpressions.RegexFindOptimizations:TryFindNextStartingPositionLeftToRight(System.ReadOnlySpan`1[ushort],byref,int):ubyte:this (FullOpts)
          44 (1.88 % of base) : 147638.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteDocTypeAsync>d__98:MoveNext():this (FullOpts)
          44 (0.80 % of base) : 150437.dasm - System.Xml.XmlWellFormedWriter+<WriteEndAttributeAsync_SepcialAtt>d__132:MoveNext():this (FullOpts)
          42 (2.39 % of base) : 221123.dasm - System.IO.Compression.BrotliStream+<FlushAsyncCore>d__14:MoveNext():this (FullOpts)
          42 (0.65 % of base) : 171299.dasm - Xunit.ConsoleClient.CommandLine:Parse(System.Predicate`1[System.String]):Xunit.XunitProject:this (FullOpts)

Top method improvements (bytes):
        -474 (-2.11 % of base) : 234082.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        -314 (-6.66 % of base) : 169906.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
         -84 (-6.72 % of base) : 167354.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
         -78 (-2.17 % of base) : 124402.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         -74 (-3.35 % of base) : 255507.dasm - System.DirectoryServices.Protocols.LdapConnection:BuildAttributes(System.Collections.CollectionBase,System.Collections.ArrayList):System.DirectoryServices.Protocols.LdapMod[] (FullOpts)
         -72 (-3.91 % of base) : 132916.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -70 (-1.32 % of base) : 237694.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
         -68 (-2.06 % of base) : 97385.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindUsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
         -58 (-3.25 % of base) : 52390.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
         -50 (-1.51 % of base) : 14072.dasm - ILCompiler.ReadyToRunMetadataFieldLayoutAlgorithm+ModuleFieldLayoutMap:CalculateTypeLayout(Internal.TypeSystem.DefType,Internal.TypeSystem.Ecma.EcmaModule,byref):Internal.TypeSystem.FieldAndOffset[]:this (FullOpts)
         -50 (-2.27 % of base) : 272036.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
         -48 (-1.28 % of base) : 206702.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
         -48 (-2.75 % of base) : 96976.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -46 (-1.15 % of base) : 119486.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateMakeArgumentArrayArgument(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -46 (-1.91 % of base) : 125992.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
         -46 (-5.78 % of base) : 221493.dasm - Newtonsoft.Json.JsonReader:ReadAsBytes():ubyte[]:this (FullOpts)
         -44 (-0.98 % of base) : 67778.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
         -44 (-2.33 % of base) : 125415.dasm - Microsoft.CodeAnalysis.VisualBasic.LambdaRewriter+Analysis:ComputeLambdaScopesAndFrameCaptures():this (FullOpts)
         -42 (-3.32 % of base) : 256471.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
         -40 (-1.03 % of base) : 154388.dasm - System.Xml.Schema.XmlSchemaInference:FindMatchingElement(ubyte,System.Xml.XmlReader,System.Xml.Schema.XmlSchemaComplexType,byref,System.Xml.Schema.XmlSchema,ubyte):System.Xml.Schema.XmlSchemaElement:this (FullOpts)

Top method regressions (percentages):
         204 (13.58 % of base) : 120152.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
          46 (9.62 % of base) : 267825.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
           6 (8.57 % of base) : 54247.dasm - Microsoft.CodeAnalysis.CSharp.PatternExplainer:<SamplePatternForTemp>g__makeConjunct|4_10(System.String,System.String):System.String (FullOpts)
          14 (7.53 % of base) : 204457.dasm - Microsoft.Build.Graph.ProjectInterpretation:SplitPropertyNames(System.String):System.Collections.Generic.IReadOnlyCollection`1[System.String] (FullOpts)
          14 (6.03 % of base) : 269217.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
           8 (5.80 % of base) : 141735.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
           4 (5.26 % of base) : 138413.dasm - Microsoft.CodeAnalysis.Emit.SymbolChanges:IsReplaced(Microsoft.CodeAnalysis.ISymbol,ubyte):ubyte:this (FullOpts)
          12 (4.96 % of base) : 234361.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
           8 (4.94 % of base) : 184412.dasm - Microsoft.CSharp.CSharpModifierAttributeConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
           4 (4.76 % of base) : 149004.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
           6 (4.62 % of base) : 189085.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
          18 (4.19 % of base) : 261291.dasm - System.Net.Http.Headers.HttpHeaderValueCollection`1+<<GetEnumerator>g__Iterate|14_0>d[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          70 (4.04 % of base) : 101363.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
           2 (3.70 % of base) : 248451.dasm - System.Data.ProviderBase.DbConnectionFactory:FindConnectionOptions(System.Data.Common.DbConnectionPoolKey):System.Data.Common.DbConnectionOptions:this (FullOpts)
          10 (3.68 % of base) : 50745.dasm - Microsoft.Diagnostics.Tracing.Ctf.CtfPropertyBag:GetBoolean(System.String):ubyte:this (FullOpts)
           4 (3.57 % of base) : 71342.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
         144 (3.45 % of base) : 170130.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
          14 (3.43 % of base) : 187579.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
          14 (3.43 % of base) : 167787.dasm - System.Net.CookieTokenizer:FindNext(ubyte,ubyte):int:this (FullOpts)
          50 (3.41 % of base) : 260410.dasm - System.Net.Http.Http3RequestStream+Http3ReadStream+<DisposeAsync>d__9:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -28 (-8.92 % of base) : 265255.dasm - System.Diagnostics.ActivityContext:op_Inequality(System.Diagnostics.ActivityContext,System.Diagnostics.ActivityContext):ubyte (FullOpts)
         -36 (-7.47 % of base) : 221502.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTime():System.Nullable`1[System.DateTime]:this (FullOpts)
         -20 (-7.35 % of base) : 243754.dasm - System.ComponentModel.LookupBindingPropertiesAttribute:Equals(System.Object):ubyte:this (FullOpts)
         -20 (-7.25 % of base) : 171751.dasm - System.Xml.Linq.XDocumentType:DeepEquals(System.Xml.Linq.XNode):ubyte:this (FullOpts)
         -84 (-6.72 % of base) : 167354.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
         -22 (-6.71 % of base) : 265307.dasm - System.Diagnostics.ActivityLink:op_Inequality(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink):ubyte (FullOpts)
        -314 (-6.66 % of base) : 169906.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
         -22 (-6.55 % of base) : 155298.dasm - System.Xml.Xsl.Xslt.XslAstAnalyzer:AddImportDependencies(System.Xml.Xsl.Xslt.Stylesheet,System.Xml.Xsl.Xslt.Template):this (FullOpts)
         -18 (-6.21 % of base) : 218997.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:GetNextSym(Microsoft.CSharp.RuntimeBinder.Semantics.CMemberLookupResults+CMethodIterator):ubyte:this (FullOpts)
         -32 (-5.99 % of base) : 143075.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver`1+<>c__DisplayClass11_0[ubyte]:<ExecuteDeclaringReferenceActions>g__executeExecutableCodeActions|2():this (FullOpts)
         -16 (-5.97 % of base) : 265306.dasm - System.Diagnostics.ActivityLink:op_Equality(System.Diagnostics.ActivityLink,System.Diagnostics.ActivityLink):ubyte (FullOpts)
         -12 (-5.88 % of base) : 265254.dasm - System.Diagnostics.ActivityContext:op_Equality(System.Diagnostics.ActivityContext,System.Diagnostics.ActivityContext):ubyte (FullOpts)
         -38 (-5.86 % of base) : 21669.dasm - Microsoft.FSharp.Quotations.DerivedPatternsModule:DecimalPattern(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[System.Decimal] (FullOpts)
         -38 (-5.81 % of base) : 221504.dasm - Newtonsoft.Json.JsonReader:ReadAsDateTimeOffset():System.Nullable`1[System.DateTimeOffset]:this (FullOpts)
         -46 (-5.78 % of base) : 221493.dasm - Newtonsoft.Json.JsonReader:ReadAsBytes():ubyte[]:this (FullOpts)
          -4 (-5.71 % of base) : 61786.dasm - Microsoft.CodeAnalysis.CSharp.ObjectDisplay:ContainsNewLine(System.String):ubyte (FullOpts)
         -24 (-5.71 % of base) : 172094.dasm - System.Xml.Linq.XNodeReader:GetAttribute(System.String):System.String:this (FullOpts)
         -14 (-5.69 % of base) : 229228.dasm - System.Reflection.TypeLoading.RoAssemblyName:Equals(System.Reflection.TypeLoading.RoAssemblyName):ubyte:this (FullOpts)
         -14 (-5.69 % of base) : 235815.dasm - System.Reflection.TypeLoading.RoAssemblyName:Equals(System.Reflection.TypeLoading.RoAssemblyName):ubyte:this (FullOpts)
          -8 (-5.63 % of base) : 155628.dasm - System.Xml.Xsl.XsltOld.BuilderInfo:ValueAppend(System.String,ubyte):this (FullOpts)


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: 241721946 (overridden on cmd)
Total bytes of diff: 241684124 (overridden on cmd)
Total bytes of delta: -37822 (-0.02 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         398 : 378252.dasm (4.11 % of base)
         272 : 177949.dasm (2.76 % of base)
         266 : 132551.dasm (2.72 % of base)
         264 : 128933.dasm (2.71 % of base)
         252 : 188721.dasm (2.93 % of base)
         246 : 219388.dasm (2.47 % of base)
         242 : 386018.dasm (2.42 % of base)
         236 : 724900.dasm (2.68 % of base)
         224 : 339418.dasm (2.11 % of base)
         216 : 490714.dasm (2.25 % of base)
         214 : 549299.dasm (2.05 % of base)
         190 : 167165.dasm (2.00 % of base)
         186 : 466688.dasm (1.94 % of base)
         182 : 271855.dasm (2.13 % of base)
         176 : 170109.dasm (3.31 % of base)
         172 : 254275.dasm (1.83 % of base)
         170 : 302735.dasm (1.68 % of base)
         170 : 545417.dasm (1.70 % of base)
         164 : 68951.dasm (1.82 % of base)
         158 : 178204.dasm (1.43 % of base)

Top file improvements (bytes):
        -366 : 191092.dasm (-1.62 % of base)
        -268 : 255102.dasm (-5.72 % of base)
        -212 : 115432.dasm (-2.49 % of base)
        -212 : 412260.dasm (-2.49 % of base)
        -212 : 418106.dasm (-2.49 % of base)
        -210 : 410727.dasm (-2.49 % of base)
        -210 : 218376.dasm (-2.49 % of base)
        -210 : 196703.dasm (-2.49 % of base)
        -210 : 298426.dasm (-2.49 % of base)
        -190 : 384579.dasm (-1.92 % of base)
        -182 : 565933.dasm (-1.95 % of base)
        -166 : 714756.dasm (-1.58 % of base)
        -152 : 109614.dasm (-10.04 % of base)
        -150 : 123534.dasm (-1.52 % of base)
        -144 : 655950.dasm (-3.74 % of base)
        -142 : 89958.dasm (-2.40 % of base)
        -138 : 222594.dasm (-1.65 % of base)
        -138 : 540185.dasm (-1.65 % of base)
        -126 : 361701.dasm (-1.29 % of base)
        -118 : 432459.dasm (-8.37 % of base)

100 total files with Code Size differences (60 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
         398 (4.11 % of base) : 378252.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         272 (2.76 % of base) : 177949.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         266 (2.72 % of base) : 132551.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         264 (2.71 % of base) : 128933.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         252 (2.93 % of base) : 188721.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         246 (2.47 % of base) : 219388.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         242 (2.42 % of base) : 386018.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         236 (2.68 % of base) : 724900.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         224 (2.11 % of base) : 339418.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         216 (2.25 % of base) : 490714.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         214 (2.05 % of base) : 549299.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         190 (2.00 % of base) : 167165.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         186 (1.94 % of base) : 466688.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         182 (2.13 % of base) : 271855.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         176 (3.31 % of base) : 170109.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
         172 (1.83 % of base) : 254275.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         170 (1.68 % of base) : 302735.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         170 (1.70 % of base) : 545417.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         164 (1.82 % of base) : 68951.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
         158 (1.43 % of base) : 178204.dasm - Microsoft.CodeAnalysis.CSharp.Binder:TryPerformConstructorOverloadResolution(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.String,Microsoft.CodeAnalysis.Location,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref,ubyte,ubyte):ubyte:this (Tier1)

Top method improvements (bytes):
        -366 (-1.62 % of base) : 191092.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
        -268 (-5.72 % of base) : 255102.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (Tier0-FullOpts)
        -212 (-2.49 % of base) : 115432.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -212 (-2.49 % of base) : 412260.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -212 (-2.49 % of base) : 418106.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -210 (-2.49 % of base) : 410727.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -210 (-2.49 % of base) : 218376.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -210 (-2.49 % of base) : 196703.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -210 (-2.49 % of base) : 298426.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
        -190 (-1.92 % of base) : 384579.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -182 (-1.95 % of base) : 565933.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -166 (-1.58 % of base) : 714756.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -152 (-10.04 % of base) : 109614.dasm - System.Number:TryNumberToDecimal(byref,byref):ubyte (Instrumented Tier1)
        -150 (-1.52 % of base) : 123534.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -144 (-3.74 % of base) : 655950.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (Tier0-FullOpts)
        -142 (-2.40 % of base) : 89958.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindMethodGroupInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.BoundMethodGroup,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,byref):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
        -138 (-1.65 % of base) : 222594.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -138 (-1.65 % of base) : 540185.dasm - Xunit.ExecutionEventSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -126 (-1.29 % of base) : 361701.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -118 (-8.37 % of base) : 432459.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (Tier0-FullOpts)

Top method regressions (percentages):
          34 (20.00 % of base) : 363539.dasm - System.Number:RoundNumber(byref,int,ubyte) (Tier1)
           8 (12.50 % of base) : 432035.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteElementString(System.String,System.String,System.String):this (Tier1)
         132 (8.47 % of base) : 177572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:Create(byref,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListBuilder,Microsoft.CodeAnalysis.CSharp.SyntaxDiagnosticInfo[]):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this (Tier1)
           8 (8.16 % of base) : 171022.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
           8 (8.16 % of base) : 185560.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
          38 (7.95 % of base) : 83170.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:HasImplicitConstantExpressionConversion(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):ubyte (Tier1)
           8 (7.27 % of base) : 171064.dasm - System.Reflection.TypeNameParser:Skip():this (Tier1)
          26 (6.44 % of base) : 69673.dasm - System.Text.RegularExpressions.RegexCharClass:TryGetAsciiSetChars(System.String,byref):ubyte (Tier1)
          26 (6.44 % of base) : 176774.dasm - System.Text.RegularExpressions.RegexCharClass:TryGetAsciiSetChars(System.String,byref):ubyte (Tier1)
          20 (6.10 % of base) : 429380.dasm - System.Xml.Serialization.CodeGenerator:BeginMethod(System.Type,System.String,System.Type[],System.String[],int):this (Tier1)
          32 (5.97 % of base) : 205921.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
          20 (5.92 % of base) : 526828.dasm - System.Text.Unicode.Utf8:FromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref,ubyte,ubyte):int (Tier1)
           8 (5.80 % of base) : 28281.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (Tier0-FullOpts)
           8 (5.63 % of base) : 171066.dasm - System.Reflection.TypeNameParser:get_Peek():int:this (Tier1)
          46 (5.45 % of base) : 674480.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.ContextAwareSyntax:DefaultSwitchLabel(Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DefaultSwitchLabelSyntax:this (Tier1)
          16 (5.33 % of base) : 430780.dasm - System.Xml.Serialization.StructModel:CheckPropertyRead(System.Reflection.PropertyInfo):ubyte (Tier1)
          18 (5.14 % of base) : 516041.dasm - System.DateTimeParse:ParseDigits(byref,int,byref):ubyte (Tier1)
          12 (4.96 % of base) : 188510.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (Tier0-FullOpts)
          26 (4.89 % of base) : 700526.dasm - System.Threading.ThreadPool:UnsafeQueueUserWorkItem(System.Threading.IThreadPoolWorkItem,ubyte):ubyte (Tier1)
           4 (4.76 % of base) : 141274.dasm - System.Xml.XmlReader:MoveToContent():int:this (Tier0-FullOpts)

Top method improvements (percentages):
         -32 (-16.49 % of base) : 290667.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
         -32 (-16.33 % of base) : 293543.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
         -32 (-16.33 % of base) : 297072.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
         -32 (-15.24 % of base) : 289318.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.lambda14a.lambda14a.Foo,System.Object,System.Object):System.Object (FullOpts)
         -32 (-15.24 % of base) : 297941.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.executeOrder.order01a.order01a.Parent,System.Object,int,int):System.Object (FullOpts)
         -40 (-14.29 % of base) : 288575.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,int,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.cnstrctor007.cnstrctor007.MyType1 (FullOpts)
         -16 (-13.33 % of base) : 102843.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
         -16 (-13.33 % of base) : 97845.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
         -16 (-13.33 % of base) : 293292.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
         -16 (-13.33 % of base) : 101718.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -16 (-13.33 % of base) : 282631.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -16 (-13.33 % of base) : 282484.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -16 (-13.33 % of base) : 296137.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
         -16 (-13.33 % of base) : 102564.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
         -16 (-13.33 % of base) : 102548.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -16 (-13.33 % of base) : 101150.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -36 (-13.14 % of base) : 282444.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)
         -16 (-13.11 % of base) : 282629.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
         -16 (-13.11 % of base) : 102479.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
         -16 (-13.11 % of base) : 288614.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)


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: 93043072 (overridden on cmd)
Total bytes of diff: 93030982 (overridden on cmd)
Total bytes of delta: -12090 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         256 : 11573.dasm (2.64 % of base)
         168 : 121011.dasm (3.20 % of base)
         144 : 83468.dasm (3.45 % of base)
         102 : 296085.dasm (2.81 % of base)
          68 : 128226.dasm (1.02 % of base)
          62 : 128242.dasm (2.20 % of base)
          60 : 297189.dasm (1.94 % of base)
          60 : 297215.dasm (1.93 % of base)
          60 : 171544.dasm (2.55 % of base)
          60 : 297273.dasm (1.92 % of base)
          60 : 297336.dasm (1.92 % of base)
          56 : 152947.dasm (3.27 % of base)
          56 : 20531.dasm (1.45 % of base)
          56 : 259476.dasm (2.47 % of base)
          54 : 155969.dasm (3.04 % of base)
          52 : 278066.dasm (2.25 % of base)
          52 : 5409.dasm (6.82 % of base)
          50 : 128978.dasm (2.45 % of base)
          50 : 131094.dasm (2.74 % of base)
          48 : 128288.dasm (2.45 % of base)

Top file improvements (bytes):
        -482 : 59580.dasm (-2.15 % of base)
        -314 : 90092.dasm (-6.65 % of base)
        -170 : 44439.dasm (-3.31 % of base)
        -144 : 277848.dasm (-3.74 % of base)
        -132 : 166116.dasm (-9.10 % of base)
        -122 : 166313.dasm (-8.64 % of base)
         -84 : 287912.dasm (-1.98 % of base)
         -84 : 179886.dasm (-6.72 % of base)
         -72 : 50560.dasm (-1.39 % of base)
         -58 : 12477.dasm (-3.63 % of base)
         -58 : 6633.dasm (-1.57 % of base)
         -54 : 2980.dasm (-1.36 % of base)
         -52 : 288215.dasm (-1.72 % of base)
         -50 : 263066.dasm (-1.19 % of base)
         -50 : 288321.dasm (-3.72 % of base)
         -50 : 152833.dasm (-2.27 % of base)
         -44 : 294978.dasm (-1.50 % of base)
         -42 : 33330.dasm (-3.32 % of base)
         -40 : 104284.dasm (-14.29 % of base)
         -38 : 8924.dasm (-0.88 % of base)

78 total files with Code Size differences (39 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
         256 (2.64 % of base) : 11573.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
         168 (3.20 % of base) : 121011.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         144 (3.45 % of base) : 83468.dasm - System.ComponentModel.CategoryAttribute:GetLocalizedString(System.String):System.String:this (FullOpts)
         102 (2.81 % of base) : 296085.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
          68 (1.02 % of base) : 128226.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<ReaderShouldNotGetUnflushedBytesWithAppend>d__17:MoveNext():this (FullOpts)
          62 (2.20 % of base) : 128242.dasm - System.IO.Pipelines.Tests.PipePoolTests+<AdvanceToEndReturnsAllButOneBlockIfWritingBeforeAdvance>d__1:MoveNext():this (FullOpts)
          60 (1.93 % of base) : 297215.dasm - System.Threading.RateLimiting.Test.ConcurrencyLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
          60 (1.94 % of base) : 297189.dasm - System.Threading.RateLimiting.Test.FixedWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
          60 (1.92 % of base) : 297273.dasm - System.Threading.RateLimiting.Test.SlidingWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__8:MoveNext():this (FullOpts)
          60 (1.92 % of base) : 297336.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
          60 (2.55 % of base) : 171544.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
          56 (3.27 % of base) : 152947.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
          56 (1.45 % of base) : 20531.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          56 (2.47 % of base) : 259476.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
          54 (3.04 % of base) : 155969.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
          52 (6.82 % of base) : 5409.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.MetadataTypeName+Key,System.__Canon]:TryGetValue(Microsoft.CodeAnalysis.MetadataTypeName+Key,byref):ubyte:this (FullOpts)
          52 (2.25 % of base) : 278066.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1322_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          50 (2.45 % of base) : 128978.dasm - System.IO.Pipelines.Tests.PipeLengthTests+<LengthIsBasedOnPreviouslyExamined>d__10:MoveNext():this (FullOpts)
          50 (2.74 % of base) : 131094.dasm - System.IO.Tests.MemoryStreamTests+<DerivedMemoryStream_ReadWriteAsyncMemoryCalled_ReadWriteAsyncArrayUsed>d__8:MoveNext():this (FullOpts)
          48 (2.45 % of base) : 128288.dasm - System.IO.Pipelines.Tests.PipeWriterTests+<WriteLargeDataBinary>d__9:MoveNext():this (FullOpts)

Top method improvements (bytes):
        -482 (-2.15 % of base) : 59580.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        -314 (-6.65 % of base) : 90092.dasm - System.TermInfo+ParameterizedStrings:EvaluateInternal(System.String,byref,System.TermInfo+ParameterizedStrings+FormatParam[],System.Collections.Generic.Stack`1[System.TermInfo+ParameterizedStrings+FormatParam],byref,byref):System.String (FullOpts)
        -170 (-3.31 % of base) : 44439.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
        -144 (-3.74 % of base) : 277848.dasm - RegexTestNamespace.RegexRunnerTestClass:Go():this (FullOpts)
        -132 (-9.10 % of base) : 166116.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
        -122 (-8.64 % of base) : 166313.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
         -84 (-6.72 % of base) : 179886.dasm - System.Reflection.Emit.DllImportData:Create(System.Reflection.Emit.CustomAttributeInfo,byref):System.Reflection.Emit.DllImportData (FullOpts)
         -84 (-1.98 % of base) : 287912.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5582_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -72 (-1.39 % of base) : 50560.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitArguments(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):System.ValueTuple`3[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte]:this (FullOpts)
         -58 (-1.57 % of base) : 6633.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindDefaultArgumentsAndParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Nullable`1[System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.Location]]],byref,byref,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
         -58 (-3.63 % of base) : 12477.dasm - Microsoft.CodeAnalysis.Operations.CSharpOperationFactory:CreateBoundConversionOperation(Microsoft.CodeAnalysis.CSharp.BoundConversion,ubyte):Microsoft.CodeAnalysis.IOperation:this (FullOpts)
         -54 (-1.36 % of base) : 2980.dasm - Microsoft.VisualStudio.Composition.ComposableCatalog:AddPart(Microsoft.VisualStudio.Composition.ComposablePartDefinition):Microsoft.VisualStudio.Composition.ComposableCatalog:this (FullOpts)
         -52 (-1.72 % of base) : 288215.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5854_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -50 (-2.27 % of base) : 152833.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
         -50 (-1.19 % of base) : 263066.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:EscapingTestWhileWriting(ushort,System.Text.Encodings.Web.JavaScriptEncoder,ubyte):this (FullOpts)
         -50 (-3.72 % of base) : 288321.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5894_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -44 (-1.50 % of base) : 294978.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33194_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -42 (-3.32 % of base) : 33330.dasm - System.IO.FileSystemWatcher+RunningInstance:ProcessEvent(System.IO.FileSystemWatcher+RunningInstance+NotifyEvent,byref,byref,byref):ubyte:this (FullOpts)
         -40 (-14.29 % of base) : 104284.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,int,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.cnstrctor007.cnstrctor007.MyType1 (FullOpts)
         -38 (-0.88 % of base) : 8924.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.SyntaxNormalizer:RewriteTrivia(Microsoft.CodeAnalysis.SyntaxTriviaList,int,ubyte,ubyte,ubyte,int):Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)

Top method regressions (percentages):
          46 (9.62 % of base) : 216396.dasm - Interop+Crypto:EcKeyCreateByExplicitCurve(System.Security.Cryptography.ECCurve):Microsoft.Win32.SafeHandles.SafeEcKeyHandle (FullOpts)
          18 (8.49 % of base) : 68366.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
          18 (8.49 % of base) : 70464.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
          52 (6.82 % of base) : 5409.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[Microsoft.CodeAnalysis.MetadataTypeName+Key,System.__Canon]:TryGetValue(Microsoft.CodeAnalysis.MetadataTypeName+Key,byref):ubyte:this (FullOpts)
          14 (6.03 % of base) : 116550.dasm - System.Security.Cryptography.ECParameters:Validate():this (FullOpts)
           8 (5.80 % of base) : 11897.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
          12 (4.96 % of base) : 58056.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
           4 (4.76 % of base) : 42395.dasm - System.Xml.XmlReader:MoveToContent():int:this (FullOpts)
          10 (4.72 % of base) : 166715.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterEnumFlags:Write2_EnumFlags(System.Object):this (FullOpts)
          10 (4.67 % of base) : 164812.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterByteEnum:Write2_ByteEnum(System.Object):this (FullOpts)
          10 (4.67 % of base) : 164831.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterIntEnum:Write2_IntEnum(System.Object):this (FullOpts)
          10 (4.67 % of base) : 164804.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterMyEnum:Write2_MyEnum(System.Object):this (FullOpts)
          10 (4.67 % of base) : 164838.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterUIntEnum:Write2_UIntEnum(System.Object):this (FullOpts)
          10 (4.63 % of base) : 164820.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterSByteEnum:Write2_SByteEnum(System.Object):this (FullOpts)
          10 (4.63 % of base) : 164827.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterShortEnum:Write2_ShortEnum(System.Object):this (FullOpts)
           6 (4.62 % of base) : 47220.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
          10 (4.59 % of base) : 164843.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterLongEnum:Write2_LongEnum(System.Object):this (FullOpts)
          10 (4.59 % of base) : 164847.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterULongEnum:Write2_ULongEnum(System.Object):this (FullOpts)
          10 (4.59 % of base) : 166069.dasm - System.Xml.Serialization.XmlSerializationPrimitiveWriter:Write_char(System.Object):this (FullOpts)
           4 (4.35 % of base) : 22584.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)

Top method improvements (percentages):
         -32 (-16.49 % of base) : 103093.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.decl.declaration.decl05a.decl05a.Parent,System.Object):System.Object (FullOpts)
         -32 (-16.33 % of base) : 108329.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.basic.usage13a.usage13a.Parent,System.Object):System.Object (FullOpts)
         -32 (-16.33 % of base) : 107618.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.prms.prms09b.prms09b.Parent,System.Object):System.Object (FullOpts)
         -32 (-15.24 % of base) : 102102.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.dlgate.lambda14a.lambda14a.Foo,System.Object,System.Object):System.Object (FullOpts)
         -32 (-15.24 % of base) : 112866.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.namedandoptional.usage.executeOrder.order01a.order01a.Parent,System.Object,int,int):System.Object (FullOpts)
         -18 (-14.75 % of base) : 25141.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
         -40 (-14.29 % of base) : 104284.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,int,System.Object):ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.cnstrctor007.cnstrctor007.MyType1 (FullOpts)
         -18 (-14.06 % of base) : 101735.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):float (FullOpts)
         -18 (-13.64 % of base) : 101682.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -16 (-13.33 % of base) : 27663.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
         -16 (-13.33 % of base) : 102835.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
         -16 (-13.33 % of base) : 104409.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -16 (-13.33 % of base) : 26523.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -16 (-13.33 % of base) : 103609.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -16 (-13.33 % of base) : 108701.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
         -16 (-13.33 % of base) : 27479.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
         -16 (-13.33 % of base) : 107572.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -16 (-13.33 % of base) : 28984.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -16 (-13.33 % of base) : 27462.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -36 (-13.14 % of base) : 108849.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.formalParameter.param001.param001.MyClass,System.Object,System.Object) (FullOpts)


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: 13613084 (overridden on cmd)
Total bytes of diff: 13612640 (overridden on cmd)
Total bytes of delta: -444 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          58 : 17651.dasm (5.16 % of base)
          56 : 19187.dasm (1.45 % of base)
          54 : 32769.dasm (1.78 % of base)
          52 : 20642.dasm (3.63 % of base)
          52 : 20220.dasm (4.45 % of base)
          46 : 20377.dasm (3.42 % of base)
          42 : 2688.dasm (1.97 % of base)
          42 : 543.dasm (2.15 % of base)
          40 : 19046.dasm (0.58 % of base)
          34 : 22987.dasm (1.86 % of base)
          26 : 20073.dasm (3.98 % of base)
          26 : 26876.dasm (1.35 % of base)
          24 : 25234.dasm (1.71 % of base)
          24 : 18606.dasm (3.06 % of base)
          22 : 17650.dasm (1.87 % of base)
          22 : 23144.dasm (1.47 % of base)
          22 : 20379.dasm (2.17 % of base)
          22 : 20489.dasm (2.22 % of base)
          20 : 12910.dasm (0.80 % of base)
          20 : 31865.dasm (1.78 % of base)

Top file improvements (bytes):
         -76 : 12661.dasm (-0.84 % of base)
         -62 : 30474.dasm (-2.08 % of base)
         -58 : 36467.dasm (-0.73 % of base)
         -52 : 7086.dasm (-3.85 % of base)
         -44 : 17360.dasm (-1.16 % of base)
         -44 : 5777.dasm (-0.93 % of base)
         -40 : 23103.dasm (-1.94 % of base)
         -40 : 37082.dasm (-4.11 % of base)
         -34 : 28939.dasm (-1.42 % of base)
         -32 : 29330.dasm (-0.77 % of base)
         -30 : 25404.dasm (-0.66 % of base)
         -30 : 28469.dasm (-3.04 % of base)
         -26 : 23061.dasm (-1.16 % of base)
         -26 : 28847.dasm (-2.69 % of base)
         -26 : 31170.dasm (-0.61 % of base)
         -24 : 29920.dasm (-3.64 % of base)
         -24 : 7840.dasm (-0.54 % of base)
         -22 : 28879.dasm (-2.23 % of base)
         -22 : 30769.dasm (-3.27 % of base)
         -22 : 28025.dasm (-1.21 % of base)

64 total files with Code Size differences (34 improved, 30 regressed), 20 unchanged.

Top method regressions (bytes):
          58 (5.16 % of base) : 17651.dasm - Microsoft.ML.Data.VBuffer`1[System.ReadOnlyMemory`1[ushort]]:CopyTo(byref):this (FullOpts)
          56 (1.45 % of base) : 19187.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          54 (1.78 % of base) : 32769.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitFixedStatement(Microsoft.CodeAnalysis.CSharp.BoundFixedStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this (FullOpts)
          52 (4.45 % of base) : 20220.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[float]:Get(byref):this (FullOpts)
          52 (3.63 % of base) : 20642.dasm - Microsoft.ML.Transforms.LpNormNormalizingTransformer+Mapper:FillValues(Microsoft.ML.Runtime.IExceptionContext,byref,byref,float,float,float) (FullOpts)
          46 (3.42 % of base) : 20377.dasm - Microsoft.ML.Data.BufferBuilder`1[float]:GetResult(byref):this (FullOpts)
          42 (1.97 % of base) : 2688.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          42 (2.15 % of base) : 543.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
          40 (0.58 % of base) : 19046.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
          34 (1.86 % of base) : 22987.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:TryAddAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,Microsoft.CodeAnalysis.MetadataReference,int,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.Location,System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon],ubyte):Microsoft.CodeAnalysis.MetadataReference:this (FullOpts)
          26 (1.35 % of base) : 26876.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
          26 (3.98 % of base) : 20073.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Copy[System.ReadOnlyMemory`1[ushort]](System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]],byref,int) (FullOpts)
          24 (1.71 % of base) : 25234.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:GetUserDefinedBinaryOperatorsFromInterfaces(int,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,byref,System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BinaryOperatorAnalysisResult]):ubyte:this (FullOpts)
          24 (3.06 % of base) : 18606.dasm - Microsoft.ML.Data.VBuffer`1[double]:Copy(double[],int,byref,int) (FullOpts)
          22 (1.47 % of base) : 23144.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax],System.Action`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax]):ubyte:this (FullOpts)
          22 (2.22 % of base) : 20489.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyIntoEitherDefined[float,float](byref,byref,System.Func`3[int,float,float]) (FullOpts)
          22 (1.87 % of base) : 17650.dasm - Microsoft.ML.Transforms.HashingTransformer+<>c__DisplayClass44_0`2[System.ReadOnlyMemory`1[ushort],Microsoft.ML.Transforms.HashingTransformer+HashText]:<MakeVectorHashGetter>b__0(byref):this (FullOpts)
          22 (2.17 % of base) : 20379.dasm - Microsoft.ML.Transforms.ValueToKeyMappingTransformer+BoundTermMap+Base`1+<>c__DisplayClass3_0[System.ReadOnlyMemory`1[ushort]]:<GetMappingGetter>b__1(byref):this (FullOpts)
          20 (0.80 % of base) : 12910.dasm - FSharp.Compiler.ParseAndCheckInputs:ProcessMetaCommand@572[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.CompilerConfig+TcConfigBuilder,System.String,ubyte,System.__Canon,FSharp.Compiler.Syntax.ParsedHashDirective):System.__Canon (FullOpts)
          20 (1.78 % of base) : 31865.dasm - Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter:GenerateSwitchBuckets(int,int):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CodeGen.SwitchIntegralJumpTableEmitter+SwitchBucket]:this (FullOpts)

Top method improvements (bytes):
         -76 (-0.84 % of base) : 12661.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
         -62 (-2.08 % of base) : 30474.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CreateTupleLiteralConversion(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -58 (-0.73 % of base) : 36467.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         -52 (-3.85 % of base) : 7086.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -44 (-0.93 % of base) : 5777.dasm - FSharp.Compiler.CompilerOptions:attempt@284(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Collections.FSharpList`1[System.String],System.String,System.String,System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption]):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
         -44 (-1.16 % of base) : 17360.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
         -40 (-1.94 % of base) : 23103.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
         -40 (-4.11 % of base) : 37082.dasm - System.RuntimeType:ValidateGenericArguments(System.Reflection.MemberInfo,System.RuntimeType[],System.Exception) (FullOpts)
         -34 (-1.42 % of base) : 28939.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArrayCreationWithInitializer(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte):Microsoft.CodeAnalysis.CSharp.BoundArrayCreation:this (FullOpts)
         -32 (-0.77 % of base) : 29330.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindCatchBlock(Microsoft.CodeAnalysis.CSharp.Syntax.CatchClauseSyntax,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundCatchBlock],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundCatchBlock:this (FullOpts)
         -30 (-3.04 % of base) : 28469.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:CheckMethodConstraints(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (FullOpts)
         -30 (-0.66 % of base) : 25404.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -26 (-1.16 % of base) : 23061.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbols(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):this (FullOpts)
         -26 (-0.61 % of base) : 31170.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -26 (-2.69 % of base) : 28847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         -24 (-0.54 % of base) : 7840.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
         -24 (-3.64 % of base) : 29920.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)
         -22 (-1.21 % of base) : 28025.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:ComputeBoundDecisionDagNodes(Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag,Microsoft.CodeAnalysis.CSharp.BoundLeafDecisionDagNode):this (FullOpts)
         -22 (-2.23 % of base) : 28879.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackNullableStateOfTupleElements(int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],System.Collections.Immutable.ImmutableArray`1[int],ubyte):this (FullOpts)
         -22 (-1.04 % of base) : 23238.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)

Top method regressions (percentages):
           8 (5.88 % of base) : 34353.dasm - Microsoft.CodeAnalysis.AnalyzerConfigSet+SequenceEqualComparer:Equals(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section],System.Collections.Generic.List`1[Microsoft.CodeAnalysis.AnalyzerConfig+Section]):ubyte:this (FullOpts)
          58 (5.16 % of base) : 17651.dasm - Microsoft.ML.Data.VBuffer`1[System.ReadOnlyMemory`1[ushort]]:CopyTo(byref):this (FullOpts)
           6 (4.62 % of base) : 33782.dasm - System.Reflection.BlobUtilities:GetUTF8ByteCount(uint,int,int,byref):int (FullOpts)
          52 (4.45 % of base) : 20220.dasm - Microsoft.ML.Data.TextLoader+VectorPipe`1+VectorValue[float]:Get(byref):this (FullOpts)
           4 (4.35 % of base) : 22485.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
          26 (3.98 % of base) : 20073.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:Copy[System.ReadOnlyMemory`1[ushort]](System.Collections.Generic.List`1[System.ReadOnlyMemory`1[ushort]],byref,int) (FullOpts)
          52 (3.63 % of base) : 20642.dasm - Microsoft.ML.Transforms.LpNormNormalizingTransformer+Mapper:FillValues(Microsoft.ML.Runtime.IExceptionContext,byref,byref,float,float,float) (FullOpts)
          46 (3.42 % of base) : 20377.dasm - Microsoft.ML.Data.BufferBuilder`1[float]:GetResult(byref):this (FullOpts)
           2 (3.33 % of base) : 30767.dasm - System.Linq.Enumerable+RangeIterator:MoveNext():ubyte:this (FullOpts)
          24 (3.06 % of base) : 18606.dasm - Microsoft.ML.Data.VBuffer`1[double]:Copy(double[],int,byref,int) (FullOpts)
           6 (2.65 % of base) : 3455.dasm - System.Decimal+DecCalc:VarDecCmpSub(byref,byref):int (FullOpts)
           4 (2.56 % of base) : 27985.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+Tests+AndSequence:ComputeSelectedTest():Microsoft.CodeAnalysis.CSharp.BoundDagTest:this (FullOpts)
           2 (2.56 % of base) : 26576.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:ContainsDroppedIdentifierCharacters(System.String):ubyte (FullOpts)
          22 (2.22 % of base) : 20489.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyIntoEitherDefined[float,float](byref,byref,System.Func`3[int,float,float]) (FullOpts)
          22 (2.17 % of base) : 20379.dasm - Microsoft.ML.Transforms.ValueToKeyMappingTransformer+BoundTermMap+Base`1+<>c__DisplayClass3_0[System.ReadOnlyMemory`1[ushort]]:<GetMappingGetter>b__1(byref):this (FullOpts)
          42 (2.15 % of base) : 543.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
          18 (2.11 % of base) : 22962.dasm - Microsoft.CodeAnalysis.PEModule:GetMetadataModuleNamesOrThrow():System.Collections.Immutable.ImmutableArray`1[System.String]:this (FullOpts)
          42 (1.97 % of base) : 2688.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          10 (1.92 % of base) : 29772.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSetFactory`2[ushort,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+CharTC]:Related(int,ushort):Microsoft.CodeAnalysis.CSharp.IValueSet`1[ushort]:this (FullOpts)
          10 (1.92 % of base) : 29714.dasm - Microsoft.CodeAnalysis.CSharp.ValueSetFactory+NumericValueSetFactory`2[ushort,Microsoft.CodeAnalysis.CSharp.ValueSetFactory+UShortTC]:Related(int,ushort):Microsoft.CodeAnalysis.CSharp.IValueSet`1[ushort]:this (FullOpts)

Top method improvements (percentages):
          -6 (-4.17 % of base) : 16098.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
         -40 (-4.11 % of base) : 37082.dasm - System.RuntimeType:ValidateGenericArguments(System.Reflection.MemberInfo,System.RuntimeType[],System.Exception) (FullOpts)
         -52 (-3.85 % of base) : 7086.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -24 (-3.64 % of base) : 29920.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsMoveableVariable(Microsoft.CodeAnalysis.CSharp.BoundExpression,byref):ubyte:this (FullOpts)
         -20 (-3.53 % of base) : 3365.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare:GenericEqualityObj(ubyte,System.Collections.IEqualityComparer,System.Object,System.Object):ubyte (FullOpts)
         -22 (-3.27 % of base) : 30769.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetNextToken(byref,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],ubyte,System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
         -30 (-3.04 % of base) : 28469.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:CheckMethodConstraints(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):this (FullOpts)
          -2 (-2.86 % of base) : 25190.dasm - Microsoft.CodeAnalysis.CSharp.Binder:IsTypelessExpressionAllowedInBinaryOperator(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression):ubyte:this (FullOpts)
          -4 (-2.82 % of base) : 3080.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
         -26 (-2.69 % of base) : 28847.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Location],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
         -12 (-2.63 % of base) : 19740.dasm - System.Text.Unicode.Utf8:ToUtf16(System.ReadOnlySpan`1[ubyte],System.Span`1[ushort],byref,byref,ubyte,ubyte):int (FullOpts)
         -12 (-2.50 % of base) : 3859.dasm - Microsoft.FSharp.Core.CompilerServices.ListCollector`1[System.__Canon]:AddMany(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
         -20 (-2.29 % of base) : 30444.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:GetTupleLiteralConversion(Microsoft.CodeAnalysis.CSharp.BoundTupleLiteral,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionsBase+ClassifyConversionFromExpressionDelegate,ubyte,ubyte):Microsoft.CodeAnalysis.CSharp.Conversion:this (FullOpts)
         -12 (-2.28 % of base) : 5670.dasm - Microsoft.FSharp.Core.CompilerServices.ArrayCollector`1[System.__Canon]:AddMany(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (FullOpts)
          -6 (-2.24 % of base) : 3843.dasm - System.IO.Path:CombineInternal(System.String,System.String,System.String):System.String (FullOpts)
         -22 (-2.23 % of base) : 28879.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:TrackNullableStateOfTupleElements(int,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState],System.Collections.Immutable.ImmutableArray`1[int],ubyte):this (FullOpts)
          -8 (-2.17 % of base) : 33731.dasm - Microsoft.Cci.MetadataWriter:PopulateAssemblyTableRows():this (FullOpts)
          -2 (-2.17 % of base) : 35579.dasm - System.IO.Path:GetPathRoot(System.String):System.String (FullOpts)
          -2 (-2.17 % of base) : 35069.dasm - System.Management.Automation.DisplayEntry:.ctor(System.String,int):this (FullOpts)
          -2 (-2.17 % of base) : 37144.dasm - System.Management.Automation.WildcardPattern:ContainsWildcardCharacters(System.String):ubyte (FullOpts)



windows x86

Diffs are based on 2,297,926 contexts (841,817 MinOpts, 1,456,109 FullOpts).

MISSED contexts: base: 2,090 (0.09%), diff: 3,444 (0.15%)

Overall (-179,094 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,079,626 +1,815
benchmarks.run_pgo.windows.x86.checked.mch 43,693,213 -14,646
benchmarks.run_tiered.windows.x86.checked.mch 9,483,002 +744
coreclr_tests.run.windows.x86.checked.mch 308,689,527 -81,235
libraries.crossgen2.windows.x86.checked.mch 31,589,655 -1,698
libraries.pmi.windows.x86.checked.mch 48,705,820 -7,539
libraries_tests.run.windows.x86.Release.mch 185,057,062 -59,640
librariestestsnotieredcompilation.run.windows.x86.Release.mch 102,009,413 -13,900
realworld.run.windows.x86.checked.mch 11,326,284 -2,995

FullOpts (-179,094 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.x86.checked.mch 7,079,347 +1,815
benchmarks.run_pgo.windows.x86.checked.mch 37,063,723 -14,646
benchmarks.run_tiered.windows.x86.checked.mch 5,213,193 +744
coreclr_tests.run.windows.x86.checked.mch 107,017,758 -81,235
libraries.crossgen2.windows.x86.checked.mch 31,588,598 -1,698
libraries.pmi.windows.x86.checked.mch 48,610,506 -7,539
libraries_tests.run.windows.x86.Release.mch 86,725,555 -59,640
librariestestsnotieredcompilation.run.windows.x86.Release.mch 93,339,621 -13,900
realworld.run.windows.x86.checked.mch 11,030,584 -2,995

Example diffs

benchmarks.run.windows.x86.checked.mch

-47 (-15.56%) : 15870.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)

@@ -13,7 +13,7 @@
 ;  V02 loc0         [V02,T03] ( 15, 20.04)     int  ->  [ebp-0x10] 
 ;  V03 loc1         [V03,T02] ( 11, 23.50)     int  ->  [ebp-0x14] 
 ;  V04 tmp0         [V04,T08] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  edx         "Inlining Arg"
+;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V13 tmp9         [V13,T07] (  4,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V14 tmp10        [V14,T00] (  8, 24   )  ushort  ->  eax         "Inlining Arg"
+;  V14 tmp10        [V14,T00] (  8, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V16 tmp12        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V17 tmp13        [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -73,139 +73,117 @@ G_M50035_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      ebx, dword ptr [esi+0x04]
        lea      eax, [ebx-0x01]
        mov      dword ptr [ebp-0x10], eax
-       xor      ecx, ecx
+       xor      edx, edx
        test     edi, 1
-       mov      dword ptr [ebp-0x14], ecx
-       je       SHORT G_M50035_IG10
-                       ;; size=22 bbWeight=1 PerfScore 6.00
+       je       SHORT G_M50035_IG09
+                       ;; size=19 bbWeight=1 PerfScore 5.00
 G_M50035_IG03:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       xor      ecx, ecx
+       xor      edx, edx
        test     ebx, ebx
-       jle      SHORT G_M50035_IG07
+       jle      SHORT G_M50035_IG09
                        ;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M50035_IG04:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       movzx    edx, word  ptr [esi+2*ecx+0x08]
-       cmp      edx, 256
-       jb       SHORT G_M50035_IG08
-                       ;; size=13 bbWeight=4 PerfScore 13.00
+       mov      dword ptr [ebp-0x14], edx
+       movzx    ecx, word  ptr [esi+2*edx+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG07
+                       ;; size=16 bbWeight=4 PerfScore 17.00
 G_M50035_IG05:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, edx
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG10
-                       ;; size=15 bbWeight=2 PerfScore 11.00
-G_M50035_IG06:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
+       je       SHORT G_M50035_IG06
+       jmp      SHORT G_M50035_IG08
+                       ;; size=12 bbWeight=2 PerfScore 12.50
+G_M50035_IG06:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
        jmp      SHORT G_M50035_IG09
-                       ;; size=5 bbWeight=4 PerfScore 12.00
-G_M50035_IG07:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG10
-                       ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG08:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [edx+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG17
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG07:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG15
                        ;; size=9 bbWeight=2 PerfScore 8.00
-G_M50035_IG09:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       inc      ecx
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      ebx, ecx
-       jg       SHORT G_M50035_IG16
+G_M50035_IG08:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
+       inc      edx
+       cmp      ebx, edx
+       jg       SHORT G_M50035_IG04
                        ;; size=8 bbWeight=4 PerfScore 10.00
-G_M50035_IG10:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M50035_IG09:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        test     edi, 2
        mov      edi, dword ptr [ebp-0x10]
-       je       G_M50035_IG27
-                       ;; size=15 bbWeight=1 PerfScore 2.25
-G_M50035_IG11:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       je       SHORT G_M50035_IG14
+                       ;; size=11 bbWeight=1 PerfScore 2.25
+G_M50035_IG10:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        lea      eax, [ebx-0x01]
        mov      edi, eax
-       mov      ecx, dword ptr [ebp-0x14]
-       cmp      edi, ecx
-       jl       SHORT G_M50035_IG15
-       mov      eax, edi
-       or       eax, ecx
-       jl       SHORT G_M50035_IG22
+       cmp      edi, edx
+       jl       SHORT G_M50035_IG13
+       mov      dword ptr [ebp-0x14], edx
+       mov      ecx, edi
+       or       ecx, edx
+       jl       SHORT G_M50035_IG18
        cmp      ebx, edi
-       jle      SHORT G_M50035_IG22
+       jle      SHORT G_M50035_IG18
                        ;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M50035_IG12:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       movzx    eax, word  ptr [esi+2*edi+0x08]
-       cmp      eax, 256
-       jb       SHORT G_M50035_IG18
-                       ;; size=12 bbWeight=3.96 PerfScore 12.87
-G_M50035_IG13:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, eax
+G_M50035_IG11:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       movzx    ecx, word  ptr [esi+2*edi+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG16
+                       ;; size=13 bbWeight=3.96 PerfScore 12.87
+G_M50035_IG12:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG27
-                       ;; size=15 bbWeight=1.98 PerfScore 10.89
-G_M50035_IG14:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M50035_IG19
-                       ;; size=5 bbWeight=3.96 PerfScore 11.88
-G_M50035_IG15:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
+       je       SHORT G_M50035_IG22
+       jmp      SHORT G_M50035_IG17
+                       ;; size=12 bbWeight=1.98 PerfScore 12.38
+G_M50035_IG13:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      dword ptr [ebp-0x14], edx
+       jmp      SHORT G_M50035_IG22
                        ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG16:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      G_M50035_IG04
-                       ;; size=8 bbWeight=2 PerfScore 6.00
-G_M50035_IG17:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG10
-                       ;; size=5 bbWeight=1 PerfScore 3.00
-G_M50035_IG18:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [eax+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG21
-                       ;; size=9 bbWeight=1.98 PerfScore 7.92
-G_M50035_IG19:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       dec      edi
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      edi, ecx
-       mov      ecx, dword ptr [ebp-0x14]
-       jge      SHORT G_M50035_IG12
-                       ;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M50035_IG20:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
+G_M50035_IG14:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      dword ptr [ebp-0x14], edx
+       jmp      SHORT G_M50035_IG22
                        ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50035_IG21:        ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
-                       ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M50035_IG22:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG15:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M50035_IG09
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG16:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG22
+                       ;; size=9 bbWeight=1.98 PerfScore 7.92
+G_M50035_IG17:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       dec      edi
+       mov      edx, dword ptr [ebp-0x14]
+       cmp      edi, edx
+       jge      SHORT G_M50035_IG11
+       jmp      SHORT G_M50035_IG22
+                       ;; size=10 bbWeight=3.96 PerfScore 17.82
+G_M50035_IG18:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        cmp      edi, ebx
-       jae      SHORT G_M50035_IG31
-       movzx    eax, word  ptr [esi+2*edi+0x08]
-       cmp      eax, 256
-       jb       SHORT G_M50035_IG25
-                       ;; size=16 bbWeight=0.04 PerfScore 0.18
-G_M50035_IG23:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, eax
+       jae      SHORT G_M50035_IG24
+       movzx    ecx, word  ptr [esi+2*edi+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG20
+                       ;; size=17 bbWeight=0.04 PerfScore 0.18
+G_M50035_IG19:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG27
-                       ;; size=15 bbWeight=0.02 PerfScore 0.11
-G_M50035_IG24:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M50035_IG26
-                       ;; size=5 bbWeight=0.04 PerfScore 0.12
-G_M50035_IG25:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [eax+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG30
+       je       SHORT G_M50035_IG22
+       jmp      SHORT G_M50035_IG21
+                       ;; size=12 bbWeight=0.02 PerfScore 0.13
+G_M50035_IG20:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG22
                        ;; size=9 bbWeight=0.02 PerfScore 0.08
-G_M50035_IG26:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG21:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        dec      edi
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      edi, ecx
-       jge      SHORT G_M50035_IG29
-                       ;; size=8 bbWeight=0.04 PerfScore 0.10
-G_M50035_IG27:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       mov      edx, dword ptr [ebp-0x14]
+       cmp      edi, edx
+       mov      dword ptr [ebp-0x14], edx
+       jge      SHORT G_M50035_IG18
+                       ;; size=11 bbWeight=0.04 PerfScore 0.14
+G_M50035_IG22:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        push     edi
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -213,7 +191,7 @@ G_M50035_IG27:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        call     [System.String:CreateTrimmedString(int,int):System.String:this]
        ; gcrRegs -[ecx esi] +[eax]
                        ;; size=12 bbWeight=1 PerfScore 5.25
-G_M50035_IG28:        ; bbWeight=1, epilog, nogc, extend
+G_M50035_IG23:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
...

-16 (-7.96%) : 13.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)

@@ -39,11 +39,11 @@ G_M33320_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        sub      esp, 12
        mov      eax, ecx
                        ;; size=11 bbWeight=1 PerfScore 4.75
-G_M33320_IG02:        ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG02:        ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[edx]
        test     edx, edx
-       je       G_M33320_IG11
-                       ;; size=8 bbWeight=1 PerfScore 1.25
+       je       SHORT G_M33320_IG10
+                       ;; size=4 bbWeight=1 PerfScore 1.25
 G_M33320_IG03:        ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
        mov      gword ptr [ebp-0x18], edx
        ; GC ptr vars +{V01}
@@ -51,7 +51,7 @@ G_M33320_IG03:        ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
        mov      dword ptr [ebp-0x14], esi
        cmp      esi, eax
        mov      edx, gword ptr [ebp-0x18]
-       je       SHORT G_M33320_IG11
+       je       SHORT G_M33320_IG10
        mov      edi, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[edi]
        add      edi, 8
@@ -83,50 +83,41 @@ G_M33320_IG05:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
        mov      esi, dword ptr [ebp-0x10]
        xor      esi, dword ptr [edx+0x08]
        cmp      esi, 1
-       jbe      SHORT G_M33320_IG08
+       jbe      SHORT G_M33320_IG07
                        ;; size=11 bbWeight=2 PerfScore 10.50
 G_M33320_IG06:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
        ; byrRegs -[edx]
        test     eax, eax
-       je       SHORT G_M33320_IG09
+       je       SHORT G_M33320_IG08
        inc      ecx
        add      ebx, ecx
        and      ebx, dword ptr [edi+0x04]
        cmp      ecx, 8
        jl       SHORT G_M33320_IG04
-                       ;; size=15 bbWeight=4 PerfScore 24.00
-G_M33320_IG07:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[edi]
-       mov      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x18]
-       ; gcrRegs +[edx]
-       mov      dword ptr [ebp-0x10], eax
-       mov      gword ptr [ebp-0x18], edx
-       jmp      SHORT G_M33320_IG09
-                       ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG08:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
-       ; gcrRegs -[edx]
-       ; byrRegs +[edx]
+       jmp      SHORT G_M33320_IG08
+                       ;; size=17 bbWeight=4 PerfScore 32.00
+G_M33320_IG07:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+       ; byrRegs -[edi] +[edx]
        cmp      eax, dword ptr [edx]
-       jne      SHORT G_M33320_IG09
-       jmp      SHORT G_M33320_IG10
+       jne      SHORT G_M33320_IG08
+       jmp      SHORT G_M33320_IG09
                        ;; size=6 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33320_IG08:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[edx]
        mov      esi, 2
                        ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG10:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33320_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        cmp      esi, 1
        mov      edx, gword ptr [ebp-0x18]
        ; gcrRegs +[edx]
-       jne      SHORT G_M33320_IG13
+       jne      SHORT G_M33320_IG12
                        ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M33320_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M33320_IG10:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      eax, edx
        ; gcrRegs +[eax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -134,7 +125,7 @@ G_M33320_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33320_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax]
        mov      eax, dword ptr [ebp-0x10]
        mov      ecx, eax
@@ -143,7 +134,7 @@ G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
        mov      edi, eax
        ; gcrRegs +[edi]
        test     esi, esi
-       jne      SHORT G_M33320_IG14
+       jne      SHORT G_M33320_IG13
        mov      ecx, 0xD1FFAB1E
        ; gcrRegs +[ecx]
        mov      edx, 0xD1FFAB1E
@@ -151,11 +142,11 @@ G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
                        ;; size=32 bbWeight=0.50 PerfScore 3.62
-G_M33320_IG14:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M33320_IG13:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        mov      eax, edi
        ; gcrRegs +[eax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -164,6 +155,6 @@ G_M33320_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 201, prolog size 11, PerfScore 99.00, instruction count 80, allocated bytes for code 201 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
+; Total bytes of code 185, prolog size 11, PerfScore 104.00, instruction count 76, allocated bytes for code 185 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
 ; ============================================================
 

-49 (-7.79%) : 6608.dasm - System.IO.Pipelines.Pipe:PrepareFlushUnsynchronized(byref,byref,System.Threading.CancellationToken):this (FullOpts)

@@ -77,7 +77,7 @@
 ;* V66 tmp60        [V66,T34] (  0,  0   )     ref  ->  zero-ref    single-def "field V07._obj (fldOffset=0x0)" P-INDEP
 ;* V67 tmp61        [V67,T40] (  0,  0   )   short  ->  zero-ref    single-def "field V07._token (fldOffset=0x4)" P-INDEP
 ;* V68 tmp62        [V68,T41] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V07._continueOnCapturedContext (fldOffset=0x6)" P-INDEP
-;  V69 tmp63        [V69,T32] (  2,  1   )   ubyte  ->  ecx         single-def "field V07._result (fldOffset=0x7)" P-INDEP
+;  V69 tmp63        [V69,T32] (  2,  1   )   ubyte  ->  edx         single-def "field V07._result (fldOffset=0x7)" P-INDEP
 ;  V70 tmp64        [V70    ] (  6,  3.50)     ref  ->  [ebp-0x14]  do-not-enreg[X] addr-exposed "field V08._source (fldOffset=0x0)" P-DEP
 ;* V71 tmp65        [V71    ] (  0,  0   )    long  ->  zero-ref    single-def "field V11._id (fldOffset=0x0)" P-INDEP
 ;* V72 tmp66        [V72    ] (  0,  0   )     ref  ->  zero-ref    single-def "field V11._node (fldOffset=0x8)" P-INDEP
@@ -144,7 +144,7 @@ G_M5050_IG02:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0
        ; gcrRegs +[edx]
        mov      gword ptr [ebp-0x14], edx
        test     byte  ptr [D1FFAB1EH], 1      ; global ptr
-       je       G_M5050_IG25
+       je       G_M5050_IG26
                        ;; size=38 bbWeight=1 PerfScore 14.75
 G_M5050_IG03:        ; bbWeight=1, gcVars=0000000000000001 {V09}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C2 {ecx esi edi}, gcvars, byref
        ; gcrRegs -[edx]
@@ -153,11 +153,11 @@ G_M5050_IG03:        ; bbWeight=1, gcVars=0000000000000001 {V09}, gcrefRegs=0000
        cmp      gword ptr [ebp-0x14], 0
        je       G_M5050_IG05
                        ;; size=16 bbWeight=1 PerfScore 5.00
-G_M5050_IG04:        ; bbWeight=0.50, gcrefRegs=0000000C {edx ebx}, byrefRegs=000000C2 {ecx esi edi}, byref
+G_M5050_IG04:        ; bbWeight=0.50, gcrefRegs=0000000C {edx ebx}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
        test     byte  ptr [ecx+0x0C], 5
-       jne      G_M5050_IG18
+       jne      G_M5050_IG11
        test     edx, edx
-       je       G_M5050_IG26
+       je       G_M5050_IG27
        mov      eax, gword ptr [ebp-0x14]
        ; gcrRegs +[eax]
        push     edx
@@ -195,28 +195,28 @@ G_M5050_IG04:        ; bbWeight=0.50, gcrefRegs=0000000C {edx ebx}, byrefRegs=00
        mov      edx, gword ptr [eax+0x18]
        ; gcrRegs +[edx]
        test     edx, edx
-       jne      G_M5050_IG17
+       jne      G_M5050_IG10
        mov      edx, dword ptr [ebp-0x2C]
        ; gcrRegs -[edx]
        or       edx, dword ptr [ebp-0x28]
-       jne      G_M5050_IG16
+       jne      G_M5050_IG09
        cmp      gword ptr [ebp-0x14], 0
-       je       G_M5050_IG15
+       je       SHORT G_M5050_IG08
        mov      edx, gword ptr [ebp-0x14]
        ; gcrRegs +[edx]
        cmp      dword ptr [edx+0x10], 0
        mov      ecx, eax
        ; byrRegs +[ecx]
-       jne      G_M5050_IG27
-                       ;; size=128 bbWeight=0.50 PerfScore 22.00
-G_M5050_IG05:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=000000C2 {ecx esi edi}, byref
+       jne      G_M5050_IG28
+                       ;; size=124 bbWeight=0.50 PerfScore 22.00
+G_M5050_IG05:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
        ; gcrRegs -[edx]
        ; byrRegs -[eax]
        or       dword ptr [ecx+0x0C], 2
        test     byte  ptr [ebx+0x7C], 5
-       je       G_M5050_IG20
-                       ;; size=14 bbWeight=1 PerfScore 7.00
-G_M5050_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, gcvars, byref
+       je       SHORT G_M5050_IG12
+                       ;; size=10 bbWeight=1 PerfScore 7.00
+G_M5050_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, gcvars, byref, isz
        ; byrRegs -[ecx]
        ; GC ptr vars -{V09}
        xor      edx, edx
@@ -238,25 +238,72 @@ G_M5050_IG06:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
        lea      ecx, bword ptr [ebx+0x94]
        ; byrRegs +[ecx]
        cmp      gword ptr [ecx], 0
-       jne      G_M5050_IG19
-                       ;; size=58 bbWeight=0.50 PerfScore 7.75
-G_M5050_IG07:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, byref
+       je       SHORT G_M5050_IG07
+       mov      ecx, gword ptr [ecx]
+       ; gcrRegs +[ecx]
        ; byrRegs -[ecx]
-       movzx    ecx, dl
-       xor      edx, edx
-       ; gcrRegs +[edx]
-       mov      gword ptr [edi], edx
+       cmp      dword ptr [ecx], 0xD1FFAB1E
+       je       G_M5050_IG29
+       movzx    edx, dl
+       or       edx, 2
+                       ;; size=74 bbWeight=0.50 PerfScore 11.00
+G_M5050_IG07:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, byref, isz
+       ; gcrRegs -[ecx]
+       xor      ecx, ecx
+       ; gcrRegs +[ecx]
+       mov      gword ptr [edi], ecx
        mov      word  ptr [edi+0x04], 0
        mov      byte  ptr [edi+0x06], 1
-       mov      byte  ptr [edi+0x07], cl
-                       ;; size=20 bbWeight=0.50 PerfScore 2.25
-G_M5050_IG08:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref
-       ; gcrRegs -[edx]
+       mov      byte  ptr [edi+0x07], dl
+       jmp      SHORT G_M5050_IG13
+                       ;; size=19 bbWeight=0.50 PerfScore 3.12
+G_M5050_IG08:        ; bbWeight=0.25, gcVars=0000000000000001 {V09}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       ; byrRegs +[eax]
+       ; GC ptr vars +{V00 V09}
+       mov      ecx, eax
+       ; byrRegs +[ecx]
+       jmp      SHORT G_M5050_IG05
+                       ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M5050_IG09:        ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, byref, isz
+       ; byrRegs -[ecx]
+       mov      ecx, eax
+       ; byrRegs +[ecx]
+       jmp      SHORT G_M5050_IG05
+                       ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M5050_IG10:        ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, byref, isz
+       ; byrRegs -[ecx]
+       mov      ecx, eax
+       ; byrRegs +[ecx]
+       jmp      SHORT G_M5050_IG05
+                       ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M5050_IG11:        ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, byref, isz
+       ; byrRegs -[eax ecx]
+       mov      ecx, bword ptr [ebp-0x34]
+       ; byrRegs +[ecx]
+       jmp      SHORT G_M5050_IG05
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M5050_IG12:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C0 {esi edi}, gcvars, byref
+       ; byrRegs -[ecx]
+       ; GC ptr vars -{V00 V09}
+       mov      ecx, gword ptr [ebx+0x20]
+       ; gcrRegs +[ecx]
+       test     ecx, ecx
+       je       G_M5050_IG30
+       mov      edx, edi
+       ; byrRegs +[edx]
+       call     CORINFO_HELP_CHECKED_ASSIGN_REF_ECX
+       ; gcrRegs -[ecx]
+       ; byrRegs -[edx]
+       mov      word  ptr [edi+0x04], 0
+       mov      word  ptr [edi+0x06], 1
+                       ;; size=30 bbWeight=0.50 PerfScore 3.25
+G_M5050_IG13:        ; bbWeight=1, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref, isz
        ; byrRegs -[edi]
        cmp      dword ptr [ebp-0x10], 0
-       je       G_M5050_IG23
-                       ;; size=10 bbWeight=1 PerfScore 3.00
-G_M5050_IG09:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref
+       je       SHORT G_M5050_IG24
+                       ;; size=6 bbWeight=1 PerfScore 3.00
+G_M5050_IG14:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000040 {esi}, byref, isz
        add      ebx, 84
        ; gcrRegs -[ebx]
        ; byrRegs +[ebx]
@@ -269,25 +316,39 @@ G_M5050_IG09:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=000000
        mov      edx, gword ptr [ebx+0x08]
        ; gcrRegs +[edx]
        test     edx, edx
-       jne      G_M5050_IG21
+       jne      SHORT G_M5050_IG15
        xor      edi, edi
        ; gcrRegs +[edi]
+       jmp      SHORT G_M5050_IG16
+                       ;; size=22 bbWeight=0.50 PerfScore 5.38
+G_M5050_IG15:        ; bbWeight=0.50, gcVars=0000000008000000 {V49}, gcrefRegs=00000006 {ecx edx}, byrefRegs=00000048 {ebx esi}, gcvars, byref, isz
+       ; gcrRegs -[eax edi]
+       mov      edi, gword ptr [edx+0x08]
+       ; gcrRegs +[edi]
+       jmp      SHORT G_M5050_IG17
+                       ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M5050_IG16:        ; bbWeight=0.50, gcrefRegs=00000082 {ecx edi}, byrefRegs=00000048 {ebx esi}, byref, isz
+       ; gcrRegs -[edx]
        xor      edx, edx
-                       ;; size=26 bbWeight=0.50 PerfScore 4.50
-G_M5050_IG10:        ; bbWeight=0.50, gcVars=0000000008000000 {V49}, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, gcvars, byref
-       ; gcrRegs -[eax]
+       ; gcrRegs +[edx]
+       jmp      SHORT G_M5050_IG18
+                       ;; size=4 bbWeight=0.50 PerfScore 1.12
+G_M5050_IG17:        ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
+       mov      edx, gword ptr [edx+0x04]
+                       ;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M5050_IG18:        ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
        xor      eax, eax
        ; gcrRegs +[eax]
        mov      gword ptr [ebx], eax
                        ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M5050_IG11:        ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
+G_M5050_IG19:        ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
        ; gcrRegs -[eax]
        mov      gword ptr [ebx+0x04], eax
                        ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M5050_IG12:        ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
+G_M5050_IG20:        ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref, isz
        mov      gword ptr [ebx+0x08], eax
        test     ecx, ecx
-       jne      G_M5050_IG22
+       jne      SHORT G_M5050_IG21
        xor      eax, eax
        ; gcrRegs +[eax]
        xor      ecx, ecx
@@ -295,8 +356,18 @@ G_M5050_IG12:        ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefReg
        xor      edx, edx
        mov      gword ptr [ebp-0x3C], edx
        ; GC ptr vars +{V91}
-                       ;; size=22 bbWeight=0.50 PerfScore 2.12
-G_M5050_IG13:        ; bbWeight=0.50, gcVars=0000000000800000 {V91}, gcrefRegs=00000083 {eax ecx edi}, byrefRegs=00000048 {ebx esi}, gcvars, byref
+       jmp      SHORT G_M5050_IG22
+                       ;; size=20 bbWeight=0.50 PerfScore 3.12
+G_M5050_IG21:        ; bbWeight=0.50, gcrefRegs=00000086 {ecx edx edi}, byrefRegs=00000048 {ebx esi}, byref
+       ; gcrRegs -[eax]
+       ; GC ptr vars -{V91}
+       mov      eax, ecx
+       ; gcrRegs +[eax]
+       mov      ecx, gword ptr [ebp-0x38]
+       mov      gword ptr [ebp-0x3C], edx
+       ; GC ptr vars +{V91}
+                       ;; size=8 bbWeight=0.50 PerfScore 1.12
+G_M5050_IG22:        ; bbWeight=0.50, gcVars=0000000000800000 {V91}, gcrefRegs=00000083 {eax ecx edi}, byrefRegs=00000048 {ebx esi}, gcvars, byref
        ; gcrRegs -[edx]
        ; GC ptr vars -{V49}
        mov      edx, esi
@@ -324,7 +395,7 @@ G_M5050_IG13:        ; bbWeight=0.50, gcVars=0000000000800000 {V91}, gcrefRegs=0
        ; byrRegs -[edx esi]
        or       dword ptr [ebx+0x0C], 1
                        ;; size=38 bbWeight=0.50 PerfScore 4.88
-G_M5050_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+G_M5050_IG23:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -332,86 +403,15 @@ G_M5050_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      8
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M5050_IG15:        ; bbWeight=0.25, gcVars=0000000000000001 {V09}, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, gcvars, byref
-       ; gcrRegs +[ebx]
-       ; byrRegs -[ebx] +[eax esi edi]
-       ; GC ptr vars +{V00 V09}
-       mov      ecx, eax
-       ; byrRegs +[ecx]
-       jmp      G_M5050_IG05
-                       ;; size=7 bbWeight=0.25 PerfScore 0.56
-G_M5050_IG16:        ; bbWeight=0.25, gcrefRegs=00000008 {ebx}, byrefRegs=000000C1 {eax esi edi}, byref
-       ; byrRegs -[ecx]
-       mov      ecx, eax
...

+12 (+8.76%) : 15027.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort]):System.ReadOnlySpan`1ushort

@@ -15,8 +15,8 @@
 ;  V04 loc1         [V04,T00] (  5, 84   )     int  ->  eax        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V06 tmp1         [V06,T08] (  3,  3   )     int  ->  edi         "Inlining Arg"
-;  V07 tmp2         [V07,T09] (  2,  2   )   byref  ->  ebx         single-def "Inlining Arg"
-;  V08 tmp3         [V08,T10] (  2,  1   )   byref  ->  ebx         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V07 tmp2         [V07,T09] (  2,  2   )   byref  ->  esi         single-def "Inlining Arg"
+;  V08 tmp3         [V08,T10] (  2,  1   )   byref  ->  esi         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;  V09 tmp4         [V09,T11] (  2,  1   )     int  ->  edi         "field V05._length (fldOffset=0x4)" P-INDEP
 ;  V10 tmp5         [V10,T05] (  5,  6.50)     int  ->  edi         "V01.[004..008)"
 ;  V11 tmp6         [V11,T03] (  4, 22   )     int  ->  ebx         "V02.[004..008)"
@@ -62,12 +62,12 @@ G_M16324_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
        ; byrRegs +[esi]
        xor      ecx, ecx
        test     edi, edi
-       jle      SHORT G_M16324_IG11
+       jle      SHORT G_M16324_IG10
                        ;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M16324_IG06:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
        xor      eax, eax
        test     ebx, ebx
-       jle      SHORT G_M16324_IG11
+       jle      SHORT G_M16324_IG09
        mov      edx, bword ptr [ebp+0x10]
        ; byrRegs +[edx]
        movzx    edx, word  ptr [edx+2*ecx]
@@ -82,44 +82,52 @@ G_M16324_IG07:        ; bbWeight=32, gcVars=00000080 {V00}, gcrefRegs=00000000 {
        movzx    esi, word  ptr [esi+2*eax]
        ; byrRegs -[esi]
        cmp      esi, edx
-       je       SHORT G_M16324_IG10
+       je       SHORT G_M16324_IG11
                        ;; size=11 bbWeight=32 PerfScore 136.00
 G_M16324_IG08:        ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        inc      eax
        cmp      eax, ebx
        jl       SHORT G_M16324_IG07
-                       ;; size=5 bbWeight=16 PerfScore 24.00
-G_M16324_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
-       mov      esi, bword ptr [ebp-0x10]
+       jmp      SHORT G_M16324_IG12
+                       ;; size=7 bbWeight=16 PerfScore 56.00
+G_M16324_IG09:        ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
        ; byrRegs +[esi]
-       jmp      SHORT G_M16324_IG11
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M16324_IG10:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       ; GC ptr vars -{V00}
+       mov      bword ptr [ebp-0x10], esi
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M16324_IG12
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG10:        ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+       ; GC ptr vars -{V00}
+       mov      bword ptr [ebp-0x10], esi
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M16324_IG12
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M16324_IG11:        ; bbWeight=4, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[esi]
        inc      ecx
        cmp      ecx, edi
-       mov      esi, bword ptr [ebp-0x10]
-       ; byrRegs +[esi]
-       jl       SHORT G_M16324_IG06
-                       ;; size=8 bbWeight=4 PerfScore 10.00
-G_M16324_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
-       ; GC ptr vars -{V00}
+       jl       SHORT G_M16324_IG14
+                       ;; size=5 bbWeight=4 PerfScore 6.00
+G_M16324_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        cmp      ecx, edi
-       ja       SHORT G_M16324_IG13
+       ja       SHORT G_M16324_IG15
        mov      eax, bword ptr [ebp+0x10]
        ; byrRegs +[eax]
-       lea      ebx, bword ptr [eax+2*ecx]
-       ; byrRegs +[ebx]
+       lea      esi, bword ptr [eax+2*ecx]
+       ; byrRegs +[esi]
        sub      edi, ecx
        mov      ecx, edi
        not      ecx
        shr      ecx, 31
        call     [<unknown method>]
        ; byrRegs -[eax]
-       mov      bword ptr [esi], ebx
-       mov      dword ptr [esi+0x04], edi
-                       ;; size=30 bbWeight=0.50 PerfScore 4.50
-G_M16324_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+       mov      ebx, bword ptr [ebp-0x10]
+       ; byrRegs +[ebx]
+       mov      bword ptr [ebx], esi
+       mov      dword ptr [ebx+0x04], edi
+                       ;; size=33 bbWeight=0.50 PerfScore 5.00
+G_M16324_IG13:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ecx
        pop      ebx
        pop      esi
@@ -127,12 +135,19 @@ G_M16324_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      16
                        ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M16324_IG13:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M16324_IG14:        ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[ebx esi]
+       mov      esi, bword ptr [ebp-0x10]
+       ; byrRegs +[esi]
+       jmp      SHORT G_M16324_IG06
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG15:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; byrRegs -[esi]
+       ; GC ptr vars -{V00}
        call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 137, prolog size 9, PerfScore 214.62, instruction count 62, allocated bytes for code 137 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
+; Total bytes of code 149, prolog size 9, PerfScore 254.38, instruction count 67, allocated bytes for code 149 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
 ; ============================================================
 

+20 (+9.17%) : 23426.dasm - Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (FullOpts)

@@ -42,15 +42,15 @@ G_M52602_IG02:        ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004
        mov      edx, 1
        ; byrRegs -[edx]
        test     eax, eax
-       jle      G_M52602_IG12
+       jle      G_M52602_IG14
                        ;; size=18 bbWeight=1 PerfScore 4.50
-G_M52602_IG03:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M52602_IG03:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        lea      esi, [edx+0x01]
        mov      dword ptr [ebp-0x18], esi
        mov      edi, esi
        cmp      edi, eax
-       jg       G_M52602_IG11
-                       ;; size=16 bbWeight=4 PerfScore 12.00
+       jg       SHORT G_M52602_IG10
+                       ;; size=12 bbWeight=4 PerfScore 12.00
 G_M52602_IG04:        ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, 1
        test     ecx, ecx
@@ -60,7 +60,7 @@ G_M52602_IG05:        ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
        test     eax, eax
        jl       SHORT G_M52602_IG08
        cmp      dword ptr [ecx+0x04], eax
-       jle      SHORT G_M52602_IG09
+       jle      SHORT G_M52602_IG11
                        ;; size=9 bbWeight=8 PerfScore 42.00
 G_M52602_IG06:        ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        mov      gword ptr [ebp-0x20], ecx
@@ -70,14 +70,14 @@ G_M52602_IG06:        ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=0000
        mov      ecx, esi
        mov      eax, dword ptr [ecx+0x04]
        cmp      edx, eax
-       jae      G_M52602_IG13
+       jae      G_M52602_IG17
        mov      ecx, dword ptr [ecx+4*edx+0x08]
        ; gcrRegs -[ecx]
        mov      dword ptr [ebp-0x14], ecx
        mov      ecx, esi
        ; gcrRegs +[ecx]
        cmp      edi, eax
-       jae      SHORT G_M52602_IG13
+       jae      G_M52602_IG17
        mov      eax, dword ptr [ecx+4*edi+0x08]
        mov      ecx, dword ptr [ebp-0x14]
        ; gcrRegs -[ecx]
@@ -85,20 +85,31 @@ G_M52602_IG06:        ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=0000
        mov      dword ptr [esi+4*edi+0x08], ecx
        inc      ebx
        cmp      ebx, dword ptr [ebp-0x10]
+       jle      SHORT G_M52602_IG07
+       jmp      SHORT G_M52602_IG12
+                       ;; size=58 bbWeight=63.36 PerfScore 1298.88
+G_M52602_IG07:        ; bbWeight=31.68, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[esi]
        mov      ecx, gword ptr [ebp-0x20]
        ; gcrRegs +[ecx]
-       jle      SHORT G_M52602_IG06
-                       ;; size=55 bbWeight=63.36 PerfScore 1235.52
-G_M52602_IG07:        ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[esi]
+       jmp      SHORT G_M52602_IG06
+                       ;; size=5 bbWeight=31.68 PerfScore 95.04
+G_M52602_IG08:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V00}
-       jmp      SHORT G_M52602_IG10
+       jmp      SHORT G_M52602_IG11
+                       ;; size=2 bbWeight=4 PerfScore 8.00
+G_M52602_IG09:        ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+       jmp      SHORT G_M52602_IG11
                        ;; size=2 bbWeight=8 PerfScore 16.00
-G_M52602_IG08:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
-                       ;; size=0 bbWeight=4 PerfScore 0.00
-G_M52602_IG09:        ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M52602_IG10:        ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x20], ecx
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M52602_IG13
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M52602_IG11:        ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+       ; GC ptr vars -{V00}
        cmp      ebx, dword ptr [ecx+0x04]
-       jae      SHORT G_M52602_IG13
+       jae      SHORT G_M52602_IG17
        mov      gword ptr [ebp-0x20], ecx
        ; GC ptr vars +{V00}
        mov      esi, gword ptr [ecx+4*ebx+0x08]
@@ -109,13 +120,13 @@ G_M52602_IG09:        ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000
        ; gcrRegs -[ecx]
        mov      dword ptr [ebp-0x1C], ecx
        cmp      edx, ecx
-       jae      SHORT G_M52602_IG13
+       jae      SHORT G_M52602_IG17
        mov      esi, dword ptr [esi+4*edx+0x08]
        ; gcrRegs -[esi]
        mov      ecx, gword ptr [ebp-0x24]
        ; gcrRegs +[ecx]
        cmp      edi, dword ptr [ebp-0x1C]
-       jae      SHORT G_M52602_IG13
+       jae      SHORT G_M52602_IG17
        mov      ecx, dword ptr [ecx+4*edi+0x08]
        ; gcrRegs -[ecx]
        mov      eax, gword ptr [ebp-0x24]
@@ -126,25 +137,26 @@ G_M52602_IG09:        ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000
        mov      eax, dword ptr [ebp-0x10]
        ; gcrRegs -[eax]
        cmp      ebx, eax
-       mov      ecx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ecx]
-       jle      SHORT G_M52602_IG09
-                       ;; size=61 bbWeight=0.64 PerfScore 16.64
-G_M52602_IG10:        ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
-       ; GC ptr vars -{V00 V11}
+       jle      SHORT G_M52602_IG16
+                       ;; size=58 bbWeight=0.64 PerfScore 16.00
+G_M52602_IG12:        ; bbWeight=16, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars -{V11}
        inc      edi
        mov      eax, dword ptr [ebp-0x10]
        cmp      edi, eax
-       jle      G_M52602_IG04
-                       ;; size=12 bbWeight=16 PerfScore 40.00
-G_M52602_IG11:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+       jle      SHORT G_M52602_IG15
+                       ;; size=8 bbWeight=16 PerfScore 40.00
+G_M52602_IG13:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      esi, dword ptr [ebp-0x18]
        mov      edx, esi
        cmp      edx, eax
+       mov      ecx, gword ptr [ebp-0x20]
+       ; gcrRegs +[ecx]
        jle      G_M52602_IG03
-                       ;; size=13 bbWeight=4 PerfScore 10.00
-G_M52602_IG12:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+                       ;; size=16 bbWeight=4 PerfScore 14.00
+G_M52602_IG14:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
        ; gcrRegs -[ecx]
+       ; GC ptr vars -{V00}
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -152,11 +164,25 @@ G_M52602_IG12:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        pop      ebp
        ret      
                        ;; size=8 bbWeight=1 PerfScore 3.50
-G_M52602_IG13:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M52602_IG15:        ; bbWeight=8, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; GC ptr vars +{V00 V11}
+       mov      ecx, gword ptr [ebp-0x20]
+       ; gcrRegs +[ecx]
+       jmp      G_M52602_IG04
+                       ;; size=8 bbWeight=8 PerfScore 24.00
+G_M52602_IG16:        ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[ecx]
+       mov      ecx, gword ptr [ebp-0x20]
+       ; gcrRegs +[ecx]
+       jmp      SHORT G_M52602_IG11
+                       ;; size=5 bbWeight=0.32 PerfScore 0.96
+G_M52602_IG17:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V00 V11}
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 218, prolog size 9, PerfScore 1408.66, instruction count 82, allocated bytes for code 218 (MethodHash=2f153285) for method Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (FullOpts)
+; Total bytes of code 238, prolog size 9, PerfScore 1609.38, instruction count 90, allocated bytes for code 238 (MethodHash=2f153285) for method Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (FullOpts)
 ; ============================================================
 

+20 (+9.22%) : 11914.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)

@@ -8,7 +8,7 @@
 ; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T06] (  5,  3.50)     ref  ->  edi         this class-hnd single-def <System.Xml.NameTable>
+;  V00 this         [V00,T06] (  5,  3.50)     ref  ->  [ebp-0x14]  this class-hnd single-def <System.Xml.NameTable>
 ;  V01 arg1         [V01,T04] (  7,  7   )     ref  ->  esi         class-hnd single-def <System.String>
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
 ;  V03 loc1         [V03,T07] (  4,  5.50)     int  ->  [ebp-0x10]  spill-single-def
@@ -25,8 +25,8 @@
 ;* V14 tmp9         [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V15 tmp10        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V16 tmp11        [V16,T03] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V17 tmp12        [V17,T00] (  6, 52   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.String>
-;  V18 tmp13        [V18,T05] (  2,  8   )   byref  ->  ebx         "impAppendStmt"
+;  V17 tmp12        [V17,T00] (  6, 52   )     ref  ->  edx         class-hnd exact "Inlining Arg" <System.String>
+;  V18 tmp13        [V18,T05] (  2,  8   )   byref  ->  edi         "impAppendStmt"
 ;* V19 tmp14        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V20 tmp15        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -44,9 +44,9 @@
 ;* V33 tmp28        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x4)" P-INDEP
 ;* V34 tmp29        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V35 tmp30        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V36 tmp31        [V36,T08] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
-;  V37 tmp32        [V37,T10] (  3,  3   )     int  ->  edx         "index expr"
-;  V38 cse0         [V38,T02] (  4, 18.50)     int  ->  [ebp-0x14]  spill-single-def "CSE - aggressive"
+;  V36 tmp31        [V36,T08] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V37 tmp32        [V37,T10] (  3,  3   )     int  ->  ecx         "index expr"
+;  V38 cse0         [V38,T02] (  4, 18.50)     int  ->  ebx         "CSE - aggressive"
 ;  V39 cse1         [V39,T09] (  3,  3   )   byref  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
 ;* V40 rat0         [V40    ] (  0,  0   )     int  ->  zero-ref    "field V13.lo (fldOffset=0x0)" P-INDEP
 ;* V41 rat1         [V41    ] (  0,  0   )     int  ->  zero-ref    "field V13.hi (fldOffset=0x4)" P-INDEP
@@ -67,12 +67,11 @@ G_M51747_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=13 bbWeight=1 PerfScore 5.00
 G_M51747_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        test     esi, esi
-       je       G_M51747_IG16
+       je       G_M51747_IG19
        mov      ebx, dword ptr [esi+0x04]
-       mov      dword ptr [ebp-0x14], ebx
        test     ebx, ebx
        jne      SHORT G_M51747_IG05
-                       ;; size=18 bbWeight=1 PerfScore 5.50
+                       ;; size=15 bbWeight=1 PerfScore 4.50
 G_M51747_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi edi]
        mov      eax, 0xD1FFAB1E
@@ -101,73 +100,80 @@ G_M51747_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
        call     [<unknown method>]
        ; byrRegs -[eax ecx]
        mov      dword ptr [ebp-0x10], eax
-       mov      ecx, gword ptr [edi+0x04]
-       ; gcrRegs +[ecx]
-       mov      edx, eax
-       and      edx, dword ptr [edi+0x0C]
-       cmp      edx, dword ptr [ecx+0x04]
-       jae      SHORT G_M51747_IG15
-       mov      edx, gword ptr [ecx+4*edx+0x08]
+       mov      edx, gword ptr [edi+0x04]
        ; gcrRegs +[edx]
-       test     edx, edx
-       je       SHORT G_M51747_IG11
-                       ;; size=52 bbWeight=0.50 PerfScore 10.38
-G_M51747_IG06:        ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[ecx]
-       cmp      dword ptr [edx+0x0C], eax
-       jne      SHORT G_M51747_IG10
-                       ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG07:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, gword ptr [edx+0x04]
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V00}
+       mov      ecx, eax
+       and      ecx, dword ptr [edi+0x0C]
+       cmp      ecx, dword ptr [edx+0x04]
+       jae      SHORT G_M51747_IG18
+       mov      ecx, gword ptr [edx+4*ecx+0x08]
        ; gcrRegs +[ecx]
-       cmp      byte  ptr [ecx], cl
-       cmp      ecx, esi
-       je       SHORT G_M51747_IG13
-                       ;; size=9 bbWeight=2 PerfScore 12.50
-G_M51747_IG08:        ; bbWeight=16, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       cmp      dword ptr [ecx+0x04], ebx
+       test     ecx, ecx
+       mov      edi, gword ptr [ebp-0x14]
+       je       SHORT G_M51747_IG15
+                       ;; size=58 bbWeight=0.50 PerfScore 11.38
+G_M51747_IG06:        ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[edx]
+       ; GC ptr vars -{V00}
+       cmp      dword ptr [ecx+0x0C], eax
+       jne      SHORT G_M51747_IG14
+                       ;; size=5 bbWeight=4 PerfScore 16.00
+G_M51747_IG07:        ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V04}
+       mov      edx, gword ptr [ecx+0x04]
+       ; gcrRegs +[edx]
+       cmp      byte  ptr [edx], dl
+       cmp      edx, esi
+       je       SHORT G_M51747_IG16
+                       ;; size=12 bbWeight=2 PerfScore 14.50
+G_M51747_IG08:        ; bbWeight=16, gcVars=00000202 {V04 V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       cmp      dword ptr [edx+0x04], ebx
        jne      SHORT G_M51747_IG10
                        ;; size=5 bbWeight=16 PerfScore 64.00
-G_M51747_IG09:        ; bbWeight=2, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp-0x18], edx
-       ; GC ptr vars +{V04}
-       lea      ebx, bword ptr [ecx+0x08]
-       ; byrRegs +[ebx]
-       mov      ecx, dword ptr [ecx+0x04]
-       ; gcrRegs -[ecx]
-       add      ecx, ecx
-       push     ecx
-       mov      edx, bword ptr [ebp-0x1C]
+G_M51747_IG09:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V00}
+       lea      edi, bword ptr [edx+0x08]
+       ; gcrRegs -[edi]
+       ; byrRegs +[edi]
+       mov      edx, dword ptr [edx+0x04]
        ; gcrRegs -[edx]
+       add      edx, edx
+       push     edx
+       mov      edx, bword ptr [ebp-0x1C]
        ; byrRegs +[edx]
-       mov      ecx, ebx
+       mov      ecx, edi
        ; byrRegs +[ecx]
        call     [<unknown method>]
-       ; byrRegs -[ecx edx ebx]
+       ; byrRegs -[ecx edx edi]
        test     eax, eax
-       mov      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x18]
-       ; gcrRegs +[edx]
-       mov      ebx, dword ptr [ebp-0x14]
+       mov      edi, gword ptr [ebp-0x14]
+       ; gcrRegs +[edi]
+       jne      SHORT G_M51747_IG16
+                       ;; size=30 bbWeight=2 PerfScore 22.50
+G_M51747_IG10:        ; bbWeight=4, gcVars=00000202 {V04 V39}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars -{V00}
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
+       mov      ecx, gword ptr [ecx+0x08]
+       test     ecx, ecx
        jne      SHORT G_M51747_IG13
-                       ;; size=36 bbWeight=2 PerfScore 26.50
-G_M51747_IG10:        ; bbWeight=4, gcVars=00000200 {V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V04}
-       mov      edx, gword ptr [edx+0x08]
-       test     edx, edx
-       jne      SHORT G_M51747_IG06
-                       ;; size=7 bbWeight=4 PerfScore 13.00
+                       ;; size=10 bbWeight=4 PerfScore 17.00
 G_M51747_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[edx]
-       ; GC ptr vars -{V39}
-       push     eax
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V04 V39}
+       push     dword ptr [ebp-0x10]
        mov      ecx, edi
        ; gcrRegs +[ecx]
        mov      edx, esi
        ; gcrRegs +[edx]
        call     [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
        ; gcrRegs -[ecx edx esi edi] +[eax]
-                       ;; size=11 bbWeight=0.50 PerfScore 2.25
+                       ;; size=13 bbWeight=0.50 PerfScore 2.25
 G_M51747_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -176,12 +182,31 @@ G_M51747_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax] +[edx]
-       mov      eax, gword ptr [edx+0x04]
+G_M51747_IG13:        ; bbWeight=2, gcVars=00000200 {V39}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax] +[ecx esi edi]
+       ; GC ptr vars +{V09 V39}
+       mov      eax, dword ptr [ebp-0x10]
+       jmp      SHORT G_M51747_IG06
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG14:        ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V04}
+       jmp      SHORT G_M51747_IG10
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG15:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V04 V09 V39}
+       jmp      SHORT G_M51747_IG11
+                       ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M51747_IG16:        ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[esi edi]
+       ; GC ptr vars +{V01 V04}
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
+       mov      eax, gword ptr [ecx+0x04]
        ; gcrRegs +[eax]
-                       ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG17:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -189,11 +214,12 @@ G_M51747_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG15:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax edx]
+G_M51747_IG18:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax ecx]
+       ; GC ptr vars -{V01 V04}
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51747_IG16:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51747_IG19:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, 5
        mov      edx, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
@@ -205,6 +231,6 @@ G_M51747_IG16:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 217, prolog size 13, PerfScore 161.50, instruction count 86, allocated bytes for code 217 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
+; Total bytes of code 237, prolog size 13, PerfScore 176.50, instruction count 93, allocated bytes for code 237 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
 ; ============================================================
 

benchmarks.run_pgo.windows.x86.checked.mch

-47 (-15.56%) : 58826.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (Tier0-FullOpts)

@@ -13,7 +13,7 @@
 ;  V02 loc0         [V02,T03] ( 15, 20.04)     int  ->  [ebp-0x10] 
 ;  V03 loc1         [V03,T02] ( 11, 23.50)     int  ->  [ebp-0x14] 
 ;  V04 tmp0         [V04,T08] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  edx         "Inlining Arg"
+;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V13 tmp9         [V13,T07] (  4,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V14 tmp10        [V14,T00] (  8, 24   )  ushort  ->  eax         "Inlining Arg"
+;  V14 tmp10        [V14,T00] (  8, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V16 tmp12        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V17 tmp13        [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -73,139 +73,117 @@ G_M50035_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      ebx, dword ptr [esi+0x04]
        lea      eax, [ebx-0x01]
        mov      dword ptr [ebp-0x10], eax
-       xor      ecx, ecx
+       xor      edx, edx
        test     edi, 1
-       mov      dword ptr [ebp-0x14], ecx
-       je       SHORT G_M50035_IG10
-                       ;; size=22 bbWeight=1 PerfScore 6.00
+       je       SHORT G_M50035_IG09
+                       ;; size=19 bbWeight=1 PerfScore 5.00
 G_M50035_IG03:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       xor      ecx, ecx
+       xor      edx, edx
        test     ebx, ebx
-       jle      SHORT G_M50035_IG07
+       jle      SHORT G_M50035_IG09
                        ;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M50035_IG04:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       movzx    edx, word  ptr [esi+2*ecx+0x08]
-       cmp      edx, 256
-       jb       SHORT G_M50035_IG08
-                       ;; size=13 bbWeight=4 PerfScore 13.00
+       mov      dword ptr [ebp-0x14], edx
+       movzx    ecx, word  ptr [esi+2*edx+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG07
+                       ;; size=16 bbWeight=4 PerfScore 17.00
 G_M50035_IG05:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, edx
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG10
-                       ;; size=15 bbWeight=2 PerfScore 11.00
-G_M50035_IG06:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
+       je       SHORT G_M50035_IG06
+       jmp      SHORT G_M50035_IG08
+                       ;; size=12 bbWeight=2 PerfScore 12.50
+G_M50035_IG06:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
        jmp      SHORT G_M50035_IG09
-                       ;; size=5 bbWeight=4 PerfScore 12.00
-G_M50035_IG07:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG10
-                       ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG08:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [edx+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG17
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG07:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG15
                        ;; size=9 bbWeight=2 PerfScore 8.00
-G_M50035_IG09:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       inc      ecx
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      ebx, ecx
-       jg       SHORT G_M50035_IG16
+G_M50035_IG08:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
+       inc      edx
+       cmp      ebx, edx
+       jg       SHORT G_M50035_IG04
                        ;; size=8 bbWeight=4 PerfScore 10.00
-G_M50035_IG10:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M50035_IG09:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        test     edi, 2
        mov      edi, dword ptr [ebp-0x10]
-       je       G_M50035_IG27
-                       ;; size=15 bbWeight=1 PerfScore 2.25
-G_M50035_IG11:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       je       SHORT G_M50035_IG14
+                       ;; size=11 bbWeight=1 PerfScore 2.25
+G_M50035_IG10:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        lea      eax, [ebx-0x01]
        mov      edi, eax
-       mov      ecx, dword ptr [ebp-0x14]
-       cmp      edi, ecx
-       jl       SHORT G_M50035_IG15
-       mov      eax, edi
-       or       eax, ecx
-       jl       SHORT G_M50035_IG22
+       cmp      edi, edx
+       jl       SHORT G_M50035_IG13
+       mov      dword ptr [ebp-0x14], edx
+       mov      ecx, edi
+       or       ecx, edx
+       jl       SHORT G_M50035_IG18
        cmp      ebx, edi
-       jle      SHORT G_M50035_IG22
+       jle      SHORT G_M50035_IG18
                        ;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M50035_IG12:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       movzx    eax, word  ptr [esi+2*edi+0x08]
-       cmp      eax, 256
-       jb       SHORT G_M50035_IG18
-                       ;; size=12 bbWeight=3.96 PerfScore 12.87
-G_M50035_IG13:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, eax
+G_M50035_IG11:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       movzx    ecx, word  ptr [esi+2*edi+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG16
+                       ;; size=13 bbWeight=3.96 PerfScore 12.87
+G_M50035_IG12:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG27
-                       ;; size=15 bbWeight=1.98 PerfScore 10.89
-G_M50035_IG14:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M50035_IG19
-                       ;; size=5 bbWeight=3.96 PerfScore 11.88
-G_M50035_IG15:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
+       je       SHORT G_M50035_IG22
+       jmp      SHORT G_M50035_IG17
+                       ;; size=12 bbWeight=1.98 PerfScore 12.38
+G_M50035_IG13:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      dword ptr [ebp-0x14], edx
+       jmp      SHORT G_M50035_IG22
                        ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG16:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      G_M50035_IG04
-                       ;; size=8 bbWeight=2 PerfScore 6.00
-G_M50035_IG17:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG10
-                       ;; size=5 bbWeight=1 PerfScore 3.00
-G_M50035_IG18:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [eax+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG21
-                       ;; size=9 bbWeight=1.98 PerfScore 7.92
-G_M50035_IG19:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       dec      edi
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      edi, ecx
-       mov      ecx, dword ptr [ebp-0x14]
-       jge      SHORT G_M50035_IG12
-                       ;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M50035_IG20:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
+G_M50035_IG14:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      dword ptr [ebp-0x14], edx
+       jmp      SHORT G_M50035_IG22
                        ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50035_IG21:        ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
-                       ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M50035_IG22:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG15:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M50035_IG09
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG16:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG22
+                       ;; size=9 bbWeight=1.98 PerfScore 7.92
+G_M50035_IG17:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       dec      edi
+       mov      edx, dword ptr [ebp-0x14]
+       cmp      edi, edx
+       jge      SHORT G_M50035_IG11
+       jmp      SHORT G_M50035_IG22
+                       ;; size=10 bbWeight=3.96 PerfScore 17.82
+G_M50035_IG18:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        cmp      edi, ebx
-       jae      SHORT G_M50035_IG31
-       movzx    eax, word  ptr [esi+2*edi+0x08]
-       cmp      eax, 256
-       jb       SHORT G_M50035_IG25
-                       ;; size=16 bbWeight=0.04 PerfScore 0.18
-G_M50035_IG23:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, eax
+       jae      SHORT G_M50035_IG24
+       movzx    ecx, word  ptr [esi+2*edi+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG20
+                       ;; size=17 bbWeight=0.04 PerfScore 0.18
+G_M50035_IG19:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG27
-                       ;; size=15 bbWeight=0.02 PerfScore 0.11
-G_M50035_IG24:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M50035_IG26
-                       ;; size=5 bbWeight=0.04 PerfScore 0.12
-G_M50035_IG25:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [eax+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG30
+       je       SHORT G_M50035_IG22
+       jmp      SHORT G_M50035_IG21
+                       ;; size=12 bbWeight=0.02 PerfScore 0.13
+G_M50035_IG20:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG22
                        ;; size=9 bbWeight=0.02 PerfScore 0.08
-G_M50035_IG26:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG21:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        dec      edi
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      edi, ecx
-       jge      SHORT G_M50035_IG29
-                       ;; size=8 bbWeight=0.04 PerfScore 0.10
-G_M50035_IG27:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       mov      edx, dword ptr [ebp-0x14]
+       cmp      edi, edx
+       mov      dword ptr [ebp-0x14], edx
+       jge      SHORT G_M50035_IG18
+                       ;; size=11 bbWeight=0.04 PerfScore 0.14
+G_M50035_IG22:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        push     edi
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -213,7 +191,7 @@ G_M50035_IG27:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        call     [System.String:CreateTrimmedString(int,int):System.String:this]
        ; gcrRegs -[ecx esi] +[eax]
                        ;; size=12 bbWeight=1 PerfScore 5.25
-G_M50035_IG28:        ; bbWeight=1, epilog, nogc, extend
+G_M50035_IG23:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
...

-4 (-10.81%) : 49491.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)

@@ -41,26 +41,18 @@ G_M52491_IG04:        ; bbWeight=0.13, epilog, nogc, extend
 G_M52491_IG05:        ; bbWeight=0.87, gcVars=00000000 {}, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ecx]
        test     dl, dl
-       je       SHORT G_M52491_IG07
-                       ;; size=4 bbWeight=0.87 PerfScore 1.09
-G_M52491_IG06:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[ecx]
-       jmp      SHORT G_M52491_IG08
-                       ;; size=2 bbWeight=0 PerfScore 0.00
-G_M52491_IG07:        ; bbWeight=0.87, gcrefRegs=00000003 {eax ecx}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs +[ecx]
+       jne      SHORT G_M52491_IG06
        mov      edx, dword ptr [ecx+0x30]
        and      edx, 7
        cmp      edx, 6
-       je       SHORT G_M52491_IG08
-       jmp      SHORT G_M52491_IG03
-                       ;; size=13 bbWeight=0.87 PerfScore 4.81
-G_M52491_IG08:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
+       jne      SHORT G_M52491_IG03
+                       ;; size=15 bbWeight=0.87 PerfScore 4.15
+G_M52491_IG06:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, epilog, nogc
        ; gcrRegs -[ecx]
        pop      ebp
        ret      
                        ;; size=2 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 37, prolog size 3, PerfScore 10.87, instruction count 19, allocated bytes for code 37 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
+; Total bytes of code 33, prolog size 3, PerfScore 9.12, instruction count 17, allocated bytes for code 33 (MethodHash=df3632f4) for method System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
 ; ============================================================
 

-28 (-10.57%) : 2935.dasm - System.MemoryExtensions:g_TrimFallback|2230(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort

@@ -13,7 +13,7 @@
 ;  V02 loc0         [V02,T00] ( 11, 26   )     int  ->  [ebp-0x10] 
 ;  V03 loc1         [V03,T03] (  8, 23   )     int  ->  [ebp-0x14] 
 ;  V04 loc2         [V04,T09] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  eax         "Inlining Arg"
+;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V13 tmp9         [V13,T10] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V14 tmp10        [V14,T02] (  4, 24   )  ushort  ->  edx         "Inlining Arg"
+;  V14 tmp10        [V14,T02] (  4, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V16 tmp12        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V17 tmp13        [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -32,7 +32,7 @@
 ;* V21 tmp17        [V21    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V22 tmp18        [V22,T06] (  4,  8   )     int  ->  [ebp-0x18]  spill-single-def "Inlining Arg"
 ;* V23 tmp19        [V23    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-;  V24 tmp20        [V24,T08] (  2,  4   )   byref  ->  ebx         single-def "Inlining Arg"
+;  V24 tmp20        [V24,T08] (  2,  4   )   byref  ->  edi         single-def "Inlining Arg"
 ;* V25 tmp21        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V26 tmp22        [V26    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V27 tmp23        [V27    ] (  0,  0   )   byref  ->  zero-ref    "field V06._reference (fldOffset=0x0)" P-INDEP
@@ -59,8 +59,8 @@
 ;* V48 tmp44        [V48    ] (  0,  0   )     int  ->  zero-ref    "field V19._length (fldOffset=0x4)" P-INDEP
 ;* V49 tmp45        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V21._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp46        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x4)" P-INDEP
-;  V51 tmp47        [V51,T11] (  2,  2   )   byref  ->  ebx         single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-;  V52 tmp48        [V52,T13] (  2,  2   )     int  ->  eax         "field V23._length (fldOffset=0x4)" P-INDEP
+;  V51 tmp47        [V51,T11] (  2,  2   )   byref  ->  edi         single-def "field V23._reference (fldOffset=0x0)" P-INDEP
+;  V52 tmp48        [V52,T13] (  2,  2   )     int  ->  edx         "field V23._length (fldOffset=0x4)" P-INDEP
 ;  V53 tmp49        [V53,T05] (  4, 10   )   byref  ->  edi         single-def "V01.[000..004)"
 ;  V54 tmp50        [V54,T04] (  7, 13   )     int  ->  ebx         "V01.[004..008)"
 ;
@@ -80,127 +80,113 @@ G_M20594_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
        mov      edi, bword ptr [ebp+0x08]
        ; byrRegs +[edi]
        mov      ebx, dword ptr [ebp+0x0C]
-       xor      ecx, ecx
+       xor      eax, eax
        test     ebx, ebx
-       jle      SHORT G_M20594_IG06
+       jle      SHORT G_M20594_IG08
                        ;; size=12 bbWeight=1 PerfScore 3.50
 G_M20594_IG03:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       movzx    eax, word  ptr [edi+2*ecx]
-       cmp      eax, 256
-       jb       SHORT G_M20594_IG07
-                       ;; size=11 bbWeight=4 PerfScore 13.00
+       mov      dword ptr [ebp-0x10], eax
+       movzx    ecx, word  ptr [edi+2*eax]
+       cmp      ecx, 256
+       jb       SHORT G_M20594_IG06
+                       ;; size=15 bbWeight=4 PerfScore 17.00
 G_M20594_IG04:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       mov      ecx, eax
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M20594_IG09
-                       ;; size=15 bbWeight=2 PerfScore 11.00
-G_M20594_IG05:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      ecx, dword ptr [ebp-0x10]
+       je       SHORT G_M20594_IG05
+       jmp      SHORT G_M20594_IG07
+                       ;; size=12 bbWeight=2 PerfScore 12.50
+G_M20594_IG05:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
        jmp      SHORT G_M20594_IG08
-                       ;; size=5 bbWeight=4 PerfScore 12.00
-G_M20594_IG06:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       jmp      SHORT G_M20594_IG09
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M20594_IG07:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       test     byte  ptr [eax+D1FFAB1EH], 128
-       je       SHORT G_M20594_IG15
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M20594_IG06:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M20594_IG13
                        ;; size=9 bbWeight=2 PerfScore 8.00
-G_M20594_IG08:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       inc      ecx
-       mov      dword ptr [ebp-0x10], ecx
-       cmp      ecx, ebx
-       jl       SHORT G_M20594_IG14
-                       ;; size=8 bbWeight=4 PerfScore 10.00
-G_M20594_IG09:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       lea      eax, [ebx-0x01]
-       mov      ecx, dword ptr [ebp-0x10]
-       cmp      eax, ecx
-       jle      SHORT G_M20594_IG13
-                       ;; size=10 bbWeight=1 PerfScore 2.75
-G_M20594_IG10:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG07:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       inc      eax
        cmp      eax, ebx
-       jae      G_M20594_IG25
-       movzx    edx, word  ptr [edi+2*eax]
-       cmp      edx, 256
-       jb       SHORT G_M20594_IG16
-                       ;; size=20 bbWeight=4 PerfScore 18.00
-G_M20594_IG11:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       mov      dword ptr [ebp-0x14], eax
-       mov      ecx, edx
+       jl       SHORT G_M20594_IG03
+                       ;; size=8 bbWeight=4 PerfScore 10.00
+G_M20594_IG08:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       lea      edx, [ebx-0x01]
+       mov      dword ptr [ebp-0x10], eax
+       cmp      edx, eax
+       jle      SHORT G_M20594_IG12
+                       ;; size=10 bbWeight=1 PerfScore 2.75
+G_M20594_IG09:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       cmp      edx, ebx
+       jae      SHORT G_M20594_IG23
+       mov      dword ptr [ebp-0x14], edx
+       movzx    ecx, word  ptr [edi+2*edx]
+       cmp      ecx, 256
+       jb       SHORT G_M20594_IG14
+                       ;; size=19 bbWeight=4 PerfScore 22.00
+G_M20594_IG10:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M20594_IG18
-                       ;; size=18 bbWeight=2 PerfScore 13.00
-G_M20594_IG12:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      eax, dword ptr [ebp-0x14]
-       mov      ecx, dword ptr [ebp-0x10]
-       jmp      SHORT G_M20594_IG17
-                       ;; size=8 bbWeight=4 PerfScore 16.00
-G_M20594_IG13:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       mov      dword ptr [ebp-0x14], eax
-       jmp      SHORT G_M20594_IG18
-                       ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M20594_IG14:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      ecx, dword ptr [ebp-0x10]
-       jmp      SHORT G_M20594_IG03
-                       ;; size=5 bbWeight=2 PerfScore 6.00
-G_M20594_IG15:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       jmp      SHORT G_M20594_IG09
+       je       SHORT G_M20594_IG11
+       jmp      SHORT G_M20594_IG15
+                       ;; size=12 bbWeight=2 PerfScore 12.50
+G_M20594_IG11:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       mov      edx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M20594_IG16
+                       ;; size=8 bbWeight=1 PerfScore 4.00
+G_M20594_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       jmp      SHORT G_M20594_IG16
+                       ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M20594_IG13:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       jmp      SHORT G_M20594_IG08
                        ;; size=5 bbWeight=1 PerfScore 3.00
-G_M20594_IG16:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       test     byte  ptr [edx+D1FFAB1EH], 128
-       je       SHORT G_M20594_IG21
+G_M20594_IG14:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M20594_IG19
                        ;; size=9 bbWeight=2 PerfScore 8.00
-G_M20594_IG17:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       dec      eax
-       mov      dword ptr [ebp-0x14], eax
-       mov      dword ptr [ebp-0x10], ecx
-       cmp      eax, ecx
-       jg       SHORT G_M20594_IG20
+G_M20594_IG15:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
+       dec      edx
+       mov      eax, dword ptr [ebp-0x10]
+       cmp      edx, eax
+       jg       SHORT G_M20594_IG18
                        ;; size=11 bbWeight=4 PerfScore 14.00
-G_M20594_IG18:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      eax, dword ptr [ebp-0x14]
-       mov      ecx, dword ptr [ebp-0x10]
-       sub      eax, ecx
-       inc      eax
-       mov      dword ptr [ebp-0x18], eax
-       cmp      ecx, ebx
-       jbe      SHORT G_M20594_IG22
-                       ;; size=16 bbWeight=1 PerfScore 4.75
-G_M20594_IG19:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M20594_IG16:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       sub      edx, eax
+       inc      edx
+       mov      dword ptr [ebp-0x18], edx
+       cmp      eax, ebx
+       jbe      SHORT G_M20594_IG20
+                       ;; size=10 bbWeight=1 PerfScore 2.75
+G_M20594_IG17:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[esi edi]
        call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M20594_IG20:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG18:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; byrRegs +[esi edi]
-       mov      eax, dword ptr [ebp-0x14]
-       mov      ecx, dword ptr [ebp-0x10]
-       jmp      SHORT G_M20594_IG10
-                       ;; size=8 bbWeight=2 PerfScore 8.00
-G_M20594_IG21:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       mov      dword ptr [ebp-0x14], eax
-       jmp      SHORT G_M20594_IG18
+       mov      dword ptr [ebp-0x10], eax
+       jmp      SHORT G_M20594_IG09
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M20594_IG19:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       mov      edx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M20594_IG16
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M20594_IG22:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       sub      ebx, ecx
-       cmp      ebx, eax
-       jb       SHORT G_M20594_IG19
-       jmp      SHORT G_M20594_IG26
+G_M20594_IG20:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       sub      ebx, eax
+       cmp      ebx, edx
+       jb       SHORT G_M20594_IG17
+       jmp      SHORT G_M20594_IG24
                        ;; size=8 bbWeight=1 PerfScore 3.50
-G_M20594_IG23:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
-       ; byrRegs -[edi] +[ebx]
-       mov      bword ptr [esi], ebx
-       mov      dword ptr [esi+0x04], eax
+G_M20594_IG21:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+       mov      bword ptr [esi], edi
+       mov      dword ptr [esi+0x04], edx
                        ;; size=5 bbWeight=1 PerfScore 2.00
-G_M20594_IG24:        ; bbWeight=1, epilog, nogc, extend
+G_M20594_IG22:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
...

+20 (+9.35%) : 39842.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@
 ; 6 inlinees with PGO data; 12 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T06] (  5,  3.50)     ref  ->  edi         this class-hnd single-def <System.Xml.NameTable>
+;  V00 this         [V00,T06] (  5,  3.50)     ref  ->  [ebp-0x14]  this class-hnd single-def <System.Xml.NameTable>
 ;  V01 arg1         [V01,T04] (  7,  7   )     ref  ->  esi         class-hnd single-def <System.String>
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
 ;  V03 loc1         [V03,T07] (  4,  5.50)     int  ->  [ebp-0x10]  spill-single-def
@@ -25,8 +25,8 @@
 ;* V14 tmp9         [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V15 tmp10        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V16 tmp11        [V16,T03] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V17 tmp12        [V17,T00] (  6, 52   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.String>
-;  V18 tmp13        [V18,T05] (  2,  8   )   byref  ->  ebx         "impAppendStmt"
+;  V17 tmp12        [V17,T00] (  6, 52   )     ref  ->  edx         class-hnd exact "Inlining Arg" <System.String>
+;  V18 tmp13        [V18,T05] (  2,  8   )   byref  ->  edi         "impAppendStmt"
 ;* V19 tmp14        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V20 tmp15        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -44,9 +44,9 @@
 ;* V33 tmp28        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x4)" P-INDEP
 ;* V34 tmp29        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V35 tmp30        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V36 tmp31        [V36,T08] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
-;  V37 tmp32        [V37,T10] (  3,  3   )     int  ->  edx         "index expr"
-;  V38 cse0         [V38,T02] (  4, 18.50)     int  ->  [ebp-0x14]  spill-single-def "CSE - aggressive"
+;  V36 tmp31        [V36,T08] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V37 tmp32        [V37,T10] (  3,  3   )     int  ->  ecx         "index expr"
+;  V38 cse0         [V38,T02] (  4, 18.50)     int  ->  ebx         "CSE - aggressive"
 ;  V39 cse1         [V39,T09] (  3,  3   )   byref  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
 ;* V40 rat0         [V40    ] (  0,  0   )     int  ->  zero-ref    "field V13.lo (fldOffset=0x0)" P-INDEP
 ;* V41 rat1         [V41    ] (  0,  0   )     int  ->  zero-ref    "field V13.hi (fldOffset=0x4)" P-INDEP
@@ -84,10 +84,9 @@ G_M51747_IG03:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
 G_M51747_IG04:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[esi edi]
        mov      ebx, dword ptr [esi+0x04]
-       mov      dword ptr [ebp-0x14], ebx
        test     ebx, ebx
        jne      SHORT G_M51747_IG07
-                       ;; size=10 bbWeight=1 PerfScore 4.25
+                       ;; size=7 bbWeight=1 PerfScore 3.25
 G_M51747_IG05:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi edi]
        mov      eax, 0xD1FFAB1E
@@ -116,73 +115,80 @@ G_M51747_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
        call     [<unknown method>]
        ; byrRegs -[eax ecx]
        mov      dword ptr [ebp-0x10], eax
-       mov      ecx, gword ptr [edi+0x04]
-       ; gcrRegs +[ecx]
-       mov      edx, eax
-       and      edx, dword ptr [edi+0x0C]
-       cmp      edx, dword ptr [ecx+0x04]
-       jae      SHORT G_M51747_IG17
-       mov      edx, gword ptr [ecx+4*edx+0x08]
+       mov      edx, gword ptr [edi+0x04]
        ; gcrRegs +[edx]
-       test     edx, edx
-       je       SHORT G_M51747_IG13
-                       ;; size=52 bbWeight=0.50 PerfScore 10.38
-G_M51747_IG08:        ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[ecx]
-       cmp      dword ptr [edx+0x0C], eax
-       jne      SHORT G_M51747_IG12
-                       ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG09:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, gword ptr [edx+0x04]
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V00}
+       mov      ecx, eax
+       and      ecx, dword ptr [edi+0x0C]
+       cmp      ecx, dword ptr [edx+0x04]
+       jae      SHORT G_M51747_IG20
+       mov      ecx, gword ptr [edx+4*ecx+0x08]
        ; gcrRegs +[ecx]
-       cmp      byte  ptr [ecx], cl
-       cmp      ecx, esi
-       je       SHORT G_M51747_IG15
-                       ;; size=9 bbWeight=2 PerfScore 12.50
-G_M51747_IG10:        ; bbWeight=16, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       cmp      dword ptr [ecx+0x04], ebx
+       test     ecx, ecx
+       mov      edi, gword ptr [ebp-0x14]
+       je       SHORT G_M51747_IG17
+                       ;; size=58 bbWeight=0.50 PerfScore 11.38
+G_M51747_IG08:        ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[edx]
+       ; GC ptr vars -{V00}
+       cmp      dword ptr [ecx+0x0C], eax
+       jne      SHORT G_M51747_IG16
+                       ;; size=5 bbWeight=4 PerfScore 16.00
+G_M51747_IG09:        ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V04}
+       mov      edx, gword ptr [ecx+0x04]
+       ; gcrRegs +[edx]
+       cmp      byte  ptr [edx], dl
+       cmp      edx, esi
+       je       SHORT G_M51747_IG18
+                       ;; size=12 bbWeight=2 PerfScore 14.50
+G_M51747_IG10:        ; bbWeight=16, gcVars=00000202 {V04 V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       cmp      dword ptr [edx+0x04], ebx
        jne      SHORT G_M51747_IG12
                        ;; size=5 bbWeight=16 PerfScore 64.00
-G_M51747_IG11:        ; bbWeight=2, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp-0x18], edx
-       ; GC ptr vars +{V04}
-       lea      ebx, bword ptr [ecx+0x08]
-       ; byrRegs +[ebx]
-       mov      ecx, dword ptr [ecx+0x04]
-       ; gcrRegs -[ecx]
-       add      ecx, ecx
-       push     ecx
-       mov      edx, bword ptr [ebp-0x1C]
+G_M51747_IG11:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V00}
+       lea      edi, bword ptr [edx+0x08]
+       ; gcrRegs -[edi]
+       ; byrRegs +[edi]
+       mov      edx, dword ptr [edx+0x04]
        ; gcrRegs -[edx]
+       add      edx, edx
+       push     edx
+       mov      edx, bword ptr [ebp-0x1C]
        ; byrRegs +[edx]
-       mov      ecx, ebx
+       mov      ecx, edi
        ; byrRegs +[ecx]
        call     [<unknown method>]
-       ; byrRegs -[ecx edx ebx]
+       ; byrRegs -[ecx edx edi]
        test     eax, eax
-       mov      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x18]
-       ; gcrRegs +[edx]
-       mov      ebx, dword ptr [ebp-0x14]
+       mov      edi, gword ptr [ebp-0x14]
+       ; gcrRegs +[edi]
+       jne      SHORT G_M51747_IG18
+                       ;; size=30 bbWeight=2 PerfScore 22.50
+G_M51747_IG12:        ; bbWeight=4, gcVars=00000202 {V04 V39}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars -{V00}
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
+       mov      ecx, gword ptr [ecx+0x08]
+       test     ecx, ecx
        jne      SHORT G_M51747_IG15
-                       ;; size=36 bbWeight=2 PerfScore 26.50
-G_M51747_IG12:        ; bbWeight=4, gcVars=00000200 {V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V04}
-       mov      edx, gword ptr [edx+0x08]
-       test     edx, edx
-       jne      SHORT G_M51747_IG08
-                       ;; size=7 bbWeight=4 PerfScore 13.00
+                       ;; size=10 bbWeight=4 PerfScore 17.00
 G_M51747_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[edx]
-       ; GC ptr vars -{V39}
-       push     eax
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V04 V39}
+       push     dword ptr [ebp-0x10]
        mov      ecx, edi
        ; gcrRegs +[ecx]
        mov      edx, esi
        ; gcrRegs +[edx]
        call     [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
        ; gcrRegs -[ecx edx esi edi] +[eax]
-                       ;; size=11 bbWeight=0.50 PerfScore 2.25
+                       ;; size=13 bbWeight=0.50 PerfScore 2.25
 G_M51747_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -191,12 +197,31 @@ G_M51747_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG15:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax] +[edx]
-       mov      eax, gword ptr [edx+0x04]
+G_M51747_IG15:        ; bbWeight=2, gcVars=00000200 {V39}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax] +[ecx esi edi]
+       ; GC ptr vars +{V09 V39}
+       mov      eax, dword ptr [ebp-0x10]
+       jmp      SHORT G_M51747_IG08
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG16:        ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V04}
+       jmp      SHORT G_M51747_IG12
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG17:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V04 V09 V39}
+       jmp      SHORT G_M51747_IG13
+                       ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M51747_IG18:        ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[esi edi]
+       ; GC ptr vars +{V01 V04}
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
+       mov      eax, gword ptr [ecx+0x04]
        ; gcrRegs +[eax]
-                       ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG16:        ; bbWeight=0.50, epilog, nogc, extend
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG19:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -204,12 +229,13 @@ G_M51747_IG16:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG17:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax edx]
+G_M51747_IG20:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax ecx]
+       ; GC ptr vars -{V01 V04}
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 214, prolog size 13, PerfScore 161.50, instruction count 87, allocated bytes for code 214 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
+; Total bytes of code 234, prolog size 13, PerfScore 176.50, instruction count 94, allocated bytes for code 234 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
 ; ============================================================
 

+17 (+10.56%) : 13159.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)

@@ -28,7 +28,7 @@
 ;
 ; Lcl frame size = 12
 
-G_M35959_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M35959_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
        push     edi
@@ -76,42 +76,51 @@ G_M35959_IG04:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000001 {e
        mov      esi, dword ptr [ebp-0x10]
        xor      esi, dword ptr [eax+0x08]
        cmp      esi, 1
-       jbe      SHORT G_M35959_IG06
+       jbe      SHORT G_M35959_IG07
                        ;; size=11 bbWeight=4 PerfScore 21.00
 G_M35959_IG05:        ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        ; byrRegs -[eax]
        test     edx, edx
-       je       SHORT G_M35959_IG07
+       je       SHORT G_M35959_IG06
        inc      ecx
        add      ebx, ecx
        mov      esi, bword ptr [ebp-0x18]
        ; byrRegs +[esi]
        and      ebx, dword ptr [esi+0x04]
        cmp      ecx, 8
-       jge      SHORT G_M35959_IG07
-       jmp      SHORT G_M35959_IG03
+       jl       SHORT G_M35959_IG03
+       jmp      SHORT G_M35959_IG14
                        ;; size=20 bbWeight=8 PerfScore 72.00
-G_M35959_IG06:        ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
-       ; byrRegs -[esi] +[eax]
+G_M35959_IG06:        ; bbWeight=4, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; byrRegs -[esi]
        ; GC ptr vars -{V06}
+       mov      eax, bword ptr [ebp-0x14]
+       ; byrRegs +[eax]
+       jmp      SHORT G_M35959_IG09
+                       ;; size=5 bbWeight=4 PerfScore 12.00
+G_M35959_IG07:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
        cmp      edx, dword ptr [eax]
-       jne      SHORT G_M35959_IG07
+       jne      SHORT G_M35959_IG11
        cmp      esi, 1
-       je       SHORT G_M35959_IG09
+       je       SHORT G_M35959_IG12
                        ;; size=9 bbWeight=1 PerfScore 5.25
-G_M35959_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M35959_IG08:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[eax]
+       mov      eax, bword ptr [ebp-0x14]
+       ; byrRegs +[eax]
+                       ;; size=3 bbWeight=0.50 PerfScore 0.50
+G_M35959_IG09:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
+       ; GC ptr vars -{V00}
        push     gword ptr [ebp+0x08]
        ; gcr arg push 0
-       mov      ecx, bword ptr [ebp-0x14]
+       mov      ecx, eax
        ; byrRegs +[ecx]
        mov      edx, dword ptr [ebp-0x10]
-       ; GC ptr vars -{V00}
        call     [System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,uint,System.Object)]
-       ; byrRegs -[ecx]
+       ; byrRegs -[eax ecx]
        ; gcr arg pop 1
-                       ;; size=15 bbWeight=0 PerfScore 0.00
-G_M35959_IG08:        ; bbWeight=0, epilog, nogc, extend
+                       ;; size=14 bbWeight=0 PerfScore 0.00
+G_M35959_IG10:        ; bbWeight=0, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -119,8 +128,14 @@ G_M35959_IG08:        ; bbWeight=0, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0 PerfScore 0.00
-G_M35959_IG09:        ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M35959_IG11:        ; bbWeight=0.50, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars +{V00 V09}
+       mov      eax, bword ptr [ebp-0x14]
+       ; byrRegs +[eax]
+       jmp      SHORT G_M35959_IG09
+                       ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M35959_IG12:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       ; byrRegs -[eax]
        mov      ecx, bword ptr [ebp-0x14]
        ; byrRegs +[ecx]
        mov      edx, gword ptr [ebp+0x08]
@@ -130,7 +145,7 @@ G_M35959_IG09:        ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}
        ; gcrRegs -[edx]
        ; byrRegs -[ecx]
                        ;; size=11 bbWeight=1 PerfScore 3.00
-G_M35959_IG10:        ; bbWeight=1, epilog, nogc, extend
+G_M35959_IG13:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -138,7 +153,13 @@ G_M35959_IG10:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=1 PerfScore 4.50
+G_M35959_IG14:        ; bbWeight=0, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars +{V00 V09}
+       mov      eax, bword ptr [ebp-0x14]
+       ; byrRegs +[eax]
+       jmp      SHORT G_M35959_IG09
+                       ;; size=5 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 161, prolog size 15, PerfScore 182.75, instruction count 65, allocated bytes for code 161 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
+; Total bytes of code 178, prolog size 15, PerfScore 196.75, instruction count 72, allocated bytes for code 178 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
 ; ============================================================
 

+17 (+10.56%) : 5284.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)

@@ -28,7 +28,7 @@
 ;
 ; Lcl frame size = 12
 
-G_M35959_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M35959_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
        push     edi
@@ -76,28 +76,33 @@ G_M35959_IG04:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000001 {e
        mov      esi, dword ptr [ebp-0x10]
        xor      esi, dword ptr [eax+0x08]
        cmp      esi, 1
-       jbe      SHORT G_M35959_IG06
+       jbe      SHORT G_M35959_IG07
                        ;; size=11 bbWeight=4 PerfScore 21.00
 G_M35959_IG05:        ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        ; byrRegs -[eax]
        test     edx, edx
-       je       SHORT G_M35959_IG08
+       je       SHORT G_M35959_IG06
        inc      ecx
        add      ebx, ecx
        mov      esi, bword ptr [ebp-0x18]
        ; byrRegs +[esi]
        and      ebx, dword ptr [esi+0x04]
        cmp      ecx, 8
-       jge      SHORT G_M35959_IG08
-       jmp      SHORT G_M35959_IG03
+       jl       SHORT G_M35959_IG03
+       jmp      SHORT G_M35959_IG13
                        ;; size=20 bbWeight=8 PerfScore 72.00
-G_M35959_IG06:        ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref, isz
-       ; byrRegs -[esi] +[eax]
+G_M35959_IG06:        ; bbWeight=4, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; byrRegs -[esi]
        ; GC ptr vars -{V06}
+       mov      eax, bword ptr [ebp-0x14]
+       ; byrRegs +[eax]
+       jmp      SHORT G_M35959_IG11
+                       ;; size=5 bbWeight=4 PerfScore 12.00
+G_M35959_IG07:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, byref, isz
        cmp      edx, dword ptr [eax]
-       jne      SHORT G_M35959_IG08
+       jne      SHORT G_M35959_IG10
        cmp      esi, 1
-       jne      SHORT G_M35959_IG08
+       jne      SHORT G_M35959_IG09
        mov      ecx, bword ptr [ebp-0x14]
        ; byrRegs +[ecx]
        mov      edx, gword ptr [ebp+0x08]
@@ -107,7 +112,7 @@ G_M35959_IG06:        ; bbWeight=1, gcVars=00000200 {V00}, gcrefRegs=00000000 {}
        ; gcrRegs -[edx]
        ; byrRegs -[eax ecx]
                        ;; size=20 bbWeight=1 PerfScore 8.25
-G_M35959_IG07:        ; bbWeight=1, epilog, nogc, extend
+G_M35959_IG08:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -115,19 +120,29 @@ G_M35959_IG07:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M35959_IG08:        ; bbWeight=0, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M35959_IG09:        ; bbWeight=0.50, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars +{V00 V09}
+       mov      eax, bword ptr [ebp-0x14]
+       ; byrRegs +[eax]
+       jmp      SHORT G_M35959_IG11
+                       ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M35959_IG10:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       ; byrRegs -[eax]
+       mov      eax, bword ptr [ebp-0x14]
+       ; byrRegs +[eax]
+                       ;; size=3 bbWeight=0.50 PerfScore 0.50
+G_M35959_IG11:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000001 {eax}, gcvars, byref
+       ; GC ptr vars -{V00 V09}
        push     gword ptr [ebp+0x08]
        ; gcr arg push 0
-       mov      ecx, bword ptr [ebp-0x14]
+       mov      ecx, eax
        ; byrRegs +[ecx]
        mov      edx, dword ptr [ebp-0x10]
-       ; GC ptr vars -{V00 V09}
        call     [System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper_NoCacheLookup(byref,uint,System.Object)]
-       ; byrRegs -[ecx]
+       ; byrRegs -[eax ecx]
        ; gcr arg pop 1
-                       ;; size=15 bbWeight=0 PerfScore 0.00
-G_M35959_IG09:        ; bbWeight=0, epilog, nogc, extend
+                       ;; size=14 bbWeight=0 PerfScore 0.00
+G_M35959_IG12:        ; bbWeight=0, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -135,7 +150,13 @@ G_M35959_IG09:        ; bbWeight=0, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0 PerfScore 0.00
+G_M35959_IG13:        ; bbWeight=0, gcVars=00000200 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars +{V00 V09}
+       mov      eax, bword ptr [ebp-0x14]
+       ; byrRegs +[eax]
+       jmp      SHORT G_M35959_IG11
+                       ;; size=5 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 161, prolog size 15, PerfScore 182.75, instruction count 65, allocated bytes for code 161 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
+; Total bytes of code 178, prolog size 15, PerfScore 196.75, instruction count 72, allocated bytes for code 178 (MethodHash=fc727388) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,uint,System.Object) (Tier1)
 ; ============================================================
 

benchmarks.run_tiered.windows.x86.checked.mch

-47 (-15.56%) : 30569.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (Tier0-FullOpts)

@@ -13,7 +13,7 @@
 ;  V02 loc0         [V02,T03] ( 15, 20.04)     int  ->  [ebp-0x10] 
 ;  V03 loc1         [V03,T02] ( 11, 23.50)     int  ->  [ebp-0x14] 
 ;  V04 tmp0         [V04,T08] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  edx         "Inlining Arg"
+;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V13 tmp9         [V13,T07] (  4,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V14 tmp10        [V14,T00] (  8, 24   )  ushort  ->  eax         "Inlining Arg"
+;  V14 tmp10        [V14,T00] (  8, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V16 tmp12        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V17 tmp13        [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -73,139 +73,117 @@ G_M50035_IG02:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      ebx, dword ptr [esi+0x04]
        lea      eax, [ebx-0x01]
        mov      dword ptr [ebp-0x10], eax
-       xor      ecx, ecx
+       xor      edx, edx
        test     edi, 1
-       mov      dword ptr [ebp-0x14], ecx
-       je       SHORT G_M50035_IG10
-                       ;; size=22 bbWeight=1 PerfScore 6.00
+       je       SHORT G_M50035_IG09
+                       ;; size=19 bbWeight=1 PerfScore 5.00
 G_M50035_IG03:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       xor      ecx, ecx
+       xor      edx, edx
        test     ebx, ebx
-       jle      SHORT G_M50035_IG07
+       jle      SHORT G_M50035_IG09
                        ;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M50035_IG04:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       movzx    edx, word  ptr [esi+2*ecx+0x08]
-       cmp      edx, 256
-       jb       SHORT G_M50035_IG08
-                       ;; size=13 bbWeight=4 PerfScore 13.00
+       mov      dword ptr [ebp-0x14], edx
+       movzx    ecx, word  ptr [esi+2*edx+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG07
+                       ;; size=16 bbWeight=4 PerfScore 17.00
 G_M50035_IG05:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, edx
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG10
-                       ;; size=15 bbWeight=2 PerfScore 11.00
-G_M50035_IG06:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
+       je       SHORT G_M50035_IG06
+       jmp      SHORT G_M50035_IG08
+                       ;; size=12 bbWeight=2 PerfScore 12.50
+G_M50035_IG06:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
        jmp      SHORT G_M50035_IG09
-                       ;; size=5 bbWeight=4 PerfScore 12.00
-G_M50035_IG07:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG10
-                       ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG08:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [edx+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG17
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG07:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG15
                        ;; size=9 bbWeight=2 PerfScore 8.00
-G_M50035_IG09:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       inc      ecx
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      ebx, ecx
-       jg       SHORT G_M50035_IG16
+G_M50035_IG08:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
+       inc      edx
+       cmp      ebx, edx
+       jg       SHORT G_M50035_IG04
                        ;; size=8 bbWeight=4 PerfScore 10.00
-G_M50035_IG10:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M50035_IG09:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        test     edi, 2
        mov      edi, dword ptr [ebp-0x10]
-       je       G_M50035_IG27
-                       ;; size=15 bbWeight=1 PerfScore 2.25
-G_M50035_IG11:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       je       SHORT G_M50035_IG14
+                       ;; size=11 bbWeight=1 PerfScore 2.25
+G_M50035_IG10:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        lea      eax, [ebx-0x01]
        mov      edi, eax
-       mov      ecx, dword ptr [ebp-0x14]
-       cmp      edi, ecx
-       jl       SHORT G_M50035_IG15
-       mov      eax, edi
-       or       eax, ecx
-       jl       SHORT G_M50035_IG22
+       cmp      edi, edx
+       jl       SHORT G_M50035_IG13
+       mov      dword ptr [ebp-0x14], edx
+       mov      ecx, edi
+       or       ecx, edx
+       jl       SHORT G_M50035_IG18
        cmp      ebx, edi
-       jle      SHORT G_M50035_IG22
+       jle      SHORT G_M50035_IG18
                        ;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M50035_IG12:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       movzx    eax, word  ptr [esi+2*edi+0x08]
-       cmp      eax, 256
-       jb       SHORT G_M50035_IG18
-                       ;; size=12 bbWeight=3.96 PerfScore 12.87
-G_M50035_IG13:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, eax
+G_M50035_IG11:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       movzx    ecx, word  ptr [esi+2*edi+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG16
+                       ;; size=13 bbWeight=3.96 PerfScore 12.87
+G_M50035_IG12:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG27
-                       ;; size=15 bbWeight=1.98 PerfScore 10.89
-G_M50035_IG14:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M50035_IG19
-                       ;; size=5 bbWeight=3.96 PerfScore 11.88
-G_M50035_IG15:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
+       je       SHORT G_M50035_IG22
+       jmp      SHORT G_M50035_IG17
+                       ;; size=12 bbWeight=1.98 PerfScore 12.38
+G_M50035_IG13:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      dword ptr [ebp-0x14], edx
+       jmp      SHORT G_M50035_IG22
                        ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG16:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      G_M50035_IG04
-                       ;; size=8 bbWeight=2 PerfScore 6.00
-G_M50035_IG17:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG10
-                       ;; size=5 bbWeight=1 PerfScore 3.00
-G_M50035_IG18:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [eax+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG21
-                       ;; size=9 bbWeight=1.98 PerfScore 7.92
-G_M50035_IG19:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       dec      edi
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      edi, ecx
-       mov      ecx, dword ptr [ebp-0x14]
-       jge      SHORT G_M50035_IG12
-                       ;; size=11 bbWeight=3.96 PerfScore 13.86
-G_M50035_IG20:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
+G_M50035_IG14:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      dword ptr [ebp-0x14], edx
+       jmp      SHORT G_M50035_IG22
                        ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50035_IG21:        ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       jmp      SHORT G_M50035_IG27
-                       ;; size=5 bbWeight=0.99 PerfScore 2.97
-G_M50035_IG22:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG15:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M50035_IG09
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M50035_IG16:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG22
+                       ;; size=9 bbWeight=1.98 PerfScore 7.92
+G_M50035_IG17:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       dec      edi
+       mov      edx, dword ptr [ebp-0x14]
+       cmp      edi, edx
+       jge      SHORT G_M50035_IG11
+       jmp      SHORT G_M50035_IG22
+                       ;; size=10 bbWeight=3.96 PerfScore 17.82
+G_M50035_IG18:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        cmp      edi, ebx
-       jae      SHORT G_M50035_IG31
-       movzx    eax, word  ptr [esi+2*edi+0x08]
-       cmp      eax, 256
-       jb       SHORT G_M50035_IG25
-                       ;; size=16 bbWeight=0.04 PerfScore 0.18
-G_M50035_IG23:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], ecx
-       mov      ecx, eax
+       jae      SHORT G_M50035_IG24
+       movzx    ecx, word  ptr [esi+2*edi+0x08]
+       cmp      ecx, 256
+       jb       SHORT G_M50035_IG20
+                       ;; size=17 bbWeight=0.04 PerfScore 0.18
+G_M50035_IG19:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG27
-                       ;; size=15 bbWeight=0.02 PerfScore 0.11
-G_M50035_IG24:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M50035_IG26
-                       ;; size=5 bbWeight=0.04 PerfScore 0.12
-G_M50035_IG25:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       test     byte  ptr [eax+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG30
+       je       SHORT G_M50035_IG22
+       jmp      SHORT G_M50035_IG21
+                       ;; size=12 bbWeight=0.02 PerfScore 0.13
+G_M50035_IG20:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M50035_IG22
                        ;; size=9 bbWeight=0.02 PerfScore 0.08
-G_M50035_IG26:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG21:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        dec      edi
-       mov      dword ptr [ebp-0x14], ecx
-       cmp      edi, ecx
-       jge      SHORT G_M50035_IG29
-                       ;; size=8 bbWeight=0.04 PerfScore 0.10
-G_M50035_IG27:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       mov      edx, dword ptr [ebp-0x14]
+       cmp      edi, edx
+       mov      dword ptr [ebp-0x14], edx
+       jge      SHORT G_M50035_IG18
+                       ;; size=11 bbWeight=0.04 PerfScore 0.14
+G_M50035_IG22:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        push     edi
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -213,7 +191,7 @@ G_M50035_IG27:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        call     [System.String:CreateTrimmedString(int,int):System.String:this]
        ; gcrRegs -[ecx esi] +[eax]
                        ;; size=12 bbWeight=1 PerfScore 5.25
-G_M50035_IG28:        ; bbWeight=1, epilog, nogc, extend
+G_M50035_IG23:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
...

-24 (-9.09%) : 3697.dasm - System.MemoryExtensions:g_TrimFallback|2230(System.ReadOnlySpan1[ushort]):System.ReadOnlySpan1ushort

@@ -13,7 +13,7 @@
 ;  V02 loc0         [V02,T00] ( 11, 26   )     int  ->  [ebp-0x10] 
 ;  V03 loc1         [V03,T03] (  8, 23   )     int  ->  [ebp-0x14] 
 ;  V04 loc2         [V04,T09] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  eax         "Inlining Arg"
+;  V05 tmp1         [V05,T01] (  4, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V06 tmp2         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V07 tmp3         [V07    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -22,7 +22,7 @@
 ;* V11 tmp7         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp8         [V12    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V13 tmp9         [V13,T10] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V14 tmp10        [V14,T02] (  4, 24   )  ushort  ->  edx         "Inlining Arg"
+;  V14 tmp10        [V14,T02] (  4, 24   )  ushort  ->  ecx         "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V16 tmp12        [V16    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V17 tmp13        [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -60,7 +60,7 @@
 ;* V49 tmp45        [V49    ] (  0,  0   )   byref  ->  zero-ref    "field V21._reference (fldOffset=0x0)" P-INDEP
 ;* V50 tmp46        [V50    ] (  0,  0   )     int  ->  zero-ref    "field V21._length (fldOffset=0x4)" P-INDEP
 ;  V51 tmp47        [V51,T11] (  2,  2   )   byref  ->  edi         single-def "field V23._reference (fldOffset=0x0)" P-INDEP
-;  V52 tmp48        [V52,T13] (  2,  2   )     int  ->  eax         "field V23._length (fldOffset=0x4)" P-INDEP
+;  V52 tmp48        [V52,T13] (  2,  2   )     int  ->  edx         "field V23._length (fldOffset=0x4)" P-INDEP
 ;  V53 tmp49        [V53,T05] (  4, 10   )   byref  ->  edi         single-def "V01.[000..004)"
 ;  V54 tmp50        [V54,T04] (  7, 13   )     int  ->  ebx         "V01.[004..008)"
 ;
@@ -80,106 +80,94 @@ G_M20594_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {e
        mov      edi, bword ptr [ebp+0x08]
        ; byrRegs +[edi]
        mov      ebx, dword ptr [ebp+0x0C]
-       xor      ecx, ecx
+       xor      eax, eax
        test     ebx, ebx
-       jle      SHORT G_M20594_IG06
+       jle      SHORT G_M20594_IG08
                        ;; size=12 bbWeight=1 PerfScore 3.50
 G_M20594_IG03:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       movzx    eax, word  ptr [edi+2*ecx]
-       cmp      eax, 256
-       jb       SHORT G_M20594_IG07
-                       ;; size=11 bbWeight=4 PerfScore 13.00
+       mov      dword ptr [ebp-0x10], eax
+       movzx    ecx, word  ptr [edi+2*eax]
+       cmp      ecx, 256
+       jb       SHORT G_M20594_IG06
+                       ;; size=15 bbWeight=4 PerfScore 17.00
 G_M20594_IG04:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       mov      ecx, eax
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M20594_IG09
-                       ;; size=15 bbWeight=2 PerfScore 11.00
-G_M20594_IG05:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      ecx, dword ptr [ebp-0x10]
+       je       SHORT G_M20594_IG05
+       jmp      SHORT G_M20594_IG07
+                       ;; size=12 bbWeight=2 PerfScore 12.50
+G_M20594_IG05:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
        jmp      SHORT G_M20594_IG08
-                       ;; size=5 bbWeight=4 PerfScore 12.00
-G_M20594_IG06:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       jmp      SHORT G_M20594_IG09
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M20594_IG07:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       test     byte  ptr [eax+D1FFAB1EH], 128
-       je       SHORT G_M20594_IG15
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M20594_IG06:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M20594_IG13
                        ;; size=9 bbWeight=2 PerfScore 8.00
-G_M20594_IG08:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       inc      ecx
-       mov      dword ptr [ebp-0x10], ecx
-       cmp      ecx, ebx
-       jl       SHORT G_M20594_IG14
-                       ;; size=8 bbWeight=4 PerfScore 10.00
-G_M20594_IG09:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       lea      eax, [ebx-0x01]
-       mov      ecx, dword ptr [ebp-0x10]
-       cmp      eax, ecx
-       jle      SHORT G_M20594_IG13
-                       ;; size=10 bbWeight=1 PerfScore 2.75
-G_M20594_IG10:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+G_M20594_IG07:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       inc      eax
        cmp      eax, ebx
-       jae      G_M20594_IG24
-       movzx    edx, word  ptr [edi+2*eax]
-       cmp      edx, 256
-       jb       SHORT G_M20594_IG16
-                       ;; size=20 bbWeight=4 PerfScore 18.00
-G_M20594_IG11:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       mov      dword ptr [ebp-0x14], eax
-       mov      ecx, edx
+       jl       SHORT G_M20594_IG03
+                       ;; size=8 bbWeight=4 PerfScore 10.00
+G_M20594_IG08:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       lea      edx, [ebx-0x01]
+       mov      dword ptr [ebp-0x10], eax
+       cmp      edx, eax
+       jle      SHORT G_M20594_IG12
+                       ;; size=10 bbWeight=1 PerfScore 2.75
+G_M20594_IG09:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       cmp      edx, ebx
+       jae      G_M20594_IG22
+       mov      dword ptr [ebp-0x14], edx
+       movzx    ecx, word  ptr [edi+2*edx]
+       cmp      ecx, 256
+       jb       SHORT G_M20594_IG14
+                       ;; size=23 bbWeight=4 PerfScore 22.00
+G_M20594_IG10:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M20594_IG18
-                       ;; size=18 bbWeight=2 PerfScore 13.00
-G_M20594_IG12:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      eax, dword ptr [ebp-0x14]
-       mov      ecx, dword ptr [ebp-0x10]
-       jmp      SHORT G_M20594_IG17
-                       ;; size=8 bbWeight=4 PerfScore 16.00
-G_M20594_IG13:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       mov      dword ptr [ebp-0x14], eax
-       jmp      SHORT G_M20594_IG18
-                       ;; size=8 bbWeight=0.50 PerfScore 2.00
-G_M20594_IG14:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      ecx, dword ptr [ebp-0x10]
-       jmp      SHORT G_M20594_IG03
-                       ;; size=5 bbWeight=2 PerfScore 6.00
-G_M20594_IG15:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       jmp      SHORT G_M20594_IG09
+       je       SHORT G_M20594_IG11
+       jmp      SHORT G_M20594_IG15
+                       ;; size=12 bbWeight=2 PerfScore 12.50
+G_M20594_IG11:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       mov      edx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M20594_IG16
+                       ;; size=8 bbWeight=1 PerfScore 4.00
+G_M20594_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       jmp      SHORT G_M20594_IG16
+                       ;; size=5 bbWeight=0.50 PerfScore 1.50
+G_M20594_IG13:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       jmp      SHORT G_M20594_IG08
                        ;; size=5 bbWeight=1 PerfScore 3.00
-G_M20594_IG16:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       test     byte  ptr [edx+D1FFAB1EH], 128
-       je       SHORT G_M20594_IG23
+G_M20594_IG14:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       test     byte  ptr [ecx+D1FFAB1EH], 128
+       je       SHORT G_M20594_IG21
                        ;; size=9 bbWeight=2 PerfScore 8.00
-G_M20594_IG17:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       dec      eax
-       mov      dword ptr [ebp-0x14], eax
-       mov      dword ptr [ebp-0x10], ecx
-       cmp      eax, ecx
-       jg       SHORT G_M20594_IG22
+G_M20594_IG15:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      edx, dword ptr [ebp-0x14]
+       dec      edx
+       mov      eax, dword ptr [ebp-0x10]
+       cmp      edx, eax
+       jg       SHORT G_M20594_IG20
                        ;; size=11 bbWeight=4 PerfScore 14.00
-G_M20594_IG18:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      eax, dword ptr [ebp-0x14]
-       mov      ecx, dword ptr [ebp-0x10]
-       sub      eax, ecx
-       inc      eax
-       mov      dword ptr [ebp-0x18], eax
-       cmp      ecx, ebx
-       ja       SHORT G_M20594_IG25
-       sub      ebx, ecx
-       cmp      ebx, eax
-       jb       SHORT G_M20594_IG25
-       lea      edi, bword ptr [edi+2*ecx]
-       test     eax, eax
-       jge      SHORT G_M20594_IG20
-                       ;; size=29 bbWeight=1 PerfScore 8.00
-G_M20594_IG19:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+G_M20594_IG16:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       sub      edx, eax
+       inc      edx
+       mov      dword ptr [ebp-0x18], edx
+       cmp      eax, ebx
+       ja       SHORT G_M20594_IG23
+       sub      ebx, eax
+       cmp      ebx, edx
+       jb       SHORT G_M20594_IG23
+       lea      edi, bword ptr [edi+2*eax]
+       test     edx, edx
+       jge      SHORT G_M20594_IG18
+                       ;; size=23 bbWeight=1 PerfScore 6.00
+G_M20594_IG17:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
        mov      ecx, 0xD1FFAB1E
        ; gcrRegs +[ecx]
        mov      edx, 0xD1FFAB1E
@@ -187,12 +175,12 @@ G_M20594_IG19:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
                        ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M20594_IG20:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
-       mov      eax, dword ptr [ebp-0x18]
+G_M20594_IG18:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+       mov      edx, dword ptr [ebp-0x18]
        mov      bword ptr [esi], edi
-       mov      dword ptr [esi+0x04], eax
+       mov      dword ptr [esi+0x04], edx
                        ;; size=8 bbWeight=1 PerfScore 3.00
-G_M20594_IG21:        ; bbWeight=1, epilog, nogc, extend
+G_M20594_IG19:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -200,25 +188,24 @@ G_M20594_IG21:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      8
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M20594_IG22:        ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
-       mov      eax, dword ptr [ebp-0x14]
-       mov      ecx, dword ptr [ebp-0x10]
-       jmp      G_M20594_IG10
-                       ;; size=11 bbWeight=2 PerfScore 8.00
-G_M20594_IG23:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x10], ecx
-       mov      dword ptr [ebp-0x14], eax
-       jmp      SHORT G_M20594_IG18
+G_M20594_IG20:        ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, gcvars, byref
+       mov      dword ptr [ebp-0x10], eax
+       jmp      G_M20594_IG09
+                       ;; size=8 bbWeight=2 PerfScore 6.00
+G_M20594_IG21:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
+       mov      eax, dword ptr [ebp-0x10]
+       mov      edx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M20594_IG16
                        ;; size=8 bbWeight=1 PerfScore 4.00
-G_M20594_IG24:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M20594_IG22:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[esi edi]
...

-16 (-7.96%) : 241.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)

@@ -39,11 +39,11 @@ G_M33320_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        sub      esp, 12
        mov      eax, ecx
                        ;; size=11 bbWeight=1 PerfScore 4.75
-G_M33320_IG02:        ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG02:        ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[edx]
        test     edx, edx
-       je       G_M33320_IG11
-                       ;; size=8 bbWeight=1 PerfScore 1.25
+       je       SHORT G_M33320_IG10
+                       ;; size=4 bbWeight=1 PerfScore 1.25
 G_M33320_IG03:        ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
        mov      gword ptr [ebp-0x18], edx
        ; GC ptr vars +{V01}
@@ -51,7 +51,7 @@ G_M33320_IG03:        ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
        mov      dword ptr [ebp-0x14], esi
        cmp      esi, eax
        mov      edx, gword ptr [ebp-0x18]
-       je       SHORT G_M33320_IG11
+       je       SHORT G_M33320_IG10
        mov      edi, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[edi]
        add      edi, 8
@@ -83,50 +83,41 @@ G_M33320_IG05:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
        mov      esi, dword ptr [ebp-0x10]
        xor      esi, dword ptr [edx+0x08]
        cmp      esi, 1
-       jbe      SHORT G_M33320_IG08
+       jbe      SHORT G_M33320_IG07
                        ;; size=11 bbWeight=2 PerfScore 10.50
 G_M33320_IG06:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
        ; byrRegs -[edx]
        test     eax, eax
-       je       SHORT G_M33320_IG09
+       je       SHORT G_M33320_IG08
        inc      ecx
        add      ebx, ecx
        and      ebx, dword ptr [edi+0x04]
        cmp      ecx, 8
        jl       SHORT G_M33320_IG04
-                       ;; size=15 bbWeight=4 PerfScore 24.00
-G_M33320_IG07:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[edi]
-       mov      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x18]
-       ; gcrRegs +[edx]
-       mov      dword ptr [ebp-0x10], eax
-       mov      gword ptr [ebp-0x18], edx
-       jmp      SHORT G_M33320_IG09
-                       ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG08:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
-       ; gcrRegs -[edx]
-       ; byrRegs +[edx]
+       jmp      SHORT G_M33320_IG08
+                       ;; size=17 bbWeight=4 PerfScore 32.00
+G_M33320_IG07:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+       ; byrRegs -[edi] +[edx]
        cmp      eax, dword ptr [edx]
-       jne      SHORT G_M33320_IG09
-       jmp      SHORT G_M33320_IG10
+       jne      SHORT G_M33320_IG08
+       jmp      SHORT G_M33320_IG09
                        ;; size=6 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33320_IG08:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[edx]
        mov      esi, 2
                        ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG10:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33320_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        cmp      esi, 1
        mov      edx, gword ptr [ebp-0x18]
        ; gcrRegs +[edx]
-       jne      SHORT G_M33320_IG13
+       jne      SHORT G_M33320_IG12
                        ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M33320_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M33320_IG10:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      eax, edx
        ; gcrRegs +[eax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -134,7 +125,7 @@ G_M33320_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33320_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax]
        mov      eax, dword ptr [ebp-0x10]
        mov      ecx, eax
@@ -143,7 +134,7 @@ G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
        mov      edi, eax
        ; gcrRegs +[edi]
        test     esi, esi
-       jne      SHORT G_M33320_IG14
+       jne      SHORT G_M33320_IG13
        mov      ecx, 0xD1FFAB1E
        ; gcrRegs +[ecx]
        mov      edx, 0xD1FFAB1E
@@ -151,11 +142,11 @@ G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
                        ;; size=32 bbWeight=0.50 PerfScore 3.62
-G_M33320_IG14:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M33320_IG13:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        mov      eax, edi
        ; gcrRegs +[eax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -164,6 +155,6 @@ G_M33320_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 201, prolog size 11, PerfScore 99.00, instruction count 80, allocated bytes for code 201 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
+; Total bytes of code 185, prolog size 11, PerfScore 104.00, instruction count 76, allocated bytes for code 185 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
 ; ============================================================
 

+12 (+8.45%) : 28970.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort]):System.ReadOnlySpan`1ushort

@@ -15,10 +15,10 @@
 ;  V04 loc1         [V04,T00] (  5, 84   )     int  ->  edx        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V06 tmp1         [V06,T08] (  3,  3   )     int  ->  edi         "Inlining Arg"
-;  V07 tmp2         [V07,T09] (  2,  2   )   byref  ->  ebx         single-def "Inlining Arg"
+;  V07 tmp2         [V07,T09] (  2,  2   )   byref  ->  esi         single-def "Inlining Arg"
 ;* V08 tmp3         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V09 tmp4         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V10 tmp5         [V10,T10] (  2,  1   )   byref  ->  ebx         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V10 tmp5         [V10,T10] (  2,  1   )   byref  ->  esi         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;  V11 tmp6         [V11,T11] (  2,  1   )     int  ->  edi         "field V05._length (fldOffset=0x4)" P-INDEP
 ;  V12 tmp7         [V12,T05] (  5,  6.50)     int  ->  edi         "V01.[004..008)"
 ;  V13 tmp8         [V13,T03] (  4, 22   )     int  ->  ebx         "V02.[004..008)"
@@ -64,12 +64,12 @@ G_M16324_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
        ; byrRegs +[esi]
        xor      ecx, ecx
        test     edi, edi
-       jle      SHORT G_M16324_IG11
+       jle      SHORT G_M16324_IG10
                        ;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M16324_IG06:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
        xor      edx, edx
        test     ebx, ebx
-       jle      SHORT G_M16324_IG11
+       jle      SHORT G_M16324_IG09
        mov      eax, bword ptr [ebp+0x10]
        ; byrRegs +[eax]
        movzx    eax, word  ptr [eax+2*ecx]
@@ -84,36 +84,42 @@ G_M16324_IG07:        ; bbWeight=32, gcVars=00000080 {V00}, gcrefRegs=00000000 {
        movzx    esi, word  ptr [esi+2*edx]
        ; byrRegs -[esi]
        cmp      esi, eax
-       je       SHORT G_M16324_IG10
+       je       SHORT G_M16324_IG11
                        ;; size=11 bbWeight=32 PerfScore 136.00
 G_M16324_IG08:        ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        inc      edx
        cmp      edx, ebx
        jl       SHORT G_M16324_IG07
-                       ;; size=5 bbWeight=16 PerfScore 24.00
-G_M16324_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
-       mov      esi, bword ptr [ebp-0x10]
+       jmp      SHORT G_M16324_IG12
+                       ;; size=7 bbWeight=16 PerfScore 56.00
+G_M16324_IG09:        ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
        ; byrRegs +[esi]
-       jmp      SHORT G_M16324_IG11
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M16324_IG10:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       ; GC ptr vars -{V00}
+       mov      bword ptr [ebp-0x10], esi
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M16324_IG12
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG10:        ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+       ; GC ptr vars -{V00}
+       mov      bword ptr [ebp-0x10], esi
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M16324_IG12
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M16324_IG11:        ; bbWeight=4, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[esi]
        inc      ecx
        cmp      ecx, edi
-       mov      esi, bword ptr [ebp-0x10]
-       ; byrRegs +[esi]
-       jl       SHORT G_M16324_IG06
-                       ;; size=8 bbWeight=4 PerfScore 10.00
-G_M16324_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
-       ; GC ptr vars -{V00}
+       jl       SHORT G_M16324_IG15
+                       ;; size=5 bbWeight=4 PerfScore 6.00
+G_M16324_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        cmp      ecx, edi
-       ja       SHORT G_M16324_IG14
+       ja       SHORT G_M16324_IG16
        mov      edx, bword ptr [ebp+0x10]
        ; byrRegs +[edx]
-       lea      ebx, bword ptr [edx+2*ecx]
-       ; byrRegs +[ebx]
+       lea      esi, bword ptr [edx+2*ecx]
+       ; byrRegs +[esi]
        sub      edi, ecx
-       jns      SHORT G_M16324_IG12
+       jns      SHORT G_M16324_IG13
        mov      ecx, 0xD1FFAB1E
        ; gcrRegs +[ecx]
        mov      edx, 0xD1FFAB1E
@@ -122,11 +128,13 @@ G_M16324_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
                        ;; size=30 bbWeight=0.50 PerfScore 3.75
-G_M16324_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
-       mov      bword ptr [esi], ebx
-       mov      dword ptr [esi+0x04], edi
-                       ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M16324_IG13:        ; bbWeight=0.50, epilog, nogc, extend
+G_M16324_IG13:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+       mov      ebx, bword ptr [ebp-0x10]
+       ; byrRegs +[ebx]
+       mov      bword ptr [ebx], esi
+       mov      dword ptr [ebx+0x04], edi
+                       ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M16324_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ecx
        pop      ebx
        pop      esi
@@ -134,12 +142,19 @@ G_M16324_IG13:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      16
                        ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M16324_IG14:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M16324_IG15:        ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[ebx esi]
+       mov      esi, bword ptr [ebp-0x10]
+       ; byrRegs +[esi]
+       jmp      SHORT G_M16324_IG06
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG16:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; byrRegs -[esi]
+       ; GC ptr vars -{V00}
        call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 142, prolog size 9, PerfScore 214.88, instruction count 62, allocated bytes for code 142 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
+; Total bytes of code 154, prolog size 9, PerfScore 254.62, instruction count 67, allocated bytes for code 154 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
 ; ============================================================
 

+20 (+9.17%) : 45554.dasm - Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (Tier0-FullOpts)

@@ -42,15 +42,15 @@ G_M52602_IG02:        ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000004
        mov      edx, 1
        ; byrRegs -[edx]
        test     eax, eax
-       jle      G_M52602_IG12
+       jle      G_M52602_IG14
                        ;; size=18 bbWeight=1 PerfScore 4.50
-G_M52602_IG03:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+G_M52602_IG03:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        lea      esi, [edx+0x01]
        mov      dword ptr [ebp-0x18], esi
        mov      edi, esi
        cmp      edi, eax
-       jg       G_M52602_IG11
-                       ;; size=16 bbWeight=4 PerfScore 12.00
+       jg       SHORT G_M52602_IG10
+                       ;; size=12 bbWeight=4 PerfScore 12.00
 G_M52602_IG04:        ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, 1
        test     ecx, ecx
@@ -60,7 +60,7 @@ G_M52602_IG05:        ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000
        test     eax, eax
        jl       SHORT G_M52602_IG08
        cmp      dword ptr [ecx+0x04], eax
-       jle      SHORT G_M52602_IG09
+       jle      SHORT G_M52602_IG11
                        ;; size=9 bbWeight=8 PerfScore 42.00
 G_M52602_IG06:        ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        mov      gword ptr [ebp-0x20], ecx
@@ -70,14 +70,14 @@ G_M52602_IG06:        ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=0000
        mov      ecx, esi
        mov      eax, dword ptr [ecx+0x04]
        cmp      edx, eax
-       jae      G_M52602_IG13
+       jae      G_M52602_IG17
        mov      ecx, dword ptr [ecx+4*edx+0x08]
        ; gcrRegs -[ecx]
        mov      dword ptr [ebp-0x14], ecx
        mov      ecx, esi
        ; gcrRegs +[ecx]
        cmp      edi, eax
-       jae      SHORT G_M52602_IG13
+       jae      G_M52602_IG17
        mov      eax, dword ptr [ecx+4*edi+0x08]
        mov      ecx, dword ptr [ebp-0x14]
        ; gcrRegs -[ecx]
@@ -85,20 +85,31 @@ G_M52602_IG06:        ; bbWeight=63.36, gcrefRegs=00000002 {ecx}, byrefRegs=0000
        mov      dword ptr [esi+4*edi+0x08], ecx
        inc      ebx
        cmp      ebx, dword ptr [ebp-0x10]
+       jle      SHORT G_M52602_IG07
+       jmp      SHORT G_M52602_IG12
+                       ;; size=58 bbWeight=63.36 PerfScore 1298.88
+G_M52602_IG07:        ; bbWeight=31.68, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[esi]
        mov      ecx, gword ptr [ebp-0x20]
        ; gcrRegs +[ecx]
-       jle      SHORT G_M52602_IG06
-                       ;; size=55 bbWeight=63.36 PerfScore 1235.52
-G_M52602_IG07:        ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[esi]
+       jmp      SHORT G_M52602_IG06
+                       ;; size=5 bbWeight=31.68 PerfScore 95.04
+G_M52602_IG08:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V00}
-       jmp      SHORT G_M52602_IG10
+       jmp      SHORT G_M52602_IG11
+                       ;; size=2 bbWeight=4 PerfScore 8.00
+G_M52602_IG09:        ; bbWeight=8, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+       jmp      SHORT G_M52602_IG11
                        ;; size=2 bbWeight=8 PerfScore 16.00
-G_M52602_IG08:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
-                       ;; size=0 bbWeight=4 PerfScore 0.00
-G_M52602_IG09:        ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+G_M52602_IG10:        ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x20], ecx
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M52602_IG13
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M52602_IG11:        ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+       ; GC ptr vars -{V00}
        cmp      ebx, dword ptr [ecx+0x04]
-       jae      SHORT G_M52602_IG13
+       jae      SHORT G_M52602_IG17
        mov      gword ptr [ebp-0x20], ecx
        ; GC ptr vars +{V00}
        mov      esi, gword ptr [ecx+4*ebx+0x08]
@@ -109,13 +120,13 @@ G_M52602_IG09:        ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000
        ; gcrRegs -[ecx]
        mov      dword ptr [ebp-0x1C], ecx
        cmp      edx, ecx
-       jae      SHORT G_M52602_IG13
+       jae      SHORT G_M52602_IG17
        mov      esi, dword ptr [esi+4*edx+0x08]
        ; gcrRegs -[esi]
        mov      ecx, gword ptr [ebp-0x24]
        ; gcrRegs +[ecx]
        cmp      edi, dword ptr [ebp-0x1C]
-       jae      SHORT G_M52602_IG13
+       jae      SHORT G_M52602_IG17
        mov      ecx, dword ptr [ecx+4*edi+0x08]
        ; gcrRegs -[ecx]
        mov      eax, gword ptr [ebp-0x24]
@@ -126,25 +137,26 @@ G_M52602_IG09:        ; bbWeight=0.64, gcrefRegs=00000002 {ecx}, byrefRegs=00000
        mov      eax, dword ptr [ebp-0x10]
        ; gcrRegs -[eax]
        cmp      ebx, eax
-       mov      ecx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ecx]
-       jle      SHORT G_M52602_IG09
-                       ;; size=61 bbWeight=0.64 PerfScore 16.64
-G_M52602_IG10:        ; bbWeight=16, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
-       ; GC ptr vars -{V00 V11}
+       jle      SHORT G_M52602_IG16
+                       ;; size=58 bbWeight=0.64 PerfScore 16.00
+G_M52602_IG12:        ; bbWeight=16, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars -{V11}
        inc      edi
        mov      eax, dword ptr [ebp-0x10]
        cmp      edi, eax
-       jle      G_M52602_IG04
-                       ;; size=12 bbWeight=16 PerfScore 40.00
-G_M52602_IG11:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+       jle      SHORT G_M52602_IG15
+                       ;; size=8 bbWeight=16 PerfScore 40.00
+G_M52602_IG13:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      esi, dword ptr [ebp-0x18]
        mov      edx, esi
        cmp      edx, eax
+       mov      ecx, gword ptr [ebp-0x20]
+       ; gcrRegs +[ecx]
        jle      G_M52602_IG03
-                       ;; size=13 bbWeight=4 PerfScore 10.00
-G_M52602_IG12:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+                       ;; size=16 bbWeight=4 PerfScore 14.00
+G_M52602_IG14:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, epilog, nogc
        ; gcrRegs -[ecx]
+       ; GC ptr vars -{V00}
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -152,11 +164,25 @@ G_M52602_IG12:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        pop      ebp
        ret      
                        ;; size=8 bbWeight=1 PerfScore 3.50
-G_M52602_IG13:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M52602_IG15:        ; bbWeight=8, gcVars=00000800 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; GC ptr vars +{V00 V11}
+       mov      ecx, gword ptr [ebp-0x20]
+       ; gcrRegs +[ecx]
+       jmp      G_M52602_IG04
+                       ;; size=8 bbWeight=8 PerfScore 24.00
+G_M52602_IG16:        ; bbWeight=0.32, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[ecx]
+       mov      ecx, gword ptr [ebp-0x20]
+       ; gcrRegs +[ecx]
+       jmp      SHORT G_M52602_IG11
+                       ;; size=5 bbWeight=0.32 PerfScore 0.96
+G_M52602_IG17:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V00 V11}
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 218, prolog size 9, PerfScore 1408.66, instruction count 82, allocated bytes for code 218 (MethodHash=2f153285) for method Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (Tier0-FullOpts)
+; Total bytes of code 238, prolog size 9, PerfScore 1609.38, instruction count 90, allocated bytes for code 238 (MethodHash=2f153285) for method Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (Tier0-FullOpts)
 ; ============================================================
 

+20 (+9.22%) : 20919.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)

@@ -8,7 +8,7 @@
 ; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T06] (  5,  3.50)     ref  ->  edi         this class-hnd single-def <System.Xml.NameTable>
+;  V00 this         [V00,T06] (  5,  3.50)     ref  ->  [ebp-0x14]  this class-hnd single-def <System.Xml.NameTable>
 ;  V01 arg1         [V01,T04] (  7,  7   )     ref  ->  esi         class-hnd single-def <System.String>
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
 ;  V03 loc1         [V03,T07] (  4,  5.50)     int  ->  [ebp-0x10]  spill-single-def
@@ -25,8 +25,8 @@
 ;* V14 tmp9         [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V15 tmp10        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V16 tmp11        [V16,T03] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V17 tmp12        [V17,T00] (  6, 52   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.String>
-;  V18 tmp13        [V18,T05] (  2,  8   )   byref  ->  ebx         "impAppendStmt"
+;  V17 tmp12        [V17,T00] (  6, 52   )     ref  ->  edx         class-hnd exact "Inlining Arg" <System.String>
+;  V18 tmp13        [V18,T05] (  2,  8   )   byref  ->  edi         "impAppendStmt"
 ;* V19 tmp14        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V20 tmp15        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -44,9 +44,9 @@
 ;* V33 tmp28        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x4)" P-INDEP
 ;* V34 tmp29        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V35 tmp30        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V36 tmp31        [V36,T08] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
-;  V37 tmp32        [V37,T10] (  3,  3   )     int  ->  edx         "index expr"
-;  V38 cse0         [V38,T02] (  4, 18.50)     int  ->  [ebp-0x14]  spill-single-def "CSE - aggressive"
+;  V36 tmp31        [V36,T08] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V37 tmp32        [V37,T10] (  3,  3   )     int  ->  ecx         "index expr"
+;  V38 cse0         [V38,T02] (  4, 18.50)     int  ->  ebx         "CSE - aggressive"
 ;  V39 cse1         [V39,T09] (  3,  3   )   byref  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
 ;* V40 rat0         [V40    ] (  0,  0   )     int  ->  zero-ref    "field V13.lo (fldOffset=0x0)" P-INDEP
 ;* V41 rat1         [V41    ] (  0,  0   )     int  ->  zero-ref    "field V13.hi (fldOffset=0x4)" P-INDEP
@@ -67,12 +67,11 @@ G_M51747_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=13 bbWeight=1 PerfScore 5.00
 G_M51747_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        test     esi, esi
-       je       G_M51747_IG16
+       je       G_M51747_IG19
        mov      ebx, dword ptr [esi+0x04]
-       mov      dword ptr [ebp-0x14], ebx
        test     ebx, ebx
        jne      SHORT G_M51747_IG05
-                       ;; size=18 bbWeight=1 PerfScore 5.50
+                       ;; size=15 bbWeight=1 PerfScore 4.50
 G_M51747_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi edi]
        mov      eax, 0xD1FFAB1E
@@ -101,73 +100,80 @@ G_M51747_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
        call     [<unknown method>]
        ; byrRegs -[eax ecx]
        mov      dword ptr [ebp-0x10], eax
-       mov      ecx, gword ptr [edi+0x04]
-       ; gcrRegs +[ecx]
-       mov      edx, eax
-       and      edx, dword ptr [edi+0x0C]
-       cmp      edx, dword ptr [ecx+0x04]
-       jae      SHORT G_M51747_IG15
-       mov      edx, gword ptr [ecx+4*edx+0x08]
+       mov      edx, gword ptr [edi+0x04]
        ; gcrRegs +[edx]
-       test     edx, edx
-       je       SHORT G_M51747_IG11
-                       ;; size=52 bbWeight=0.50 PerfScore 10.38
-G_M51747_IG06:        ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[ecx]
-       cmp      dword ptr [edx+0x0C], eax
-       jne      SHORT G_M51747_IG10
-                       ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG07:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, gword ptr [edx+0x04]
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V00}
+       mov      ecx, eax
+       and      ecx, dword ptr [edi+0x0C]
+       cmp      ecx, dword ptr [edx+0x04]
+       jae      SHORT G_M51747_IG18
+       mov      ecx, gword ptr [edx+4*ecx+0x08]
        ; gcrRegs +[ecx]
-       cmp      byte  ptr [ecx], cl
-       cmp      ecx, esi
-       je       SHORT G_M51747_IG13
-                       ;; size=9 bbWeight=2 PerfScore 12.50
-G_M51747_IG08:        ; bbWeight=16, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       cmp      dword ptr [ecx+0x04], ebx
+       test     ecx, ecx
+       mov      edi, gword ptr [ebp-0x14]
+       je       SHORT G_M51747_IG15
+                       ;; size=58 bbWeight=0.50 PerfScore 11.38
+G_M51747_IG06:        ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[edx]
+       ; GC ptr vars -{V00}
+       cmp      dword ptr [ecx+0x0C], eax
+       jne      SHORT G_M51747_IG14
+                       ;; size=5 bbWeight=4 PerfScore 16.00
+G_M51747_IG07:        ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V04}
+       mov      edx, gword ptr [ecx+0x04]
+       ; gcrRegs +[edx]
+       cmp      byte  ptr [edx], dl
+       cmp      edx, esi
+       je       SHORT G_M51747_IG16
+                       ;; size=12 bbWeight=2 PerfScore 14.50
+G_M51747_IG08:        ; bbWeight=16, gcVars=00000202 {V04 V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       cmp      dword ptr [edx+0x04], ebx
        jne      SHORT G_M51747_IG10
                        ;; size=5 bbWeight=16 PerfScore 64.00
-G_M51747_IG09:        ; bbWeight=2, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp-0x18], edx
-       ; GC ptr vars +{V04}
-       lea      ebx, bword ptr [ecx+0x08]
-       ; byrRegs +[ebx]
-       mov      ecx, dword ptr [ecx+0x04]
-       ; gcrRegs -[ecx]
-       add      ecx, ecx
-       push     ecx
-       mov      edx, bword ptr [ebp-0x1C]
+G_M51747_IG09:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V00}
+       lea      edi, bword ptr [edx+0x08]
+       ; gcrRegs -[edi]
+       ; byrRegs +[edi]
+       mov      edx, dword ptr [edx+0x04]
        ; gcrRegs -[edx]
+       add      edx, edx
+       push     edx
+       mov      edx, bword ptr [ebp-0x1C]
        ; byrRegs +[edx]
-       mov      ecx, ebx
+       mov      ecx, edi
        ; byrRegs +[ecx]
        call     [<unknown method>]
-       ; byrRegs -[ecx edx ebx]
+       ; byrRegs -[ecx edx edi]
        test     eax, eax
-       mov      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x18]
-       ; gcrRegs +[edx]
-       mov      ebx, dword ptr [ebp-0x14]
+       mov      edi, gword ptr [ebp-0x14]
+       ; gcrRegs +[edi]
+       jne      SHORT G_M51747_IG16
+                       ;; size=30 bbWeight=2 PerfScore 22.50
+G_M51747_IG10:        ; bbWeight=4, gcVars=00000202 {V04 V39}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars -{V00}
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
+       mov      ecx, gword ptr [ecx+0x08]
+       test     ecx, ecx
        jne      SHORT G_M51747_IG13
-                       ;; size=36 bbWeight=2 PerfScore 26.50
-G_M51747_IG10:        ; bbWeight=4, gcVars=00000200 {V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V04}
-       mov      edx, gword ptr [edx+0x08]
-       test     edx, edx
-       jne      SHORT G_M51747_IG06
-                       ;; size=7 bbWeight=4 PerfScore 13.00
+                       ;; size=10 bbWeight=4 PerfScore 17.00
 G_M51747_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[edx]
-       ; GC ptr vars -{V39}
-       push     eax
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V04 V39}
+       push     dword ptr [ebp-0x10]
        mov      ecx, edi
        ; gcrRegs +[ecx]
        mov      edx, esi
        ; gcrRegs +[edx]
        call     [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
        ; gcrRegs -[ecx edx esi edi] +[eax]
-                       ;; size=11 bbWeight=0.50 PerfScore 2.25
+                       ;; size=13 bbWeight=0.50 PerfScore 2.25
 G_M51747_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -176,12 +182,31 @@ G_M51747_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax] +[edx]
-       mov      eax, gword ptr [edx+0x04]
+G_M51747_IG13:        ; bbWeight=2, gcVars=00000200 {V39}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax] +[ecx esi edi]
+       ; GC ptr vars +{V09 V39}
+       mov      eax, dword ptr [ebp-0x10]
+       jmp      SHORT G_M51747_IG06
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG14:        ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V04}
+       jmp      SHORT G_M51747_IG10
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG15:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V04 V09 V39}
+       jmp      SHORT G_M51747_IG11
+                       ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M51747_IG16:        ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[esi edi]
+       ; GC ptr vars +{V01 V04}
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
+       mov      eax, gword ptr [ecx+0x04]
        ; gcrRegs +[eax]
-                       ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG17:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -189,11 +214,12 @@ G_M51747_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG15:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax edx]
+G_M51747_IG18:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax ecx]
+       ; GC ptr vars -{V01 V04}
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51747_IG16:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51747_IG19:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, 5
        mov      edx, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
@@ -205,6 +231,6 @@ G_M51747_IG16:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 217, prolog size 13, PerfScore 161.50, instruction count 86, allocated bytes for code 217 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
+; Total bytes of code 237, prolog size 13, PerfScore 176.50, instruction count 93, allocated bytes for code 237 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
 ; ============================================================
 

coreclr_tests.run.windows.x86.checked.mch

-23 (-16.91%) : 194501.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)

@@ -11,14 +11,13 @@
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
 ;  V02 arg2         [V02,T01] (  5,  3   )     ref  ->  edi         class-hnd single-def <System.Action`1[ubyte]>
-;  V03 arg3         [V03,T03] (  5,  2.25)     ref  ->  ebx         class-hnd single-def <System.Object>
-;* V04 tmp0         [V04,T08] (  0,  0   )     int  ->  zero-ref   
+;  V03 arg3         [V03,T03] (  4,  2   )     ref  ->  ebx         class-hnd single-def <System.Object>
+;* V04 tmp0         [V04,T07] (  0,  0   )     int  ->  zero-ref   
 ;  V05 tmp1         [V05,T02] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V06 tmp2         [V06,T06] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V07 tmp3         [V07,T09] (  0,  0   )     int  ->  zero-ref   
-;  V08 tmp4         [V08,T07] (  2,  1   )   ubyte  ->  ecx         single-def "Inline stloc first use temp"
+;* V06 tmp2         [V06,T05] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V07 tmp3         [V07,T08] (  0,  0   )     int  ->  zero-ref   
+;  V08 tmp4         [V08,T06] (  2,  1   )   ubyte  ->  edx         single-def "Inline stloc first use temp"
 ;  V09 tmp5         [V09,T04] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V10 cse0         [V10,T05] (  3,  1.50)     int  ->  edx         "CSE - moderate"
 ;
 ; Lcl frame size = 0
 
@@ -37,67 +36,57 @@ G_M19162_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=14 bbWeight=1 PerfScore 6.50
 G_M19162_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     edi, edi
-       je       SHORT G_M19162_IG07
+       je       SHORT G_M19162_IG04
                        ;; size=4 bbWeight=1 PerfScore 1.25
 G_M19162_IG03:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        cmp      dword ptr [edi], 0xD1FFAB1E
-       jne      SHORT G_M19162_IG07
+       jne      SHORT G_M19162_IG04
        test     ebx, ebx
-       je       SHORT G_M19162_IG07
-       mov      edx, dword ptr [ebx]
-       cmp      edx, 0xD1FFAB1E
-       jne      SHORT G_M19162_IG07
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M19162_IG05
-                       ;; size=30 bbWeight=0.50 PerfScore 4.88
-G_M19162_IG04:        ; bbWeight=0.25, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
+       je       SHORT G_M19162_IG04
+       cmp      dword ptr [ebx], 0xD1FFAB1E
+       je       SHORT G_M19162_IG06
+                       ;; size=20 bbWeight=0.50 PerfScore 4.62
+G_M19162_IG04:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       movzx    edx, byte  ptr [esi+0x08]
+       mov      byte  ptr [esi+0x08], 0
+       test     edx, edx
+       je       SHORT G_M19162_IG08
+                       ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M19162_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      8
+                       ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M19162_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[esi]
-       mov      edx, ebx
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; <unknown class>
-       call     [CORINFO_HELP_UNBOX]
-       ; gcrRegs -[edx]
-                       ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M19162_IG05:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref
        movzx    edx, byte  ptr [ebx+0x04]
        mov      ecx, gword ptr [edi+0x04]
        ; gcrRegs +[ecx]
        call     [edi+0x0C]<unknown method>
        ; gcrRegs -[ecx ebx edi]
                        ;; size=10 bbWeight=0.50 PerfScore 3.50
-G_M19162_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+G_M19162_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      8
                        ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M19162_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M19162_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ebx esi edi]
-       movzx    ecx, byte  ptr [esi+0x08]
-       mov      byte  ptr [esi+0x08], 0
-       test     ecx, ecx
-       je       SHORT G_M19162_IG09
-                       ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M19162_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      ebx
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      8
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M19162_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M19162_IG11
+       je       SHORT G_M19162_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M19162_IG10:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M19162_IG09:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
        ; gcrRegs -[edx] +[eax]
                        ;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M19162_IG11:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M19162_IG10:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
        mov      eax, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[eax]
@@ -110,7 +99,7 @@ G_M19162_IG11:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[eax ecx edx ebx esi edi]
                        ;; size=15 bbWeight=0.50 PerfScore 4.62
-G_M19162_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M19162_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebx
        pop      esi
        pop      edi
@@ -118,6 +107,6 @@ G_M19162_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        ret      8
                        ;; size=7 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 136, prolog size 6, PerfScore 32.69, instruction count 55, allocated bytes for code 136 (MethodHash=f3a5b525) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
+; Total bytes of code 113, prolog size 6, PerfScore 31.56, instruction count 49, allocated bytes for code 113 (MethodHash=f3a5b525) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
 ; ============================================================
 

-23 (-16.43%) : 238300.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)

@@ -10,15 +10,14 @@
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-;  V02 arg2         [V02,T05] (  2,  1.50)     ref  ->  ebx         class-hnd single-def <System.Type>
-;  V03 arg3         [V03,T02] (  5,  2.25)     ref  ->  edi         class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T04] (  2,  1.50)     ref  ->  ebx         class-hnd single-def <System.Type>
+;  V03 arg3         [V03,T02] (  4,  2   )     ref  ->  edi         class-hnd single-def <System.Object>
 ;* V04 loc0         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
 ;  V05 tmp0         [V05,T01] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V06 tmp1         [V06,T06] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V07 tmp2         [V07,T08] (  0,  0   )     int  ->  zero-ref   
-;  V08 tmp3         [V08,T07] (  2,  1   )   ubyte  ->  ecx         single-def "Inline stloc first use temp"
+;* V06 tmp1         [V06,T05] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V07 tmp2         [V07,T07] (  0,  0   )     int  ->  zero-ref   
+;  V08 tmp3         [V08,T06] (  2,  1   )   ubyte  ->  ecx         single-def "Inline stloc first use temp"
 ;  V09 tmp4         [V09,T03] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V10 cse0         [V10,T04] (  3,  1.50)     int  ->  edx         "CSE - moderate"
 ;
 ; Lcl frame size = 0
 
@@ -37,65 +36,55 @@ G_M32564_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=14 bbWeight=1 PerfScore 6.50
 G_M32564_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        cmp      ebx, 0xD1FFAB1E
-       jne      SHORT G_M32564_IG07
+       jne      SHORT G_M32564_IG04
                        ;; size=8 bbWeight=1 PerfScore 1.25
 G_M32564_IG03:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     edi, edi
-       je       SHORT G_M32564_IG07
-       mov      edx, dword ptr [edi]
-       cmp      edx, 0xD1FFAB1E
-       jne      SHORT G_M32564_IG07
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M32564_IG05
-                       ;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M32564_IG04:        ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+       je       SHORT G_M32564_IG04
+       cmp      dword ptr [edi], 0xD1FFAB1E
+       je       SHORT G_M32564_IG06
+                       ;; size=12 bbWeight=0.50 PerfScore 2.62
+G_M32564_IG04:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       movzx    ecx, byte  ptr [esi+0x08]
+       mov      byte  ptr [esi+0x08], 0
+       test     ecx, ecx
+       je       SHORT G_M32564_IG08
+                       ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M32564_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      8
+                       ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M32564_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[ebx esi]
-       mov      edx, edi
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; <unknown class>
-       call     [CORINFO_HELP_UNBOX]
-       ; gcrRegs -[edx]
-                       ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M32564_IG05:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        push     gword ptr [D1FFAB1EH]
        movzx    ecx, byte  ptr [edi+0x04]
        xor      edx, edx
        call     [<unknown method>]
        ; gcrRegs -[edi]
                        ;; size=18 bbWeight=0.50 PerfScore 3.62
-G_M32564_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      8
                        ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M32564_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M32564_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ebx esi edi]
-       movzx    ecx, byte  ptr [esi+0x08]
-       mov      byte  ptr [esi+0x08], 0
-       test     ecx, ecx
-       je       SHORT G_M32564_IG09
-                       ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M32564_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      ebx
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      8
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M32564_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M32564_IG11
+       je       SHORT G_M32564_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M32564_IG10:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M32564_IG09:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     [CORINFO_HELP_CHKCASTCLASS_SPECIAL]
        ; gcrRegs -[edx] +[eax]
                        ;; size=8 bbWeight=0.25 PerfScore 0.81
-G_M32564_IG11:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M32564_IG10:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
        mov      eax, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[eax]
@@ -108,7 +97,7 @@ G_M32564_IG11:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[eax ecx edx ebx esi edi]
                        ;; size=15 bbWeight=0.50 PerfScore 4.62
-G_M32564_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M32564_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebx
        pop      esi
        pop      edi
@@ -116,6 +105,6 @@ G_M32564_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        ret      8
                        ;; size=7 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 140, prolog size 6, PerfScore 30.81, instruction count 54, allocated bytes for code 140 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
+; Total bytes of code 117, prolog size 6, PerfScore 29.69, instruction count 48, allocated bytes for code 117 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
 ; ============================================================
 

-23 (-15.65%) : 195941.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.DateTime,System.Object) (FullOpts)

@@ -10,17 +10,16 @@
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-;  V02 arg2         [V02,T06] (  2,  1.50)     ref  ->  ebx         class-hnd single-def <System.Type>
+;  V02 arg2         [V02,T05] (  2,  1.50)     ref  ->  ebx         class-hnd single-def <System.Type>
 ;* V03 arg3         [V03    ] (  0,  0   )  struct ( 8) zero-ref    single-def <System.DateTime>
-;  V04 arg4         [V04,T02] (  5,  2.25)     ref  ->  edi         class-hnd single-def <System.Object>
+;  V04 arg4         [V04,T02] (  4,  2   )     ref  ->  edi         class-hnd single-def <System.Object>
 ;* V05 loc0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
 ;  V06 tmp0         [V06,T01] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V07 tmp1         [V07,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V08 tmp2         [V08,T09] (  0,  0   )     int  ->  zero-ref   
-;  V09 tmp3         [V09,T08] (  2,  1   )   ubyte  ->  ecx         single-def "Inline stloc first use temp"
+;* V07 tmp1         [V07,T06] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V08 tmp2         [V08,T08] (  0,  0   )     int  ->  zero-ref   
+;  V09 tmp3         [V09,T07] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
 ;  V10 tmp4         [V10,T04] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
 ;  V11 tmp5         [V11,T03] (  4,  2   )    long  ->  [ebp+0x0C]  do-not-enreg[F] single-def "field V03._dateData (fldOffset=0x0)" P-INDEP
-;  V12 cse0         [V12,T05] (  3,  1.50)     int  ->  edx         "CSE - moderate"
 ;
 ; Lcl frame size = 0
 
@@ -39,26 +38,29 @@ G_M51634_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=14 bbWeight=1 PerfScore 6.50
 G_M51634_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        cmp      ebx, 0xD1FFAB1E
-       jne      SHORT G_M51634_IG07
+       jne      SHORT G_M51634_IG04
                        ;; size=8 bbWeight=1 PerfScore 1.25
 G_M51634_IG03:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     edi, edi
-       je       SHORT G_M51634_IG07
-       mov      edx, dword ptr [edi]
-       cmp      edx, 0xD1FFAB1E
-       jne      SHORT G_M51634_IG07
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M51634_IG05
-                       ;; size=22 bbWeight=0.50 PerfScore 2.88
-G_M51634_IG04:        ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+       je       SHORT G_M51634_IG04
+       cmp      dword ptr [edi], 0xD1FFAB1E
+       je       SHORT G_M51634_IG06
+                       ;; size=12 bbWeight=0.50 PerfScore 2.62
+G_M51634_IG04:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       movzx    eax, byte  ptr [esi+0x08]
+       mov      byte  ptr [esi+0x08], 0
+       test     eax, eax
+       je       SHORT G_M51634_IG08
+                       ;; size=12 bbWeight=0.50 PerfScore 2.12
+G_M51634_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      16
+                       ;; size=7 bbWeight=0.50 PerfScore 2.00
+G_M51634_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[ebx esi]
-       mov      edx, edi
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; System.DateTime
-       call     [CORINFO_HELP_UNBOX]
-       ; gcrRegs -[edx]
-                       ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M51634_IG05:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        push     dword ptr [ebp+0x10]
        push     dword ptr [ebp+0x0C]
        add      edi, 4
@@ -69,39 +71,26 @@ G_M51634_IG05:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000
        call     [Xunit.Assert:Equal(System.DateTime,System.DateTime)]
        ; byrRegs -[edi]
                        ;; size=20 bbWeight=0.50 PerfScore 4.62
-G_M51634_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51634_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      16
                        ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M51634_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M51634_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ebx esi edi]
-       movzx    ecx, byte  ptr [esi+0x08]
-       mov      byte  ptr [esi+0x08], 0
-       test     ecx, ecx
-       je       SHORT G_M51634_IG09
-                       ;; size=12 bbWeight=0.50 PerfScore 2.12
-G_M51634_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      ebx
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      16
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M51634_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M51634_IG11
+       je       SHORT G_M51634_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M51634_IG10:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51634_IG09:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
                        ;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M51634_IG11:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M51634_IG10:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
        mov      eax, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[eax]
@@ -116,7 +105,7 @@ G_M51634_IG11:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[eax ecx edx ebx esi edi]
                        ;; size=21 bbWeight=0.50 PerfScore 5.62
-G_M51634_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M51634_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebx
        pop      esi
        pop      edi
@@ -124,6 +113,6 @@ G_M51634_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        ret      16
                        ;; size=7 bbWeight=0.50 PerfScore 2.00
 
-; Total bytes of code 147, prolog size 6, PerfScore 32.31, instruction count 58, allocated bytes for code 147 (MethodHash=81fe364d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.DateTime,System.Object) (FullOpts)
+; Total bytes of code 124, prolog size 6, PerfScore 31.19, instruction count 52, allocated bytes for code 124 (MethodHash=81fe364d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.DateTime,System.Object) (FullOpts)
 ; ============================================================
 

+10 (+14.49%) : 220020.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)

@@ -9,9 +9,9 @@
 ; 4 inlinees with PGO data; 10 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  7,  5   )   byref  ->  esi         this single-def
-;  V01 tmp0         [V01,T03] (  3,  6   )     int  ->  ecx         "Span.get_Item index"
-;  V02 tmp1         [V02,T02] (  3,  6   )   byref  ->  eax         "Span.get_Item ptrToSpan"
+;  V00 this         [V00,T01] (  9,  5   )   byref  ->  esi         this single-def
+;  V01 tmp0         [V01,T03] (  3,  6   )     int  ->  edi         "Span.get_Item index"
+;  V02 tmp1         [V02,T02] (  3,  6   )   byref  ->  ecx         "Span.get_Item ptrToSpan"
 ;  V03 tmp2         [V03,T05] (  2,  2   )   ubyte  ->  eax         "Inline return value spill temp"
 ;  V04 tmp3         [V04,T00] (  4,  8   )  ushort  ->  ecx         "Inlining Arg"
 ;* V05 tmp4         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,53 +33,60 @@
 ;* V21 tmp20        [V21    ] (  0,  0   )     int  ->  zero-ref    "field V09._length (fldOffset=0x4)" P-INDEP
 ;* V22 tmp21        [V22    ] (  0,  0   )   byref  ->  zero-ref    "field V11._reference (fldOffset=0x0)" P-INDEP
 ;* V23 tmp22        [V23    ] (  0,  0   )     int  ->  zero-ref    "field V11._length (fldOffset=0x4)" P-INDEP
-;  V24 cse0         [V24,T04] (  3,  3   )     int  ->  ecx         "CSE - moderate"
+;  V24 cse0         [V24,T04] (  5,  3   )     int  ->  edi         "CSE - moderate"
 ;
 ; Lcl frame size = 0
 
 G_M7781_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
+       push     edi
        push     esi
        mov      esi, ecx
        ; byrRegs +[esi]
-                       ;; size=6 bbWeight=1 PerfScore 2.50
+                       ;; size=7 bbWeight=1 PerfScore 3.50
 G_M7781_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
-       mov      ecx, dword ptr [esi+0x10]
-       cmp      ecx, dword ptr [esi+0x24]
-       jge      SHORT G_M7781_IG05
-       lea      eax, bword ptr [esi+0x20]
-       ; byrRegs +[eax]
-       cmp      ecx, dword ptr [eax+0x04]
-       jae      SHORT G_M7781_IG06
-       mov      eax, bword ptr [eax]
-       movzx    ecx, word  ptr [eax+2*ecx]
+       mov      edi, dword ptr [esi+0x10]
+       cmp      edi, dword ptr [esi+0x24]
+       jge      SHORT G_M7781_IG06
+                       ;; size=8 bbWeight=1 PerfScore 6.00
+G_M7781_IG03:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+       lea      ecx, bword ptr [esi+0x20]
+       ; byrRegs +[ecx]
+       cmp      edi, dword ptr [ecx+0x04]
+       jae      SHORT G_M7781_IG07
+       mov      ecx, bword ptr [ecx]
+       movzx    ecx, word  ptr [ecx+2*edi]
+       ; byrRegs -[ecx]
        cmp      ecx, 256
        jb       SHORT G_M7781_IG04
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
-       ; byrRegs -[eax]
        test     eax, eax
-       je       SHORT G_M7781_IG05
-                       ;; size=40 bbWeight=1 PerfScore 20.00
-G_M7781_IG03:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
-       inc      dword ptr [esi+0x10]
-       jmp      SHORT G_M7781_IG02
-                       ;; size=5 bbWeight=0 PerfScore 0.00
+       jne      SHORT G_M7781_IG05
+       jmp      SHORT G_M7781_IG06
+                       ;; size=34 bbWeight=1 PerfScore 16.00
 G_M7781_IG04:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
        test     byte  ptr [ecx+D1FFAB1EH], 128
-       jne      SHORT G_M7781_IG03
+       je       SHORT G_M7781_IG06
                        ;; size=9 bbWeight=1 PerfScore 4.00
-G_M7781_IG05:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M7781_IG05:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+       inc      dword ptr [esi+0x10]
+       mov      edi, dword ptr [esi+0x10]
+       cmp      edi, dword ptr [esi+0x24]
+       jl       SHORT G_M7781_IG03
+                       ;; size=11 bbWeight=0 PerfScore 0.00
+G_M7781_IG06:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
        ; byrRegs -[esi]
        pop      esi
+       pop      edi
        pop      ebp
        ret      
-                       ;; size=3 bbWeight=1 PerfScore 2.00
-G_M7781_IG06:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+                       ;; size=4 bbWeight=1 PerfScore 2.50
+G_M7781_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 69, prolog size 6, PerfScore 28.50, instruction count 26, allocated bytes for code 69 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
+; Total bytes of code 79, prolog size 7, PerfScore 32.00, instruction count 31, allocated bytes for code 79 (MethodHash=3805e19a) for method System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
 ; ============================================================
 

+30 (+24.00%) : 387140.dasm - testout1:SubFunclet221():int (FullOpts)

@@ -10,75 +10,74 @@
 ;
 ;* V00 loc0         [V00    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V01 loc1         [V01    ] (  0,  0   )     int  ->  zero-ref    single-def
-;  V02 loc2         [V02,T02] (  3,  3   )     ref  ->  esi         class-hnd exact single-def <testout1>
+;  V02 loc2         [V02,T02] (  4,  4   )     ref  ->  esi         class-hnd exact single-def <testout1>
 ;  V03 loc3         [V03,T00] (  6,  6   )     ref  ->  eax         class-hnd exact single-def <<unknown class>>
 ;* V04 tmp0         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <testout1>
 ;  V05 tmp1         [V05,T01] (  3,  6   )     ref  ->  eax         class-hnd exact single-def "dup spill" <<unknown class>>
-;* V06 tmp2         [V06    ] (  0,  0   )     int  ->  zero-ref    single-def
+;* V06 tmp2         [V06    ] (  0,  0   )     int  ->  zero-ref   
 ;* V07 tmp3         [V07    ] (  0,  0   )     int  ->  zero-ref   
 ;* V08 tmp4         [V08    ] (  0,  0   )     int  ->  zero-ref   
-;* V09 tmp5         [V09,T08] (  0,  0   )     int  ->  zero-ref    single-def
+;* V09 tmp5         [V09    ] (  0,  0   )     int  ->  zero-ref   
 ;* V10 tmp6         [V10    ] (  0,  0   )     int  ->  zero-ref   
 ;* V11 tmp7         [V11    ] (  0,  0   )     int  ->  zero-ref   
-;* V12 tmp8         [V12,T09] (  0,  0   )     int  ->  zero-ref    single-def
+;* V12 tmp8         [V12    ] (  0,  0   )     int  ->  zero-ref   
 ;* V13 tmp9         [V13    ] (  0,  0   )     int  ->  zero-ref   
 ;* V14 tmp10        [V14    ] (  0,  0   )     int  ->  zero-ref   
-;* V15 tmp11        [V15,T10] (  0,  0   )     int  ->  zero-ref    single-def
+;* V15 tmp11        [V15    ] (  0,  0   )     int  ->  zero-ref   
 ;* V16 tmp12        [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp13        [V17    ] (  0,  0   )     int  ->  zero-ref   
-;* V18 tmp14        [V18,T11] (  0,  0   )     int  ->  zero-ref    single-def
+;  V18 tmp14        [V18,T06] (  2,  2   )     int  ->  esi         single-def
 ;* V19 tmp15        [V19    ] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp16        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp17        [V21    ] (  0,  0   )     int  ->  zero-ref   
 ;* V22 tmp18        [V22    ] (  0,  0   )     int  ->  zero-ref   
 ;* V23 tmp19        [V23    ] (  0,  0   )     int  ->  zero-ref   
-;* V24 tmp20        [V24,T12] (  0,  0   )     int  ->  zero-ref    single-def
+;* V24 tmp20        [V24    ] (  0,  0   )     int  ->  zero-ref   
 ;* V25 tmp21        [V25    ] (  0,  0   )     int  ->  zero-ref   
 ;* V26 tmp22        [V26    ] (  0,  0   )     int  ->  zero-ref   
-;* V27 tmp23        [V27,T21] (  0,  0   )     int  ->  zero-ref    single-def
+;* V27 tmp23        [V27    ] (  0,  0   )     int  ->  zero-ref   
 ;* V28 tmp24        [V28    ] (  0,  0   )     int  ->  zero-ref   
 ;* V29 tmp25        [V29    ] (  0,  0   )     int  ->  zero-ref   
-;* V30 tmp26        [V30,T13] (  0,  0   )     int  ->  zero-ref    single-def
+;* V30 tmp26        [V30    ] (  0,  0   )     int  ->  zero-ref   
 ;* V31 tmp27        [V31    ] (  0,  0   )     int  ->  zero-ref   
 ;* V32 tmp28        [V32    ] (  0,  0   )     int  ->  zero-ref   
-;* V33 tmp29        [V33,T14] (  0,  0   )     int  ->  zero-ref    single-def
+;* V33 tmp29        [V33    ] (  0,  0   )     int  ->  zero-ref   
 ;* V34 tmp30        [V34    ] (  0,  0   )     int  ->  zero-ref   
 ;* V35 tmp31        [V35    ] (  0,  0   )     int  ->  zero-ref   
-;* V36 tmp32        [V36,T15] (  0,  0   )     int  ->  zero-ref    single-def
+;* V36 tmp32        [V36    ] (  0,  0   )     int  ->  zero-ref   
 ;* V37 tmp33        [V37    ] (  0,  0   )     int  ->  zero-ref   
 ;* V38 tmp34        [V38    ] (  0,  0   )     int  ->  zero-ref   
-;* V39 tmp35        [V39,T22] (  0,  0   )     int  ->  zero-ref    single-def
+;  V39 tmp35        [V39,T07] (  2,  2   )     int  ->  esi         single-def
 ;* V40 tmp36        [V40    ] (  0,  0   )     int  ->  zero-ref   
 ;* V41 tmp37        [V41    ] (  0,  0   )     int  ->  zero-ref   
-;* V42 tmp38        [V42,T16] (  0,  0   )     int  ->  zero-ref    single-def
+;* V42 tmp38        [V42    ] (  0,  0   )     int  ->  zero-ref   
 ;* V43 tmp39        [V43    ] (  0,  0   )     int  ->  zero-ref   
 ;* V44 tmp40        [V44    ] (  0,  0   )     int  ->  zero-ref   
-;* V45 tmp41        [V45,T17] (  0,  0   )     int  ->  zero-ref    single-def
+;* V45 tmp41        [V45    ] (  0,  0   )     int  ->  zero-ref   
 ;* V46 tmp42        [V46    ] (  0,  0   )     int  ->  zero-ref   
 ;* V47 tmp43        [V47    ] (  0,  0   )     int  ->  zero-ref   
 ;* V48 tmp44        [V48    ] (  0,  0   )     int  ->  zero-ref   
 ;* V49 tmp45        [V49    ] (  0,  0   )     int  ->  zero-ref   
 ;* V50 tmp46        [V50    ] (  0,  0   )     int  ->  zero-ref   
-;* V51 tmp47        [V51,T23] (  0,  0   )     int  ->  zero-ref    single-def
+;* V51 tmp47        [V51    ] (  0,  0   )     int  ->  zero-ref   
 ;* V52 tmp48        [V52    ] (  0,  0   )     int  ->  zero-ref   
 ;* V53 tmp49        [V53    ] (  0,  0   )     int  ->  zero-ref   
-;* V54 tmp50        [V54,T18] (  0,  0   )     int  ->  zero-ref    single-def
+;  V54 tmp50        [V54,T08] (  2,  2   )     int  ->  esi         single-def
 ;* V55 tmp51        [V55    ] (  0,  0   )     int  ->  zero-ref   
 ;* V56 tmp52        [V56    ] (  0,  0   )     int  ->  zero-ref   
-;* V57 tmp53        [V57,T19] (  0,  0   )     int  ->  zero-ref    single-def
+;* V57 tmp53        [V57    ] (  0,  0   )     int  ->  zero-ref   
 ;* V58 tmp54        [V58    ] (  0,  0   )     int  ->  zero-ref   
 ;* V59 tmp55        [V59    ] (  0,  0   )     int  ->  zero-ref   
-;* V60 tmp56        [V60,T24] (  0,  0   )     int  ->  zero-ref    single-def
+;* V60 tmp56        [V60    ] (  0,  0   )     int  ->  zero-ref   
 ;* V61 tmp57        [V61    ] (  0,  0   )     int  ->  zero-ref   
 ;* V62 tmp58        [V62    ] (  0,  0   )     int  ->  zero-ref   
-;  V63 tmp59        [V63,T20] (  2,  2   )     int  ->  edx         single-def
+;* V63 tmp59        [V63    ] (  0,  0   )     int  ->  zero-ref   
 ;* V64 tmp60        [V64    ] (  0,  0   )     int  ->  zero-ref   
 ;* V65 tmp61        [V65    ] (  0,  0   )     int  ->  zero-ref   
-;* V66 cse0         [V66,T06] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;* V67 cse1         [V67,T03] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V68 cse2         [V68,T04] (  2,  2   )     int  ->  edx         "CSE - aggressive"
-;* V69 cse3         [V69,T05] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V70 cse4         [V70,T07] (  2,  2   )     int  ->  eax         "CSE - aggressive"
+;  V66 cse0         [V66,T09] (  2,  2   )     int  ->  esi         "CSE - aggressive"
+;  V67 cse1         [V67,T03] (  4,  4   )     int  ->  edx         "CSE - aggressive"
+;  V68 cse2         [V68,T04] (  4,  4   )     int  ->  ecx         "CSE - aggressive"
+;  V69 cse3         [V69,T05] (  4,  4   )     int  ->  eax         "CSE - aggressive"
 ;
 ; Lcl frame size = 0
 
@@ -109,17 +108,27 @@ G_M59959_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      byte  ptr [D1FFAB1EH], 1      ; data for <unknown class>:<unknown field>
        mov      dword ptr [esi+0x04], -13
        mov      word  ptr [esi+0x08], 256
-       mov      edx, dword ptr [eax+0x0C]
+       mov      edx, dword ptr [esi+0x04]
+       mov      ecx, dword ptr [eax+0x0C]
+       lea      esi, [edx+ecx]
+       ; gcrRegs -[esi]
        mov      eax, dword ptr [eax+0x08]
        ; gcrRegs -[eax]
-       add      eax, edx
-                       ;; size=118 bbWeight=1 PerfScore 18.75
+       lea      esi, [esi+eax+0x11]
+       add      esi, dword ptr [D1FFAB1EH]      ; static handle
+       add      esi, edx
+       lea      esi, [esi+ecx+0x0A]
+       add      esi, eax
+       add      edx, esi
+       add      edx, ecx
+       lea      eax, [edx+eax+0x11]
+                       ;; size=148 bbWeight=1 PerfScore 28.00
 G_M59959_IG03:        ; bbWeight=1, epilog, nogc, extend
        pop      esi
        pop      ebp
        ret      
                        ;; size=3 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 125, prolog size 4, PerfScore 23.00, instruction count 28, allocated bytes for code 125 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 155, prolog size 4, PerfScore 32.25, instruction count 37, allocated bytes for code 155 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
 ; ============================================================
 

+32 (+25.60%) : 386723.dasm - testout1:SubFunclet221():int (FullOpts)

@@ -8,81 +8,80 @@
 ; 0 inlinees with PGO data; 25 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;* V00 loc0         [V00    ] (  0,  0   )     int  ->  zero-ref    single-def
+;  V00 loc0         [V00,T00] (  8,  8   )     int  ->  esi        
 ;* V01 loc1         [V01    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V02 loc2         [V02    ] (  0,  0   )     int  ->  zero-ref    single-def
 ;* V03 loc3         [V03    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V04 loc4         [V04    ] (  0,  0   )   ubyte  ->  zero-ref   
-;  V05 loc5         [V05,T01] (  3,  3   )     ref  ->  esi         class-hnd exact single-def <testout1>
+;  V05 loc5         [V05,T02] (  4,  4   )     ref  ->  esi         class-hnd exact single-def <testout1>
 ;* V06 loc6         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <<unknown class>>
-;  V07 loc7         [V07,T05] (  3,  3   )     ref  ->  eax         class-hnd exact single-def <<unknown class>>
-;  V08 loc8         [V08,T00] (  6,  6   )     ref  ->  eax         class-hnd exact single-def <<unknown class>>
+;  V07 loc7         [V07,T06] (  3,  3   )     ref  ->  eax         class-hnd exact single-def <<unknown class>>
+;  V08 loc8         [V08,T01] (  6,  6   )     ref  ->  eax         class-hnd exact single-def <<unknown class>>
 ;* V09 tmp0         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <testout1>
-;* V10 tmp1         [V10    ] (  0,  0   )     int  ->  zero-ref    single-def
+;* V10 tmp1         [V10    ] (  0,  0   )     int  ->  zero-ref   
 ;* V11 tmp2         [V11    ] (  0,  0   )     int  ->  zero-ref   
 ;* V12 tmp3         [V12    ] (  0,  0   )     int  ->  zero-ref   
-;* V13 tmp4         [V13,T08] (  0,  0   )     int  ->  zero-ref    single-def
+;* V13 tmp4         [V13    ] (  0,  0   )     int  ->  zero-ref   
 ;* V14 tmp5         [V14    ] (  0,  0   )     int  ->  zero-ref   
 ;* V15 tmp6         [V15    ] (  0,  0   )     int  ->  zero-ref   
-;* V16 tmp7         [V16,T09] (  0,  0   )     int  ->  zero-ref    single-def
+;* V16 tmp7         [V16    ] (  0,  0   )     int  ->  zero-ref   
 ;* V17 tmp8         [V17    ] (  0,  0   )     int  ->  zero-ref   
 ;* V18 tmp9         [V18    ] (  0,  0   )     int  ->  zero-ref   
-;* V19 tmp10        [V19,T10] (  0,  0   )     int  ->  zero-ref    single-def
+;* V19 tmp10        [V19    ] (  0,  0   )     int  ->  zero-ref   
 ;* V20 tmp11        [V20    ] (  0,  0   )     int  ->  zero-ref   
 ;* V21 tmp12        [V21    ] (  0,  0   )     int  ->  zero-ref   
-;* V22 tmp13        [V22,T11] (  0,  0   )     int  ->  zero-ref    single-def
+;* V22 tmp13        [V22    ] (  0,  0   )     int  ->  zero-ref   
 ;* V23 tmp14        [V23    ] (  0,  0   )     int  ->  zero-ref   
 ;* V24 tmp15        [V24    ] (  0,  0   )     int  ->  zero-ref   
 ;* V25 tmp16        [V25    ] (  0,  0   )     int  ->  zero-ref   
 ;* V26 tmp17        [V26    ] (  0,  0   )     int  ->  zero-ref   
 ;* V27 tmp18        [V27    ] (  0,  0   )     int  ->  zero-ref   
-;* V28 tmp19        [V28,T12] (  0,  0   )     int  ->  zero-ref    single-def
+;* V28 tmp19        [V28    ] (  0,  0   )     int  ->  zero-ref   
 ;* V29 tmp20        [V29    ] (  0,  0   )     int  ->  zero-ref   
 ;* V30 tmp21        [V30    ] (  0,  0   )     int  ->  zero-ref   
-;* V31 tmp22        [V31,T21] (  0,  0   )     int  ->  zero-ref    single-def
+;* V31 tmp22        [V31    ] (  0,  0   )     int  ->  zero-ref   
 ;* V32 tmp23        [V32    ] (  0,  0   )     int  ->  zero-ref   
 ;* V33 tmp24        [V33    ] (  0,  0   )     int  ->  zero-ref   
-;* V34 tmp25        [V34,T13] (  0,  0   )     int  ->  zero-ref    single-def
+;* V34 tmp25        [V34    ] (  0,  0   )     int  ->  zero-ref   
 ;* V35 tmp26        [V35    ] (  0,  0   )     int  ->  zero-ref   
 ;* V36 tmp27        [V36    ] (  0,  0   )     int  ->  zero-ref   
-;* V37 tmp28        [V37,T14] (  0,  0   )     int  ->  zero-ref    single-def
+;* V37 tmp28        [V37    ] (  0,  0   )     int  ->  zero-ref   
 ;* V38 tmp29        [V38    ] (  0,  0   )     int  ->  zero-ref   
 ;* V39 tmp30        [V39    ] (  0,  0   )     int  ->  zero-ref   
-;* V40 tmp31        [V40,T15] (  0,  0   )     int  ->  zero-ref    single-def
+;* V40 tmp31        [V40    ] (  0,  0   )     int  ->  zero-ref   
 ;* V41 tmp32        [V41    ] (  0,  0   )     int  ->  zero-ref   
 ;* V42 tmp33        [V42    ] (  0,  0   )     int  ->  zero-ref   
-;* V43 tmp34        [V43,T22] (  0,  0   )     int  ->  zero-ref    single-def
+;* V43 tmp34        [V43    ] (  0,  0   )     int  ->  zero-ref   
 ;* V44 tmp35        [V44    ] (  0,  0   )     int  ->  zero-ref   
 ;* V45 tmp36        [V45    ] (  0,  0   )     int  ->  zero-ref   
-;* V46 tmp37        [V46,T16] (  0,  0   )     int  ->  zero-ref    single-def
+;* V46 tmp37        [V46    ] (  0,  0   )     int  ->  zero-ref   
 ;* V47 tmp38        [V47    ] (  0,  0   )     int  ->  zero-ref   
 ;* V48 tmp39        [V48    ] (  0,  0   )     int  ->  zero-ref   
-;* V49 tmp40        [V49,T17] (  0,  0   )     int  ->  zero-ref    single-def
+;* V49 tmp40        [V49    ] (  0,  0   )     int  ->  zero-ref   
 ;* V50 tmp41        [V50    ] (  0,  0   )     int  ->  zero-ref   
 ;* V51 tmp42        [V51    ] (  0,  0   )     int  ->  zero-ref   
 ;* V52 tmp43        [V52    ] (  0,  0   )     int  ->  zero-ref   
 ;* V53 tmp44        [V53    ] (  0,  0   )     int  ->  zero-ref   
 ;* V54 tmp45        [V54    ] (  0,  0   )     int  ->  zero-ref   
-;* V55 tmp46        [V55,T23] (  0,  0   )     int  ->  zero-ref    single-def
+;* V55 tmp46        [V55    ] (  0,  0   )     int  ->  zero-ref   
 ;* V56 tmp47        [V56    ] (  0,  0   )     int  ->  zero-ref   
 ;* V57 tmp48        [V57    ] (  0,  0   )     int  ->  zero-ref   
-;* V58 tmp49        [V58,T18] (  0,  0   )     int  ->  zero-ref    single-def
+;* V58 tmp49        [V58    ] (  0,  0   )     int  ->  zero-ref   
 ;* V59 tmp50        [V59    ] (  0,  0   )     int  ->  zero-ref   
 ;* V60 tmp51        [V60    ] (  0,  0   )     int  ->  zero-ref   
-;* V61 tmp52        [V61,T19] (  0,  0   )     int  ->  zero-ref    single-def
+;* V61 tmp52        [V61    ] (  0,  0   )     int  ->  zero-ref   
 ;* V62 tmp53        [V62    ] (  0,  0   )     int  ->  zero-ref   
 ;* V63 tmp54        [V63    ] (  0,  0   )     int  ->  zero-ref   
-;* V64 tmp55        [V64,T24] (  0,  0   )     int  ->  zero-ref    single-def
+;* V64 tmp55        [V64    ] (  0,  0   )     int  ->  zero-ref   
 ;* V65 tmp56        [V65    ] (  0,  0   )     int  ->  zero-ref   
 ;* V66 tmp57        [V66    ] (  0,  0   )     int  ->  zero-ref   
-;  V67 tmp58        [V67,T20] (  2,  2   )     int  ->  edx         single-def
+;* V67 tmp58        [V67    ] (  0,  0   )     int  ->  zero-ref   
 ;* V68 tmp59        [V68    ] (  0,  0   )     int  ->  zero-ref   
 ;* V69 tmp60        [V69    ] (  0,  0   )     int  ->  zero-ref   
-;* V70 cse0         [V70,T06] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;* V71 cse1         [V71,T02] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V72 cse2         [V72,T03] (  2,  2   )     int  ->  edx         "CSE - aggressive"
-;* V73 cse3         [V73,T04] (  0,  0   )     int  ->  zero-ref    "CSE - aggressive"
-;  V74 cse4         [V74,T07] (  2,  2   )     int  ->  eax         "CSE - aggressive"
+;  V70 cse0         [V70,T07] (  2,  2   )     int  ->  esi         "CSE - aggressive"
+;  V71 cse1         [V71,T03] (  4,  4   )     int  ->  edx         "CSE - aggressive"
+;  V72 cse2         [V72,T04] (  4,  4   )     int  ->  ecx         "CSE - aggressive"
+;  V73 cse3         [V73,T05] (  4,  4   )     int  ->  eax         "CSE - aggressive"
 ;
 ; Lcl frame size = 0
 
@@ -113,17 +112,28 @@ G_M59959_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      byte  ptr [D1FFAB1EH], 1      ; data for <unknown class>:<unknown field>
        mov      dword ptr [esi+0x04], -13
        mov      word  ptr [esi+0x08], 256
-       mov      edx, dword ptr [eax+0x0C]
+       mov      edx, dword ptr [esi+0x04]
+       mov      ecx, dword ptr [eax+0x0C]
+       lea      esi, [edx+ecx]
+       ; gcrRegs -[esi]
        mov      eax, dword ptr [eax+0x08]
        ; gcrRegs -[eax]
-       add      eax, edx
-                       ;; size=118 bbWeight=1 PerfScore 18.75
+       lea      esi, [esi+eax+0x11]
+       add      esi, dword ptr [D1FFAB1EH]      ; static handle
+       add      esi, edx
+       lea      esi, [esi+ecx+0x0A]
+       add      esi, eax
+       add      edx, esi
+       add      edx, ecx
+       lea      esi, [edx+eax+0x11]
+       mov      eax, esi
+                       ;; size=150 bbWeight=1 PerfScore 28.25
 G_M59959_IG03:        ; bbWeight=1, epilog, nogc, extend
        pop      esi
        pop      ebp
        ret      
                        ;; size=3 bbWeight=1 PerfScore 2.00
 
-; Total bytes of code 125, prolog size 4, PerfScore 23.00, instruction count 28, allocated bytes for code 125 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
+; Total bytes of code 157, prolog size 4, PerfScore 32.50, instruction count 38, allocated bytes for code 157 (MethodHash=af8015c8) for method testout1:Sub_Funclet_221():int (FullOpts)
 ; ============================================================
 

libraries.crossgen2.windows.x86.checked.mch

-43 (-12.11%) : 22428.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (FullOpts)

@@ -65,25 +65,21 @@ G_M47438_IG02:        ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=00000002 {e
        xor      ecx, ecx
        mov      edx, dword ptr [ebp-0x14]
        test     edx, edx
-       mov      esi, gword ptr [ebp-0x18]
-       ; gcrRegs +[esi]
-       jle      SHORT G_M47438_IG09
+       jle      G_M47438_IG08
        mov      edi, gword ptr [ebp-0x20]
        ; gcrRegs +[edi]
        test     edi, edi
-       je       SHORT G_M47438_IG08
+       je       SHORT G_M47438_IG05
        cmp      dword ptr [edi+0x04], edx
-       jl       SHORT G_M47438_IG07
+       jl       SHORT G_M47438_IG05
        cmp      dword ptr [eax+0x04], edx
-       mov      gword ptr [ebp-0x18], esi
-       jl       SHORT G_M47438_IG06
+       jl       SHORT G_M47438_IG04
        mov      esi, dword ptr [(reloc)]
-       ; gcrRegs -[esi]
        mov      esi, gword ptr [esi]
        ; gcrRegs +[esi]
        mov      gword ptr [ebp-0x2C], esi
        ; GC ptr vars +{V18}
-                       ;; size=69 bbWeight=1 PerfScore 32.00
+                       ;; size=67 bbWeight=1 PerfScore 30.00
 G_M47438_IG03:        ; bbWeight=3.96, gcVars=00000E80 {V00 V08 V09 V18}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[esi]
        mov      esi, gword ptr [edi+4*ecx+0x08]
@@ -117,71 +113,36 @@ G_M47438_IG03:        ; bbWeight=3.96, gcVars=00000E80 {V00 V08 V09 V18}, gcrefR
        ; gcrRegs -[ebx]
        ; byrRegs -[edx edi]
        inc      ecx
-       mov      ebx, dword ptr [ebp-0x14]
-       cmp      ebx, ecx
-       mov      edi, gword ptr [ebp-0x20]
-       ; gcrRegs +[edi]
-       jg       SHORT G_M47438_IG05
-                       ;; size=61 bbWeight=3.96 PerfScore 92.07
-G_M47438_IG04:        ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[edi]
-       ; GC ptr vars -{V08 V09 V18}
-       mov      esi, gword ptr [ebp-0x18]
-       ; gcrRegs +[esi]
-       mov      edi, dword ptr [ebp-0x10]
-       jmp      G_M47438_IG14
-                       ;; size=11 bbWeight=1 PerfScore 4.00
-G_M47438_IG05:        ; bbWeight=1.98, gcVars=00000E80 {V00 V08 V09 V18}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[esi] +[edi]
-       ; GC ptr vars +{V07 V08 V09 V10 V18}
+       cmp      dword ptr [ebp-0x14], ecx
        mov      ebx, gword ptr [ebp-0x1C]
        ; gcrRegs +[ebx]
-       jmp      SHORT G_M47438_IG03
-                       ;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M47438_IG06:        ; bbWeight=0.50, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V07 V10 V18}
+       mov      edi, gword ptr [ebp-0x20]
+       ; gcrRegs +[edi]
+       jg       SHORT G_M47438_IG03
+       jmp      SHORT G_M47438_IG08
+                       ;; size=64 bbWeight=3.96 PerfScore 106.92
+G_M47438_IG04:        ; bbWeight=0.50, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref
+       ; GC ptr vars -{V18}
        mov      edx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M47438_IG10
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M47438_IG07:        ; bbWeight=0.50, gcVars=00000280 {V08 V09}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[esi]
-       ; GC ptr vars -{V00}
-       mov      gword ptr [ebp-0x18], esi
-       ; GC ptr vars +{V00}
-       jmp      SHORT G_M47438_IG10
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M47438_IG08:        ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; GC ptr vars -{V00}
-       mov      gword ptr [ebp-0x18], esi
-       ; GC ptr vars +{V00}
-       jmp      SHORT G_M47438_IG10
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M47438_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[ebx edi]
-       ; GC ptr vars -{V00 V08 V09}
-       mov      edi, dword ptr [ebp-0x10]
-       jmp      SHORT G_M47438_IG14
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M47438_IG10:        ; bbWeight=0.04, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[esi] +[ebx edi]
-       ; GC ptr vars +{V00 V07 V08 V09 V11}
+                       ;; size=3 bbWeight=0.50 PerfScore 0.50
+G_M47438_IG05:        ; bbWeight=0.04, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
        mov      esi, dword ptr [(reloc)]
        mov      esi, gword ptr [esi]
        ; gcrRegs +[esi]
        test     edi, edi
-       je       G_M47438_IG17
+       je       G_M47438_IG11
                        ;; size=16 bbWeight=0.04 PerfScore 0.21
-G_M47438_IG11:        ; bbWeight=0.02, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
+G_M47438_IG06:        ; bbWeight=0.02, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi]
        cmp      ecx, dword ptr [edi+0x04]
-       jae      G_M47438_IG18
+       jae      G_M47438_IG12
        mov      esi, gword ptr [edi+4*ecx+0x08]
        ; gcrRegs +[esi]
                        ;; size=13 bbWeight=0.02 PerfScore 0.12
-G_M47438_IG12:        ; bbWeight=0.04, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M47438_IG07:        ; bbWeight=0.04, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[ebx edi]
        cmp      ecx, dword ptr [eax+0x04]
-       jae      G_M47438_IG18
+       jae      SHORT G_M47438_IG12
        lea      ebx, [ecx+2*ecx]
        lea      ebx, bword ptr [eax+4*ebx+0x08]
        ; byrRegs +[ebx]
@@ -198,7 +159,7 @@ G_M47438_IG12:        ; bbWeight=0.04, gcrefRegs=00000041 {eax esi}, byrefRegs=0
        mov      edx, ebx
        ; gcrRegs -[edx]
        ; byrRegs +[edx]
-       ; GC ptr vars -{V07 V11 V17}
+       ; GC ptr vars -{V17}
        call     [CORINFO_HELP_CHECKED_ASSIGN_REF_ESI]
        ; gcrRegs -[esi]
        ; byrRegs -[edx]
@@ -222,17 +183,11 @@ G_M47438_IG12:        ; bbWeight=0.04, gcrefRegs=00000041 {eax esi}, byrefRegs=0
        mov      edx, ebx
        mov      edi, gword ptr [ebp-0x20]
        ; gcrRegs +[edi]
-       jg       SHORT G_M47438_IG16
-                       ;; size=77 bbWeight=0.04 PerfScore 1.14
-G_M47438_IG13:        ; bbWeight=0.02, gcVars=00000800 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
+       jg       SHORT G_M47438_IG10
+                       ;; size=73 bbWeight=0.04 PerfScore 1.14
+G_M47438_IG08:        ; bbWeight=1, gcVars=00000800 {V00}, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[edi]
        ; GC ptr vars -{V08 V09}
-       mov      esi, gword ptr [ebp-0x18]
-       ; gcrRegs +[esi]
-       mov      edi, dword ptr [ebp-0x10]
-                       ;; size=6 bbWeight=0.02 PerfScore 0.04
-G_M47438_IG14:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
-       ; GC ptr vars -{V00}
        push     gword ptr [ebp+0x20]
        ; gcr arg push 0
        push     dword ptr [ebp+0x1C]
@@ -242,14 +197,15 @@ G_M47438_IG14:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000041 {eax
        push     dword ptr [ebp+0x0C]
        push     eax
        ; gcr arg push 6
-       mov      ecx, esi
+       mov      ecx, gword ptr [ebp-0x18]
        ; gcrRegs +[ecx]
-       mov      edx, edi
+       mov      edx, dword ptr [ebp-0x10]
+       ; GC ptr vars -{V00}
        call     [<unknown method>]
-       ; gcrRegs -[ecx esi]
+       ; gcrRegs -[ecx]
        ; gcr arg pop 2
-                       ;; size=29 bbWeight=1 PerfScore 10.50
-G_M47438_IG15:        ; bbWeight=1, epilog, nogc, extend
+                       ;; size=31 bbWeight=1 PerfScore 12.00
+G_M47438_IG09:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -257,24 +213,24 @@ G_M47438_IG15:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      28
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M47438_IG16:        ; bbWeight=0.02, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M47438_IG10:        ; bbWeight=0.02, gcVars=00000A80 {V00 V08 V09}, gcrefRegs=00000081 {eax edi}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs +[edi]
        ; GC ptr vars +{V00 V07 V08 V09 V11}
        mov      ebx, gword ptr [ebp-0x1C]
        ; gcrRegs +[ebx]
-       jmp      G_M47438_IG10
+       jmp      G_M47438_IG05
                        ;; size=8 bbWeight=0.02 PerfScore 0.06
-G_M47438_IG17:        ; bbWeight=0.02, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M47438_IG11:        ; bbWeight=0.02, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[esi]
-       jmp      G_M47438_IG12
-                       ;; size=5 bbWeight=0.02 PerfScore 0.04
-G_M47438_IG18:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       jmp      SHORT G_M47438_IG07
+                       ;; size=2 bbWeight=0.02 PerfScore 0.04
+G_M47438_IG12:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[eax ebx esi edi]
        ; GC ptr vars -{V00 V07 V08 V09 V11}
        call     [CORINFO_HELP_RNGCHKFAIL]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 355, prolog size 18, PerfScore 164.12, instruction count 117, allocated bytes for code 355 (MethodHash=8fb946b1) for method System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (FullOpts)
+; Total bytes of code 312, prolog size 18, PerfScore 162.99, instruction count 102, allocated bytes for code 312 (MethodHash=8fb946b1) for method System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (FullOpts)
 ; ============================================================
 

-39 (-10.43%) : 17556.dasm - System.Diagnostics.Contracts.Contract:AssertMustUseRewriter(int,System.String) (FullOpts)

@@ -14,7 +14,7 @@
 ;  V02 loc0         [V02,T07] (  5,  8   )     ref  ->  ebx         class-hnd exact single-def <<unknown class>>
 ;  V03 loc1         [V03,T04] (  7, 16   )     ref  ->  [ebp-0x1C]  class-hnd exact spill-single-def <System.Diagnostics.StackTrace>
 ;  V04 loc2         [V04,T12] (  6,  5.50)     ref  ->  [ebp-0x20]  class-hnd <System.Reflection.Assembly>
-;  V05 loc3         [V05,T17] (  2,  2   )     ref  ->  ebx         class-hnd exact single-def <System.String>
+;  V05 loc3         [V05,T17] (  2,  2   )     ref  ->  esi         class-hnd exact single-def <System.String>
 ;  V06 loc4         [V06,T02] (  7, 19   )     int  ->  [ebp-0x14] 
 ;* V07 loc5         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Reflection.Assembly>
 ;  V08 tmp0         [V08,T10] (  3,  6   )     ref  ->  [ebp-0x24]  class-hnd exact spill-single-def "NewObj constructor temp" <System.Diagnostics.StackTrace>
@@ -27,7 +27,7 @@
 ;* V15 tmp7         [V15    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V16 tmp8         [V16,T11] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
 ;* V17 tmp9         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Reflection.AssemblyName>
-;  V18 tmp10        [V18,T08] (  5,  8   )     ref  ->  edi         class-hnd "Inlining Arg" <System.String>
+;  V18 tmp10        [V18,T08] (  5,  8   )     ref  ->  esi         class-hnd "Inlining Arg" <System.String>
 ;* V19 tmp11        [V19,T18] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V20 tmp12        [V20,T05] (  3, 12   )     ref  ->  edi         "arr expr"
 ;  V21 tmp13        [V21,T06] (  3, 12   )     int  ->  esi         "index expr"
@@ -75,57 +75,39 @@ G_M18346_IG02:        ; bbWeight=1, gcVars=00004000 {V01}, gcrefRegs=00000000 {}
        ; GC ptr vars +{V04}
        xor      ecx, ecx
        cmp      dword ptr [eax+0x08], 0
-       mov      esi, dword ptr [ebp-0x10]
-       mov      edi, gword ptr [ebp-0x18]
-       ; gcrRegs +[edi]
-       jle      G_M18346_IG19
-                       ;; size=70 bbWeight=1 PerfScore 28.25
-G_M18346_IG03:        ; bbWeight=4, gcVars=00001010 {V03 V04}, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       jle      G_M18346_IG14
+                       ;; size=64 bbWeight=1 PerfScore 26.25
+G_M18346_IG03:        ; bbWeight=4, gcVars=00005010 {V01 V03 V04}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[edx]
-       ; GC ptr vars -{V01 V08}
+       ; GC ptr vars -{V08}
        cmp      gword ptr [eax+0x04], 0
-       je       SHORT G_M18346_IG06
+       je       SHORT G_M18346_IG05
                        ;; size=6 bbWeight=4 PerfScore 16.00
-G_M18346_IG04:        ; bbWeight=2, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG04:        ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
        cmp      ecx, dword ptr [eax+0x08]
        jge      SHORT G_M18346_IG05
        test     ecx, ecx
-       mov      gword ptr [ebp-0x18], edi
-       ; GC ptr vars +{V01}
-       jl       SHORT G_M18346_IG07
-       mov      dword ptr [ebp-0x10], esi
+       jl       SHORT G_M18346_IG05
        mov      edi, gword ptr [eax+0x04]
+       ; gcrRegs +[edi]
        mov      dword ptr [ebp-0x14], ecx
        mov      esi, ecx
        add      esi, dword ptr [eax+0x0C]
        cmp      esi, dword ptr [edi+0x04]
-       jae      G_M18346_IG24
+       jae      G_M18346_IG19
        mov      esi, gword ptr [edi+4*esi+0x08]
        ; gcrRegs +[esi]
-       jmp      SHORT G_M18346_IG08
-                       ;; size=41 bbWeight=2 PerfScore 43.00
-G_M18346_IG05:        ; bbWeight=1, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[esi]
-       ; GC ptr vars -{V01}
-       mov      gword ptr [ebp-0x18], edi
-       ; GC ptr vars +{V01}
-       jmp      SHORT G_M18346_IG07
-                       ;; size=5 bbWeight=1 PerfScore 3.00
-G_M18346_IG06:        ; bbWeight=2, gcrefRegs=00000089 {eax ebx edi}, byrefRegs=00000000 {}, byref
-       ; GC ptr vars -{V01}
-       mov      gword ptr [ebp-0x18], edi
-       ; GC ptr vars +{V01}
-                       ;; size=3 bbWeight=2 PerfScore 2.00
-G_M18346_IG07:        ; bbWeight=2, gcVars=00005010 {V01 V03 V04}, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[edi]
+       jmp      SHORT G_M18346_IG06
+                       ;; size=35 bbWeight=2 PerfScore 39.00
+G_M18346_IG05:        ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[esi edi]
        xor      edi, edi
        ; gcrRegs +[edi]
        mov      dword ptr [ebp-0x14], ecx
-       mov      dword ptr [ebp-0x10], esi
        mov      esi, edi
        ; gcrRegs +[esi]
-                       ;; size=10 bbWeight=2 PerfScore 5.00
-G_M18346_IG08:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+                       ;; size=7 bbWeight=2 PerfScore 3.00
+G_M18346_IG06:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax edi]
        mov      ecx, esi
        ; gcrRegs +[ecx]
@@ -133,24 +115,24 @@ G_M18346_IG08:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        call     [<unknown method>]
        ; gcrRegs -[ecx esi] +[eax]
        test     eax, eax
-       jne      SHORT G_M18346_IG10
+       jne      SHORT G_M18346_IG08
                        ;; size=14 bbWeight=4 PerfScore 30.00
-G_M18346_IG09:        ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG07:        ; bbWeight=8, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax]
        xor      esi, esi
        ; gcrRegs +[esi]
-       jmp      SHORT G_M18346_IG12
+       jmp      SHORT G_M18346_IG10
                        ;; size=4 bbWeight=8 PerfScore 18.00
-G_M18346_IG10:        ; bbWeight=16, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG08:        ; bbWeight=16, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi] +[eax]
        mov      ecx, eax
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx]
        test     eax, eax
-       je       SHORT G_M18346_IG09
+       je       SHORT G_M18346_IG07
                        ;; size=12 bbWeight=16 PerfScore 72.00
-G_M18346_IG11:        ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
+G_M18346_IG09:        ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref
        mov      ecx, eax
        ; gcrRegs +[ecx]
        call     [<unknown method>]
@@ -158,16 +140,16 @@ G_M18346_IG11:        ; bbWeight=2, gcrefRegs=00000009 {eax ebx}, byrefRegs=0000
        mov      esi, eax
        ; gcrRegs +[esi]
                        ;; size=10 bbWeight=2 PerfScore 7.00
-G_M18346_IG12:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG10:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax]
        test     esi, esi
-       je       SHORT G_M18346_IG14
+       je       SHORT G_M18346_IG12
                        ;; size=4 bbWeight=4 PerfScore 5.00
-G_M18346_IG13:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+G_M18346_IG11:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
        test     ebx, ebx
-       je       SHORT G_M18346_IG17
+       je       SHORT G_M18346_IG13
        cmp      esi, ebx
-       je       SHORT G_M18346_IG14
+       je       SHORT G_M18346_IG12
        mov      ecx, esi
        ; gcrRegs +[ecx]
        mov      edx, ebx
@@ -175,9 +157,9 @@ G_M18346_IG13:        ; bbWeight=2, gcrefRegs=00000048 {ebx esi}, byrefRegs=0000
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
        test     eax, eax
-       je       SHORT G_M18346_IG16
+       je       SHORT G_M18346_IG13
                        ;; size=22 bbWeight=2 PerfScore 14.50
-G_M18346_IG14:        ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+G_M18346_IG12:        ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[esi]
        mov      esi, dword ptr [ebp-0x14]
        inc      esi
@@ -187,50 +169,29 @@ G_M18346_IG14:        ; bbWeight=4, gcrefRegs=00000008 {ebx}, byrefRegs=00000000
        mov      eax, edi
        ; gcrRegs +[eax]
        mov      ecx, esi
-       mov      esi, dword ptr [ebp-0x10]
-       mov      edi, gword ptr [ebp-0x18]
        jl       G_M18346_IG03
-                       ;; size=26 bbWeight=4 PerfScore 35.00
-G_M18346_IG15:        ; bbWeight=0.50, gcVars=00001000 {V04}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax]
-       ; GC ptr vars -{V01 V03 V04}
-       jmp      SHORT G_M18346_IG19
-                       ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M18346_IG16:        ; bbWeight=1, gcVars=00004000 {V01}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[edi] +[esi]
-       ; GC ptr vars +{V01 V14}
-       mov      edi, gword ptr [ebp-0x18]
-       ; gcrRegs +[edi]
-       jmp      SHORT G_M18346_IG18
-                       ;; size=5 bbWeight=1 PerfScore 3.00
-G_M18346_IG17:        ; bbWeight=1, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[edi]
-       mov      edi, gword ptr [ebp-0x18]
-       ; gcrRegs +[edi]
-                       ;; size=3 bbWeight=1 PerfScore 1.00
-G_M18346_IG18:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; GC ptr vars -{V01 V14}
-       mov      edx, esi
-       ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x20], edx
+       jmp      SHORT G_M18346_IG14
+                       ;; size=22 bbWeight=4 PerfScore 35.00
+G_M18346_IG13:        ; bbWeight=0.50, gcVars=00004000 {V01}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax edi] +[esi]
+       ; GC ptr vars -{V03 V04}
+       mov      gword ptr [ebp-0x20], esi
        ; GC ptr vars +{V04}
-       mov      esi, dword ptr [ebp-0x10]
+                       ;; size=3 bbWeight=0.50 PerfScore 0.50
+G_M18346_IG14:        ; bbWeight=1, gcVars=00005000 {V01 V04}, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[esi]
-                       ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M18346_IG19:        ; bbWeight=1, gcVars=00001000 {V04}, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[edx]
-       mov      edx, gword ptr [ebp-0x20]
-       ; gcrRegs +[edx]
-       test     edx, edx
-       cmove    edx, ebx
-       mov      ecx, edx
+       mov      esi, gword ptr [ebp-0x20]
+       ; gcrRegs +[esi]
+       test     esi, esi
+       cmove    esi, ebx
+       mov      ecx, esi
        ; gcrRegs +[ecx]
        cmp      dword ptr [ecx], ecx
        ; GC ptr vars -{V04}
        call     [<unknown method>]
-       ; gcrRegs -[ecx edx ebx] +[eax]
-       mov      ebx, gword ptr [eax+0x04]
-       ; gcrRegs +[ebx]
+       ; gcrRegs -[ecx ebx esi] +[eax]
+       mov      esi, gword ptr [eax+0x04]
+       ; gcrRegs +[esi]
        mov      ecx, dword ptr [(reloc)]      ; const ptr
        mov      ecx, gword ptr [ecx]
        ; gcrRegs +[ecx]
@@ -238,35 +199,36 @@ G_M18346_IG19:        ; bbWeight=1, gcVars=00001000 {V04}, gcrefRegs=00000088 {e
        ; gcrRegs -[ecx]
        mov      ecx, eax
        ; gcrRegs +[ecx]
-       push     ebx
-       mov      edx, edi
+       push     esi
+       mov      edx, gword ptr [ebp-0x18]
        ; gcrRegs +[edx]
+       ; GC ptr vars -{V01}
        call     [System.SR:Format(System.String,System.Object,System.Object):System.String]
-       ; gcrRegs -[ecx edx ebx edi]
-       mov      edi, eax
-       ; gcrRegs +[edi]
-       test     edi, edi
-       je       SHORT G_M18346_IG21
-                       ;; size=52 bbWeight=1 PerfScore 22.75
-G_M18346_IG20:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[ecx edx esi]
+       mov      esi, eax
+       ; gcrRegs +[esi]
+       test     esi, esi
+       je       SHORT G_M18346_IG16
+                       ;; size=53 bbWeight=1 PerfScore 23.50
+G_M18346_IG15:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax]
-       cmp      dword ptr [edi+0x04], 0
...

-21 (-9.46%) : 105329.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)

@@ -43,19 +43,15 @@ G_M60484_IG02:        ; bbWeight=1, gcVars=00000040 {V00}, gcrefRegs=000000C8 {e
        mov      ecx, dword ptr [ebx+0x04]
        mov      dword ptr [ebp-0x14], ecx
        cmp      ecx, edx
-       mov      eax, gword ptr [ebp-0x18]
-       ; gcrRegs +[eax]
-       jle      SHORT G_M60484_IG08
+       jle      SHORT G_M60484_IG05
        test     edi, edi
-       je       SHORT G_M60484_IG07
+       je       SHORT G_M60484_IG06
        test     edx, edx
        jl       SHORT G_M60484_IG06
        cmp      dword ptr [edi+0x04], ecx
-       mov      gword ptr [ebp-0x18], eax
-       jl       SHORT G_M60484_IG05
-                       ;; size=35 bbWeight=1 PerfScore 14.25
+       jl       SHORT G_M60484_IG04
+                       ;; size=29 bbWeight=1 PerfScore 12.25
 G_M60484_IG03:        ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax]
        mov      eax, gword ptr [ebx+4*edx+0x08]
        ; gcrRegs +[eax]
        mov      dword ptr [ebp-0x10], edx
@@ -68,51 +64,30 @@ G_M60484_IG03:        ; bbWeight=3.96, gcrefRegs=000000C8 {ebx esi edi}, byrefRe
        call     [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
        ; gcrRegs -[eax ecx edx]
        test     eax, eax
-       jne      SHORT G_M60484_IG14
+       jne      SHORT G_M60484_IG10
        mov      edx, dword ptr [ebp-0x10]
        inc      edx
        mov      eax, dword ptr [ebp-0x14]
        cmp      eax, edx
        jg       SHORT G_M60484_IG03
-                       ;; size=38 bbWeight=3.96 PerfScore 64.35
-G_M60484_IG04:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[ebx edi]
-       mov      eax, gword ptr [ebp-0x18]
-       ; gcrRegs +[eax]
-       jmp      SHORT G_M60484_IG11
-                       ;; size=5 bbWeight=1 PerfScore 3.00
-G_M60484_IG05:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax] +[ebx edi]
+       jmp      SHORT G_M60484_IG07
+                       ;; size=40 bbWeight=3.96 PerfScore 72.27
+G_M60484_IG04:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M60484_IG09
+       jmp      SHORT G_M60484_IG06
                        ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[eax]
-       ; GC ptr vars -{V00}
-       mov      gword ptr [ebp-0x18], eax
-       ; GC ptr vars +{V00}
-       jmp      SHORT G_M60484_IG09
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG07:        ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; GC ptr vars -{V00}
-       mov      gword ptr [ebp-0x18], eax
-       ; GC ptr vars +{V00}
-       jmp      SHORT G_M60484_IG09
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M60484_IG08:        ; bbWeight=0.50, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref, isz
+G_M60484_IG05:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[ebx edi]
-       ; GC ptr vars -{V00}
-       jmp      SHORT G_M60484_IG11
+       jmp      SHORT G_M60484_IG07
                        ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M60484_IG09:        ; bbWeight=0.04, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax] +[ebx edi]
-       ; GC ptr vars +{V00 V06}
+G_M60484_IG06:        ; bbWeight=0.04, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs +[ebx edi]
        cmp      edx, ecx
-       jae      SHORT G_M60484_IG16
+       jae      SHORT G_M60484_IG12
        mov      eax, gword ptr [ebx+4*edx+0x08]
        ; gcrRegs +[eax]
        cmp      edx, dword ptr [edi+0x04]
-       jae      SHORT G_M60484_IG16
+       jae      SHORT G_M60484_IG12
        mov      dword ptr [ebp-0x10], edx
        push     gword ptr [edi+4*edx+0x08]
        mov      edx, eax
@@ -123,31 +98,27 @@ G_M60484_IG09:        ; bbWeight=0.04, gcVars=00000040 {V00}, gcrefRegs=000000C8
        call     [System.Runtime.Serialization.XmlReaderDelegator:IsStartElement(System.Xml.XmlDictionaryString,System.Xml.XmlDictionaryString):ubyte:this]
        ; gcrRegs -[eax ecx edx]
        test     eax, eax
-       jne      SHORT G_M60484_IG14
+       jne      SHORT G_M60484_IG10
        mov      eax, dword ptr [ebp-0x10]
        inc      eax
        cmp      dword ptr [ebp-0x14], eax
        mov      edx, eax
-       jg       SHORT G_M60484_IG13
+       jg       SHORT G_M60484_IG09
                        ;; size=47 bbWeight=0.04 PerfScore 0.90
-G_M60484_IG10:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+G_M60484_IG07:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ebx edi]
-       mov      eax, gword ptr [ebp-0x18]
-       ; gcrRegs +[eax]
-                       ;; size=3 bbWeight=0.02 PerfScore 0.02
-G_M60484_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
-       ; GC ptr vars -{V00 V06}
        push     gword ptr [ebp+0x08]
        push     dword ptr [ebp+0x0C]
-       mov      ecx, eax
+       mov      ecx, gword ptr [ebp-0x18]
        ; gcrRegs +[ecx]
        mov      edx, esi
        ; gcrRegs +[edx]
+       ; GC ptr vars -{V00}
        call     [System.Runtime.Serialization.XmlObjectSerializerReadContext:HandleMemberNotFound(System.Runtime.Serialization.XmlReaderDelegator,System.Runtime.Serialization.ExtensionDataObject,int):this]
-       ; gcrRegs -[eax ecx edx esi]
+       ; gcrRegs -[ecx edx esi]
        mov      eax, dword ptr [ebp-0x14]
-                       ;; size=19 bbWeight=0.50 PerfScore 3.25
-G_M60484_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+                       ;; size=20 bbWeight=0.50 PerfScore 3.62
+G_M60484_IG08:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -155,18 +126,18 @@ G_M60484_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      16
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M60484_IG13:        ; bbWeight=0.02, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M60484_IG09:        ; bbWeight=0.02, gcVars=00000040 {V00}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ebx esi edi]
        ; GC ptr vars +{V00 V06}
        mov      ecx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M60484_IG09
+       jmp      SHORT G_M60484_IG06
                        ;; size=5 bbWeight=0.02 PerfScore 0.06
-G_M60484_IG14:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M60484_IG10:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[ebx esi edi]
        ; GC ptr vars -{V00 V06}
        mov      eax, dword ptr [ebp-0x10]
                        ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M60484_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M60484_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -174,11 +145,11 @@ G_M60484_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      16
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M60484_IG16:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M60484_IG12:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        call     [CORINFO_HELP_RNGCHKFAIL]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 222, prolog size 9, PerfScore 105.08, instruction count 90, allocated bytes for code 222 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
+; Total bytes of code 201, prolog size 9, PerfScore 105.36, instruction count 82, allocated bytes for code 201 (MethodHash=625f13bb) for method System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
 ; ============================================================
 

+4 (+7.84%) : 40086.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)

@@ -16,48 +16,53 @@
 ;
 ; Lcl frame size = 0
 
-G_M12753_IG01:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M12753_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
                        ;; size=3 bbWeight=1 PerfScore 1.25
 G_M12753_IG02:        ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[ecx]
        test     ecx, ecx
-       je       SHORT G_M12753_IG04
+       je       SHORT G_M12753_IG06
                        ;; size=4 bbWeight=1 PerfScore 1.25
 G_M12753_IG03:        ; bbWeight=4, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
        movzx    eax, byte  ptr [ecx+0x0A]
        cmp      eax, 117
-       je       SHORT G_M12753_IG06
+       je       SHORT G_M12753_IG04
        cmp      eax, 188
-       jne      SHORT G_M12753_IG04
+       jne      SHORT G_M12753_IG06
        call     [CORINFO_HELP_READYTORUN_CHKCAST]
        ; gcrRegs -[ecx] +[eax]
        mov      ecx, gword ptr [eax+0x10]
        ; gcrRegs +[ecx]
        test     ecx, ecx
        jne      SHORT G_M12753_IG03
-                       ;; size=29 bbWeight=4 PerfScore 43.00
-G_M12753_IG04:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[eax ecx]
-       xor      eax, eax
-       ; gcrRegs +[eax]
-                       ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M12753_IG05:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      ebp
-       ret      
-                       ;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M12753_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax] +[ecx]
+       jmp      SHORT G_M12753_IG08
+                       ;; size=31 bbWeight=4 PerfScore 51.00
+G_M12753_IG04:        ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[eax]
        call     [CORINFO_HELP_READYTORUN_CHKCAST]
        ; gcrRegs -[ecx] +[eax]
        mov      eax, gword ptr [eax+0x10]
                        ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M12753_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ebp
+       ret      
+                       ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M12753_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax]
+       xor      eax, eax
+       ; gcrRegs +[eax]
+                       ;; size=2 bbWeight=0.50 PerfScore 0.12
 G_M12753_IG07:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=2 bbWeight=0.50 PerfScore 0.75
+G_M12753_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax]
+       jmp      SHORT G_M12753_IG06
+                       ;; size=2 bbWeight=0.50 PerfScore 1.00
 
-; Total bytes of code 51, prolog size 3, PerfScore 49.62, instruction count 20, allocated bytes for code 51 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
+; Total bytes of code 55, prolog size 3, PerfScore 58.62, instruction count 22, allocated bytes for code 55 (MethodHash=9540ce2e) for method Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
 ; ============================================================
 

+12 (+7.95%) : 3297.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort]):System.ReadOnlySpan`1ushort

@@ -14,13 +14,13 @@
 ;  V02 arg1         [V02,T02] (  2, 33   )  struct ( 8) [ebp+0x08]  do-not-enreg[SF] ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
 ;  V03 loc0         [V03,T04] (  8, 21.50)     int  ->  ecx        
 ;  V04 loc1         [V04,T00] (  5, 84   )     int  ->  edx        
-;  V05 loc2         [V05,T08] (  4,  4   )     int  ->  ebx         "Inlining Arg"
+;  V05 loc2         [V05,T08] (  4,  4   )     int  ->  esi         "Inlining Arg"
 ;* V06 tmp1         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V07 tmp2         [V07,T09] (  2,  2   )   byref  ->  edi         single-def "Inlining Arg"
 ;* V08 tmp3         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V09 tmp4         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;  V10 tmp5         [V10,T11] (  2,  1   )   byref  ->  edi         single-def "field V06._reference (fldOffset=0x0)" P-INDEP
-;  V11 tmp6         [V11,T12] (  2,  1   )     int  ->  ebx         "field V06._length (fldOffset=0x4)" P-INDEP
+;  V11 tmp6         [V11,T12] (  2,  1   )     int  ->  esi         "field V06._length (fldOffset=0x4)" P-INDEP
 ;  V12 tmp7         [V12,T06] (  4,  6   )     int  ->  edi         "V01.[004..008)"
 ;  V13 tmp8         [V13,T03] (  4, 22   )     int  ->  ebx         "V02.[004..008)"
 ;  V14 cse0         [V14,T01] (  2, 36   )     int  ->  eax         hoist "CSE - aggressive"
@@ -66,14 +66,14 @@ G_M46891_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
        ; byrRegs +[esi]
        lea      ecx, [edi-0x01]
        test     ecx, ecx
-       jl       SHORT G_M46891_IG11
+       jl       SHORT G_M46891_IG10
                        ;; size=7 bbWeight=0.50 PerfScore 0.88
 G_M46891_IG06:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
        xor      edx, edx
        test     ebx, ebx
-       jle      SHORT G_M46891_IG11
+       jle      SHORT G_M46891_IG09
        cmp      ecx, edi
-       jae      SHORT G_M46891_IG14
+       jae      SHORT G_M46891_IG16
        mov      eax, bword ptr [ebp+0x10]
        ; byrRegs +[eax]
        movzx    eax, word  ptr [eax+2*ecx]
@@ -88,34 +88,40 @@ G_M46891_IG07:        ; bbWeight=32, gcVars=00000080 {V00}, gcrefRegs=00000000 {
        movzx    esi, word  ptr [esi+2*edx]
        ; byrRegs -[esi]
        cmp      esi, eax
-       je       SHORT G_M46891_IG10
+       je       SHORT G_M46891_IG11
                        ;; size=11 bbWeight=32 PerfScore 136.00
 G_M46891_IG08:        ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        inc      edx
        cmp      edx, ebx
        jl       SHORT G_M46891_IG07
-                       ;; size=5 bbWeight=16 PerfScore 24.00
-G_M46891_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
-       mov      esi, bword ptr [ebp-0x10]
+       jmp      SHORT G_M46891_IG12
+                       ;; size=7 bbWeight=16 PerfScore 56.00
+G_M46891_IG09:        ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
        ; byrRegs +[esi]
-       jmp      SHORT G_M46891_IG11
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M46891_IG10:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       ; GC ptr vars -{V00}
+       mov      bword ptr [ebp-0x10], esi
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M46891_IG12
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M46891_IG10:        ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+       ; GC ptr vars -{V00}
+       mov      bword ptr [ebp-0x10], esi
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M46891_IG12
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M46891_IG11:        ; bbWeight=4, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[esi]
        dec      ecx
-       mov      esi, bword ptr [ebp-0x10]
-       ; byrRegs +[esi]
-       jns      SHORT G_M46891_IG06
-                       ;; size=6 bbWeight=4 PerfScore 9.00
-G_M46891_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
-       ; GC ptr vars -{V00}
-       lea      ebx, [ecx+0x01]
-       cmp      ebx, edi
-       ja       SHORT G_M46891_IG15
+       jns      SHORT G_M46891_IG15
+                       ;; size=3 bbWeight=4 PerfScore 5.00
+G_M46891_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       lea      esi, [ecx+0x01]
+       cmp      esi, edi
+       ja       SHORT G_M46891_IG17
        mov      edi, bword ptr [ebp+0x10]
        ; byrRegs +[edi]
-       test     ebx, ebx
-       jge      SHORT G_M46891_IG12
+       test     esi, esi
+       jge      SHORT G_M46891_IG13
        mov      ecx, dword ptr [(reloc)]      ; const ptr
        mov      edx, gword ptr [ecx]
        ; gcrRegs +[edx]
@@ -124,11 +130,13 @@ G_M46891_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
                        ;; size=30 bbWeight=0.50 PerfScore 5.62
-G_M46891_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
-       mov      bword ptr [esi], edi
-       mov      dword ptr [esi+0x04], ebx
-                       ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M46891_IG13:        ; bbWeight=0.50, epilog, nogc, extend
+G_M46891_IG13:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
+       mov      ebx, bword ptr [ebp-0x10]
+       ; byrRegs +[ebx]
+       mov      bword ptr [ebx], edi
+       mov      dword ptr [ebx+0x04], esi
+                       ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M46891_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ecx
        pop      ebx
        pop      esi
@@ -136,15 +144,22 @@ G_M46891_IG13:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      16
                        ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M46891_IG14:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
-       ; byrRegs -[esi edi]
+G_M46891_IG15:        ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; byrRegs -[ebx edi]
+       mov      esi, bword ptr [ebp-0x10]
+       ; byrRegs +[esi]
+       jmp      SHORT G_M46891_IG06
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M46891_IG16:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; byrRegs -[esi]
+       ; GC ptr vars -{V00}
        call     [CORINFO_HELP_RNGCHKFAIL]
                        ;; size=6 bbWeight=0 PerfScore 0.00
-G_M46891_IG15:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M46891_IG17:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 151, prolog size 9, PerfScore 220.88, instruction count 65, allocated bytes for code 151 (MethodHash=f7e248d4) for method System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
+; Total bytes of code 163, prolog size 9, PerfScore 260.62, instruction count 70, allocated bytes for code 163 (MethodHash=f7e248d4) for method System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
 ; ============================================================
 

+12 (+8.45%) : 3296.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort]):System.ReadOnlySpan`1ushort

@@ -16,10 +16,10 @@
 ;  V04 loc1         [V04,T00] (  5, 84   )     int  ->  edx        
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V06 tmp1         [V06,T08] (  3,  3   )     int  ->  edi         "Inlining Arg"
-;  V07 tmp2         [V07,T09] (  2,  2   )   byref  ->  ebx         single-def "Inlining Arg"
+;  V07 tmp2         [V07,T09] (  2,  2   )   byref  ->  esi         single-def "Inlining Arg"
 ;* V08 tmp3         [V08    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V09 tmp4         [V09    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V10 tmp5         [V10,T11] (  2,  1   )   byref  ->  ebx         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
+;  V10 tmp5         [V10,T11] (  2,  1   )   byref  ->  esi         single-def "field V05._reference (fldOffset=0x0)" P-INDEP
 ;  V11 tmp6         [V11,T12] (  2,  1   )     int  ->  edi         "field V05._length (fldOffset=0x4)" P-INDEP
 ;  V12 tmp7         [V12,T05] (  5,  6.50)     int  ->  edi         "V01.[004..008)"
 ;  V13 tmp8         [V13,T03] (  4, 22   )     int  ->  ebx         "V02.[004..008)"
@@ -66,12 +66,12 @@ G_M16324_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
        ; byrRegs +[esi]
        xor      ecx, ecx
        test     edi, edi
-       jle      SHORT G_M16324_IG11
+       jle      SHORT G_M16324_IG10
                        ;; size=6 bbWeight=0.50 PerfScore 0.75
 G_M16324_IG06:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
        xor      edx, edx
        test     ebx, ebx
-       jle      SHORT G_M16324_IG11
+       jle      SHORT G_M16324_IG09
        mov      eax, bword ptr [ebp+0x10]
        ; byrRegs +[eax]
        movzx    eax, word  ptr [eax+2*ecx]
@@ -86,36 +86,42 @@ G_M16324_IG07:        ; bbWeight=32, gcVars=00000080 {V00}, gcrefRegs=00000000 {
        movzx    esi, word  ptr [esi+2*edx]
        ; byrRegs -[esi]
        cmp      esi, eax
-       je       SHORT G_M16324_IG10
+       je       SHORT G_M16324_IG11
                        ;; size=11 bbWeight=32 PerfScore 136.00
 G_M16324_IG08:        ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        inc      edx
        cmp      edx, ebx
        jl       SHORT G_M16324_IG07
-                       ;; size=5 bbWeight=16 PerfScore 24.00
-G_M16324_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
-       mov      esi, bword ptr [ebp-0x10]
+       jmp      SHORT G_M16324_IG12
+                       ;; size=7 bbWeight=16 PerfScore 56.00
+G_M16324_IG09:        ; bbWeight=2, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
        ; byrRegs +[esi]
-       jmp      SHORT G_M16324_IG11
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M16324_IG10:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+       ; GC ptr vars -{V00}
+       mov      bword ptr [ebp-0x10], esi
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M16324_IG12
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG10:        ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref, isz
+       ; GC ptr vars -{V00}
+       mov      bword ptr [ebp-0x10], esi
+       ; GC ptr vars +{V00}
+       jmp      SHORT G_M16324_IG12
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M16324_IG11:        ; bbWeight=4, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[esi]
        inc      ecx
        cmp      ecx, edi
-       mov      esi, bword ptr [ebp-0x10]
-       ; byrRegs +[esi]
-       jl       SHORT G_M16324_IG06
-                       ;; size=8 bbWeight=4 PerfScore 10.00
-G_M16324_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, gcvars, byref, isz
-       ; GC ptr vars -{V00}
+       jl       SHORT G_M16324_IG15
+                       ;; size=5 bbWeight=4 PerfScore 6.00
+G_M16324_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        cmp      ecx, edi
-       ja       SHORT G_M16324_IG14
+       ja       SHORT G_M16324_IG16
        mov      edx, bword ptr [ebp+0x10]
        ; byrRegs +[edx]
-       lea      ebx, bword ptr [edx+2*ecx]
-       ; byrRegs +[ebx]
+       lea      esi, bword ptr [edx+2*ecx]
+       ; byrRegs +[esi]
        sub      edi, ecx
-       jns      SHORT G_M16324_IG12
+       jns      SHORT G_M16324_IG13
        mov      ecx, dword ptr [(reloc)]      ; const ptr
        mov      edx, gword ptr [ecx]
        ; gcrRegs +[edx]
@@ -125,11 +131,13 @@ G_M16324_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
                        ;; size=30 bbWeight=0.50 PerfScore 5.62
-G_M16324_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000048 {ebx esi}, byref
-       mov      bword ptr [esi], ebx
-       mov      dword ptr [esi+0x04], edi
-                       ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M16324_IG13:        ; bbWeight=0.50, epilog, nogc, extend
+G_M16324_IG13:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000040 {esi}, byref
+       mov      ebx, bword ptr [ebp-0x10]
+       ; byrRegs +[ebx]
+       mov      bword ptr [ebx], esi
+       mov      dword ptr [ebx+0x04], edi
+                       ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M16324_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ecx
        pop      ebx
        pop      esi
@@ -137,12 +145,19 @@ G_M16324_IG13:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      16
                        ;; size=8 bbWeight=0.50 PerfScore 2.25
-G_M16324_IG14:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+G_M16324_IG15:        ; bbWeight=2, gcVars=00000080 {V00}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; byrRegs -[ebx esi]
+       mov      esi, bword ptr [ebp-0x10]
+       ; byrRegs +[esi]
+       jmp      SHORT G_M16324_IG06
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M16324_IG16:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; byrRegs -[esi]
+       ; GC ptr vars -{V00}
        call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 142, prolog size 9, PerfScore 216.75, instruction count 63, allocated bytes for code 142 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
+; Total bytes of code 154, prolog size 9, PerfScore 256.50, instruction count 68, allocated bytes for code 154 (MethodHash=d379c03b) for method System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
 ; ============================================================
 

libraries.pmi.windows.x86.checked.mch

-36 (-13.43%) : 187927.dasm - System.Xml.Schema.XmlSchemaInference:FindElementRef(System.Xml.Schema.XmlSchemaObjectCollection,System.String,System.String):System.Xml.Schema.XmlSchemaElement (FullOpts)

@@ -10,15 +10,15 @@
 ;
 ;  V00 arg0         [V00,T05] (  6, 12   )     ref  ->  esi         class-hnd single-def <System.Xml.Schema.XmlSchemaObjectCollection>
 ;  V01 arg1         [V01,T07] (  6,  9.57)     ref  ->  edi         class-hnd single-def <System.String>
-;  V02 arg2         [V02,T10] (  4,  7.57)     ref  ->  [ebp+0x08]  class-hnd single-def <System.String>
+;  V02 arg2         [V02,T10] (  4,  7.57)     ref  ->  ebx         class-hnd single-def <System.String>
 ;  V03 loc0         [V03,T03] (  5, 17   )     int  ->  [ebp-0x10] 
-;  V04 loc1         [V04,T06] (  5, 12.50)     ref  ->  [ebp-0x1C]  class-hnd spill-single-def <System.Xml.Schema.XmlSchemaElement>
+;  V04 loc1         [V04,T06] (  5, 12.50)     ref  ->  [ebp-0x18]  class-hnd spill-single-def <System.Xml.Schema.XmlSchemaElement>
 ;* V05 tmp0         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Xml.XmlQualifiedName>
 ;* V06 tmp1         [V06,T17] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V07 tmp2         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Xml.XmlQualifiedName>
-;  V08 tmp3         [V08,T01] (  5, 19.15)     ref  ->  registers   class-hnd exact "Inlining Arg" <System.String>
+;  V08 tmp3         [V08,T01] (  5, 19.15)     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.String>
 ;  V09 tmp4         [V09,T15] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V10 tmp5         [V10,T08] (  2,  8   )   byref  ->  [ebp-0x20]  spill-single-def "impAppendStmt"
+;  V10 tmp5         [V10,T08] (  2,  8   )   byref  ->  ecx         "impAppendStmt"
 ;* V11 tmp6         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp7         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V13 tmp8         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -37,10 +37,10 @@
 ;  V26 tmp21        [V26,T04] (  2, 16   )     ref  ->  edx         "argument with side effect"
 ;  V27 cse0         [V27,T14] (  2,  5   )     int  ->  [ebp-0x14]  spill-single-def hoist "CSE - moderate"
 ;  V28 cse1         [V28,T11] (  3,  6   )     ref  ->  edx         "CSE - moderate"
-;  V29 cse2         [V29,T12] (  3,  5.57)     int  ->  [ebp-0x18]  "CSE - moderate"
+;  V29 cse2         [V29,T12] (  3,  5.57)     int  ->  edx         "CSE - moderate"
 ;  V30 cse3         [V30,T13] (  3,  5.57)     int  ->  edx         "CSE - moderate"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 12
 
 G_M21788_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -48,7 +48,7 @@ G_M21788_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 20
+       sub      esp, 12
        mov      esi, ecx
        ; gcrRegs +[esi]
        mov      edi, edx
@@ -66,7 +66,7 @@ G_M21788_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
        call     [edx+0x18]<unknown method>
        ; gcrRegs -[ecx]
        test     eax, eax
-       jle      G_M21788_IG14
+       jle      G_M21788_IG13
        mov      ecx, dword ptr [esi]
        mov      eax, dword ptr [ecx+0x38]
        mov      dword ptr [ebp-0x14], eax
@@ -82,57 +82,56 @@ G_M21788_IG03:        ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
        mov      ecx, 0xD1FFAB1E      ; System.Xml.Schema.XmlSchemaElement
        call     CORINFO_HELP_ISINSTANCEOFCLASS
        ; gcrRegs -[edx]
-       mov      gword ptr [ebp-0x1C], eax
+       mov      gword ptr [ebp-0x18], eax
        ; GC ptr vars +{V04}
        test     eax, eax
-       je       SHORT G_M21788_IG13
+       je       SHORT G_M21788_IG12
                        ;; size=27 bbWeight=4 PerfScore 32.00
 G_M21788_IG04:        ; bbWeight=2, gcVars=00000040 {V04}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      edx, gword ptr [eax+0x58]
        ; gcrRegs +[edx]
        test     edx, edx
-       je       SHORT G_M21788_IG13
+       je       SHORT G_M21788_IG12
                        ;; size=7 bbWeight=2 PerfScore 6.50
-G_M21788_IG05:        ; bbWeight=2.00, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG05:        ; bbWeight=2.00, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[eax]
        mov      ecx, gword ptr [edx+0x08]
        ; gcrRegs +[ecx]
        cmp      ecx, edi
-       je       SHORT G_M21788_IG08
+       je       SHORT G_M21788_IG07
                        ;; size=7 bbWeight=2.00 PerfScore 6.50
-G_M21788_IG06:        ; bbWeight=1.79, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG06:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[edx]
        test     ecx, ecx
-       je       SHORT G_M21788_IG13
-                       ;; size=4 bbWeight=1.79 PerfScore 2.24
-G_M21788_IG07:        ; bbWeight=1.79, gcrefRegs=000000CB {eax ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, ecx
-       ; gcrRegs +[edx]
-       jmp      SHORT G_M21788_IG16
-                       ;; size=4 bbWeight=1.79 PerfScore 4.02
-G_M21788_IG08:        ; bbWeight=2.00, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[ecx edx]
+       je       SHORT G_M21788_IG12
+       jmp      SHORT G_M21788_IG15
+                       ;; size=6 bbWeight=1.79 PerfScore 5.82
+G_M21788_IG07:        ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[ecx]
+       mov      eax, gword ptr [ebp-0x18]
+       ; gcrRegs +[eax]
        mov      edx, gword ptr [eax+0x58]
        ; gcrRegs +[edx]
        mov      ecx, gword ptr [edx+0x04]
        ; gcrRegs +[ecx]
        cmp      ecx, ebx
-       je       G_M21788_IG21
-                       ;; size=14 bbWeight=2.00 PerfScore 10.50
-G_M21788_IG09:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       je       SHORT G_M21788_IG18
+                       ;; size=13 bbWeight=2.00 PerfScore 12.50
+G_M21788_IG08:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax edx]
        test     ecx, ecx
-       je       SHORT G_M21788_IG13
+       je       SHORT G_M21788_IG12
                        ;; size=4 bbWeight=1.79 PerfScore 2.24
-G_M21788_IG10:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG09:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     ebx, ebx
-       je       SHORT G_M21788_IG13
+       je       SHORT G_M21788_IG12
                        ;; size=4 bbWeight=1.79 PerfScore 2.23
-G_M21788_IG11:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG10:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      edx, dword ptr [ecx+0x04]
        cmp      edx, dword ptr [ebx+0x04]
-       jne      SHORT G_M21788_IG13
+       jne      SHORT G_M21788_IG12
                        ;; size=8 bbWeight=1.79 PerfScore 10.72
-G_M21788_IG12:        ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M21788_IG11:        ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        add      ecx, 8
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
@@ -143,9 +142,9 @@ G_M21788_IG12:        ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefR
        call     [<unknown method>]
        ; byrRegs -[ecx edx]
        test     eax, eax
-       jne      SHORT G_M21788_IG21
+       jne      SHORT G_M21788_IG18
                        ;; size=19 bbWeight=2 PerfScore 12.50
-G_M21788_IG13:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref
+G_M21788_IG12:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; GC ptr vars -{V04}
        mov      edx, dword ptr [ebp-0x10]
        inc      edx
@@ -156,18 +155,18 @@ G_M21788_IG13:        ; bbWeight=4, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx
        mov      eax, dword ptr [eax+0x2C]
        call     [eax+0x18]<unknown method>
        ; gcrRegs -[ecx]
-       mov      ecx, dword ptr [ebp-0x10]
-       cmp      eax, ecx
-       mov      dword ptr [ebp-0x10], ecx
+       mov      edx, dword ptr [ebp-0x10]
+       cmp      eax, edx
+       mov      dword ptr [ebp-0x10], edx
        mov      eax, dword ptr [ebp-0x14]
-       jg       G_M21788_IG03
-                       ;; size=35 bbWeight=4 PerfScore 62.00
-G_M21788_IG14:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       jg       SHORT G_M21788_IG03
+                       ;; size=31 bbWeight=4 PerfScore 62.00
+G_M21788_IG13:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ebx esi edi]
        xor      eax, eax
        ; gcrRegs +[eax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M21788_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M21788_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -175,60 +174,37 @@ G_M21788_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M21788_IG16:        ; bbWeight=1.79, gcVars=00000040 {V04}, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[edx ebx esi edi]
+G_M21788_IG15:        ; bbWeight=1.79, gcVars=00000040 {V04}, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax] +[ecx ebx esi edi]
        ; GC ptr vars +{V04 V06}
        test     edi, edi
-       je       SHORT G_M21788_IG13
+       je       SHORT G_M21788_IG12
                        ;; size=4 bbWeight=1.79 PerfScore 2.23
-G_M21788_IG17:        ; bbWeight=1.79, gcrefRegs=000000CD {eax edx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x08], ebx
-       mov      ebx, dword ptr [edx+0x04]
-       ; gcrRegs -[ebx]
-       cmp      ebx, dword ptr [edi+0x04]
-       mov      dword ptr [ebp-0x18], ebx
-       jne      SHORT G_M21788_IG20
-                       ;; size=14 bbWeight=1.79 PerfScore 14.29
-G_M21788_IG18:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax]
-       add      edx, 8
-       ; gcrRegs -[edx]
-       ; byrRegs +[edx]
-       mov      bword ptr [ebp-0x20], edx
-       ; GC ptr vars +{V10}
-       mov      ebx, dword ptr [ebp-0x18]
-       add      ebx, ebx
-       push     ebx
-       lea      edx, bword ptr [edi+0x08]
-       mov      ecx, bword ptr [ebp-0x20]
+G_M21788_IG16:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [ecx+0x04]
+       cmp      edx, dword ptr [edi+0x04]
+       jne      SHORT G_M21788_IG12
+                       ;; size=8 bbWeight=1.79 PerfScore 10.72
+G_M21788_IG17:        ; bbWeight=2, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       add      ecx, 8
+       ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
-       ; GC ptr vars -{V06 V10}
+       add      edx, edx
+       push     edx
+       lea      edx, bword ptr [edi+0x08]
+       ; byrRegs +[edx]
        call     [<unknown method>]
        ; byrRegs -[ecx edx]
        test     eax, eax
-       mov      ebx, gword ptr [ebp+0x08]
-       ; gcrRegs +[ebx]
-       je       SHORT G_M21788_IG13
-                       ;; size=31 bbWeight=2 PerfScore 20.50
-G_M21788_IG19:        ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
-       mov      eax, gword ptr [ebp-0x1C]
-       ; gcrRegs +[eax]
-       jmp      G_M21788_IG08
-                       ;; size=8 bbWeight=2.00 PerfScore 6.00
-G_M21788_IG20:        ; bbWeight=0.89, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax ebx]
-       ; GC ptr vars -{V04}
-       mov      ebx, gword ptr [ebp+0x08]
-       ; gcrRegs +[ebx]
-       jmp      SHORT G_M21788_IG13
-                       ;; size=5 bbWeight=0.89 PerfScore 2.68
-G_M21788_IG21:        ; bbWeight=0.50, gcVars=00000040 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       je       SHORT G_M21788_IG12
+       jmp      SHORT G_M21788_IG07
+                       ;; size=21 bbWeight=2 PerfScore 16.50
+G_M21788_IG18:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ebx esi edi]
-       ; GC ptr vars +{V04 V06}
-       mov      eax, gword ptr [ebp-0x1C]
+       mov      eax, gword ptr [ebp-0x18]
        ; gcrRegs +[eax]
                        ;; size=3 bbWeight=0.50 PerfScore 0.50
-G_M21788_IG22:        ; bbWeight=0.50, epilog, nogc, extend
+G_M21788_IG19:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
...

-34 (-12.98%) : 181539.dasm - System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)

@@ -10,16 +10,16 @@
 ;
 ;  V00 this         [V00,T07] (  5,  8.00)     ref  ->  edi         this class-hnd single-def <System.Xml.XmlNamedNodeMap>
 ;  V01 arg1         [V01,T06] (  6, 11.57)     ref  ->  esi         class-hnd single-def <System.String>
-;  V02 arg2         [V02,T11] (  4,  7.57)     ref  ->  [ebp+0x08]  class-hnd single-def <System.String>
+;  V02 arg2         [V02,T11] (  4,  7.57)     ref  ->  ebx         class-hnd single-def <System.String>
 ;  V03 loc0         [V03,T12] (  3,  6   )     int  ->  [ebp-0x10]  spill-single-def
 ;  V04 loc1         [V04,T03] (  6, 17.50)     int  ->  [ebp-0x14] 
-;  V05 loc2         [V05,T05] (  4, 14.00)     ref  ->  [ebp-0x20]  class-hnd <<unknown class>>
+;  V05 loc2         [V05,T05] (  4, 14.00)     ref  ->  [ebp-0x1C]  class-hnd spill-single-def <<unknown class>>
 ;  V06 tmp0         [V06,T04] (  3, 17.00)     ref  ->  eax         "CASTCLASS eval op1"
 ;  V07 tmp1         [V07,T15] (  3,  5.00)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
 ;  V08 tmp2         [V08,T01] (  5, 27.00)     ref  ->  registers   class-hnd "spilling QMark2" <<unknown class>>
 ;  V09 tmp3         [V09,T00] (  5, 27.15)     ref  ->  eax         class-hnd exact "Inlining Arg" <System.String>
 ;  V10 tmp4         [V10,T16] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V11 tmp5         [V11,T09] (  2,  8   )   byref  ->  eax         "impAppendStmt"
+;  V11 tmp5         [V11,T09] (  2,  8   )   byref  ->  ecx         "impAppendStmt"
 ;* V12 tmp6         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V13 tmp7         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp8         [V14    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -33,11 +33,11 @@
 ;* V22 tmp16        [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V23 tmp17        [V23    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V24 tmp18        [V24    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V25 cse0         [V25,T08] (  3, 10.00)     int  ->  [ebp-0x18]  "CSE - moderate"
-;  V26 cse1         [V26,T13] (  3,  5.57)     int  ->  [ebp-0x1C]  "CSE - moderate"
+;  V25 cse0         [V25,T08] (  3, 10.00)     int  ->  [ebp-0x18]  spill-single-def "CSE - moderate"
+;  V26 cse1         [V26,T13] (  3,  5.57)     int  ->  edx         "CSE - moderate"
 ;  V27 cse2         [V27,T14] (  3,  5.57)     int  ->  edx         "CSE - moderate"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 16
 
 G_M15178_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -45,7 +45,7 @@ G_M15178_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 20
+       sub      esp, 16
        mov      edi, ecx
        ; gcrRegs +[edi]
        mov      esi, edx
@@ -63,7 +63,7 @@ G_M15178_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
        mov      dword ptr [ebp-0x10], eax
        xor      edx, edx
        test     eax, eax
-       jle      SHORT G_M15178_IG15
+       jle      SHORT G_M15178_IG14
                        ;; size=19 bbWeight=1 PerfScore 9.75
 G_M15178_IG03:        ; bbWeight=4.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        lea      ecx, bword ptr [edi+0x08]
@@ -95,10 +95,10 @@ G_M15178_IG06:        ; bbWeight=4.00, gcrefRegs=000000CC {edx ebx esi edi}, byr
        ; gcrRegs -[eax]
        mov      eax, edx
        ; gcrRegs +[eax]
+       mov      gword ptr [ebp-0x1C], eax
+       ; GC ptr vars +{V05}
        mov      ecx, eax
        ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x20], eax
-       ; GC ptr vars +{V05}
        mov      edx, dword ptr [eax]
        ; gcrRegs -[edx]
        mov      edx, dword ptr [edx+0x3C]
@@ -106,40 +106,38 @@ G_M15178_IG06:        ; bbWeight=4.00, gcrefRegs=000000CC {edx ebx esi edi}, byr
        call     [edx+0x18]<unknown method>
        ; gcrRegs -[ecx]
        cmp      eax, esi
-       je       SHORT G_M15178_IG09
+       je       SHORT G_M15178_IG08
                        ;; size=22 bbWeight=4.00 PerfScore 43.00
 G_M15178_IG07:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     eax, eax
-       je       SHORT G_M15178_IG14
-                       ;; size=4 bbWeight=1.79 PerfScore 2.24
-G_M15178_IG08:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       jmp      SHORT G_M15178_IG19
-                       ;; size=2 bbWeight=1.79 PerfScore 3.57
-G_M15178_IG09:        ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       je       SHORT G_M15178_IG13
+       jmp      SHORT G_M15178_IG18
+                       ;; size=6 bbWeight=1.79 PerfScore 5.82
+G_M15178_IG08:        ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax]
-       mov      ecx, gword ptr [ebp-0x20]
+       mov      ecx, gword ptr [ebp-0x1C]
        ; gcrRegs +[ecx]
        mov      edx, dword ptr [ebp-0x18]
        ; GC ptr vars -{V05}
        call     [edx+0x0C]<unknown method>
        ; gcrRegs -[ecx] +[eax]
        cmp      eax, ebx
-       je       SHORT G_M15178_IG18
+       je       SHORT G_M15178_IG17
                        ;; size=13 bbWeight=2.00 PerfScore 12.50
-G_M15178_IG10:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG09:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     eax, eax
-       je       SHORT G_M15178_IG14
+       je       SHORT G_M15178_IG13
                        ;; size=4 bbWeight=1.79 PerfScore 2.24
-G_M15178_IG11:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG10:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     ebx, ebx
-       je       SHORT G_M15178_IG14
+       je       SHORT G_M15178_IG13
                        ;; size=4 bbWeight=1.79 PerfScore 2.23
-G_M15178_IG12:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG11:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      edx, dword ptr [eax+0x04]
        cmp      edx, dword ptr [ebx+0x04]
-       jne      SHORT G_M15178_IG14
+       jne      SHORT G_M15178_IG13
                        ;; size=8 bbWeight=1.79 PerfScore 10.72
-G_M15178_IG13:        ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG12:        ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        lea      ecx, bword ptr [eax+0x08]
        ; byrRegs +[ecx]
        add      edx, edx
@@ -150,20 +148,20 @@ G_M15178_IG13:        ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefR
        ; gcrRegs -[eax]
        ; byrRegs -[ecx edx]
        test     eax, eax
-       jne      SHORT G_M15178_IG17
+       jne      SHORT G_M15178_IG16
                        ;; size=19 bbWeight=2 PerfScore 13.00
-G_M15178_IG14:        ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG13:        ; bbWeight=4, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      edx, dword ptr [ebp-0x14]
        inc      edx
-       mov      ecx, dword ptr [ebp-0x10]
-       cmp      edx, ecx
+       mov      eax, dword ptr [ebp-0x10]
+       cmp      edx, eax
        jl       SHORT G_M15178_IG03
                        ;; size=11 bbWeight=4 PerfScore 14.00
-G_M15178_IG15:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M15178_IG14:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ebx esi edi]
        mov      eax, -1
                        ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M15178_IG16:        ; bbWeight=0.50, epilog, nogc, extend
+G_M15178_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -171,66 +169,45 @@ G_M15178_IG16:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M15178_IG17:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15178_IG16:        ; bbWeight=1, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      edx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M15178_IG24
+       jmp      SHORT G_M15178_IG21
                        ;; size=5 bbWeight=1 PerfScore 3.00
-G_M15178_IG18:        ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M15178_IG17:        ; bbWeight=1.00, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        mov      edx, dword ptr [ebp-0x14]
-       jmp      SHORT G_M15178_IG24
+       jmp      SHORT G_M15178_IG21
                        ;; size=5 bbWeight=1.00 PerfScore 3.00
-G_M15178_IG19:        ; bbWeight=1.79, gcVars=00000020 {V05}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M15178_IG18:        ; bbWeight=1.79, gcVars=00000020 {V05}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[eax ebx esi edi]
        ; GC ptr vars +{V05}
        test     esi, esi
-       je       SHORT G_M15178_IG14
+       je       SHORT G_M15178_IG13
                        ;; size=4 bbWeight=1.79 PerfScore 2.23
-G_M15178_IG20:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp+0x08], ebx
-       mov      ebx, dword ptr [eax+0x04]
-       ; gcrRegs -[ebx]
-       cmp      ebx, dword ptr [esi+0x04]
-       mov      dword ptr [ebp-0x1C], ebx
-       jne      SHORT G_M15178_IG23
-                       ;; size=14 bbWeight=1.79 PerfScore 14.29
-G_M15178_IG21:        ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
-       add      eax, 8
-       ; gcrRegs -[eax]
-       ; byrRegs +[eax]
-       mov      ebx, dword ptr [ebp-0x1C]
-       add      ebx, ebx
-       push     ebx
+G_M15178_IG19:        ; bbWeight=1.79, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [eax+0x04]
+       cmp      edx, dword ptr [esi+0x04]
+       jne      SHORT G_M15178_IG13
+                       ;; size=8 bbWeight=1.79 PerfScore 10.72
+G_M15178_IG20:        ; bbWeight=2, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       lea      ecx, bword ptr [eax+0x08]
+       ; byrRegs +[ecx]
+       add      edx, edx
+       push     edx
        lea      edx, bword ptr [esi+0x08]
        ; byrRegs +[edx]
-       mov      ecx, eax
-       ; byrRegs +[ecx]
        call     [<unknown method>]
-       ; byrRegs -[eax ecx edx]
+       ; gcrRegs -[eax]
+       ; byrRegs -[ecx edx]
        test     eax, eax
-       mov      ebx, gword ptr [ebp+0x08]
-       ; gcrRegs +[ebx]
-       je       SHORT G_M15178_IG14
-                       ;; size=27 bbWeight=2 PerfScore 17.00
-G_M15178_IG22:        ; bbWeight=2.00, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
-       mov      eax, gword ptr [ebp-0x20]
-       ; gcrRegs +[eax]
-       mov      edx, dword ptr [ebp-0x18]
-       mov      gword ptr [ebp-0x20], eax
-       mov      dword ptr [ebp-0x18], edx
-       jmp      G_M15178_IG09
-                       ;; size=17 bbWeight=2.00 PerfScore 12.00
-G_M15178_IG23:        ; bbWeight=0.89, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax ebx]
-       ; GC ptr vars -{V05}
-       mov      ebx, gword ptr [ebp+0x08]
-       ; gcrRegs +[ebx]
-       jmp      SHORT G_M15178_IG14
-                       ;; size=5 bbWeight=0.89 PerfScore 2.68
-G_M15178_IG24:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       je       SHORT G_M15178_IG13
+       jmp      SHORT G_M15178_IG08
+                       ;; size=21 bbWeight=2 PerfScore 17.00
+G_M15178_IG21:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[ebx esi edi]
+       ; GC ptr vars -{V05}
        mov      eax, edx
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M15178_IG25:        ; bbWeight=0.50, epilog, nogc, extend
+G_M15178_IG22:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -239,6 +216,6 @@ G_M15178_IG25:        ; bbWeight=0.50, epilog, nogc, extend
        ret      4
                        ;; size=10 bbWeight=0.50 PerfScore 2.25
 
-; Total bytes of code 262, prolog size 9, PerfScore 207.20, instruction count 107, allocated bytes for code 262 (MethodHash=c3c1c4b5) for method System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
+; Total bytes of code 228, prolog size 9, PerfScore 188.96, instruction count 96, allocated bytes for code 228 (MethodHash=c3c1c4b5) for method System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
 ; ============================================================
 

-24 (-12.97%) : 282751.dasm - System.Security.Cryptography.Xml.Utils:HasNamespace(System.Xml.XmlElement,System.String,System.String):ubyte (FullOpts)

@@ -8,10 +8,10 @@
 ; 2 inlinees with PGO data; 14 single block inlinees; 6 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T01] (  6,  4.50)     ref  ->  [ebp-0x14]  class-hnd single-def <System.Xml.XmlElement>
+;  V00 arg0         [V00,T01] (  6,  4.50)     ref  ->  edi         class-hnd single-def <System.Xml.XmlElement>
 ;  V01 arg1         [V01,T00] (  7,  4.89)     ref  ->  esi         class-hnd single-def <System.String>
 ;  V02 arg2         [V02,T04] (  5,  2.89)     ref  ->  ebx         class-hnd single-def <System.String>
-;  V03 tmp0         [V03,T02] (  6,  5.79)     ref  ->  registers   class-hnd exact single-def "Inlining Arg" <System.String>
+;  V03 tmp0         [V03,T02] (  6,  5.79)     ref  ->  eax         class-hnd exact single-def "Inlining Arg" <System.String>
 ;  V04 tmp1         [V04,T08] (  2,  1   )   ubyte  ->  eax         "Inline return value spill temp"
 ;  V05 tmp2         [V05,T05] (  2,  2   )   byref  ->  ecx         single-def "impAppendStmt"
 ;* V06 tmp3         [V06    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -27,9 +27,9 @@
 ;* V16 tmp13        [V16    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V17 tmp14        [V17    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V18 tmp15        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
-;  V19 cse0         [V19,T07] (  3,  1.50)     int  ->  [ebp-0x10]  "CSE - moderate"
+;  V19 cse0         [V19,T07] (  3,  1.50)     int  ->  [ebp-0x10]  spill-single-def "CSE - moderate"
 ;
-; Lcl frame size = 8
+; Lcl frame size = 4
 
 G_M26669_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -37,14 +37,14 @@ G_M26669_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 8
+       push     eax
        mov      edi, ecx
        ; gcrRegs +[edi]
        mov      esi, edx
        ; gcrRegs +[esi]
        mov      ebx, gword ptr [ebp+0x08]
        ; gcrRegs +[ebx]
-                       ;; size=16 bbWeight=1 PerfScore 6.00
+                       ;; size=14 bbWeight=1 PerfScore 6.75
 G_M26669_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        push     ebx
        mov      ecx, edi
@@ -61,13 +61,13 @@ G_M26669_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000
        mov      eax, 1
                        ;; size=5 bbWeight=0.50 PerfScore 0.12
 G_M26669_IG04:        ; bbWeight=0.50, epilog, nogc, extend
-       lea      esp, [ebp-0x0C]
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      4
-                       ;; size=10 bbWeight=0.50 PerfScore 2.25
+                       ;; size=8 bbWeight=0.50 PerfScore 2.25
 G_M26669_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[ebx esi edi]
        mov      ecx, edi
@@ -78,45 +78,37 @@ G_M26669_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {e
        call     [eax+0x10]<unknown method>
        ; gcrRegs -[ecx] +[eax]
        cmp      eax, esi
-       je       SHORT G_M26669_IG08
+       je       SHORT G_M26669_IG07
                        ;; size=17 bbWeight=0.50 PerfScore 4.75
 G_M26669_IG06:        ; bbWeight=0.45, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     eax, eax
-       je       SHORT G_M26669_IG13
-                       ;; size=4 bbWeight=0.45 PerfScore 0.56
-G_M26669_IG07:        ; bbWeight=0.45, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, eax
-       ; gcrRegs +[edx]
-       mov      eax, edi
-       mov      edi, dword ptr [ebp-0x10]
-       ; gcrRegs -[edi]
-       jmp      SHORT G_M26669_IG15
-                       ;; size=9 bbWeight=0.45 PerfScore 1.56
-G_M26669_IG08:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax edx esi] +[edi]
+       je       SHORT G_M26669_IG12
+       jmp      SHORT G_M26669_IG14
+                       ;; size=6 bbWeight=0.45 PerfScore 1.45
+G_M26669_IG07:        ; bbWeight=0.50, gcrefRegs=00000088 {ebx edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[eax esi]
        mov      ecx, edi
        ; gcrRegs +[ecx]
-       mov      edi, dword ptr [ebp-0x10]
-       ; gcrRegs -[edi]
-       call     [edi+0x0C]<unknown method>
-       ; gcrRegs -[ecx] +[eax]
+       mov      esi, dword ptr [ebp-0x10]
+       call     [esi+0x0C]<unknown method>
+       ; gcrRegs -[ecx edi] +[eax]
        cmp      eax, ebx
        je       SHORT G_M26669_IG03
                        ;; size=12 bbWeight=0.50 PerfScore 2.75
-G_M26669_IG09:        ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
+G_M26669_IG08:        ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
        test     eax, eax
-       je       SHORT G_M26669_IG13
+       je       SHORT G_M26669_IG12
+                       ;; size=4 bbWeight=0.45 PerfScore 0.56
+G_M26669_IG09:        ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
+       test     ebx, ebx
+       je       SHORT G_M26669_IG12
                        ;; size=4 bbWeight=0.45 PerfScore 0.56
 G_M26669_IG10:        ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
-       test     ebx, ebx
-       je       SHORT G_M26669_IG13
-                       ;; size=4 bbWeight=0.45 PerfScore 0.56
-G_M26669_IG11:        ; bbWeight=0.45, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
        mov      edx, dword ptr [eax+0x04]
        cmp      edx, dword ptr [ebx+0x04]
-       jne      SHORT G_M26669_IG13
+       jne      SHORT G_M26669_IG12
                        ;; size=8 bbWeight=0.45 PerfScore 2.68
-G_M26669_IG12:        ; bbWeight=0.50, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
+G_M26669_IG11:        ; bbWeight=0.50, gcrefRegs=00000009 {eax ebx}, byrefRegs=00000000 {}, byref, isz
        lea      ecx, bword ptr [eax+0x08]
        ; byrRegs +[ecx]
        mov      edx, dword ptr [eax+0x04]
@@ -130,54 +122,43 @@ G_M26669_IG12:        ; bbWeight=0.50, gcrefRegs=00000009 {eax ebx}, byrefRegs=0
        test     eax, eax
        jne      SHORT G_M26669_IG03
                        ;; size=22 bbWeight=0.50 PerfScore 4.25
-G_M26669_IG13:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M26669_IG12:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        xor      eax, eax
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M26669_IG14:        ; bbWeight=0.50, epilog, nogc, extend
-       lea      esp, [ebp-0x0C]
+G_M26669_IG13:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      4
-                       ;; size=10 bbWeight=0.50 PerfScore 2.25
-G_M26669_IG15:        ; bbWeight=0.45, gcVars=00000000 {}, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[eax edx ebx esi]
+                       ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M26669_IG14:        ; bbWeight=0.45, gcVars=00000000 {}, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs +[eax ebx esi edi]
        test     esi, esi
-       je       SHORT G_M26669_IG13
+       je       SHORT G_M26669_IG12
                        ;; size=4 bbWeight=0.45 PerfScore 0.56
-G_M26669_IG16:        ; bbWeight=0.45, gcrefRegs=0000004D {eax edx ebx esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, dword ptr [edx+0x04]
-       cmp      ecx, dword ptr [esi+0x04]
-       mov      gword ptr [ebp-0x14], eax
-       ; GC ptr vars +{V00}
-       jne      SHORT G_M26669_IG13
-                       ;; size=11 bbWeight=0.45 PerfScore 3.13
-G_M26669_IG17:        ; bbWeight=0.50, gcVars=00000002 {V00}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax]
-       lea      ecx, bword ptr [edx+0x08]
+G_M26669_IG15:        ; bbWeight=0.45, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      edx, dword ptr [eax+0x04]
+       cmp      edx, dword ptr [esi+0x04]
+       jne      SHORT G_M26669_IG12
+                       ;; size=8 bbWeight=0.45 PerfScore 2.68
+G_M26669_IG16:        ; bbWeight=0.50, gcrefRegs=000000C9 {eax ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       lea      ecx, bword ptr [eax+0x08]
        ; byrRegs +[ecx]
-       mov      edx, dword ptr [edx+0x04]
-       ; gcrRegs -[edx]
+       mov      edx, dword ptr [eax+0x04]
        add      edx, edx
        push     edx
        lea      edx, bword ptr [esi+0x08]
        ; byrRegs +[edx]
        call     [<unknown method>]
-       ; gcrRegs -[esi]
+       ; gcrRegs -[eax esi]
        ; byrRegs -[ecx edx]
        test     eax, eax
-       je       SHORT G_M26669_IG13
-                       ;; size=22 bbWeight=0.50 PerfScore 4.25
-G_M26669_IG18:        ; bbWeight=0.50, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref, isz
-       mov      esi, gword ptr [ebp-0x14]
-       ; gcrRegs +[esi]
-       mov      dword ptr [ebp-0x10], edi
-       mov      edi, esi
-       ; gcrRegs +[edi]
-       jmp      SHORT G_M26669_IG08
-                       ;; size=10 bbWeight=0.50 PerfScore 2.13
+       je       SHORT G_M26669_IG12
+       jmp      SHORT G_M26669_IG07
+                       ;; size=24 bbWeight=0.50 PerfScore 5.25
 
-; Total bytes of code 185, prolog size 9, PerfScore 44.23, instruction count 80, allocated bytes for code 185 (MethodHash=ea0a97d2) for method System.Security.Cryptography.Xml.Utils:HasNamespace(System.Xml.XmlElement,System.String,System.String):ubyte (FullOpts)
+; Total bytes of code 161, prolog size 7, PerfScore 42.74, instruction count 73, allocated bytes for code 161 (MethodHash=ea0a97d2) for method System.Security.Cryptography.Xml.Utils:HasNamespace(System.Xml.XmlElement,System.String,System.String):ubyte (FullOpts)
 ; ============================================================
 

+23 (+9.47%) : 268673.dasm - System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)

@@ -45,55 +45,25 @@ G_M48074_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      ebx, gword ptr [ebp+0x08]
        ; gcrRegs +[ebx]
                        ;; size=16 bbWeight=1 PerfScore 6.00
-G_M48074_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M48074_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      gword ptr [esi+0x10], 0xD1FFAB1E
        mov      dword ptr [esi+0x1C], -1
        test     edi, edi
-       je       SHORT G_M48074_IG04
-                       ;; size=18 bbWeight=1 PerfScore 3.25
-G_M48074_IG03:        ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       je       G_M48074_IG10
+                       ;; size=22 bbWeight=1 PerfScore 3.25
+G_M48074_IG03:        ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        cmp      dword ptr [edi+0x04], 0
-       jne      SHORT G_M48074_IG05
-                       ;; size=6 bbWeight=0.46 PerfScore 1.85
-G_M48074_IG04:        ; bbWeight=0, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[ebx esi]
-       mov      ecx, 0x13F3
-       mov      edx, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       ; gcrRegs +[eax]
-       mov      edx, eax
-       ; gcrRegs +[edx]
-       mov      ecx, edi
-       ; gcrRegs +[ecx]
-       call     [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
-       ; gcrRegs -[eax ecx edx edi]
-       int3     
-                       ;; size=26 bbWeight=0 PerfScore 0.00
-G_M48074_IG05:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs +[ebx esi edi]
+       je       G_M48074_IG10
+                       ;; size=10 bbWeight=0.46 PerfScore 1.85
+G_M48074_IG04:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        test     ebx, ebx
-       je       SHORT G_M48074_IG07
-                       ;; size=4 bbWeight=1 PerfScore 1.25
-G_M48074_IG06:        ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       je       G_M48074_IG11
+                       ;; size=8 bbWeight=1 PerfScore 1.25
+G_M48074_IG05:        ; bbWeight=0.46, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        cmp      dword ptr [ebx+0x04], 0
-       jne      SHORT G_M48074_IG08
-                       ;; size=6 bbWeight=0.46 PerfScore 1.85
-G_M48074_IG07:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi edi]
-       mov      ecx, 0x13FD
-       mov      edx, 0xD1FFAB1E
-       call     CORINFO_HELP_STRCNS
-       ; gcrRegs +[eax]
-       mov      edx, eax
-       ; gcrRegs +[edx]
-       mov      ecx, ebx
-       ; gcrRegs +[ecx]
-       call     [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
-       ; gcrRegs -[eax ecx edx ebx]
-       int3     
-                       ;; size=26 bbWeight=0 PerfScore 0.00
-G_M48074_IG08:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs +[ebx esi edi]
+       je       G_M48074_IG11
+                       ;; size=10 bbWeight=0.46 PerfScore 1.85
+G_M48074_IG06:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      ecx, 0xD1FFAB1E      ; System.Net.Mail.Message
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
@@ -115,15 +85,15 @@ G_M48074_IG08:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=
        ; gcrRegs -[edi]
        ; byrRegs -[edx]
        test     byte  ptr [D1FFAB1EH], 1      ; global ptr
-       je       SHORT G_M48074_IG12
-                       ;; size=44 bbWeight=1 PerfScore 13.25
-G_M48074_IG09:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       je       G_M48074_IG12
+                       ;; size=48 bbWeight=1 PerfScore 13.25
+G_M48074_IG07:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      ebx, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[ebx]
        cmp      byte  ptr [ebx+0x59], 0
-       je       SHORT G_M48074_IG11
+       je       SHORT G_M48074_IG09
                        ;; size=12 bbWeight=1 PerfScore 6.00
-G_M48074_IG10:        ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
+G_M48074_IG08:        ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref
        mov      edi, gword ptr [esi+0x18]
        ; gcrRegs +[edi]
        mov      ecx, esi
@@ -156,7 +126,7 @@ G_M48074_IG10:        ; bbWeight=0.50, gcrefRegs=00000048 {ebx esi}, byrefRegs=0
        call     [<unknown method>]
        ; gcrRegs -[eax ecx ebx esi edi]
                        ;; size=58 bbWeight=0.50 PerfScore 12.25
-G_M48074_IG11:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+G_M48074_IG09:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -164,14 +134,42 @@ G_M48074_IG11:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        pop      ebp
        ret      4
                        ;; size=10 bbWeight=1 PerfScore 4.50
-G_M48074_IG12:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M48074_IG10:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs +[edi]
+       mov      ecx, 0x13F3
+       mov      edx, 0xD1FFAB1E
+       call     CORINFO_HELP_STRCNS
+       ; gcrRegs +[eax]
+       mov      edx, eax
+       ; gcrRegs +[edx]
+       mov      ecx, edi
+       ; gcrRegs +[ecx]
+       call     [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+       ; gcrRegs -[eax ecx edx edi]
+       int3     
+                       ;; size=26 bbWeight=0 PerfScore 0.00
+G_M48074_IG11:        ; bbWeight=0, gcrefRegs=00000008 {ebx}, byrefRegs=00000000 {}, byref
+       ; gcrRegs +[ebx]
+       mov      ecx, 0x13FD
+       mov      edx, 0xD1FFAB1E
+       call     CORINFO_HELP_STRCNS
+       ; gcrRegs +[eax]
+       mov      edx, eax
+       ; gcrRegs +[edx]
+       mov      ecx, ebx
+       ; gcrRegs +[ecx]
+       call     [System.ArgumentException:ThrowNullOrEmptyException(System.String,System.String)]
+       ; gcrRegs -[eax ecx edx ebx]
+       int3     
+                       ;; size=26 bbWeight=0 PerfScore 0.00
+G_M48074_IG12:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        ; gcrRegs +[esi]
        mov      ecx, 0xD1FFAB1E
        mov      edx, 20
        call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
-       jmp      SHORT G_M48074_IG09
-                       ;; size=17 bbWeight=0 PerfScore 0.00
+       jmp      G_M48074_IG07
+                       ;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 243, prolog size 9, PerfScore 50.20, instruction count 76, allocated bytes for code 243 (MethodHash=398c4435) for method System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
+; Total bytes of code 266, prolog size 9, PerfScore 50.20, instruction count 76, allocated bytes for code 266 (MethodHash=398c4435) for method System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
 ; ============================================================
 

+39 (+9.54%) : 265266.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)

@@ -9,22 +9,22 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] ( 12, 79.50)   byref  ->  esi         this single-def
-;  V01 arg1         [V01,T13] (  6,  4   )   byref  ->  edi         single-def
-;  V02 arg2         [V02,T27] (  2,  1   )   byref  ->  [ebp+0x08]  single-def
-;  V03 loc0         [V03,T04] (  9, 40   )     int  ->  ebx         ld-addr-op
-;  V04 loc1         [V04,T05] (  6, 24.50)     int  ->  [ebp-0x10]  ld-addr-op
-;  V05 loc2         [V05,T14] (  5,  5.50)     int  ->  [ebp-0x14] 
-;  V06 loc3         [V06,T26] (  3,  1.50)     int  ->  [ebp-0x18]  spill-single-def
+;  V01 arg1         [V01,T12] (  6,  7.50)   byref  ->  edi         single-def
+;  V02 arg2         [V02,T16] (  2,  4.50)   byref  ->  [ebp+0x08]  single-def
+;  V03 loc0         [V03,T04] (  9, 40   )     int  ->  [ebp-0x10]  ld-addr-op
+;  V04 loc1         [V04,T05] (  6, 24.50)     int  ->  [ebp-0x14]  ld-addr-op
+;  V05 loc2         [V05,T14] (  5,  5.50)     int  ->  [ebp-0x18] 
+;  V06 loc3         [V06,T27] (  3,  1.50)     int  ->  [ebp-0x1C]  spill-single-def
 ;* V07 loc4         [V07    ] (  0,  0   )  struct ( 8) zero-ref    <System.ReadOnlySpan`1[ushort]>
 ;* V08 tmp0         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V09 tmp1         [V09,T15] (  5,  5   )     ref  ->  ecx         class-hnd single-def "Inlining Arg" <ushort[]>
-;  V10 tmp2         [V10,T16] (  5,  4   )     int  ->  eax         "Inlining Arg"
-;  V11 tmp3         [V11,T19] (  4,  3   )     int  ->  ebx         "Inlining Arg"
-;  V12 tmp4         [V12    ] (  4,  1.50)  struct ( 8) [ebp-0x20]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;  V10 tmp2         [V10,T17] (  5,  4   )     int  ->  ebx         "Inlining Arg"
+;  V11 tmp3         [V11,T20] (  4,  3   )     int  ->  esi         "Inlining Arg"
+;  V12 tmp4         [V12    ] (  4,  1.50)  struct ( 8) [ebp-0x24]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V13 tmp5         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;  V14 tmp6         [V14,T25] (  2,  1.94)     int  ->  ecx         "Span.get_Item index"
+;  V14 tmp6         [V14,T26] (  2,  1.93)     int  ->  ecx         "Span.get_Item index"
 ;  V15 tmp7         [V15,T28] (  2,  0.97)   ubyte  ->  eax         "Inline return value spill temp"
-;  V16 tmp8         [V16,T17] (  4,  3.88)  ushort  ->  ecx         "Inlining Arg"
+;  V16 tmp8         [V16,T18] (  4,  3.88)  ushort  ->  ecx         "Inlining Arg"
 ;* V17 tmp9         [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V18 tmp10        [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V19 tmp11        [V19    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,7 +33,7 @@
 ;* V22 tmp14        [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V23 tmp15        [V23    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V24 tmp16        [V24,T29] (  2,  0.96)   ubyte  ->  eax         "Inline return value spill temp"
-;  V25 tmp17        [V25,T18] (  4,  3.87)  ushort  ->  ecx         "Inlining Arg"
+;  V25 tmp17        [V25,T19] (  4,  3.85)  ushort  ->  ecx         "Inlining Arg"
 ;* V26 tmp18        [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V27 tmp19        [V27    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V28 tmp20        [V28    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -42,10 +42,10 @@
 ;* V31 tmp23        [V31    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V32 tmp24        [V32    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V33 tmp25        [V33,T07] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V34 tmp26        [V34,T02] (  9, 72.01)     int  ->  ebx         "Inline stloc first use temp"
+;  V34 tmp26        [V34,T02] (  9, 72.01)     int  ->  [ebp-0x28]  spill-single-def "Inline stloc first use temp"
 ;* V35 tmp27        [V35    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Span`1[ushort]>
 ;* V36 tmp28        [V36    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;  V37 tmp29        [V37,T08] (  3, 18   )     int  ->  eax         "Inline stloc first use temp"
+;  V37 tmp29        [V37,T08] (  3, 18   )     int  ->  ebx         "Inline stloc first use temp"
 ;  V38 tmp30        [V38,T03] (  5, 44.02)     ref  ->  ecx         class-hnd "Inlining Arg" <ushort[]>
 ;  V39 tmp31        [V39,T06] (  4, 24.01)     int  ->  edx         "Inlining Arg"
 ;* V40 tmp32        [V40    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -65,10 +65,10 @@
 ;* V54 tmp46        [V54    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V55 tmp47        [V55    ] (  0,  0   )   byref  ->  zero-ref    "field V07._reference (fldOffset=0x0)" P-INDEP
 ;* V56 tmp48        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x4)" P-INDEP
-;  V57 tmp49        [V57,T24] (  6,  1.97)   byref  ->  esi         "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp50        [V58,T23] (  6,  1.99)     int  ->  ebx         "field V08._length (fldOffset=0x4)" P-INDEP
-;  V59 tmp51        [V59    ] (  3,  1   )   byref  ->  [ebp-0x20]  do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
-;  V60 tmp52        [V60    ] (  3,  1   )     int  ->  [ebp-0x1C]  do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
+;  V57 tmp49        [V57,T25] (  6,  1.97)   byref  ->  ebx         "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp50        [V58,T24] (  6,  1.98)     int  ->  esi         "field V08._length (fldOffset=0x4)" P-INDEP
+;  V59 tmp51        [V59    ] (  3,  1   )   byref  ->  [ebp-0x24]  do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
+;  V60 tmp52        [V60    ] (  3,  1   )     int  ->  [ebp-0x20]  do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
 ;* V61 tmp53        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp54        [V62    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x4)" P-INDEP
 ;* V63 tmp55        [V63    ] (  0,  0   )   byref  ->  zero-ref    "field V17._reference (fldOffset=0x0)" P-INDEP
@@ -103,7 +103,7 @@
 ;  V92 tmp84        [V92,T11] (  3, 10   )     int  ->  edx         "field V40._length (fldOffset=0x4)" P-INDEP
 ;* V93 tmp85        [V93    ] (  0,  0   )   byref  ->  zero-ref    "field V41._reference (fldOffset=0x0)" P-INDEP
 ;* V94 tmp86        [V94    ] (  0,  0   )     int  ->  zero-ref    "field V41._length (fldOffset=0x4)" P-INDEP
-;  V95 tmp87        [V95,T09] (  2, 16   )   byref  ->  eax         "field V42._reference (fldOffset=0x0)" P-INDEP
+;  V95 tmp87        [V95,T09] (  2, 16   )   byref  ->  ebx         "field V42._reference (fldOffset=0x0)" P-INDEP
 ;* V96 tmp88        [V96    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x4)" P-INDEP
 ;* V97 tmp89        [V97    ] (  0,  0   )   byref  ->  zero-ref    "field V45._reference (fldOffset=0x0)" P-INDEP
 ;* V98 tmp90        [V98    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x4)" P-INDEP
@@ -117,13 +117,13 @@
 ;* V106 tmp98       [V106    ] (  0,  0   )     int  ->  zero-ref    "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V107 tmp99       [V107    ] (  0,  0   )   byref  ->  zero-ref    "field V54._reference (fldOffset=0x0)" P-INDEP
 ;* V108 tmp100      [V108    ] (  0,  0   )     int  ->  zero-ref    "field V54._length (fldOffset=0x4)" P-INDEP
-;  V109 tmp101      [V109,T12] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V110 tmp102      [V110,T20] (  2,  2   )     ref  ->  ecx         "argument with side effect"
-;  V111 tmp103      [V111,T21] (  2,  2   )     ref  ->  ecx         "argument with side effect"
-;  V112 tmp104      [V112,T22] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V109 tmp101      [V109,T13] (  2,  8   )     ref  ->  eax         "argument with side effect"
+;  V110 tmp102      [V110,T21] (  2,  2   )     ref  ->  ebx         "argument with side effect"
+;  V111 tmp103      [V111,T22] (  2,  2   )     ref  ->  ecx         "argument with side effect"
+;  V112 tmp104      [V112,T23] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
 ;  V113 cse0        [V113,T00] (  4, 96   )     int  ->  eax         "CSE - aggressive"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 28
 
 G_M44740_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -131,10 +131,10 @@ G_M44740_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 20
+       sub      esp, 28
        xor      eax, eax
+       mov      dword ptr [ebp-0x24], eax
        mov      dword ptr [ebp-0x20], eax
-       mov      dword ptr [ebp-0x1C], eax
        mov      esi, ecx
        ; byrRegs +[esi]
        mov      edi, edx
@@ -144,42 +144,47 @@ G_M44740_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
        jmp      SHORT G_M44740_IG04
                        ;; size=2 bbWeight=1 PerfScore 2.00
 G_M44740_IG03:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       test     eax, eax
+       test     ebx, ebx
        je       SHORT G_M44740_IG04
-       mov      ecx, gword ptr [esi]
+       mov      ecx, ebx
+       mov      eax, gword ptr [esi]
+       ; gcrRegs +[eax]
+       mov      dword ptr [ebp-0x10], edx
+       push     edx
+       mov      dword ptr [ebp-0x14], ecx
+       push     ecx
+       mov      ecx, eax
        ; gcrRegs +[ecx]
-       push     ebx
-       mov      dword ptr [ebp-0x10], eax
-       push     eax
        mov      edx, 58
        call     [<unknown method>]
-       ; gcrRegs -[ecx]
-       cmp      eax, -1
-       jne      SHORT G_M44740_IG14
-                       ;; size=27 bbWeight=2 PerfScore 21.50
+       ; gcrRegs -[eax ecx]
+       mov      edx, eax
+       cmp      edx, -1
+       jne      G_M44740_IG17
+                       ;; size=40 bbWeight=2 PerfScore 25.00
 G_M44740_IG04:        ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      ebx, dword ptr [esi+0x08]
+       mov      eax, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x28], eax
        mov      ecx, gword ptr [esi]
        ; gcrRegs +[ecx]
        mov      edx, dword ptr [esi+0x04]
-       sub      edx, ebx
+       sub      edx, eax
        test     ecx, ecx
        jne      SHORT G_M44740_IG06
-                       ;; size=14 bbWeight=8 PerfScore 60.00
+                       ;; size=17 bbWeight=8 PerfScore 68.00
 G_M44740_IG05:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs -[ecx]
-       mov      eax, ebx
-       or       eax, edx
+       or       edx, eax
        jne      SHORT G_M44740_IG07
        xor      ecx, ecx
        ; byrRegs +[ecx]
        xor      edx, edx
        jmp      SHORT G_M44740_IG10
-                       ;; size=12 bbWeight=0 PerfScore 0.00
+                       ;; size=10 bbWeight=0 PerfScore 0.00
 G_M44740_IG06:        ; bbWeight=2.01, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs +[ecx]
        ; byrRegs -[ecx]
-       cmp      dword ptr [ecx+0x04], ebx
+       cmp      dword ptr [ecx+0x04], eax
        jae      SHORT G_M44740_IG08
                        ;; size=5 bbWeight=2.01 PerfScore 8.02
 G_M44740_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -191,63 +196,96 @@ G_M44740_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
 G_M44740_IG08:        ; bbWeight=2.00, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs +[ecx]
        ; byrRegs +[esi edi]
-       mov      eax, dword ptr [ecx+0x04]
-       sub      eax, ebx
-       cmp      eax, edx
+       mov      ebx, dword ptr [ecx+0x04]
+       sub      ebx, eax
+       cmp      ebx, edx
        jb       SHORT G_M44740_IG07
                        ;; size=9 bbWeight=2.00 PerfScore 7.01
 G_M44740_IG09:        ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
-       lea      ecx, bword ptr [ecx+2*ebx+0x08]
+       lea      ecx, bword ptr [ecx+2*eax+0x08]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
                        ;; size=4 bbWeight=2 PerfScore 2.00
 G_M44740_IG10:        ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
-       mov      eax, 0xD1FFAB1E
-       ; byrRegs +[eax]
-       push     eax
+       mov      ebx, 0xD1FFAB1E
+       ; byrRegs +[ebx]
+       push     ebx
        push     2
        call     [<unknown method>]
-       ; byrRegs -[eax ecx]
-       test     eax, eax
+       ; byrRegs -[ecx ebx]
+       mov      ebx, eax
+       test     ebx, ebx
        jl       SHORT G_M44740_IG12
-                       ;; size=18 bbWeight=8 PerfScore 52.00
+                       ;; size=20 bbWeight=8 PerfScore 54.00
 G_M44740_IG11:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       lea      ecx, [ebx+eax]
+       mov      eax, dword ptr [ebp-0x28]
+       mov      edx, eax
+       lea      ecx, [edx+ebx]
        add      ecx, 2
        mov      dword ptr [esi+0x08], ecx
        jmp      SHORT G_M44740_IG03
-                       ;; size=11 bbWeight=2 PerfScore 7.50
-G_M44740_IG12:        ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+                       ;; size=16 bbWeight=2 PerfScore 10.00
+G_M44740_IG12:        ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        mov      eax, dword ptr [esi+0x04]
-       cmp      ebx, eax
-       jge      G_M44740_IG29
-                       ;; size=11 bbWeight=32 PerfScore 104.00
+       mov      edx, dword ptr [ebp-0x28]
+       cmp      edx, eax
+       jge      SHORT G_M44740_IG14
+                       ;; size=10 bbWeight=32 PerfScore 136.00
 G_M44740_IG13:        ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
-       mov      ecx, eax
-       sub      ecx, ebx
-       mov      edx, ecx
+       mov      ecx, edx
+       mov      edx, eax
+       sub      edx, ecx
        mov      dword ptr [esi+0x08], eax
-       mov      eax, edx
+       mov      ebx, edx
+       mov      edx, ecx
        jmp      G_M44740_IG03
-                       ;; size=16 bbWeight=16 PerfScore 64.00
-G_M44740_IG14:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x14], eax
-       mov      ecx, eax
-       sub      ecx, ebx
-       mov      dword ptr [ebp-0x18], ecx
-       mov      ecx, gword ptr [esi]
...

+27 (+14.29%) : 145907.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+StructValue:TryGetValue(System.String,byref):ubyte:this (FullOpts)

@@ -10,15 +10,15 @@
 ;
 ;  V00 this         [V00,T14] (  3,  3   )     ref  ->  ecx         this class-hnd single-def <Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+StructValue>
 ;  V01 arg1         [V01,T06] (  6,  9.58)     ref  ->  esi         class-hnd single-def <System.String>
-;  V02 arg2         [V02,T18] (  2,  1   )   byref  ->  [ebp+0x08]  single-def
+;  V02 arg2         [V02,T16] (  2,  4.50)   byref  ->  [ebp+0x08]  single-def
 ;* V03 loc0         [V03    ] (  0,  0   )  struct (20) zero-ref    do-not-enreg[SF] ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
 ;* V04 loc1         [V04    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.String,System.Object]>
-;* V05 loc2         [V05,T19] (  0,  0   )   ubyte  ->  zero-ref   
-;  V06 tmp0         [V06,T12] (  3,  6   )     ref  ->  edi         class-hnd single-def "Inlining Arg" <<unknown class>>
+;* V05 loc2         [V05,T19] (  0,  0   )   ubyte  ->  zero-ref    single-def
+;  V06 tmp0         [V06,T12] (  3,  6   )     ref  ->  ebx         class-hnd single-def "Inlining Arg" <<unknown class>>
 ;* V07 tmp1         [V07    ] (  0,  0   )  struct (20) zero-ref    do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]]>
-;  V08 tmp2         [V08,T03] (  5, 19.15)     ref  ->  eax         class-hnd "Inlining Arg" <System.__Canon>
+;  V08 tmp2         [V08,T03] (  5, 19.15)     ref  ->  [ebp-0x30]  class-hnd "Inlining Arg" <System.__Canon>
 ;  V09 tmp3         [V09,T15] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V10 tmp4         [V10,T10] (  2,  8   )   byref  ->  [ebp-0x2C]  spill-single-def "impAppendStmt"
+;  V10 tmp4         [V10,T10] (  2,  8   )   byref  ->  [ebp-0x34]  spill-single-def "impAppendStmt"
 ;* V11 tmp5         [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp6         [V12    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V13 tmp7         [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -27,24 +27,24 @@
 ;* V16 tmp10        [V16,T11] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V17 tmp11        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <<unknown class>>
 ;* V18 tmp12        [V18    ] (  0,  0   )     ref  ->  zero-ref    "field V04.key (fldOffset=0x0)" P-INDEP
-;  V19 tmp13        [V19,T16] (  2,  2.50)     ref  ->  [ebp-0x30]  "field V04.value (fldOffset=0x4)" P-INDEP
-;  V20 tmp14        [V20,T04] (  4, 16.26)     ref  ->  edi         single-def "V03.[000..004)"
+;  V19 tmp13        [V19,T17] (  2,  2.50)     ref  ->  [ebp-0x38]  "field V04.value (fldOffset=0x4)" P-INDEP
+;  V20 tmp14        [V20,T04] (  4, 16.26)     ref  ->  ebx         single-def "V03.[000..004)"
 ;  V21 tmp15        [V21,T00] (  6, 18.05)     int  ->  [ebp-0x24]  "V03.[004..008)"
-;  V22 tmp16        [V22,T09] (  2,  9   )     int  ->  ebx         single-def "V03.[008..012)"
-;  V23 tmp17        [V23,T07] (  2,  5.26)     ref  ->  eax         "V03.[012..016)"
+;  V22 tmp16        [V22,T09] (  2,  9   )     int  ->  [ebp-0x28]  spill-single-def "V03.[008..012)"
+;  V23 tmp17        [V23,T07] (  2,  5.26)     ref  ->  edi         "V03.[012..016)"
 ;  V24 tmp18        [V24,T08] (  2,  5.26)     ref  ->  ecx         "V03.[016..020)"
 ;* V25 tmp19        [V25    ] (  0,  0   )     ref  ->  zero-ref    single-def "V07.[000..004)"
 ;* V26 tmp20        [V26    ] (  0,  0   )     int  ->  zero-ref    single-def "V07.[004..008)"
-;  V27 tmp21        [V27,T17] (  2,  2   )     int  ->  ebx         single-def "V07.[008..012)"
+;  V27 tmp21        [V27,T18] (  2,  2   )     int  ->  eax         single-def "V07.[008..012)"
 ;* V28 tmp22        [V28    ] (  0,  0   )     ref  ->  zero-ref    single-def "V07.[012..016)"
 ;* V29 tmp23        [V29    ] (  0,  0   )     ref  ->  zero-ref    single-def "V07.[016..020)"
 ;  V30 tmp24        [V30,T01] (  3, 19.57)   byref  ->  ecx         "Spilling address for field-by-field copy"
 ;  V31 tmp25        [V31,T02] (  3, 19.57)     ref  ->  ecx         "arr expr"
 ;  V32 EHSlots      [V32    ] (  1,  1   )  struct (16) [ebp-0x20]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
 ;  V33 cse0         [V33,T05] (  2,  8   )     int  ->  ecx         "CSE - moderate"
-;  V34 cse1         [V34,T13] (  3,  5.57)     int  ->  [ebp-0x28]  "CSE - moderate"
+;  V34 cse1         [V34,T13] (  3,  5.57)     int  ->  [ebp-0x2C]  "CSE - moderate"
 ;
-; Lcl frame size = 36
+; Lcl frame size = 44
 
 G_M33453_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -52,7 +52,7 @@ G_M33453_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 36
+       sub      esp, 44
        xor      eax, eax
        mov      dword ptr [ebp-0x20], eax
        mov      dword ptr [ebp-0x1C], eax
@@ -63,103 +63,143 @@ G_M33453_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=25 bbWeight=1 PerfScore 9.00
 G_M33453_IG02:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[ecx]
-       mov      edi, gword ptr [ecx+0x04]
-       ; gcrRegs +[edi]
-       mov      ebx, dword ptr [edi+0x0C]
+       mov      ebx, gword ptr [ecx+0x04]
+       ; gcrRegs +[ebx]
+       mov      eax, dword ptr [ebx+0x0C]
        xor      edx, edx
+       mov      dword ptr [ebp-0x28], eax
        jmp      SHORT G_M33453_IG08
-                       ;; size=10 bbWeight=1 PerfScore 6.25
-G_M33453_IG03:        ; bbWeight=2.00, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs +[eax]
-       cmp      esi, eax
-       je       SHORT G_M33453_IG12
+                       ;; size=13 bbWeight=1 PerfScore 7.25
+G_M33453_IG03:        ; bbWeight=2.00, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs +[edi]
+       cmp      esi, edi
+       je       SHORT G_M33453_IG11
                        ;; size=4 bbWeight=2.00 PerfScore 2.50
-G_M33453_IG04:        ; bbWeight=1.79, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33453_IG04:        ; bbWeight=1.79, gcrefRegs=000000CA {ecx ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        test     esi, esi
+       mov      gword ptr [ebp-0x30], edi
+       ; GC ptr vars +{V08}
+       mov      gword ptr [ebp-0x38], ecx
+       ; GC ptr vars +{V19}
+       mov      eax, dword ptr [ebp-0x28]
        mov      edx, dword ptr [ebp-0x24]
        je       SHORT G_M33453_IG08
-                       ;; size=7 bbWeight=1.79 PerfScore 4.03
-G_M33453_IG05:        ; bbWeight=1.79, gcrefRegs=000000C3 {eax ecx esi edi}, byrefRegs=00000000 {}, byref, isz
-       test     eax, eax
-       mov      gword ptr [ebp-0x30], ecx
-       ; GC ptr vars +{V19}
+                       ;; size=16 bbWeight=1.79 PerfScore 9.39
+G_M33453_IG05:        ; bbWeight=1.79, gcVars=00020008 {V08 V19}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx edi]
+       mov      ecx, gword ptr [ebp-0x30]
+       ; gcrRegs +[ecx]
+       test     ecx, ecx
        je       SHORT G_M33453_IG08
                        ;; size=7 bbWeight=1.79 PerfScore 4.02
-G_M33453_IG06:        ; bbWeight=1.79, gcVars=00010000 {V19}, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[ecx]
-       mov      ecx, dword ptr [esi+0x04]
-       cmp      ecx, dword ptr [eax+0x04]
-       mov      dword ptr [ebp-0x28], ecx
+G_M33453_IG06:        ; bbWeight=1.79, gcVars=00020000 {V19}, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars -{V08}
+       mov      edi, dword ptr [esi+0x04]
+       cmp      edi, dword ptr [ecx+0x04]
+       mov      dword ptr [ebp-0x2C], edi
        jne      SHORT G_M33453_IG08
                        ;; size=11 bbWeight=1.79 PerfScore 12.51
-G_M33453_IG07:        ; bbWeight=2, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M33453_IG07:        ; bbWeight=2, gcrefRegs=0000004A {ecx ebx esi}, byrefRegs=00000000 {}, byref, isz
        mov      dword ptr [ebp-0x24], edx
-       lea      ecx, bword ptr [esi+0x08]
-       ; byrRegs +[ecx]
-       mov      bword ptr [ebp-0x2C], ecx
+       lea      edi, bword ptr [esi+0x08]
+       ; byrRegs +[edi]
+       mov      bword ptr [ebp-0x34], edi
        ; GC ptr vars +{V10}
-       mov      ecx, dword ptr [ebp-0x28]
-       ; byrRegs -[ecx]
-       add      ecx, ecx
-       push     ecx
-       lea      edx, bword ptr [eax+0x08]
+       mov      edi, dword ptr [ebp-0x2C]
+       ; byrRegs -[edi]
+       add      edi, edi
+       push     edi
+       lea      edx, bword ptr [ecx+0x08]
        ; byrRegs +[edx]
-       mov      ecx, bword ptr [ebp-0x2C]
+       mov      ecx, bword ptr [ebp-0x34]
+       ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
        ; GC ptr vars -{V10}
        call     [<unknown method>]
-       ; gcrRegs -[eax]
        ; byrRegs -[ecx edx]
        test     eax, eax
-       mov      ecx, gword ptr [ebp-0x30]
+       mov      eax, dword ptr [ebp-0x28]
+       mov      ecx, gword ptr [ebp-0x38]
        ; gcrRegs +[ecx]
        mov      edx, dword ptr [ebp-0x24]
-       jne      SHORT G_M33453_IG12
-                       ;; size=37 bbWeight=2 PerfScore 25.00
-G_M33453_IG08:        ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       jne      SHORT G_M33453_IG10
+                       ;; size=40 bbWeight=2 PerfScore 27.00
+G_M33453_IG08:        ; bbWeight=8, gcVars=00000000 {}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[ecx]
        ; GC ptr vars -{V19}
-       cmp      ebx, dword ptr [edi+0x0C]
-       je       SHORT G_M33453_IG10
+       cmp      eax, dword ptr [ebx+0x0C]
+       je       SHORT G_M33453_IG12
                        ;; size=5 bbWeight=8 PerfScore 32.00
 G_M33453_IG09:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi edi]
+       ; gcrRegs -[ebx esi]
        call     [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
        int3     
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M33453_IG10:        ; bbWeight=4, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs +[esi edi]
-       mov      ecx, dword ptr [edi+0x08]
+G_M33453_IG10:        ; bbWeight=1, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs +[ecx]
+       mov      edi, bword ptr [ebp+0x08]
+       ; byrRegs +[edi]
+       jmp      SHORT G_M33453_IG16
+                       ;; size=5 bbWeight=1 PerfScore 3.00
+G_M33453_IG11:        ; bbWeight=1.00, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref, isz
+       ; byrRegs -[edi]
+       mov      edi, bword ptr [ebp+0x08]
+       ; byrRegs +[edi]
+       jmp      SHORT G_M33453_IG16
+                       ;; size=5 bbWeight=1.00 PerfScore 3.00
+G_M33453_IG12:        ; bbWeight=4, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[ecx] +[ebx esi]
+       ; byrRegs -[edi]
+       mov      ecx, dword ptr [ebx+0x08]
        cmp      edx, ecx
        jae      SHORT G_M33453_IG14
                        ;; size=7 bbWeight=4 PerfScore 13.00
-G_M33453_IG11:        ; bbWeight=3.26, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, gword ptr [edi+0x04]
+G_M33453_IG13:        ; bbWeight=3.26, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
+       mov      ecx, gword ptr [ebx+0x04]
        ; gcrRegs +[ecx]
        cmp      edx, dword ptr [ecx+0x04]
-       jae      SHORT G_M33453_IG16
+       jae      SHORT G_M33453_IG18
        lea      ecx, bword ptr [ecx+8*edx+0x08]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
-       mov      eax, gword ptr [ecx]
-       ; gcrRegs +[eax]
+       mov      edi, gword ptr [ecx]
+       ; gcrRegs +[edi]
        mov      ecx, gword ptr [ecx+0x04]
        ; gcrRegs +[ecx]
        ; byrRegs -[ecx]
        inc      edx
        mov      dword ptr [ebp-0x24], edx
-       jmp      SHORT G_M33453_IG03
-                       ;; size=23 bbWeight=3.26 PerfScore 46.49
-G_M33453_IG12:        ; bbWeight=0.50, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[eax esi edi]
-       mov      edx, bword ptr [ebp+0x08]
+       jmp      G_M33453_IG03
+                       ;; size=26 bbWeight=3.26 PerfScore 46.49
+G_M33453_IG14:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[ecx ebx esi edi]
+       xor      eax, eax
+       ; gcrRegs +[eax]
+       mov      edi, bword ptr [ebp+0x08]
+       ; byrRegs +[edi]
+       mov      gword ptr [edi], eax
+                       ;; size=7 bbWeight=4 PerfScore 9.00
+G_M33453_IG15:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
+       ; gcrRegs -[eax]
+       ; byrRegs -[edi]
+       lea      esp, [ebp-0x0C]
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      4
+                       ;; size=10 bbWeight=4 PerfScore 18.00
+G_M33453_IG16:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, gcvars, byref
+       ; gcrRegs +[ecx]
+       ; byrRegs +[edi]
+       mov      edx, edi
        ; byrRegs +[edx]
        call     CORINFO_HELP_CHECKED_ASSIGN_REF_ECX
        ; gcrRegs -[ecx]
-       ; byrRegs -[edx]
...

libraries_tests.run.windows.x86.Release.mch

-40 (-21.74%) : 262666.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)

@@ -10,20 +10,19 @@
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-;  V02 arg2         [V02,T06] (  2,  1.50)     ref  ->  ebx         class-hnd single-def <System.Type>
-;  V03 arg3         [V03,T08] (  2,  1   )     int  ->  [ebp+0x10]  single-def
-;  V04 arg4         [V04,T09] (  2,  1   )     int  ->  [ebp+0x0C]  single-def
-;  V05 arg5         [V05,T03] (  4,  1.75)     ref  ->  edi         class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T05] (  2,  1.50)     ref  ->  ebx         class-hnd single-def <System.Type>
+;  V03 arg3         [V03,T07] (  2,  1   )     int  ->  [ebp+0x10]  single-def
+;  V04 arg4         [V04,T08] (  2,  1   )     int  ->  [ebp+0x0C]  single-def
+;  V05 arg5         [V05,T03] (  3,  1.50)     ref  ->  edi         class-hnd single-def <System.Object>
 ;* V06 loc0         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
 ;  V07 tmp0         [V07,T02] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V08 tmp1         [V08,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V09 tmp2         [V09,T11] (  0,  0   )     int  ->  zero-ref   
+;* V08 tmp1         [V08,T06] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2         [V09,T10] (  0,  0   )     int  ->  zero-ref   
 ;  V10 tmp3         [V10,T01] (  3,  3   )     ref  ->  eax         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;  V11 tmp4         [V11,T10] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
-;  V12 tmp5         [V12,T04] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V13 cse0         [V13,T05] (  3,  1.50)     int  ->  edx         "CSE - moderate"
+;  V11 tmp4         [V11,T09] (  2,  1   )   ubyte  ->  ecx         single-def "Inline stloc first use temp"
+;  V12 tmp5         [V12,T04] (  3,  1.50)     ref  ->  [ebp-0x10]  class-hnd spill-single-def "Inline return value spill temp" <<unknown class>>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 4
 
 G_M49136_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -31,120 +30,100 @@ G_M49136_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
+       push     eax
        mov      esi, edx
        ; gcrRegs +[esi]
        mov      ebx, gword ptr [ebp+0x14]
        ; gcrRegs +[ebx]
        mov      edi, gword ptr [ebp+0x08]
        ; gcrRegs +[edi]
-                       ;; size=14 bbWeight=1 PerfScore 6.50
+                       ;; size=15 bbWeight=1 PerfScore 7.50
 G_M49136_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        cmp      ebx, 0xD1FFAB1E
-       jne      SHORT G_M49136_IG10
+       jne      SHORT G_M49136_IG04
                        ;; size=8 bbWeight=1 PerfScore 1.25
 G_M49136_IG03:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      eax, dword ptr [ebp+0x10]
-       cmp      eax, 1
-       jne      SHORT G_M49136_IG09
-       mov      ecx, dword ptr [ebp+0x0C]
-       cmp      ecx, 1
-       jne      SHORT G_M49136_IG08
+       cmp      dword ptr [ebp+0x10], 1
+       jne      SHORT G_M49136_IG04
+       cmp      dword ptr [ebp+0x0C], 1
+       jne      SHORT G_M49136_IG04
        test     edi, edi
-       je       SHORT G_M49136_IG07
-       mov      edx, dword ptr [edi]
-       cmp      edx, 0xD1FFAB1E
-       mov      dword ptr [ebp+0x10], eax
-       mov      dword ptr [ebp+0x0C], ecx
-       jne      SHORT G_M49136_IG10
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M49136_IG05
-                       ;; size=44 bbWeight=0.50 PerfScore 6.12
-G_M49136_IG04:        ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[ebx esi]
-       mov      edx, edi
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; System.Int32
-       call     CORINFO_HELP_UNBOX
-       ; gcrRegs -[edx edi]
-                       ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M49136_IG05:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       je       SHORT G_M49136_IG04
+       cmp      dword ptr [edi], 0xD1FFAB1E
+       je       SHORT G_M49136_IG06
+                       ;; size=24 bbWeight=0.50 PerfScore 5.62
+G_M49136_IG04:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       movzx    ecx, byte  ptr [esi+0x08]
+       mov      byte  ptr [esi+0x08], 0
+       test     ecx, ecx
+       je       SHORT G_M49136_IG08
+       xor      eax, eax
+       ; gcrRegs +[eax]
+                       ;; size=14 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ecx
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      16
+                       ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax ebx esi edi]
        mov      ecx, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
        xor      ecx, ecx
        mov      dword ptr [eax+0x04], ecx
                        ;; size=15 bbWeight=0.50 PerfScore 1.25
-G_M49136_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+G_M49136_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      16
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M49136_IG07:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+                       ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax] +[ebx esi edi]
-       mov      dword ptr [ebp+0x10], eax
-       mov      dword ptr [ebp+0x0C], ecx
-       jmp      SHORT G_M49136_IG10
-                       ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M49136_IG08:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp+0x10], eax
-       mov      dword ptr [ebp+0x0C], ecx
-       jmp      SHORT G_M49136_IG10
-                       ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M49136_IG09:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
-       mov      dword ptr [ebp+0x10], eax
-                       ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M49136_IG10:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       movzx    eax, byte  ptr [esi+0x08]
-       mov      byte  ptr [esi+0x08], 0
-       test     eax, eax
-       je       SHORT G_M49136_IG12
-       xor      eax, eax
-       ; gcrRegs +[eax]
-                       ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M49136_IG11:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      ebx
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      16
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M49136_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax]
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M49136_IG14
+       je       SHORT G_M49136_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG13:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M49136_IG09:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
                        ;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M49136_IG14:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M49136_IG10:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
-       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
-       ; gcrRegs +[eax]
+       mov      ecx, gword ptr [D1FFAB1EH]      ; static handle
+       ; gcrRegs +[ecx]
+       mov      gword ptr [ebp-0x10], ecx
+       ; GC ptr vars +{V12}
        push     ebx
        push     dword ptr [ebp+0x10]
        push     dword ptr [ebp+0x0C]
        push     edi
        mov      edx, esi
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [eax+0x04]
-       ; gcrRegs +[ecx]
+       mov      ecx, gword ptr [ecx+0x04]
+       mov      eax, gword ptr [ebp-0x10]
+       ; gcrRegs +[eax]
+       ; GC ptr vars -{V12}
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[ecx edx ebx esi edi]
-                       ;; size=21 bbWeight=0.50 PerfScore 5.62
-G_M49136_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+                       ;; size=28 bbWeight=0.50 PerfScore 6.62
+G_M49136_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      16
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
+                       ;; size=8 bbWeight=0.50 PerfScore 2.25
 
-; Total bytes of code 184, prolog size 6, PerfScore 34.06, instruction count 72, allocated bytes for code 184 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
+; Total bytes of code 144, prolog size 7, PerfScore 33.69, instruction count 61, allocated bytes for code 144 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
 ; ============================================================
 

-23 (-20.91%) : 86473.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)

@@ -10,13 +10,12 @@
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-;  V02 arg2         [V02,T01] (  5,  2.75)     ref  ->  edi         class-hnd single-def <System.Object>
-;* V03 tmp0         [V03,T07] (  0,  0   )     int  ->  zero-ref   
+;  V02 arg2         [V02,T01] (  4,  2.50)     ref  ->  edi         class-hnd single-def <System.Object>
+;* V03 tmp0         [V03,T06] (  0,  0   )     int  ->  zero-ref   
 ;  V04 tmp1         [V04,T02] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V05 tmp2         [V05,T05] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;  V06 tmp3         [V06,T06] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
+;* V05 tmp2         [V05,T04] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp3         [V06,T05] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
 ;  V07 tmp4         [V07,T03] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V08 cse0         [V08,T04] (  3,  1.50)     int  ->  edx         "CSE - moderate"
 ;
 ; Lcl frame size = 0
 
@@ -32,58 +31,48 @@ G_M44930_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=10 bbWeight=1 PerfScore 4.50
 G_M44930_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        test     edi, edi
-       je       SHORT G_M44930_IG07
+       je       SHORT G_M44930_IG04
                        ;; size=4 bbWeight=1 PerfScore 1.25
 G_M44930_IG03:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, dword ptr [edi]
-       cmp      edx, 0xD1FFAB1E
-       jne      SHORT G_M44930_IG07
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M44930_IG05
-                       ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M44930_IG04:        ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
-       mov      edx, edi
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; <unknown class>
-       call     [CORINFO_HELP_UNBOX]
-       ; gcrRegs -[edx]
-                       ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M44930_IG05:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       mov      eax, dword ptr [edi+0x04]
-                       ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M44930_IG06:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      4
-                       ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44930_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[esi]
+       cmp      dword ptr [edi], 0xD1FFAB1E
+       je       SHORT G_M44930_IG06
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M44930_IG04:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        movzx    eax, byte  ptr [esi+0x08]
        mov      byte  ptr [esi+0x08], 0
        test     eax, eax
-       je       SHORT G_M44930_IG09
+       je       SHORT G_M44930_IG08
        xor      eax, eax
                        ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M44930_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG05:        ; bbWeight=0.50, epilog, nogc, extend
        pop      esi
        pop      edi
        pop      ebp
        ret      4
                        ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44930_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M44930_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[esi]
+       mov      eax, dword ptr [edi+0x04]
+                       ;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M44930_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      4
+                       ;; size=6 bbWeight=0.50 PerfScore 1.75
+G_M44930_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs +[esi]
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M44930_IG11
+       je       SHORT G_M44930_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M44930_IG10:        ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44930_IG09:        ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
                        ;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M44930_IG11:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44930_IG10:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
        mov      eax, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[eax]
@@ -95,13 +84,13 @@ G_M44930_IG11:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[eax ecx edx esi edi]
                        ;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M44930_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      esi
        pop      edi
        pop      ebp
        ret      4
                        ;; size=6 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 110, prolog size 5, PerfScore 23.94, instruction count 44, allocated bytes for code 110 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
+; Total bytes of code 87, prolog size 5, PerfScore 22.81, instruction count 38, allocated bytes for code 87 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
 ; ============================================================
 

-23 (-20.72%) : 86525.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)

@@ -10,13 +10,12 @@
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-;  V02 arg2         [V02,T01] (  5,  2.75)     ref  ->  edi         class-hnd single-def <System.Object>
-;* V03 tmp0         [V03,T07] (  0,  0   )     int  ->  zero-ref   
+;  V02 arg2         [V02,T01] (  4,  2.50)     ref  ->  edi         class-hnd single-def <System.Object>
+;* V03 tmp0         [V03,T06] (  0,  0   )     int  ->  zero-ref   
 ;  V04 tmp1         [V04,T02] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V05 tmp2         [V05,T05] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;  V06 tmp3         [V06,T06] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
+;* V05 tmp2         [V05,T04] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp3         [V06,T05] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
 ;  V07 tmp4         [V07,T03] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V08 cse0         [V08,T04] (  3,  1.50)     int  ->  edx         "CSE - moderate"
 ;
 ; Lcl frame size = 0
 
@@ -32,58 +31,48 @@ G_M44174_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=10 bbWeight=1 PerfScore 4.50
 G_M44174_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        test     edi, edi
-       je       SHORT G_M44174_IG07
+       je       SHORT G_M44174_IG04
                        ;; size=4 bbWeight=1 PerfScore 1.25
 G_M44174_IG03:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, dword ptr [edi]
-       cmp      edx, 0xD1FFAB1E
-       jne      SHORT G_M44174_IG07
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M44174_IG05
-                       ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M44174_IG04:        ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
-       mov      edx, edi
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; <unknown class>
-       call     [CORINFO_HELP_UNBOX]
-       ; gcrRegs -[edx]
-                       ;; size=13 bbWeight=0.25 PerfScore 0.88
-G_M44174_IG05:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       movzx    eax, byte  ptr [edi+0x04]
-                       ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M44174_IG06:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      4
-                       ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44174_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[esi]
+       cmp      dword ptr [edi], 0xD1FFAB1E
+       je       SHORT G_M44174_IG06
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M44174_IG04:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        movzx    eax, byte  ptr [esi+0x08]
        mov      byte  ptr [esi+0x08], 0
        test     eax, eax
-       je       SHORT G_M44174_IG09
+       je       SHORT G_M44174_IG08
        xor      eax, eax
                        ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M44174_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M44174_IG05:        ; bbWeight=0.50, epilog, nogc, extend
        pop      esi
        pop      edi
        pop      ebp
        ret      4
                        ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44174_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M44174_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[esi]
+       movzx    eax, byte  ptr [edi+0x04]
+                       ;; size=4 bbWeight=0.50 PerfScore 1.00
+G_M44174_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      4
+                       ;; size=6 bbWeight=0.50 PerfScore 1.75
+G_M44174_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs +[esi]
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M44174_IG11
+       je       SHORT G_M44174_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M44174_IG10:        ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44174_IG09:        ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
                        ;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M44174_IG11:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44174_IG10:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
        mov      eax, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[eax]
@@ -95,13 +84,13 @@ G_M44174_IG11:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[eax ecx edx esi edi]
                        ;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M44174_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M44174_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      esi
        pop      edi
        pop      ebp
        ret      4
                        ;; size=6 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 111, prolog size 5, PerfScore 23.94, instruction count 44, allocated bytes for code 111 (MethodHash=493d5371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
+; Total bytes of code 88, prolog size 5, PerfScore 22.81, instruction count 38, allocated bytes for code 88 (MethodHash=493d5371) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
 ; ============================================================
 

+42 (+12.92%) : 449687.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)

@@ -5,14 +5,14 @@
 ; optimized using Dynamic PGO
 ; ebp based frame
 ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 725
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 725
 ; 3 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  8,  7   )     ref  ->  esi         this class-hnd single-def <Xunit.Sdk.MessageBus>
+;  V00 this         [V00,T01] (  9,  7   )     ref  ->  esi         this class-hnd single-def <Xunit.Sdk.MessageBus>
 ;  V01 arg1         [V01,T03] (  5,  3   )     ref  ->  [ebp-0x14]  class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
 ;  V02 tmp0         [V02,T16] (  3,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V03 tmp1         [V03,T05] (  3,  4   )     ref  ->  [ebp-0x18]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+;  V03 tmp1         [V03,T07] (  3,  4   )     ref  ->  [ebp-0x18]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
 ;* V04 tmp2         [V04,T14] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V05 tmp3         [V05,T00] (  5, 10   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
 ;  V06 tmp4         [V06,T09] (  3,  3   )     ref  ->  [ebp-0x1C]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
@@ -20,15 +20,15 @@
 ;  V08 tmp6         [V08,T10] (  3,  3   )     int  ->  edi         "Inline stloc first use temp"
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V10 tmp8         [V10,T12] (  3,  2   )     int  ->  edx         "Inline stloc first use temp"
-;  V11 tmp9         [V11,T06] (  3,  4   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;  V11 tmp9         [V11,T04] (  5,  4   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V12 tmp10        [V12,T13] (  2,  2   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
 ;* V13 tmp11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-;  V14 tmp12        [V14,T07] (  2,  4   )     ref  ->  ecx         class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-;  V15 tmp13        [V15,T08] (  4,  3   )     ref  ->  ecx        
+;  V14 tmp12        [V14,T05] (  4,  4   )     ref  ->  ecx         class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+;  V15 tmp13        [V15,T08] (  6,  3   )     ref  ->  ecx        
 ;  V16 tmp14        [V16,T15] (  5,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
 ;* V17 tmp15        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
 ;  V18 tmp16        [V18,T17] (  2,  0   )     ref  ->  edx         single-def "argument with side effect"
-;  V19 cse0         [V19,T04] (  4,  4   )   byref  ->  registers   "CSE - moderate"
+;  V19 cse0         [V19,T06] (  4,  4   )   byref  ->  registers   "CSE - moderate"
 ;  V20 cse1         [V20,T11] (  3,  3   )     int  ->  ecx         "CSE - moderate"
 ;
 ; Lcl frame size = 16
@@ -45,13 +45,90 @@ G_M26012_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      esi, ecx
        ; gcrRegs +[esi]
                        ;; size=14 bbWeight=1 PerfScore 5.75
-G_M26012_IG02:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG02:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
        cmp      byte  ptr [esi+0x15], 0
-       je       SHORT G_M26012_IG04
-                       ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       jne      G_M26012_IG08
+       cmp      byte  ptr [esi+0x16], 0
+       jne      G_M26012_IG09
+                       ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       mov      ecx, gword ptr [esi+0x08]
+       ; gcrRegs +[ecx]
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V03}
+       mov      ebx, gword ptr [ecx+0x08]
+       ; gcrRegs +[ebx]
+       mov      edx, gword ptr [ebx+0x04]
+       ; gcrRegs +[edx]
+       mov      gword ptr [ebp-0x1C], edx
+       ; GC ptr vars +{V06}
+                       ;; size=15 bbWeight=1 PerfScore 8.00
+G_M26012_IG04:        ; bbWeight=1, gcVars=00000288 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       mov      eax, dword ptr [ebx+0x94]
+       mov      dword ptr [ebp-0x10], eax
+       mov      edi, eax
+       and      edi, dword ptr [ebx+0x0C]
+       cmp      edi, dword ptr [edx+0x04]
+       jae      SHORT G_M26012_IG07
+       lea      edi, bword ptr [edx+8*edi+0x08]
+       ; byrRegs +[edi]
+       mov      edx, dword ptr [edi+0x04]
+       ; gcrRegs -[edx]
+       sub      edx, eax
+       jne      G_M26012_IG11
+       lea      edx, bword ptr [ebx+0x94]
+       ; byrRegs +[edx]
+       lea      ecx, [eax+0x01]
+       lock     
+       cmpxchg  dword ptr [edx], ecx
+       cmp      eax, dword ptr [ebp-0x10]
+       mov      edx, gword ptr [ebp-0x1C]
+       ; gcrRegs +[edx]
+       ; byrRegs -[edx]
+       jne      SHORT G_M26012_IG04
+       mov      eax, edi
+       ; byrRegs +[eax]
+       mov      edi, gword ptr [ebp-0x14]
+       ; gcrRegs +[edi]
+       ; byrRegs -[edi]
+       mov      edx, eax
+       ; gcrRegs -[edx]
+       ; byrRegs +[edx]
+       ; GC ptr vars -{V01 V03 V06}
+       call     CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
+       ; gcrRegs -[ebx edi]
+       ; byrRegs -[edx]
+       mov      dword ptr [eax+0x04], ecx
+       mov      ebx, gword ptr [esi+0x10]
+       ; gcrRegs +[ebx]
+       mov      ecx, gword ptr [ebx+0x04]
+       ; gcrRegs +[ecx]
+       test     ecx, ecx
+       je       G_M26012_IG12
+                       ;; size=84 bbWeight=1 PerfScore 46.25
+G_M26012_IG05:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[ebx]
+       ; byrRegs -[eax]
+       call     [<unknown method>]
+       ; gcrRegs -[ecx]
+       test     eax, eax
+       je       G_M26012_IG14
+       movzx    eax, byte  ptr [esi+0x14]
+                       ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06:        ; bbWeight=1, epilog, nogc, extend
+       lea      esp, [ebp-0x0C]
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      
+                       ;; size=8 bbWeight=1 PerfScore 3.50
+G_M26012_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[esi]
-       ; GC ptr vars -{V01}
+       call     CORINFO_HELP_RNGCHKFAIL
+                       ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
@@ -71,13 +148,9 @@ G_M26012_IG03:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
        call     CORINFO_HELP_THROW
        ; gcrRegs -[ecx edi]
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M26012_IG04:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG09:        ; bbWeight=0, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[esi]
        ; GC ptr vars +{V01 V03}
-       cmp      byte  ptr [esi+0x16], 0
-       je       SHORT G_M26012_IG06
-                       ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      edi, gword ptr [ebp-0x14]
        ; gcrRegs +[edi]
        mov      edx, edi
@@ -91,96 +164,38 @@ G_M26012_IG05:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      byte  ptr [esi+0x14], 0
        mov      gword ptr [ebp-0x14], edi
        ; GC ptr vars +{V01}
-                       ;; size=26 bbWeight=0 PerfScore 0.00
-G_M26012_IG06:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax edi]
-       mov      ecx, gword ptr [esi+0x08]
-       ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x18], ecx
-       ; GC ptr vars +{V03}
-       mov      ebx, gword ptr [ecx+0x08]
-       ; gcrRegs +[ebx]
-       mov      edx, gword ptr [ebx+0x04]
-       ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x1C], edx
-       ; GC ptr vars +{V06}
-                       ;; size=15 bbWeight=1 PerfScore 8.00
-G_M26012_IG07:        ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[ecx]
-       mov      eax, dword ptr [ebx+0x94]
-       mov      dword ptr [ebp-0x10], eax
-       mov      edi, eax
-       and      edi, dword ptr [ebx+0x0C]
-       cmp      edi, dword ptr [edx+0x04]
-       jae      G_M26012_IG16
-       lea      edi, bword ptr [edx+8*edi+0x08]
-       ; byrRegs +[edi]
-       mov      edx, dword ptr [edi+0x04]
-       ; gcrRegs -[edx]
-       sub      edx, eax
-       je       SHORT G_M26012_IG11
-                       ;; size=34 bbWeight=1 PerfScore 14.50
-G_M26012_IG08:        ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[edi]
+       jmp      G_M26012_IG03
+                       ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26012_IG10:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[eax]
+       ; GC ptr vars -{V01}
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V01}
+       jmp      G_M26012_IG03
+                       ;; size=8 bbWeight=0 PerfScore 0.00
+G_M26012_IG11:        ; bbWeight=0, gcVars=00000288 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[edi] +[ebx]
+       ; GC ptr vars +{V03 V06 V07}
        mov      edi, gword ptr [ebp-0x14]
        ; gcrRegs +[edi]
        test     edx, edx
        mov      edx, gword ptr [ebp-0x1C]
        ; gcrRegs +[edx]
-       jge      SHORT G_M26012_IG09
-       jmp      SHORT G_M26012_IG17
-                       ;; size=12 bbWeight=0 PerfScore 0.00
-G_M26012_IG09:        ; bbWeight=0, gcVars=00000220 {V03 V06}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V01 V03}
-       mov      gword ptr [ebp-0x14], edi
-       ; GC ptr vars +{V01}
-       jmp      SHORT G_M26012_IG07
-                       ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG10:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[edx ebx]
-       ; GC ptr vars -{V01 V06}
-       mov      gword ptr [ebp-0x14], edi
-       ; GC ptr vars +{V01}
-       jmp      SHORT G_M26012_IG06
-                       ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG11:        ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
-       ; gcrRegs -[edi] +[ebx]
-       ; byrRegs +[edi]
-       ; GC ptr vars +{V03 V05 V06}
-       lea      edx, bword ptr [ebx+0x94]
-       ; byrRegs +[edx]
-       lea      ecx, [eax+0x01]
-       lock     
-       cmpxchg  dword ptr [edx], ecx
-       cmp      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x1C]
-       ; gcrRegs +[edx]
-       ; byrRegs -[edx]
-       jne      SHORT G_M26012_IG07
-       mov      eax, edi
-       ; byrRegs +[eax]
-       mov      edi, gword ptr [ebp-0x14]
-       ; gcrRegs +[edi]
-       ; byrRegs -[edi]
-       mov      edx, eax
-       ; gcrRegs -[edx]
-       ; byrRegs +[edx]
-       ; GC ptr vars -{V01 V03 V05 V06}
-       call     CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
-       ; gcrRegs -[ebx edi]
-       ; byrRegs -[edx]
-       mov      dword ptr [eax+0x04], ecx
-                       ;; size=36 bbWeight=1 PerfScore 26.50
-G_M26012_IG12:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[eax]
+       jge      SHORT G_M26012_IG13
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
...

+42 (+12.92%) : 631115.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)

@@ -5,14 +5,14 @@
 ; optimized using Dynamic PGO
 ; ebp based frame
 ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 10
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 10
 ; 3 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  8,  7   )     ref  ->  esi         this class-hnd single-def <Xunit.Sdk.MessageBus>
+;  V00 this         [V00,T01] (  9,  7   )     ref  ->  esi         this class-hnd single-def <Xunit.Sdk.MessageBus>
 ;  V01 arg1         [V01,T03] (  5,  3   )     ref  ->  [ebp-0x14]  class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
 ;  V02 tmp0         [V02,T16] (  3,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V03 tmp1         [V03,T05] (  3,  4   )     ref  ->  [ebp-0x18]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+;  V03 tmp1         [V03,T07] (  3,  4   )     ref  ->  [ebp-0x18]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
 ;* V04 tmp2         [V04,T14] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V05 tmp3         [V05,T00] (  5, 10   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
 ;  V06 tmp4         [V06,T09] (  3,  3   )     ref  ->  [ebp-0x1C]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
@@ -20,15 +20,15 @@
 ;  V08 tmp6         [V08,T10] (  3,  3   )     int  ->  edi         "Inline stloc first use temp"
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V10 tmp8         [V10,T12] (  3,  2   )     int  ->  edx         "Inline stloc first use temp"
-;  V11 tmp9         [V11,T06] (  3,  4   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;  V11 tmp9         [V11,T04] (  5,  4   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V12 tmp10        [V12,T13] (  2,  2   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
 ;* V13 tmp11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-;  V14 tmp12        [V14,T07] (  2,  4   )     ref  ->  ecx         class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-;  V15 tmp13        [V15,T08] (  4,  3   )     ref  ->  ecx        
+;  V14 tmp12        [V14,T05] (  4,  4   )     ref  ->  ecx         class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+;  V15 tmp13        [V15,T08] (  6,  3   )     ref  ->  ecx        
 ;  V16 tmp14        [V16,T15] (  5,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
 ;* V17 tmp15        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
 ;  V18 tmp16        [V18,T17] (  2,  0   )     ref  ->  edx         single-def "argument with side effect"
-;  V19 cse0         [V19,T04] (  4,  4   )   byref  ->  registers   "CSE - moderate"
+;  V19 cse0         [V19,T06] (  4,  4   )   byref  ->  registers   "CSE - moderate"
 ;  V20 cse1         [V20,T11] (  3,  3   )     int  ->  ecx         "CSE - moderate"
 ;
 ; Lcl frame size = 16
@@ -45,13 +45,90 @@ G_M26012_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      esi, ecx
        ; gcrRegs +[esi]
                        ;; size=14 bbWeight=1 PerfScore 5.75
-G_M26012_IG02:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG02:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
        cmp      byte  ptr [esi+0x15], 0
-       je       SHORT G_M26012_IG04
-                       ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       jne      G_M26012_IG08
+       cmp      byte  ptr [esi+0x16], 0
+       jne      G_M26012_IG09
+                       ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       mov      ecx, gword ptr [esi+0x08]
+       ; gcrRegs +[ecx]
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V03}
+       mov      ebx, gword ptr [ecx+0x08]
+       ; gcrRegs +[ebx]
+       mov      edx, gword ptr [ebx+0x04]
+       ; gcrRegs +[edx]
+       mov      gword ptr [ebp-0x1C], edx
+       ; GC ptr vars +{V06}
+                       ;; size=15 bbWeight=1 PerfScore 8.00
+G_M26012_IG04:        ; bbWeight=1, gcVars=00000288 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       mov      eax, dword ptr [ebx+0x94]
+       mov      dword ptr [ebp-0x10], eax
+       mov      edi, eax
+       and      edi, dword ptr [ebx+0x0C]
+       cmp      edi, dword ptr [edx+0x04]
+       jae      SHORT G_M26012_IG07
+       lea      edi, bword ptr [edx+8*edi+0x08]
+       ; byrRegs +[edi]
+       mov      edx, dword ptr [edi+0x04]
+       ; gcrRegs -[edx]
+       sub      edx, eax
+       jne      G_M26012_IG11
+       lea      edx, bword ptr [ebx+0x94]
+       ; byrRegs +[edx]
+       lea      ecx, [eax+0x01]
+       lock     
+       cmpxchg  dword ptr [edx], ecx
+       cmp      eax, dword ptr [ebp-0x10]
+       mov      edx, gword ptr [ebp-0x1C]
+       ; gcrRegs +[edx]
+       ; byrRegs -[edx]
+       jne      SHORT G_M26012_IG04
+       mov      eax, edi
+       ; byrRegs +[eax]
+       mov      edi, gword ptr [ebp-0x14]
+       ; gcrRegs +[edi]
+       ; byrRegs -[edi]
+       mov      edx, eax
+       ; gcrRegs -[edx]
+       ; byrRegs +[edx]
+       ; GC ptr vars -{V01 V03 V06}
+       call     CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
+       ; gcrRegs -[ebx edi]
+       ; byrRegs -[edx]
+       mov      dword ptr [eax+0x04], ecx
+       mov      ebx, gword ptr [esi+0x10]
+       ; gcrRegs +[ebx]
+       mov      ecx, gword ptr [ebx+0x04]
+       ; gcrRegs +[ecx]
+       test     ecx, ecx
+       je       G_M26012_IG12
+                       ;; size=84 bbWeight=1 PerfScore 46.25
+G_M26012_IG05:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[ebx]
+       ; byrRegs -[eax]
+       call     [<unknown method>]
+       ; gcrRegs -[ecx]
+       test     eax, eax
+       je       G_M26012_IG14
+       movzx    eax, byte  ptr [esi+0x14]
+                       ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06:        ; bbWeight=1, epilog, nogc, extend
+       lea      esp, [ebp-0x0C]
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      
+                       ;; size=8 bbWeight=1 PerfScore 3.50
+G_M26012_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[esi]
-       ; GC ptr vars -{V01}
+       call     CORINFO_HELP_RNGCHKFAIL
+                       ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
@@ -71,13 +148,9 @@ G_M26012_IG03:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
        call     CORINFO_HELP_THROW
        ; gcrRegs -[ecx edi]
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M26012_IG04:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG09:        ; bbWeight=0, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[esi]
        ; GC ptr vars +{V01 V03}
-       cmp      byte  ptr [esi+0x16], 0
-       je       SHORT G_M26012_IG06
-                       ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      edi, gword ptr [ebp-0x14]
        ; gcrRegs +[edi]
        mov      edx, edi
@@ -91,96 +164,38 @@ G_M26012_IG05:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      byte  ptr [esi+0x14], 0
        mov      gword ptr [ebp-0x14], edi
        ; GC ptr vars +{V01}
-                       ;; size=26 bbWeight=0 PerfScore 0.00
-G_M26012_IG06:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax edi]
-       mov      ecx, gword ptr [esi+0x08]
-       ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x18], ecx
-       ; GC ptr vars +{V03}
-       mov      ebx, gword ptr [ecx+0x08]
-       ; gcrRegs +[ebx]
-       mov      edx, gword ptr [ebx+0x04]
-       ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x1C], edx
-       ; GC ptr vars +{V06}
-                       ;; size=15 bbWeight=1 PerfScore 8.00
-G_M26012_IG07:        ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[ecx]
-       mov      eax, dword ptr [ebx+0x94]
-       mov      dword ptr [ebp-0x10], eax
-       mov      edi, eax
-       and      edi, dword ptr [ebx+0x0C]
-       cmp      edi, dword ptr [edx+0x04]
-       jae      G_M26012_IG16
-       lea      edi, bword ptr [edx+8*edi+0x08]
-       ; byrRegs +[edi]
-       mov      edx, dword ptr [edi+0x04]
-       ; gcrRegs -[edx]
-       sub      edx, eax
-       je       SHORT G_M26012_IG11
-                       ;; size=34 bbWeight=1 PerfScore 14.50
-G_M26012_IG08:        ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[edi]
+       jmp      G_M26012_IG03
+                       ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26012_IG10:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[eax]
+       ; GC ptr vars -{V01}
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V01}
+       jmp      G_M26012_IG03
+                       ;; size=8 bbWeight=0 PerfScore 0.00
+G_M26012_IG11:        ; bbWeight=0, gcVars=00000288 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[edi] +[ebx]
+       ; GC ptr vars +{V03 V06 V07}
        mov      edi, gword ptr [ebp-0x14]
        ; gcrRegs +[edi]
        test     edx, edx
        mov      edx, gword ptr [ebp-0x1C]
        ; gcrRegs +[edx]
-       jge      SHORT G_M26012_IG09
-       jmp      SHORT G_M26012_IG17
-                       ;; size=12 bbWeight=0 PerfScore 0.00
-G_M26012_IG09:        ; bbWeight=0, gcVars=00000220 {V03 V06}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V01 V03}
-       mov      gword ptr [ebp-0x14], edi
-       ; GC ptr vars +{V01}
-       jmp      SHORT G_M26012_IG07
-                       ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG10:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[edx ebx]
-       ; GC ptr vars -{V01 V06}
-       mov      gword ptr [ebp-0x14], edi
-       ; GC ptr vars +{V01}
-       jmp      SHORT G_M26012_IG06
-                       ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG11:        ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
-       ; gcrRegs -[edi] +[ebx]
-       ; byrRegs +[edi]
-       ; GC ptr vars +{V03 V05 V06}
-       lea      edx, bword ptr [ebx+0x94]
-       ; byrRegs +[edx]
-       lea      ecx, [eax+0x01]
-       lock     
-       cmpxchg  dword ptr [edx], ecx
-       cmp      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x1C]
-       ; gcrRegs +[edx]
-       ; byrRegs -[edx]
-       jne      SHORT G_M26012_IG07
-       mov      eax, edi
-       ; byrRegs +[eax]
-       mov      edi, gword ptr [ebp-0x14]
-       ; gcrRegs +[edi]
-       ; byrRegs -[edi]
-       mov      edx, eax
-       ; gcrRegs -[edx]
-       ; byrRegs +[edx]
-       ; GC ptr vars -{V01 V03 V05 V06}
-       call     CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
-       ; gcrRegs -[ebx edi]
-       ; byrRegs -[edx]
-       mov      dword ptr [eax+0x04], ecx
-                       ;; size=36 bbWeight=1 PerfScore 26.50
-G_M26012_IG12:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[eax]
+       jge      SHORT G_M26012_IG13
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
...

+42 (+12.92%) : 381440.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)

@@ -5,14 +5,14 @@
 ; optimized using Dynamic PGO
 ; ebp based frame
 ; fully interruptible
-; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 151
+; with Dynamic PGO: edge weights are valid, and fgCalledCount is 151
 ; 3 inlinees with PGO data; 3 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  8,  7   )     ref  ->  esi         this class-hnd single-def <Xunit.Sdk.MessageBus>
+;  V00 this         [V00,T01] (  9,  7   )     ref  ->  esi         this class-hnd single-def <Xunit.Sdk.MessageBus>
 ;  V01 arg1         [V01,T03] (  5,  3   )     ref  ->  [ebp-0x14]  class-hnd single-def <Xunit.Abstractions.IMessageSinkMessage>
 ;  V02 tmp0         [V02,T16] (  3,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V03 tmp1         [V03,T05] (  3,  4   )     ref  ->  [ebp-0x18]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
+;  V03 tmp1         [V03,T07] (  3,  4   )     ref  ->  [ebp-0x18]  class-hnd spill-single-def "Inlining Arg" <<unknown class>>
 ;* V04 tmp2         [V04,T14] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;  V05 tmp3         [V05,T00] (  5, 10   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]>
 ;  V06 tmp4         [V06,T09] (  3,  3   )     ref  ->  [ebp-0x1C]  class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
@@ -20,15 +20,15 @@
 ;  V08 tmp6         [V08,T10] (  3,  3   )     int  ->  edi         "Inline stloc first use temp"
 ;* V09 tmp7         [V09    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V10 tmp8         [V10,T12] (  3,  2   )     int  ->  edx         "Inline stloc first use temp"
-;  V11 tmp9         [V11,T06] (  3,  4   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
+;  V11 tmp9         [V11,T04] (  5,  4   )     ref  ->  ebx         class-hnd exact single-def "Inlining Arg" <<unknown class>>
 ;  V12 tmp10        [V12,T13] (  2,  2   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
 ;* V13 tmp11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-;  V14 tmp12        [V14,T07] (  2,  4   )     ref  ->  ecx         class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
-;  V15 tmp13        [V15,T08] (  4,  3   )     ref  ->  ecx        
+;  V14 tmp12        [V14,T05] (  4,  4   )     ref  ->  ecx         class-hnd exact single-def "dup spill" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
+;  V15 tmp13        [V15,T08] (  6,  3   )     ref  ->  ecx        
 ;  V16 tmp14        [V16,T15] (  5,  0   )     ref  ->  edi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
 ;* V17 tmp15        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.Win32.SafeHandles.SafeWaitHandle>
 ;  V18 tmp16        [V18,T17] (  2,  0   )     ref  ->  edx         single-def "argument with side effect"
-;  V19 cse0         [V19,T04] (  4,  4   )   byref  ->  registers   "CSE - moderate"
+;  V19 cse0         [V19,T06] (  4,  4   )   byref  ->  registers   "CSE - moderate"
 ;  V20 cse1         [V20,T11] (  3,  3   )     int  ->  ecx         "CSE - moderate"
 ;
 ; Lcl frame size = 16
@@ -45,13 +45,90 @@ G_M26012_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      esi, ecx
        ; gcrRegs +[esi]
                        ;; size=14 bbWeight=1 PerfScore 5.75
-G_M26012_IG02:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG02:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
        cmp      byte  ptr [esi+0x15], 0
-       je       SHORT G_M26012_IG04
-                       ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG03:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       jne      G_M26012_IG08
+       cmp      byte  ptr [esi+0x16], 0
+       jne      G_M26012_IG09
+                       ;; size=20 bbWeight=1 PerfScore 8.00
+G_M26012_IG03:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       mov      ecx, gword ptr [esi+0x08]
+       ; gcrRegs +[ecx]
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V03}
+       mov      ebx, gword ptr [ecx+0x08]
+       ; gcrRegs +[ebx]
+       mov      edx, gword ptr [ebx+0x04]
+       ; gcrRegs +[edx]
+       mov      gword ptr [ebp-0x1C], edx
+       ; GC ptr vars +{V06}
+                       ;; size=15 bbWeight=1 PerfScore 8.00
+G_M26012_IG04:        ; bbWeight=1, gcVars=00000288 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       mov      eax, dword ptr [ebx+0x94]
+       mov      dword ptr [ebp-0x10], eax
+       mov      edi, eax
+       and      edi, dword ptr [ebx+0x0C]
+       cmp      edi, dword ptr [edx+0x04]
+       jae      SHORT G_M26012_IG07
+       lea      edi, bword ptr [edx+8*edi+0x08]
+       ; byrRegs +[edi]
+       mov      edx, dword ptr [edi+0x04]
+       ; gcrRegs -[edx]
+       sub      edx, eax
+       jne      G_M26012_IG11
+       lea      edx, bword ptr [ebx+0x94]
+       ; byrRegs +[edx]
+       lea      ecx, [eax+0x01]
+       lock     
+       cmpxchg  dword ptr [edx], ecx
+       cmp      eax, dword ptr [ebp-0x10]
+       mov      edx, gword ptr [ebp-0x1C]
+       ; gcrRegs +[edx]
+       ; byrRegs -[edx]
+       jne      SHORT G_M26012_IG04
+       mov      eax, edi
+       ; byrRegs +[eax]
+       mov      edi, gword ptr [ebp-0x14]
+       ; gcrRegs +[edi]
+       ; byrRegs -[edi]
+       mov      edx, eax
+       ; gcrRegs -[edx]
+       ; byrRegs +[edx]
+       ; GC ptr vars -{V01 V03 V06}
+       call     CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
+       ; gcrRegs -[ebx edi]
+       ; byrRegs -[edx]
+       mov      dword ptr [eax+0x04], ecx
+       mov      ebx, gword ptr [esi+0x10]
+       ; gcrRegs +[ebx]
+       mov      ecx, gword ptr [ebx+0x04]
+       ; gcrRegs +[ecx]
+       test     ecx, ecx
+       je       G_M26012_IG12
+                       ;; size=84 bbWeight=1 PerfScore 46.25
+G_M26012_IG05:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[ebx]
+       ; byrRegs -[eax]
+       call     [<unknown method>]
+       ; gcrRegs -[ecx]
+       test     eax, eax
+       je       G_M26012_IG14
+       movzx    eax, byte  ptr [esi+0x14]
+                       ;; size=18 bbWeight=1 PerfScore 6.25
+G_M26012_IG06:        ; bbWeight=1, epilog, nogc, extend
+       lea      esp, [ebp-0x0C]
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      
+                       ;; size=8 bbWeight=1 PerfScore 3.50
+G_M26012_IG07:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
        ; gcrRegs -[esi]
-       ; GC ptr vars -{V01}
+       call     CORINFO_HELP_RNGCHKFAIL
+                       ;; size=5 bbWeight=0 PerfScore 0.00
+G_M26012_IG08:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
@@ -71,13 +148,9 @@ G_M26012_IG03:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, b
        call     CORINFO_HELP_THROW
        ; gcrRegs -[ecx edi]
                        ;; size=44 bbWeight=0 PerfScore 0.00
-G_M26012_IG04:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M26012_IG09:        ; bbWeight=0, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs +[esi]
        ; GC ptr vars +{V01 V03}
-       cmp      byte  ptr [esi+0x16], 0
-       je       SHORT G_M26012_IG06
-                       ;; size=6 bbWeight=1 PerfScore 4.00
-G_M26012_IG05:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      edi, gword ptr [ebp-0x14]
        ; gcrRegs +[edi]
        mov      edx, edi
@@ -91,96 +164,38 @@ G_M26012_IG05:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        mov      byte  ptr [esi+0x14], 0
        mov      gword ptr [ebp-0x14], edi
        ; GC ptr vars +{V01}
-                       ;; size=26 bbWeight=0 PerfScore 0.00
-G_M26012_IG06:        ; bbWeight=1, gcVars=00000008 {V01}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax edi]
-       mov      ecx, gword ptr [esi+0x08]
-       ; gcrRegs +[ecx]
-       mov      gword ptr [ebp-0x18], ecx
-       ; GC ptr vars +{V03}
-       mov      ebx, gword ptr [ecx+0x08]
-       ; gcrRegs +[ebx]
-       mov      edx, gword ptr [ebx+0x04]
-       ; gcrRegs +[edx]
-       mov      gword ptr [ebp-0x1C], edx
-       ; GC ptr vars +{V06}
-                       ;; size=15 bbWeight=1 PerfScore 8.00
-G_M26012_IG07:        ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=0000004C {edx ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[ecx]
-       mov      eax, dword ptr [ebx+0x94]
-       mov      dword ptr [ebp-0x10], eax
-       mov      edi, eax
-       and      edi, dword ptr [ebx+0x0C]
-       cmp      edi, dword ptr [edx+0x04]
-       jae      G_M26012_IG16
-       lea      edi, bword ptr [edx+8*edi+0x08]
-       ; byrRegs +[edi]
-       mov      edx, dword ptr [edi+0x04]
-       ; gcrRegs -[edx]
-       sub      edx, eax
-       je       SHORT G_M26012_IG11
-                       ;; size=34 bbWeight=1 PerfScore 14.50
-G_M26012_IG08:        ; bbWeight=0, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[edi]
+       jmp      G_M26012_IG03
+                       ;; size=31 bbWeight=0 PerfScore 0.00
+G_M26012_IG10:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[eax]
+       ; GC ptr vars -{V01}
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V01}
+       jmp      G_M26012_IG03
+                       ;; size=8 bbWeight=0 PerfScore 0.00
+G_M26012_IG11:        ; bbWeight=0, gcVars=00000288 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[edi] +[ebx]
+       ; GC ptr vars +{V03 V06 V07}
        mov      edi, gword ptr [ebp-0x14]
        ; gcrRegs +[edi]
        test     edx, edx
        mov      edx, gword ptr [ebp-0x1C]
        ; gcrRegs +[edx]
-       jge      SHORT G_M26012_IG09
-       jmp      SHORT G_M26012_IG17
-                       ;; size=12 bbWeight=0 PerfScore 0.00
-G_M26012_IG09:        ; bbWeight=0, gcVars=00000220 {V03 V06}, gcrefRegs=000000CC {edx ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V01 V03}
-       mov      gword ptr [ebp-0x14], edi
-       ; GC ptr vars +{V01}
-       jmp      SHORT G_M26012_IG07
-                       ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG10:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[edx ebx]
-       ; GC ptr vars -{V01 V06}
-       mov      gword ptr [ebp-0x14], edi
-       ; GC ptr vars +{V01}
-       jmp      SHORT G_M26012_IG06
-                       ;; size=5 bbWeight=0 PerfScore 0.00
-G_M26012_IG11:        ; bbWeight=1, gcVars=00000228 {V01 V03 V06}, gcrefRegs=00000048 {ebx esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
-       ; gcrRegs -[edi] +[ebx]
-       ; byrRegs +[edi]
-       ; GC ptr vars +{V03 V05 V06}
-       lea      edx, bword ptr [ebx+0x94]
-       ; byrRegs +[edx]
-       lea      ecx, [eax+0x01]
-       lock     
-       cmpxchg  dword ptr [edx], ecx
-       cmp      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x1C]
-       ; gcrRegs +[edx]
-       ; byrRegs -[edx]
-       jne      SHORT G_M26012_IG07
-       mov      eax, edi
-       ; byrRegs +[eax]
-       mov      edi, gword ptr [ebp-0x14]
-       ; gcrRegs +[edi]
-       ; byrRegs -[edi]
-       mov      edx, eax
-       ; gcrRegs -[edx]
-       ; byrRegs +[edx]
-       ; GC ptr vars -{V01 V03 V05 V06}
-       call     CORINFO_HELP_CHECKED_ASSIGN_REF_EDI
-       ; gcrRegs -[ebx edi]
-       ; byrRegs -[edx]
-       mov      dword ptr [eax+0x04], ecx
-                       ;; size=36 bbWeight=1 PerfScore 26.50
-G_M26012_IG12:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[eax]
+       jge      SHORT G_M26012_IG13
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
...

librariestestsnotieredcompilation.run.windows.x86.Release.mch

-40 (-21.74%) : 106697.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)

@@ -10,20 +10,19 @@
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-;  V02 arg2         [V02,T06] (  2,  1.50)     ref  ->  ebx         class-hnd single-def <System.Type>
-;  V03 arg3         [V03,T08] (  2,  1   )     int  ->  [ebp+0x10]  single-def
-;  V04 arg4         [V04,T09] (  2,  1   )     int  ->  [ebp+0x0C]  single-def
-;  V05 arg5         [V05,T03] (  4,  1.75)     ref  ->  edi         class-hnd single-def <System.Object>
+;  V02 arg2         [V02,T05] (  2,  1.50)     ref  ->  ebx         class-hnd single-def <System.Type>
+;  V03 arg3         [V03,T07] (  2,  1   )     int  ->  [ebp+0x10]  single-def
+;  V04 arg4         [V04,T08] (  2,  1   )     int  ->  [ebp+0x0C]  single-def
+;  V05 arg5         [V05,T03] (  3,  1.50)     ref  ->  edi         class-hnd single-def <System.Object>
 ;* V06 loc0         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
 ;  V07 tmp0         [V07,T02] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V08 tmp1         [V08,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;* V09 tmp2         [V09,T11] (  0,  0   )     int  ->  zero-ref   
+;* V08 tmp1         [V08,T06] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;* V09 tmp2         [V09,T10] (  0,  0   )     int  ->  zero-ref   
 ;  V10 tmp3         [V10,T01] (  3,  3   )     ref  ->  eax         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
-;  V11 tmp4         [V11,T10] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
-;  V12 tmp5         [V12,T04] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V13 cse0         [V13,T05] (  3,  1.50)     int  ->  edx         "CSE - moderate"
+;  V11 tmp4         [V11,T09] (  2,  1   )   ubyte  ->  ecx         single-def "Inline stloc first use temp"
+;  V12 tmp5         [V12,T04] (  3,  1.50)     ref  ->  [ebp-0x10]  class-hnd spill-single-def "Inline return value spill temp" <<unknown class>>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 4
 
 G_M49136_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -31,120 +30,100 @@ G_M49136_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
+       push     eax
        mov      esi, edx
        ; gcrRegs +[esi]
        mov      ebx, gword ptr [ebp+0x14]
        ; gcrRegs +[ebx]
        mov      edi, gword ptr [ebp+0x08]
        ; gcrRegs +[edi]
-                       ;; size=14 bbWeight=1 PerfScore 6.50
+                       ;; size=15 bbWeight=1 PerfScore 7.50
 G_M49136_IG02:        ; bbWeight=1, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
        cmp      ebx, 0xD1FFAB1E
-       jne      SHORT G_M49136_IG10
+       jne      SHORT G_M49136_IG04
                        ;; size=8 bbWeight=1 PerfScore 1.25
 G_M49136_IG03:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      eax, dword ptr [ebp+0x10]
-       cmp      eax, 1
-       jne      SHORT G_M49136_IG09
-       mov      ecx, dword ptr [ebp+0x0C]
-       cmp      ecx, 1
-       jne      SHORT G_M49136_IG08
+       cmp      dword ptr [ebp+0x10], 1
+       jne      SHORT G_M49136_IG04
+       cmp      dword ptr [ebp+0x0C], 1
+       jne      SHORT G_M49136_IG04
        test     edi, edi
-       je       SHORT G_M49136_IG07
-       mov      edx, dword ptr [edi]
-       cmp      edx, 0xD1FFAB1E
-       mov      dword ptr [ebp+0x10], eax
-       mov      dword ptr [ebp+0x0C], ecx
-       jne      SHORT G_M49136_IG10
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M49136_IG05
-                       ;; size=44 bbWeight=0.50 PerfScore 6.12
-G_M49136_IG04:        ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[ebx esi]
-       mov      edx, edi
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; System.Int32
-       call     CORINFO_HELP_UNBOX
-       ; gcrRegs -[edx edi]
-                       ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M49136_IG05:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       je       SHORT G_M49136_IG04
+       cmp      dword ptr [edi], 0xD1FFAB1E
+       je       SHORT G_M49136_IG06
+                       ;; size=24 bbWeight=0.50 PerfScore 5.62
+G_M49136_IG04:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
+       movzx    ecx, byte  ptr [esi+0x08]
+       mov      byte  ptr [esi+0x08], 0
+       test     ecx, ecx
+       je       SHORT G_M49136_IG08
+       xor      eax, eax
+       ; gcrRegs +[eax]
+                       ;; size=14 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG05:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ecx
+       pop      ebx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      16
+                       ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax ebx esi edi]
        mov      ecx, 0xD1FFAB1E      ; System.Int32
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[eax]
        xor      ecx, ecx
        mov      dword ptr [eax+0x04], ecx
                        ;; size=15 bbWeight=0.50 PerfScore 1.25
-G_M49136_IG06:        ; bbWeight=0.50, epilog, nogc, extend
+G_M49136_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      16
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M49136_IG07:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+                       ;; size=8 bbWeight=0.50 PerfScore 2.25
+G_M49136_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax] +[ebx esi edi]
-       mov      dword ptr [ebp+0x10], eax
-       mov      dword ptr [ebp+0x0C], ecx
-       jmp      SHORT G_M49136_IG10
-                       ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M49136_IG08:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp+0x10], eax
-       mov      dword ptr [ebp+0x0C], ecx
-       jmp      SHORT G_M49136_IG10
-                       ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M49136_IG09:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
-       mov      dword ptr [ebp+0x10], eax
-                       ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M49136_IG10:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref, isz
-       movzx    eax, byte  ptr [esi+0x08]
-       mov      byte  ptr [esi+0x08], 0
-       test     eax, eax
-       je       SHORT G_M49136_IG12
-       xor      eax, eax
-       ; gcrRegs +[eax]
-                       ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M49136_IG11:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      ebx
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      16
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
-G_M49136_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[eax]
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M49136_IG14
+       je       SHORT G_M49136_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M49136_IG13:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M49136_IG09:        ; bbWeight=0.25, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
                        ;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M49136_IG14:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
+G_M49136_IG10:        ; bbWeight=0.50, gcrefRegs=000000C8 {ebx esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
-       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
-       ; gcrRegs +[eax]
+       mov      ecx, gword ptr [D1FFAB1EH]      ; static handle
+       ; gcrRegs +[ecx]
+       mov      gword ptr [ebp-0x10], ecx
+       ; GC ptr vars +{V12}
        push     ebx
        push     dword ptr [ebp+0x10]
        push     dword ptr [ebp+0x0C]
        push     edi
        mov      edx, esi
        ; gcrRegs +[edx]
-       mov      ecx, gword ptr [eax+0x04]
-       ; gcrRegs +[ecx]
+       mov      ecx, gword ptr [ecx+0x04]
+       mov      eax, gword ptr [ebp-0x10]
+       ; gcrRegs +[eax]
+       ; GC ptr vars -{V12}
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[ecx edx ebx esi edi]
-                       ;; size=21 bbWeight=0.50 PerfScore 5.62
-G_M49136_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+                       ;; size=28 bbWeight=0.50 PerfScore 6.62
+G_M49136_IG11:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      ecx
        pop      ebx
        pop      esi
        pop      edi
        pop      ebp
        ret      16
-                       ;; size=7 bbWeight=0.50 PerfScore 2.00
+                       ;; size=8 bbWeight=0.50 PerfScore 2.25
 
-; Total bytes of code 184, prolog size 6, PerfScore 34.06, instruction count 72, allocated bytes for code 184 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
+; Total bytes of code 144, prolog size 7, PerfScore 33.69, instruction count 61, allocated bytes for code 144 (MethodHash=1121400f) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
 ; ============================================================
 

-22 (-20.18%) : 109499.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)

@@ -10,13 +10,12 @@
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-;  V02 arg2         [V02,T01] (  5,  2.75)     ref  ->  edi         class-hnd single-def <System.Object>
-;* V03 tmp0         [V03,T07] (  0,  0   )     int  ->  zero-ref   
+;  V02 arg2         [V02,T01] (  4,  2.50)     ref  ->  edi         class-hnd single-def <System.Object>
+;* V03 tmp0         [V03,T06] (  0,  0   )     int  ->  zero-ref   
 ;  V04 tmp1         [V04,T02] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V05 tmp2         [V05,T05] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;  V06 tmp3         [V06,T06] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
+;* V05 tmp2         [V05,T04] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp3         [V06,T05] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
 ;  V07 tmp4         [V07,T03] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V08 cse0         [V08,T04] (  3,  1.50)     int  ->  edx         "CSE - moderate"
 ;
 ; Lcl frame size = 0
 
@@ -32,58 +31,48 @@ G_M57559_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=10 bbWeight=1 PerfScore 4.50
 G_M57559_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        test     edi, edi
-       je       SHORT G_M57559_IG07
+       je       SHORT G_M57559_IG04
                        ;; size=4 bbWeight=1 PerfScore 1.25
 G_M57559_IG03:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, dword ptr [edi]
-       cmp      edx, 0xD1FFAB1E
-       jne      SHORT G_M57559_IG07
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M57559_IG05
-                       ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M57559_IG04:        ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
-       mov      edx, edi
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; <unknown class>
-       call     CORINFO_HELP_UNBOX
-       ; gcrRegs -[edx]
-                       ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M57559_IG05:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       mov      eax, dword ptr [edi+0x04]
-                       ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M57559_IG06:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      4
-                       ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M57559_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[esi]
+       cmp      dword ptr [edi], 0xD1FFAB1E
+       je       SHORT G_M57559_IG06
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M57559_IG04:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        movzx    eax, byte  ptr [esi+0x08]
        mov      byte  ptr [esi+0x08], 0
        test     eax, eax
-       je       SHORT G_M57559_IG09
+       je       SHORT G_M57559_IG08
        xor      eax, eax
                        ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M57559_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M57559_IG05:        ; bbWeight=0.50, epilog, nogc, extend
        pop      esi
        pop      edi
        pop      ebp
        ret      4
                        ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M57559_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M57559_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[esi]
+       mov      eax, dword ptr [edi+0x04]
+                       ;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M57559_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      4
+                       ;; size=6 bbWeight=0.50 PerfScore 1.75
+G_M57559_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs +[esi]
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M57559_IG11
+       je       SHORT G_M57559_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M57559_IG10:        ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57559_IG09:        ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
                        ;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M57559_IG11:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M57559_IG10:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
        mov      eax, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[eax]
@@ -95,13 +84,13 @@ G_M57559_IG11:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[eax ecx edx esi edi]
                        ;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M57559_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M57559_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      esi
        pop      edi
        pop      ebp
        ret      4
                        ;; size=6 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 109, prolog size 5, PerfScore 23.44, instruction count 44, allocated bytes for code 109 (MethodHash=76951f28) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
+; Total bytes of code 87, prolog size 5, PerfScore 22.81, instruction count 38, allocated bytes for code 87 (MethodHash=76951f28) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
 ; ============================================================
 

-22 (-20.18%) : 26028.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)

@@ -10,13 +10,12 @@
 ;
 ;* V00 arg0         [V00    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Runtime.CompilerServices.Closure>
 ;  V01 arg1         [V01,T00] (  7,  4.25)     ref  ->  esi         class-hnd single-def <System.Runtime.CompilerServices.CallSite>
-;  V02 arg2         [V02,T01] (  5,  2.75)     ref  ->  edi         class-hnd single-def <System.Object>
-;* V03 tmp0         [V03,T07] (  0,  0   )     int  ->  zero-ref   
+;  V02 arg2         [V02,T01] (  4,  2.50)     ref  ->  edi         class-hnd single-def <System.Object>
+;* V03 tmp0         [V03,T06] (  0,  0   )     int  ->  zero-ref   
 ;  V04 tmp1         [V04,T02] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;* V05 tmp2         [V05,T05] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
-;  V06 tmp3         [V06,T06] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
+;* V05 tmp2         [V05,T04] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling QMark2" <<unknown class>>
+;  V06 tmp3         [V06,T05] (  2,  1   )   ubyte  ->  eax         single-def "Inline stloc first use temp"
 ;  V07 tmp4         [V07,T03] (  3,  1.50)     ref  ->  eax         class-hnd "Inline return value spill temp" <<unknown class>>
-;  V08 cse0         [V08,T04] (  3,  1.50)     int  ->  edx         "CSE - moderate"
 ;
 ; Lcl frame size = 0
 
@@ -32,58 +31,48 @@ G_M44930_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=10 bbWeight=1 PerfScore 4.50
 G_M44930_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        test     edi, edi
-       je       SHORT G_M44930_IG07
+       je       SHORT G_M44930_IG04
                        ;; size=4 bbWeight=1 PerfScore 1.25
 G_M44930_IG03:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      edx, dword ptr [edi]
-       cmp      edx, 0xD1FFAB1E
-       jne      SHORT G_M44930_IG07
-       cmp      edx, 0xD1FFAB1E
-       je       SHORT G_M44930_IG05
-                       ;; size=18 bbWeight=0.50 PerfScore 2.25
-G_M44930_IG04:        ; bbWeight=0.25, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[esi]
-       mov      edx, edi
-       ; gcrRegs +[edx]
-       mov      ecx, 0xD1FFAB1E      ; <unknown class>
-       call     CORINFO_HELP_UNBOX
-       ; gcrRegs -[edx]
-                       ;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M44930_IG05:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
-       mov      eax, dword ptr [edi+0x04]
-                       ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M44930_IG06:        ; bbWeight=0.50, epilog, nogc, extend
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      4
-                       ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44930_IG07:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[esi]
+       cmp      dword ptr [edi], 0xD1FFAB1E
+       je       SHORT G_M44930_IG06
+                       ;; size=8 bbWeight=0.50 PerfScore 2.00
+G_M44930_IG04:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        movzx    eax, byte  ptr [esi+0x08]
        mov      byte  ptr [esi+0x08], 0
        test     eax, eax
-       je       SHORT G_M44930_IG09
+       je       SHORT G_M44930_IG08
        xor      eax, eax
                        ;; size=14 bbWeight=0.50 PerfScore 2.25
-G_M44930_IG08:        ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG05:        ; bbWeight=0.50, epilog, nogc, extend
        pop      esi
        pop      edi
        pop      ebp
        ret      4
                        ;; size=6 bbWeight=0.50 PerfScore 1.75
-G_M44930_IG09:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M44930_IG06:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[esi]
+       mov      eax, dword ptr [edi+0x04]
+                       ;; size=3 bbWeight=0.50 PerfScore 1.00
+G_M44930_IG07:        ; bbWeight=0.50, epilog, nogc, extend
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      4
+                       ;; size=6 bbWeight=0.50 PerfScore 1.75
+G_M44930_IG08:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs +[esi]
        mov      ecx, 0xD1FFAB1E      ; <unknown class>
        cmp      dword ptr [esi], ecx
-       je       SHORT G_M44930_IG11
+       je       SHORT G_M44930_IG10
                        ;; size=9 bbWeight=0.50 PerfScore 2.12
-G_M44930_IG10:        ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44930_IG09:        ; bbWeight=0.25, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        mov      edx, esi
        ; gcrRegs +[edx]
        call     CORINFO_HELP_CHKCASTCLASS_SPECIAL
        ; gcrRegs -[edx] +[eax]
                        ;; size=7 bbWeight=0.25 PerfScore 0.31
-G_M44930_IG11:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+G_M44930_IG10:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax]
        mov      eax, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[eax]
@@ -95,13 +84,13 @@ G_M44930_IG11:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        call     [eax+0x0C]<unknown method>
        ; gcrRegs -[eax ecx edx esi edi]
                        ;; size=14 bbWeight=0.50 PerfScore 4.12
-G_M44930_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M44930_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        pop      esi
        pop      edi
        pop      ebp
        ret      4
                        ;; size=6 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 109, prolog size 5, PerfScore 23.44, instruction count 44, allocated bytes for code 109 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
+; Total bytes of code 87, prolog size 5, PerfScore 22.81, instruction count 38, allocated bytes for code 87 (MethodHash=a680507d) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
 ; ============================================================
 

+16 (+9.47%) : 70043.dasm - System.AssertExtensions:AssertThrowsSystem.__Canon,int:System.__Canon (FullOpts)

@@ -8,42 +8,39 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T08] (  1,  1   )  struct ( 8) [ebp+0x08]  do-not-enreg[S] single-def <System.Span`1[int]>
-;  V01 arg1         [V01,T02] (  4,  4   )     ref  ->  eax         class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
-;  V02 TypeCtx      [V02,T01] (  5,  4   )     int  ->  [ebp-0x24]  EH-live single-def
-;  V03 loc0         [V03,T05] (  5,  3   )     ref  ->  esi         class-hnd <System.Exception>
+;  V00 arg0         [V00,T08] (  1,  0   )  struct ( 8) [ebp+0x08]  do-not-enreg[S] single-def <System.Span`1[int]>
+;  V01 arg1         [V01,T01] (  4,  2   )     ref  ->  eax         class-hnd single-def <System.AssertExtensions+AssertThrowsAction`1[int]>
+;  V02 TypeCtx      [V02,T00] (  8,  3   )     int  ->  [ebp-0x20]  EH-live single-def
+;  V03 loc0         [V03,T03] (  5,  0   )     ref  ->  esi         class-hnd <System.Exception>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Exception>
 ;* V05 loc2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.__Canon>
 ;* V06 loc3         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Exception>
-;  V07 loc4         [V07,T03] (  3,  4.50)     ref  ->  eax         single-def "CASTCLASS eval op1"
-;  V08 tmp1         [V08,T06] (  3,  2.50)     int  ->  ecx         "fgMakeTemp is creating a new local variable"
-;  V09 tmp2         [V09,T00] (  5,  7.50)     ref  ->  registers   class-hnd "spilling QMark2" <System.__Canon>
-;  V10 tmp3         [V10,T09] (  2,  0   )     ref  ->  esi         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
-;  V11 tmp4         [V11,T10] (  2,  0   )     ref  ->  ecx         single-def "argument with side effect"
-;  V12 EHSlots      [V12    ] (  1,  1   )  struct (16) [ebp-0x20]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
-;  V13 cse0         [V13,T04] (  7,  3.50)     int  ->  edi         multi-def "CSE - moderate"
-;  V14 cse1         [V14,T07] (  3,  2   )     int  ->  ebx         "CSE - moderate"
+;  V07 loc4         [V07,T04] (  3,  0   )     ref  ->  eax         single-def "CASTCLASS eval op1"
+;  V08 tmp1         [V08,T05] (  3,  0   )     int  ->  edi         "fgMakeTemp is creating a new local variable"
+;  V09 tmp2         [V09,T02] (  6,  0   )     ref  ->  registers   class-hnd "spilling QMark2" <System.__Canon>
+;  V10 tmp3         [V10,T06] (  2,  0   )     ref  ->  esi         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+;  V11 tmp4         [V11,T07] (  2,  0   )     ref  ->  ecx         single-def "argument with side effect"
+;  V12 EHSlots      [V12    ] (  1,  1   )  struct (16) [ebp-0x1C]  do-not-enreg[XS] must-init addr-exposed "lvaShadowSPslotsVar"
 ;
 ; Lcl frame size = 24
 
-G_M57052_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M57052_IG01:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
        push     edi
        push     esi
-       push     ebx
        sub      esp, 24
        xor      eax, eax
-       mov      dword ptr [ebp-0x20], eax
        mov      dword ptr [ebp-0x1C], eax
        mov      dword ptr [ebp-0x18], eax
        mov      dword ptr [ebp-0x14], eax
-       mov      dword ptr [ebp-0x10], edx
-       mov      dword ptr [ebp-0x24], edx
+       mov      dword ptr [ebp-0x10], eax
+       mov      dword ptr [ebp-0x0C], edx
+       mov      dword ptr [ebp-0x20], edx
        mov      eax, ecx
        ; gcrRegs +[eax]
-                       ;; size=31 bbWeight=1 PerfScore 11.00
-G_M57052_IG02:        ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
+                       ;; size=30 bbWeight=0 PerfScore 0.00
+G_M57052_IG02:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref, isz
        push     dword ptr [ebp+0x0C]
        push     bword ptr [ebp+0x08]
        mov      ecx, gword ptr [eax+0x04]
@@ -53,7 +50,7 @@ G_M57052_IG02:        ; bbWeight=1, gcrefRegs=00000001 {eax}, byrefRegs=00000000
        xor      esi, esi
        ; gcrRegs +[esi]
        jmp      SHORT G_M57052_IG04
-                       ;; size=16 bbWeight=1 PerfScore 9.25
+                       ;; size=16 bbWeight=0 PerfScore 0.00
 G_M57052_IG03:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi] +[eax]
        mov      esi, eax
@@ -61,13 +58,12 @@ G_M57052_IG03:        ; bbWeight=0, gcrefRegs=00000001 {eax}, byrefRegs=00000000
        call     CORINFO_HELP_ENDCATCH
        ; gcrRegs -[eax]
                        ;; size=7 bbWeight=0 PerfScore 0.00
-G_M57052_IG04:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M57052_IG04:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        test     esi, esi
-       je       SHORT G_M57052_IG10
-       mov      edx, dword ptr [ebp-0x24]
+       je       SHORT G_M57052_IG06
+       mov      edx, dword ptr [ebp-0x20]
        mov      ecx, dword ptr [edx+0x20]
-       mov      edi, dword ptr [ecx]
-       mov      ecx, edi
+       mov      ecx, dword ptr [ecx]
        mov      edx, esi
        ; gcrRegs +[edx]
        call     CORINFO_HELP_ISINSTANCEOFANY
@@ -76,40 +72,60 @@ G_M57052_IG04:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs +[edx]
        test     edx, edx
        je       SHORT G_M57052_IG09
-                       ;; size=27 bbWeight=1 PerfScore 9.25
-G_M57052_IG05:        ; bbWeight=0.50, gcrefRegs=00000045 {eax edx esi}, byrefRegs=00000000 {}, byref, isz
-       mov      ebx, dword ptr [edx]
+       mov      ecx, dword ptr [ebp-0x20]
+       mov      edi, dword ptr [ecx+0x20]
+       mov      edi, dword ptr [edi]
+       cmp      dword ptr [edx], edi
+       je       SHORT G_M57052_IG05
        mov      ecx, edi
-       cmp      ebx, ecx
-       je       SHORT G_M57052_IG07
-                       ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M57052_IG06:        ; bbWeight=0.25, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[edx]
        mov      edx, eax
-       ; gcrRegs +[edx]
        call     CORINFO_HELP_CHKCASTANY
        ; gcrRegs -[edx]
        mov      edx, eax
        ; gcrRegs +[edx]
-                       ;; size=9 bbWeight=0.25 PerfScore 0.38
-G_M57052_IG07:        ; bbWeight=1, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
+                       ;; size=48 bbWeight=0 PerfScore 0.00
+G_M57052_IG05:        ; bbWeight=0, gcrefRegs=00000044 {edx esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax]
-       cmp      ebx, edi
+       mov      eax, dword ptr [edx]
+       mov      ecx, dword ptr [ebp-0x20]
+       mov      edi, dword ptr [ecx+0x20]
+       cmp      eax, dword ptr [edi]
        jne      SHORT G_M57052_IG09
+       jmp      SHORT G_M57052_IG07
+                       ;; size=14 bbWeight=0 PerfScore 0.00
+G_M57052_IG06:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[edx esi]
+       mov      ecx, dword ptr [ebp-0x20]
+       mov      ecx, dword ptr [ecx+0x20]
+       mov      ecx, dword ptr [ecx]
+       call     CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
+       ; gcrRegs +[eax]
+       mov      ecx, eax
+       ; gcrRegs +[ecx]
+       call     [<unknown method>]
+       ; gcrRegs -[ecx]
+       mov      ecx, eax
+       ; gcrRegs +[ecx]
+       call     CORINFO_HELP_THROW
+       ; gcrRegs -[eax ecx]
+                       ;; size=28 bbWeight=0 PerfScore 0.00
+G_M57052_IG07:        ; bbWeight=0, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+       ; gcrRegs +[edx]
        mov      eax, edx
        ; gcrRegs +[eax]
-                       ;; size=6 bbWeight=1 PerfScore 1.50
-G_M57052_IG08:        ; bbWeight=1, epilog, nogc, extend
-       lea      esp, [ebp-0x0C]
-       pop      ebx
+                       ;; size=2 bbWeight=0 PerfScore 0.00
+G_M57052_IG08:        ; bbWeight=0, epilog, nogc, extend
+       lea      esp, [ebp-0x08]
        pop      esi
        pop      edi
        pop      ebp
        ret      8
-                       ;; size=10 bbWeight=1 PerfScore 4.50
+                       ;; size=9 bbWeight=0 PerfScore 0.00
 G_M57052_IG09:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax edx]
-       mov      ecx, edi
+       ; gcrRegs -[eax edx] +[esi]
+       mov      ecx, dword ptr [ebp-0x20]
+       mov      ecx, dword ptr [ecx+0x20]
+       mov      ecx, dword ptr [ecx]
        call     CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
        ; gcrRegs +[eax]
        mov      ecx, eax
@@ -121,27 +137,11 @@ G_M57052_IG09:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000040 {esi}
        mov      ecx, eax
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_THROW
-       ; gcrRegs -[eax ecx]
-                       ;; size=24 bbWeight=0 PerfScore 0.00
-G_M57052_IG10:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
-       mov      edx, dword ptr [ebp-0x24]
-       mov      ecx, dword ptr [edx+0x20]
-       mov      edi, dword ptr [ecx]
-       mov      ecx, edi
-       call     CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
-       ; gcrRegs +[eax]
-       mov      ecx, eax
-       ; gcrRegs +[ecx]
-       call     [<unknown method>]
-       ; gcrRegs -[ecx]
-       mov      ecx, eax
-       ; gcrRegs +[ecx]
-       call     CORINFO_HELP_THROW
        ; gcrRegs -[eax ecx]
        int3     
                        ;; size=31 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 169, prolog size 26, PerfScore 37.62, instruction count 66, allocated bytes for code 169 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
+; Total bytes of code 185, prolog size 25, PerfScore 0.00, instruction count 70, allocated bytes for code 185 (MethodHash=24502123) for method System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
 ; ============================================================
 
 *************** EH table for System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon

+39 (+9.54%) : 155085.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)

@@ -9,22 +9,22 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] ( 12, 79.50)   byref  ->  esi         this single-def
-;  V01 arg1         [V01,T13] (  6,  4   )   byref  ->  edi         single-def
-;  V02 arg2         [V02,T27] (  2,  1   )   byref  ->  [ebp+0x08]  single-def
-;  V03 loc0         [V03,T04] (  9, 40   )     int  ->  ebx         ld-addr-op
-;  V04 loc1         [V04,T05] (  6, 24.50)     int  ->  [ebp-0x10]  ld-addr-op
-;  V05 loc2         [V05,T14] (  5,  5.50)     int  ->  [ebp-0x14] 
-;  V06 loc3         [V06,T26] (  3,  1.50)     int  ->  [ebp-0x18]  spill-single-def
+;  V01 arg1         [V01,T12] (  6,  7.50)   byref  ->  edi         single-def
+;  V02 arg2         [V02,T16] (  2,  4.50)   byref  ->  [ebp+0x08]  single-def
+;  V03 loc0         [V03,T04] (  9, 40   )     int  ->  [ebp-0x10]  ld-addr-op
+;  V04 loc1         [V04,T05] (  6, 24.50)     int  ->  [ebp-0x14]  ld-addr-op
+;  V05 loc2         [V05,T14] (  5,  5.50)     int  ->  [ebp-0x18] 
+;  V06 loc3         [V06,T27] (  3,  1.50)     int  ->  [ebp-0x1C]  spill-single-def
 ;* V07 loc4         [V07    ] (  0,  0   )  struct ( 8) zero-ref    <System.ReadOnlySpan`1[ushort]>
 ;* V08 tmp0         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V09 tmp1         [V09,T15] (  5,  5   )     ref  ->  ecx         class-hnd single-def "Inlining Arg" <ushort[]>
-;  V10 tmp2         [V10,T16] (  5,  4   )     int  ->  eax         "Inlining Arg"
-;  V11 tmp3         [V11,T19] (  4,  3   )     int  ->  ebx         "Inlining Arg"
-;  V12 tmp4         [V12    ] (  4,  1.50)  struct ( 8) [ebp-0x20]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;  V10 tmp2         [V10,T17] (  5,  4   )     int  ->  ebx         "Inlining Arg"
+;  V11 tmp3         [V11,T20] (  4,  3   )     int  ->  esi         "Inlining Arg"
+;  V12 tmp4         [V12    ] (  4,  1.50)  struct ( 8) [ebp-0x24]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V13 tmp5         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;  V14 tmp6         [V14,T25] (  2,  1.94)     int  ->  ecx         "Span.get_Item index"
+;  V14 tmp6         [V14,T26] (  2,  1.93)     int  ->  ecx         "Span.get_Item index"
 ;  V15 tmp7         [V15,T28] (  2,  0.97)   ubyte  ->  eax         "Inline return value spill temp"
-;  V16 tmp8         [V16,T17] (  4,  3.88)  ushort  ->  ecx         "Inlining Arg"
+;  V16 tmp8         [V16,T18] (  4,  3.88)  ushort  ->  ecx         "Inlining Arg"
 ;* V17 tmp9         [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V18 tmp10        [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V19 tmp11        [V19    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,7 +33,7 @@
 ;* V22 tmp14        [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V23 tmp15        [V23    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V24 tmp16        [V24,T29] (  2,  0.96)   ubyte  ->  eax         "Inline return value spill temp"
-;  V25 tmp17        [V25,T18] (  4,  3.87)  ushort  ->  ecx         "Inlining Arg"
+;  V25 tmp17        [V25,T19] (  4,  3.85)  ushort  ->  ecx         "Inlining Arg"
 ;* V26 tmp18        [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V27 tmp19        [V27    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V28 tmp20        [V28    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -42,10 +42,10 @@
 ;* V31 tmp23        [V31    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V32 tmp24        [V32    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V33 tmp25        [V33,T07] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V34 tmp26        [V34,T02] (  9, 72.01)     int  ->  ebx         "Inline stloc first use temp"
+;  V34 tmp26        [V34,T02] (  9, 72.01)     int  ->  [ebp-0x28]  spill-single-def "Inline stloc first use temp"
 ;* V35 tmp27        [V35    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Span`1[ushort]>
 ;* V36 tmp28        [V36    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;  V37 tmp29        [V37,T08] (  3, 18   )     int  ->  eax         "Inline stloc first use temp"
+;  V37 tmp29        [V37,T08] (  3, 18   )     int  ->  ebx         "Inline stloc first use temp"
 ;  V38 tmp30        [V38,T03] (  5, 44.02)     ref  ->  ecx         class-hnd "Inlining Arg" <ushort[]>
 ;  V39 tmp31        [V39,T06] (  4, 24.01)     int  ->  edx         "Inlining Arg"
 ;* V40 tmp32        [V40    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -65,10 +65,10 @@
 ;* V54 tmp46        [V54    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V55 tmp47        [V55    ] (  0,  0   )   byref  ->  zero-ref    "field V07._reference (fldOffset=0x0)" P-INDEP
 ;* V56 tmp48        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x4)" P-INDEP
-;  V57 tmp49        [V57,T24] (  6,  1.97)   byref  ->  esi         "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp50        [V58,T23] (  6,  1.99)     int  ->  ebx         "field V08._length (fldOffset=0x4)" P-INDEP
-;  V59 tmp51        [V59    ] (  3,  1   )   byref  ->  [ebp-0x20]  do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
-;  V60 tmp52        [V60    ] (  3,  1   )     int  ->  [ebp-0x1C]  do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
+;  V57 tmp49        [V57,T25] (  6,  1.97)   byref  ->  ebx         "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp50        [V58,T24] (  6,  1.98)     int  ->  esi         "field V08._length (fldOffset=0x4)" P-INDEP
+;  V59 tmp51        [V59    ] (  3,  1   )   byref  ->  [ebp-0x24]  do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
+;  V60 tmp52        [V60    ] (  3,  1   )     int  ->  [ebp-0x20]  do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
 ;* V61 tmp53        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp54        [V62    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x4)" P-INDEP
 ;* V63 tmp55        [V63    ] (  0,  0   )   byref  ->  zero-ref    "field V17._reference (fldOffset=0x0)" P-INDEP
@@ -103,7 +103,7 @@
 ;  V92 tmp84        [V92,T11] (  3, 10   )     int  ->  edx         "field V40._length (fldOffset=0x4)" P-INDEP
 ;* V93 tmp85        [V93    ] (  0,  0   )   byref  ->  zero-ref    "field V41._reference (fldOffset=0x0)" P-INDEP
 ;* V94 tmp86        [V94    ] (  0,  0   )     int  ->  zero-ref    "field V41._length (fldOffset=0x4)" P-INDEP
-;  V95 tmp87        [V95,T09] (  2, 16   )   byref  ->  eax         "field V42._reference (fldOffset=0x0)" P-INDEP
+;  V95 tmp87        [V95,T09] (  2, 16   )   byref  ->  ebx         "field V42._reference (fldOffset=0x0)" P-INDEP
 ;* V96 tmp88        [V96    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x4)" P-INDEP
 ;* V97 tmp89        [V97    ] (  0,  0   )   byref  ->  zero-ref    "field V45._reference (fldOffset=0x0)" P-INDEP
 ;* V98 tmp90        [V98    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x4)" P-INDEP
@@ -117,13 +117,13 @@
 ;* V106 tmp98       [V106    ] (  0,  0   )     int  ->  zero-ref    "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V107 tmp99       [V107    ] (  0,  0   )   byref  ->  zero-ref    "field V54._reference (fldOffset=0x0)" P-INDEP
 ;* V108 tmp100      [V108    ] (  0,  0   )     int  ->  zero-ref    "field V54._length (fldOffset=0x4)" P-INDEP
-;  V109 tmp101      [V109,T12] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V110 tmp102      [V110,T20] (  2,  2   )     ref  ->  ecx         "argument with side effect"
-;  V111 tmp103      [V111,T21] (  2,  2   )     ref  ->  ecx         "argument with side effect"
-;  V112 tmp104      [V112,T22] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V109 tmp101      [V109,T13] (  2,  8   )     ref  ->  eax         "argument with side effect"
+;  V110 tmp102      [V110,T21] (  2,  2   )     ref  ->  ebx         "argument with side effect"
+;  V111 tmp103      [V111,T22] (  2,  2   )     ref  ->  ecx         "argument with side effect"
+;  V112 tmp104      [V112,T23] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
 ;  V113 cse0        [V113,T00] (  4, 96   )     int  ->  eax         "CSE - aggressive"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 28
 
 G_M44740_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -131,10 +131,10 @@ G_M44740_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 20
+       sub      esp, 28
        xor      eax, eax
+       mov      dword ptr [ebp-0x24], eax
        mov      dword ptr [ebp-0x20], eax
-       mov      dword ptr [ebp-0x1C], eax
        mov      esi, ecx
        ; byrRegs +[esi]
        mov      edi, edx
@@ -144,42 +144,47 @@ G_M44740_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
        jmp      SHORT G_M44740_IG04
                        ;; size=2 bbWeight=1 PerfScore 2.00
 G_M44740_IG03:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       test     eax, eax
+       test     ebx, ebx
        je       SHORT G_M44740_IG04
-       mov      ecx, gword ptr [esi]
+       mov      ecx, ebx
+       mov      eax, gword ptr [esi]
+       ; gcrRegs +[eax]
+       mov      dword ptr [ebp-0x10], edx
+       push     edx
+       mov      dword ptr [ebp-0x14], ecx
+       push     ecx
+       mov      ecx, eax
        ; gcrRegs +[ecx]
-       push     ebx
-       mov      dword ptr [ebp-0x10], eax
-       push     eax
        mov      edx, 58
        call     [<unknown method>]
-       ; gcrRegs -[ecx]
-       cmp      eax, -1
-       jne      SHORT G_M44740_IG14
-                       ;; size=27 bbWeight=2 PerfScore 21.50
+       ; gcrRegs -[eax ecx]
+       mov      edx, eax
+       cmp      edx, -1
+       jne      G_M44740_IG17
+                       ;; size=40 bbWeight=2 PerfScore 25.00
 G_M44740_IG04:        ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      ebx, dword ptr [esi+0x08]
+       mov      eax, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x28], eax
        mov      ecx, gword ptr [esi]
        ; gcrRegs +[ecx]
        mov      edx, dword ptr [esi+0x04]
-       sub      edx, ebx
+       sub      edx, eax
        test     ecx, ecx
        jne      SHORT G_M44740_IG06
-                       ;; size=14 bbWeight=8 PerfScore 60.00
+                       ;; size=17 bbWeight=8 PerfScore 68.00
 G_M44740_IG05:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs -[ecx]
-       mov      eax, ebx
-       or       eax, edx
+       or       edx, eax
        jne      SHORT G_M44740_IG07
        xor      ecx, ecx
        ; byrRegs +[ecx]
        xor      edx, edx
        jmp      SHORT G_M44740_IG10
-                       ;; size=12 bbWeight=0 PerfScore 0.00
+                       ;; size=10 bbWeight=0 PerfScore 0.00
 G_M44740_IG06:        ; bbWeight=2.01, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs +[ecx]
        ; byrRegs -[ecx]
-       cmp      dword ptr [ecx+0x04], ebx
+       cmp      dword ptr [ecx+0x04], eax
        jae      SHORT G_M44740_IG08
                        ;; size=5 bbWeight=2.01 PerfScore 8.02
 G_M44740_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -191,63 +196,96 @@ G_M44740_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
 G_M44740_IG08:        ; bbWeight=2.00, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs +[ecx]
        ; byrRegs +[esi edi]
-       mov      eax, dword ptr [ecx+0x04]
-       sub      eax, ebx
-       cmp      eax, edx
+       mov      ebx, dword ptr [ecx+0x04]
+       sub      ebx, eax
+       cmp      ebx, edx
        jb       SHORT G_M44740_IG07
                        ;; size=9 bbWeight=2.00 PerfScore 7.01
 G_M44740_IG09:        ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
-       lea      ecx, bword ptr [ecx+2*ebx+0x08]
+       lea      ecx, bword ptr [ecx+2*eax+0x08]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
                        ;; size=4 bbWeight=2 PerfScore 2.00
 G_M44740_IG10:        ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
-       mov      eax, 0xD1FFAB1E
-       ; byrRegs +[eax]
-       push     eax
+       mov      ebx, 0xD1FFAB1E
+       ; byrRegs +[ebx]
+       push     ebx
        push     2
        call     [<unknown method>]
-       ; byrRegs -[eax ecx]
-       test     eax, eax
+       ; byrRegs -[ecx ebx]
+       mov      ebx, eax
+       test     ebx, ebx
        jl       SHORT G_M44740_IG12
-                       ;; size=18 bbWeight=8 PerfScore 52.00
+                       ;; size=20 bbWeight=8 PerfScore 54.00
 G_M44740_IG11:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       lea      ecx, [ebx+eax]
+       mov      eax, dword ptr [ebp-0x28]
+       mov      edx, eax
+       lea      ecx, [edx+ebx]
        add      ecx, 2
        mov      dword ptr [esi+0x08], ecx
        jmp      SHORT G_M44740_IG03
-                       ;; size=11 bbWeight=2 PerfScore 7.50
-G_M44740_IG12:        ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+                       ;; size=16 bbWeight=2 PerfScore 10.00
+G_M44740_IG12:        ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        mov      eax, dword ptr [esi+0x04]
-       cmp      ebx, eax
-       jge      G_M44740_IG29
-                       ;; size=11 bbWeight=32 PerfScore 104.00
+       mov      edx, dword ptr [ebp-0x28]
+       cmp      edx, eax
+       jge      SHORT G_M44740_IG14
+                       ;; size=10 bbWeight=32 PerfScore 136.00
 G_M44740_IG13:        ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
-       mov      ecx, eax
-       sub      ecx, ebx
-       mov      edx, ecx
+       mov      ecx, edx
+       mov      edx, eax
+       sub      edx, ecx
        mov      dword ptr [esi+0x08], eax
-       mov      eax, edx
+       mov      ebx, edx
+       mov      edx, ecx
        jmp      G_M44740_IG03
-                       ;; size=16 bbWeight=16 PerfScore 64.00
-G_M44740_IG14:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x14], eax
-       mov      ecx, eax
-       sub      ecx, ebx
-       mov      dword ptr [ebp-0x18], ecx
-       mov      ecx, gword ptr [esi]
...

+39 (+9.54%) : 156798.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)

@@ -9,22 +9,22 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T01] ( 12, 79.50)   byref  ->  esi         this single-def
-;  V01 arg1         [V01,T13] (  6,  4   )   byref  ->  edi         single-def
-;  V02 arg2         [V02,T27] (  2,  1   )   byref  ->  [ebp+0x08]  single-def
-;  V03 loc0         [V03,T04] (  9, 40   )     int  ->  ebx         ld-addr-op
-;  V04 loc1         [V04,T05] (  6, 24.50)     int  ->  [ebp-0x10]  ld-addr-op
-;  V05 loc2         [V05,T14] (  5,  5.50)     int  ->  [ebp-0x14] 
-;  V06 loc3         [V06,T26] (  3,  1.50)     int  ->  [ebp-0x18]  spill-single-def
+;  V01 arg1         [V01,T12] (  6,  7.50)   byref  ->  edi         single-def
+;  V02 arg2         [V02,T16] (  2,  4.50)   byref  ->  [ebp+0x08]  single-def
+;  V03 loc0         [V03,T04] (  9, 40   )     int  ->  [ebp-0x10]  ld-addr-op
+;  V04 loc1         [V04,T05] (  6, 24.50)     int  ->  [ebp-0x14]  ld-addr-op
+;  V05 loc2         [V05,T14] (  5,  5.50)     int  ->  [ebp-0x18] 
+;  V06 loc3         [V06,T27] (  3,  1.50)     int  ->  [ebp-0x1C]  spill-single-def
 ;* V07 loc4         [V07    ] (  0,  0   )  struct ( 8) zero-ref    <System.ReadOnlySpan`1[ushort]>
 ;* V08 tmp0         [V08    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
 ;  V09 tmp1         [V09,T15] (  5,  5   )     ref  ->  ecx         class-hnd single-def "Inlining Arg" <ushort[]>
-;  V10 tmp2         [V10,T16] (  5,  4   )     int  ->  eax         "Inlining Arg"
-;  V11 tmp3         [V11,T19] (  4,  3   )     int  ->  ebx         "Inlining Arg"
-;  V12 tmp4         [V12    ] (  4,  1.50)  struct ( 8) [ebp-0x20]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
+;  V10 tmp2         [V10,T17] (  5,  4   )     int  ->  ebx         "Inlining Arg"
+;  V11 tmp3         [V11,T20] (  4,  3   )     int  ->  esi         "Inlining Arg"
+;  V12 tmp4         [V12    ] (  4,  1.50)  struct ( 8) [ebp-0x24]  do-not-enreg[XS] must-init addr-exposed "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
 ;* V13 tmp5         [V13    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;  V14 tmp6         [V14,T25] (  2,  1.94)     int  ->  ecx         "Span.get_Item index"
+;  V14 tmp6         [V14,T26] (  2,  1.93)     int  ->  ecx         "Span.get_Item index"
 ;  V15 tmp7         [V15,T28] (  2,  0.97)   ubyte  ->  eax         "Inline return value spill temp"
-;  V16 tmp8         [V16,T17] (  4,  3.88)  ushort  ->  ecx         "Inlining Arg"
+;  V16 tmp8         [V16,T18] (  4,  3.88)  ushort  ->  ecx         "Inlining Arg"
 ;* V17 tmp9         [V17    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V18 tmp10        [V18    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V19 tmp11        [V19    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -33,7 +33,7 @@
 ;* V22 tmp14        [V22    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V23 tmp15        [V23    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;  V24 tmp16        [V24,T29] (  2,  0.96)   ubyte  ->  eax         "Inline return value spill temp"
-;  V25 tmp17        [V25,T18] (  4,  3.87)  ushort  ->  ecx         "Inlining Arg"
+;  V25 tmp17        [V25,T19] (  4,  3.85)  ushort  ->  ecx         "Inlining Arg"
 ;* V26 tmp18        [V26    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V27 tmp19        [V27    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V28 tmp20        [V28    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -42,10 +42,10 @@
 ;* V31 tmp23        [V31    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V32 tmp24        [V32    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
 ;* V33 tmp25        [V33,T07] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V34 tmp26        [V34,T02] (  9, 72.01)     int  ->  ebx         "Inline stloc first use temp"
+;  V34 tmp26        [V34,T02] (  9, 72.01)     int  ->  [ebp-0x28]  spill-single-def "Inline stloc first use temp"
 ;* V35 tmp27        [V35    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Span`1[ushort]>
 ;* V36 tmp28        [V36    ] (  0,  0   )  struct ( 8) zero-ref    "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-;  V37 tmp29        [V37,T08] (  3, 18   )     int  ->  eax         "Inline stloc first use temp"
+;  V37 tmp29        [V37,T08] (  3, 18   )     int  ->  ebx         "Inline stloc first use temp"
 ;  V38 tmp30        [V38,T03] (  5, 44.02)     ref  ->  ecx         class-hnd "Inlining Arg" <ushort[]>
 ;  V39 tmp31        [V39,T06] (  4, 24.01)     int  ->  edx         "Inlining Arg"
 ;* V40 tmp32        [V40    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
@@ -65,10 +65,10 @@
 ;* V54 tmp46        [V54    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V55 tmp47        [V55    ] (  0,  0   )   byref  ->  zero-ref    "field V07._reference (fldOffset=0x0)" P-INDEP
 ;* V56 tmp48        [V56    ] (  0,  0   )     int  ->  zero-ref    "field V07._length (fldOffset=0x4)" P-INDEP
-;  V57 tmp49        [V57,T24] (  6,  1.97)   byref  ->  esi         "field V08._reference (fldOffset=0x0)" P-INDEP
-;  V58 tmp50        [V58,T23] (  6,  1.99)     int  ->  ebx         "field V08._length (fldOffset=0x4)" P-INDEP
-;  V59 tmp51        [V59    ] (  3,  1   )   byref  ->  [ebp-0x20]  do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
-;  V60 tmp52        [V60    ] (  3,  1   )     int  ->  [ebp-0x1C]  do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
+;  V57 tmp49        [V57,T25] (  6,  1.97)   byref  ->  ebx         "field V08._reference (fldOffset=0x0)" P-INDEP
+;  V58 tmp50        [V58,T24] (  6,  1.98)     int  ->  esi         "field V08._length (fldOffset=0x4)" P-INDEP
+;  V59 tmp51        [V59    ] (  3,  1   )   byref  ->  [ebp-0x24]  do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP
+;  V60 tmp52        [V60    ] (  3,  1   )     int  ->  [ebp-0x20]  do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x4)" P-DEP
 ;* V61 tmp53        [V61    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V13._reference (fldOffset=0x0)" P-INDEP
 ;* V62 tmp54        [V62    ] (  0,  0   )     int  ->  zero-ref    single-def "field V13._length (fldOffset=0x4)" P-INDEP
 ;* V63 tmp55        [V63    ] (  0,  0   )   byref  ->  zero-ref    "field V17._reference (fldOffset=0x0)" P-INDEP
@@ -103,7 +103,7 @@
 ;  V92 tmp84        [V92,T11] (  3, 10   )     int  ->  edx         "field V40._length (fldOffset=0x4)" P-INDEP
 ;* V93 tmp85        [V93    ] (  0,  0   )   byref  ->  zero-ref    "field V41._reference (fldOffset=0x0)" P-INDEP
 ;* V94 tmp86        [V94    ] (  0,  0   )     int  ->  zero-ref    "field V41._length (fldOffset=0x4)" P-INDEP
-;  V95 tmp87        [V95,T09] (  2, 16   )   byref  ->  eax         "field V42._reference (fldOffset=0x0)" P-INDEP
+;  V95 tmp87        [V95,T09] (  2, 16   )   byref  ->  ebx         "field V42._reference (fldOffset=0x0)" P-INDEP
 ;* V96 tmp88        [V96    ] (  0,  0   )     int  ->  zero-ref    "field V42._length (fldOffset=0x4)" P-INDEP
 ;* V97 tmp89        [V97    ] (  0,  0   )   byref  ->  zero-ref    "field V45._reference (fldOffset=0x0)" P-INDEP
 ;* V98 tmp90        [V98    ] (  0,  0   )     int  ->  zero-ref    "field V45._length (fldOffset=0x4)" P-INDEP
@@ -117,13 +117,13 @@
 ;* V106 tmp98       [V106    ] (  0,  0   )     int  ->  zero-ref    "field V53._length (fldOffset=0x4)" P-INDEP
 ;* V107 tmp99       [V107    ] (  0,  0   )   byref  ->  zero-ref    "field V54._reference (fldOffset=0x0)" P-INDEP
 ;* V108 tmp100      [V108    ] (  0,  0   )     int  ->  zero-ref    "field V54._length (fldOffset=0x4)" P-INDEP
-;  V109 tmp101      [V109,T12] (  2,  8   )     ref  ->  ecx         "argument with side effect"
-;  V110 tmp102      [V110,T20] (  2,  2   )     ref  ->  ecx         "argument with side effect"
-;  V111 tmp103      [V111,T21] (  2,  2   )     ref  ->  ecx         "argument with side effect"
-;  V112 tmp104      [V112,T22] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
+;  V109 tmp101      [V109,T13] (  2,  8   )     ref  ->  eax         "argument with side effect"
+;  V110 tmp102      [V110,T21] (  2,  2   )     ref  ->  ebx         "argument with side effect"
+;  V111 tmp103      [V111,T22] (  2,  2   )     ref  ->  ecx         "argument with side effect"
+;  V112 tmp104      [V112,T23] (  2,  2   )     ref  ->  ecx         single-def "argument with side effect"
 ;  V113 cse0        [V113,T00] (  4, 96   )     int  ->  eax         "CSE - aggressive"
 ;
-; Lcl frame size = 20
+; Lcl frame size = 28
 
 G_M44740_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
@@ -131,10 +131,10 @@ G_M44740_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        push     edi
        push     esi
        push     ebx
-       sub      esp, 20
+       sub      esp, 28
        xor      eax, eax
+       mov      dword ptr [ebp-0x24], eax
        mov      dword ptr [ebp-0x20], eax
-       mov      dword ptr [ebp-0x1C], eax
        mov      esi, ecx
        ; byrRegs +[esi]
        mov      edi, edx
@@ -144,42 +144,47 @@ G_M44740_IG02:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=000000C0 {e
        jmp      SHORT G_M44740_IG04
                        ;; size=2 bbWeight=1 PerfScore 2.00
 G_M44740_IG03:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       test     eax, eax
+       test     ebx, ebx
        je       SHORT G_M44740_IG04
-       mov      ecx, gword ptr [esi]
+       mov      ecx, ebx
+       mov      eax, gword ptr [esi]
+       ; gcrRegs +[eax]
+       mov      dword ptr [ebp-0x10], edx
+       push     edx
+       mov      dword ptr [ebp-0x14], ecx
+       push     ecx
+       mov      ecx, eax
        ; gcrRegs +[ecx]
-       push     ebx
-       mov      dword ptr [ebp-0x10], eax
-       push     eax
        mov      edx, 58
        call     [<unknown method>]
-       ; gcrRegs -[ecx]
-       cmp      eax, -1
-       jne      SHORT G_M44740_IG14
-                       ;; size=27 bbWeight=2 PerfScore 21.50
+       ; gcrRegs -[eax ecx]
+       mov      edx, eax
+       cmp      edx, -1
+       jne      G_M44740_IG17
+                       ;; size=40 bbWeight=2 PerfScore 25.00
 G_M44740_IG04:        ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      ebx, dword ptr [esi+0x08]
+       mov      eax, dword ptr [esi+0x08]
+       mov      dword ptr [ebp-0x28], eax
        mov      ecx, gword ptr [esi]
        ; gcrRegs +[ecx]
        mov      edx, dword ptr [esi+0x04]
-       sub      edx, ebx
+       sub      edx, eax
        test     ecx, ecx
        jne      SHORT G_M44740_IG06
-                       ;; size=14 bbWeight=8 PerfScore 60.00
+                       ;; size=17 bbWeight=8 PerfScore 68.00
 G_M44740_IG05:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs -[ecx]
-       mov      eax, ebx
-       or       eax, edx
+       or       edx, eax
        jne      SHORT G_M44740_IG07
        xor      ecx, ecx
        ; byrRegs +[ecx]
        xor      edx, edx
        jmp      SHORT G_M44740_IG10
-                       ;; size=12 bbWeight=0 PerfScore 0.00
+                       ;; size=10 bbWeight=0 PerfScore 0.00
 G_M44740_IG06:        ; bbWeight=2.01, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs +[ecx]
        ; byrRegs -[ecx]
-       cmp      dword ptr [ecx+0x04], ebx
+       cmp      dword ptr [ecx+0x04], eax
        jae      SHORT G_M44740_IG08
                        ;; size=5 bbWeight=2.01 PerfScore 8.02
 G_M44740_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
@@ -191,63 +196,96 @@ G_M44740_IG07:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
 G_M44740_IG08:        ; bbWeight=2.00, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref, isz
        ; gcrRegs +[ecx]
        ; byrRegs +[esi edi]
-       mov      eax, dword ptr [ecx+0x04]
-       sub      eax, ebx
-       cmp      eax, edx
+       mov      ebx, dword ptr [ecx+0x04]
+       sub      ebx, eax
+       cmp      ebx, edx
        jb       SHORT G_M44740_IG07
                        ;; size=9 bbWeight=2.00 PerfScore 7.01
 G_M44740_IG09:        ; bbWeight=2, gcrefRegs=00000002 {ecx}, byrefRegs=000000C0 {esi edi}, byref
-       lea      ecx, bword ptr [ecx+2*ebx+0x08]
+       lea      ecx, bword ptr [ecx+2*eax+0x08]
        ; gcrRegs -[ecx]
        ; byrRegs +[ecx]
                        ;; size=4 bbWeight=2 PerfScore 2.00
 G_M44740_IG10:        ; bbWeight=8, gcrefRegs=00000000 {}, byrefRegs=000000C2 {ecx esi edi}, byref, isz
-       mov      eax, 0xD1FFAB1E
-       ; byrRegs +[eax]
-       push     eax
+       mov      ebx, 0xD1FFAB1E
+       ; byrRegs +[ebx]
+       push     ebx
        push     2
        call     [<unknown method>]
-       ; byrRegs -[eax ecx]
-       test     eax, eax
+       ; byrRegs -[ecx ebx]
+       mov      ebx, eax
+       test     ebx, ebx
        jl       SHORT G_M44740_IG12
-                       ;; size=18 bbWeight=8 PerfScore 52.00
+                       ;; size=20 bbWeight=8 PerfScore 54.00
 G_M44740_IG11:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       lea      ecx, [ebx+eax]
+       mov      eax, dword ptr [ebp-0x28]
+       mov      edx, eax
+       lea      ecx, [edx+ebx]
        add      ecx, 2
        mov      dword ptr [esi+0x08], ecx
        jmp      SHORT G_M44740_IG03
-                       ;; size=11 bbWeight=2 PerfScore 7.50
-G_M44740_IG12:        ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
+                       ;; size=16 bbWeight=2 PerfScore 10.00
+G_M44740_IG12:        ; bbWeight=32, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
        mov      eax, dword ptr [esi+0x04]
-       cmp      ebx, eax
-       jge      G_M44740_IG29
-                       ;; size=11 bbWeight=32 PerfScore 104.00
+       mov      edx, dword ptr [ebp-0x28]
+       cmp      edx, eax
+       jge      SHORT G_M44740_IG14
+                       ;; size=10 bbWeight=32 PerfScore 136.00
 G_M44740_IG13:        ; bbWeight=16, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref
-       mov      ecx, eax
-       sub      ecx, ebx
-       mov      edx, ecx
+       mov      ecx, edx
+       mov      edx, eax
+       sub      edx, ecx
        mov      dword ptr [esi+0x08], eax
-       mov      eax, edx
+       mov      ebx, edx
+       mov      edx, ecx
        jmp      G_M44740_IG03
-                       ;; size=16 bbWeight=16 PerfScore 64.00
-G_M44740_IG14:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=000000C0 {esi edi}, byref, isz
-       mov      dword ptr [ebp-0x14], eax
-       mov      ecx, eax
-       sub      ecx, ebx
-       mov      dword ptr [ebp-0x18], ecx
-       mov      ecx, gword ptr [esi]
...

realworld.run.windows.x86.checked.mch

-43 (-11.11%) : 14166.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:CreateSixLabors.ImageSharp.PixelFormats.Rgba32:SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)

@@ -51,7 +51,7 @@ G_M35607_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
 G_M35607_IG02:        ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        mov      ebx, dword ptr [esi+0x04]
        test     ebx, ebx
-       je       G_M35607_IG25
+       je       G_M35607_IG19
        mov      eax, gword ptr [esi+0x08]
        ; gcrRegs +[eax]
        mov      gword ptr [ebp-0x1C], eax
@@ -71,16 +71,13 @@ G_M35607_IG02:        ; bbWeight=1, gcVars=00000080 {V00}, gcrefRegs=00000040 {e
        ; gcrRegs -[eax]
        mov      dword ptr [ebp-0x14], eax
        cmp      ebx, 1
-       jne      SHORT G_M35607_IG09
+       jne      SHORT G_M35607_IG07
                        ;; size=42 bbWeight=1 PerfScore 12.50
 G_M35607_IG03:        ; bbWeight=0.50, gcVars=00003180 {V00 V02 V20 V21}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[edx esi]
-       mov      edi, bword ptr [ebp-0x18]
-       ; byrRegs +[edi]
        mov      edx, gword ptr [ebp-0x1C]
        ; gcrRegs +[edx]
        mov      ecx, 0xD1FFAB1E      ; SixLabors.ImageSharp.Memory.Internals.SharedArrayPoolBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]
-       ; GC ptr vars -{V00}
        call     CORINFO_HELP_ISINSTANCEOFCLASS
        ; gcrRegs -[edx] +[eax]
        test     eax, eax
@@ -90,60 +87,44 @@ G_M35607_IG03:        ; bbWeight=0.50, gcVars=00003180 {V00 V02 V20 V21}, gcrefR
        ; gcrRegs +[ecx]
        mov      ebx, ecx
        ; gcrRegs +[ebx]
-       jmp      G_M35607_IG23
-                       ;; size=35 bbWeight=0.50 PerfScore 4.50
-G_M35607_IG04:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
+       mov      dword ptr [ebp-0x10], esi
+       mov      gword ptr [ebp-0x20], ebx
+       jmp      G_M35607_IG17
+                       ;; size=38 bbWeight=0.50 PerfScore 5.00
+G_M35607_IG04:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[eax ecx ebx]
        mov      edx, gword ptr [ebp-0x1C]
        ; gcrRegs +[edx]
        test     edx, edx
-       je       SHORT G_M35607_IG08
-                       ;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M35607_IG05:        ; bbWeight=0.25, gcVars=00002100 {V20 V21}, gcrefRegs=00000004 {edx}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+       je       G_M35607_IG17
+                       ;; size=11 bbWeight=0.50 PerfScore 1.12
+G_M35607_IG05:        ; bbWeight=0.25, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V02}
        cmp      dword ptr [edx], 0xD1FFAB1E
-       mov      esi, dword ptr [ebp-0x10]
-       jne      SHORT G_M35607_IG07
-                       ;; size=11 bbWeight=0.25 PerfScore 1.25
-G_M35607_IG06:        ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000080 {edi}, byref
+       jne      G_M35607_IG17
+                       ;; size=12 bbWeight=0.25 PerfScore 1.00
+G_M35607_IG06:        ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
        mov      esi, 2
        mov      edx, gword ptr [edx+0x04]
        mov      eax, dword ptr [edx+0x14]
        mov      dword ptr [ebp-0x14], eax
-       mov      ebx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ebx]
-       jmp      G_M35607_IG23
+       mov      dword ptr [ebp-0x10], esi
+       jmp      G_M35607_IG17
                        ;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M35607_IG07:        ; bbWeight=0.12, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
-       ; gcrRegs -[edx ebx]
-       mov      ebx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ebx]
-       jmp      G_M35607_IG23
-                       ;; size=8 bbWeight=0.12 PerfScore 0.38
-G_M35607_IG08:        ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref
-       ; gcrRegs -[ebx]
-       mov      ebx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ebx]
-       mov      esi, dword ptr [ebp-0x10]
-       jmp      G_M35607_IG23
-                       ;; size=11 bbWeight=0.25 PerfScore 1.00
-G_M35607_IG09:        ; bbWeight=0.50, gcVars=00003180 {V00 V02 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[ebx] +[esi]
-       ; byrRegs -[edi]
-       ; GC ptr vars +{V00 V02 V07 V12}
-       mov      edi, bword ptr [ebp-0x18]
-       ; byrRegs +[edi]
+G_M35607_IG07:        ; bbWeight=0.50, gcVars=00003180 {V00 V02 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[edx] +[esi]
+       ; GC ptr vars +{V02 V12}
        mov      eax, gword ptr [ebp-0x1C]
        ; gcrRegs +[eax]
        test     eax, eax
-       je       SHORT G_M35607_IG18
-                       ;; size=10 bbWeight=0.50 PerfScore 1.62
-G_M35607_IG10:        ; bbWeight=0.25, gcVars=00002100 {V20 V21}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
-       ; GC ptr vars -{V00 V02 V07 V12}
+       je       G_M35607_IG17
+                       ;; size=11 bbWeight=0.50 PerfScore 1.12
+G_M35607_IG08:        ; bbWeight=0.25, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000041 {eax esi}, byrefRegs=00000000 {}, gcvars, byref
+       ; GC ptr vars -{V02 V12}
        cmp      dword ptr [eax], 0xD1FFAB1E
-       jne      SHORT G_M35607_IG17
-                       ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M35607_IG11:        ; bbWeight=0.50, gcVars=00002000 {V20}, gcrefRegs=00000040 {esi}, byrefRegs=00000080 {edi}, gcvars, byref, isz
+       jne      G_M35607_IG17
+                       ;; size=12 bbWeight=0.25 PerfScore 1.00
+G_M35607_IG09:        ; bbWeight=0.50, gcVars=00002080 {V00 V20}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax]
        ; GC ptr vars -{V21}
        mov      dword ptr [ebp-0x10], 3
@@ -155,30 +136,27 @@ G_M35607_IG11:        ; bbWeight=0.50, gcVars=00002000 {V20}, gcrefRegs=00000040
        ; gcrRegs +[ecx]
        xor      edx, edx
        test     ebx, ebx
-       jle      SHORT G_M35607_IG16
+       jle      SHORT G_M35607_IG13
        mov      gword ptr [ebp-0x24], ecx
        ; GC ptr vars +{V21}
        cmp      dword ptr [ecx+0x04], ebx
-       mov      bword ptr [ebp-0x18], edi
-       ; GC ptr vars +{V00}
-       jl       SHORT G_M35607_IG19
-                       ;; size=38 bbWeight=0.50 PerfScore 5.12
-G_M35607_IG12:        ; bbWeight=3.96, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       jl       SHORT G_M35607_IG14
+                       ;; size=35 bbWeight=0.50 PerfScore 4.62
+G_M35607_IG10:        ; bbWeight=3.96, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax ecx]
-       ; byrRegs -[edi]
        mov      eax, gword ptr [esi+4*edx+0x08]
        ; gcrRegs +[eax]
        mov      edi, eax
        ; gcrRegs +[edi]
        test     edi, edi
-       je       SHORT G_M35607_IG14
+       je       SHORT G_M35607_IG12
                        ;; size=10 bbWeight=3.96 PerfScore 13.86
-G_M35607_IG13:        ; bbWeight=0.99, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref
+G_M35607_IG11:        ; bbWeight=0.99, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, 0xD1FFAB1E      ; SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]
        cmp      dword ptr [edi], ecx
-       jne      G_M35607_IG26
-                       ;; size=13 bbWeight=0.99 PerfScore 4.21
-G_M35607_IG14:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+       jne      SHORT G_M35607_IG20
+                       ;; size=9 bbWeight=0.99 PerfScore 4.21
+G_M35607_IG12:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax]
        mov      eax, gword ptr [edi+0x04]
        ; gcrRegs +[eax]
@@ -189,58 +167,31 @@ G_M35607_IG14:        ; bbWeight=3.96, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        mov      dword ptr [ecx+4*edx+0x08], eax
        inc      edx
        cmp      ebx, edx
-       jg       SHORT G_M35607_IG12
-                       ;; size=18 bbWeight=3.96 PerfScore 29.70
-G_M35607_IG15:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[ecx esi edi]
-       mov      edi, bword ptr [ebp-0x18]
-       ; byrRegs +[edi]
-       mov      ebx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ebx]
-       mov      esi, dword ptr [ebp-0x10]
-       jmp      SHORT G_M35607_IG23
-                       ;; size=11 bbWeight=0.50 PerfScore 2.50
-G_M35607_IG16:        ; bbWeight=0.25, gcVars=00002000 {V20}, gcrefRegs=00000002 {ecx}, byrefRegs=00000080 {edi}, gcvars, byref, isz
-       ; gcrRegs -[ebx] +[ecx]
-       ; GC ptr vars -{V00 V21}
+       jg       SHORT G_M35607_IG10
+       jmp      SHORT G_M35607_IG17
+                       ;; size=20 bbWeight=3.96 PerfScore 37.62
+G_M35607_IG13:        ; bbWeight=0.25, gcVars=00002080 {V00 V20}, gcrefRegs=00000002 {ecx}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[esi edi]
+       ; GC ptr vars -{V21}
        mov      gword ptr [ebp-0x24], ecx
        ; GC ptr vars +{V21}
-       mov      ebx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ebx]
-       mov      esi, dword ptr [ebp-0x10]
-       jmp      SHORT G_M35607_IG23
-                       ;; size=11 bbWeight=0.25 PerfScore 1.25
-G_M35607_IG17:        ; bbWeight=0.12, gcVars=00002100 {V20 V21}, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, gcvars, byref, isz
-       ; gcrRegs -[ecx ebx]
-       mov      ebx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ebx]
-       mov      esi, dword ptr [ebp-0x10]
-       jmp      SHORT G_M35607_IG23
-                       ;; size=8 bbWeight=0.12 PerfScore 0.50
-G_M35607_IG18:        ; bbWeight=0.25, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
-       ; gcrRegs -[ebx]
-       mov      ebx, gword ptr [ebp-0x20]
-       ; gcrRegs +[ebx]
-       mov      esi, dword ptr [ebp-0x10]
-       jmp      SHORT G_M35607_IG23
-                       ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M35607_IG19:        ; bbWeight=0.04, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs -[ebx] +[esi]
-       ; byrRegs -[edi]
-       ; GC ptr vars +{V00 V07}
+       jmp      SHORT G_M35607_IG17
+                       ;; size=5 bbWeight=0.25 PerfScore 0.75
+G_M35607_IG14:        ; bbWeight=0.04, gcVars=00002180 {V00 V20 V21}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx] +[esi]
        mov      eax, gword ptr [esi+4*edx+0x08]
        ; gcrRegs +[eax]
        mov      edi, eax
        ; gcrRegs +[edi]
        test     edi, edi
-       je       SHORT G_M35607_IG21
+       je       SHORT G_M35607_IG16
                        ;; size=10 bbWeight=0.04 PerfScore 0.14
-G_M35607_IG20:        ; bbWeight=0.01, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M35607_IG15:        ; bbWeight=0.01, gcrefRegs=000000C1 {eax esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, 0xD1FFAB1E      ; SixLabors.ImageSharp.Memory.Internals.UnmanagedBuffer`1[SixLabors.ImageSharp.PixelFormats.Rgba32]
        cmp      dword ptr [edi], ecx
-       jne      SHORT G_M35607_IG26
+       jne      SHORT G_M35607_IG20
                        ;; size=9 bbWeight=0.01 PerfScore 0.04
-G_M35607_IG21:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+G_M35607_IG16:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs -[eax]
        mov      eax, gword ptr [edi+0x04]
        ; gcrRegs +[eax]
@@ -249,41 +200,39 @@ G_M35607_IG21:        ; bbWeight=0.04, gcrefRegs=000000C0 {esi edi}, byrefRegs=0
        mov      ecx, gword ptr [ebp-0x24]
        ; gcrRegs +[ecx]
        cmp      edx, dword ptr [ecx+0x04]
-       jae      SHORT G_M35607_IG25
+       jae      SHORT G_M35607_IG19
        mov      dword ptr [ecx+4*edx+0x08], eax
        inc      edx
        cmp      ebx, edx
        mov      gword ptr [ebp-0x24], ecx
-       jg       SHORT G_M35607_IG19
+       jg       SHORT G_M35607_IG14
                        ;; size=26 bbWeight=0.04 PerfScore 0.50
-G_M35607_IG22:        ; bbWeight=0.02, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M35607_IG17:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[ecx esi edi]
+       mov      edx, bword ptr [ebp-0x18]
+       ; byrRegs +[edx]
        mov      ebx, gword ptr [ebp-0x20]
        ; gcrRegs +[ebx]
-       mov      esi, dword ptr [ebp-0x10]
-       mov      edi, bword ptr [ebp-0x18]
-       ; byrRegs +[edi]
-                       ;; size=9 bbWeight=0.02 PerfScore 0.06
-G_M35607_IG23:        ; bbWeight=1, gcVars=00000100 {V21}, gcrefRegs=00000008 {ebx}, byrefRegs=00000080 {edi}, gcvars, byref
-       ; GC ptr vars -{V00 V07 V20}
...

-16 (-7.96%) : 13.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)

@@ -39,11 +39,11 @@ G_M33320_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        sub      esp, 12
        mov      eax, ecx
                        ;; size=11 bbWeight=1 PerfScore 4.75
-G_M33320_IG02:        ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref
+G_M33320_IG02:        ; bbWeight=1, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[edx]
        test     edx, edx
-       je       G_M33320_IG11
-                       ;; size=8 bbWeight=1 PerfScore 1.25
+       je       SHORT G_M33320_IG10
+                       ;; size=4 bbWeight=1 PerfScore 1.25
 G_M33320_IG03:        ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, byref, isz
        mov      gword ptr [ebp-0x18], edx
        ; GC ptr vars +{V01}
@@ -51,7 +51,7 @@ G_M33320_IG03:        ; bbWeight=0.50, gcrefRegs=00000004 {edx}, byrefRegs=00000
        mov      dword ptr [ebp-0x14], esi
        cmp      esi, eax
        mov      edx, gword ptr [ebp-0x18]
-       je       SHORT G_M33320_IG11
+       je       SHORT G_M33320_IG10
        mov      edi, gword ptr [D1FFAB1EH]      ; static handle
        ; gcrRegs +[edi]
        add      edi, 8
@@ -83,50 +83,41 @@ G_M33320_IG05:        ; bbWeight=2, gcrefRegs=00000000 {}, byrefRegs=00000084 {e
        mov      esi, dword ptr [ebp-0x10]
        xor      esi, dword ptr [edx+0x08]
        cmp      esi, 1
-       jbe      SHORT G_M33320_IG08
+       jbe      SHORT G_M33320_IG07
                        ;; size=11 bbWeight=2 PerfScore 10.50
 G_M33320_IG06:        ; bbWeight=4, gcrefRegs=00000000 {}, byrefRegs=00000080 {edi}, byref, isz
        ; byrRegs -[edx]
        test     eax, eax
-       je       SHORT G_M33320_IG09
+       je       SHORT G_M33320_IG08
        inc      ecx
        add      ebx, ecx
        and      ebx, dword ptr [edi+0x04]
        cmp      ecx, 8
        jl       SHORT G_M33320_IG04
-                       ;; size=15 bbWeight=4 PerfScore 24.00
-G_M33320_IG07:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
-       ; byrRegs -[edi]
-       mov      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x18]
-       ; gcrRegs +[edx]
-       mov      dword ptr [ebp-0x10], eax
-       mov      gword ptr [ebp-0x18], edx
-       jmp      SHORT G_M33320_IG09
-                       ;; size=14 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG08:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
-       ; gcrRegs -[edx]
-       ; byrRegs +[edx]
+       jmp      SHORT G_M33320_IG08
+                       ;; size=17 bbWeight=4 PerfScore 32.00
+G_M33320_IG07:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000004 {edx}, byref, isz
+       ; byrRegs -[edi] +[edx]
        cmp      eax, dword ptr [edx]
-       jne      SHORT G_M33320_IG09
-       jmp      SHORT G_M33320_IG10
+       jne      SHORT G_M33320_IG08
+       jmp      SHORT G_M33320_IG09
                        ;; size=6 bbWeight=0.50 PerfScore 3.00
-G_M33320_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M33320_IG08:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; byrRegs -[edx]
        mov      esi, 2
                        ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG10:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
+G_M33320_IG09:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, isz
        cmp      esi, 1
        mov      edx, gword ptr [ebp-0x18]
        ; gcrRegs +[edx]
-       jne      SHORT G_M33320_IG13
+       jne      SHORT G_M33320_IG12
                        ;; size=8 bbWeight=0.50 PerfScore 1.12
-G_M33320_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
+G_M33320_IG10:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
        ; GC ptr vars -{V01}
        mov      eax, edx
        ; gcrRegs +[eax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG12:        ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG11:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -134,7 +125,7 @@ G_M33320_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
+G_M33320_IG12:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref, isz
        ; gcrRegs -[eax]
        mov      eax, dword ptr [ebp-0x10]
        mov      ecx, eax
@@ -143,7 +134,7 @@ G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
        mov      edi, eax
        ; gcrRegs +[edi]
        test     esi, esi
-       jne      SHORT G_M33320_IG14
+       jne      SHORT G_M33320_IG13
        mov      ecx, 0xD1FFAB1E
        ; gcrRegs +[ecx]
        mov      edx, 0xD1FFAB1E
@@ -151,11 +142,11 @@ G_M33320_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {e
        call     [<unknown method>]
        ; gcrRegs -[eax ecx edx]
                        ;; size=32 bbWeight=0.50 PerfScore 3.62
-G_M33320_IG14:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
+G_M33320_IG13:        ; bbWeight=0.50, gcrefRegs=00000080 {edi}, byrefRegs=00000000 {}, byref
        mov      eax, edi
        ; gcrRegs +[eax]
                        ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33320_IG15:        ; bbWeight=0.50, epilog, nogc, extend
+G_M33320_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -164,6 +155,6 @@ G_M33320_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
 
-; Total bytes of code 201, prolog size 11, PerfScore 99.00, instruction count 80, allocated bytes for code 201 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
+; Total bytes of code 185, prolog size 11, PerfScore 104.00, instruction count 76, allocated bytes for code 185 (MethodHash=45b17dd7) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
 ; ============================================================
 

-27 (-7.94%) : 14904.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)

@@ -8,14 +8,14 @@
 ; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T01] (  5,  5   )     ref  ->  esi         this class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor>
-;  V01 arg1         [V01,T00] (  7,  7   )  struct (24) [ebp+0x10]  do-not-enreg[S] single-def <System.Numerics.Matrix3x2>
-;  V02 arg2         [V02,T02] (  5,  5   )     ref  ->  edi         class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
-;  V03 arg3         [V03,T06] (  1,  1   )  struct ( 8) [ebp+0x08]  do-not-enreg[S] single-def <SixLabors.ImageSharp.Size>
-;  V04 tmp0         [V04,T15] (  4,  0   )     ref  ->  esi         class-hnd exact single-def "NewObj constructor temp" <SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException>
+;  V00 this         [V00,T00] (  5,  2   )     ref  ->  esi         this class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor>
+;  V01 arg1         [V01,T02] (  7,  0   )  struct (24) [ebp+0x10]  do-not-enreg[S] single-def <System.Numerics.Matrix3x2>
+;  V02 arg2         [V02,T01] (  5,  2   )     ref  ->  edi         class-hnd single-def <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
+;  V03 arg3         [V03,T15] (  1,  0   )  struct ( 8) [ebp+0x08]  do-not-enreg[S] single-def <SixLabors.ImageSharp.Size>
+;  V04 tmp0         [V04,T03] (  4,  0   )     ref  ->  esi         class-hnd exact single-def "NewObj constructor temp" <SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException>
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd "Inlining Arg" <SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler>
 ;* V06 tmp2         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Type>
-;  V07 tmp3         [V07,T05] (  2,  1   )   ubyte  ->  edx         "Inline return value spill temp"
+;  V07 tmp3         [V07,T09] (  2,  0   )   ubyte  ->  ecx         "Inline return value spill temp"
 ;* V08 tmp4         [V08    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] ld-addr-op "Inlining Arg" <System.Numerics.Matrix3x2>
 ;* V09 tmp5         [V09,T16] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V10 tmp6         [V10    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] "Inlining Arg" <System.Numerics.Matrix3x2>
@@ -25,26 +25,26 @@
 ;* V14 tmp10        [V14    ] (  0,  0   )   float  ->  zero-ref    "Inlining Arg"
 ;* V15 tmp11        [V15    ] (  0,  0   )   float  ->  zero-ref    "Inlining Arg"
 ;* V16 tmp12        [V16    ] (  0,  0   )   float  ->  zero-ref    "Inlining Arg"
-;  V17 tmp13        [V17,T04] (  3,  1.50)   ubyte  ->  edx         "Inline return value spill temp"
-;  V18 tmp14        [V18,T08] (  3,  3   )   float  ->  [ebp-0x0C]  spill-single-def "Inlining Arg"
-;  V19 tmp15        [V19,T07] (  4,  3.50)   float  ->  mm0         single-def "V08.[000..004)"
-;  V20 tmp16        [V20,T09] (  4,  2.50)   float  ->  mm1         single-def "V08.[004..008)"
-;  V21 tmp17        [V21,T10] (  4,  2.50)   float  ->  mm2         single-def "V08.[008..012)"
-;  V22 tmp18        [V22,T11] (  4,  2.50)   float  ->  mm3         single-def "V08.[012..016)"
-;  V23 tmp19        [V23,T12] (  3,  2   )   float  ->  mm4         single-def "V08.[016..020)"
-;  V24 tmp20        [V24,T13] (  3,  2   )   float  ->  mm5         single-def "V08.[020..024)"
+;  V17 tmp13        [V17,T10] (  3,  0   )   ubyte  ->  ecx         "Inline return value spill temp"
+;  V18 tmp14        [V18,T11] (  3,  0   )   float  ->  [ebp-0x0C]  spill-single-def "Inlining Arg"
+;  V19 tmp15        [V19,T04] (  4,  0   )   float  ->  mm0         single-def "V08.[000..004)"
+;  V20 tmp16        [V20,T05] (  4,  0   )   float  ->  mm1         single-def "V08.[004..008)"
+;  V21 tmp17        [V21,T06] (  4,  0   )   float  ->  mm2         single-def "V08.[008..012)"
+;  V22 tmp18        [V22,T07] (  4,  0   )   float  ->  mm3         single-def "V08.[012..016)"
+;  V23 tmp19        [V23,T12] (  3,  0   )   float  ->  mm4         single-def "V08.[016..020)"
+;  V24 tmp20        [V24,T13] (  3,  0   )   float  ->  mm5         single-def "V08.[020..024)"
 ;* V25 tmp21        [V25    ] (  0,  0   )   float  ->  zero-ref    single-def "V10.[000..004)"
 ;* V26 tmp22        [V26    ] (  0,  0   )   float  ->  zero-ref    single-def "V10.[004..008)"
 ;* V27 tmp23        [V27    ] (  0,  0   )   float  ->  zero-ref    single-def "V10.[008..012)"
 ;* V28 tmp24        [V28    ] (  0,  0   )   float  ->  zero-ref    single-def "V10.[012..016)"
 ;* V29 tmp25        [V29    ] (  0,  0   )   float  ->  zero-ref    single-def "V10.[016..020)"
 ;* V30 tmp26        [V30    ] (  0,  0   )   float  ->  zero-ref    single-def "V10.[020..024)"
-;  V31 tmp27        [V31,T03] (  3,  6   )     ref  ->  eax         single-def "argument with side effect"
-;  V32 cse0         [V32,T14] (  3,  1.50)   float  ->  mm1         "CSE - moderate"
+;  V31 tmp27        [V31,T08] (  3,  0   )     ref  ->  eax         single-def "argument with side effect"
+;  V32 cse0         [V32,T14] (  3,  0   )   float  ->  mm1         "CSE - moderate"
 ;
 ; Lcl frame size = 4
 
-G_M56268_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
+G_M56268_IG01:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, nogc <-- Prolog IG
        push     ebp
        mov      ebp, esp
        push     edi
@@ -55,18 +55,16 @@ G_M56268_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ; gcrRegs +[esi]
        mov      edi, edx
        ; gcrRegs +[edi]
-                       ;; size=13 bbWeight=1 PerfScore 5.75
-G_M56268_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+                       ;; size=13 bbWeight=0 PerfScore 0.00
+G_M56268_IG02:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        test     edi, edi
-       jne      SHORT G_M56268_IG04
-                       ;; size=4 bbWeight=1 PerfScore 1.25
-G_M56268_IG03:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       jne      SHORT G_M56268_IG03
        mov      ecx, 0xD1FFAB1E
        ; gcrRegs +[ecx]
        call     [<unknown method>]
        ; gcrRegs -[ecx]
-                       ;; size=11 bbWeight=0.50 PerfScore 1.62
-G_M56268_IG04:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+                       ;; size=15 bbWeight=0 PerfScore 0.00
+G_M56268_IG03:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, edi
        ; gcrRegs +[ecx]
        call     <unknown method>
@@ -79,17 +77,15 @@ G_M56268_IG04:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        call     [eax+0x04]<unknown method>
        ; gcrRegs -[ecx]
        test     eax, eax
-       jne      SHORT G_M56268_IG06
-                       ;; size=21 bbWeight=1 PerfScore 9.75
-G_M56268_IG05:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       jne      SHORT G_M56268_IG04
        mov      ecx, 0xD1FFAB1E
        ; gcrRegs +[ecx]
        mov      edx, 0xD1FFAB1E
        ; gcrRegs +[edx]
        call     [<unknown method>]
        ; gcrRegs -[ecx edx]
-                       ;; size=16 bbWeight=0.50 PerfScore 1.75
-G_M56268_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+                       ;; size=37 bbWeight=0 PerfScore 0.00
+G_M56268_IG04:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        vmovss   xmm0, dword ptr [ebp+0x10]
        vmovss   xmm1, dword ptr [ebp+0x14]
        vmovss   xmm2, dword ptr [ebp+0x18]
@@ -97,74 +93,46 @@ G_M56268_IG06:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=0000
        vmovss   xmm4, dword ptr [ebp+0x20]
        vmovss   xmm5, dword ptr [ebp+0x24]
        vucomiss xmm0, xmm0
-       jp       G_M56268_IG14
-                       ;; size=40 bbWeight=1 PerfScore 21.00
-G_M56268_IG07:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+       jp       SHORT G_M56268_IG08
        vucomiss xmm1, xmm1
-       jp       G_M56268_IG14
+       jp       SHORT G_M56268_IG08
        vucomiss xmm2, xmm2
-       jp       G_M56268_IG14
+       jp       SHORT G_M56268_IG08
        vucomiss xmm3, xmm3
-       jp       G_M56268_IG14
+       jp       SHORT G_M56268_IG08
        vucomiss xmm4, xmm4
-       jp       G_M56268_IG14
+       jp       SHORT G_M56268_IG08
        vucomiss xmm5, xmm5
-       jp       G_M56268_IG14
+       jp       SHORT G_M56268_IG08
        vmulss   xmm0, xmm0, xmm3
        vmulss   xmm1, xmm2, xmm1
        vsubss   xmm0, xmm0, xmm1
        vmovss   dword ptr [ebp-0x0C], xmm0
        test     byte  ptr [D1FFAB1EH], 1      ; global ptr
-       je       SHORT G_M56268_IG13
-                       ;; size=76 bbWeight=0.50 PerfScore 14.50
-G_M56268_IG08:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       vmovss   xmm1, dword ptr [D1FFAB1EH]      ; static handle
-       vxorps   xmm2, xmm1, xmmword ptr [@RWD00]
-       vucomiss xmm0, xmm2
-       jbe      SHORT G_M56268_IG09
-       xor      edx, edx
-       vucomiss xmm1, xmm0
-       seta     dl
-       jmp      SHORT G_M56268_IG10
-                       ;; size=33 bbWeight=0.50 PerfScore 7.12
-G_M56268_IG09:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
-       xor      edx, edx
-                       ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M56268_IG10:        ; bbWeight=0.50, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
-       test     edx, edx
-       jne      SHORT G_M56268_IG14
-                       ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M56268_IG11:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
-       lea      edx, bword ptr [esi+0x04]
-       ; byrRegs +[edx]
-       call     CORINFO_HELP_ASSIGN_REF_EDI
-       ; gcrRegs -[edi]
-       ; byrRegs -[edx]
-       vmovdqu  xmm0, xmmword ptr [ebp+0x10]
-       vmovdqu  xmmword ptr [esi+0x08], xmm0
-       vmovdqu  xmm0, xmmword ptr [ebp+0x18]
-       vmovdqu  xmmword ptr [esi+0x10], xmm0
-       mov      ecx, dword ptr [ebp+0x08]
-       mov      dword ptr [esi+0x20], ecx
-       mov      ecx, dword ptr [ebp+0x0C]
-       mov      dword ptr [esi+0x24], ecx
-                       ;; size=40 bbWeight=1 PerfScore 15.50
-G_M56268_IG12:        ; bbWeight=1, epilog, nogc, extend
-       pop      ecx
-       pop      esi
-       pop      edi
-       pop      ebp
-       ret      32
-                       ;; size=7 bbWeight=1 PerfScore 4.00
-G_M56268_IG13:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; gcrRegs +[edi]
+       jne      SHORT G_M56268_IG05
        mov      ecx, 0xD1FFAB1E
        mov      edx, 11
        call     CORINFO_HELP_GETSHARED_NONGCSTATIC_BASE
+                       ;; size=107 bbWeight=0 PerfScore 0.00
+G_M56268_IG05:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+       vmovss   xmm1, dword ptr [D1FFAB1EH]      ; static handle
+       vxorps   xmm2, xmm1, xmmword ptr [@RWD00]
        vmovss   xmm0, dword ptr [ebp-0x0C]
-       jmp      SHORT G_M56268_IG08
-                       ;; size=22 bbWeight=0 PerfScore 0.00
-G_M56268_IG14:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       vucomiss xmm0, xmm2
+       jbe      SHORT G_M56268_IG06
+       xor      ecx, ecx
+       vucomiss xmm1, xmm0
+       seta     cl
+       jmp      SHORT G_M56268_IG07
+                       ;; size=38 bbWeight=0 PerfScore 0.00
+G_M56268_IG06:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       xor      ecx, ecx
+                       ;; size=2 bbWeight=0 PerfScore 0.00
+G_M56268_IG07:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
+       test     ecx, ecx
+       je       SHORT G_M56268_IG09
+                       ;; size=4 bbWeight=0 PerfScore 0.00
+G_M56268_IG08:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi edi]
        mov      ecx, 0xD1FFAB1E      ; SixLabors.ImageSharp.Processing.Processors.Transforms.DegenerateTransformException
        call     CORINFO_HELP_NEWSFAST
@@ -188,11 +156,33 @@ G_M56268_IG14:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        ; gcrRegs +[ecx]
        call     CORINFO_HELP_THROW
        ; gcrRegs -[ecx esi]
-       int3     
-                       ;; size=51 bbWeight=0 PerfScore 0.00
+                       ;; size=50 bbWeight=0 PerfScore 0.00
+G_M56268_IG09:        ; bbWeight=0, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs +[esi edi]
+       lea      edx, bword ptr [esi+0x04]
+       ; byrRegs +[edx]
+       call     CORINFO_HELP_ASSIGN_REF_EDI
+       ; gcrRegs -[edi]
+       ; byrRegs -[edx]
+       vmovdqu  xmm0, xmmword ptr [ebp+0x10]
+       vmovdqu  xmmword ptr [esi+0x08], xmm0
+       vmovdqu  xmm0, xmmword ptr [ebp+0x18]
+       vmovdqu  xmmword ptr [esi+0x10], xmm0
+       mov      eax, dword ptr [ebp+0x08]
+       mov      dword ptr [esi+0x20], eax
+       mov      eax, dword ptr [ebp+0x0C]
+       mov      dword ptr [esi+0x24], eax
+                       ;; size=40 bbWeight=0 PerfScore 0.00
+G_M56268_IG10:        ; bbWeight=0, epilog, nogc, extend
+       pop      ecx
+       pop      esi
+       pop      edi
+       pop      ebp
+       ret      32
+                       ;; size=7 bbWeight=0 PerfScore 0.00
 RWD00      dq  8000000080000000h, 8000000080000000h
 
 
-; Total bytes of code 340, prolog size 9, PerfScore 83.00, instruction count 91, allocated bytes for code 340 (MethodHash=a5882433) for method SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)
+; Total bytes of code 313, prolog size 9, PerfScore 0.00, instruction count 89, allocated bytes for code 313 (MethodHash=a5882433) for method SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)
 ; ============================================================
 

+24 (+7.43%) : 4905.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)

@@ -104,7 +104,7 @@ G_M50035_IG06:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000
 G_M50035_IG07:        ; bbWeight=2, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG15
+       je       SHORT G_M50035_IG16
                        ;; size=10 bbWeight=2 PerfScore 8.50
 G_M50035_IG08:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      edx, dword ptr [ebp-0x14]
@@ -115,24 +115,24 @@ G_M50035_IG08:        ; bbWeight=4, gcrefRegs=00000040 {esi}, byrefRegs=00000000
 G_M50035_IG09:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        test     edi, 2
        mov      edi, dword ptr [ebp-0x10]
-       je       SHORT G_M50035_IG14
+       je       SHORT G_M50035_IG15
                        ;; size=11 bbWeight=1 PerfScore 2.25
 G_M50035_IG10:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        lea      eax, [ebx-0x01]
        mov      edi, eax
        cmp      edi, edx
-       jl       SHORT G_M50035_IG13
+       jl       SHORT G_M50035_IG14
        mov      dword ptr [ebp-0x14], edx
        mov      ecx, edi
        or       ecx, edx
-       jl       SHORT G_M50035_IG19
+       jl       SHORT G_M50035_IG21
        cmp      ebx, edi
-       jle      SHORT G_M50035_IG19
+       jle      SHORT G_M50035_IG21
                        ;; size=22 bbWeight=0.50 PerfScore 2.88
 G_M50035_IG11:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        movzx    ebx, word  ptr [esi+2*edi+0x08]
        cmp      ebx, 256
-       jae      SHORT G_M50035_IG16
+       jae      SHORT G_M50035_IG17
                        ;; size=13 bbWeight=3.96 PerfScore 12.87
 G_M50035_IG12:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        xor      ecx, ecx
@@ -140,45 +140,54 @@ G_M50035_IG12:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000
        setb     cl
        call     [<unknown method>]
        test     byte  ptr [ebx+D1FFAB1EH], 128
-       je       SHORT G_M50035_IG23
-       jmp      SHORT G_M50035_IG17
+       je       SHORT G_M50035_IG13
+       jmp      SHORT G_M50035_IG18
                        ;; size=28 bbWeight=1.98 PerfScore 20.79
-G_M50035_IG13:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], edx
-       jmp      SHORT G_M50035_IG23
-                       ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M50035_IG14:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       mov      dword ptr [ebp-0x14], edx
-       jmp      SHORT G_M50035_IG23
-                       ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M50035_IG15:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG13:        ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      ebx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M50035_IG27
+                       ;; size=5 bbWeight=0.99 PerfScore 2.97
+G_M50035_IG14:        ; bbWeight=0.25, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      ebx, edx
+       jmp      SHORT G_M50035_IG27
+                       ;; size=4 bbWeight=0.25 PerfScore 0.56
+G_M50035_IG15:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      ebx, edx
+       jmp      SHORT G_M50035_IG27
+                       ;; size=4 bbWeight=0.50 PerfScore 1.12
+G_M50035_IG16:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      edx, dword ptr [ebp-0x14]
        jmp      SHORT G_M50035_IG09
                        ;; size=5 bbWeight=1 PerfScore 3.00
-G_M50035_IG16:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG17:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, ebx
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG23
+       je       SHORT G_M50035_IG20
                        ;; size=12 bbWeight=1.98 PerfScore 8.91
-G_M50035_IG17:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG18:        ; bbWeight=3.96, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        dec      edi
        mov      ebx, dword ptr [ebp-0x14]
        cmp      edi, ebx
        jge      SHORT G_M50035_IG11
                        ;; size=8 bbWeight=3.96 PerfScore 9.90
-G_M50035_IG18:        ; bbWeight=0.50, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
-       jmp      SHORT G_M50035_IG23
-                       ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M50035_IG19:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG19:        ; bbWeight=1.98, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      ebx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M50035_IG27
+                       ;; size=5 bbWeight=1.98 PerfScore 5.94
+G_M50035_IG20:        ; bbWeight=0.99, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      ebx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M50035_IG27
+                       ;; size=5 bbWeight=0.99 PerfScore 2.97
+G_M50035_IG21:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        cmp      edi, ebx
-       jae      SHORT G_M50035_IG25
+       jae      SHORT G_M50035_IG31
        movzx    ecx, word  ptr [esi+2*edi+0x08]
        mov      eax, ecx
        cmp      eax, 256
-       jae      SHORT G_M50035_IG21
+       jae      SHORT G_M50035_IG24
                        ;; size=18 bbWeight=0.04 PerfScore 0.19
-G_M50035_IG20:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG22:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      dword ptr [ebp-0x1C], eax
        xor      ecx, ecx
        cmp      eax, 256
@@ -187,30 +196,36 @@ G_M50035_IG20:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000
        mov      eax, dword ptr [ebp-0x1C]
        test     byte  ptr [eax+D1FFAB1EH], 128
        je       SHORT G_M50035_IG23
-       jmp      SHORT G_M50035_IG22
+       jmp      SHORT G_M50035_IG25
                        ;; size=33 bbWeight=0.02 PerfScore 0.25
-G_M50035_IG21:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG23:        ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      ebx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M50035_IG27
+                       ;; size=5 bbWeight=0.01 PerfScore 0.03
+G_M50035_IG24:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        mov      ecx, eax
        call     [System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte]
        test     eax, eax
-       je       SHORT G_M50035_IG23
+       je       SHORT G_M50035_IG30
                        ;; size=12 bbWeight=0.02 PerfScore 0.09
-G_M50035_IG22:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+G_M50035_IG25:        ; bbWeight=0.04, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
        dec      edi
        mov      edx, dword ptr [ebp-0x14]
        cmp      edi, edx
-       mov      dword ptr [ebp-0x14], edx
-       jge      SHORT G_M50035_IG19
-                       ;; size=11 bbWeight=0.04 PerfScore 0.14
-G_M50035_IG23:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       jge      SHORT G_M50035_IG29
+                       ;; size=8 bbWeight=0.04 PerfScore 0.10
+G_M50035_IG26:        ; bbWeight=0.02, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       mov      ebx, edx
+                       ;; size=2 bbWeight=0.02 PerfScore 0.01
+G_M50035_IG27:        ; bbWeight=1, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
        push     edi
        mov      ecx, esi
        ; gcrRegs +[ecx]
-       mov      edx, dword ptr [ebp-0x14]
+       mov      edx, ebx
        call     [System.String:CreateTrimmedString(int,int):System.String:this]
        ; gcrRegs -[ecx esi] +[eax]
-                       ;; size=12 bbWeight=1 PerfScore 5.25
-G_M50035_IG24:        ; bbWeight=1, epilog, nogc, extend
+                       ;; size=11 bbWeight=1 PerfScore 4.50
+G_M50035_IG28:        ; bbWeight=1, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -218,12 +233,21 @@ G_M50035_IG24:        ; bbWeight=1, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=1 PerfScore 3.50
-G_M50035_IG25:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax]
+G_M50035_IG29:        ; bbWeight=0.02, gcVars=00000000 {}, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax] +[esi]
+       mov      dword ptr [ebp-0x14], edx
+       jmp      SHORT G_M50035_IG21
+                       ;; size=5 bbWeight=0.02 PerfScore 0.06
+G_M50035_IG30:        ; bbWeight=0.01, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref, isz
+       mov      ebx, dword ptr [ebp-0x14]
+       jmp      SHORT G_M50035_IG27
+                       ;; size=5 bbWeight=0.01 PerfScore 0.03
+G_M50035_IG31:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[esi]
        call     CORINFO_HELP_RNGCHKFAIL
        int3     
                        ;; size=6 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 323, prolog size 9, PerfScore 149.51, instruction count 113, allocated bytes for code 323 (MethodHash=878d3c8c) for method System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
+; Total bytes of code 347, prolog size 9, PerfScore 159.17, instruction count 124, allocated bytes for code 347 (MethodHash=878d3c8c) for method System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
 ; ============================================================
 

+20 (+9.22%) : 1662.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)

@@ -8,7 +8,7 @@
 ; 0 inlinees with PGO data; 13 single block inlinees; 7 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T06] (  5,  3.50)     ref  ->  edi         this class-hnd single-def <System.Xml.NameTable>
+;  V00 this         [V00,T06] (  5,  3.50)     ref  ->  [ebp-0x14]  this class-hnd single-def <System.Xml.NameTable>
 ;  V01 arg1         [V01,T04] (  7,  7   )     ref  ->  esi         class-hnd single-def <System.String>
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref   
 ;  V03 loc1         [V03,T07] (  4,  5.50)     int  ->  [ebp-0x10]  spill-single-def
@@ -25,8 +25,8 @@
 ;* V14 tmp9         [V14    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;* V15 tmp10        [V15    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
 ;  V16 tmp11        [V16,T03] (  2,  4   )   ubyte  ->  eax         "Inline return value spill temp"
-;  V17 tmp12        [V17,T00] (  6, 52   )     ref  ->  ecx         class-hnd exact "Inlining Arg" <System.String>
-;  V18 tmp13        [V18,T05] (  2,  8   )   byref  ->  ebx         "impAppendStmt"
+;  V17 tmp12        [V17,T00] (  6, 52   )     ref  ->  edx         class-hnd exact "Inlining Arg" <System.String>
+;  V18 tmp13        [V18,T05] (  2,  8   )   byref  ->  edi         "impAppendStmt"
 ;* V19 tmp14        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V20 tmp15        [V20    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V21 tmp16        [V21    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
@@ -44,9 +44,9 @@
 ;* V33 tmp28        [V33    ] (  0,  0   )     int  ->  zero-ref    "field V14._length (fldOffset=0x4)" P-INDEP
 ;* V34 tmp29        [V34    ] (  0,  0   )   byref  ->  zero-ref    single-def "field V15._reference (fldOffset=0x0)" P-INDEP
 ;* V35 tmp30        [V35    ] (  0,  0   )     int  ->  zero-ref    "field V15._length (fldOffset=0x4)" P-INDEP
-;  V36 tmp31        [V36,T08] (  3,  3   )     ref  ->  ecx         single-def "arr expr"
-;  V37 tmp32        [V37,T10] (  3,  3   )     int  ->  edx         "index expr"
-;  V38 cse0         [V38,T02] (  4, 18.50)     int  ->  [ebp-0x14]  spill-single-def "CSE - aggressive"
+;  V36 tmp31        [V36,T08] (  3,  3   )     ref  ->  edx         single-def "arr expr"
+;  V37 tmp32        [V37,T10] (  3,  3   )     int  ->  ecx         "index expr"
+;  V38 cse0         [V38,T02] (  4, 18.50)     int  ->  ebx         "CSE - aggressive"
 ;  V39 cse1         [V39,T09] (  3,  3   )   byref  ->  [ebp-0x1C]  spill-single-def "CSE - moderate"
 ;* V40 rat0         [V40    ] (  0,  0   )     int  ->  zero-ref    "field V13.lo (fldOffset=0x0)" P-INDEP
 ;* V41 rat1         [V41    ] (  0,  0   )     int  ->  zero-ref    "field V13.hi (fldOffset=0x4)" P-INDEP
@@ -67,12 +67,11 @@ G_M51747_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
                        ;; size=13 bbWeight=1 PerfScore 5.00
 G_M51747_IG02:        ; bbWeight=1, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, byref, isz
        test     esi, esi
-       je       G_M51747_IG16
+       je       G_M51747_IG19
        mov      ebx, dword ptr [esi+0x04]
-       mov      dword ptr [ebp-0x14], ebx
        test     ebx, ebx
        jne      SHORT G_M51747_IG05
-                       ;; size=18 bbWeight=1 PerfScore 5.50
+                       ;; size=15 bbWeight=1 PerfScore 4.50
 G_M51747_IG03:        ; bbWeight=0.50, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        ; gcrRegs -[esi edi]
        mov      eax, 0xD1FFAB1E
@@ -101,73 +100,80 @@ G_M51747_IG05:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {e
        call     [<unknown method>]
        ; byrRegs -[eax ecx]
        mov      dword ptr [ebp-0x10], eax
-       mov      ecx, gword ptr [edi+0x04]
-       ; gcrRegs +[ecx]
-       mov      edx, eax
-       and      edx, dword ptr [edi+0x0C]
-       cmp      edx, dword ptr [ecx+0x04]
-       jae      SHORT G_M51747_IG15
-       mov      edx, gword ptr [ecx+4*edx+0x08]
+       mov      edx, gword ptr [edi+0x04]
        ; gcrRegs +[edx]
-       test     edx, edx
-       je       SHORT G_M51747_IG11
-                       ;; size=52 bbWeight=0.50 PerfScore 10.38
-G_M51747_IG06:        ; bbWeight=4, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[ecx]
-       cmp      dword ptr [edx+0x0C], eax
-       jne      SHORT G_M51747_IG10
-                       ;; size=5 bbWeight=4 PerfScore 16.00
-G_M51747_IG07:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      ecx, gword ptr [edx+0x04]
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V00}
+       mov      ecx, eax
+       and      ecx, dword ptr [edi+0x0C]
+       cmp      ecx, dword ptr [edx+0x04]
+       jae      SHORT G_M51747_IG18
+       mov      ecx, gword ptr [edx+4*ecx+0x08]
        ; gcrRegs +[ecx]
-       cmp      byte  ptr [ecx], cl
-       cmp      ecx, esi
-       je       SHORT G_M51747_IG13
-                       ;; size=9 bbWeight=2 PerfScore 12.50
-G_M51747_IG08:        ; bbWeight=16, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       cmp      dword ptr [ecx+0x04], ebx
+       test     ecx, ecx
+       mov      edi, gword ptr [ebp-0x14]
+       je       SHORT G_M51747_IG15
+                       ;; size=58 bbWeight=0.50 PerfScore 11.38
+G_M51747_IG06:        ; bbWeight=4, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[edx]
+       ; GC ptr vars -{V00}
+       cmp      dword ptr [ecx+0x0C], eax
+       jne      SHORT G_M51747_IG14
+                       ;; size=5 bbWeight=4 PerfScore 16.00
+G_M51747_IG07:        ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V04}
+       mov      edx, gword ptr [ecx+0x04]
+       ; gcrRegs +[edx]
+       cmp      byte  ptr [edx], dl
+       cmp      edx, esi
+       je       SHORT G_M51747_IG16
+                       ;; size=12 bbWeight=2 PerfScore 14.50
+G_M51747_IG08:        ; bbWeight=16, gcVars=00000202 {V04 V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       cmp      dword ptr [edx+0x04], ebx
        jne      SHORT G_M51747_IG10
                        ;; size=5 bbWeight=16 PerfScore 64.00
-G_M51747_IG09:        ; bbWeight=2, gcrefRegs=000000C6 {ecx edx esi edi}, byrefRegs=00000000 {}, byref, isz
-       mov      gword ptr [ebp-0x18], edx
-       ; GC ptr vars +{V04}
-       lea      ebx, bword ptr [ecx+0x08]
-       ; byrRegs +[ebx]
-       mov      ecx, dword ptr [ecx+0x04]
-       ; gcrRegs -[ecx]
-       add      ecx, ecx
-       push     ecx
-       mov      edx, bword ptr [ebp-0x1C]
+G_M51747_IG09:        ; bbWeight=2, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x14], edi
+       ; GC ptr vars +{V00}
+       lea      edi, bword ptr [edx+0x08]
+       ; gcrRegs -[edi]
+       ; byrRegs +[edi]
+       mov      edx, dword ptr [edx+0x04]
        ; gcrRegs -[edx]
+       add      edx, edx
+       push     edx
+       mov      edx, bword ptr [ebp-0x1C]
        ; byrRegs +[edx]
-       mov      ecx, ebx
+       mov      ecx, edi
        ; byrRegs +[ecx]
        call     [<unknown method>]
-       ; byrRegs -[ecx edx ebx]
+       ; byrRegs -[ecx edx edi]
        test     eax, eax
-       mov      eax, dword ptr [ebp-0x10]
-       mov      edx, gword ptr [ebp-0x18]
-       ; gcrRegs +[edx]
-       mov      ebx, dword ptr [ebp-0x14]
+       mov      edi, gword ptr [ebp-0x14]
+       ; gcrRegs +[edi]
+       jne      SHORT G_M51747_IG16
+                       ;; size=30 bbWeight=2 PerfScore 22.50
+G_M51747_IG10:        ; bbWeight=4, gcVars=00000202 {V04 V39}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; GC ptr vars -{V00}
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
+       mov      ecx, gword ptr [ecx+0x08]
+       test     ecx, ecx
        jne      SHORT G_M51747_IG13
-                       ;; size=36 bbWeight=2 PerfScore 26.50
-G_M51747_IG10:        ; bbWeight=4, gcVars=00000200 {V39}, gcrefRegs=000000C4 {edx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
-       ; GC ptr vars -{V04}
-       mov      edx, gword ptr [edx+0x08]
-       test     edx, edx
-       jne      SHORT G_M51747_IG06
-                       ;; size=7 bbWeight=4 PerfScore 13.00
+                       ;; size=10 bbWeight=4 PerfScore 17.00
 G_M51747_IG11:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[edx]
-       ; GC ptr vars -{V39}
-       push     eax
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V04 V39}
+       push     dword ptr [ebp-0x10]
        mov      ecx, edi
        ; gcrRegs +[ecx]
        mov      edx, esi
        ; gcrRegs +[edx]
        call     [System.Xml.NameTable:AddEntry(System.String,int):System.String:this]
        ; gcrRegs -[ecx edx esi edi] +[eax]
-                       ;; size=11 bbWeight=0.50 PerfScore 2.25
+                       ;; size=13 bbWeight=0.50 PerfScore 2.25
 G_M51747_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
@@ -176,12 +182,31 @@ G_M51747_IG12:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG13:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000004 {edx}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax] +[edx]
-       mov      eax, gword ptr [edx+0x04]
+G_M51747_IG13:        ; bbWeight=2, gcVars=00000200 {V39}, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[eax] +[ecx esi edi]
+       ; GC ptr vars +{V09 V39}
+       mov      eax, dword ptr [ebp-0x10]
+       jmp      SHORT G_M51747_IG06
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG14:        ; bbWeight=2, gcrefRegs=000000C2 {ecx esi edi}, byrefRegs=00000000 {}, byref, isz
+       mov      gword ptr [ebp-0x18], ecx
+       ; GC ptr vars +{V04}
+       jmp      SHORT G_M51747_IG10
+                       ;; size=5 bbWeight=2 PerfScore 6.00
+G_M51747_IG15:        ; bbWeight=0.25, gcVars=00000000 {}, gcrefRegs=000000C0 {esi edi}, byrefRegs=00000000 {}, gcvars, byref, isz
+       ; gcrRegs -[ecx]
+       ; GC ptr vars -{V04 V09 V39}
+       jmp      SHORT G_M51747_IG11
+                       ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M51747_IG16:        ; bbWeight=0.50, gcVars=00000002 {V04}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[esi edi]
+       ; GC ptr vars +{V01 V04}
+       mov      ecx, gword ptr [ebp-0x18]
+       ; gcrRegs +[ecx]
+       mov      eax, gword ptr [ecx+0x04]
        ; gcrRegs +[eax]
-                       ;; size=3 bbWeight=0.50 PerfScore 1.00
-G_M51747_IG14:        ; bbWeight=0.50, epilog, nogc, extend
+                       ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M51747_IG17:        ; bbWeight=0.50, epilog, nogc, extend
        lea      esp, [ebp-0x0C]
        pop      ebx
        pop      esi
@@ -189,11 +214,12 @@ G_M51747_IG14:        ; bbWeight=0.50, epilog, nogc, extend
        pop      ebp
        ret      
                        ;; size=8 bbWeight=0.50 PerfScore 1.75
-G_M51747_IG15:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
-       ; gcrRegs -[eax edx]
+G_M51747_IG18:        ; bbWeight=0, gcVars=00000000 {}, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, gcvars, byref
+       ; gcrRegs -[eax ecx]
+       ; GC ptr vars -{V01 V04}
        call     CORINFO_HELP_RNGCHKFAIL
                        ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51747_IG16:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
+G_M51747_IG19:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref
        mov      ecx, 5
        mov      edx, 0xD1FFAB1E
        call     CORINFO_HELP_STRCNS
@@ -205,6 +231,6 @@ G_M51747_IG16:        ; bbWeight=0, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        int3     
                        ;; size=24 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 217, prolog size 13, PerfScore 161.50, instruction count 86, allocated bytes for code 217 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
+; Total bytes of code 237, prolog size 13, PerfScore 176.50, instruction count 93, allocated bytes for code 237 (MethodHash=5b1e35dc) for method System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
 ; ============================================================
 

+24 (+9.96%) : 9819.dasm - FSharp.Compiler.CheckDeclarations:action@1-62(FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.Syntax.SynMemberDefn) (FullOpts)

@@ -8,9 +8,9 @@
 ; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] ( 12,  7   )     ref  ->  ecx         class-hnd single-def <FSharp.Compiler.CheckExpressions+NewSlotsOK>
-;  V01 arg1         [V01,T03] (  4,  3   )     ref  ->  esi         class-hnd single-def <FSharp.Compiler.Syntax.SynMemberDefn>
-;  V02 loc0         [V02,T01] ( 15,  7.50)     ref  ->  eax         class-hnd <FSharp.Compiler.CheckExpressions+NewSlotsOK>
+;  V00 arg0         [V00,T01] ( 12,  3   )     ref  ->  ecx         class-hnd single-def <FSharp.Compiler.CheckExpressions+NewSlotsOK>
+;  V01 arg1         [V01,T02] (  4,  3   )     ref  ->  esi         class-hnd single-def <FSharp.Compiler.Syntax.SynMemberDefn>
+;  V02 loc0         [V02,T03] ( 15,  1.50)     ref  ->  eax         class-hnd <FSharp.Compiler.CheckExpressions+NewSlotsOK>
 ;* V03 loc1         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <FSharp.Compiler.ErrorLogger+Error>
 ;  V04 tmp0         [V04,T05] (  2,  0   )     ref  ->  edi         class-hnd single-def "non-inline candidate call" <System.Tuple`2[int,System.String]>
 ;  V05 tmp1         [V05,T04] (  6,  0   )     ref  ->  ebx         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.ErrorLogger+Error>
@@ -38,7 +38,7 @@
 ;  V27 tmp23        [V27,T07] (  2,  0   )    long  ->  [ebp-0x1C]  do-not-enreg[H] hidden-struct-arg "field V06.code1 (fldOffset=0x0)" P-DEP
 ;  V28 tmp24        [V28,T08] (  2,  0   )    long  ->  [ebp-0x14]  do-not-enreg[H] hidden-struct-arg "field V06.code2 (fldOffset=0x8)" P-DEP
 ;  V29 tmp25        [V29,T06] (  2,  0   )     ref  ->  ecx         single-def "argument with side effect"
-;  V30 rat0         [V30,T02] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
+;  V30 rat0         [V30,T00] (  3,  6   )     int  ->  eax         "ReplaceWithLclVar is creating a new local variable"
 ;
 ; Lcl frame size = 16
 
@@ -53,17 +53,17 @@ G_M36794_IG01:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}
        mov      esi, edx
        ; gcrRegs +[esi]
                        ;; size=14 bbWeight=1 PerfScore 5.75
-G_M36794_IG02:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+G_M36794_IG02:        ; bbWeight=1, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
        ; gcrRegs +[ecx]
        mov      eax, dword ptr [esi+0x04]
        cmp      eax, 10
-       ja       G_M36794_IG09
+       ja       SHORT G_M36794_IG05
        lea      edx, [@RWD00]
        mov      edx, dword ptr [edx+4*eax]
        lea      edi, G_M36794_IG02
        add      edx, edi
        jmp      edx
-                       ;; size=31 bbWeight=1 PerfScore 9.00
+                       ;; size=27 bbWeight=1 PerfScore 9.00
 G_M36794_IG03:        ; bbWeight=1, gcrefRegs=00000000 {}, byrefRegs=00000000 {}, byref, epilog, nogc
        ; gcrRegs -[ecx esi]
        lea      esp, [ebp-0x0C]
@@ -79,65 +79,14 @@ G_M36794_IG04:        ; bbWeight=0.50, gcVars=00000000 {}, gcrefRegs=00000042 {e
        ; gcrRegs +[eax]
        cmp      byte  ptr [ecx], cl
        test     eax, eax
-       je       SHORT G_M36794_IG09
+       je       SHORT G_M36794_IG05
        mov      ecx, dword ptr [ecx+0x04]
        ; gcrRegs -[ecx]
        cmp      ecx, dword ptr [eax+0x04]
-       jne      SHORT G_M36794_IG09
-       jmp      SHORT G_M36794_IG03
-                       ;; size=21 bbWeight=0.50 PerfScore 7.12
-G_M36794_IG05:        ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax] +[ecx]
-       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
-       ; gcrRegs +[eax]
-       cmp      byte  ptr [ecx], cl
-       test     eax, eax
-       je       SHORT G_M36794_IG09
-       mov      ecx, dword ptr [ecx+0x04]
-       ; gcrRegs -[ecx]
-       cmp      ecx, dword ptr [eax+0x04]
-       jne      SHORT G_M36794_IG09
-       jmp      SHORT G_M36794_IG03
-                       ;; size=21 bbWeight=0.50 PerfScore 7.12
-G_M36794_IG06:        ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax] +[ecx]
-       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
-       ; gcrRegs +[eax]
-       cmp      byte  ptr [ecx], cl
-       test     eax, eax
-       je       SHORT G_M36794_IG09
-       mov      ecx, dword ptr [ecx+0x04]
-       ; gcrRegs -[ecx]
-       cmp      ecx, dword ptr [eax+0x04]
-       jne      SHORT G_M36794_IG09
-       jmp      SHORT G_M36794_IG03
-                       ;; size=21 bbWeight=0.50 PerfScore 7.12
-G_M36794_IG07:        ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax] +[ecx]
-       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
-       ; gcrRegs +[eax]
-       cmp      byte  ptr [ecx], cl
-       test     eax, eax
-       je       SHORT G_M36794_IG09
-       mov      ecx, dword ptr [ecx+0x04]
-       ; gcrRegs -[ecx]
-       cmp      ecx, dword ptr [eax+0x04]
-       jne      SHORT G_M36794_IG09
-       jmp      SHORT G_M36794_IG03
-                       ;; size=21 bbWeight=0.50 PerfScore 7.12
-G_M36794_IG08:        ; bbWeight=0.50, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
-       ; gcrRegs -[eax] +[ecx]
-       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
-       ; gcrRegs +[eax]
-       cmp      byte  ptr [ecx], cl
-       test     eax, eax
-       je       SHORT G_M36794_IG09
-       mov      edx, dword ptr [ecx+0x04]
-       cmp      edx, dword ptr [eax+0x04]
        je       SHORT G_M36794_IG03
                        ;; size=19 bbWeight=0.50 PerfScore 6.12
-G_M36794_IG09:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
-       ; gcrRegs -[eax ecx]
+G_M36794_IG05:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[eax]
        call     [FSComp.SR:tcDeclarationElementNotPermittedInAugmentation():System.Tuple`2[int,System.String]]
        ; gcrRegs +[eax]
        mov      edi, eax
@@ -171,19 +120,70 @@ G_M36794_IG09:        ; bbWeight=0, gcrefRegs=00000040 {esi}, byrefRegs=00000000
        ; gcrRegs -[ecx edx ebx]
        int3     
                        ;; size=85 bbWeight=0 PerfScore 0.00
-RWD00      dd  G_M36794_IG04 - G_M36794_IG02
+G_M36794_IG06:        ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[eax] +[ecx esi]
+       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
+       ; gcrRegs +[eax]
+       cmp      byte  ptr [ecx], cl
+       test     eax, eax
+       je       SHORT G_M36794_IG05
+       mov      ecx, dword ptr [ecx+0x04]
+       ; gcrRegs -[ecx]
+       cmp      ecx, dword ptr [eax+0x04]
+       jne      SHORT G_M36794_IG05
+       jmp      G_M36794_IG03
+                       ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36794_IG07:        ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref, isz
+       ; gcrRegs -[eax] +[ecx]
+       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
+       ; gcrRegs +[eax]
+       cmp      byte  ptr [ecx], cl
+       test     eax, eax
+       je       SHORT G_M36794_IG05
+       mov      ecx, dword ptr [ecx+0x04]
+       ; gcrRegs -[ecx]
+       cmp      ecx, dword ptr [eax+0x04]
+       jne      SHORT G_M36794_IG05
+       jmp      G_M36794_IG03
+                       ;; size=24 bbWeight=0 PerfScore 0.00
+G_M36794_IG08:        ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[eax] +[ecx]
+       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
+       ; gcrRegs +[eax]
+       cmp      byte  ptr [ecx], cl
+       test     eax, eax
+       je       G_M36794_IG05
+       mov      ecx, dword ptr [ecx+0x04]
+       ; gcrRegs -[ecx]
+       cmp      ecx, dword ptr [eax+0x04]
+       jne      G_M36794_IG05
+       jmp      G_M36794_IG03
+                       ;; size=32 bbWeight=0 PerfScore 0.00
+G_M36794_IG09:        ; bbWeight=0, gcrefRegs=00000042 {ecx esi}, byrefRegs=00000000 {}, byref
+       ; gcrRegs -[eax] +[ecx]
+       mov      eax, gword ptr [D1FFAB1EH]      ; static handle
+       ; gcrRegs +[eax]
+       cmp      byte  ptr [ecx], cl
+       test     eax, eax
+       je       G_M36794_IG05
+       mov      edx, dword ptr [ecx+0x04]
+       cmp      edx, dword ptr [eax+0x04]
+       jne      G_M36794_IG05
+       jmp      G_M36794_IG03
+                       ;; size=32 bbWeight=0 PerfScore 0.00
+RWD00      dd  G_M36794_IG06 - G_M36794_IG02
            dd  G_M36794_IG03 - G_M36794_IG02
-           dd  G_M36794_IG07 - G_M36794_IG02
+           dd  G_M36794_IG09 - G_M36794_IG02
+           dd  G_M36794_IG04 - G_M36794_IG02
            dd  G_M36794_IG08 - G_M36794_IG02
-           dd  G_M36794_IG06 - G_M36794_IG02
-           dd  G_M36794_IG09 - G_M36794_IG02
-           dd  G_M36794_IG03 - G_M36794_IG02
-           dd  G_M36794_IG09 - G_M36794_IG02
-           dd  G_M36794_IG09 - G_M36794_IG02
-           dd  G_M36794_IG09 - G_M36794_IG02
            dd  G_M36794_IG05 - G_M36794_IG02
+           dd  G_M36794_IG03 - G_M36794_IG02
+           dd  G_M36794_IG05 - G_M36794_IG02
+           dd  G_M36794_IG05 - G_M36794_IG02
+           dd  G_M36794_IG05 - G_M36794_IG02
+           dd  G_M36794_IG07 - G_M36794_IG02
 
 
-; Total bytes of code 241, prolog size 12, PerfScore 52.88, instruction count 81, allocated bytes for code 241 (MethodHash=563d7045) for method FSharp.Compiler.CheckDeclarations:action@1-62(FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.Syntax.SynMemberDefn) (FullOpts)
+; Total bytes of code 265, prolog size 12, PerfScore 24.38, instruction count 81, allocated bytes for code 265 (MethodHash=563d7045) for method FSharp.Compiler.CheckDeclarations:action@1-62(FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.Syntax.SynMemberDefn) (FullOpts)
 ; ============================================================
 

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.windows.x86.checked.mch 1,338 467 270 601 -4,094 +5,909
benchmarks.run_pgo.windows.x86.checked.mch 7,194 3,932 1,043 2,219 -25,349 +10,703
benchmarks.run_tiered.windows.x86.checked.mch 1,149 394 226 529 -3,556 +4,300
coreclr_tests.run.windows.x86.checked.mch 24,143 17,083 1,836 5,224 -100,981 +19,746
libraries.crossgen2.windows.x86.checked.mch 5,182 1,316 653 3,213 -9,500 +7,802
libraries.pmi.windows.x86.checked.mch 10,890 3,590 1,979 5,321 -28,974 +21,435
libraries_tests.run.windows.x86.Release.mch 31,259 12,371 7,402 11,486 -137,336 +77,696
librariestestsnotieredcompilation.run.windows.x86.Release.mch 18,964 5,046 2,513 11,405 -48,601 +34,701
realworld.run.windows.x86.checked.mch 1,676 536 290 850 -6,023 +3,028
101,795 44,735 16,212 40,848 -364,414 +185,320

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
benchmarks.run.windows.x86.checked.mch 24,466 4 24,462 0 (0.00%) 22 (0.09%)
benchmarks.run_pgo.windows.x86.checked.mch 119,679 42,004 77,675 152 (0.13%) 184 (0.15%)
benchmarks.run_tiered.windows.x86.checked.mch 47,885 28,726 19,159 0 (0.00%) 22 (0.05%)
coreclr_tests.run.windows.x86.checked.mch 575,038 320,010 255,028 245 (0.04%) 369 (0.06%)
libraries.crossgen2.windows.x86.checked.mch 241,868 15 241,853 0 (0.00%) 59 (0.02%)
libraries.pmi.windows.x86.checked.mch 304,052 6 304,046 2 (0.00%) 180 (0.06%)
libraries_tests.run.windows.x86.Release.mch 633,383 429,177 204,206 1,684 (0.26%) 2,426 (0.38%)
librariestestsnotieredcompilation.run.windows.x86.Release.mch 315,613 21,872 293,741 7 (0.00%) 142 (0.04%)
realworld.run.windows.x86.checked.mch 35,942 3 35,939 0 (0.00%) 40 (0.11%)
2,297,926 841,817 1,456,109 2,090 (0.09%) 3,444 (0.15%)

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: 7079626 (overridden on cmd)
Total bytes of diff: 7081441 (overridden on cmd)
Total bytes of delta: 1815 (0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         264 : 12458.dasm (9.72 % of base)
         256 : 24374.dasm (9.14 % of base)
         203 : 16032.dasm (13.38 % of base)
         153 : 2883.dasm (3.76 % of base)
         127 : 7976.dasm (8.51 % of base)
         125 : 14406.dasm (9.74 % of base)
         125 : 15355.dasm (9.61 % of base)
         124 : 14463.dasm (10.04 % of base)
         122 : 4206.dasm (4.77 % of base)
          91 : 15751.dasm (7.82 % of base)
          86 : 22482.dasm (4.56 % of base)
          84 : 4208.dasm (5.77 % of base)
          73 : 17165.dasm (7.90 % of base)
          72 : 9502.dasm (6.64 % of base)
          72 : 14455.dasm (1.72 % of base)
          69 : 15749.dasm (12.99 % of base)
          68 : 3360.dasm (6.91 % of base)
          67 : 15739.dasm (8.62 % of base)
          67 : 1397.dasm (4.37 % of base)
          67 : 14584.dasm (8.04 % of base)

Top file improvements (bytes):
        -309 : 16147.dasm (-9.07 % of base)
        -175 : 18493.dasm (-3.11 % of base)
        -109 : 19145.dasm (-2.45 % of base)
         -83 : 23890.dasm (-7.17 % of base)
         -81 : 5387.dasm (-3.32 % of base)
         -68 : 22794.dasm (-0.49 % of base)
         -62 : 21664.dasm (-8.95 % of base)
         -62 : 4831.dasm (-3.51 % of base)
         -57 : 22356.dasm (-10.23 % of base)
         -52 : 23181.dasm (-1.08 % of base)
         -49 : 6608.dasm (-7.79 % of base)
         -47 : 15870.dasm (-15.56 % of base)
         -44 : 12901.dasm (-1.22 % of base)
         -42 : 8136.dasm (-0.44 % of base)
         -41 : 20010.dasm (-1.66 % of base)
         -40 : 12898.dasm (-1.84 % of base)
         -39 : 43.dasm (-5.72 % of base)
         -38 : 2581.dasm (-1.22 % of base)
         -38 : 8629.dasm (-0.46 % of base)
         -34 : 4581.dasm (-1.55 % of base)

65 total files with Code Size differences (34 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         264 (9.72 % of base) : 12458.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
         256 (9.14 % of base) : 24374.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
         203 (13.38 % of base) : 16032.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
         153 (3.76 % of base) : 2883.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.SyncReadWriteAdapter]:MoveNext():this (FullOpts)
         127 (8.51 % of base) : 7976.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
         125 (9.74 % of base) : 14406.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
         125 (9.61 % of base) : 15355.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
         124 (10.04 % of base) : 14463.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
         122 (4.77 % of base) : 4206.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
          91 (7.82 % of base) : 15751.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
          86 (4.56 % of base) : 22482.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          84 (5.77 % of base) : 4208.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
          73 (7.90 % of base) : 17165.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
          72 (6.64 % of base) : 9502.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (FullOpts)
          72 (1.72 % of base) : 14455.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (FullOpts)
          69 (12.99 % of base) : 15749.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
          68 (6.91 % of base) : 3360.dasm - System.Text.Json.Serialization.ReadBufferState+<ReadFromStreamAsync>d__11:MoveNext():this (FullOpts)
          67 (4.37 % of base) : 1397.dasm - Newtonsoft.Json.Linq.JContainer:ReadContentFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings):this (FullOpts)
          67 (8.04 % of base) : 14584.dasm - System.Formats.Tar.TarWriter+<WriteFinalRecordsAsync>d__23:MoveNext():this (FullOpts)
          67 (8.62 % of base) : 15739.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)

Top method improvements (bytes):
        -309 (-9.07 % of base) : 16147.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
        -175 (-3.11 % of base) : 18493.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
        -109 (-2.45 % of base) : 19145.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -83 (-7.17 % of base) : 23890.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -81 (-3.32 % of base) : 5387.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
         -68 (-0.49 % of base) : 22794.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
         -62 (-3.51 % of base) : 4831.dasm - BenchmarksGame.KNucleotide_9:Bench(BenchmarksGame.NucleotideHelpers,ubyte):ubyte (FullOpts)
         -62 (-8.95 % of base) : 21664.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
         -57 (-10.23 % of base) : 22356.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[int],System.Collections.Immutable.ImmutableList`1+Builder[int],int,int,ubyte):this (FullOpts)
         -52 (-1.08 % of base) : 23181.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
         -49 (-7.79 % of base) : 6608.dasm - System.IO.Pipelines.Pipe:PrepareFlushUnsynchronized(byref,byref,System.Threading.CancellationToken):this (FullOpts)
         -47 (-15.56 % of base) : 15870.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
         -44 (-1.22 % of base) : 12901.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
         -42 (-0.44 % of base) : 8136.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -41 (-1.66 % of base) : 20010.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)
         -40 (-1.84 % of base) : 12898.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
         -39 (-5.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
         -38 (-0.46 % of base) : 8629.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (FullOpts)
         -38 (-1.22 % of base) : 2581.dasm - System.Text.RegularExpressions.RegexNode:CanBeMadeAtomic(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte,ubyte):ubyte (FullOpts)
         -34 (-1.55 % of base) : 4581.dasm - System.Text.StringBuilder:AppendFormatHelper(System.IFormatProvider,System.String,System.ReadOnlySpan`1[System.Object]):System.Text.StringBuilder:this (FullOpts)

Top method regressions (percentages):
         203 (13.38 % of base) : 16032.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (FullOpts)
          69 (12.99 % of base) : 15749.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
          58 (10.60 % of base) : 16307.dasm - System.Threading.Tasks.ValueTaskPerfTest+<AwaitTcsAsValueTask>d__21:MoveNext():this (FullOpts)
         124 (10.04 % of base) : 14463.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
         125 (9.74 % of base) : 14406.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsync>d__4:MoveNext():this (FullOpts)
         264 (9.72 % of base) : 12458.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (FullOpts)
         125 (9.61 % of base) : 15355.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<Setup_SyncReadAsyncWithCancellationToken>d__8:MoveNext():this (FullOpts)
          20 (9.22 % of base) : 11914.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
          20 (9.17 % of base) : 23426.dasm - Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (FullOpts)
         256 (9.14 % of base) : 24374.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (FullOpts)
          12 (8.76 % of base) : 15027.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
          67 (8.62 % of base) : 15739.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
         127 (8.51 % of base) : 7976.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
          12 (8.39 % of base) : 15028.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
          67 (8.04 % of base) : 14584.dasm - System.Formats.Tar.TarWriter+<WriteFinalRecordsAsync>d__23:MoveNext():this (FullOpts)
          73 (7.90 % of base) : 17165.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (FullOpts)
          91 (7.82 % of base) : 15751.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (FullOpts)
          57 (7.62 % of base) : 15334.dasm - AssignRect:second_assignments(int[,],short[,]) (FullOpts)
          60 (7.53 % of base) : 14716.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedTask_ConfigureAwait>d__9:MoveNext():this (FullOpts)
          60 (7.53 % of base) : 15392.dasm - System.Threading.Tasks.ValueTaskPerfTest+<CreateAndAwait_FromCompletedValueTaskSource_ConfigureAwait>d__11:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -47 (-15.56 % of base) : 15870.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
         -57 (-10.23 % of base) : 22356.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[int]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[int],System.Collections.Immutable.ImmutableList`1+Builder[int],int,int,ubyte):this (FullOpts)
        -309 (-9.07 % of base) : 16147.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
         -62 (-8.95 % of base) : 21664.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
         -16 (-7.96 % of base) : 13.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
         -49 (-7.79 % of base) : 6608.dasm - System.IO.Pipelines.Pipe:PrepareFlushUnsynchronized(byref,byref,System.Threading.CancellationToken):this (FullOpts)
         -16 (-7.41 % of base) : 17483.dasm - Microsoft.Extensions.Primitives.StringSegment:TrimStart():Microsoft.Extensions.Primitives.StringSegment:this (FullOpts)
         -83 (-7.17 % of base) : 23890.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -22 (-6.03 % of base) : 16215.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(System.Diagnostics.Tracing.EventSource+EventMetadata):ubyte[]:this (FullOpts)
         -39 (-5.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
         -21 (-5.60 % of base) : 12426.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
         -18 (-4.72 % of base) : 15174.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:BeginMethod(System.Runtime.Serialization.CodeGenerator,System.String,System.Type,ubyte) (FullOpts)
         -18 (-4.72 % of base) : 12538.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:BeginMethod(System.Runtime.Serialization.CodeGenerator,System.String,System.Type,ubyte) (FullOpts)
         -16 (-4.52 % of base) : 5739.dasm - Sigil.Impl.LinqAlternative:_Order[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],Sigil.Impl.SigilFunc`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (FullOpts)
          -4 (-4.44 % of base) : 6927.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (FullOpts)
         -18 (-4.31 % of base) : 2879.dasm - System.Net.Security.SslAuthenticationOptions:UpdateOptions(System.Net.Security.SslClientAuthenticationOptions):this (FullOpts)
         -12 (-4.18 % of base) : 638.dasm - System.String:Concat(System.String,System.String,System.String):System.String (FullOpts)
          -6 (-4.14 % of base) : 384.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -29 (-3.90 % of base) : 2155.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (FullOpts)
         -10 (-3.88 % of base) : 15645.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)


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: 43693213 (overridden on cmd)
Total bytes of diff: 43678567 (overridden on cmd)
Total bytes of delta: -14646 (-0.03 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         135 : 52175.dasm (20.12 % of base)
         128 : 82627.dasm (19.34 % of base)
         112 : 52178.dasm (19.68 % of base)
         112 : 52177.dasm (18.98 % of base)
          98 : 35818.dasm (3.39 % of base)
          95 : 109936.dasm (14.29 % of base)
          95 : 62186.dasm (14.29 % of base)
          95 : 66573.dasm (14.29 % of base)
          95 : 70995.dasm (14.29 % of base)
          95 : 64242.dasm (14.29 % of base)
          88 : 62188.dasm (14.84 % of base)
          88 : 66575.dasm (14.84 % of base)
          88 : 69372.dasm (14.84 % of base)
          88 : 88416.dasm (14.84 % of base)
          88 : 109938.dasm (14.84 % of base)
          88 : 64244.dasm (14.84 % of base)
          88 : 64245.dasm (14.92 % of base)
          88 : 70997.dasm (14.84 % of base)
          86 : 119275.dasm (2.87 % of base)
          86 : 96800.dasm (4.51 % of base)

Top file improvements (bytes):
        -321 : 76876.dasm (-6.86 % of base)
        -309 : 63064.dasm (-9.07 % of base)
        -145 : 50513.dasm (-3.28 % of base)
        -142 : 114.dasm (-8.75 % of base)
        -119 : 115702.dasm (-1.12 % of base)
        -118 : 111872.dasm (-9.46 % of base)
        -118 : 115915.dasm (-9.46 % of base)
        -118 : 114885.dasm (-9.46 % of base)
        -117 : 101888.dasm (-1.07 % of base)
        -117 : 104654.dasm (-2.38 % of base)
        -106 : 109.dasm (-12.44 % of base)
        -105 : 79793.dasm (-2.56 % of base)
        -104 : 64561.dasm (-2.79 % of base)
        -102 : 1904.dasm (-7.99 % of base)
        -101 : 1585.dasm (-12.27 % of base)
         -92 : 85973.dasm (-4.47 % of base)
         -92 : 64631.dasm (-4.47 % of base)
         -92 : 71455.dasm (-4.47 % of base)
         -90 : 14420.dasm (-3.63 % of base)
         -83 : 112354.dasm (-7.16 % of base)

71 total files with Code Size differences (41 improved, 30 regressed), 20 unchanged.

Top method regressions (bytes):
         135 (20.12 % of base) : 52175.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
         128 (19.34 % of base) : 82627.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
         112 (18.98 % of base) : 52177.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
         112 (19.68 % of base) : 52178.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          98 (3.39 % of base) : 35818.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
          95 (14.29 % of base) : 109936.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          95 (14.29 % of base) : 62186.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          95 (14.29 % of base) : 66573.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          95 (14.29 % of base) : 70995.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          95 (14.29 % of base) : 64242.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 62188.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 66575.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 69372.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 88416.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 109938.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 64244.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 70997.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.92 % of base) : 64245.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          86 (4.51 % of base) : 96800.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          86 (2.87 % of base) : 119275.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)

Top method improvements (bytes):
        -321 (-6.86 % of base) : 76876.dasm - Microsoft.CodeAnalysis.CSharp.RefSafetyAnalysis:CheckValEscape(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,uint,uint,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (Tier0-FullOpts)
        -309 (-9.07 % of base) : 63064.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
        -145 (-3.28 % of base) : 50513.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (Tier0-FullOpts)
        -142 (-8.75 % of base) : 114.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Tier0-FullOpts)
        -119 (-1.12 % of base) : 115702.dasm - Jil.Deserialize.Methods:_ReadISO8601DateThunkReader(byref,ushort[]):System.DateTime (Tier0-FullOpts)
        -118 (-9.46 % of base) : 111872.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
        -118 (-9.46 % of base) : 115915.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
        -118 (-9.46 % of base) : 114885.dasm - System.Threading.Tasks.Task:RunOrQueueCompletionAction(System.Threading.Tasks.ITaskCompletionAction,ubyte):this (Tier1)
        -117 (-1.07 % of base) : 101888.dasm - Jil.Deserialize.Methods:_ReadISO8601DateWithOffsetThunkReader(byref,ushort[]):System.DateTimeOffset (Tier0-FullOpts)
        -117 (-2.38 % of base) : 104654.dasm - Jil.Deserialize.Methods:SkipEncodedStringWithLeadCharThunkReader(byref,int) (Tier0-FullOpts)
        -106 (-12.44 % of base) : 109.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(uint,uint):uint (Tier0-FullOpts)
        -105 (-2.56 % of base) : 79793.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<CreateConversion>g__createConversion|210_0(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Conversion,ubyte,Microsoft.CodeAnalysis.CSharp.ConversionGroup,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (Tier1)
        -104 (-2.79 % of base) : 64561.dasm - Jil.Deserialize.Methods:_ReadEncodedStringWithCharArrayThunkReader(byref,byref):System.String (Tier0-FullOpts)
        -102 (-7.99 % of base) : 1904.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (Tier0-FullOpts)
        -101 (-12.27 % of base) : 1585.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (Tier0-FullOpts)
         -92 (-4.47 % of base) : 85973.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -92 (-4.47 % of base) : 64631.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -92 (-4.47 % of base) : 71455.dasm - System.Linq.Enumerable+SelectRangeIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
         -90 (-3.63 % of base) : 14420.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
         -83 (-7.16 % of base) : 112354.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)

Top method regressions (percentages):
         135 (20.12 % of base) : 52175.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
         112 (19.68 % of base) : 52178.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
         128 (19.34 % of base) : 82627.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
         112 (18.98 % of base) : 52177.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          70 (16.55 % of base) : 97964.dasm - System.Text.Encoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (Tier1)
          55 (15.62 % of base) : 119030.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          88 (14.92 % of base) : 64245.dasm - System.Globalization.CompareInfo:NlsCompareString(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 62188.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 66575.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 69372.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 88416.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 109938.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 64244.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          88 (14.84 % of base) : 70997.dasm - System.Globalization.CompareInfo:CompareStringCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          51 (14.41 % of base) : 111359.dasm - System.Threading.SpinWait:SpinOnceCore(int):this (Tier1)
          95 (14.29 % of base) : 109936.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          95 (14.29 % of base) : 62186.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          95 (14.29 % of base) : 66573.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          95 (14.29 % of base) : 70995.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)
          95 (14.29 % of base) : 64242.dasm - System.Globalization.CompareInfo:Compare(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int):int:this (Tier1)

Top method improvements (percentages):
         -47 (-15.56 % of base) : 58826.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (Tier0-FullOpts)
         -52 (-13.47 % of base) : 23140.dasm - System.Globalization.DateTimeFormatInfo:GetMergedPatterns(System.String[],System.String):System.String[] (Tier0-FullOpts)
        -106 (-12.44 % of base) : 109.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(uint,uint):uint (Tier0-FullOpts)
        -101 (-12.27 % of base) : 1585.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiByte_Vector(uint,uint):uint (Tier0-FullOpts)
         -61 (-11.62 % of base) : 1804.dasm - System.Number+NumberBuffer:CheckConsistency():this (Tier0-FullOpts)
          -4 (-10.81 % of base) : 49491.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
         -28 (-10.57 % of base) : 2935.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
          -4 (-10.53 % of base) : 3162.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 13073.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 2586.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 3925.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 101743.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 12611.dasm - System.Reflection.RuntimePropertyInfo:GetGetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 30440.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 88333.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 67519.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 67771.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 14735.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
          -4 (-10.53 % of base) : 56048.dasm - System.Reflection.RuntimePropertyInfo:GetSetMethod(ubyte):System.Reflection.RuntimeMethodInfo:this (Tier1)
         -24 (-10.00 % of base) : 64941.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)


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: 9483002 (overridden on cmd)
Total bytes of diff: 9483746 (overridden on cmd)
Total bytes of delta: 744 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         264 : 25227.dasm (9.72 % of base)
         256 : 47892.dasm (9.14 % of base)
         203 : 30669.dasm (13.38 % of base)
         150 : 5644.dasm (4.10 % of base)
         127 : 8498.dasm (8.51 % of base)
         122 : 11114.dasm (4.77 % of base)
          91 : 29756.dasm (7.82 % of base)
          86 : 44244.dasm (4.56 % of base)
          84 : 11116.dasm (5.77 % of base)
          73 : 32450.dasm (7.90 % of base)
          72 : 20486.dasm (6.64 % of base)
          72 : 28200.dasm (1.72 % of base)
          68 : 8601.dasm (6.91 % of base)
          67 : 4155.dasm (4.37 % of base)
          67 : 29741.dasm (8.62 % of base)
          58 : 11009.dasm (2.43 % of base)
          58 : 31602.dasm (5.18 % of base)
          57 : 29709.dasm (5.83 % of base)
          57 : 29862.dasm (7.62 % of base)
          51 : 17467.dasm (1.73 % of base)

Top file improvements (bytes):
        -309 : 31012.dasm (-9.07 % of base)
        -175 : 35058.dasm (-3.11 % of base)
        -109 : 36743.dasm (-2.45 % of base)
         -83 : 46542.dasm (-7.17 % of base)
         -81 : 14038.dasm (-3.32 % of base)
         -68 : 44776.dasm (-0.49 % of base)
         -64 : 23515.dasm (-1.71 % of base)
         -52 : 45162.dasm (-1.08 % of base)
         -47 : 30569.dasm (-15.56 % of base)
         -42 : 17937.dasm (-0.44 % of base)
         -41 : 38581.dasm (-1.66 % of base)
         -39 : 99.dasm (-5.72 % of base)
         -38 : 19395.dasm (-0.46 % of base)
         -38 : 13530.dasm (-1.22 % of base)
         -33 : 45164.dasm (-0.43 % of base)
         -33 : 23510.dasm (-1.49 % of base)
         -32 : 30638.dasm (-2.04 % of base)
         -31 : 34433.dasm (-3.03 % of base)
         -30 : 13033.dasm (-1.16 % of base)
         -29 : 9448.dasm (-3.90 % of base)

68 total files with Code Size differences (37 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         264 (9.72 % of base) : 25227.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
         256 (9.14 % of base) : 47892.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
         203 (13.38 % of base) : 30669.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
         150 (4.10 % of base) : 5644.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (Tier0-FullOpts)
         127 (8.51 % of base) : 8498.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier0-FullOpts)
         122 (4.77 % of base) : 11114.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (Tier0-FullOpts)
          91 (7.82 % of base) : 29756.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (Tier0-FullOpts)
          86 (4.56 % of base) : 44244.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier0-FullOpts)
          84 (5.77 % of base) : 11116.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier0-FullOpts)
          73 (7.90 % of base) : 32450.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier0-FullOpts)
          72 (6.64 % of base) : 20486.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier0-FullOpts)
          72 (1.72 % of base) : 28200.dasm - System.Security.Cryptography.CryptoStream+<WriteAsyncCore>d__53:MoveNext():this (Tier0-FullOpts)
          68 (6.91 % of base) : 8601.dasm - System.Text.Json.Serialization.ReadBufferState+<ReadFromStreamAsync>d__11:MoveNext():this (Tier0-FullOpts)
          67 (4.37 % of base) : 4155.dasm - Newtonsoft.Json.Linq.JContainer:ReadContentFrom(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Linq.JsonLoadSettings):this (Tier0-FullOpts)
          67 (8.62 % of base) : 29741.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (Tier0-FullOpts)
          58 (5.18 % of base) : 31602.dasm - System.IO.Pipes.Tests.Perf_PipeTest+<ReadWriteAsync>d__8:MoveNext():this (Tier0-FullOpts)
          58 (2.43 % of base) : 11009.dasm - System.Net.Sockets.SocketAsyncEventArgs+<<DnsConnectAsync>g__Core|112_0>d:MoveNext():this (Tier0-FullOpts)
          57 (7.62 % of base) : 29862.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier0-FullOpts)
          57 (5.83 % of base) : 29709.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier0-FullOpts)
          51 (1.73 % of base) : 17467.dasm - System.IO.File+<WriteToFileAsync>d__110:MoveNext():this (Tier0-FullOpts)

Top method improvements (bytes):
        -309 (-9.07 % of base) : 31012.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
        -175 (-3.11 % of base) : 35058.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
        -109 (-2.45 % of base) : 36743.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
         -83 (-7.17 % of base) : 46542.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
         -81 (-3.32 % of base) : 14038.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (Tier0-FullOpts)
         -68 (-0.49 % of base) : 44776.dasm - (dynamicClass):_DynamicMethod1(byref,int):MicroBenchmarks.Serializers.IndexViewModel (FullOpts)
         -64 (-1.71 % of base) : 23515.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (Tier0-FullOpts)
         -52 (-1.08 % of base) : 45162.dasm - (dynamicClass):_DynamicMethod9(byref,int):MicroBenchmarks.Serializers.MyEventsListerViewModel (FullOpts)
         -47 (-15.56 % of base) : 30569.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (Tier0-FullOpts)
         -42 (-0.44 % of base) : 17937.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (Tier0-FullOpts)
         -41 (-1.66 % of base) : 38581.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (Tier0-FullOpts)
         -39 (-5.72 % of base) : 99.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
         -38 (-0.46 % of base) : 19395.dasm - MessagePack.Internal.ObjectSerializationInfo:CreateOrNull(System.Type,ubyte,ubyte,ubyte):MessagePack.Internal.ObjectSerializationInfo (Tier0-FullOpts)
         -38 (-1.22 % of base) : 13530.dasm - System.Text.RegularExpressions.RegexNode:CanBeMadeAtomic(System.Text.RegularExpressions.RegexNode,System.Text.RegularExpressions.RegexNode,ubyte,ubyte):ubyte (Tier0-FullOpts)
         -33 (-0.43 % of base) : 45164.dasm - (dynamicClass):_DynamicMethod3(byref,int):MicroBenchmarks.Serializers.MyEventsListerItem (FullOpts)
         -33 (-1.49 % of base) : 23510.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (Tier0-FullOpts)
         -32 (-2.04 % of base) : 30638.dasm - System.Collections.Immutable.ImmutableHashSet`1[int]:Union(System.Collections.Generic.IEnumerable`1[int],System.Collections.Immutable.ImmutableHashSet`1+MutationInput[int]):System.Collections.Immutable.ImmutableHashSet`1+MutationResult[int] (Tier0-FullOpts)
         -31 (-3.03 % of base) : 34433.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (Tier0-FullOpts)
         -30 (-1.16 % of base) : 13033.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this (Tier0-FullOpts)
         -29 (-1.44 % of base) : 8333.dasm - MicroBenchmarks.Serializers.SystemTextJsonSourceGeneratedContext:ImmutableDictionaryStringStringSerializeHandler(System.Text.Json.Utf8JsonWriter,System.Collections.Immutable.ImmutableDictionary`2[System.String,System.String]):this (Tier0-FullOpts)

Top method regressions (percentages):
         203 (13.38 % of base) : 30669.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<ReadAsyncWithCancellationToken>d__11:MoveNext():this (Tier0-FullOpts)
         264 (9.72 % of base) : 25227.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_SocketAddress>d__14:MoveNext():this (Tier0-FullOpts)
          20 (9.22 % of base) : 20919.dasm - System.Xml.NameTable:Add(System.String):System.String:this (Tier0-FullOpts)
          20 (9.17 % of base) : 45554.dasm - Benchstone.BenchI.AddArray2:BenchInner2(int[][],byref) (Tier0-FullOpts)
         256 (9.14 % of base) : 47892.dasm - System.Net.Sockets.Tests.SocketSendReceivePerfTest+<ReceiveFromAsyncThenSendToAsync_Task>d__13:MoveNext():this (Tier0-FullOpts)
          67 (8.62 % of base) : 29741.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (Tier0-FullOpts)
         127 (8.51 % of base) : 8498.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (Tier0-FullOpts)
          12 (8.45 % of base) : 28970.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
          12 (8.00 % of base) : 28971.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
          73 (7.90 % of base) : 32450.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[ubyte]:MoveNext():this (Tier0-FullOpts)
          91 (7.82 % of base) : 29756.dasm - System.Formats.Tar.TarHelpers+<AdvanceStreamAsync>d__8:MoveNext():this (Tier0-FullOpts)
           4 (7.69 % of base) : 6725.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (Tier0-FullOpts)
          57 (7.62 % of base) : 29862.dasm - AssignRect:second_assignments(int[,],short[,]) (Tier0-FullOpts)
          68 (6.91 % of base) : 8601.dasm - System.Text.Json.Serialization.ReadBufferState+<ReadFromStreamAsync>d__11:MoveNext():this (Tier0-FullOpts)
          30 (6.82 % of base) : 47673.dasm - SciMark2.SparseCompRow:matmult(double[],double[],int[],int[],double[],int) (Tier0-FullOpts)
          72 (6.64 % of base) : 20486.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<ProducerConsumer>d__24[System.__Canon]:MoveNext():this (Tier0-FullOpts)
          39 (6.45 % of base) : 36372.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (Tier0-FullOpts)
          57 (5.83 % of base) : 29709.dasm - System.IO.Pipelines.Tests.Perf_Pipe+<SyncReadAsyncWithCancellationToken>d__9:MoveNext():this (Tier0-FullOpts)
          84 (5.77 % of base) : 11116.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (Tier0-FullOpts)
          12 (5.61 % of base) : 19485.dasm - System.Reflection.Emit.RuntimeILGenerator:SortExceptions(System.Reflection.Emit.__ExceptionInfo[]) (Tier0-FullOpts)

Top method improvements (percentages):
         -47 (-15.56 % of base) : 30569.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (Tier0-FullOpts)
         -24 (-9.09 % of base) : 3697.dasm - System.MemoryExtensions:<Trim>g__TrimFallback|223_0(System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (Tier0-FullOpts)
        -309 (-9.07 % of base) : 31012.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
         -16 (-7.96 % of base) : 241.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (Tier1)
         -16 (-7.41 % of base) : 33034.dasm - Microsoft.Extensions.Primitives.StringSegment:TrimStart():Microsoft.Extensions.Primitives.StringSegment:this (Tier0-FullOpts)
         -83 (-7.17 % of base) : 46542.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Tier0-FullOpts)
         -22 (-6.03 % of base) : 31114.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(System.Diagnostics.Tracing.EventSource+EventMetadata):ubyte[]:this (Tier0-FullOpts)
         -39 (-5.72 % of base) : 99.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (Tier0-FullOpts)
         -21 (-5.60 % of base) : 25454.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (Tier0-FullOpts)
          -6 (-4.72 % of base) : 7529.dasm - System.IO.Path:Join(System.String,System.String,System.String):System.String (Tier1)
         -18 (-4.72 % of base) : 29986.dasm - System.Runtime.Serialization.Json.JsonFormatReaderGenerator+CriticalHelper:BeginMethod(System.Runtime.Serialization.CodeGenerator,System.String,System.Type,ubyte) (Tier0-FullOpts)
         -18 (-4.72 % of base) : 24932.dasm - System.Runtime.Serialization.Json.JsonFormatWriterGenerator+CriticalHelper:BeginMethod(System.Runtime.Serialization.CodeGenerator,System.String,System.Type,ubyte) (Tier0-FullOpts)
         -16 (-4.52 % of base) : 15263.dasm - Sigil.Impl.LinqAlternative:_Order[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int](System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]],Sigil.Impl.SigilFunc`2[System.Collections.Generic.KeyValuePair`2[System.__Canon,int],int],System.Collections.Generic.IComparer`1[int]):System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,int]] (Tier0-FullOpts)
          -4 (-4.44 % of base) : 4884.dasm - System.IO.Path:CombineInternal(System.String,System.String):System.String (Tier1)
         -12 (-4.18 % of base) : 2165.dasm - System.String:Concat(System.String,System.String,System.String):System.String (Tier1)
          -6 (-4.14 % of base) : 1111.dasm - System.IO.PathInternal:IsPartiallyQualified(System.ReadOnlySpan`1[ushort]):ubyte (Tier1)
         -29 (-3.90 % of base) : 9448.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:Populate():this (Tier0-FullOpts)
         -10 (-3.88 % of base) : 29664.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (Tier0-FullOpts)
         -19 (-3.47 % of base) : 39213.dasm - Microsoft.Cci.MetadataWriter:SerializeMethodBodies(System.Reflection.Metadata.BlobBuilder,Microsoft.Cci.PdbWriter,byref):int[]:this (Tier0-FullOpts)
         -10 (-3.46 % of base) : 32887.dasm - Benchstone.BenchF.LLoops:AllocArray[double](int,int,int):double[][][] (Tier0-FullOpts)


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: 308689527 (overridden on cmd)
Total bytes of diff: 308608292 (overridden on cmd)
Total bytes of delta: -81235 (-0.03 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         276 : 573408.dasm (3.28 % of base)
         250 : 337239.dasm (10.74 % of base)
         184 : 140865.dasm (11.73 % of base)
         175 : 436946.dasm (11.52 % of base)
         160 : 481875.dasm (2.10 % of base)
         139 : 270512.dasm (8.74 % of base)
         139 : 507846.dasm (8.74 % of base)
         131 : 280842.dasm (7.24 % of base)
         119 : 250924.dasm (7.12 % of base)
         119 : 292777.dasm (7.12 % of base)
         102 : 140903.dasm (7.19 % of base)
         102 : 276165.dasm (7.41 % of base)
         102 : 140960.dasm (7.19 % of base)
         102 : 436976.dasm (7.42 % of base)
         102 : 437021.dasm (7.42 % of base)
         101 : 206621.dasm (5.55 % of base)
         101 : 358998.dasm (5.55 % of base)
          92 : 365160.dasm (5.50 % of base)
          92 : 342972.dasm (5.50 % of base)
          92 : 249148.dasm (5.50 % of base)

Top file improvements (bytes):
        -309 : 234088.dasm (-9.07 % of base)
        -309 : 481714.dasm (-9.07 % of base)
        -175 : 477586.dasm (-3.11 % of base)
        -142 : 340664.dasm (-8.75 % of base)
        -136 : 370585.dasm (-4.99 % of base)
        -136 : 225155.dasm (-2.42 % of base)
        -121 : 431406.dasm (-1.71 % of base)
        -121 : 431410.dasm (-1.71 % of base)
        -114 : 196433.dasm (-4.43 % of base)
        -114 : 369019.dasm (-13.18 % of base)
        -114 : 573625.dasm (-13.18 % of base)
        -109 : 478247.dasm (-2.45 % of base)
        -109 : 561718.dasm (-12.72 % of base)
        -109 : 343762.dasm (-12.69 % of base)
        -106 : 340659.dasm (-12.44 % of base)
        -105 : 256919.dasm (-5.77 % of base)
         -97 : 227133.dasm (-2.12 % of base)
         -88 : 162250.dasm (-7.24 % of base)
         -88 : 162194.dasm (-7.24 % of base)
         -88 : 162269.dasm (-7.24 % of base)

75 total files with Code Size differences (36 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
         276 (3.28 % of base) : 573408.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
         250 (10.74 % of base) : 337239.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
         184 (11.73 % of base) : 140865.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         175 (11.52 % of base) : 436946.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
         160 (2.10 % of base) : 481875.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
         139 (8.74 % of base) : 507846.dasm - JitTest_array1_refany_il.Test:Main():int (FullOpts)
         139 (8.74 % of base) : 270512.dasm - JitTest_array1_refany_il.Test:Main():int (Tier0-FullOpts)
         131 (7.24 % of base) : 280842.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
         119 (7.12 % of base) : 250924.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
         119 (7.12 % of base) : 292777.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
         102 (7.42 % of base) : 436976.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (FullOpts)
         102 (7.19 % of base) : 140903.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Int642:ValidateResult(long[],long[],long[],System.String):this (Tier0-FullOpts)
         102 (7.42 % of base) : 437021.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (FullOpts)
         102 (7.19 % of base) : 140960.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128UInt642:ValidateResult(ulong[],ulong[],ulong[],System.String):this (Tier0-FullOpts)
         102 (7.41 % of base) : 276165.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (Tier0-FullOpts)
         101 (5.55 % of base) : 206621.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
         101 (5.55 % of base) : 358998.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
          92 (5.50 % of base) : 365160.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
          92 (5.50 % of base) : 342972.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
          92 (5.50 % of base) : 249148.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)

Top method improvements (bytes):
        -309 (-9.07 % of base) : 481714.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (FullOpts)
        -309 (-9.07 % of base) : 234088.dasm - Benchstone.BenchI.MulMatrix:Inner(int[][],int[][],int[][]) (Tier0-FullOpts)
        -175 (-3.11 % of base) : 477586.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
        -142 (-8.75 % of base) : 340664.dasm - System.Text.Ascii:NarrowUtf16ToAscii(uint,uint,uint):uint (Tier0-FullOpts)
        -136 (-4.99 % of base) : 370585.dasm - Internal.JitInterface.CorInfoImpl:getMethodAttribsInternal(Internal.TypeSystem.MethodDesc):uint:this (Tier1)
        -136 (-2.42 % of base) : 225155.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (Tier0-FullOpts)
        -121 (-1.71 % of base) : 431406.dasm - IntelHardwareIntrinsicTest._Avx512F.Program:UnpackHigh() (FullOpts)
        -121 (-1.71 % of base) : 431410.dasm - IntelHardwareIntrinsicTest._Avx512F.Program:UnpackLow() (FullOpts)
        -114 (-13.18 % of base) : 573625.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
        -114 (-13.18 % of base) : 369019.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (Tier0-FullOpts)
        -114 (-4.43 % of base) : 196433.dasm - System.Linq.Expressions.Expression:Property(System.Linq.Expressions.Expression,System.Reflection.PropertyInfo):System.Linq.Expressions.MemberExpression (Tier1)
        -109 (-12.72 % of base) : 561718.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
        -109 (-12.69 % of base) : 343762.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (Tier0-FullOpts)
        -109 (-2.45 % of base) : 478247.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        -106 (-12.44 % of base) : 340659.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(uint,uint):uint (Tier0-FullOpts)
        -105 (-5.77 % of base) : 256919.dasm - System.IO.FileSystem:CreateDirectory(System.String,ubyte[]) (Tier1)
         -97 (-2.12 % of base) : 227133.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (Tier0-FullOpts)
         -88 (-7.24 % of base) : 162194.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendInt324:ValidateResult(int[],int[],int[],System.String):this (Tier0-FullOpts)
         -88 (-7.24 % of base) : 162250.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt322:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)
         -88 (-7.24 % of base) : 162269.dasm - JIT.HardwareIntrinsics.X86._Avx2.ImmBinaryOpTest__BlendUInt324:ValidateResult(uint[],uint[],uint[],System.String):this (Tier0-FullOpts)

Top method regressions (percentages):
          32 (25.60 % of base) : 386723.dasm - testout1:Sub_Funclet_221():int (FullOpts)
          30 (24.00 % of base) : 387140.dasm - testout1:Sub_Funclet_221():int (FullOpts)
          10 (14.49 % of base) : 220020.dasm - System.Reflection.TypeNameParser:SkipWhiteSpace():this (Tier1)
          51 (13.82 % of base) : 374401.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
          51 (13.82 % of base) : 375591.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
          51 (12.50 % of base) : 276621.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.NullableTypeDecoder:TransformType(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations (Tier1)
          40 (12.23 % of base) : 69470.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
         184 (11.73 % of base) : 140865.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (Tier0-FullOpts)
         175 (11.52 % of base) : 436946.dasm - JIT.HardwareIntrinsics.X86._Avx512F.ImmBinaryOpTest__Shuffle4x128Double2:ValidateResult(double[],double[],double[],System.String):this (FullOpts)
          40 (10.84 % of base) : 374348.dasm - System.Threading.ThreadPoolWorkQueue:Enqueue(System.Object,ubyte):this (Tier1)
         250 (10.74 % of base) : 337239.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
          14 (10.45 % of base) : 387067.dasm - testout1:Sub_Funclet_144():int (FullOpts)
          14 (10.45 % of base) : 386650.dasm - testout1:Sub_Funclet_144():int (FullOpts)
          12 (10.26 % of base) : 474555.dasm - CallAndIndir:H(int[],int,int,byref) (FullOpts)
          12 (10.26 % of base) : 218392.dasm - CallAndIndir:H(int[],int,int,byref) (Tier0-FullOpts)
          14 (9.79 % of base) : 386613.dasm - testout1:Sub_Funclet_107():int (FullOpts)
          14 (9.79 % of base) : 386651.dasm - testout1:Sub_Funclet_145():int (FullOpts)
          14 (9.79 % of base) : 386725.dasm - testout1:Sub_Funclet_223():int (FullOpts)
          43 (9.77 % of base) : 231288.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:DoSignaturesMatch(Microsoft.CodeAnalysis.PEModule,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][]):ubyte (Tier1)
          43 (9.77 % of base) : 277070.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEPropertySymbol:DoSignaturesMatch(Microsoft.CodeAnalysis.PEModule,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.MetadataDecoder,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][],Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol][]):ubyte (Tier1)

Top method improvements (percentages):
         -23 (-16.91 % of base) : 194501.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Action`1[ubyte],System.Object) (FullOpts)
         -23 (-16.43 % of base) : 238300.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
         -23 (-15.65 % of base) : 195941.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.DateTime,System.Object) (FullOpts)
         -23 (-15.33 % of base) : 238297.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
         -23 (-14.74 % of base) : 194300.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
         -23 (-13.77 % of base) : 238305.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object):System.Object (FullOpts)
        -114 (-13.18 % of base) : 573625.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
        -114 (-13.18 % of base) : 369019.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (Tier0-FullOpts)
        -109 (-12.72 % of base) : 561718.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
        -109 (-12.69 % of base) : 343762.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (Tier0-FullOpts)
        -106 (-12.44 % of base) : 340659.dasm - System.Text.Ascii:GetIndexOfFirstNonAsciiChar_Vector(uint,uint):uint (Tier0-FullOpts)
         -31 (-11.70 % of base) : 194196.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,System.Object) (FullOpts)
         -31 (-11.70 % of base) : 194915.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,uint,System.Object) (FullOpts)
         -29 (-11.55 % of base) : 185662.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
         -29 (-11.55 % of base) : 225130.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
         -29 (-11.55 % of base) : 133073.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
         -29 (-11.55 % of base) : 236150.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
         -29 (-11.55 % of base) : 111236.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
         -29 (-11.55 % of base) : 43654.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)
         -29 (-11.55 % of base) : 82433.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:Rehash(int):this (Tier1)


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: 31589655 (overridden on cmd)
Total bytes of diff: 31587957 (overridden on cmd)
Total bytes of delta: -1698 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         197 : 39837.dasm (2.41 % of base)
         154 : 82618.dasm (0.59 % of base)
         129 : 11444.dasm (11.52 % of base)
         118 : 11498.dasm (4.54 % of base)
         109 : 11879.dasm (4.03 % of base)
         107 : 11875.dasm (3.62 % of base)
         105 : 79585.dasm (7.12 % of base)
         104 : 2279.dasm (1.31 % of base)
         103 : 10911.dasm (3.77 % of base)
          91 : 10903.dasm (5.28 % of base)
          88 : 11496.dasm (6.06 % of base)
          87 : 10909.dasm (10.94 % of base)
          87 : 11544.dasm (7.12 % of base)
          86 : 17539.dasm (4.23 % of base)
          84 : 37688.dasm (0.39 % of base)
          80 : 11869.dasm (4.59 % of base)
          76 : 15665.dasm (13.69 % of base)
          75 : 11873.dasm (7.04 % of base)
          75 : 41810.dasm (2.11 % of base)
          74 : 181614.dasm (5.53 % of base)

Top file improvements (bytes):
        -110 : 96372.dasm (-7.59 % of base)
        -103 : 163192.dasm (-5.01 % of base)
         -91 : 76106.dasm (-5.83 % of base)
         -88 : 76799.dasm (-7.17 % of base)
         -87 : 20955.dasm (-4.73 % of base)
         -79 : 232100.dasm (-6.28 % of base)
         -65 : 101904.dasm (-4.30 % of base)
         -64 : 10135.dasm (-1.78 % of base)
         -63 : 76472.dasm (-4.57 % of base)
         -61 : 32096.dasm (-2.25 % of base)
         -61 : 174215.dasm (-9.71 % of base)
         -61 : 202722.dasm (-2.25 % of base)
         -58 : 215583.dasm (-2.13 % of base)
         -56 : 67307.dasm (-2.53 % of base)
         -55 : 75976.dasm (-0.50 % of base)
         -49 : 41628.dasm (-1.36 % of base)
         -46 : 219172.dasm (-7.15 % of base)
         -45 : 107236.dasm (-8.82 % of base)
         -44 : 213225.dasm (-7.19 % of base)
         -44 : 154028.dasm (-2.26 % of base)

67 total files with Code Size differences (34 improved, 33 regressed), 20 unchanged.

Top method regressions (bytes):
         197 (2.41 % of base) : 39837.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:VisitTupleDeconstructionArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+DeconstructionVariable],System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression]],Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithState]):this (FullOpts)
         154 (0.59 % of base) : 82618.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
         129 (11.52 % of base) : 11444.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
         118 (4.54 % of base) : 11498.dasm - System.IO.StreamReader+<ReadLineAsyncInternal>d__63:MoveNext():this (FullOpts)
         109 (4.03 % of base) : 11879.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<WriteAsyncSlowPath>d__48:MoveNext():this (FullOpts)
         107 (3.62 % of base) : 11875.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__37:MoveNext():this (FullOpts)
         105 (7.12 % of base) : 79585.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
         104 (1.31 % of base) : 2279.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
         103 (3.77 % of base) : 10911.dasm - System.IO.BufferedStream+<ReadFromUnderlyingStreamAsync>d__48:MoveNext():this (FullOpts)
          91 (5.28 % of base) : 10903.dasm - System.IO.BufferedStream+<CopyToAsyncCore>d__68:MoveNext():this (FullOpts)
          88 (6.06 % of base) : 11496.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)
          87 (10.94 % of base) : 10909.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
          87 (7.12 % of base) : 11544.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
          86 (4.23 % of base) : 17539.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          84 (0.39 % of base) : 37688.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this (FullOpts)
          80 (4.59 % of base) : 11869.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<CopyToAsyncCore>d__57:MoveNext():this (FullOpts)
          76 (13.69 % of base) : 15665.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
          75 (2.11 % of base) : 41810.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteMultiDimensionalArrayForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
          75 (7.04 % of base) : 11873.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<FlushAsyncInternal>d__55:MoveNext():this (FullOpts)
          74 (5.53 % of base) : 181614.dasm - System.Formats.Asn1.AsnDecoder:ProcessConstructedBitString(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ubyte],System.Formats.Asn1.AsnDecoder+BitStringCopyAction,ubyte,byref,byref):int (FullOpts)

Top method improvements (bytes):
        -110 (-7.59 % of base) : 96372.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
        -103 (-5.01 % of base) : 163192.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Compilation,System.Guid,System.Reflection.Metadata.Ecma335.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this (FullOpts)
         -91 (-5.83 % of base) : 76106.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindQueryOperatorCall(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.String,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.Text.TextSpan,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -88 (-7.17 % of base) : 76799.dasm - Microsoft.CodeAnalysis.VisualBasic.StatementListBinder:BuildLocals():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol]:this (FullOpts)
         -87 (-4.73 % of base) : 20955.dasm - System.Reflection.Emit.RuntimeTypeBuilder:CreateTypeNoLock():System.Reflection.TypeInfo:this (FullOpts)
         -79 (-6.28 % of base) : 232100.dasm - System.ComponentModel.MaskedTextProvider:TestChar(ushort,int,byref):ubyte:this (FullOpts)
         -65 (-4.30 % of base) : 101904.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)
         -64 (-1.78 % of base) : 10135.dasm - System.Reflection.Emit.CustomAttributeBuilder:.ctor(System.Reflection.ConstructorInfo,System.Object[],System.Reflection.PropertyInfo[],System.Object[],System.Reflection.FieldInfo[],System.Object[]):this (FullOpts)
         -63 (-4.57 % of base) : 76472.dasm - Microsoft.CodeAnalysis.VisualBasic.DocumentationCommentCrefBinder:BindInsideCrefAttributeValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
         -61 (-9.71 % of base) : 174215.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
         -61 (-2.25 % of base) : 32096.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
         -61 (-2.25 % of base) : 202722.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
         -58 (-2.13 % of base) : 215583.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
         -56 (-2.53 % of base) : 67307.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:ReportDiagnostics[System.__Canon](Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.String,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[System.__Canon],Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,ubyte,System.Nullable`1[ubyte],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
         -55 (-0.50 % of base) : 75976.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],ubyte,ubyte,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,ubyte,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this (FullOpts)
         -49 (-1.36 % of base) : 41628.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeBinaryOperator(Microsoft.CodeAnalysis.CSharp.BoundBinaryOperator,Microsoft.CodeAnalysis.SyntaxNode,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.BoundUnaryOperator):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -46 (-7.15 % of base) : 219172.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
         -45 (-8.82 % of base) : 107236.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
         -44 (-7.19 % of base) : 213225.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
         -44 (-2.26 % of base) : 154028.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)

Top method regressions (percentages):
          76 (13.69 % of base) : 15665.dasm - System.DefaultBinder:CreateParamOrder(int[],System.ReadOnlySpan`1[System.Reflection.ParameterInfo],System.String[]):ubyte (FullOpts)
         129 (11.52 % of base) : 11444.dasm - System.IO.Stream+<<CopyToAsync>g__Core|27_0>d:MoveNext():this (FullOpts)
          87 (10.94 % of base) : 10909.dasm - System.IO.BufferedStream+<FlushWriteAsync>d__40:MoveNext():this (FullOpts)
          71 (9.66 % of base) : 11451.dasm - System.IO.Stream+<ReadAtLeastAsyncCore>d__46:MoveNext():this (FullOpts)
          12 (8.45 % of base) : 3296.dasm - System.MemoryExtensions:TrimStart(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
          59 (8.36 % of base) : 11615.dasm - System.IO.TextReader+<ReadBlockAsyncInternal>d__23:MoveNext():this (FullOpts)
          52 (8.24 % of base) : 11748.dasm - System.IO.TextWriter+<<WriteLineAsync>g__WriteLineAsyncCore|66_0>d:MoveNext():this (FullOpts)
          12 (7.95 % of base) : 3297.dasm - System.MemoryExtensions:TrimEnd(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.ReadOnlySpan`1[ushort] (FullOpts)
           4 (7.84 % of base) : 40086.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:GetRangeVariableUnderlyingParameter(Microsoft.CodeAnalysis.CSharp.BoundNode):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol (FullOpts)
           4 (7.69 % of base) : 19213.dasm - System.Threading.DeferredDisposableLifetime`1[System.__Canon]:Dispose(System.__Canon):this (FullOpts)
          61 (7.57 % of base) : 79010.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]],int):this (FullOpts)
          61 (7.40 % of base) : 11120.dasm - System.IO.File+<InternalReadAllBytesAsync>d__92:MoveNext():this (FullOpts)
          87 (7.12 % of base) : 11544.dasm - System.IO.StreamWriter+<<FlushAsyncInternal>g__Core|76_0>d:MoveNext():this (FullOpts)
         105 (7.12 % of base) : 79585.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
          75 (7.04 % of base) : 11873.dasm - System.IO.Strategies.BufferedFileStreamStrategy+<FlushAsyncInternal>d__55:MoveNext():this (FullOpts)
          15 (6.94 % of base) : 219495.dasm - Microsoft.VisualBasic.FileIO.TextFieldParser:ArrayHasChanged():ubyte:this (FullOpts)
          15 (6.85 % of base) : 31190.dasm - System.Data.SqlTypes.SqlBinary:PerformCompareByte(ubyte[],ubyte[]):int (FullOpts)
          15 (6.49 % of base) : 20759.dasm - System.Threading.Tasks.TaskFactory:CheckMultiContinuationTasksAndCopy(System.Threading.Tasks.Task[]):System.Threading.Tasks.Task[] (FullOpts)
          43 (6.38 % of base) : 89840.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanXmlNcName(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          88 (6.06 % of base) : 11496.dasm - System.IO.StreamReader+<ReadBufferAsync>d__72:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -43 (-12.11 % of base) : 22428.dasm - System.Diagnostics.Tracing.EventPipeMetadataGenerator:GenerateEventMetadata(int,System.String,long,int,uint,int,System.Diagnostics.Tracing.TraceLoggingEventTypes):ubyte[]:this (FullOpts)
         -39 (-10.43 % of base) : 17556.dasm - System.Diagnostics.Contracts.Contract:AssertMustUseRewriter(int,System.String) (FullOpts)
         -61 (-9.71 % of base) : 174215.dasm - ParallelRunner:BuildProjects(int,int,int,int,System.Collections.Generic.List`1[ProcessInfo],ReadyToRunJittedMethods,int) (FullOpts)
         -21 (-9.46 % of base) : 105329.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
         -13 (-9.42 % of base) : 12380.dasm - System.Diagnostics.Tracing.EventSource:WriteEvent(int,System.Diagnostics.Tracing.EventSource+EventSourcePrimitive[]):this (FullOpts)
         -45 (-8.82 % of base) : 107236.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
         -21 (-8.57 % of base) : 105330.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
         -32 (-8.27 % of base) : 134215.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -32 (-8.27 % of base) : 159152.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         -20 (-8.10 % of base) : 31643.dasm - System.Data.DataTable:FindMergeTarget(System.Data.DataRow,System.Data.DataKey,System.Data.Index):System.Data.DataRow:this (FullOpts)
         -14 (-7.73 % of base) : 96143.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntheticBoundNodeFactory:Sequence(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol],Microsoft.CodeAnalysis.VisualBasic.BoundExpression[]):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
         -23 (-7.72 % of base) : 57387.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,byref,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.BitVector,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]):ubyte (FullOpts)
         -27 (-7.63 % of base) : 124.dasm - System.Array:SetValue(System.Object,long[]):this (FullOpts)
         -35 (-7.61 % of base) : 216018.dasm - CommandLine.Text.HelpText:AddLine(System.Text.StringBuilder,System.String,int) (FullOpts)
        -110 (-7.59 % of base) : 96372.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
         -19 (-7.25 % of base) : 102.dasm - System.Array:CreateInstance(System.Type,long[]):System.Array (FullOpts)
         -44 (-7.19 % of base) : 213225.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
         -88 (-7.17 % of base) : 76799.dasm - Microsoft.CodeAnalysis.VisualBasic.StatementListBinder:BuildLocals():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol]:this (FullOpts)
         -46 (-7.15 % of base) : 219172.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:MethodsDifferOnlyByReturnType(System.Reflection.MethodBase,System.Reflection.MethodBase):ubyte:this (FullOpts)
         -37 (-6.67 % of base) : 83605.dasm - Microsoft.CodeAnalysis.VisualBasic.Emit.PEAssemblyBuilderBase:GetFilesCore(Microsoft.CodeAnalysis.Emit.EmitContext,byref):System.Collections.Generic.IEnumerable`1[Microsoft.Cci.IFileReference]:this (FullOpts)


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: 48705820 (overridden on cmd)
Total bytes of diff: 48698281 (overridden on cmd)
Total bytes of delta: -7539 (-0.02 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         284 : 194988.dasm (2.88 % of base)
         193 : 199857.dasm (9.43 % of base)
         174 : 161755.dasm (5.14 % of base)
         174 : 113825.dasm (5.14 % of base)
         156 : 266270.dasm (8.46 % of base)
         155 : 13385.dasm (1.81 % of base)
         152 : 195272.dasm (6.18 % of base)
         135 : 79010.dasm (3.02 % of base)
         134 : 270607.dasm (8.98 % of base)
         132 : 86285.dasm (0.50 % of base)
         130 : 181229.dasm (6.95 % of base)
         120 : 284038.dasm (7.95 % of base)
         118 : 189648.dasm (17.99 % of base)
         111 : 292042.dasm (5.85 % of base)
         101 : 297895.dasm (2.37 % of base)
         100 : 195273.dasm (4.27 % of base)
         100 : 275452.dasm (7.41 % of base)
          99 : 267153.dasm (1.53 % of base)
          96 : 181207.dasm (4.32 % of base)
          95 : 266571.dasm (6.94 % of base)

Top file improvements (bytes):
        -307 : 147560.dasm (-1.30 % of base)
        -253 : 101415.dasm (-7.08 % of base)
        -210 : 195741.dasm (-5.94 % of base)
        -210 : 82259.dasm (-9.09 % of base)
        -193 : 247790.dasm (-4.13 % of base)
        -186 : 127292.dasm (-5.42 % of base)
        -175 : 58770.dasm (-3.11 % of base)
        -167 : 151949.dasm (-4.17 % of base)
        -145 : 287150.dasm (-3.75 % of base)
        -145 : 281240.dasm (-3.74 % of base)
        -136 : 78993.dasm (-3.33 % of base)
        -130 : 113861.dasm (-4.94 % of base)
        -130 : 161791.dasm (-4.94 % of base)
        -128 : 240483.dasm (-4.05 % of base)
        -128 : 73239.dasm (-4.05 % of base)
        -128 : 241888.dasm (-4.03 % of base)
        -126 : 102555.dasm (-5.30 % of base)
        -125 : 290412.dasm (-4.56 % of base)
        -122 : 200015.dasm (-4.16 % of base)
        -118 : 107920.dasm (-4.33 % of base)

75 total files with Code Size differences (39 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
         284 (2.88 % of base) : 194988.dasm - Internal.JitInterface.InstructionSetParser:LookupPlatformIntrinsicInstructionSet(int,Internal.TypeSystem.TypeDesc):int (FullOpts)
         193 (9.43 % of base) : 199857.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
         174 (5.14 % of base) : 161755.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetSimilarity(byref,byref):int:this (FullOpts)
         174 (5.14 % of base) : 113825.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetSimilarity(byref,byref):int:this (FullOpts)
         156 (8.46 % of base) : 266270.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
         155 (1.81 % of base) : 13385.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
         152 (6.18 % of base) : 195272.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
         135 (3.02 % of base) : 79010.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildBoundLambdaParameters(Microsoft.CodeAnalysis.VisualBasic.UnboundLambda,Microsoft.CodeAnalysis.VisualBasic.UnboundLambda+TargetSignature,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.BoundLambdaParameterSymbol]:this (FullOpts)
         134 (8.98 % of base) : 270607.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
         132 (0.50 % of base) : 86285.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[System.String],System.String,System.String,System.String):Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLineArguments:this (FullOpts)
         130 (6.95 % of base) : 181229.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
         120 (7.95 % of base) : 284038.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
         118 (17.99 % of base) : 189648.dasm - System.Xml.Xsl.XsltOld.RootAction:AddDecimalFormat(System.Xml.XmlQualifiedName,System.Xml.Xsl.Runtime.DecimalFormat):this (FullOpts)
         111 (5.85 % of base) : 292042.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
         101 (2.37 % of base) : 297895.dasm - System.Threading.Tasks.Dataflow.TransformManyBlock`2+<StoreOutputItemsNonReorderedWithIterationAsync>d__48[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
         100 (4.27 % of base) : 195273.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[ubyte,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
         100 (7.41 % of base) : 275452.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__44:MoveNext():this (FullOpts)
          99 (1.53 % of base) : 267153.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
          96 (4.32 % of base) : 181207.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteDocTypeAsync>d__98:MoveNext():this (FullOpts)
          95 (6.94 % of base) : 266571.dasm - System.Net.Http.HttpConnection+<SendRequestContentAsync>d__61:MoveNext():this (FullOpts)

Top method improvements (bytes):
        -307 (-1.30 % of base) : 147560.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        -253 (-7.08 % of base) : 101415.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:LateMakeArgumentArrayArgument(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
        -210 (-5.94 % of base) : 195741.dasm - ILCompiler.CallChainProfile:ReadCallChainAnalysisData(System.String):System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.Dictionary`2[System.String,int]]:this (FullOpts)
        -210 (-9.09 % of base) : 82259.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSignatureComparer:DetailedParameterCompare(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,int,int):int (FullOpts)
        -193 (-4.13 % of base) : 247790.dasm - System.DirectoryServices.ActiveDirectory.ActiveDirectorySite:GetBridgeheadServers():System.DirectoryServices.ActiveDirectory.ReadOnlyDirectoryServerCollection:this (FullOpts)
        -186 (-5.42 % of base) : 127292.dasm - Microsoft.Diagnostics.Tracing.Etlx.TraceLog:CopyRawEvents(Microsoft.Diagnostics.Tracing.TraceEventDispatcher,FastSerialization.IStreamWriter):this (FullOpts)
        -175 (-3.11 % of base) : 58770.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
        -167 (-4.17 % of base) : 151949.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
        -145 (-3.75 % of base) : 287150.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[ubyte],byref) (FullOpts)
        -145 (-3.74 % of base) : 281240.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[ubyte],byref) (FullOpts)
        -136 (-3.33 % of base) : 78993.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
        -130 (-4.94 % of base) : 113861.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
        -130 (-4.94 % of base) : 161791.dasm - Microsoft.CodeAnalysis.SyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken,ubyte],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia,ubyte]):Microsoft.CodeAnalysis.SyntaxToken:this (FullOpts)
        -128 (-4.05 % of base) : 240483.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -128 (-4.05 % of base) : 73239.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -128 (-4.03 % of base) : 241888.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -126 (-5.30 % of base) : 102555.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode:DoGetSyntaxErrors(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxNodeOrToken):System.Collections.ObjectModel.ReadOnlyCollection`1[Microsoft.CodeAnalysis.Diagnostic] (FullOpts)
        -125 (-4.56 % of base) : 290412.dasm - System.Speech.Internal.SapiInterop.SPPHRASE:CreatePhraseFromWordUnits(System.Speech.Recognition.RecognizedWordUnit[],System.Globalization.CultureInfo,byref,byref):System.Speech.Internal.SapiInterop.ISpPhrase (FullOpts)
        -122 (-4.16 % of base) : 200015.dasm - ILCompiler.Reflection.ReadyToRun.PEExportTable:.ctor(System.Reflection.PortableExecutable.PEReader):this (FullOpts)
        -118 (-4.33 % of base) : 107920.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol+ComClassData+SynthesizedComInterface:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.VisualBasic.Symbol,int]]):this (FullOpts)

Top method regressions (percentages):
         118 (17.99 % of base) : 189648.dasm - System.Xml.Xsl.XsltOld.RootAction:AddDecimalFormat(System.Xml.XmlQualifiedName,System.Xml.Xsl.Runtime.DecimalFormat):this (FullOpts)
          27 (14.29 % of base) : 145907.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData+StructValue:TryGetValue(System.String,byref):ubyte:this (FullOpts)
          69 (12.99 % of base) : 249896.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
          67 (12.20 % of base) : 160406.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:EscapeName(System.Text.StringBuilder,System.String) (FullOpts)
          67 (12.20 % of base) : 112458.dasm - Microsoft.CodeAnalysis.AssemblyIdentity:EscapeName(System.Text.StringBuilder,System.String) (FullOpts)
          92 (10.07 % of base) : 240882.dasm - System.Data.ProviderBase.DbConnectionFactory:GetConnectionPoolGroup(System.Data.Common.DbConnectionPoolKey,System.Data.ProviderBase.DbConnectionPoolGroupOptions,byref):System.Data.ProviderBase.DbConnectionPoolGroup:this (FullOpts)
          39 (9.54 % of base) : 265266.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)
          23 (9.47 % of base) : 268673.dasm - System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
         193 (9.43 % of base) : 199857.dasm - Internal.Pgo.PgoProcessor:<Merge>g__MergeInSchemaElem|9_0[System.__Canon,System.Nullable`1[int]](System.Collections.Generic.Dictionary`2[Internal.Pgo.PgoSchemaElem,Internal.Pgo.PgoSchemaElem],Internal.Pgo.PgoSchemaElem) (FullOpts)
          66 (9.22 % of base) : 240210.dasm - System.Data.ProviderBase.DbConnectionFactory:GetConnectionPoolGroup(System.Data.Common.DbConnectionPoolKey,System.Data.ProviderBase.DbConnectionPoolGroupOptions,byref):System.Data.ProviderBase.DbConnectionPoolGroup:this (FullOpts)
          86 (9.19 % of base) : 266647.dasm - System.Net.Http.DecompressionHandler+DeflateDecompressedContent+ZLibOrDeflateStream+PeekFirstByteReadStream+<CopyToAsync>d__14:MoveNext():this (FullOpts)
         134 (8.98 % of base) : 270607.dasm - System.Net.Quic.QuicConnection+<DisposeAsync>d__49:MoveNext():this (FullOpts)
         156 (8.46 % of base) : 266270.dasm - System.Net.Http.MultipartContent+<SerializeToStreamAsyncCore>d__24:MoveNext():this (FullOpts)
          63 (8.18 % of base) : 267139.dasm - System.Net.Http.HttpConnectionPool+<ConstructHttp11ConnectionAsync>d__108:MoveNext():this (FullOpts)
          69 (8.18 % of base) : 266264.dasm - System.Net.Http.MultipartContent+ContentReadStream+<DisposeAsync>d__7:MoveNext():this (FullOpts)
          11 (7.97 % of base) : 204854.dasm - Microsoft.Extensions.DependencyModel.Dependency:Equals(System.Object):ubyte:this (FullOpts)
          11 (7.97 % of base) : 243128.dasm - System.Diagnostics.Metrics.StringSequence2:Equals(System.Object):ubyte:this (FullOpts)
         120 (7.95 % of base) : 284038.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
          70 (7.93 % of base) : 122334.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions+<SelectAsArrayAsync>d__13`2[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)
          70 (7.93 % of base) : 170171.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions+<SelectAsArrayAsync>d__14`2[ubyte,System.Nullable`1[int]]:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -64 (-17.39 % of base) : 176463.dasm - System.Runtime.Serialization.SchemaImporter:ImportAnnotation(System.Xml.Schema.XmlSchemaAnnotation,System.Xml.XmlQualifiedName):System.Xml.XmlElement (FullOpts)
         -64 (-17.39 % of base) : 279933.dasm - System.Runtime.Serialization.XsdDataContractImporter:ImportAnnotation(System.Xml.Schema.XmlSchemaAnnotation,System.Xml.XmlQualifiedName):System.Xml.XmlElement (FullOpts)
         -36 (-13.43 % of base) : 187927.dasm - System.Xml.Schema.XmlSchemaInference:FindElementRef(System.Xml.Schema.XmlSchemaObjectCollection,System.String,System.String):System.Xml.Schema.XmlSchemaElement (FullOpts)
         -34 (-12.98 % of base) : 181539.dasm - System.Xml.XmlNamedNodeMap:FindNodeOffset(System.String,System.String):int:this (FullOpts)
         -24 (-12.97 % of base) : 282751.dasm - System.Security.Cryptography.Xml.Utils:HasNamespace(System.Xml.XmlElement,System.String,System.String):ubyte (FullOpts)
        -113 (-12.67 % of base) : 213046.dasm - Internal.TypeSystem.CastingHelper:CanCastByVarianceToInterfaceOrDelegate(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc,Internal.TypeSystem.StackOverflowProtect,ubyte):ubyte (FullOpts)
         -41 (-12.06 % of base) : 184713.dasm - System.Xml.XmlAttributeCollection:FindNodeOffsetNS(System.Xml.XmlAttribute):int:this (FullOpts)
         -37 (-11.38 % of base) : 184712.dasm - System.Xml.XmlAttributeCollection:get_ItemOf(System.String,System.String):System.Xml.XmlAttribute:this (FullOpts)
         -22 (-10.38 % of base) : 207466.dasm - Microsoft.Extensions.Primitives.StringSegment:TrimStart():Microsoft.Extensions.Primitives.StringSegment:this (FullOpts)
         -57 (-10.23 % of base) : 227935.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[ubyte]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[ubyte],System.Collections.Immutable.ImmutableList`1+Builder[ubyte],int,int,ubyte):this (FullOpts)
         -30 (-9.74 % of base) : 187200.dasm - System.Xml.Schema.XmlSchemaSet:Schemas(System.String):System.Collections.ICollection:this (FullOpts)
         -24 (-9.68 % of base) : 183326.dasm - System.Xml.XmlTextReaderImpl:.ctor(System.IO.Stream,int,System.Xml.XmlParserContext):this (FullOpts)
         -25 (-9.62 % of base) : 104793.dasm - Microsoft.CodeAnalysis.Operations.VisualBasicOperationFactory:CreateBoundBadStatementOperation(Microsoft.CodeAnalysis.VisualBasic.BoundBadStatement):Microsoft.CodeAnalysis.Operations.IInvalidOperation:this (FullOpts)
        -210 (-9.09 % of base) : 82259.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSignatureComparer:DetailedParameterCompare(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol],byref,int,int):int (FullOpts)
         -87 (-8.97 % of base) : 183859.dasm - System.Xml.XmlWellFormedWriter:AddAttribute(System.String,System.String,System.String):this (FullOpts)
         -62 (-8.95 % of base) : 227922.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.__Canon]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.__Canon],System.Collections.Immutable.ImmutableList`1+Builder[System.__Canon],int,int,ubyte):this (FullOpts)
         -23 (-8.88 % of base) : 189584.dasm - System.Xml.Xsl.XsltOld.ReaderOutput:FindAttribute(System.String,System.String,byref):ubyte:this (FullOpts)
         -19 (-8.88 % of base) : 275878.dasm - System.Xml.Linq.XNodeReader:GetNameInAttributeScope(System.String,System.Xml.Linq.XElement,byref,byref) (FullOpts)
         -30 (-8.80 % of base) : 242580.dasm - System.Diagnostics.DiagnosticSourceEventSource+FilterAndTransform:Sample(System.String,System.String,System.Diagnostics.DiagnosticSourceEventSource):int (FullOpts)
         -45 (-8.51 % of base) : 290044.dasm - System.Speech.Internal.SrgsParser.XmlParser:ParseScript(System.Xml.XmlReader,System.Speech.Internal.SrgsParser.IGrammar):this (FullOpts)


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: 185057062 (overridden on cmd)
Total bytes of diff: 184997422 (overridden on cmd)
Total bytes of delta: -59640 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         252 : 10210.dasm (10.96 % of base)
         203 : 622337.dasm (1.80 % of base)
         199 : 437163.dasm (1.82 % of base)
         189 : 78780.dasm (2.63 % of base)
         186 : 164034.dasm (6.17 % of base)
         174 : 572153.dasm (1.61 % of base)
         173 : 297938.dasm (2.70 % of base)
         171 : 165103.dasm (5.69 % of base)
         164 : 50533.dasm (3.05 % of base)
         162 : 164718.dasm (5.55 % of base)
         160 : 17008.dasm (1.95 % of base)
         157 : 145604.dasm (1.67 % of base)
         156 : 585942.dasm (2.76 % of base)
         149 : 449833.dasm (1.40 % of base)
         148 : 152035.dasm (4.11 % of base)
         145 : 469724.dasm (14.09 % of base)
         144 : 59951.dasm (1.41 % of base)
         143 : 62674.dasm (3.36 % of base)
         133 : 297640.dasm (5.88 % of base)
         115 : 633848.dasm (1.02 % of base)

Top file improvements (bytes):
        -370 : 155168.dasm (-5.14 % of base)
        -363 : 154690.dasm (-14.88 % of base)
        -333 : 169024.dasm (-1.41 % of base)
        -315 : 125955.dasm (-11.15 % of base)
        -277 : 146958.dasm (-11.77 % of base)
        -277 : 450607.dasm (-11.76 % of base)
        -274 : 327808.dasm (-11.66 % of base)
        -265 : 133891.dasm (-11.32 % of base)
        -265 : 437723.dasm (-11.32 % of base)
        -265 : 574091.dasm (-11.32 % of base)
        -265 : 238754.dasm (-11.32 % of base)
        -265 : 371841.dasm (-11.32 % of base)
        -265 : 375150.dasm (-11.32 % of base)
        -265 : 300392.dasm (-11.32 % of base)
        -265 : 621308.dasm (-11.32 % of base)
        -265 : 358495.dasm (-11.32 % of base)
        -265 : 490150.dasm (-11.32 % of base)
        -262 : 156040.dasm (-2.47 % of base)
        -257 : 170302.dasm (-10.92 % of base)
        -256 : 66918.dasm (-6.58 % of base)

99 total files with Code Size differences (60 improved, 39 regressed), 20 unchanged.

Top method regressions (bytes):
         252 (10.96 % of base) : 10210.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Instrumented Tier1)
         203 (1.80 % of base) : 622337.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         199 (1.82 % of base) : 437163.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         189 (2.63 % of base) : 78780.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.BoundNode):this (Tier1)
         186 (6.17 % of base) : 164034.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
         174 (1.61 % of base) : 572153.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:MatchCharacterClass(System.String,System.String,ubyte,System.Collections.Generic.HashSet`1[System.String],System.Collections.Generic.Dictionary`2[System.String,System.String[]]):System.String (Tier0-FullOpts)
         173 (2.70 % of base) : 297938.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<ReaderShouldNotGetUnflushedBytesWithAppend>d__17:MoveNext():this (Tier0-FullOpts)
         171 (5.69 % of base) : 165103.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
         164 (3.05 % of base) : 50533.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:EarlyDecodeDeprecatedOrExperimentalOrObsoleteAttribute(byref,byref,byref,byref):ubyte (Tier1)
         162 (5.55 % of base) : 164718.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
         160 (1.95 % of base) : 17008.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (Tier0-FullOpts)
         157 (1.67 % of base) : 145604.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
         156 (2.76 % of base) : 585942.dasm - Microsoft.CodeAnalysis.CSharp.DiagnosticsPass:VisitCall(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.PropertySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.BitVector,Microsoft.CodeAnalysis.CSharp.BoundNode):this (Tier1)
         149 (1.40 % of base) : 449833.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         148 (4.11 % of base) : 152035.dasm - Microsoft.CodeAnalysis.CSharp.BinderFactory+BinderFactoryVisitor:VisitTypeDeclarationCore(Microsoft.CodeAnalysis.CSharp.Syntax.TypeDeclarationSyntax):Microsoft.CodeAnalysis.CSharp.Binder:this (Tier1)
         145 (14.09 % of base) : 469724.dasm - System.Tests.GCExtendedTests:AllocateArrayCheckPinning() (Tier0-FullOpts)
         144 (1.41 % of base) : 59951.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
         143 (3.36 % of base) : 62674.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNonGenericSimpleNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol):Microsoft.CodeAnalysis.CSharp.Binder+NamespaceOrTypeOrAliasSymbolWithAnnotations:this (Tier1)
         133 (5.88 % of base) : 297640.dasm - System.IO.Pipelines.Tests.PipePoolTests+<AdvanceToEndReturnsAllButOneBlockIfWritingBeforeAdvance>d__1:MoveNext():this (Tier0-FullOpts)
         115 (1.02 % of base) : 633848.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)

Top method improvements (bytes):
        -370 (-5.14 % of base) : 155168.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:EarlyDecodeWellKnownAttribute(byref):System.ValueTuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData,Microsoft.CodeAnalysis.CSharp.BoundAttribute]:this (Tier1)
        -363 (-14.88 % of base) : 154690.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__expandParamsArray|232_2(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref) (Tier0-FullOpts)
        -333 (-1.41 % of base) : 169024.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier0-FullOpts)
        -315 (-11.15 % of base) : 125955.dasm - System.String:Join(System.String,System.Collections.Generic.IEnumerable`1[System.String]):System.String (Tier1)
        -277 (-11.77 % of base) : 146958.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -277 (-11.76 % of base) : 450607.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -274 (-11.66 % of base) : 327808.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 133891.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 437723.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 574091.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 238754.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 371841.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 375150.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 300392.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 621308.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 358495.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -265 (-11.32 % of base) : 490150.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -262 (-2.47 % of base) : 156040.dasm - Microsoft.Extensions.Options.Generators.SymbolLoader:TryLoad(Microsoft.CodeAnalysis.Compilation,byref):ubyte (Tier1)
        -257 (-10.92 % of base) : 170302.dasm - Xunit.DelegatingXmlCreationSink:OnMessageWithTypes(Xunit.Abstractions.IMessageSinkMessage,System.Collections.Generic.HashSet`1[System.String]):ubyte:this (Tier1)
        -256 (-6.58 % of base) : 66918.dasm - Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory+RuntimeExportProvider:GetValueForImportElement(Microsoft.VisualStudio.Composition.RuntimeExportProviderFactory+RuntimeExportProvider+RuntimePartLifecycleTracker,Microsoft.VisualStudio.Composition.RuntimeComposition+RuntimeImport,Microsoft.VisualStudio.Composition.RuntimeComposition+RuntimeExport,System.Func`3[System.Func`1[System.Object],System.Object,System.Object]):System.Object:this (Tier1)

Top method regressions (percentages):
         145 (14.09 % of base) : 469724.dasm - System.Tests.GCExtendedTests:AllocateArrayCheckPinning() (Tier0-FullOpts)
          42 (12.92 % of base) : 152889.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 114266.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 119681.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 64949.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 305687.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 351887.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 353961.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 381440.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 449687.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 618901.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 116323.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 133869.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 146947.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 184403.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 358439.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.92 % of base) : 631115.dasm - Xunit.Sdk.MessageBus:QueueMessage(Xunit.Abstractions.IMessageSinkMessage):ubyte:this (Tier1)
          42 (12.73 % of base) : 288392.dasm - Interop+Kernel32:MoveFile(System.String,System.String,ubyte):ubyte (Tier1)
          40 (12.50 % of base) : 307775.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
          40 (12.23 % of base) : 212873.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)

Top method improvements (percentages):
         -40 (-21.74 % of base) : 262666.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
         -23 (-20.91 % of base) : 86473.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
         -23 (-20.72 % of base) : 87314.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
         -23 (-20.72 % of base) : 86966.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
         -23 (-20.72 % of base) : 86525.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -23 (-20.72 % of base) : 87082.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
         -23 (-20.72 % of base) : 87070.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -22 (-20.18 % of base) : 261151.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
         -22 (-20.00 % of base) : 254970.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
         -22 (-20.00 % of base) : 253510.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
         -22 (-20.00 % of base) : 254530.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
         -22 (-20.00 % of base) : 255623.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -22 (-20.00 % of base) : 253127.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -22 (-20.00 % of base) : 255624.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -22 (-20.00 % of base) : 255626.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -22 (-20.00 % of base) : 89418.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -22 (-19.82 % of base) : 89117.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
         -22 (-19.47 % of base) : 254688.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object) (FullOpts)
         -22 (-19.30 % of base) : 256228.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object) (FullOpts)
         -22 (-19.13 % of base) : 253073.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)


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: 102009413 (overridden on cmd)
Total bytes of diff: 101995513 (overridden on cmd)
Total bytes of delta: -13900 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         268 : 304726.dasm (9.22 % of base)
         173 : 133856.dasm (2.75 % of base)
         173 : 299900.dasm (5.37 % of base)
         171 : 277120.dasm (1.62 % of base)
         164 : 305661.dasm (6.67 % of base)
         164 : 305792.dasm (6.72 % of base)
         164 : 305853.dasm (6.67 % of base)
         160 : 10347.dasm (2.10 % of base)
         139 : 21190.dasm (3.85 % of base)
         133 : 133780.dasm (6.01 % of base)
         130 : 177313.dasm (6.95 % of base)
         125 : 305302.dasm (5.78 % of base)
         124 : 224195.dasm (8.65 % of base)
         120 : 162314.dasm (11.93 % of base)
         119 : 134071.dasm (7.07 % of base)
         119 : 136866.dasm (8.46 % of base)
         117 : 133631.dasm (8.09 % of base)
         116 : 23996.dasm (5.96 % of base)
         115 : 272182.dasm (6.36 % of base)
         111 : 267928.dasm (6.64 % of base)

Top file improvements (bytes):
        -344 : 59928.dasm (-1.47 % of base)
        -272 : 56097.dasm (-11.50 % of base)
        -162 : 5750.dasm (-2.93 % of base)
        -140 : 172120.dasm (-11.69 % of base)
        -128 : 95573.dasm (-4.05 % of base)
        -128 : 99484.dasm (-4.05 % of base)
        -119 : 151622.dasm (-5.21 % of base)
        -116 : 149618.dasm (-5.73 % of base)
        -112 : 2990.dasm (-2.11 % of base)
        -109 : 7397.dasm (-2.43 % of base)
        -107 : 284213.dasm (-2.84 % of base)
        -106 : 52833.dasm (-2.40 % of base)
        -102 : 180825.dasm (-2.64 % of base)
        -101 : 171938.dasm (-8.56 % of base)
         -87 : 1983.dasm (-8.97 % of base)
         -85 : 22698.dasm (-7.71 % of base)
         -83 : 284303.dasm (-6.80 % of base)
         -82 : 185009.dasm (-2.54 % of base)
         -81 : 149923.dasm (-8.25 % of base)
         -79 : 207570.dasm (-3.37 % of base)

76 total files with Code Size differences (40 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
         268 (9.22 % of base) : 304726.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
         173 (5.37 % of base) : 299900.dasm - Microsoft.CodeAnalysis.SyntaxDiffer:GetSimilarity(byref,byref):int:this (FullOpts)
         173 (2.75 % of base) : 133856.dasm - System.IO.Pipelines.Tests.PipelineReaderWriterFacts+<ReaderShouldNotGetUnflushedBytesWithAppend>d__17:MoveNext():this (FullOpts)
         171 (1.62 % of base) : 277120.dasm - System.Text.RegularExpressions.Generator.RegexGenerator:MatchCharacterClass(System.String,System.String,ubyte,System.Collections.Generic.HashSet`1[System.String],System.Collections.Generic.Dictionary`2[System.String,System.String[]]):System.String (FullOpts)
         164 (6.72 % of base) : 305792.dasm - System.Threading.RateLimiting.Test.FixedWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
         164 (6.67 % of base) : 305661.dasm - System.Threading.RateLimiting.Test.SlidingWindowRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__8:MoveNext():this (FullOpts)
         164 (6.67 % of base) : 305853.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<DropsMultipleOldestWhenQueuingMoreThanLimit_NewestFirst>d__7:MoveNext():this (FullOpts)
         160 (2.10 % of base) : 10347.dasm - System.Text.RegularExpressions.RegexCompiler:EmitMatchCharacterClass(System.String):this (FullOpts)
         139 (3.85 % of base) : 21190.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         133 (6.01 % of base) : 133780.dasm - System.IO.Pipelines.Tests.PipePoolTests+<AdvanceToEndReturnsAllButOneBlockIfWritingBeforeAdvance>d__1:MoveNext():this (FullOpts)
         130 (6.95 % of base) : 177313.dasm - System.Xml.XmlEncodedRawTextWriter+<WriteXmlDeclarationAsync>d__95:MoveNext():this (FullOpts)
         125 (5.78 % of base) : 305302.dasm - System.Threading.RateLimiting.Test.TokenBucketRateLimiterTests+<ReplenishWorksWithTicksOverInt32Max>d__43:MoveNext():this (FullOpts)
         124 (8.65 % of base) : 224195.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
         120 (11.93 % of base) : 162314.dasm - System.Net.StreamFramer+<WriteMessageAsync>d__10`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         119 (7.07 % of base) : 134071.dasm - System.IO.Pipelines.Tests.StreamPipeReaderReadAtLeastAsyncTests+<ReadAtLeastAsyncSegmentSizeLessThanMaxBufferSize>d__7:MoveNext():this (FullOpts)
         119 (8.46 % of base) : 136866.dasm - System.IO.Tests.MemoryStreamTests+<DerivedMemoryStream_ReadWriteAsyncMemoryCalled_ReadWriteAsyncArrayUsed>d__8:MoveNext():this (FullOpts)
         117 (8.09 % of base) : 133631.dasm - System.IO.Pipelines.Tests.PipeWriterTests+<WriteLargeDataBinary>d__9:MoveNext():this (FullOpts)
         116 (5.96 % of base) : 23996.dasm - Microsoft.CodeAnalysis.FindSymbols.FindReferencesSearchEngine+<>c__DisplayClass20_0+<<ProcessDocumentAsync>g__ProcessDocumentAsync|0>d:MoveNext():this (FullOpts)
         115 (6.36 % of base) : 272182.dasm - System.Text.Json.JsonDocument+<ReadToEndAsync>d__78:MoveNext():this (FullOpts)
         111 (6.64 % of base) : 267928.dasm - System.Text.Json.Tests.Utf8JsonWriterTests:WriteStringInvalidCharacter(ushort,System.Text.Encodings.Web.JavaScriptEncoder):this (FullOpts)

Top method improvements (bytes):
        -344 (-1.47 % of base) : 59928.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
        -272 (-11.50 % of base) : 56097.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__expandParamsArray|232_2(byref,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref) (FullOpts)
        -162 (-2.93 % of base) : 5750.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
        -140 (-11.69 % of base) : 172120.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterTypeWithArrayPropertyHavingChoice:Write3_Item(System.String,System.String,SerializationTypes.TypeWithArrayPropertyHavingChoice,ubyte,ubyte):this (FullOpts)
        -128 (-4.05 % of base) : 95573.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -128 (-4.05 % of base) : 99484.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (FullOpts)
        -119 (-5.21 % of base) : 151622.dasm - System.Buffers.Binary.Tests.ReverseEndiannessUnitTests:ReverseEndianness_Span_AllElementsReversed[ushort](ushort[]):this (FullOpts)
        -116 (-5.73 % of base) : 149618.dasm - System.Buffers.Tests.ArrayBufferWriterTests_String:WriteData(System.Buffers.IBufferWriter`1[System.String],int):this (FullOpts)
        -112 (-2.11 % of base) : 2990.dasm - Microsoft.VisualStudio.Composition.CompositionConfiguration:Create(Microsoft.VisualStudio.Composition.ComposableCatalog):Microsoft.VisualStudio.Composition.CompositionConfiguration (FullOpts)
        -109 (-2.43 % of base) : 7397.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        -107 (-2.84 % of base) : 284213.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3472_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -106 (-2.40 % of base) : 52833.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
        -102 (-2.64 % of base) : 180825.dasm - System.Xml.XmlConvertTests.ToTypeTests:TestInvalid(System.String[],System.String,System.String[]):int:this (FullOpts)
        -101 (-8.56 % of base) : 171938.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1:Write2_wrapper(System.Object[]):this (FullOpts)
         -87 (-8.97 % of base) : 1983.dasm - System.Xml.XmlWellFormedWriter:AddAttribute(System.String,System.String,System.String):this (FullOpts)
         -85 (-7.71 % of base) : 22698.dasm - System.Formats.Asn1.AsnWriter:PopTag(System.Formats.Asn1.Asn1Tag,int,ubyte):this (FullOpts)
         -83 (-6.80 % of base) : 284303.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3511_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -82 (-2.54 % of base) : 185009.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (FullOpts)
         -81 (-8.25 % of base) : 149923.dasm - System.Buffers.Tests.ArrayBufferWriterTests_Char:WriteData(System.Buffers.IBufferWriter`1[ushort],int):this (FullOpts)
         -79 (-3.37 % of base) : 207570.dasm - System.Runtime.Serialization.SchemaExporter:ExportGenericInfo(System.Type,System.String,System.String):System.Xml.XmlElement:this (FullOpts)

Top method regressions (percentages):
          69 (13.22 % of base) : 122324.dasm - System.Formats.Tar.TarHelpers+<SkipBlockAlignmentPaddingAsync>d__29:MoveNext():this (FullOpts)
          70 (12.39 % of base) : 134376.dasm - System.IO.Pipelines.Tests.StreamPipeReaderTests+ThrowAfterZeroByteReadStream+<ReadAsync>d__4:MoveNext():this (FullOpts)
         120 (11.93 % of base) : 162314.dasm - System.Net.StreamFramer+<WriteMessageAsync>d__10`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          39 (9.54 % of base) : 155085.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)
          39 (9.54 % of base) : 156798.dasm - System.Net.Http.WinHttpResponseHeaderReader:ReadHeader(byref,byref):ubyte:this (FullOpts)
          58 (9.49 % of base) : 267257.dasm - System.Text.Json.Serialization.Tests.JsonSerializerWrapper+AsyncStreamSerializerWrapper+<DeserializeWrapper>d__16`1[System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[int]]]:MoveNext():this (FullOpts)
          16 (9.47 % of base) : 70885.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.ReadOnlySpan`1[int],System.AssertExtensions+AssertThrowsActionReadOnly`1[int]):System.__Canon (FullOpts)
          16 (9.47 % of base) : 70043.dasm - System.AssertExtensions:AssertThrows[System.__Canon,int](System.Span`1[int],System.AssertExtensions+AssertThrowsAction`1[int]):System.__Canon (FullOpts)
          23 (9.47 % of base) : 158666.dasm - System.Net.Mail.MailMessage:.ctor(System.String,System.String):this (FullOpts)
         268 (9.22 % of base) : 304726.dasm - System.Threading.Channels.Tests.ChannelTestBase+<ReadAllAsync_DualConcurrentEnumeration_AllItemsEnumerated>d__72:MoveNext():this (FullOpts)
          66 (9.22 % of base) : 99480.dasm - System.Data.ProviderBase.DbConnectionFactory:GetConnectionPoolGroup(System.Data.Common.DbConnectionPoolKey,System.Data.ProviderBase.DbConnectionPoolGroupOptions,byref):System.Data.ProviderBase.DbConnectionPoolGroup:this (FullOpts)
          77 (9.17 % of base) : 10899.dasm - Microsoft.CodeAnalysis.SolutionCompilationState+CompilationAndGeneratorDriverTranslationAction+AddDocumentsAction+<TransformCompilationAsync>d__2:MoveNext():this (FullOpts)
         124 (8.65 % of base) : 224195.dasm - System.Security.Cryptography.CryptoStream+<FlushFinalBlockAsync>d__30:MoveNext():this (FullOpts)
          80 (8.58 % of base) : 130990.dasm - System.IO.Tests.FileStream_Dispose+<<VerifyStrategyFinalization>g__EnsureFileStreamIsNotRooted|27_0>d:MoveNext():this (FullOpts)
         119 (8.46 % of base) : 136866.dasm - System.IO.Tests.MemoryStreamTests+<DerivedMemoryStream_ReadWriteAsyncMemoryCalled_ReadWriteAsyncArrayUsed>d__8:MoveNext():this (FullOpts)
          54 (8.37 % of base) : 13595.dasm - Microsoft.CodeAnalysis.Document+<GetAnalyzerConfigOptionsAsync>d__37:MoveNext():this (FullOpts)
          86 (8.21 % of base) : 314335.dasm - System.Xml.Linq.XContainer+<ReadContentFromAsync>d__43:MoveNext():this (FullOpts)
         117 (8.09 % of base) : 133631.dasm - System.IO.Pipelines.Tests.PipeWriterTests+<WriteLargeDataBinary>d__9:MoveNext():this (FullOpts)
          62 (8.00 % of base) : 304697.dasm - System.Threading.Channels.Tests.ChannelTestBase+<>c__DisplayClass26_0+<<ManyProducerConsumer_ConcurrentReadWrite_Success>b__0>d:MoveNext():this (FullOpts)
          54 (7.95 % of base) : 252749.dasm - System.Text.Json.SourceGeneration.Tests.AsyncStreamSerializerWrapper+<DeserializeWrapper>d__9:MoveNext():this (FullOpts)

Top method improvements (percentages):
         -40 (-21.74 % of base) : 106697.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,int,int,System.Object):System.Object (FullOpts)
         -22 (-20.18 % of base) : 26028.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
         -22 (-20.18 % of base) : 106500.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
         -22 (-20.18 % of base) : 109499.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
         -22 (-20.00 % of base) : 109494.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
         -22 (-20.00 % of base) : 108320.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):byte (FullOpts)
         -22 (-20.00 % of base) : 29333.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):int (FullOpts)
         -22 (-20.00 % of base) : 29058.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
         -22 (-20.00 % of base) : 109496.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):short (FullOpts)
         -22 (-20.00 % of base) : 108355.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -22 (-20.00 % of base) : 26197.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -22 (-20.00 % of base) : 107952.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -22 (-20.00 % of base) : 29194.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):uint (FullOpts)
         -22 (-20.00 % of base) : 29160.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -22 (-20.00 % of base) : 28287.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -23 (-19.83 % of base) : 106106.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ubyte (FullOpts)
         -22 (-19.82 % of base) : 27436.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):System.Object (FullOpts)
         -22 (-19.47 % of base) : 115740.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object) (FullOpts)
         -22 (-19.47 % of base) : 109491.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)
         -22 (-19.30 % of base) : 108393.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Object):ushort (FullOpts)


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: 11326284 (overridden on cmd)
Total bytes of diff: 11323289 (overridden on cmd)
Total bytes of delta: -2995 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         150 : 17176.dasm (4.10 % of base)
         142 : 5009.dasm (2.32 % of base)
          86 : 1620.dasm (4.38 % of base)
          74 : 5262.dasm (6.94 % of base)
          65 : 4739.dasm (1.60 % of base)
          52 : 21525.dasm (4.84 % of base)
          51 : 33388.dasm (11.83 % of base)
          51 : 13884.dasm (2.46 % of base)
          51 : 14577.dasm (1.74 % of base)
          50 : 20537.dasm (2.61 % of base)
          48 : 16978.dasm (1.33 % of base)
          46 : 33655.dasm (4.66 % of base)
          40 : 12227.dasm (1.69 % of base)
          40 : 17057.dasm (0.64 % of base)
          40 : 23302.dasm (1.37 % of base)
          39 : 24391.dasm (2.91 % of base)
          39 : 22190.dasm (6.45 % of base)
          39 : 25868.dasm (6.45 % of base)
          33 : 18354.dasm (0.47 % of base)
          33 : 20286.dasm (1.95 % of base)

Top file improvements (bytes):
        -363 : 8882.dasm (-3.80 % of base)
        -203 : 21001.dasm (-3.64 % of base)
        -135 : 15732.dasm (-1.86 % of base)
        -123 : 7163.dasm (-1.48 % of base)
        -109 : 22820.dasm (-2.45 % of base)
         -97 : 16265.dasm (-1.41 % of base)
         -83 : 6675.dasm (-7.17 % of base)
         -76 : 34093.dasm (-1.72 % of base)
         -76 : 15986.dasm (-3.25 % of base)
         -72 : 13546.dasm (-0.28 % of base)
         -68 : 23518.dasm (-5.03 % of base)
         -62 : 27344.dasm (-8.95 % of base)
         -54 : 2934.dasm (-0.67 % of base)
         -53 : 21583.dasm (-1.12 % of base)
         -47 : 25549.dasm (-1.75 % of base)
         -47 : 35261.dasm (-3.76 % of base)
         -43 : 14166.dasm (-11.11 % of base)
         -42 : 31796.dasm (-0.44 % of base)
         -41 : 28097.dasm (-1.72 % of base)
         -41 : 26048.dasm (-2.74 % of base)

71 total files with Code Size differences (38 improved, 33 regressed), 20 unchanged.

Top method regressions (bytes):
         150 (4.10 % of base) : 17176.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
         142 (2.32 % of base) : 5009.dasm - FSharp.Compiler.LexFilter:scanAhead@1017(FSharp.Compiler.LexFilter+LexFilterImpl,ubyte,Internal.Utilities.Text.Lexing.Position,Microsoft.FSharp.Core.FSharpRef`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.LexFilter+TokenTup,ubyte]]],int):ubyte (FullOpts)
          86 (4.38 % of base) : 1620.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          74 (6.94 % of base) : 5262.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
          65 (1.60 % of base) : 4739.dasm - FSharp.Compiler.CompilerOptions:attempt@284(Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.Unit],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOptionBlock],Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Collections.FSharpList`1[System.String],System.String,System.String,System.String,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerOptions+CompilerOption]):Microsoft.FSharp.Collections.FSharpList`1[System.String] (FullOpts)
          52 (4.84 % of base) : 21525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAttributeData:<GetTargetAttributeSignatureIndex>g__matches|28_0(ubyte[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref):ubyte:this (FullOpts)
          51 (1.74 % of base) : 14577.dasm - SixLabors.ImageSharp.Formats.Gif.LzwEncoder:Compress(SixLabors.ImageSharp.Memory.Buffer2D`1[ubyte],int,System.IO.Stream):this (FullOpts)
          51 (11.83 % of base) : 33388.dasm - System.Management.Automation.Provider.NavigationCmdletProvider:MakePath(System.String,System.String,ubyte):System.String:this (FullOpts)
          51 (2.46 % of base) : 13884.dasm - System.Reflection.Metadata.MetadataReader:InitializeStreamReaders(byref,System.Reflection.Metadata.Ecma335.StreamHeader[],byref,byref,byref):this (FullOpts)
          50 (2.61 % of base) : 20537.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:CheckMembers(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol,System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol]],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag) (FullOpts)
          48 (1.33 % of base) : 16978.dasm - System.Net.Http.RedirectHandler+<SendAsync>d__4:MoveNext():this (FullOpts)
          46 (4.66 % of base) : 33655.dasm - System.Management.Automation.Language.VariableAnalysis:AnalyzeImpl(System.Management.Automation.Language.IParameterMetadataProvider,ubyte,ubyte):System.Tuple`2[System.Type,System.Collections.Generic.Dictionary`2[System.String,int]]:this (FullOpts)
          40 (1.37 % of base) : 23302.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceOrdinaryMethodSymbol+SourceOrdinaryMethodSymbolComplex:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.Syntax.MethodDeclarationSyntax,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
          40 (0.64 % of base) : 17057.dasm - System.Net.Http.HttpConnectionPool+<SendWithVersionDetectionAndRetryAsync>d__89:MoveNext():this (FullOpts)
          40 (1.69 % of base) : 12227.dasm - System.Text.UnicodeEncoding:GetChars(uint,int,uint,int,System.Text.DecoderNLS):int:this (FullOpts)
          39 (2.91 % of base) : 24391.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol:GetCustomAttributesForToken(System.Reflection.Metadata.EntityHandle,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription,byref,Microsoft.CodeAnalysis.AttributeDescription):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData]:this (FullOpts)
          39 (6.45 % of base) : 22190.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          39 (6.45 % of base) : 25868.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          33 (1.95 % of base) : 20286.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ResolveReferencedAssembly(Microsoft.CodeAnalysis.AssemblyIdentity,System.Collections.Immutable.ImmutableArray`1[System.__Canon],int,Microsoft.CodeAnalysis.AssemblyIdentityComparer):Microsoft.CodeAnalysis.CommonReferenceManager`2+AssemblyReferenceBinding[System.__Canon,System.__Canon] (FullOpts)
          33 (0.47 % of base) : 18354.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetKeywordKind(System.String):ushort (FullOpts)

Top method improvements (bytes):
        -363 (-3.80 % of base) : 8882.dasm - FSharp.Compiler.ConstraintSolver:SolveTypeSubsumesType(FSharp.Compiler.ConstraintSolver+ConstraintSolverEnv,int,FSharp.Compiler.Text.Range,FSharp.Compiler.ConstraintSolver+OptionalTrace,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+TraitConstraintInfo,FSharp.Compiler.TypedTree+TraitConstraintSln]],FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.ErrorLogger+OperationResult`1[Microsoft.FSharp.Core.Unit] (FullOpts)
        -203 (-3.64 % of base) : 21001.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol:LookupMetadataType(byref):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
        -135 (-1.86 % of base) : 15732.dasm - Microsoft.ML.Trainers.SdcaTrainerBase`3[System.__Canon,System.__Canon,System.__Canon]:TrainCore(Microsoft.ML.Runtime.IChannel,Microsoft.ML.Data.RoleMappedData,Microsoft.ML.Trainers.LinearModelParameters,int):System.__Canon:this (FullOpts)
        -123 (-1.48 % of base) : 7163.dasm - FSharp.Compiler.Lexer:singleQuoteString(FSharp.Compiler.IO.ByteBuffer,FSharp.Compiler.Lexhelp+LexerStringFinisher,FSharp.Compiler.Text.Range,FSharp.Compiler.ParseHelpers+LexerStringKind,FSharp.Compiler.Lexhelp+LexArgs,ubyte,Internal.Utilities.Text.Lexing.LexBuffer`1[ushort]):FSharp.Compiler.Parser+token (FullOpts)
        -109 (-2.45 % of base) : 22820.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
         -97 (-1.41 % of base) : 16265.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
         -83 (-7.17 % of base) : 6675.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -76 (-3.25 % of base) : 15986.dasm - Microsoft.ML.Data.SchemaDefinition:Create(System.Type,int):Microsoft.ML.Data.SchemaDefinition (FullOpts)
         -76 (-1.72 % 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)
         -72 (-0.28 % of base) : 13546.dasm - FSharp.Compiler.CompilerDiagnostics:OutputExceptionR@597(System.Text.StringBuilder,ubyte,System.Text.StringBuilder,System.Exception) (FullOpts)
         -68 (-5.03 % of base) : 23518.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:GetAssociatedField(Roslyn.Utilities.MultiDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:this (FullOpts)
         -62 (-8.95 % of base) : 27344.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
         -54 (-0.67 % of base) : 2934.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
         -53 (-1.12 % of base) : 21583.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|231_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
         -47 (-1.75 % of base) : 25549.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MethodIsCompatibleWithDelegateOrFunctionPointer(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
         -47 (-3.76 % of base) : 35261.dasm - Microsoft.PowerShell.Commands.ModuleCmdletBase:ValidateManifestHash(System.Collections.Hashtable,System.String[],System.String,int):ubyte:this (FullOpts)
         -43 (-11.11 % of base) : 14166.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:Create[SixLabors.ImageSharp.PixelFormats.Rgba32](System.Buffers.IMemoryOwner`1[SixLabors.ImageSharp.PixelFormats.Rgba32][]):SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)
         -42 (-0.44 % of base) : 31796.dasm - System.Text.RegularExpressions.RegexInterpreter:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -41 (-2.74 % of base) : 26048.dasm - Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder:ComputeBoundDecisionDagNodes(Microsoft.CodeAnalysis.CSharp.DecisionDagBuilder+DecisionDag,Microsoft.CodeAnalysis.CSharp.BoundLeafDecisionDagNode):this (FullOpts)
         -41 (-1.72 % of base) : 28097.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:DefaultVisit(Microsoft.CodeAnalysis.CSharp.Symbol):this (FullOpts)

Top method regressions (percentages):
          51 (11.83 % of base) : 33388.dasm - System.Management.Automation.Provider.NavigationCmdletProvider:MakePath(System.String,System.String,ubyte):System.String:this (FullOpts)
          24 (9.96 % of base) : 9819.dasm - FSharp.Compiler.CheckDeclarations:action@1-62(FSharp.Compiler.CheckExpressions+NewSlotsOK,FSharp.Compiler.Syntax.SynMemberDefn) (FullOpts)
          20 (9.22 % of base) : 1662.dasm - System.Xml.NameTable:Add(System.String):System.String:this (FullOpts)
          24 (7.43 % of base) : 4905.dasm - System.String:TrimWhiteSpaceHelper(int):System.String:this (FullOpts)
          74 (6.94 % of base) : 5262.dasm - FSharp.Compiler.LexFilter:|TyparsCloseOp|_|$cont@519(Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Collections.FSharpList`1[ushort],Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpFunc`2[ubyte,FSharp.Compiler.Parser+token][],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Parser+token]]] (FullOpts)
          39 (6.45 % of base) : 22190.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,int](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,int,ubyte],int):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          39 (6.45 % of base) : 25868.dasm - Microsoft.CodeAnalysis.ImmutableArrayExtensions:WhereAsArrayImpl[System.__Canon,System.__Canon](System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Func`2[System.__Canon,ubyte],System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon):System.Collections.Immutable.ImmutableArray`1[System.__Canon] (FullOpts)
          12 (5.61 % of base) : 34305.dasm - System.Reflection.Emit.RuntimeILGenerator:SortExceptions(System.Reflection.Emit.__ExceptionInfo[]) (FullOpts)
           4 (5.13 % of base) : 19722.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.DirectiveStack:PreviousBranchTaken():ubyte:this (FullOpts)
          52 (4.84 % of base) : 21525.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceAttributeData:<GetTargetAttributeSignatureIndex>g__matches|28_0(ubyte[],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,byref):ubyte:this (FullOpts)
          13 (4.76 % of base) : 29589.dasm - Microsoft.CodeAnalysis.CSharp.IteratorAndAsyncCaptureWalker:MarkLocalsUnassigned():this (FullOpts)
          26 (4.67 % of base) : 35799.dasm - System.Management.Automation.AnalysisCacheData+<<QueueSerialization>b__11_0>d:MoveNext():this (FullOpts)
          46 (4.66 % of base) : 33655.dasm - System.Management.Automation.Language.VariableAnalysis:AnalyzeImpl(System.Management.Automation.Language.IParameterMetadataProvider,ubyte,ubyte):System.Tuple`2[System.Type,System.Collections.Generic.Dictionary`2[System.String,int]]:this (FullOpts)
          31 (4.61 % of base) : 30441.dasm - Microsoft.CodeAnalysis.CSharp.Emit.PEAssemblyBuilderBase:<GetFiles>g__getFiles|20_0(byref,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.Cci.IFileReference]:this (FullOpts)
          86 (4.38 % of base) : 1620.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (FullOpts)
          18 (4.27 % of base) : 20257.dasm - Microsoft.CodeAnalysis.PEAssembly:.ctor(Microsoft.CodeAnalysis.AssemblyMetadata,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule]):this (FullOpts)
         150 (4.10 % of base) : 17176.dasm - System.Net.Security.SslStream+<ForceAuthenticationAsync>d__158`1[System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this (FullOpts)
          20 (4.10 % of base) : 16568.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
          10 (3.95 % of base) : 22562.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceTypeParameterSymbolBase:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
           8 (3.86 % of base) : 17587.dasm - Microsoft.ML.Data.SimpleFileHandle:.ctor(Microsoft.ML.Runtime.IExceptionContext,System.String,ubyte,ubyte):this (FullOpts)

Top method improvements (percentages):
         -43 (-11.11 % of base) : 14166.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:Create[SixLabors.ImageSharp.PixelFormats.Rgba32](System.Buffers.IMemoryOwner`1[SixLabors.ImageSharp.PixelFormats.Rgba32][]):SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)
         -62 (-8.95 % of base) : 27344.dasm - System.Collections.Immutable.ImmutableList`1+Enumerator[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]:.ctor(System.Collections.Immutable.ImmutableList`1+Node[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableList`1+Builder[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],int,int,ubyte):this (FullOpts)
         -16 (-7.96 % of base) : 13.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(uint,System.Object):System.Object (FullOpts)
         -27 (-7.94 % of base) : 14904.dasm - SixLabors.ImageSharp.Processing.Processors.Transforms.AffineTransformProcessor:.ctor(System.Numerics.Matrix3x2,SixLabors.ImageSharp.Processing.Processors.Transforms.IResampler,SixLabors.ImageSharp.Size):this (FullOpts)
         -38 (-7.35 % of base) : 6619.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
         -29 (-7.18 % of base) : 32009.dasm - System.Management.Automation.AutomationEngine:.ctor(System.Management.Automation.Host.PSHost,System.Management.Automation.Runspaces.InitialSessionState):this (FullOpts)
         -83 (-7.17 % of base) : 6675.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
         -37 (-6.04 % of base) : 19332.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:ScanUnicodeEscape(ubyte,byref,byref):ushort:this (FullOpts)
         -39 (-5.72 % of base) : 43.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(uint,int,byref,byref):uint (FullOpts)
          -6 (-5.45 % of base) : 13754.dasm - ILLinkBenchmarks.Utilities:GenerateTempFolder():System.String (FullOpts)
         -19 (-5.38 % of base) : 23606.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceEnumConstantSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
         -18 (-5.26 % of base) : 29971.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:<TryCalculateSyntaxOffsetOfPositionInInitializer>g__findInitializer|106_0(System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.FieldOrPropertyInitializer]],int,Microsoft.CodeAnalysis.SyntaxTree,byref,byref):ubyte (FullOpts)
         -68 (-5.03 % of base) : 23518.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEEventSymbol:GetAssociatedField(Roslyn.Utilities.MultiDictionary`2[System.String,Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol],ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEFieldSymbol:this (FullOpts)
         -17 (-5.03 % of base) : 6772.dasm - Microsoft.FSharp.Collections.ArrayModule:Collect[System.__Canon,System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],System.__Canon[]):System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][] (FullOpts)
         -18 (-5.03 % of base) : 6763.dasm - FSharp.Compiler.NameResolution:AddTyconsByDemangledNameAndArity(FSharp.Compiler.NameResolution+BulkAdd,FSharp.Compiler.TypedTree+EntityRef[],Microsoft.FSharp.Collections.FSharpMap`2[FSharp.Compiler.Syntax.PrettyNaming+NameArityPair,FSharp.Compiler.TypedTree+EntityRef]):Microsoft.FSharp.Collections.FSharpMap`2[FSharp.Compiler.Syntax.PrettyNaming+NameArityPair,FSharp.Compiler.TypedTree+EntityRef] (FullOpts)
          -7 (-4.86 % of base) : 32879.dasm - System.Management.Automation.PSCodeProperty:.ctor(System.String,System.Reflection.MethodInfo,System.Reflection.MethodInfo):this (FullOpts)
         -19 (-4.79 % of base) : 23864.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsAccessibleViaInheritance(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,byref):ubyte (FullOpts)
         -24 (-4.75 % of base) : 29258.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap:WithConcatAlphaRename(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol):Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap:this (FullOpts)
         -18 (-4.31 % of base) : 17172.dasm - System.Net.Security.SslAuthenticationOptions:UpdateOptions(System.Net.Security.SslClientAuthenticationOptions):this (FullOpts)
          -3 (-4.29 % of base) : 32406.dasm - System.Management.Automation.DisplayEntry:.ctor(System.String,int):this (FullOpts)