Skip to content

Instantly share code, notes, and snippets.

@AndyAyersMS
Created June 24, 2024 18:49
Show Gist options
  • Save AndyAyersMS/83a517f7224f8d852c590a9c98981cd3 to your computer and use it in GitHub Desktop.
Save AndyAyersMS/83a517f7224f8d852c590a9c98981cd3 to your computer and use it in GitHub Desktop.
Stack Allocation Diffs

Diffs are based on 2,219,596 contexts (807,447 MinOpts, 1,412,149 FullOpts).

MISSED contexts: base: 4,468 (0.20%), diff: 589 (0.03%)

Base JIT options: JitObjectStackAllocation=0

Overall (-18,212 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs
aspnet.run.windows.x64.checked.mch 65,934,970 -145 -0.08%
benchmarks.run.windows.x64.checked.mch 8,749,298 -208 -2.16%
libraries.pmi.windows.x64.checked.mch 63,723,297 -4,302 -4.88%
libraries_tests.run.windows.x64.Release.mch 349,428,109 -690 -4.33%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 154,364,655 -11,824 -3.70%
realworld.run.windows.x64.checked.mch 13,613,198 -1,043 +0.33%
FullOpts (-18,212 bytes)
Collection Base size (bytes) Diff size (bytes) PerfScore in Diffs
aspnet.run.windows.x64.checked.mch 36,349,908 -145 -0.08%
benchmarks.run.windows.x64.checked.mch 8,748,876 -208 -2.16%
libraries.pmi.windows.x64.checked.mch 63,610,336 -4,302 -4.88%
libraries_tests.run.windows.x64.Release.mch 136,392,846 -690 -4.33%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 143,495,391 -11,824 -3.70%
realworld.run.windows.x64.checked.mch 13,200,230 -1,043 +0.33%
Example diffs
aspnet.run.windows.x64.checked.mch
-25 (-4.89%) : 60921.dasm - System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
@@ -13,43 +13,47 @@
 ;  V02 loc1         [V02,T01] (  9,  8   )     int  ->  [rbp-0x24]  do-not-enreg[M] EH-live
 ;* V03 loc2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V05 tmp1         [V05,T04] (  3,  6   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <System.Management.ManagementObjectCollection+ManagementObjectEnumerator>
-;  V06 tmp2         [V06,T09] (  2,  4   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <System.Management.IEnumWbemClassObject>
-;  V07 tmp3         [V07,T05] (  3,  6   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <System.Management.ManagementObjectCollection+ManagementObjectEnumerator>
-;  V08 tmp4         [V08,T10] (  2,  4   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <System.Management.IEnumWbemClassObject>
+;  V05 tmp1         [V05,T03] (  3,  6   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <System.Management.ManagementObjectCollection+ManagementObjectEnumerator>
+;  V06 tmp2         [V06,T08] (  2,  4   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <System.Management.IEnumWbemClassObject>
+;  V07 tmp3         [V07,T04] (  3,  6   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <System.Management.ManagementObjectCollection+ManagementObjectEnumerator>
+;  V08 tmp4         [V08,T09] (  2,  4   )     ref  ->  rbx         class-hnd single-def "finalizable newobj spill" <System.Management.IEnumWbemClassObject>
 ;  V09 tmp5         [V09,T18] (  2,  0   )     ref  ->  rcx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
 ;  V10 tmp6         [V10,T17] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V11 tmp7         [V11,T14] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V12 tmp8         [V12,T11] (  2,  4   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <System.Management.EnumerationOptions>
-;  V13 tmp9         [V13,T06] (  3,  6   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Management.ManagementScope>
-;  V14 tmp10        [V14,T12] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Management.IEnumWbemClassObject>
+;  V12 tmp8         [V12,T10] (  2,  4   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <System.Management.EnumerationOptions>
+;  V13 tmp9         [V13,T05] (  3,  6   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Management.ManagementScope>
+;  V14 tmp10        [V14,T11] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Management.IEnumWbemClassObject>
 ;  V15 tmp11        [V15,T02] (  4,  8   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <System.Management.SecuredIEnumWbemClassObjectHandler>
-;  V16 tmp12        [V16,T07] (  3,  6   )     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Management.ManagementScope>
-;  V17 tmp13        [V17,T13] (  2,  4   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Management.IEnumWbemClassObject>
-;  V18 tmp14        [V18,T03] (  4,  8   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <System.Management.SecuredIEnumWbemClassObjectHandler>
+;  V16 tmp12        [V16,T06] (  3,  6   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <System.Management.ManagementScope>
+;  V17 tmp13        [V17,T12] (  2,  4   )     ref  ->  r11         class-hnd single-def "Inlining Arg" <System.Management.IEnumWbemClassObject>
+;* V18 tmp14        [V18    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Management.SecuredIEnumWbemClassObjectHandler>
 ;* V19 tmp15        [V19    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
 ;  V20 tmp16        [V20,T15] (  2,  2   )    long  ->  rax         "Inlining Arg"
-;  V21 tmp17        [V21,T19] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V22 PSPSym       [V22,T16] (  1,  1   )    long  ->  [rbp-0x30]  do-not-enreg[V] "PSPSym"
-;  V23 rat0         [V23,T08] (  3,  6   )     ref  ->  rax         "delegate invoke call"
+;  V21 tmp17        [V21,T13] (  3,  3   )  struct (24) [rbp-0x40]  do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Management.SecuredIEnumWbemClassObjectHandler>
+;* V22 tmp18        [V22    ] (  0,  0   )    long  ->  zero-ref    single-def "V21.[000..008)"
+;  V23 tmp19        [V23,T19] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V24 PSPSym       [V24,T16] (  1,  1   )    long  ->  [rbp-0x50]  do-not-enreg[V] "PSPSym"
+;  V25 rat0         [V25,T07] (  3,  6   )     ref  ->  rax         "delegate invoke call"
 ;
-; Lcl frame size = 56
+; Lcl frame size = 88
 
 G_M64124_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rbp
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 56
-       lea      rbp, [rsp+0x50]
+       sub      rsp, 88
+       lea      rbp, [rsp+0x70]
+       vxorps   xmm4, xmm4, xmm4
+       vmovdqu  ymmword ptr [rbp-0x40], ymm4
        xor      eax, eax
        mov      qword ptr [rbp-0x20], rax
-       mov      qword ptr [rbp-0x30], rsp
+       mov      qword ptr [rbp-0x50], rsp
        mov      gword ptr [rbp+0x10], rcx
        ; GC ptr vars +{V00}
        mov      rdx, rcx
        ; gcrRegs +[rdx]
-						;; size=30 bbWeight=1 PerfScore 8.25
+						;; size=39 bbWeight=1 PerfScore 10.58
 G_M64124_IG02:        ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
        cmp      byte  ptr [rdx+0x20], 0
        jne      G_M64124_IG12
@@ -88,7 +92,7 @@ G_M64124_IG04:        ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
        ; gcrRegs +[rax]
 						;; size=41 bbWeight=1 PerfScore 8.25
 G_M64124_IG05:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 56
+       add      rsp, 88
        pop      rbx
        pop      rsi
        pop      rdi
@@ -134,39 +138,21 @@ G_M64124_IG06:        ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=000
        jne      SHORT G_M64124_IG07
        mov      rdx, gword ptr [rbp+0x10]
        ; gcrRegs +[rdx]
-       mov      rbx, gword ptr [rdx+0x08]
-       ; gcrRegs +[rbx]
-       mov      rsi, gword ptr [rbp-0x20]
-       ; gcrRegs +[rsi]
-       cmp      byte  ptr [rbx], bl
-       mov      rcx, 0xD1FFAB1E      ; System.Management.SecuredIEnumWbemClassObjectHandler
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs -[rdx] +[rax]
-       ; gcr arg pop 0
-       mov      rdi, rax
-       ; gcrRegs +[rdi]
-       lea      rcx, bword ptr [rdi+0x10]
-       ; byrRegs +[rcx]
-       mov      rdx, rbx
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx rbx]
-       ; byrRegs -[rcx]
-       lea      rcx, bword ptr [rdi+0x08]
-       ; byrRegs +[rcx]
-       mov      rdx, rsi
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx rsi]
-       ; byrRegs -[rcx]
-       mov      rcx, gword ptr [rdi+0x08]
+       mov      rcx, gword ptr [rdx+0x08]
        ; gcrRegs +[rcx]
+       mov      r11, gword ptr [rbp-0x20]
+       ; gcrRegs +[r11]
+       cmp      byte  ptr [rcx], cl
+       mov      gword ptr [rbp-0x30], rcx
+       mov      gword ptr [rbp-0x38], r11
+       mov      rcx, gword ptr [rbp-0x38]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
+       ; gcrRegs -[r11]
        call     [r11]<unknown method>
-       ; gcrRegs -[rcx rdi]
+       ; gcrRegs -[rcx rdx]
        ; gcr arg pop 0
        mov      dword ptr [rbp-0x24], eax
-						;; size=153 bbWeight=1 PerfScore 38.00
+						;; size=119 bbWeight=1 PerfScore 34.00
 G_M64124_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
        movsxd   rcx, dword ptr [rbp-0x24]
        mov      eax, 0xD1FFAB1E
@@ -201,7 +187,7 @@ G_M64124_IG08:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs +[rax]
 						;; size=41 bbWeight=1 PerfScore 7.25
 G_M64124_IG09:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 56
+       add      rsp, 88
        pop      rbx
        pop      rsi
        pop      rdi
@@ -274,7 +260,7 @@ G_M64124_IG13:        ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=000
        sub      rsp, 40
        mov      rbp, qword ptr [rcx+0x20]
        mov      qword ptr [rsp+0x20], rbp
-       lea      rbp, [rbp+0x50]
+       lea      rbp, [rbp+0x70]
 						;; size=21 bbWeight=0 PerfScore 0.00
 G_M64124_IG14:        ; bbWeight=0, gcVars=0000000000000001 {V00}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
        mov      rcx, rdx
@@ -293,7 +279,7 @@ G_M64124_IG15:        ; bbWeight=0, funclet epilog, nogc, extend
        ret      
 						;; size=9 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 511, prolog size 30, PerfScore 104.75, instruction count 136, allocated bytes for code 511 (MethodHash=73e10583) for method System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
+; Total bytes of code 486, prolog size 39, PerfScore 103.08, instruction count 131, allocated bytes for code 486 (MethodHash=73e10583) for method System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -306,7 +292,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 6 * 8 + 8 = 56 = 0x38
+    CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 10 * 8 + 8 = 88 = 0x58
     CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
-16 (-1.19%) : 58694.dasm - Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor:VisitMethodCall(System.Linq.Expressions.MethodCallExpression):System.Linq.Expressions.Expression:this (FullOpts)
@@ -10,27 +10,27 @@
 ;
 ;  V00 this         [V00,T00] ( 18,  8   )     ref  ->  rbx         this class-hnd single-def <Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor>
 ;  V01 arg1         [V01,T01] ( 12,  6.50)     ref  ->  rsi         class-hnd single-def <System.Linq.Expressions.MethodCallExpression>
-;  V02 loc0         [V02,T03] (  8,  5.50)     ref  ->  rdi         class-hnd single-def <System.Reflection.MethodInfo>
+;  V02 loc0         [V02,T02] (  8,  5.50)     ref  ->  rdi         class-hnd single-def <System.Reflection.MethodInfo>
 ;  V03 loc1         [V03,T39] (  3,  1.50)     ref  ->  r14         class-hnd single-def <System.Linq.Expressions.Expression>
-;  V04 loc2         [V04,T23] (  4,  2   )     ref  ->  rdi         class-hnd single-def <<unknown class>>
+;  V04 loc2         [V04,T22] (  4,  2   )     ref  ->  rdi         class-hnd single-def <<unknown class>>
 ;  V05 loc3         [V05,T40] (  3,  1.50)     ref  ->  rsi         class-hnd single-def <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SqlExpression>
 ;  V06 loc4         [V06,T42] (  2,  1   )     ref  ->  rdi         class-hnd exact <<unknown class>>
-;  V07 loc5         [V07,T24] (  4,  2   )     ref  ->  r13         class-hnd single-def <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
+;  V07 loc5         [V07,T23] (  4,  2   )     ref  ->  r13         class-hnd single-def <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
 ;* V08 loc6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Reflection.MethodInfo>
-;  V09 loc7         [V09,T10] (  8,  3.50)     ref  ->  rax         class-hnd exact single-def <System.String>
+;  V09 loc7         [V09,T09] (  8,  3.50)     ref  ->  rax         class-hnd exact single-def <System.String>
 ;* V10 loc8         [V10    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
-;  V11 loc9         [V11,T46] (  2,  1   )     ref  ->  rbx         class-hnd exact single-def <System.Linq.Expressions.UnaryExpression>
+;  V11 loc9         [V11,T46] (  2,  1   )     ref  ->  rax         class-hnd exact single-def <System.Linq.Expressions.UnaryExpression>
 ;  V12 OutArgs      [V12    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V13 tmp1         [V13,T07] (  5,  4.01)     ref  ->  rax         class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
+;  V13 tmp1         [V13,T06] (  5,  4.01)     ref  ->  rax         class-hnd single-def "impAppendStmt" <System.Reflection.MethodInfo>
 ;* V14 tmp2         [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "non-inline candidate call" <Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor>
-;  V15 tmp3         [V15,T11] (  4,  3.50)     ref  ->  rdi         single-def "ISINST eval op1"
+;  V15 tmp3         [V15,T10] (  4,  3.50)     ref  ->  rdi         single-def "ISINST eval op1"
 ;* V16 tmp4         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling qmarkNull" <<unknown class>>
-;  V17 tmp5         [V17,T09] (  4,  4   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
-;  V18 tmp6         [V18,T15] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionMember>
-;  V19 tmp7         [V19,T04] (  5,  5   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionBindingExpression>
-;  V20 tmp8         [V20,T02] (  6,  6   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
-;  V21 tmp9         [V21,T06] ( 10,  4.01)     ref  ->  r12        
-;  V22 tmp10        [V22,T16] (  3,  3   )     ref  ->  rax         class-hnd single-def "dup spill" <<unknown class>>
+;  V17 tmp5         [V17,T08] (  4,  4   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression>
+;  V18 tmp6         [V18,T14] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionMember>
+;  V19 tmp7         [V19,T03] (  5,  5   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ProjectionBindingExpression>
+;* V20 tmp8         [V20    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
+;  V21 tmp9         [V21,T05] ( 10,  4.01)     ref  ->  r12        
+;  V22 tmp10        [V22,T15] (  3,  3   )     ref  ->  rax         class-hnd single-def "dup spill" <<unknown class>>
 ;* V23 tmp11        [V23    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;  V24 tmp12        [V24,T52] (  2,  0   )     ref  ->  rsi         class-hnd exact single-def "non-inline candidate call" <System.String>
 ;  V25 tmp13        [V25,T50] (  3,  0   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -40,48 +40,51 @@
 ;  V29 tmp17        [V29,T51] (  3,  0   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V30 tmp18        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
 ;* V31 tmp19        [V31    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
-;  V32 tmp20        [V32,T13] (  2,  2   )     int  ->  rcx         "spilling unroll qmark"
+;  V32 tmp20        [V32,T12] (  2,  2   )     int  ->  rcx         "spilling unroll qmark"
 ;* V33 tmp21        [V33    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
-;  V34 tmp22        [V34,T14] (  2,  2   )     int  ->  rcx         "spilling unroll qmark"
+;  V34 tmp22        [V34,T13] (  2,  2   )     int  ->  rcx         "spilling unroll qmark"
 ;  V35 tmp23        [V35,T43] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V36 tmp24        [V36,T17] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
+;  V36 tmp24        [V36,T16] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;  V37 tmp25        [V37,T44] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V38 tmp26        [V38,T18] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
+;  V38 tmp26        [V38,T17] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;* V39 tmp27        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
 ;  V40 tmp28        [V40,T45] (  2,  1   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V41 tmp29        [V41,T19] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
+;  V41 tmp29        [V41,T18] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
 ;* V42 tmp30        [V42    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
 ;* V43 tmp31        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.Expression]>
-;  V44 tmp32        [V44,T20] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V44 tmp32        [V44,T19] (  3,  3   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;  V45 tmp33        [V45,T26] (  2,  2   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Linq.Expressions.Expression>
-;  V46 tmp34        [V46,T05] (  5,  5   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
-;  V47 tmp35        [V47,T27] (  2,  2   )     ref  ->  rsi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
-;* V48 tmp36        [V48,T58] (  0,  0   )   ubyte  ->  zero-ref    "field V10.hasValue (fldOffset=0x0)" P-INDEP
-;* V49 tmp37        [V49,T59] (  0,  0   )     int  ->  zero-ref    "field V10.value (fldOffset=0x4)" P-INDEP
-;  V50 tmp38        [V50,T28] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;  V51 tmp39        [V51,T29] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V52 tmp40        [V52,T30] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V53 tmp41        [V53,T49] (  6,  0   )  struct ( 8) [rsp+0x20]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-;  V54 tmp42        [V54,T54] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V55 tmp43        [V55,T55] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V56 tmp44        [V56,T31] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;  V57 tmp45        [V57,T32] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V58 tmp46        [V58,T33] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;  V59 tmp47        [V59,T34] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V60 tmp48        [V60,T35] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V61 tmp49        [V61,T21] (  3,  3   )     ref  ->  rbp         single-def "argument with side effect"
-;  V62 tmp50        [V62,T36] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V63 tmp51        [V63,T37] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;  V64 tmp52        [V64,T38] (  2,  2   )     ref  ->   r8         single-def "argument with side effect"
-;  V65 tmp53        [V65,T56] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V66 tmp54        [V66,T57] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V67 cse0         [V67,T12] (  6,  3   )    long  ->  r15         multi-def "CSE #11: moderate"
-;  V68 cse1         [V68,T22] (  3,  2.50)    long  ->  r14         "CSE #02: moderate"
-;  V69 cse2         [V69,T08] (  6,  4   )    long  ->  rbp         "CSE #01: aggressive"
-;  V70 rat0         [V70,T47] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V71 rat1         [V71,T48] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V46 tmp34        [V46,T04] (  5,  5   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
+;  V47 tmp35        [V47,T27] (  2,  2   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
+;  V48 tmp36        [V48,T24] (  4,  2   )  struct (32) [rsp+0x28]  do-not-enreg[SF] must-init "stack allocated ref class temp" <Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression>
+;* V49 tmp37        [V49,T58] (  0,  0   )   ubyte  ->  zero-ref    "field V10.hasValue (fldOffset=0x0)" P-INDEP
+;* V50 tmp38        [V50,T59] (  0,  0   )     int  ->  zero-ref    "field V10.value (fldOffset=0x4)" P-INDEP
+;* V51 tmp39        [V51    ] (  0,  0   )    long  ->  zero-ref    single-def "V48.[000..008)"
+;* V52 tmp40        [V52    ] (  0,  0   )     int  ->  zero-ref    single-def "V48.[024..028)"
+;  V53 tmp41        [V53,T28] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
+;  V54 tmp42        [V54,T29] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V55 tmp43        [V55,T30] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V56 tmp44        [V56,T49] (  6,  0   )  struct ( 8) [rsp+0x20]  do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
+;  V57 tmp45        [V57,T54] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V58 tmp46        [V58,T55] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V59 tmp47        [V59,T31] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
+;  V60 tmp48        [V60,T32] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V61 tmp49        [V61,T33] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
+;  V62 tmp50        [V62,T34] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V63 tmp51        [V63,T35] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V64 tmp52        [V64,T20] (  3,  3   )     ref  ->  rbp         single-def "argument with side effect"
+;  V65 tmp53        [V65,T36] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V66 tmp54        [V66,T37] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
+;  V67 tmp55        [V67,T38] (  2,  2   )     ref  ->   r8         single-def "argument with side effect"
+;  V68 tmp56        [V68,T56] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V69 tmp57        [V69,T57] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V70 cse0         [V70,T11] (  6,  3   )    long  ->  r15         multi-def "CSE #11: moderate"
+;  V71 cse1         [V71,T21] (  3,  2.50)    long  ->  r14         "CSE #02: moderate"
+;  V72 cse2         [V72,T07] (  6,  4   )    long  ->  rbp         "CSE #01: aggressive"
+;  V73 rat0         [V73,T47] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V74 rat1         [V74,T48] (  3,  3   )  simd16  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 72
 
 G_M21715_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
@@ -92,12 +95,17 @@ G_M21715_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 40
+       sub      rsp, 72
+       xor      eax, eax
+       mov      qword ptr [rsp+0x28], rax
+       vxorps   xmm4, xmm4, xmm4
+       vmovdqa  xmmword ptr [rsp+0x30], xmm4
+       mov      qword ptr [rsp+0x40], rax
        mov      rbx, rcx
        ; gcrRegs +[rbx]
        mov      rsi, rdx
        ; gcrRegs +[rsi]
-						;; size=22 bbWeight=1 PerfScore 8.75
+						;; size=44 bbWeight=1 PerfScore 13.33
 G_M21715_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [rsi+0x08]
        ; gcrRegs +[rdi]
@@ -298,10 +306,10 @@ G_M21715_IG16:        ; bbWeight=0.50, gcrefRegs=2048 {rbx rsi r13}, byrefRegs=0
        ; gcrRegs -[rcx rdx r13] +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       je       G_M21715_IG29
+       je       G_M21715_IG28
 						;; size=27 bbWeight=0.50 PerfScore 4.38
 G_M21715_IG17:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 40
+       add      rsp, 72
        pop      rbx
        pop      rbp
        pop      rsi
@@ -356,10 +364,10 @@ G_M21715_IG19:        ; bbWeight=0.50, gcrefRegs=2048 {rbx rsi r13}, byrefRegs=0
        ; gcrRegs -[rcx rdx r8 r13] +[rax]
        ; gcr arg pop 0
        test     rax, rax
-       je       G_M21715_IG30
+       je       G_M21715_IG29
 						;; size=69 bbWeight=0.50 PerfScore 10.50
 G_M21715_IG20:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 40
+       add      rsp, 72
        pop      rbx
        pop      rbp
        pop      rsi
@@ -466,7 +474,7 @@ G_M21715_IG23:        ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {},
        ; gcrRegs +[rax]
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M21715_IG24:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 40
+       add      rsp, 72
        pop      rbx
        pop      rbp
        pop      rsi
@@ -567,60 +575,38 @@ G_M21715_IG26:        ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
        call     [System.Linq.Expressions.Expression:Convert(System.Linq.Expressions.Expression,System.Type,System.Reflection.MethodInfo):System.Linq.Expressions.UnaryExpression]
        ; gcrRegs -[rcx rdx rsi r8] +[rax]
        ; gcr arg pop 0
-       mov      rbx, rax
+       mov      gword ptr [rsp+0x30], rbp
+       mov      gword ptr [rsp+0x38], rax
+       mov      rbx, gword ptr [rsp+0x30]
        ; gcrRegs +[rbx]
        mov      rcx, 0xD1FFAB1E      ; Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression
        call     CORINFO_HELP_NEWSFAST
+       ; gcrRegs -[rbp]
        ; gcr arg pop 0
        mov      rsi, rax
        ; gcrRegs +[rsi]
-       lea      rcx, bword ptr [rsi+0x08]
-       ; byrRegs +[rcx]
-       mov      rdx, rbp
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx rbp]
-       ; byrRegs -[rcx]
-       lea      rcx, bword ptr [rsi+0x10]
-       ; byrRegs +[rcx]
-       mov      rdx, rbx
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx rbx]
-       ; byrRegs -[rcx]
-       xor      ecx, ecx
-       mov      dword ptr [rsi+0x18], ecx
-       mov      rbx, gword ptr [rsi+0x08]
-       ; gcrRegs +[rbx]
-       mov      rcx, 0xD1FFAB1E      ; Microsoft.EntityFrameworkCore.Query.ShapedQueryExpression
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      rdi, rax
+       mov      rdi, gword ptr [rsp+0x38]
        ; gcrRegs +[rdi]
-       mov      rsi, gword ptr [rsi+0x10]
-       lea      rcx, bword ptr [rdi+0x08]
+       lea      rcx, bword ptr [rsi+0x08]
        ; byrRegs +[rcx]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx rbx]
        ; byrRegs -[rcx]
-       lea      rcx, bword ptr [rdi+0x10]
+       lea      rcx, bword ptr [rsi+0x10]
        ; byrRegs +[rcx]
-       mov      rdx, rsi
+       mov      rdx, rdi
        ; gcrRegs +[rdx]
-						;; size=300 bbWeight=0.50 PerfScore 22.88
-G_M21715_IG27:        ; bbWeight=0.50, extend
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx rsi]
+       ; gcrRegs -[rdx rdi]
        ; byrRegs -[rcx]
-       mov      dword ptr [rdi+0x18], 1
-       mov      rax, rdi
+       mov      dword ptr [rsi+0x18], 1
+       mov      rax, rsi
        ; gcrRegs +[rax]
-						;; size=15 bbWeight=0.50 PerfScore 1.12
-G_M21715_IG28:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 40
...
+3 (+0.50%) : 110807.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
@@ -15,39 +15,40 @@
 ;* V04 arg4         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation>
 ;* V05 arg5         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]>
 ;  V06 loc0         [V06,T04] (  6,  3.50)     ref  ->  r14         class-hnd single-def <<unknown class>>
-;  V07 loc1         [V07    ] (  2,  1   )     ref  ->  [rsp+0x50]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MemberInfo>
-;  V08 loc2         [V08    ] (  1,  0.50)     ref  ->  [rsp+0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
+;  V07 loc1         [V07    ] (  2,  1   )     ref  ->  [rsp+0x60]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MemberInfo>
+;  V08 loc2         [V08    ] (  1,  0.50)     ref  ->  [rsp+0x58]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T14] (  3,  1.50)     ref  ->  rax        
-;  V11 tmp2         [V11    ] (  2,  2   )  struct ( 8) [rsp+0x40]  do-not-enreg[SB] "spilled call-like call argument" <System.Nullable`1[int]>
-;  V12 tmp3         [V12,T08] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
+;  V10 tmp1         [V10,T12] (  3,  1.50)     ref  ->  rax        
+;  V11 tmp2         [V11    ] (  2,  2   )  struct ( 8) [rsp+0x50]  do-not-enreg[SB] "spilled call-like call argument" <System.Nullable`1[int]>
+;* V12 tmp3         [V12    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Boolean>
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V14 tmp5         [V14,T09] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
+;  V14 tmp5         [V14,T08] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
 ;* V15 tmp6         [V15    ] (  0,  0   )     ref  ->  zero-ref   
-;  V16 tmp7         [V16,T15] (  3,  1.50)     ref  ->  rdx        
+;  V16 tmp7         [V16,T13] (  3,  1.50)     ref  ->  rdx        
 ;* V17 tmp8         [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
 ;  V18 tmp9         [V18,T05] (  2,  2   )     int  ->  rdx         "spilling unroll qmark"
 ;* V19 tmp10        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
 ;  V20 tmp11        [V20,T06] (  2,  2   )     int  ->  rdx         "spilling unroll qmark"
 ;* V21 tmp12        [V21    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
 ;  V22 tmp13        [V22,T07] (  2,  2   )     int  ->  rax         "spilling unroll qmark"
-;  V23 tmp14        [V23,T17] (  5,  1.45)     ref  ->  rdx         class-hnd single-def "Inline return value spill temp" <System.Object>
-;  V24 tmp15        [V24    ] (  3,  1.50)     ref  ->  [rsp+0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-;  V25 tmp16        [V25,T16] (  2,  1   )   ubyte  ->  rbx         "Inline return value spill temp"
-;  V26 tmp17        [V26,T10] (  3,  2.01)     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Boolean>
-;  V27 tmp18        [V27,T20] (  3,  0.51)   ubyte  ->  rbx         "Inline return value spill temp"
-;* V28 tmp19        [V28,T22] (  0,  0   )     int  ->  zero-ref    "spilling qmarkNull"
-;  V29 tmp20        [V29,T21] (  2,  0.02)   byref  ->  r15         single-def "Inlining Arg"
-;  V30 tmp21        [V30,T11] (  2,  2   )   ubyte  ->  [rsp+0x40]  do-not-enreg[] "field V11.hasValue (fldOffset=0x0)" P-DEP
-;  V31 tmp22        [V31,T12] (  2,  2   )     int  ->  [rsp+0x44]  do-not-enreg[] "field V11.value (fldOffset=0x4)" P-DEP
-;* V32 tmp23        [V32,T19] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V33 tmp24        [V33,T13] (  2,  2   )  struct ( 8) [rsp+0x30]  do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;  V34 cse0         [V34,T18] (  4,  1   )     int  ->  r15         "CSE #01: moderate"
-;  V35 rat0         [V35,T23] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V36 rat1         [V36,T24] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V37 rat2         [V37,T25] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V23 tmp14        [V23,T15] (  5,  1.45)     ref  ->  rdx         class-hnd single-def "Inline return value spill temp" <System.Object>
+;  V24 tmp15        [V24    ] (  3,  1.50)     ref  ->  [rsp+0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+;  V25 tmp16        [V25,T14] (  2,  1   )   ubyte  ->  r15         "Inline return value spill temp"
+;* V26 tmp17        [V26    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Boolean>
+;  V27 tmp18        [V27,T18] (  3,  0.51)   ubyte  ->  r15         "Inline return value spill temp"
+;* V28 tmp19        [V28,T19] (  0,  0   )     int  ->  zero-ref    "spilling qmarkNull"
+;* V29 tmp20        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V30 tmp21        [V30    ] (  4,  1.50)  struct (16) [rsp+0x38]  do-not-enreg[XSF] must-init addr-exposed "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+;  V31 tmp22        [V31,T09] (  2,  2   )   ubyte  ->  [rsp+0x50]  do-not-enreg[] "field V11.hasValue (fldOffset=0x0)" P-DEP
+;  V32 tmp23        [V32,T10] (  2,  2   )     int  ->  [rsp+0x54]  do-not-enreg[] "field V11.value (fldOffset=0x4)" P-DEP
+;* V33 tmp24        [V33,T17] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V34 tmp25        [V34,T11] (  2,  2   )  struct ( 8) [rsp+0x30]  do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;  V35 cse0         [V35,T16] (  4,  1   )     int  ->  r15         "CSE #01: moderate"
+;  V36 rat0         [V36,T20] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V37 rat1         [V37,T21] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V38 rat2         [V38,T22] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 88
+; Lcl frame size = 104
 
 G_M7184_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
@@ -56,12 +57,12 @@ G_M7184_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 88
+       sub      rsp, 104
        xor      eax, eax
        mov      qword ptr [rsp+0x38], rax
        vxorps   xmm4, xmm4, xmm4
-       vmovdqa  xmmword ptr [rsp+0x40], xmm4
-       mov      qword ptr [rsp+0x50], rax
+       vmovdqu  ymmword ptr [rsp+0x40], ymm4
+       mov      qword ptr [rsp+0x60], rax
        mov      rdi, rcx
        ; gcrRegs +[rdi]
        mov      rsi, rdx
@@ -120,7 +121,7 @@ G_M7184_IG06:        ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefReg
 G_M7184_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs -[rbx rsi rdi r14]
        vzeroupper 
-       add      rsp, 88
+       add      rsp, 104
        pop      rbx
        pop      rbp
        pop      rsi
@@ -137,11 +138,11 @@ G_M7184_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E0
        call     CORINFO_HELP_CHKCASTINTERFACE
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
-       lea      rcx, [rsp+0x48]
+       lea      rcx, [rsp+0x58]
        mov      qword ptr [rsp+0x20], rcx
        mov      rcx, r14
        ; gcrRegs +[rcx]
-       lea      r9, [rsp+0x50]
+       lea      r9, [rsp+0x60]
        xor      edx, edx
        xor      r8d, r8d
        call     [<unknown method>]
@@ -159,55 +160,49 @@ G_M7184_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E0
 						;; size=69 bbWeight=0.50 PerfScore 7.00
 G_M7184_IG09:        ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
-       mov      rcx, gword ptr [rsp+0x50]
+       mov      rcx, gword ptr [rsp+0x60]
        ; gcrRegs +[rcx]
        call     [System.Reflection.EntityFrameworkMemberInfoExtensions:GetMemberType(System.Reflection.MemberInfo):System.Type]
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
 						;; size=11 bbWeight=0.50 PerfScore 2.00
 G_M7184_IG10:        ; bbWeight=0.50, gcrefRegs=40E1 {rax rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, 0xD1FFAB1E
-       ; gcrRegs +[rcx]
-       cmp      rax, rcx
+       mov      rdx, 0xD1FFAB1E
+       ; gcrRegs +[rdx]
+       cmp      rax, rdx
        jne      SHORT G_M7184_IG14
-       mov      rcx, 0xD1FFAB1E      ; System.Boolean
-       ; gcrRegs -[rcx]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
-       mov      r15, rax
-       ; gcrRegs +[r15]
-       mov      byte  ptr [r15+0x08], 1
-       lea      rdx, [rsp+0x38]
+       mov      rdx, 0xD1FFAB1E      ; System.Boolean
+       ; gcrRegs -[rdx]
+       mov      qword ptr [rsp+0x38], rdx
+       mov      byte  ptr [rsp+0x40], 1
+       lea      rdx, [rsp+0x48]
        mov      rcx, r14
        ; gcrRegs +[rcx]
        call     [Microsoft.EntityFrameworkCore.RelationalPropertyExtensions:TryGetDefaultValue(Microsoft.EntityFrameworkCore.Metadata.IReadOnlyProperty,byref):ubyte]
        ; gcrRegs -[rax rcx]
        ; gcr arg pop 0
-       mov      rdx, gword ptr [rsp+0x38]
+       mov      rdx, gword ptr [rsp+0x48]
        ; gcrRegs +[rdx]
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x38], rcx
-       cmp      r15, rdx
-       je       SHORT G_M7184_IG18
-						;; size=69 bbWeight=0.50 PerfScore 5.62
-G_M7184_IG11:        ; bbWeight=0.45, gcrefRegs=C0E4 {rdx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+       mov      gword ptr [rsp+0x48], rcx
+       lea      rcx, [rsp+0x38]
        ; gcrRegs -[rcx]
+       cmp      rcx, rdx
+       je       SHORT G_M7184_IG18
+						;; size=71 bbWeight=0.50 PerfScore 5.75
+G_M7184_IG11:        ; bbWeight=0.45, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
        test     rdx, rdx
        je       SHORT G_M7184_IG14
 						;; size=5 bbWeight=0.45 PerfScore 0.56
-G_M7184_IG12:        ; bbWeight=0.01, gcrefRegs=C0E4 {rdx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
-       add      r15, 8
-       ; gcrRegs -[r15]
-       ; byrRegs +[r15]
+G_M7184_IG12:        ; bbWeight=0.01, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; System.Boolean
        cmp      qword ptr [rdx], rcx
        je       SHORT G_M7184_IG19
        jmp      SHORT G_M7184_IG16
-						;; size=21 bbWeight=0.01 PerfScore 0.03
+						;; size=17 bbWeight=0.01 PerfScore 0.03
 G_M7184_IG13:        ; bbWeight=0.50, gcrefRegs=40C4 {rdx rsi rdi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbp]
-       ; byrRegs -[r15]
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
@@ -226,8 +221,8 @@ G_M7184_IG14:        ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=00
        call     [rax+0x10]<unknown method>
        ; gcrRegs -[rcx rdx rdi r14]
        ; gcr arg pop 0
-       mov      qword ptr [rsp+0x40], rax
-       mov      rdx, qword ptr [rsp+0x40]
+       mov      qword ptr [rsp+0x50], rax
+       mov      rdx, qword ptr [rsp+0x50]
        mov      qword ptr [rsp+0x30], rdx
        mov      rcx, rsi
        ; gcrRegs +[rcx]
@@ -240,7 +235,7 @@ G_M7184_IG14:        ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=00
 						;; size=51 bbWeight=0.50 PerfScore 7.25
 G_M7184_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
-       add      rsp, 88
+       add      rsp, 104
        pop      rbx
        pop      rbp
        pop      rsi
@@ -251,12 +246,12 @@ G_M7184_IG15:        ; bbWeight=0.50, epilog, nogc, extend
 						;; size=16 bbWeight=0.50 PerfScore 2.62
 G_M7184_IG16:        ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbp rsi rdi r14]
-       xor      ebx, ebx
-						;; size=2 bbWeight=0.01 PerfScore 0.00
+       xor      r15d, r15d
+						;; size=3 bbWeight=0.01 PerfScore 0.00
 G_M7184_IG17:        ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
-       test     ebx, ebx
+       test     r15d, r15d
        je       SHORT G_M7184_IG14
-						;; size=4 bbWeight=0.50 PerfScore 0.62
+						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M7184_IG18:        ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
        test     rbp, rbp
        jne      SHORT G_M7184_IG20
@@ -264,19 +259,18 @@ G_M7184_IG18:        ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefReg
        ; gcrRegs +[rdx]
        jmp      SHORT G_M7184_IG13
 						;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M7184_IG19:        ; bbWeight=0.00, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=8000 {r15}, byref, isz
-       ; byrRegs +[r15]
-       movzx    rbx, byte  ptr [r15]
+G_M7184_IG19:        ; bbWeight=0.00, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+       movzx    rbx, byte  ptr [rsp+0x40]
        mov      rcx, 0xD1FFAB1E      ; System.Boolean
        call     [CORINFO_HELP_UNBOX]
        ; gcrRegs -[rdx]
-       ; byrRegs -[r15] +[rax]
+       ; byrRegs +[rax]
        ; gcr arg pop 0
        cmp      bl, byte  ptr [rax]
-       sete     bl
-       movzx    rbx, bl
+       sete     r15b
+       movzx    r15, r15b
        jmp      SHORT G_M7184_IG17
-						;; size=30 bbWeight=0.00 PerfScore 0.03
+						;; size=33 bbWeight=0.00 PerfScore 0.03
 G_M7184_IG20:        ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbp]
        ; byrRegs -[rax]
@@ -313,7 +307,7 @@ RWD96  	dq	0061006C00650052h, 006E006F00690074h, 0043003A006C0061h, 00750070006D
 RWD128 	dq	00750070006D006Fh, 0043006400650074h, 006D0075006C006Fh, 006C00710053006Eh
 
 
-; Total bytes of code 599, prolog size 34, PerfScore 86.77, instruction count 152, allocated bytes for code 599 (MethodHash=80c9e3ef) for method Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
+; Total bytes of code 602, prolog size 34, PerfScore 86.89, instruction count 151, allocated bytes for code 602 (MethodHash=80c9e3ef) for method Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -326,7 +320,7 @@ Unwind Info:
...
+3 (+0.50%) : 57433.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
@@ -15,39 +15,40 @@
 ;* V04 arg4         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation>
 ;* V05 arg5         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]>
 ;  V06 loc0         [V06,T04] (  6,  3.50)     ref  ->  r14         class-hnd single-def <<unknown class>>
-;  V07 loc1         [V07    ] (  2,  1   )     ref  ->  [rsp+0x50]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MemberInfo>
-;  V08 loc2         [V08    ] (  1,  0.50)     ref  ->  [rsp+0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
+;  V07 loc1         [V07    ] (  2,  1   )     ref  ->  [rsp+0x60]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MemberInfo>
+;  V08 loc2         [V08    ] (  1,  0.50)     ref  ->  [rsp+0x58]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T14] (  3,  1.50)     ref  ->  rax        
-;  V11 tmp2         [V11    ] (  2,  2   )  struct ( 8) [rsp+0x40]  do-not-enreg[SB] "spilled call-like call argument" <System.Nullable`1[int]>
-;  V12 tmp3         [V12,T08] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
+;  V10 tmp1         [V10,T12] (  3,  1.50)     ref  ->  rax        
+;  V11 tmp2         [V11    ] (  2,  2   )  struct ( 8) [rsp+0x50]  do-not-enreg[SB] "spilled call-like call argument" <System.Nullable`1[int]>
+;* V12 tmp3         [V12    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Boolean>
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V14 tmp5         [V14,T09] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
+;  V14 tmp5         [V14,T08] (  3,  3   )     ref  ->  rdx         class-hnd exact single-def "Single-def Box Helper" <System.Boolean>
 ;* V15 tmp6         [V15    ] (  0,  0   )     ref  ->  zero-ref   
-;  V16 tmp7         [V16,T15] (  3,  1.50)     ref  ->  rdx        
+;  V16 tmp7         [V16,T13] (  3,  1.50)     ref  ->  rdx        
 ;* V17 tmp8         [V17    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
 ;  V18 tmp9         [V18,T05] (  2,  2   )     int  ->  rdx         "spilling unroll qmark"
 ;* V19 tmp10        [V19    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
 ;  V20 tmp11        [V20,T06] (  2,  2   )     int  ->  rdx         "spilling unroll qmark"
 ;* V21 tmp12        [V21    ] (  0,  0   )     ref  ->  zero-ref    single-def "spilling varStr"
 ;  V22 tmp13        [V22,T07] (  2,  2   )     int  ->  rax         "spilling unroll qmark"
-;  V23 tmp14        [V23,T17] (  5,  1.45)     ref  ->  rdx         class-hnd single-def "Inline return value spill temp" <System.Object>
-;  V24 tmp15        [V24    ] (  3,  1.50)     ref  ->  [rsp+0x38]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
-;  V25 tmp16        [V25,T16] (  2,  1   )   ubyte  ->  rbx         "Inline return value spill temp"
-;  V26 tmp17        [V26,T10] (  3,  2.01)     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <System.Boolean>
-;  V27 tmp18        [V27,T20] (  3,  0.51)   ubyte  ->  rbx         "Inline return value spill temp"
-;* V28 tmp19        [V28,T22] (  0,  0   )     int  ->  zero-ref    "spilling qmarkNull"
-;  V29 tmp20        [V29,T21] (  2,  0.02)   byref  ->  r15         single-def "Inlining Arg"
-;  V30 tmp21        [V30,T11] (  2,  2   )   ubyte  ->  [rsp+0x40]  do-not-enreg[] "field V11.hasValue (fldOffset=0x0)" P-DEP
-;  V31 tmp22        [V31,T12] (  2,  2   )     int  ->  [rsp+0x44]  do-not-enreg[] "field V11.value (fldOffset=0x4)" P-DEP
-;* V32 tmp23        [V32,T19] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;  V33 tmp24        [V33,T13] (  2,  2   )  struct ( 8) [rsp+0x30]  do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;  V34 cse0         [V34,T18] (  4,  1   )     int  ->  r15         "CSE #01: moderate"
-;  V35 rat0         [V35,T23] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V36 rat1         [V36,T24] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
-;  V37 rat2         [V37,T25] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V23 tmp14        [V23,T15] (  5,  1.45)     ref  ->  rdx         class-hnd single-def "Inline return value spill temp" <System.Object>
+;  V24 tmp15        [V24    ] (  3,  1.50)     ref  ->  [rsp+0x48]  do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+;  V25 tmp16        [V25,T14] (  2,  1   )   ubyte  ->  r15         "Inline return value spill temp"
+;* V26 tmp17        [V26    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Boolean>
+;  V27 tmp18        [V27,T18] (  3,  0.51)   ubyte  ->  r15         "Inline return value spill temp"
+;* V28 tmp19        [V28,T19] (  0,  0   )     int  ->  zero-ref    "spilling qmarkNull"
+;* V29 tmp20        [V29    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V30 tmp21        [V30    ] (  4,  1.50)  struct (16) [rsp+0x38]  do-not-enreg[XSF] must-init addr-exposed "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+;  V31 tmp22        [V31,T09] (  2,  2   )   ubyte  ->  [rsp+0x50]  do-not-enreg[] "field V11.hasValue (fldOffset=0x0)" P-DEP
+;  V32 tmp23        [V32,T10] (  2,  2   )     int  ->  [rsp+0x54]  do-not-enreg[] "field V11.value (fldOffset=0x4)" P-DEP
+;* V33 tmp24        [V33,T17] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;  V34 tmp25        [V34,T11] (  2,  2   )  struct ( 8) [rsp+0x30]  do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;  V35 cse0         [V35,T16] (  4,  1   )     int  ->  r15         "CSE #01: moderate"
+;  V36 rat0         [V36,T20] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V37 rat1         [V37,T21] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
+;  V38 rat2         [V38,T22] (  3,  3   )  simd32  ->  mm0         "ReplaceWithLclVar is creating a new local variable"
 ;
-; Lcl frame size = 88
+; Lcl frame size = 104
 
 G_M7184_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
@@ -56,12 +57,12 @@ G_M7184_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 88
+       sub      rsp, 104
        xor      eax, eax
        mov      qword ptr [rsp+0x38], rax
        vxorps   xmm4, xmm4, xmm4
-       vmovdqa  xmmword ptr [rsp+0x40], xmm4
-       mov      qword ptr [rsp+0x50], rax
+       vmovdqu  ymmword ptr [rsp+0x40], ymm4
+       mov      qword ptr [rsp+0x60], rax
        mov      rdi, rcx
        ; gcrRegs +[rdi]
        mov      rsi, rdx
@@ -120,7 +121,7 @@ G_M7184_IG06:        ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefReg
 G_M7184_IG07:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs -[rbx rsi rdi r14]
        vzeroupper 
-       add      rsp, 88
+       add      rsp, 104
        pop      rbx
        pop      rbp
        pop      rsi
@@ -137,11 +138,11 @@ G_M7184_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E0
        call     CORINFO_HELP_CHKCASTINTERFACE
        ; gcrRegs -[rdx]
        ; gcr arg pop 0
-       lea      rcx, [rsp+0x48]
+       lea      rcx, [rsp+0x58]
        mov      qword ptr [rsp+0x20], rcx
        mov      rcx, r14
        ; gcrRegs +[rcx]
-       lea      r9, [rsp+0x50]
+       lea      r9, [rsp+0x60]
        xor      edx, edx
        xor      r8d, r8d
        call     [<unknown method>]
@@ -159,55 +160,49 @@ G_M7184_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E0
 						;; size=69 bbWeight=0.50 PerfScore 7.00
 G_M7184_IG09:        ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
-       mov      rcx, gword ptr [rsp+0x50]
+       mov      rcx, gword ptr [rsp+0x60]
        ; gcrRegs +[rcx]
        call     [System.Reflection.EntityFrameworkMemberInfoExtensions:GetMemberType(System.Reflection.MemberInfo):System.Type]
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
 						;; size=11 bbWeight=0.50 PerfScore 2.00
 G_M7184_IG10:        ; bbWeight=0.50, gcrefRegs=40E1 {rax rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, 0xD1FFAB1E
-       ; gcrRegs +[rcx]
-       cmp      rax, rcx
+       mov      rdx, 0xD1FFAB1E
+       ; gcrRegs +[rdx]
+       cmp      rax, rdx
        jne      SHORT G_M7184_IG14
-       mov      rcx, 0xD1FFAB1E      ; System.Boolean
-       ; gcrRegs -[rcx]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
-       mov      r15, rax
-       ; gcrRegs +[r15]
-       mov      byte  ptr [r15+0x08], 1
-       lea      rdx, [rsp+0x38]
+       mov      rdx, 0xD1FFAB1E      ; System.Boolean
+       ; gcrRegs -[rdx]
+       mov      qword ptr [rsp+0x38], rdx
+       mov      byte  ptr [rsp+0x40], 1
+       lea      rdx, [rsp+0x48]
        mov      rcx, r14
        ; gcrRegs +[rcx]
        call     [Microsoft.EntityFrameworkCore.RelationalPropertyExtensions:TryGetDefaultValue(Microsoft.EntityFrameworkCore.Metadata.IReadOnlyProperty,byref):ubyte]
        ; gcrRegs -[rax rcx]
        ; gcr arg pop 0
-       mov      rdx, gword ptr [rsp+0x38]
+       mov      rdx, gword ptr [rsp+0x48]
        ; gcrRegs +[rdx]
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x38], rcx
-       cmp      r15, rdx
-       je       SHORT G_M7184_IG18
-						;; size=69 bbWeight=0.50 PerfScore 5.62
-G_M7184_IG11:        ; bbWeight=0.45, gcrefRegs=C0E4 {rdx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
+       mov      gword ptr [rsp+0x48], rcx
+       lea      rcx, [rsp+0x38]
        ; gcrRegs -[rcx]
+       cmp      rcx, rdx
+       je       SHORT G_M7184_IG18
+						;; size=71 bbWeight=0.50 PerfScore 5.75
+G_M7184_IG11:        ; bbWeight=0.45, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
        test     rdx, rdx
        je       SHORT G_M7184_IG14
 						;; size=5 bbWeight=0.45 PerfScore 0.56
-G_M7184_IG12:        ; bbWeight=0.01, gcrefRegs=C0E4 {rdx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
-       add      r15, 8
-       ; gcrRegs -[r15]
-       ; byrRegs +[r15]
+G_M7184_IG12:        ; bbWeight=0.01, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; System.Boolean
        cmp      qword ptr [rdx], rcx
        je       SHORT G_M7184_IG19
        jmp      SHORT G_M7184_IG16
-						;; size=21 bbWeight=0.01 PerfScore 0.03
+						;; size=17 bbWeight=0.01 PerfScore 0.03
 G_M7184_IG13:        ; bbWeight=0.50, gcrefRegs=40C4 {rdx rsi rdi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbp]
-       ; byrRegs -[r15]
        mov      rcx, rsi
        ; gcrRegs +[rcx]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
@@ -226,8 +221,8 @@ G_M7184_IG14:        ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=00
        call     [rax+0x10]<unknown method>
        ; gcrRegs -[rcx rdx rdi r14]
        ; gcr arg pop 0
-       mov      qword ptr [rsp+0x40], rax
-       mov      rdx, qword ptr [rsp+0x40]
+       mov      qword ptr [rsp+0x50], rax
+       mov      rdx, qword ptr [rsp+0x50]
        mov      qword ptr [rsp+0x30], rdx
        mov      rcx, rsi
        ; gcrRegs +[rcx]
@@ -240,7 +235,7 @@ G_M7184_IG14:        ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=00
 						;; size=51 bbWeight=0.50 PerfScore 7.25
 G_M7184_IG15:        ; bbWeight=0.50, epilog, nogc, extend
        vzeroupper 
-       add      rsp, 88
+       add      rsp, 104
        pop      rbx
        pop      rbp
        pop      rsi
@@ -251,12 +246,12 @@ G_M7184_IG15:        ; bbWeight=0.50, epilog, nogc, extend
 						;; size=16 bbWeight=0.50 PerfScore 2.62
 G_M7184_IG16:        ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbp rsi rdi r14]
-       xor      ebx, ebx
-						;; size=2 bbWeight=0.01 PerfScore 0.00
+       xor      r15d, r15d
+						;; size=3 bbWeight=0.01 PerfScore 0.00
 G_M7184_IG17:        ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
-       test     ebx, ebx
+       test     r15d, r15d
        je       SHORT G_M7184_IG14
-						;; size=4 bbWeight=0.50 PerfScore 0.62
+						;; size=5 bbWeight=0.50 PerfScore 0.62
 G_M7184_IG18:        ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
        test     rbp, rbp
        jne      SHORT G_M7184_IG20
@@ -264,19 +259,18 @@ G_M7184_IG18:        ; bbWeight=0.50, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefReg
        ; gcrRegs +[rdx]
        jmp      SHORT G_M7184_IG13
 						;; size=9 bbWeight=0.50 PerfScore 1.75
-G_M7184_IG19:        ; bbWeight=0.00, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=8000 {r15}, byref, isz
-       ; byrRegs +[r15]
-       movzx    rbx, byte  ptr [r15]
+G_M7184_IG19:        ; bbWeight=0.00, gcrefRegs=40E4 {rdx rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+       movzx    rbx, byte  ptr [rsp+0x40]
        mov      rcx, 0xD1FFAB1E      ; System.Boolean
        call     CORINFO_HELP_UNBOX
        ; gcrRegs -[rdx]
-       ; byrRegs -[r15] +[rax]
+       ; byrRegs +[rax]
        ; gcr arg pop 0
        cmp      bl, byte  ptr [rax]
-       sete     bl
-       movzx    rbx, bl
+       sete     r15b
+       movzx    r15, r15b
        jmp      SHORT G_M7184_IG17
-						;; size=29 bbWeight=0.00 PerfScore 0.02
+						;; size=32 bbWeight=0.00 PerfScore 0.02
 G_M7184_IG20:        ; bbWeight=0.50, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbp]
        ; byrRegs -[rax]
@@ -313,7 +307,7 @@ RWD96  	dq	0061006C00650052h, 006E006F00690074h, 0043003A006C0061h, 00750070006D
 RWD128 	dq	00750070006D006Fh, 0043006400650074h, 006D0075006C006Fh, 006C00710053006Eh
 
 
-; Total bytes of code 598, prolog size 34, PerfScore 86.76, instruction count 152, allocated bytes for code 598 (MethodHash=80c9e3ef) for method Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
+; Total bytes of code 601, prolog size 34, PerfScore 86.89, instruction count 151, allocated bytes for code 601 (MethodHash=80c9e3ef) for method Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -326,7 +320,7 @@ Unwind Info:
...
+41 (+0.86%) : 68108.dasm - Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator:ValidateNoCycles(Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Model+Validation]):this (Tier1-OSR)
@@ -126,9 +126,9 @@
 ;  V113 tmp103      [V113,T27] (  6,209.56)     int  ->  [rbp-0x5C]  "impAppendStmt"
 ;  V114 tmp104      [V114,T12] ( 12,314.32)     int  ->  [rbp-0x60]  "Inline stloc first use temp"
 ;  V115 tmp105      [V115,T02] ( 34,484.31)     int  ->  [rbp-0x64]  "Inline stloc first use temp"
-;  V116 tmp106      [V116,T53] (  6,105.11)     ref  ->  [rbp-0x88]  class-hnd exact "impAppendStmt" <System.OrdinalCaseSensitiveComparer>
+;  V116 tmp106      [V116,T53] (  6,105.11)     ref  ->  [rbp-0xA0]  class-hnd exact "impAppendStmt" <System.OrdinalCaseSensitiveComparer>
 ;  V117 tmp107      [V117,T17] ( 14,275.80)     ref  ->  rcx         class-hnd "spilling ret_expr" <System.__Canon>
-;  V118 tmp108      [V118,T03] ( 24,482.12)     ref  ->  [rbp-0x90]  class-hnd exact "impAppendStmt" <System.String>
+;  V118 tmp108      [V118,T03] ( 24,482.12)     ref  ->  [rbp-0xA8]  class-hnd exact "impAppendStmt" <System.String>
 ;* V119 tmp109      [V119    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "spilling ret_expr" <System.__Canon>
 ;  V120 tmp110      [V120,T04] ( 24,482.12)     ref  ->  r10         class-hnd exact "spilling ret_expr" <System.String>
 ;* V121 tmp111      [V121    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "guarded devirt this exact temp" <System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.Internal.Property]>
@@ -154,77 +154,78 @@
 ;  V141 tmp131      [V141,T33] (  2,162.22)   byref  ->  rcx         "Inlining Arg"
 ;* V142 tmp132      [V142    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;  V143 tmp133      [V143,T95] (  2,  0.50)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator+<>c>
-;* V144 tmp134      [V144    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <<unknown class>>
+;* V144 tmp134      [V144    ] (  0,  0   )   byref  ->  zero-ref    class-hnd "Inline return value spill temp" <<unknown class>>
 ;  V145 tmp135      [V145,T92] (  3,  0.60)     ref  ->  r15         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;  V146 tmp136      [V146,T96] (  2,  0.50)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.IEntityType]>
-;* V147 tmp137      [V147    ] (  0,  0   )     ref  ->  zero-ref    "field V77.key (fldOffset=0x0)" P-INDEP
-;* V148 tmp138      [V148    ] (  0,  0   )     ref  ->  zero-ref    "field V77.value (fldOffset=0x8)" P-INDEP
-;* V149 tmp139      [V149    ] (  0,  0   )     ref  ->  zero-ref    "field V79.key (fldOffset=0x0)" P-INDEP
-;  V150 tmp140      [V150,T64] (  3, 80.63)     ref  ->  rbx         "field V79.value (fldOffset=0x8)" P-INDEP
-;* V151 tmp141      [V151    ] (  0,  0   )     ref  ->  zero-ref    "field V81.key (fldOffset=0x0)" P-INDEP
-;* V152 tmp142      [V152    ] (  0,  0   )     ref  ->  zero-ref    "field V81.value (fldOffset=0x8)" P-INDEP
-;* V153 tmp143      [V153    ] (  0,  0   )     int  ->  zero-ref    "V69.[000..004)"
-;  V154 tmp144      [V154,T21] (  3,241.88)     ref  ->  rdx         "BlockOp address local"
-;  V155 tmp145      [V155,T59] (  3, 88.70)     ref  ->  rcx         "argument with side effect"
-;  V156 tmp146      [V156,T58] (  3, 96.10)     ref  ->  rcx         "argument with side effect"
-;  V157 tmp147      [V157,T08] (  6,369.00)     ref  ->  rax         "argument with side effect"
-;  V158 tmp148      [V158,T16] (  6,276.75)     ref  ->  rax         "argument with side effect"
-;  V159 tmp149      [V159,T20] (  4,246.00)     ref  ->  rcx         "argument with side effect"
-;  V160 tmp150      [V160,T19] (  9,255.43)     ref  ->  rcx         "arr expr"
-;  V161 tmp151      [V161,T29] (  9,198.67)     ref  ->  r10         "arr expr"
-;  V162 tmp152      [V162,T85] (  4, 25.37)     ref  ->  rax         "argument with side effect"
-;  V163 PSPSym      [V163,T87] (  1,  1   )    long  ->  [rbp-0x98]  do-not-enreg[V] "PSPSym"
-;  V164 cse0        [V164,T67] (  5, 76.38)     ref  ->  r12         multi-def "CSE #07: conservative"
-;  V165 cse1        [V165,T46] (  3,120.94)     ref  ->  rdx         "CSE #02: conservative"
-;  V166 cse2        [V166,T18] ( 14,263.70)    long  ->  [rbp-0x80]  multi-def "CSE #18: moderate"
-;  V167 cse3        [V167,T11] (  9,319.12)    long  ->  r13         multi-def "CSE #13: aggressive"
-;  V168 cse4        [V168,T45] (  3,121.43)    long  ->  rsi         "CSE #01: moderate"
-;  V169 cse5        [V169,T43] (  2,121.77)    long  ->  rcx         "CSE #15: moderate"
-;  V170 rat0        [V170,T31] (  3,181.41)     ref  ->  rdx         "Spilling to split statement for tree"
-;  V171 rat1        [V171,T14] (  5,302.36)     ref  ->  rcx         "replacement local"
-;  V172 rat2        [V172,T55] (  3,100.79)    long  ->  rax         "CSE for expectedClsNode"
-;  V173 rat3        [V173,T32] (  3,173.25)     ref  ->  rdx         "Spilling to split statement for tree"
-;  V174 rat4        [V174,T15] (  5,288.75)     ref  ->  rax         "replacement local"
-;  V175 rat5        [V175,T57] (  3, 96.25)    long  ->  rcx         "CSE for expectedClsNode"
-;  V176 rat6        [V176,T68] (  3, 72.07)     ref  ->  rdx         "Spilling to split statement for tree"
-;  V177 rat7        [V177,T47] (  5,120.12)     ref  ->  r12         "replacement local"
-;  V178 rat8        [V178,T72] (  3, 40.04)    long  ->  rcx         "CSE for expectedClsNode"
-;  V179 rat9        [V179,T69] (  3, 66.53)     ref  ->  rdx         "Spilling to split statement for tree"
-;  V180 rat10       [V180,T60] (  3, 73.92)     ref  ->  rcx         "replacement local"
-;  V181 rat11       [V181,T74] (  3, 36.96)    long  ->  rax         "CSE for expectedClsNode"
-;  V182 rat12       [V182,T05] (  5,456.64)     ref  ->  rcx         "replacement local"
-;  V183 rat13       [V183,T40] (  3,152.21)    long  ->   r8         "CSE for expectedClsNode"
-;  V184 rat14       [V184,T79] (  5,  4.61)     ref  ->  rcx         "replacement local"
-;  V185 rat15       [V185,T83] (  3,  1.54)    long  ->   r8         "CSE for expectedClsNode"
+;* V146 tmp136      [V146    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.IEntityType]>
+;  V147 tmp137      [V147    ] (  2,  0.25)  struct (24) [rbp-0x90]  do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.IEntityType]>
+;* V148 tmp138      [V148    ] (  0,  0   )     ref  ->  zero-ref    "field V77.key (fldOffset=0x0)" P-INDEP
+;* V149 tmp139      [V149    ] (  0,  0   )     ref  ->  zero-ref    "field V77.value (fldOffset=0x8)" P-INDEP
+;* V150 tmp140      [V150    ] (  0,  0   )     ref  ->  zero-ref    "field V79.key (fldOffset=0x0)" P-INDEP
+;  V151 tmp141      [V151,T64] (  3, 80.63)     ref  ->  rbx         "field V79.value (fldOffset=0x8)" P-INDEP
+;* V152 tmp142      [V152    ] (  0,  0   )     ref  ->  zero-ref    "field V81.key (fldOffset=0x0)" P-INDEP
+;* V153 tmp143      [V153    ] (  0,  0   )     ref  ->  zero-ref    "field V81.value (fldOffset=0x8)" P-INDEP
+;* V154 tmp144      [V154    ] (  0,  0   )     int  ->  zero-ref    "V69.[000..004)"
+;  V155 tmp145      [V155,T21] (  3,241.88)     ref  ->  rdx         "BlockOp address local"
+;  V156 tmp146      [V156,T59] (  3, 88.70)     ref  ->  rcx         "argument with side effect"
+;  V157 tmp147      [V157,T58] (  3, 96.10)     ref  ->  rcx         "argument with side effect"
+;  V158 tmp148      [V158,T08] (  6,369.00)     ref  ->  rax         "argument with side effect"
+;  V159 tmp149      [V159,T16] (  6,276.75)     ref  ->  rax         "argument with side effect"
+;  V160 tmp150      [V160,T20] (  4,246.00)     ref  ->  rcx         "argument with side effect"
+;  V161 tmp151      [V161,T19] (  9,255.43)     ref  ->  rcx         "arr expr"
+;  V162 tmp152      [V162,T29] (  9,198.67)     ref  ->  r10         "arr expr"
+;  V163 tmp153      [V163,T85] (  4, 25.37)     ref  ->  rax         "argument with side effect"
+;  V164 PSPSym      [V164,T87] (  1,  1   )    long  ->  [rbp-0xB8]  do-not-enreg[V] "PSPSym"
+;  V165 cse0        [V165,T67] (  5, 76.38)     ref  ->  r12         multi-def "CSE #07: conservative"
+;  V166 cse1        [V166,T46] (  3,120.94)     ref  ->  rdx         "CSE #02: conservative"
+;  V167 cse2        [V167,T18] ( 14,263.70)    long  ->  [rbp-0x98]  multi-def "CSE #18: moderate"
+;  V168 cse3        [V168,T11] (  9,319.12)    long  ->  r13         multi-def "CSE #13: aggressive"
+;  V169 cse4        [V169,T45] (  3,121.43)    long  ->  rsi         "CSE #01: moderate"
+;  V170 cse5        [V170,T43] (  2,121.77)    long  ->  rcx         "CSE #15: moderate"
+;  V171 cse6        [V171,T96] (  3,  0.25)    long  ->  rcx         "CSE #45: conservative"
+;  V172 rat0        [V172,T31] (  3,181.41)     ref  ->  rdx         "Spilling to split statement for tree"
+;  V173 rat1        [V173,T14] (  5,302.36)     ref  ->  rcx         "replacement local"
+;  V174 rat2        [V174,T55] (  3,100.79)    long  ->  rax         "CSE for expectedClsNode"
+;  V175 rat3        [V175,T32] (  3,173.25)     ref  ->  rdx         "Spilling to split statement for tree"
+;  V176 rat4        [V176,T15] (  5,288.75)     ref  ->  rax         "replacement local"
+;  V177 rat5        [V177,T57] (  3, 96.25)    long  ->  rcx         "CSE for expectedClsNode"
+;  V178 rat6        [V178,T68] (  3, 72.07)     ref  ->  rdx         "Spilling to split statement for tree"
+;  V179 rat7        [V179,T47] (  5,120.12)     ref  ->  r12         "replacement local"
+;  V180 rat8        [V180,T72] (  3, 40.04)    long  ->  rcx         "CSE for expectedClsNode"
+;  V181 rat9        [V181,T69] (  3, 66.53)     ref  ->  rdx         "Spilling to split statement for tree"
+;  V182 rat10       [V182,T60] (  3, 73.92)     ref  ->  rcx         "replacement local"
+;  V183 rat11       [V183,T74] (  3, 36.96)    long  ->  rax         "CSE for expectedClsNode"
+;  V184 rat12       [V184,T05] (  5,456.64)     ref  ->  rcx         "replacement local"
+;  V185 rat13       [V185,T40] (  3,152.21)    long  ->   r8         "CSE for expectedClsNode"
+;  V186 rat14       [V186,T79] (  5,  4.61)     ref  ->  rcx         "replacement local"
+;  V187 rat15       [V187,T83] (  3,  1.54)    long  ->   r8         "CSE for expectedClsNode"
 ;
-; Lcl frame size = 136
+; Lcl frame size = 168
 
 G_M44394_IG01:        ; bbWeight=1.24, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        mov      rax, qword ptr [rbp]
        push     rax
-       sub      rsp, 192
-       mov      qword ptr [rsp+0x308], r15
-       mov      qword ptr [rsp+0x300], r14
-       mov      qword ptr [rsp+0x2F8], r13
-       mov      qword ptr [rsp+0x2F0], r12
-       mov      qword ptr [rsp+0x2E8], rdi
-       mov      qword ptr [rsp+0x2E0], rsi
-       mov      qword ptr [rsp+0x2D8], rbx
-       lea      rbp, [rsp+0xC0]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x78], rax
+       sub      rsp, 224
+       mov      qword ptr [rsp+0x328], r15
+       mov      qword ptr [rsp+0x320], r14
+       mov      qword ptr [rsp+0x318], r13
+       mov      qword ptr [rsp+0x310], r12
+       mov      qword ptr [rsp+0x308], rdi
+       mov      qword ptr [rsp+0x300], rsi
+       mov      qword ptr [rsp+0x2F8], rbx
+       lea      rbp, [rsp+0xE0]
        vxorps   xmm4, xmm4, xmm4
-       vmovdqu  ymmword ptr [rbp-0x70], ymm4
+       vmovdqu32 zmmword ptr [rbp-0x90], zmm4
        vmovdqa  xmmword ptr [rbp-0x50], xmm4
+       xor      eax, eax
        mov      qword ptr [rbp-0x40], rax
-       mov      qword ptr [rbp-0x98], rsp
+       mov      qword ptr [rbp-0xB8], rsp
        mov      r15, gword ptr [rbp+0x210]
        ; gcrRegs +[r15]
        mov      rbx, gword ptr [rbp+0x200]
        ; gcrRegs +[rbx]
        mov      r14, gword ptr [rbp+0x1F8]
        ; gcrRegs +[r14]
-						;; size=128 bbWeight=1.24 PerfScore 30.21
+						;; size=129 bbWeight=1.24 PerfScore 28.96
 G_M44394_IG02:        ; bbWeight=39.50, gcVars=00000000000000000000100000000080 {V04 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
        ; GC ptr vars +{V04 V07}
        cmp      gword ptr [rbp+0x1F0], 0
@@ -355,18 +356,18 @@ G_M44394_IG13:        ; bbWeight=51.87, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14
        test     r13, r13
        je       G_M44394_IG03
        mov      rax, 0xD1FFAB1E      ; System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.Internal.Property]
-       mov      qword ptr [rbp-0x80], rax
+       mov      qword ptr [rbp-0x98], rax
        cmp      qword ptr [rdi], rax
        jne      G_M44394_IG24
-						;; size=41 bbWeight=51.87 PerfScore 401.96
+						;; size=44 bbWeight=51.87 PerfScore 401.96
 G_M44394_IG14:        ; bbWeight=46.68, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      edx, dword ptr [rdi+0x10]
 						;; size=3 bbWeight=46.68 PerfScore 93.36
 G_M44394_IG15:        ; bbWeight=51.87, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
-       mov      rax, qword ptr [rbp-0x80]
+       mov      rax, qword ptr [rbp-0x98]
        cmp      qword ptr [r13], rax
        jne      G_M44394_IG25
-						;; size=14 bbWeight=51.87 PerfScore 259.33
+						;; size=17 bbWeight=51.87 PerfScore 259.33
 G_M44394_IG16:        ; bbWeight=31.12, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      r8d, dword ptr [r13+0x10]
 						;; size=4 bbWeight=31.12 PerfScore 62.24
@@ -377,11 +378,11 @@ G_M44394_IG17:        ; bbWeight=51.87, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14
 						;; size=12 bbWeight=51.87 PerfScore 77.80
 G_M44394_IG18:        ; bbWeight=51.52, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        xor      edx, edx
-       mov      rax, qword ptr [rbp-0x80]
+       mov      rax, qword ptr [rbp-0x98]
        cmp      qword ptr [rdi], rax
        jne      G_M44394_IG39
        jmp      SHORT G_M44394_IG20
-						;; size=17 bbWeight=51.52 PerfScore 373.50
+						;; size=20 bbWeight=51.52 PerfScore 373.50
 G_M44394_IG19:        ; bbWeight=51.51, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      r9d, r10d
        mov      edx, dword ptr [rbp-0x64]
@@ -403,7 +404,7 @@ G_M44394_IG22:        ; bbWeight=51.51, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14
        mov      rcx, 0xD1FFAB1E      ; const ptr
        mov      r11, gword ptr [rcx]
        ; gcrRegs +[r11]
-       mov      gword ptr [rbp-0x88], r11
+       mov      gword ptr [rbp-0xA0], r11
        ; GC ptr vars +{V116}
        cmp      edx, dword ptr [rdi+0x10]
        jb       SHORT G_M44394_IG26
@@ -457,10 +458,10 @@ G_M44394_IG26:        ; bbWeight=41.72, gcVars=00000000000000000020100000000080
 						;; size=43 bbWeight=41.72 PerfScore 646.72
 G_M44394_IG27:        ; bbWeight=51.51, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx]
-       mov      rax, qword ptr [rbp-0x80]
+       mov      rax, qword ptr [rbp-0x98]
        cmp      qword ptr [r13], rax
        jne      G_M44394_IG35
-						;; size=14 bbWeight=51.51 PerfScore 257.56
+						;; size=17 bbWeight=51.51 PerfScore 257.56
 G_M44394_IG28:        ; bbWeight=32.45, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
        mov      edx, dword ptr [rbp-0x64]
        cmp      edx, dword ptr [r13+0x10]
@@ -473,9 +474,9 @@ G_M44394_IG29:        ; bbWeight=9.79, gcrefRegs=F0CA {rcx rbx rsi rdi r12 r13 r
        call     [r11]<unknown method>
        ; gcrRegs -[rcx] +[rax]
        ; gcr arg pop 0
-       mov      gword ptr [rbp-0x90], rax
+       mov      gword ptr [rbp-0xA8], rax
        ; GC ptr vars +{V118}
-       mov      r8, gword ptr [rbp-0x90]
+       mov      r8, gword ptr [rbp-0xA8]
        ; gcrRegs +[r8]
        jmp      SHORT G_M44394_IG27
 						;; size=29 bbWeight=9.79 PerfScore 70.96
@@ -528,7 +529,7 @@ G_M44394_IG34:        ; bbWeight=51.51, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14
 G_M44394_IG35:        ; bbWeight=19.06, gcVars=00000000000000000020100000000080 {V04 V07 V116}, gcrefRegs=F1C8 {rbx rsi rdi r8 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs +[r8]
        ; GC ptr vars +{V116}
-       mov      gword ptr [rbp-0x90], r8
+       mov      gword ptr [rbp-0xA8], r8
        ; GC ptr vars +{V118}
        mov      rcx, r13
        ; gcrRegs +[rcx]
@@ -540,7 +541,7 @@ G_M44394_IG35:        ; bbWeight=19.06, gcVars=00000000000000000020100000000080
        mov      rcx, rax
        ; gcrRegs +[rcx]
        mov      edx, dword ptr [rbp-0x64]
-       mov      r8, gword ptr [rbp-0x90]
+       mov      r8, gword ptr [rbp-0xA8]
        ; gcrRegs +[r8]
        jmp      SHORT G_M44394_IG31
 						;; size=41 bbWeight=19.06 PerfScore 185.83
@@ -573,10 +574,10 @@ G_M44394_IG39:        ; bbWeight=1.04, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r
        jne      SHORT G_M44394_IG43
 						;; size=9 bbWeight=1.04 PerfScore 2.33
 G_M44394_IG40:        ; bbWeight=0.70, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
-       mov      rax, qword ptr [rbp-0x80]
+       mov      rax, qword ptr [rbp-0x98]
        cmp      qword ptr [rdi], rax
        jne      SHORT G_M44394_IG46
-						;; size=9 bbWeight=0.70 PerfScore 3.50
+						;; size=12 bbWeight=0.70 PerfScore 3.50
 G_M44394_IG41:        ; bbWeight=0.67, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref
        mov      r9d, dword ptr [rdi+0x10]
 						;; size=4 bbWeight=0.67 PerfScore 1.34
@@ -596,12 +597,12 @@ G_M44394_IG44:        ; bbWeight=0.52, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r
...
+13 (+13.27%) : 111186.dasm - System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
@@ -8,42 +8,48 @@
 ; 1 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]>
+;  V00 this         [V00,T01] (  4,  4   )     ref  ->  rbx         this class-hnd single-def <System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]>
 ;  V01 arg1         [V01,T00] (  3,  6   )   byref  ->  rdx         single-def
-;  V02 arg2         [V02,T01] (  4,  3   )   byref  ->  rbx         single-def
+;  V02 arg2         [V02,T02] (  4,  3   )   byref  ->  rsi         single-def
 ;  V03 loc0         [V03,T04] (  3,  2.50)     ref  ->  rax         class-hnd exact single-def <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]]>
 ;* V04 loc1         [V04    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd single-def <System.__Canon>
 ;* V05 loc2         [V05    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] ld-addr-op <System.Collections.Generic.KeyValuePair`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]>
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.ValueTuple`2[System.__Canon,System.__Canon]>
+;* V07 tmp1         [V07    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.ValueTuple`2[System.__Canon,System.__Canon]>
 ;  V08 tmp2         [V08,T03] (  2,  4   )     ref  ->  rcx         class-hnd exact single-def "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]]>
 ;  V09 tmp3         [V09    ] (  3,  6   )  struct (24) [rsp+0x28]  do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]>
 ;* V10 tmp4         [V10    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V11 tmp5         [V11    ] (  0,  0   )    long  ->  zero-ref    "spilling helperCall"
 ;* V12 tmp6         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.ValueTuple`2[System.__Canon,System.__Canon]>
 ;* V13 tmp7         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <System.__Canon>
-;* V14 tmp8         [V14    ] (  0,  0   )     ref  ->  zero-ref    "field V01.Item1 (fldOffset=0x0)" P-INDEP
-;* V15 tmp9         [V15    ] (  0,  0   )     ref  ->  zero-ref    "field V01.Item2 (fldOffset=0x8)" P-INDEP
-;  V16 tmp10        [V16,T05] (  2,  1   )     ref  ->  rdx         single-def "V05.[000..008)"
-;* V17 tmp11        [V17    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.ValueTuple`2[System.__Canon,System.__Canon]>
+;* V14 tmp8         [V14    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.ValueTuple`2[System.__Canon,System.__Canon]]>
+;* V15 tmp9         [V15    ] (  0,  0   )     ref  ->  zero-ref    "field V01.Item1 (fldOffset=0x0)" P-INDEP
+;* V16 tmp10        [V16    ] (  0,  0   )     ref  ->  zero-ref    "field V01.Item2 (fldOffset=0x8)" P-INDEP
+;  V17 tmp11        [V17,T05] (  2,  1   )     ref  ->  rdx         single-def "V05.[000..008)"
+;* V18 tmp12        [V18    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.ValueTuple`2[System.__Canon,System.__Canon]>
 ;
-; Lcl frame size = 64
+; Lcl frame size = 72
 
 G_M60350_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+       push     rsi
        push     rbx
-       sub      rsp, 64
+       sub      rsp, 72
        vxorps   xmm4, xmm4, xmm4
        vmovdqu  xmmword ptr [rsp+0x28], xmm4
        xor      eax, eax
        mov      qword ptr [rsp+0x38], rax
-       mov      rbx, r8
-       ; byrRegs +[rbx]
-						;; size=25 bbWeight=1 PerfScore 5.08
-G_M60350_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=000C {rdx rbx}, byref
-       ; gcrRegs +[rcx]
+       mov      qword ptr [rsp+0x40], rcx
+       mov      rbx, rcx
+       ; gcrRegs +[rbx]
+       mov      rsi, r8
+       ; byrRegs +[rsi]
+						;; size=34 bbWeight=1 PerfScore 7.33
+G_M60350_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0044 {rdx rsi}, byref
        ; byrRegs +[rdx]
-       mov      rcx, gword ptr [rcx+0x18]
-						;; size=4 bbWeight=1 PerfScore 2.00
+       cmp      dword ptr [rbx], ebx
+       mov      rcx, gword ptr [rbx+0x18]
+       ; gcrRegs +[rcx]
+						;; size=6 bbWeight=1 PerfScore 5.00
 G_M60350_IG03:        ; bbWeight=1, nogc, extend
        vmovdqu  xmm0, xmmword ptr [rdx]
        vmovdqu  xmmword ptr [rsp+0x30], xmm0
@@ -62,38 +68,40 @@ G_M60350_IG04:        ; bbWeight=1, isz, extend
        test     rax, rax
        jne      SHORT G_M60350_IG07
 						;; size=25 bbWeight=1 PerfScore 9.00
-G_M60350_IG05:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M60350_IG05:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
        ; gcrRegs -[rax]
        xor      rax, rax
        ; gcrRegs +[rax]
-       mov      gword ptr [rbx], rax
+       mov      gword ptr [rsi], rax
 						;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M60350_IG06:        ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M60350_IG06:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, epilog, nogc
        ; gcrRegs -[rax]
-       ; byrRegs -[rbx]
-       add      rsp, 64
+       ; byrRegs -[rsi]
+       add      rsp, 72
        pop      rbx
+       pop      rsi
        ret      
-						;; size=6 bbWeight=0.50 PerfScore 0.88
-G_M60350_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, gcvars, byref
+						;; size=7 bbWeight=0.50 PerfScore 1.12
+G_M60350_IG07:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0009 {rax rbx}, byrefRegs=0040 {rsi}, gcvars, byref
        ; gcrRegs +[rax]
-       ; byrRegs +[rbx]
+       ; byrRegs +[rsi]
        mov      rdx, gword ptr [rax+0x20]
        ; gcrRegs +[rdx]
-       mov      rcx, rbx
+       mov      rcx, rsi
        ; byrRegs +[rcx]
        call     CORINFO_HELP_CHECKED_ASSIGN_REF
        ; gcrRegs -[rax rdx]
-       ; byrRegs -[rcx rbx]
+       ; byrRegs -[rcx rsi]
        mov      eax, 1
 						;; size=17 bbWeight=0.50 PerfScore 1.75
 G_M60350_IG08:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 64
+       add      rsp, 72
        pop      rbx
+       pop      rsi
        ret      
-						;; size=6 bbWeight=0.50 PerfScore 0.88
+						;; size=7 bbWeight=0.50 PerfScore 1.12
 
-; Total bytes of code 98, prolog size 22, PerfScore 25.21, instruction count 29, allocated bytes for code 98 (MethodHash=78e81441) for method System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
+; Total bytes of code 111, prolog size 28, PerfScore 30.96, instruction count 35, allocated bytes for code 111 (MethodHash=78e81441) for method System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -101,10 +109,11 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x05
-  CountOfUnwindCodes: 2
+  SizeOfProlog      : 0x06
+  CountOfUnwindCodes: 3
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 7 * 8 + 8 = 64 = 0x40
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 8 * 8 + 8 = 72 = 0x48
+    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
benchmarks.run.windows.x64.checked.mch
-14 (-0.71%) : 6664.dasm - Sigil.Impl.ReturnTracer:TraceFrom(int,Sigil.Impl.LinqList`1[Sigil.Label],Sigil.Impl.LinqHashSet`1[Sigil.Label]):Sigil.Impl.ReturnTracerResult:this (FullOpts)
@@ -9,122 +9,123 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T05] ( 16, 18.50)     ref  ->  rbx         this class-hnd single-def <Sigil.Impl.ReturnTracer>
-;  V01 arg1         [V01,T44] (  3,  3   )     int  ->  r14         single-def
+;  V01 arg1         [V01,T43] (  3,  3   )     int  ->  r14         single-def
 ;  V02 arg2         [V02,T13] (  7, 10.50)     ref  ->  rdi         class-hnd single-def <Sigil.Impl.LinqList`1[Sigil.Label]>
 ;  V03 arg3         [V03,T10] (  7, 14   )     ref  ->  rsi         class-hnd single-def <Sigil.Impl.LinqHashSet`1[Sigil.Label]>
 ;  V04 loc0         [V04,T09] ( 17, 16   )     ref  ->  r15         class-hnd exact single-def <Sigil.Impl.ReturnTracer+<>c__DisplayClass7_0>
-;  V05 loc1         [V05,T89] (  2,  1   )     ref  ->  rax         ld-addr-op class-hnd <Sigil.Impl.ReturnTracerResult>
-;  V06 loc2         [V06,T90] (  2,  1   )     int  ->  r14         single-def
-;  V07 loc3         [V07,T91] (  2,  1   )     int  ->  rax         single-def
-;  V08 loc4         [V08,T33] (  5,  7   )     ref  ->  r14         class-hnd exact single-def <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
-;  V09 loc5         [V09,T22] (  7,  9   )     ref  ->  [rbp-0x58]  class-hnd EH-live spill-single-def <<unknown class>>
-;  V10 loc6         [V10,T06] (  8, 20   )     ref  ->  r13         class-hnd <Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]>
+;  V05 loc1         [V05,T87] (  2,  1   )     ref  ->  rax         ld-addr-op class-hnd <Sigil.Impl.ReturnTracerResult>
+;  V06 loc2         [V06,T88] (  2,  1   )     int  ->  r14         single-def
+;  V07 loc3         [V07,T89] (  2,  1   )     int  ->  rax         single-def
+;* V08 loc4         [V08,T92] (  0,  0   )    long  ->  zero-ref    class-hnd exact single-def <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
+;  V09 loc5         [V09,T22] (  7,  9   )     ref  ->  [rbp-0x60]  class-hnd EH-live spill-single-def <<unknown class>>
+;  V10 loc6         [V10,T06] (  8, 20   )     ref  ->  r14         class-hnd <Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]>
 ;* V11 loc7         [V11    ] (  0,  0   )  struct ( 8) zero-ref    <System.Reflection.Emit.OpCode>
 ;* V12 loc8         [V12    ] (  0,  0   )     int  ->  zero-ref   
-;  V13 loc9         [V13,T51] (  2,  4   )     int  ->  [rbp-0x3C]  spill-single-def
-;  V14 loc10        [V14,T21] (  5, 10   )     ref  ->  [rbp-0x60]  class-hnd spill-single-def <Sigil.Impl.ReturnTracerResult>
-;  V15 loc11        [V15,T50] (  2,  4   )     ref  ->  r13         class-hnd <Sigil.Impl.ReturnTracerResult>
+;  V13 loc9         [V13,T50] (  2,  4   )     int  ->  [rbp-0x3C]  spill-single-def
+;  V14 loc10        [V14,T21] (  5, 10   )     ref  ->  [rbp-0x68]  class-hnd spill-single-def <Sigil.Impl.ReturnTracerResult>
+;  V15 loc11        [V15,T49] (  2,  4   )     ref  ->  r14         class-hnd <Sigil.Impl.ReturnTracerResult>
 ;  V16 OutArgs      [V16    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V17 tmp1         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Sigil.Impl.ReturnTracer+<>c__DisplayClass7_0>
-;  V18 tmp2         [V18,T45] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V19 tmp3         [V19,T56] (  3,  3   )     ref  ->  r13         class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]]>
-;  V20 tmp4         [V20,T75] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "dup spill" <Sigil.Impl.SigilFunc`2[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int],int]>
-;  V21 tmp5         [V21,T57] (  3,  3   )     ref  ->  r14         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V18 tmp2         [V18,T44] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V19 tmp3         [V19,T55] (  3,  3   )     ref  ->  r13         class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]]>
+;  V20 tmp4         [V20,T73] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "dup spill" <Sigil.Impl.SigilFunc`2[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int],int]>
+;  V21 tmp5         [V21,T56] (  3,  3   )     ref  ->  r14         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V22 tmp6         [V22    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V23 tmp7         [V23    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V24 tmp8         [V24,T73] (  4,  2   )     ref  ->  r13        
-;  V25 tmp9         [V25,T76] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "dup spill" <Sigil.Impl.SigilFunc`2[Sigil.Impl.IGrouping`2[int,Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]],int]>
-;  V26 tmp10        [V26,T58] (  3,  3   )     ref  ->  r14         class-hnd single-def "impAppendStmt" <<unknown class>>
+;  V24 tmp8         [V24,T71] (  4,  2   )     ref  ->  r13        
+;  V25 tmp9         [V25,T74] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "dup spill" <Sigil.Impl.SigilFunc`2[Sigil.Impl.IGrouping`2[int,Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]],int]>
+;  V26 tmp10        [V26,T57] (  3,  3   )     ref  ->  r14         class-hnd single-def "impAppendStmt" <<unknown class>>
 ;* V27 tmp11        [V27    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V28 tmp12        [V28    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V29 tmp13        [V29,T74] (  4,  2   )     ref  ->  r13        
-;  V30 tmp14        [V30,T46] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[int,ubyte]>
-;  V31 tmp15        [V31,T59] (  3,  3   )     ref  ->  r13         class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[int]>
-;  V32 tmp16        [V32,T47] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[int,ubyte]>
-;  V33 tmp17        [V33,T60] (  3,  3   )     ref  ->  r12         class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[int]>
-;  V34 tmp18        [V34,T61] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
+;  V29 tmp13        [V29,T72] (  4,  2   )     ref  ->  r13        
+;  V30 tmp14        [V30,T45] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[int,ubyte]>
+;  V31 tmp15        [V31,T58] (  3,  3   )     ref  ->  r13         class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[int]>
+;  V32 tmp16        [V32,T46] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[int,ubyte]>
+;  V33 tmp17        [V33,T59] (  3,  3   )     ref  ->  r12         class-hnd single-def "impAppendStmt" <Sigil.Impl.LinqList`1[int]>
+;* V34 tmp18        [V34    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
 ;  V35 tmp19        [V35,T28] (  2,  8   )     ref  ->  rcx         class-hnd "impAppendStmt" <Sigil.Impl.LinqDictionary`2[Sigil.Label,int]>
-;  V36 tmp20        [V36,T11] (  4, 16   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "dup spill" <<unknown class>>
-;  V37 tmp21        [V37,T14] (  3, 12   )     ref  ->  r12         class-hnd "impSpillLclRefs" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-;  V38 tmp22        [V38,T29] (  2,  8   )     int  ->  [rbp-0x40]  spill-single-def "impSpillLclRefs"
-;  V39 tmp23        [V39,T12] (  4, 16   )     ref  ->  r13         class-hnd "dup spill" <Sigil.Impl.ReturnTracerResult>
+;  V36 tmp20        [V36,T11] (  4, 16   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "dup spill" <<unknown class>>
+;  V37 tmp21        [V37,T14] (  3, 12   )     ref  ->  r13         class-hnd "impSpillLclRefs" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+;  V38 tmp22        [V38,T29] (  2,  8   )     int  ->  r12         "impSpillLclRefs"
+;  V39 tmp23        [V39,T12] (  4, 16   )     ref  ->  r14         class-hnd "dup spill" <Sigil.Impl.ReturnTracerResult>
 ;  V40 tmp24        [V40,T15] (  3, 12   )     ref  ->  rcx         class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
 ;  V41 tmp25        [V41,T30] (  2,  8   )     int  ->  rdx         "impAppendStmt"
-;  V42 tmp26        [V42,T16] (  3, 12   )     ref  ->  r13         class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-;  V43 tmp27        [V43,T31] (  2,  8   )     int  ->  r12         "impAppendStmt"
+;  V42 tmp26        [V42,T16] (  3, 12   )     ref  ->  r14         class-hnd "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+;  V43 tmp27        [V43,T31] (  2,  8   )     int  ->  r13         "impAppendStmt"
 ;* V44 tmp28        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "dup spill" <Sigil.Impl.ReturnTracerResult>
-;  V45 tmp29        [V45,T62] (  3,  3   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-;  V46 tmp30        [V46,T85] (  2,  2   )     int  ->  rsi         "impAppendStmt"
-;  V47 tmp31        [V47,T63] (  3,  3   )     ref  ->  rdi         class-hnd single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
-;  V48 tmp32        [V48,T64] (  3,  3   )     ref  ->  rsi         class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-;  V49 tmp33        [V49,T86] (  2,  2   )     int  ->  r15         "impAppendStmt"
-;  V50 tmp34        [V50,T65] (  3,  3   )     ref  ->  rbx         class-hnd single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
-;  V51 tmp35        [V51,T66] (  3,  3   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-;  V52 tmp36        [V52,T87] (  2,  2   )     int  ->  r15         "impAppendStmt"
+;  V45 tmp29        [V45,T60] (  3,  3   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+;  V46 tmp30        [V46,T83] (  2,  2   )     int  ->  rsi         "impAppendStmt"
+;  V47 tmp31        [V47,T61] (  3,  3   )     ref  ->  rdi         class-hnd single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
+;  V48 tmp32        [V48,T62] (  3,  3   )     ref  ->  rsi         class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+;  V49 tmp33        [V49,T84] (  2,  2   )     int  ->  r15         "impAppendStmt"
+;  V50 tmp34        [V50,T63] (  3,  3   )     ref  ->  rbx         class-hnd single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
+;  V51 tmp35        [V51,T64] (  3,  3   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+;  V52 tmp36        [V52,T85] (  2,  2   )     int  ->  r15         "impAppendStmt"
 ;* V53 tmp37        [V53    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
-;  V54 tmp38        [V54,T67] (  3,  3   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-;  V55 tmp39        [V55,T88] (  2,  2   )     int  ->  r15         "impAppendStmt"
+;  V54 tmp38        [V54,T65] (  3,  3   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+;  V55 tmp39        [V55,T86] (  2,  2   )     int  ->  r15         "impAppendStmt"
 ;* V56 tmp40        [V56    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "dup spill" <Sigil.Impl.ReturnTracerResult>
-;  V57 tmp41        [V57,T42] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[Sigil.Impl.IGrouping`2[int,Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]],int]>
-;  V58 tmp42        [V58,T43] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int],int]>
-;* V59 tmp43        [V59,T92] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V60 tmp44        [V60,T34] (  3,  6   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
-;  V61 tmp45        [V61,T52] (  2,  4   )     int  ->  rdx         "Inlining Arg"
-;  V62 tmp46        [V62,T72] (  3,  2.50)   byref  ->  rax         single-def "Inline stloc first use temp"
-;  V63 tmp47        [V63,T77] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <Sigil.Impl.ReturnTracer+<>c>
-;  V64 tmp48        [V64,T78] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <Sigil.Impl.ReturnTracer+<>c>
-;  V65 tmp49        [V65,T68] (  3,  3   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <Sigil.Impl.LinqRoot`1[System.__Canon]>
+;  V57 tmp41        [V57,T41] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[Sigil.Impl.IGrouping`2[int,Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int]],int]>
+;  V58 tmp42        [V58,T42] (  5,  5   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.SigilFunc`2[Sigil.Impl.SigilTuple`3[System.Reflection.Emit.OpCode,Sigil.Label,int],int]>
+;* V59 tmp43        [V59,T90] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V60 tmp44        [V60,T33] (  3,  6   )     ref  ->  rcx         class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[int,Sigil.Impl.ReturnTracerResult]>
+;  V61 tmp45        [V61,T51] (  2,  4   )     int  ->  rdx         "Inlining Arg"
+;  V62 tmp46        [V62,T70] (  3,  2.50)   byref  ->  rax         single-def "Inline stloc first use temp"
+;  V63 tmp47        [V63,T75] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <Sigil.Impl.ReturnTracer+<>c>
+;  V64 tmp48        [V64,T76] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <Sigil.Impl.ReturnTracer+<>c>
+;  V65 tmp49        [V65,T66] (  3,  3   )     ref  ->  rax         class-hnd single-def "Inlining Arg" <Sigil.Impl.LinqRoot`1[System.__Canon]>
 ;* V66 tmp50        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Sigil.Impl.LinqRoot`1[int]>
 ;* V67 tmp51        [V67    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Sigil.Impl.LinqRoot`1[int]>
-;  V68 tmp52        [V68,T48] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
-;  V69 tmp53        [V69,T49] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
-;  V70 tmp54        [V70,T69] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V68 tmp52        [V68,T47] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
+;  V69 tmp53        [V69,T48] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
+;  V70 tmp54        [V70,T67] (  3,  3   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V71 tmp55        [V71    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
-;  V72 tmp56        [V72,T07] (  5, 20   )     ref  ->  [rbp-0x70]  class-hnd exact spill-single-def "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
+;  V72 tmp56        [V72,T07] (  5, 20   )     ref  ->  r12         class-hnd exact "NewObj constructor temp" <Sigil.Impl.ReturnTracerResult>
 ;* V73 tmp57        [V73    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp58        [V74    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Sigil.Impl.ReturnTracerResult>
 ;  V75 tmp59        [V75,T00] (  7, 28   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V76 tmp60        [V76,T35] (  3,  6   )     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V76 tmp60        [V76,T34] (  3,  6   )     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V77 tmp61        [V77,T23] (  4,  8   )     int  ->  rdx         "Inline stloc first use temp"
 ;  V78 tmp62        [V78,T27] (  3,  8   )     ref  ->  [rbp-0x78]  class-hnd spill-single-def "Inlining Arg" <System.__Canon>
-;  V79 tmp63        [V79,T53] (  2,  4   )     int  ->  [rbp-0x44]  spill-single-def "Inline return value spill temp"
+;  V79 tmp63        [V79,T52] (  2,  4   )     int  ->  [rbp-0x40]  spill-single-def "Inline return value spill temp"
 ;  V80 tmp64        [V80,T17] (  3, 12   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,int]>
-;  V81 tmp65        [V81,T36] (  3,  6   )   byref  ->  rax         "Inline stloc first use temp"
+;  V81 tmp65        [V81,T35] (  3,  6   )   byref  ->  rax         "Inline stloc first use temp"
 ;* V82 tmp66        [V82    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op "Inline ldloca(s) first use temp"
 ;* V83 tmp67        [V83    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
 ;  V84 tmp68        [V84,T18] (  3, 12   )     ref  ->   r8         class-hnd "Inlining Arg" <System.__Canon>
 ;  V85 tmp69        [V85,T03] (  6, 24   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V86 tmp70        [V86,T37] (  3,  6   )     ref  ->   r9         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V86 tmp70        [V86,T36] (  3,  6   )     ref  ->   r9         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V87 tmp71        [V87,T24] (  4,  8   )     int  ->  rdx         "Inline stloc first use temp"
 ;* V88 tmp72        [V88    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.__Canon>
 ;* V89 tmp73        [V89    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V90 tmp74        [V90    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Sigil.Impl.ReturnTracerResult>
 ;  V91 tmp75        [V91,T01] (  7, 28   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V92 tmp76        [V92,T38] (  3,  6   )     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V92 tmp76        [V92,T37] (  3,  6   )     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V93 tmp77        [V93,T25] (  4,  8   )     int  ->  rdx         "Inline stloc first use temp"
 ;* V94 tmp78        [V94    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V95 tmp79        [V95    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Sigil.Impl.ReturnTracerResult>
 ;  V96 tmp80        [V96,T02] (  7, 28   )     ref  ->  rcx         class-hnd "Inlining Arg" <System.Collections.Generic.List`1[System.__Canon]>
-;  V97 tmp81        [V97,T39] (  3,  6   )     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
+;  V97 tmp81        [V97,T38] (  3,  6   )     ref  ->   r8         class-hnd "Inline stloc first use temp" <<unknown class>>
 ;  V98 tmp82        [V98,T26] (  4,  8   )     int  ->  rdx         "Inline stloc first use temp"
-;  V99 tmp83        [V99,T32] (  6,  7   )     ref  ->  rax         "Single return block return value"
-;  V100 tmp84       [V100,T54] (  2,  4   )     int  ->  r12         "field V11.m_value (fldOffset=0x0)" P-INDEP
-;  V101 tmp85       [V101,T55] (  2,  4   )     int  ->  [rbp-0x48]  spill-single-def "field V11.m_flags (fldOffset=0x4)" P-INDEP
-;  V102 tmp86       [V102,T79] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V103 tmp87       [V103,T80] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V104 tmp88       [V104,T81] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V105 tmp89       [V105,T82] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V106 tmp90       [V106,T83] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;  V107 tmp91       [V107,T70] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
-;  V108 tmp92       [V108,T84] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;  V109 tmp93       [V109,T71] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
-;  V110 tmp94       [V110,T04] (  3, 24   )     ref  ->  rcx         "argument with side effect"
-;  V111 tmp95       [V111,T19] (  3, 12   )     ref  ->  rcx         "argument with side effect"
-;  V112 tmp96       [V112,T20] (  3, 12   )  struct ( 8) [rbp-0x50]  do-not-enreg[SF] "by-value struct argument" <System.Reflection.Emit.OpCode>
-;  V113 PSPSym      [V113,T93] (  1,  1   )    long  ->  [rbp-0x90]  do-not-enreg[V] "PSPSym"
-;  V114 cse0        [V114,T41] (  3,  6   )     int  ->  rdx         "CSE #12: conservative"
-;  V115 cse1        [V115,T40] (  3,  6   )     ref  ->  rcx         "CSE #11: conservative"
-;  V116 cse2        [V116,T08] (  9, 18   )     ref  ->  [rbp-0x80]  multi-def "CSE #10: aggressive"
+;  V99 tmp83        [V99    ] (  6,  7.50)  struct (16) [rbp-0x50]  do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]>
+;  V100 tmp84       [V100,T32] (  6,  7   )     ref  ->  rax         "Single return block return value"
+;  V101 tmp85       [V101,T53] (  2,  4   )     int  ->  r12         "field V11.m_value (fldOffset=0x0)" P-INDEP
+;  V102 tmp86       [V102,T54] (  2,  4   )     int  ->  r13         "field V11.m_flags (fldOffset=0x4)" P-INDEP
+;  V103 tmp87       [V103,T77] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V104 tmp88       [V104,T78] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V105 tmp89       [V105,T79] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V106 tmp90       [V106,T80] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
+;  V107 tmp91       [V107,T81] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
+;  V108 tmp92       [V108,T68] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
+;  V109 tmp93       [V109,T82] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
+;  V110 tmp94       [V110,T69] (  3,  3   )     ref  ->  rax         single-def "argument with side effect"
+;  V111 tmp95       [V111,T04] (  3, 24   )     ref  ->  rcx         "argument with side effect"
+;  V112 tmp96       [V112,T19] (  3, 12   )     ref  ->  rcx         "argument with side effect"
+;  V113 tmp97       [V113,T20] (  3, 12   )  struct ( 8) [rbp-0x58]  do-not-enreg[SF] "by-value struct argument" <System.Reflection.Emit.OpCode>
+;  V114 PSPSym      [V114,T91] (  1,  1   )    long  ->  [rbp-0x90]  do-not-enreg[V] "PSPSym"
+;  V115 cse0        [V115,T40] (  3,  6   )     int  ->  rdx         "CSE #12: conservative"
+;  V116 cse1        [V116,T39] (  3,  6   )     ref  ->  rcx         "CSE #11: conservative"
+;  V117 cse2        [V117,T08] (  9, 18   )     ref  ->  [rbp-0x80]  multi-def "CSE #10: aggressive"
 ;
 ; Lcl frame size = 120
 
@@ -139,6 +140,9 @@ G_M25496_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbx
        sub      rsp, 120
        lea      rbp, [rsp+0xB0]
+       xor      eax, eax
+       mov      qword ptr [rbp-0x50], rax
+       mov      qword ptr [rbp-0x48], rax
        mov      qword ptr [rbp-0x90], rsp
        mov      rbx, rcx
        ; gcrRegs +[rbx]
@@ -147,7 +151,7 @@ G_M25496_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        ; gcrRegs +[rdi]
        mov      rsi, r9
        ; gcrRegs +[rsi]
-						;; size=43 bbWeight=1 PerfScore 10.75
+						;; size=53 bbWeight=1 PerfScore 13.00
 G_M25496_IG02:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      rcx, 0xD1FFAB1E      ; Sigil.Impl.ReturnTracer+<>c__DisplayClass7_0
        call     CORINFO_HELP_NEWSFAST
@@ -504,46 +508,37 @@ G_M25496_IG09:        ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
 G_M25496_IG10:        ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax] +[rsi rdi r15]
        mov      rcx, 0xD1FFAB1E      ; Sigil.Impl.LinqList`1[Sigil.Impl.ReturnTracerResult]
+       mov      qword ptr [rbp-0x50], rcx
+       mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
        mov      r14, rax
        ; gcrRegs +[r14]
-       mov      rcx, 0xD1FFAB1E      ; <unknown class>
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
-       mov      r13, rax
-       ; gcrRegs +[r13]
        test     byte  ptr [(reloc)], 1      ; global ptr
        je       G_M25496_IG29
-						;; size=49 bbWeight=0.50 PerfScore 3.50
-G_M25496_IG11:        ; bbWeight=0.50, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref
+						;; size=45 bbWeight=0.50 PerfScore 3.38
+G_M25496_IG11:        ; bbWeight=0.50, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        mov      rcx, 0xD1FFAB1E      ; data for <unknown class>:<unknown field>
        mov      rdx, gword ptr [rcx]
        ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [r13+0x08]
+       lea      rcx, bword ptr [r14+0x08]
        ; byrRegs +[rcx]
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rdx]
...
+0 (0.00%) : 11698.dasm - System.Collections.Generic.SortedList`2[int,int]:IndexOfKey(int):int:this (FullOpts)
@@ -12,8 +12,9 @@
 ;  V01 arg1         [V01,T01] (  3,  3   )     int  ->  rdx         single-def
 ;  V02 loc0         [V02,T02] (  3,  3   )     int  ->  rax        
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
 ;* V05 tmp2         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int32>
+;* V06 tmp3         [V06    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
 ;
 ; Lcl frame size = 40
 
+0 (0.00%) : 22050.dasm - System.Collections.Generic.SortedList`2[int,int]:Add(int,int):this (FullOpts)
@@ -13,13 +13,14 @@
 ;  V02 arg2         [V02,T02] (  3,  3   )     int  ->  rdi         single-def
 ;  V03 loc0         [V03,T03] (  3,  3   )     int  ->  rax        
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V05 tmp1         [V05    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
 ;  V06 tmp2         [V06,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int32>
 ;  V07 tmp3         [V07,T06] (  2,  0   )     ref  ->  rdi         class-hnd exact single-def "impImportAndPushBox" <System.String>
 ;  V08 tmp4         [V08,T05] (  3,  0   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int32>
-;  V10 tmp6         [V10,T07] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
-;  V11 tmp7         [V11,T08] (  2,  0   )     ref  ->   r8         single-def "argument with side effect"
+;* V10 tmp6         [V10    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
+;  V11 tmp7         [V11,T07] (  2,  0   )     ref  ->  rbx         single-def "argument with side effect"
+;  V12 tmp8         [V12,T08] (  2,  0   )     ref  ->   r8         single-def "argument with side effect"
 ;
 ; Lcl frame size = 48
 
+0 (0.00%) : 23141.dasm - System.Collections.Generic.SortedDictionary`2[int,int]:Remove(int):ubyte:this (FullOpts)
@@ -12,17 +12,18 @@
 ;  V01 arg1         [V01,T02] (  3,  3   )     int  ->  rdx         single-def
 ;* V02 loc0         [V02    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
 ;  V05 tmp2         [V05,T03] (  2,  4   )     ref  ->  rcx         class-hnd exact single-def "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
 ;* V06 tmp3         [V06    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
 ;* V07 tmp4         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int32>
 ;* V08 tmp5         [V08    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V09 tmp6         [V09    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[int,int]>
-;  V10 tmp7         [V10,T04] (  2,  2   )     int  ->  rdx         "field V06.key (fldOffset=0x0)" P-INDEP
-;* V11 tmp8         [V11,T05] (  0,  0   )     int  ->  zero-ref    "field V06.value (fldOffset=0x4)" P-INDEP
-;* V12 tmp9         [V12    ] (  0,  0   )     int  ->  zero-ref    "field V09.key (fldOffset=0x0)" P-INDEP
-;* V13 tmp10        [V13    ] (  0,  0   )     int  ->  zero-ref    "field V09.value (fldOffset=0x4)" P-INDEP
-;  V14 tmp11        [V14,T00] (  3,  6   )  struct ( 8) [rsp+0x20]  do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
+;* V10 tmp7         [V10    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
+;  V11 tmp8         [V11,T04] (  2,  2   )     int  ->  rdx         "field V06.key (fldOffset=0x0)" P-INDEP
+;* V12 tmp9         [V12,T05] (  0,  0   )     int  ->  zero-ref    "field V06.value (fldOffset=0x4)" P-INDEP
+;* V13 tmp10        [V13    ] (  0,  0   )     int  ->  zero-ref    "field V09.key (fldOffset=0x0)" P-INDEP
+;* V14 tmp11        [V14    ] (  0,  0   )     int  ->  zero-ref    "field V09.value (fldOffset=0x4)" P-INDEP
+;  V15 tmp12        [V15,T00] (  3,  6   )  struct ( 8) [rsp+0x20]  do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
 ;
 ; Lcl frame size = 40
 
+0 (0.00%) : 9862.dasm - System.Collections.Generic.SortedDictionary`2[int,int]:Add(int,int):this (FullOpts)
@@ -12,16 +12,17 @@
 ;  V01 arg1         [V01,T02] (  3,  3   )     int  ->  rdx         single-def
 ;  V02 arg2         [V02,T03] (  3,  3   )     int  ->   r8         single-def
 ;  V03 OutArgs      [V03    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V04 tmp1         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V04 tmp1         [V04    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
 ;* V05 tmp2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
 ;  V06 tmp3         [V06,T04] (  2,  4   )     ref  ->  rcx         class-hnd exact single-def "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
 ;* V07 tmp4         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int32>
 ;* V08 tmp5         [V08    ] (  0,  0   )  struct ( 8) zero-ref    "Inlining Arg" <System.Collections.Generic.KeyValuePair`2[int,int]>
-;  V09 tmp6         [V09,T05] (  2,  2   )     int  ->  rdx         "field V05.key (fldOffset=0x0)" P-INDEP
-;  V10 tmp7         [V10,T06] (  2,  2   )     int  ->   r8         "field V05.value (fldOffset=0x4)" P-INDEP
-;* V11 tmp8         [V11    ] (  0,  0   )     int  ->  zero-ref    "field V08.key (fldOffset=0x0)" P-INDEP
-;* V12 tmp9         [V12    ] (  0,  0   )     int  ->  zero-ref    "field V08.value (fldOffset=0x4)" P-INDEP
-;  V13 tmp10        [V13,T00] (  3,  6   )  struct ( 8) [rsp+0x20]  do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
+;* V09 tmp6         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
+;  V10 tmp7         [V10,T05] (  2,  2   )     int  ->  rdx         "field V05.key (fldOffset=0x0)" P-INDEP
+;  V11 tmp8         [V11,T06] (  2,  2   )     int  ->   r8         "field V05.value (fldOffset=0x4)" P-INDEP
+;* V12 tmp9         [V12    ] (  0,  0   )     int  ->  zero-ref    "field V08.key (fldOffset=0x0)" P-INDEP
+;* V13 tmp10        [V13    ] (  0,  0   )     int  ->  zero-ref    "field V08.value (fldOffset=0x4)" P-INDEP
+;  V14 tmp11        [V14,T00] (  3,  6   )  struct ( 8) [rsp+0x20]  do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
 ;
 ; Lcl frame size = 40
 
+0 (0.00%) : 12394.dasm - System.Collections.Generic.SortedDictionary`2[int,int]:TryGetValue(int,byref):ubyte:this (FullOpts)
@@ -15,16 +15,17 @@
 ;* V04 loc1         [V04    ] (  0,  0   )     int  ->  zero-ref    ld-addr-op
 ;* V05 loc2         [V05    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Collections.Generic.KeyValuePair`2[int,int]>
 ;  V06 OutArgs      [V06    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V07 tmp1         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
+;* V07 tmp1         [V07    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int32>
 ;  V08 tmp2         [V08,T04] (  2,  4   )     ref  ->  rcx         class-hnd exact single-def "impAppendStmt" <System.Collections.Generic.TreeSet`1[System.Collections.Generic.KeyValuePair`2[int,int]]>
 ;* V09 tmp3         [V09    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Collections.Generic.KeyValuePair`2[int,int]>
 ;* V10 tmp4         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int32>
 ;* V11 tmp5         [V11    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V12 tmp6         [V12    ] (  0,  0   )     int  ->  zero-ref    "field V05.key (fldOffset=0x0)" P-INDEP
-;  V13 tmp7         [V13,T07] (  2,  1   )     int  ->  rax         "field V05.value (fldOffset=0x4)" P-INDEP
-;  V14 tmp8         [V14,T06] (  2,  2   )     int  ->  rdx         "field V09.key (fldOffset=0x0)" P-INDEP
-;* V15 tmp9         [V15,T08] (  0,  0   )     int  ->  zero-ref    "field V09.value (fldOffset=0x4)" P-INDEP
-;  V16 tmp10        [V16,T00] (  3,  6   )  struct ( 8) [rsp+0x28]  do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
+;* V12 tmp6         [V12    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,int]>
+;* V13 tmp7         [V13    ] (  0,  0   )     int  ->  zero-ref    "field V05.key (fldOffset=0x0)" P-INDEP
+;  V14 tmp8         [V14,T07] (  2,  1   )     int  ->  rax         "field V05.value (fldOffset=0x4)" P-INDEP
+;  V15 tmp9         [V15,T06] (  2,  2   )     int  ->  rdx         "field V09.key (fldOffset=0x0)" P-INDEP
+;* V16 tmp10        [V16,T08] (  0,  0   )     int  ->  zero-ref    "field V09.value (fldOffset=0x4)" P-INDEP
+;  V17 tmp11        [V17,T00] (  3,  6   )  struct ( 8) [rsp+0x28]  do-not-enreg[SF] "by-value struct argument" <System.Collections.Generic.KeyValuePair`2[int,int]>
 ;
 ; Lcl frame size = 48
 
libraries.pmi.windows.x64.checked.mch
-42 (-39.62%) : 15855.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]:Equals(long,long):ubyte:this (FullOpts)
@@ -8,40 +8,28 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]>
-;  V01 arg1         [V01,T00] (  3,  2   )    long  ->  rbx         single-def
-;  V02 arg2         [V02,T01] (  3,  2   )    long  ->  rsi         single-def
-;* V03 loc0         [V03,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Int64>
-;* V04 loc1         [V04,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Int64>
+;* V01 arg1         [V01    ] (  0,  0   )    long  ->  zero-ref    single-def
+;* V02 arg2         [V02    ] (  0,  0   )    long  ->  zero-ref    single-def
+;* V03 loc0         [V03    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Int64>
+;* V04 loc1         [V04    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Int64>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T02] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Int64>
-;  V07 tmp2         [V07,T03] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Int64>
-;  V08 tmp3         [V08,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V09 tmp4         [V09,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V10 cse0         [V10,T05] (  3,  0   )    long  ->  rdi         "CSE #01: aggressive"
+;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int64>
+;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int64>
+;  V08 tmp3         [V08,T00] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,long]>
+;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,long]>
+;  V11 tmp6         [V11,T01] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
 ; Lcl frame size = 32
 
 G_M39211_IG01:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       push     rdi
-       push     rsi
        push     rbx
        sub      rsp, 32
-       mov      rbx, rdx
-       mov      rsi, r8
-						;; size=13 bbWeight=0 PerfScore 0.00
+						;; size=5 bbWeight=0 PerfScore 0.00
 G_M39211_IG02:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rdi, 0xD1FFAB1E      ; System.Int64
-       mov      rcx, rdi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      qword ptr [rax+0x08], rbx
-       mov      rcx, rdi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
-       mov      qword ptr [rax+0x08], rsi
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
+       ; gcrRegs +[rax]
        ; gcr arg pop 0
        mov      rbx, rax
        ; gcrRegs +[rbx]
@@ -62,9 +50,9 @@ G_M39211_IG02:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx rbx]
        ; gcr arg pop 0
        int3     
-						;; size=93 bbWeight=0 PerfScore 0.00
+						;; size=59 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 106, prolog size 7, PerfScore 0.00, instruction count 25, allocated bytes for code 106 (MethodHash=cd2566d4) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]:Equals(long,long):ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 5, PerfScore 0.00, instruction count 14, allocated bytes for code 64 (MethodHash=cd2566d4) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]:Equals(long,long):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -72,12 +60,10 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x07
-  CountOfUnwindCodes: 4
+  SizeOfProlog      : 0x05
+  CountOfUnwindCodes: 2
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
-    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+    CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-41 (-39.05%) : 15847.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]:Equals(short,short):ubyte:this (FullOpts)
@@ -8,40 +8,28 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]>
-;  V01 arg1         [V01,T00] (  3,  2   )   short  ->  rbx         single-def
-;  V02 arg2         [V02,T01] (  3,  2   )   short  ->  rsi         single-def
-;* V03 loc0         [V03,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Int16>
-;* V04 loc1         [V04,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Int16>
+;* V01 arg1         [V01    ] (  0,  0   )   short  ->  zero-ref    single-def
+;* V02 arg2         [V02    ] (  0,  0   )   short  ->  zero-ref    single-def
+;* V03 loc0         [V03    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Int16>
+;* V04 loc1         [V04    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Int16>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T02] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Int16>
-;  V07 tmp2         [V07,T03] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Int16>
-;  V08 tmp3         [V08,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V09 tmp4         [V09,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V10 cse0         [V10,T05] (  3,  0   )    long  ->  rdi         "CSE #01: aggressive"
+;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int16>
+;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int16>
+;  V08 tmp3         [V08,T00] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,short]>
+;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,short]>
+;  V11 tmp6         [V11,T01] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
 ; Lcl frame size = 32
 
 G_M61651_IG01:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       push     rdi
-       push     rsi
        push     rbx
        sub      rsp, 32
-       mov      ebx, edx
-       mov      esi, r8d
-						;; size=12 bbWeight=0 PerfScore 0.00
+						;; size=5 bbWeight=0 PerfScore 0.00
 G_M61651_IG02:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rdi, 0xD1FFAB1E      ; System.Int16
-       mov      rcx, rdi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      word  ptr [rax+0x08], bx
-       mov      rcx, rdi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
-       mov      word  ptr [rax+0x08], si
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
+       ; gcrRegs +[rax]
        ; gcr arg pop 0
        mov      rbx, rax
        ; gcrRegs +[rbx]
@@ -62,9 +50,9 @@ G_M61651_IG02:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx rbx]
        ; gcr arg pop 0
        int3     
-						;; size=93 bbWeight=0 PerfScore 0.00
+						;; size=59 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 105, prolog size 7, PerfScore 0.00, instruction count 25, allocated bytes for code 105 (MethodHash=8fb60f2c) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]:Equals(short,short):ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 5, PerfScore 0.00, instruction count 14, allocated bytes for code 64 (MethodHash=8fb60f2c) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]:Equals(short,short):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -72,12 +60,10 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x07
-  CountOfUnwindCodes: 4
+  SizeOfProlog      : 0x05
+  CountOfUnwindCodes: 2
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
-    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+    CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-40 (-38.46%) : 15844.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]:Equals(ubyte,ubyte):ubyte:this (FullOpts)
@@ -8,40 +8,28 @@
 ; Final local variable assignments
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]>
-;  V01 arg1         [V01,T00] (  3,  2   )   ubyte  ->  rbx         single-def
-;  V02 arg2         [V02,T01] (  3,  2   )   ubyte  ->  rsi         single-def
-;* V03 loc0         [V03,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Byte>
-;* V04 loc1         [V04,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Byte>
+;* V01 arg1         [V01    ] (  0,  0   )   ubyte  ->  zero-ref    single-def
+;* V02 arg2         [V02    ] (  0,  0   )   ubyte  ->  zero-ref    single-def
+;* V03 loc0         [V03    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Byte>
+;* V04 loc1         [V04    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Byte>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V06 tmp1         [V06,T02] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Byte>
-;  V07 tmp2         [V07,T03] (  2,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Byte>
-;  V08 tmp3         [V08,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V09 tmp4         [V09,T06] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V10 cse0         [V10,T05] (  3,  0   )    long  ->  rdi         "CSE #01: aggressive"
+;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Byte>
+;* V07 tmp2         [V07    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Byte>
+;  V08 tmp3         [V08,T00] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V09 tmp4         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+;* V10 tmp5         [V10    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+;  V11 tmp6         [V11,T01] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
 ; Lcl frame size = 32
 
 G_M58718_IG01:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       push     rdi
-       push     rsi
        push     rbx
        sub      rsp, 32
-       mov      ebx, edx
-       mov      esi, r8d
-						;; size=12 bbWeight=0 PerfScore 0.00
+						;; size=5 bbWeight=0 PerfScore 0.00
 G_M58718_IG02:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rdi, 0xD1FFAB1E      ; System.Byte
-       mov      rcx, rdi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      byte  ptr [rax+0x08], bl
-       mov      rcx, rdi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
-       mov      byte  ptr [rax+0x08], sil
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
+       ; gcrRegs +[rax]
        ; gcr arg pop 0
        mov      rbx, rax
        ; gcrRegs +[rbx]
@@ -62,9 +50,9 @@ G_M58718_IG02:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx rbx]
        ; gcr arg pop 0
        int3     
-						;; size=92 bbWeight=0 PerfScore 0.00
+						;; size=59 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 104, prolog size 7, PerfScore 0.00, instruction count 25, allocated bytes for code 104 (MethodHash=4b931aa1) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]:Equals(ubyte,ubyte):ubyte:this (FullOpts)
+; Total bytes of code 64, prolog size 5, PerfScore 0.00, instruction count 14, allocated bytes for code 64 (MethodHash=4b931aa1) for method Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]:Equals(ubyte,ubyte):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -72,12 +60,10 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x07
-  CountOfUnwindCodes: 4
+  SizeOfProlog      : 0x05
+  CountOfUnwindCodes: 2
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
-    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+    CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+45 (+3.81%) : 170263.dasm - Microsoft.Build.BackEnd.TargetEntry+d__51:MoveNext():this (FullOpts)
@@ -9,22 +9,22 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 36, 98   )   byref  ->  [rbp+0x10]  this EH-live single-def
-;  V01 loc0         [V01,T15] (  7,  7   )     int  ->  [rbp-0x2C]  do-not-enreg[Z] EH-live
-;  V02 loc1         [V02,T01] ( 11, 52   )     ref  ->  [rbp-0x48]  class-hnd EH-live single-def <Microsoft.Build.BackEnd.TargetEntry>
+;  V01 loc0         [V01,T14] (  7,  7   )     int  ->  [rbp-0x24]  do-not-enreg[Z] EH-live
+;  V02 loc1         [V02,T01] ( 11, 52   )     ref  ->  [rbp-0x58]  class-hnd EH-live single-def <Microsoft.Build.BackEnd.TargetEntry>
 ;* V03 loc2         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Microsoft.Build.BackEnd.WorkUnitResult>
-;  V04 loc3         [V04,T09] (  5, 14   )     ref  ->  rbx         must-init class-hnd <Microsoft.Build.BackEnd.WorkUnitResult>
+;  V04 loc3         [V04,T09] (  5, 14   )   byref  ->  rbx         must-init class-hnd <Microsoft.Build.BackEnd.WorkUnitResult>
 ;  V05 loc4         [V05,T07] (  2, 16   )     ref  ->  rax         class-hnd <Microsoft.Build.Execution.ProjectTargetInstanceChild>
-;  V06 loc5         [V06    ] (  7, 27   )  struct ( 8) [rbp-0x38]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[Microsoft.Build.BackEnd.WorkUnitResult]>
+;  V06 loc5         [V06    ] (  7, 27   )  struct ( 8) [rbp-0x30]  do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.TaskAwaiter`1[Microsoft.Build.BackEnd.WorkUnitResult]>
 ;* V07 loc6         [V07    ] (  0,  0   )     int  ->  zero-ref   
 ;* V08 loc7         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Exception>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (72) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V10 tmp1         [V10    ] (  0,  0   )     int  ->  zero-ref    "dup spill"
 ;* V11 tmp2         [V11    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;  V12 tmp3         [V12,T20] (  2,  4   )     int  ->  rsi         "impAppendStmt"
-;  V13 tmp4         [V13,T21] (  2,  4   )     int  ->  r14         "impAppendStmt"
-;  V14 tmp5         [V14,T11] (  6, 10.00)     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.BackEnd.WorkUnitResult>
-;  V15 tmp6         [V15,T12] (  4,  8   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.BackEnd.WorkUnitResult>
-;  V16 tmp7         [V16,T36] (  2,  0   )     ref  ->   r8         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
+;  V12 tmp3         [V12,T19] (  2,  4   )     int  ->  rsi         "impAppendStmt"
+;  V13 tmp4         [V13,T20] (  2,  4   )     int  ->  rdi         "impAppendStmt"
+;  V14 tmp5         [V14,T11] (  6, 10.00)     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Build.BackEnd.WorkUnitResult>
+;* V15 tmp6         [V15    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.Build.BackEnd.WorkUnitResult>
+;  V16 tmp7         [V16,T35] (  2,  0   )     ref  ->   r8         class-hnd single-def "impSpillSpecialSideEff" <System.Exception>
 ;* V17 tmp8         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.Build.Execution.ProjectTargetInstance>
 ;  V18 tmp9         [V18,T02] (  3, 48   )     ref  ->  rax         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
 ;* V19 tmp10        [V19    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.TaskAwaiter`1[Microsoft.Build.BackEnd.WorkUnitResult]>
@@ -35,98 +35,95 @@
 ;* V24 tmp15        [V24    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V25 tmp16        [V25    ] (  0,  0   )   byref  ->  zero-ref    "Inlining Arg"
 ;* V26 tmp17        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <<unknown class>>
-;  V27 tmp18        [V27,T06] (  3, 16.01)     ref  ->  rcx         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+;  V27 tmp18        [V27,T06] (  3, 16.01)     ref  ->  rax         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;  V28 tmp19        [V28,T05] (  3, 24   )     ref  ->  rbx         class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
 ;* V29 tmp20        [V29    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V30 tmp21        [V30    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.Build.Execution.ProjectTargetInstance>
-;* V31 tmp22        [V31,T13] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V32 tmp23        [V32,T03] (  3, 37.49)   byref  ->  r14         "Inlining Arg"
+;* V31 tmp22        [V31,T12] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V32 tmp23        [V32,T03] (  3, 37.49)   byref  ->  rdi         "Inlining Arg"
 ;* V33 tmp24        [V33    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-;* V34 tmp25        [V34,T23] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;  V35 tmp26        [V35,T17] (  3,  4.69)   byref  ->  r14         single-def "Inlining Arg"
+;* V34 tmp25        [V34,T22] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V35 tmp26        [V35,T16] (  3,  4.69)   byref  ->  rdi         single-def "Inlining Arg"
 ;* V36 tmp27        [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Threading.CancellationTokenSource>
-;  V37 tmp28        [V37,T18] (  2,  4   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.Exception>
-;  V38 tmp29        [V38,T16] (  4,  6   )   byref  ->  rdi         single-def "Inlining Arg"
-;  V39 tmp30        [V39,T22] (  2,  1.95)     ref  ->  rdx         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
+;  V37 tmp28        [V37,T17] (  2,  4   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.Exception>
+;  V38 tmp29        [V38,T15] (  4,  6   )   byref  ->  rbx         single-def "Inlining Arg"
+;  V39 tmp30        [V39,T21] (  2,  1.95)     ref  ->  rdx         class-hnd "Inline return value spill temp" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
 ;* V40 tmp31        [V40    ] (  0,  0   )     ref  ->  zero-ref    ld-addr-op class-hnd single-def "Inlining Arg" <Microsoft.Build.BackEnd.WorkUnitResult>
-;  V41 tmp32        [V41,T14] (  4,  7.82)     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
+;  V41 tmp32        [V41,T13] (  4,  7.82)     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <System.Threading.Tasks.Task`1[Microsoft.Build.BackEnd.WorkUnitResult]>
 ;* V42 tmp33        [V42    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
 ;* V43 tmp34        [V43    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <Microsoft.Build.BackEnd.WorkUnitResult>
 ;* V44 tmp35        [V44    ] (  0,  0   )     int  ->  zero-ref    "Inline stloc first use temp"
-;  V45 tmp36        [V45,T25] ( 10,  0.34)     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
-;  V46 tmp37        [V46,T27] (  6,  0.10)     ref  ->  rsi         class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
+;  V45 tmp36        [V45,T24] ( 10,  0.34)     ref  ->  rbx         class-hnd single-def "Inlining Arg" <System.Threading.Tasks.Task`1[System.__Canon]>
+;  V46 tmp37        [V46,T26] (  6,  0.10)     ref  ->  rsi         class-hnd exact single-def "impAppendStmt" <System.Threading.Tasks.TplEventSource>
 ;* V47 tmp38        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V48 tmp39        [V48    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V49 tmp40        [V49    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Threading.Tasks.TplEventSource>
-;  V50 tmp41        [V50,T31] (  2,  0.05)     int  ->  rdi         "Inlining Arg"
-;* V51 tmp42        [V51,T35] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
+;  V50 tmp41        [V50,T30] (  2,  0.05)     int  ->  rdi         "Inlining Arg"
+;* V51 tmp42        [V51,T34] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
 ;* V52 tmp43        [V52    ] (  0,  0   )   ubyte  ->  zero-ref    "Inline return value spill temp"
-;* V53 tmp44        [V53,T32] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
-;  V54 tmp45        [V54,T30] (  3,  0.05)     ref  ->  rdi         class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
-;  V55 tmp46        [V55,T34] (  2,  0   )   ubyte  ->  rax         "Inline return value spill temp"
-;  V56 tmp47        [V56,T26] (  5,  0.11)     int  ->  [rbp-0x3C]  spill-single-def "Inline stloc first use temp"
-;  V57 tmp48        [V57    ] (  7, 27   )     ref  ->  [rbp-0x38]  do-not-enreg[X] addr-exposed "field V06.m_task (fldOffset=0x0)" P-DEP
-;  V58 tmp49        [V58,T08] (  2, 16   )     ref  ->  rax         "field V19.m_task (fldOffset=0x0)" P-INDEP
-;* V59 tmp50        [V59    ] (  0,  0   )     ref  ->  zero-ref    "field V42._source (fldOffset=0x0)" P-INDEP
-;  V60 tmp51        [V60,T19] (  2,  4   )     ref  ->   r8         "argument with side effect"
-;  V61 PSPSym       [V61,T24] (  1,  1   )    long  ->  [rbp-0x58]  do-not-enreg[V] "PSPSym"
-;  V62 cse0         [V62,T29] (  3,  0.06)     ref  ->  rsi         "CSE #14: conservative"
-;  V63 cse1         [V63,T33] (  3,  0.03)     int  ->  rdx         "CSE #15: conservative"
-;  V64 cse2         [V64,T28] (  3,  0.07)   byref  ->  rsi         "CSE #16: conservative"
-;  V65 cse3         [V65,T10] (  3, 12   )     int  ->  r15         "CSE #01: aggressive"
+;* V53 tmp44        [V53,T31] (  0,  0   )   ubyte  ->  zero-ref    "Inline stloc first use temp"
+;  V54 tmp45        [V54,T29] (  3,  0.05)     ref  ->  rdi         class-hnd exact single-def "Inline stloc first use temp" <System.Threading.Tasks.Task+ContingentProperties>
+;  V55 tmp46        [V55,T33] (  2,  0   )   ubyte  ->  rax         "Inline return value spill temp"
+;  V56 tmp47        [V56,T25] (  5,  0.11)     int  ->  [rbp-0x34]  spill-single-def "Inline stloc first use temp"
+;  V57 tmp48        [V57    ] (  5,  5   )  struct (24) [rbp-0x50]  do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Microsoft.Build.BackEnd.WorkUnitResult>
+;  V58 tmp49        [V58    ] (  7, 27   )     ref  ->  [rbp-0x30]  do-not-enreg[X] addr-exposed "field V06.m_task (fldOffset=0x0)" P-DEP
+;  V59 tmp50        [V59,T08] (  2, 16   )     ref  ->  rax         "field V19.m_task (fldOffset=0x0)" P-INDEP
+;* V60 tmp51        [V60    ] (  0,  0   )     ref  ->  zero-ref    "field V42._source (fldOffset=0x0)" P-INDEP
+;  V61 tmp52        [V61,T18] (  2,  4   )     ref  ->   r8         "argument with side effect"
+;  V62 PSPSym       [V62,T23] (  1,  1   )    long  ->  [rbp-0x68]  do-not-enreg[V] "PSPSym"
+;  V63 cse0         [V63,T28] (  3,  0.06)     ref  ->  rsi         "CSE #14: conservative"
+;  V64 cse1         [V64,T32] (  3,  0.03)     int  ->  rdx         "CSE #15: conservative"
+;  V65 cse2         [V65,T27] (  3,  0.07)   byref  ->  rsi         "CSE #16: conservative"
+;  V66 cse3         [V66,T10] (  3, 12   )     int  ->  r14         "CSE #01: aggressive"
 ;
-; Lcl frame size = 120
+; Lcl frame size = 144
 
 G_M18954_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rbp
-       push     r15
        push     r14
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 120
-       lea      rbp, [rsp+0xA0]
+       sub      rsp, 144
+       lea      rbp, [rsp+0xB0]
+       vxorps   xmm4, xmm4, xmm4
+       vmovdqu  ymmword ptr [rbp-0x50], ymm4
        xor      ebx, ebx
-       mov      qword ptr [rbp-0x38], rbx
-       mov      qword ptr [rbp-0x58], rsp
+       mov      qword ptr [rbp-0x30], rbx
+       mov      qword ptr [rbp-0x68], rsp
        mov      bword ptr [rbp+0x10], rcx
        ; GC ptr vars +{V00}
-						;; size=34 bbWeight=1 PerfScore 10.00
-G_M18954_IG02:        ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0002 {rcx}, gcvars, byref
-       ; gcrRegs +[rbx]
-       ; byrRegs +[rcx]
-       mov      eax, dword ptr [rcx+0x28]
-       mov      dword ptr [rbp-0x2C], eax
+						;; size=44 bbWeight=1 PerfScore 11.33
+G_M18954_IG02:        ; bbWeight=1, gcVars=0000000000000001 {V00}, gcrefRegs=0000 {}, byrefRegs=000A {rcx rbx}, gcvars, byref
+       ; byrRegs +[rcx rbx]
+       mov      edx, dword ptr [rcx+0x28]
+       mov      dword ptr [rbp-0x24], edx
        mov      rsi, gword ptr [rcx]
        ; gcrRegs +[rsi]
-       mov      gword ptr [rbp-0x48], rsi
+       mov      gword ptr [rbp-0x58], rsi
        ; GC ptr vars +{V02}
 						;; size=13 bbWeight=1 PerfScore 6.00
-G_M18954_IG03:        ; bbWeight=1, gcVars=0000000000000003 {V00 V02}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, gcvars, byref, isz
-       cmp      dword ptr [rbp-0x2C], 0
-       je       SHORT G_M18954_IG04
+G_M18954_IG03:        ; bbWeight=1, gcVars=0000000000000003 {V00 V02}, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, gcvars, byref, isz
+       cmp      dword ptr [rbp-0x24], 0
+       je       SHORT G_M18954_IG05
        mov      dword ptr [rcx+0x30], 1
-       xor      eax, eax
-       mov      dword ptr [rcx+0x34], eax
-       mov      rcx, 0xD1FFAB1E      ; Microsoft.Build.BackEnd.WorkUnitResult
-       ; byrRegs -[rcx]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs -[rbx] +[rax]
-       ; gcr arg pop 0
-       mov      rbx, rax
-       ; gcrRegs +[rbx]
-       mov      qword ptr [rbx+0x10], 1
-       xor      rcx, rcx
-       ; gcrRegs +[rcx]
-       mov      gword ptr [rbx+0x08], rcx
-       mov      rcx, bword ptr [rbp+0x10]
-       ; gcrRegs -[rcx]
-       ; byrRegs +[rcx]
-						;; size=54 bbWeight=1 PerfScore 10.00
-G_M18954_IG04:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
-       ; gcrRegs -[rax]
-       cmp      dword ptr [rbp-0x2C], 0
-       je       G_M18954_IG10
+       xor      edx, edx
+       mov      dword ptr [rcx+0x34], edx
+       mov      rdx, 0xD1FFAB1E      ; Microsoft.Build.BackEnd.WorkUnitResult
+       mov      qword ptr [rbp-0x50], rdx
+       mov      dword ptr [rbp-0x40], 1
+       xor      edx, edx
+       mov      dword ptr [rbp-0x3C], edx
+						;; size=44 bbWeight=1 PerfScore 8.75
+G_M18954_IG04:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref
+       ; byrRegs -[rbx]
+       mov      gword ptr [rbp-0x48], rdx
+       lea      rbx, [rbp-0x50]
+						;; size=8 bbWeight=1 PerfScore 1.50
+G_M18954_IG05:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=000A {rcx rbx}, byref, isz
+       ; byrRegs +[rbx]
+       cmp      dword ptr [rbp-0x24], 0
+       je       G_M18954_IG11
        mov      rdx, gword ptr [rcx+0x08]
        ; gcrRegs +[rdx]
        lea      rcx, bword ptr [rsi+0x58]
@@ -134,58 +131,70 @@ G_M18954_IG04:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rc
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
        xor      ecx, ecx
-       mov      rdi, bword ptr [rbp+0x10]
-       ; byrRegs +[rdi]
-       mov      dword ptr [rdi+0x38], ecx
-       jmp      SHORT G_M18954_IG06
+       mov      rdx, bword ptr [rbp+0x10]
+       ; byrRegs +[rdx]
+       mov      dword ptr [rdx+0x38], ecx
+       jmp      SHORT G_M18954_IG07
 						;; size=34 bbWeight=1 PerfScore 10.75
-G_M18954_IG05:        ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
-       inc      dword ptr [rdi+0x38]
-						;; size=3 bbWeight=4 PerfScore 12.00
-G_M18954_IG06:        ; bbWeight=8, gcrefRegs=0048 {rbx rsi}, byrefRegs=0080 {rdi}, byref
-       mov      r14d, dword ptr [rdi+0x38]
+G_M18954_IG06:        ; bbWeight=4, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+       ; byrRegs -[rdx]
+       mov      rcx, bword ptr [rbp+0x10]
+       ; byrRegs +[rcx]
+       inc      dword ptr [rcx+0x38]
+       mov      rdx, rcx
+       ; byrRegs +[rdx]
+						;; size=10 bbWeight=4 PerfScore 17.00
+G_M18954_IG07:        ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=000C {rdx rbx}, byref
+       ; byrRegs -[rcx]
+       mov      edi, dword ptr [rdx+0x38]
        mov      rcx, gword ptr [rsi+0x18]
        ; gcrRegs +[rcx]
        mov      rcx, gword ptr [rcx+0xA0]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        call     [r11]<unknown method>
        ; gcrRegs -[rcx]
+       ; byrRegs -[rdx]
        ; gcr arg pop 0
-       cmp      r14d, eax
-       jge      G_M18954_IG15
-       lea      r14, bword ptr [rsi+0x70]
-       ; byrRegs +[r14]
-       cmp      gword ptr [r14], 0
-       jne      G_M18954_IG14
-						;; size=51 bbWeight=8 PerfScore 120.00
-G_M18954_IG07:        ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0080 {rdi}, byref, isz
-       ; gcrRegs -[rbx]
-       ; byrRegs -[r14]
+       cmp      edi, eax
+       jge      G_M18954_IG16
+       lea      rdi, bword ptr [rsi+0x70]
+       ; byrRegs +[rdi]
+       cmp      gword ptr [rdi], 0
+       jne      G_M18954_IG15
+						;; size=49 bbWeight=8 PerfScore 120.00
+G_M18954_IG08:        ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       ; byrRegs -[rbx rdi]
        mov      rcx, gword ptr [rsi+0x18]
        ; gcrRegs +[rcx]
        mov      rcx, gword ptr [rcx+0xA0]
...
+20 (+6.94%) : 321388.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:b__0():this (FullOpts)
@@ -9,20 +9,21 @@
 ; Final local variable assignments
 ;
 ;  V00 this         [V00,T00] ( 11,  8.50)     ref  ->  rbx         this class-hnd single-def <Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0>
-;  V01 loc0         [V01,T07] (  6,  2.50)     ref  ->  [rbp-0x18]  class-hnd EH-live spill-single-def <Xunit.Sdk.IMessageBus>
-;* V02 loc1         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
+;  V01 loc0         [V01,T07] (  6,  2.50)     ref  ->  [rbp-0x20]  class-hnd EH-live spill-single-def <Xunit.Sdk.IMessageBus>
+;* V02 loc1         [V02,T10] (  0,  0   )    long  ->  zero-ref    class-hnd exact EH-live single-def <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
 ;  V03 loc2         [V03,T03] (  4,  3   )     ref  ->  rsi         class-hnd single-def <<unknown class>>
-;  V04 loc3         [V04,T09] (  2,  1   )     ref  ->  rdx         class-hnd single-def <<unknown class>>
+;  V04 loc3         [V04,T08] (  2,  1   )     ref  ->  rdx         class-hnd single-def <<unknown class>>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (40) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1         [V06,T08] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
+;* V06 tmp1         [V06    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
 ;* V07 tmp2         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Xunit.Sdk.DiscoveryCompleteMessage>
 ;  V08 tmp3         [V08,T01] (  2,  4   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <Xunit.Sdk.TestFrameworkDiscoverer>
 ;* V09 tmp4         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <Xunit.Sdk.TestFrameworkDiscoverer>
-;  V10 tmp5         [V10,T04] (  3,  3   )     ref  ->  rcx         single-def "argument with side effect"
-;  V11 tmp6         [V11,T05] (  3,  3   )     ref  ->  rcx         single-def "argument with side effect"
-;  V12 tmp7         [V12,T02] (  2,  4   )     ref  ->  rdx         single-def "argument with side effect"
-;  V13 PSPSym       [V13,T10] (  1,  1   )    long  ->  [rbp-0x28]  do-not-enreg[V] "PSPSym"
-;  V14 cse0         [V14,T06] (  3,  3   )     ref  ->  rcx         "CSE #01: aggressive"
+;  V10 tmp5         [V10    ] (  1,  1   )  struct ( 8) [rbp-0x18]  do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder>
+;  V11 tmp6         [V11,T04] (  3,  3   )     ref  ->  rcx         single-def "argument with side effect"
+;  V12 tmp7         [V12,T05] (  3,  3   )     ref  ->  rcx         single-def "argument with side effect"
+;  V13 tmp8         [V13,T02] (  2,  4   )     ref  ->  rdx         single-def "argument with side effect"
+;  V14 PSPSym       [V14,T09] (  1,  1   )    long  ->  [rbp-0x28]  do-not-enreg[V] "PSPSym"
+;  V15 cse0         [V15,T06] (  3,  3   )     ref  ->  rcx         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 64
 
@@ -32,10 +33,12 @@ G_M21023_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rbx
        sub      rsp, 64
        lea      rbp, [rsp+0x50]
+       xor      eax, eax
+       mov      qword ptr [rbp-0x18], rax
        mov      qword ptr [rbp-0x28], rsp
        mov      rbx, rcx
        ; gcrRegs +[rbx]
-						;; size=19 bbWeight=1 PerfScore 5.00
+						;; size=25 bbWeight=1 PerfScore 6.25
 G_M21023_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
        mov      rcx, gword ptr [rbx+0x08]
        ; gcrRegs +[rcx]
@@ -44,7 +47,7 @@ G_M21023_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        call     [Xunit.Sdk.TestFrameworkDiscoverer:CreateMessageBus(Xunit.Abstractions.IMessageSink,Xunit.Abstractions.ITestFrameworkDiscoveryOptions):Xunit.Sdk.IMessageBus]
        ; gcrRegs -[rcx rdx] +[rax]
        ; gcr arg pop 0
-       mov      gword ptr [rbp-0x18], rax
+       mov      gword ptr [rbp-0x20], rax
        ; GC ptr vars +{V01}
 						;; size=18 bbWeight=1 PerfScore 8.00
 G_M21023_IG03:        ; bbWeight=1, gcVars=0000000000000080 {V01}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
@@ -53,9 +56,11 @@ G_M21023_IG03:        ; bbWeight=1, gcVars=0000000000000080 {V01}, gcrefRegs=000
        ; gcrRegs +[rcx]
        mov      rdx, rcx
        ; gcrRegs +[rdx]
+       mov      r11, 0xD1FFAB1E      ; Xunit.Sdk.TestFrameworkDiscoverer+PreserveWorkingFolder
+       mov      qword ptr [rbp-0x18], r11
        mov      edx, dword ptr [rdx+0x10]
        ; gcrRegs -[rdx]
-						;; size=10 bbWeight=1 PerfScore 4.25
+						;; size=24 bbWeight=1 PerfScore 5.50
 G_M21023_IG04:        ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
        mov      rcx, gword ptr [rcx+0x10]
        mov      rdx, gword ptr [rbx+0x20]
@@ -101,7 +106,7 @@ G_M21023_IG05:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; gcrRegs -[r8]
        mov      rcx, gword ptr [rbx+0x18]
        ; gcrRegs +[rcx]
-       mov      r9, gword ptr [rbp-0x18]
+       mov      r9, gword ptr [rbp-0x20]
        ; gcrRegs +[r9]
        call     [<unknown method>]
        ; gcrRegs -[rax rcx rdx rbx r9]
@@ -114,7 +119,7 @@ G_M21023_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcr arg pop 0
        mov      rdx, rax
        ; gcrRegs +[rdx]
-       mov      rcx, gword ptr [rbp-0x18]
+       mov      rcx, gword ptr [rbp-0x20]
        ; gcrRegs +[rcx]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        call     [r11]<unknown method>
@@ -123,7 +128,7 @@ G_M21023_IG06:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        nop      
 						;; size=36 bbWeight=1 PerfScore 6.00
 G_M21023_IG07:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
-       mov      rcx, gword ptr [rbp-0x18]
+       mov      rcx, gword ptr [rbp-0x20]
        ; gcrRegs +[rcx]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        ; GC ptr vars -{V01}
@@ -166,9 +171,9 @@ G_M21023_IG11:        ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
 						;; size=20 bbWeight=0 PerfScore 0.00
 G_M21023_IG12:        ; bbWeight=0, gcVars=0000000000000080 {V01}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
        ; GC ptr vars +{V01}
-       cmp      gword ptr [rbp-0x18], 0
+       cmp      gword ptr [rbp-0x20], 0
        je       SHORT G_M21023_IG13
-       mov      rcx, gword ptr [rbp-0x18]
+       mov      rcx, gword ptr [rbp-0x20]
        ; gcrRegs +[rcx]
        mov      r11, 0xD1FFAB1E      ; code for <unknown method>
        ; GC ptr vars -{V01}
@@ -187,7 +192,7 @@ G_M21023_IG14:        ; bbWeight=0, funclet epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 288, prolog size 19, PerfScore 54.75, instruction count 86, allocated bytes for code 288 (MethodHash=a7cdade0) for method Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:<Find>b__0():this (FullOpts)
+; Total bytes of code 308, prolog size 25, PerfScore 57.25, instruction count 90, allocated bytes for code 308 (MethodHash=a7cdade0) for method Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:<Find>b__0():this (FullOpts)
 ; ============================================================
 
 Unwind Info:
+10 (+7.35%) : 37123.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:b__1(System.Data.DataRow):ubyte:this (FullOpts)
@@ -8,22 +8,23 @@
 ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T03] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]>
+;  V00 this         [V00,T02] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]>
 ;  V01 arg1         [V01,T00] (  6,  5.25)     ref  ->  rbx         class-hnd single-def <System.Data.DataRow>
 ;  V02 OutArgs      [V02    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V03 tmp1         [V03,T01] (  3,  6   )     ref  ->  rsi         class-hnd single-def "impAppendStmt" <System.Func`2[ubyte,ubyte]>
-;  V04 tmp2         [V04,T02] (  3,  6   )     ref  ->  rdi         class-hnd exact single-def "Single-def Box Helper" <System.Byte>
-;  V05 tmp3         [V05,T06] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.String>
-;  V06 tmp4         [V06,T05] (  3,  0   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
-;  V07 cse0         [V07,T04] (  4,  3.25)    long  ->  rdi         "CSE #01: aggressive"
+;* V04 tmp2         [V04    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Byte>
+;  V05 tmp3         [V05,T05] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.String>
+;  V06 tmp4         [V06,T04] (  3,  0   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <System.NotSupportedException>
+;  V07 tmp5         [V07    ] (  4,  4   )  struct (16) [rsp+0x20]  do-not-enreg[XSF] addr-exposed "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,ubyte]>
+;  V08 cse0         [V08,T03] (  4,  3.25)    long  ->  rdi         "CSE #01: aggressive"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 48
 
 G_M17326_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 48
        mov      rbx, rdx
        ; gcrRegs +[rbx]
 						;; size=10 bbWeight=1 PerfScore 3.50
@@ -47,32 +48,30 @@ G_M17326_IG03:        ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        ; gcr arg pop 0
 						;; size=12 bbWeight=0.25 PerfScore 0.88
 G_M17326_IG04:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       mov      rcx, rdi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      rdi, rax
-       ; gcrRegs +[rdi]
+       vxorps   xmm0, xmm0, xmm0
+       vmovups  xmmword ptr [rsp+0x20], xmm0
+       mov      qword ptr [rsp+0x20], rdi
        movzx    rdx, byte  ptr [rbx+0x08]
        mov      rcx, gword ptr [rsi+0x08]
        ; gcrRegs +[rcx]
        call     [rsi+0x18]<unknown method>
-       ; gcrRegs -[rax rcx rsi]
+       ; gcrRegs -[rcx rsi]
        ; gcr arg pop 0
-       mov      byte  ptr [rdi+0x08], al
-       cmp      rbx, rdi
+       mov      byte  ptr [rsp+0x28], al
+       lea      rax, [rsp+0x20]
+       cmp      rbx, rax
        jne      SHORT G_M17326_IG06
        mov      eax, 1
-						;; size=35 bbWeight=1 PerfScore 11.00
+						;; size=45 bbWeight=1 PerfScore 12.33
 G_M17326_IG05:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 48
        pop      rbx
        pop      rsi
        pop      rdi
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
 G_M17326_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rbx rdi]
+       ; gcrRegs -[rbx]
        call     [<unknown method>]
        ; gcrRegs +[rax]
        ; gcr arg pop 0
@@ -98,7 +97,7 @@ G_M17326_IG06:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=48 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 136, prolog size 7, PerfScore 26.38, instruction count 39, allocated bytes for code 136 (MethodHash=632fbc51) for method System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__1(System.Data.DataRow):ubyte:this (FullOpts)
+; Total bytes of code 146, prolog size 7, PerfScore 27.71, instruction count 40, allocated bytes for code 146 (MethodHash=632fbc51) for method System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__1(System.Data.DataRow):ubyte:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -111,7 +110,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
     CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
libraries_tests.run.windows.x64.Release.mch
-49 (-25.39%) : 94558.dasm - Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (Tier1)
@@ -9,23 +9,28 @@
 ; 0 inlinees with PGO data; 19 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T03] (  9,  8.01)     ref  ->  rbx         class-hnd single-def <Microsoft.Interop.LibraryImportCompilationData>
+;  V00 arg0         [V00,T02] (  9,  8.01)     ref  ->  rbx         class-hnd single-def <Microsoft.Interop.LibraryImportCompilationData>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T01] (  7, 14   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
-;  V03 tmp2         [V03,T02] (  7, 14   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <Microsoft.Interop.LibraryImportData>
+;* V02 tmp1         [V02    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
+;  V03 tmp2         [V03,T01] (  7, 14   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <Microsoft.Interop.LibraryImportData>
 ;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V05 tmp4         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V08 tmp7         [V08,T06] (  3,  2   )     ref  ->  rdx        
+;  V08 tmp7         [V08,T05] (  3,  2   )     ref  ->  rdx        
 ;* V09 tmp8         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V10 tmp9         [V10,T00] (  8, 16   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
+;  V10 tmp9         [V10,T00] (  8, 16   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
 ;* V11 tmp10        [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V12 tmp11        [V12    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V13 tmp12        [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp13        [V14    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V15 cse0         [V15,T04] (  3,  3   )     ref  ->  rbp         "CSE #02: aggressive"
-;  V16 cse1         [V16,T05] (  3,  3   )    long  ->  rsi         "CSE #01: aggressive"
+;* V15 tmp14        [V15,T06] (  0,  0   )  struct (48) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <Microsoft.Interop.LibraryImportData>
+;* V16 tmp15        [V16    ] (  0,  0   )    long  ->  zero-ref    single-def "V15.[000..008)"
+;* V17 tmp16        [V17    ] (  0,  0   )     int  ->  zero-ref    "V15.[016..020)"
+;* V18 tmp17        [V18    ] (  0,  0   )     int  ->  zero-ref    "V15.[020..024)"
+;* V19 tmp18        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "V15.[024..025)"
+;  V20 cse0         [V20,T03] (  2,  2   )     ref  ->  rsi         "CSE #01: aggressive"
+;  V21 cse1         [V21,T04] (  3,  3   )     ref  ->  rbp         "CSE #02: aggressive"
 ;
 ; Lcl frame size = 40
 
@@ -38,87 +43,66 @@ G_M28281_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      rbx, rcx
        ; gcrRegs +[rbx]
 						;; size=11 bbWeight=1 PerfScore 4.50
-G_M28281_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      rsi, 0xD1FFAB1E      ; Microsoft.Interop.LibraryImportData
-       mov      rcx, rsi
+G_M28281_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       mov      rsi, gword ptr [rbx+0x20]
+       ; gcrRegs +[rsi]
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.Interop.LibraryImportData
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
        mov      rdi, rax
        ; gcrRegs +[rdi]
-       mov      rbp, gword ptr [rbx+0x20]
+       xor      ecx, ecx
+       mov      dword ptr [rdi+0x10], ecx
+       mov      byte  ptr [rdi+0x18], 0
+						;; size=31 bbWeight=1 PerfScore 5.75
+G_M28281_IG03:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax]
+       mov      dword ptr [rdi+0x14], ecx
+						;; size=3 bbWeight=1 PerfScore 1.00
+G_M28281_IG04:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       xor      rbp, rbp
        ; gcrRegs +[rbp]
+       mov      gword ptr [rdi+0x08], rbp
        lea      rcx, bword ptr [rdi+0x20]
        ; byrRegs +[rcx]
-       mov      rdx, rbp
+       mov      rdx, rsi
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
+       ; gcrRegs -[rdx rsi]
        ; byrRegs -[rcx]
-       mov      rcx, rsi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      rsi, rax
-       ; gcrRegs +[rsi]
-       mov      ecx, dword ptr [rdi+0x10]
-       mov      dword ptr [rsi+0x10], ecx
-       movzx    rcx, byte  ptr [rdi+0x18]
-       mov      byte  ptr [rsi+0x18], cl
-       mov      ecx, dword ptr [rdi+0x14]
-       mov      dword ptr [rsi+0x14], ecx
-       mov      rdx, gword ptr [rdi+0x08]
+       mov      gword ptr [rdi+0x28], rbp
+       mov      rdx, gword ptr [rbx+0x28]
        ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rsi+0x08]
+       lea      rcx, bword ptr [rdi+0x28]
        ; byrRegs +[rcx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
-       ; byrRegs -[rcx]
-       lea      rcx, bword ptr [rsi+0x20]
-       ; byrRegs +[rcx]
-       mov      rdx, rbp
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rdx rbp]
        ; byrRegs -[rcx]
-       mov      rdx, gword ptr [rdi+0x28]
-       ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rsi+0x28]
-       ; byrRegs +[rcx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx rdi]
-       ; byrRegs -[rcx]
-       mov      rdx, gword ptr [rbx+0x28]
-       ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rsi+0x28]
-       ; byrRegs +[rcx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx]
-       ; byrRegs -[rcx]
        mov      ecx, dword ptr [rbx+0x10]
-       mov      dword ptr [rsi+0x10], ecx
+       mov      dword ptr [rdi+0x10], ecx
        movzx    rcx, byte  ptr [rbx+0x18]
-       mov      byte  ptr [rsi+0x18], cl
+       mov      byte  ptr [rdi+0x18], cl
        mov      ecx, dword ptr [rbx+0x14]
-       mov      dword ptr [rsi+0x14], ecx
+       mov      dword ptr [rdi+0x14], ecx
        cmp      gword ptr [rbx+0x08], 0
-       jne      SHORT G_M28281_IG06
-						;; size=144 bbWeight=1 PerfScore 41.25
-G_M28281_IG03:        ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+       jne      SHORT G_M28281_IG08
+						;; size=61 bbWeight=1 PerfScore 20.50
+G_M28281_IG05:        ; bbWeight=0.99, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rbx]
        xor      rdx, rdx
        ; gcrRegs +[rdx]
 						;; size=2 bbWeight=0.99 PerfScore 0.25
-G_M28281_IG04:        ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
-       lea      rcx, bword ptr [rsi+0x08]
+G_M28281_IG06:        ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+       lea      rcx, bword ptr [rdi+0x08]
        ; byrRegs +[rcx]
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
-       mov      rax, rsi
+       mov      rax, rdi
        ; gcrRegs +[rax]
 						;; size=12 bbWeight=1 PerfScore 1.75
-G_M28281_IG05:        ; bbWeight=1, epilog, nogc, extend
+G_M28281_IG07:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rbp
@@ -126,7 +110,7 @@ G_M28281_IG05:        ; bbWeight=1, epilog, nogc, extend
        pop      rdi
        ret      
 						;; size=9 bbWeight=1 PerfScore 3.25
-G_M28281_IG06:        ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28281_IG08:        ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax] +[rbx]
        mov      rcx, gword ptr [rbx+0x08]
        ; gcrRegs +[rcx]
@@ -135,10 +119,10 @@ G_M28281_IG06:        ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=004
        ; gcr arg pop 0
        mov      rdx, rax
        ; gcrRegs +[rdx]
-       jmp      SHORT G_M28281_IG04
+       jmp      SHORT G_M28281_IG06
 						;; size=15 bbWeight=0.01 PerfScore 0.07
 
-; Total bytes of code 193, prolog size 8, PerfScore 51.07, instruction count 57, allocated bytes for code 193 (MethodHash=79a39186) for method Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (Tier1)
+; Total bytes of code 144, prolog size 8, PerfScore 37.07, instruction count 45, allocated bytes for code 144 (MethodHash=79a39186) for method Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (Tier1)
 ; ============================================================
 
 Unwind Info:
-35 (-23.49%) : 62400.dasm - Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (Tier1)
@@ -9,59 +9,55 @@
 ; 0 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T03] (  8,  7   )     ref  ->  rbx         class-hnd single-def <Microsoft.Interop.GeneratedComInterfaceCompilationData>
+;  V00 arg0         [V00,T02] (  8,  7   )     ref  ->  rbx         class-hnd single-def <Microsoft.Interop.GeneratedComInterfaceCompilationData>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T02] (  6, 12   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
+;* V02 tmp1         [V02    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
 ;  V03 tmp2         [V03,T00] (  7, 14   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <Microsoft.Interop.GeneratedComInterfaceData>
 ;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V05 tmp4         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V08 tmp7         [V08,T05] (  3,  2   )     ref  ->  rdx        
+;  V08 tmp7         [V08,T03] (  3,  2   )     ref  ->  rdx        
 ;  V09 tmp8         [V09,T01] (  7, 14   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
 ;* V10 tmp9         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp10        [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp11        [V12    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V13 tmp12        [V13    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V14 cse0         [V14,T04] (  3,  3   )    long  ->  rsi         "CSE #01: aggressive"
+;* V14 tmp13        [V14    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <Microsoft.Interop.GeneratedComInterfaceData>
+;* V15 tmp14        [V15    ] (  0,  0   )    long  ->  zero-ref    single-def "V14.[000..008)"
+;* V16 tmp15        [V16    ] (  0,  0   )     int  ->  zero-ref    "V14.[016..020)"
+;* V17 tmp16        [V17    ] (  0,  0   )     int  ->  zero-ref    "V14.[020..024)"
+;* V18 tmp17        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    "V14.[024..025)"
+;* V19 tmp18        [V19    ] (  0,  0   )     int  ->  zero-ref    "V14.[028..032)"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 40
 
 G_M25584_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 40
        mov      rbx, rcx
        ; gcrRegs +[rbx]
-						;; size=10 bbWeight=1 PerfScore 3.50
-G_M25584_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      rsi, 0xD1FFAB1E      ; Microsoft.Interop.GeneratedComInterfaceData
-       mov      rcx, rsi
+						;; size=9 bbWeight=1 PerfScore 2.50
+G_M25584_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.Interop.GeneratedComInterfaceData
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
-       mov      rdi, rax
-       ; gcrRegs +[rdi]
-       mov      rcx, rsi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
        mov      rsi, rax
        ; gcrRegs +[rsi]
-       mov      ecx, dword ptr [rdi+0x10]
+       xor      ecx, ecx
        mov      dword ptr [rsi+0x10], ecx
-       movzx    rcx, byte  ptr [rdi+0x18]
-       mov      byte  ptr [rsi+0x18], cl
-       mov      ecx, dword ptr [rdi+0x14]
+       mov      byte  ptr [rsi+0x18], 0
+						;; size=27 bbWeight=1 PerfScore 3.75
+G_M25584_IG03:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax]
        mov      dword ptr [rsi+0x14], ecx
-       mov      rdx, gword ptr [rdi+0x08]
-       ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rsi+0x08]
-       ; byrRegs +[rcx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
-       ; byrRegs -[rcx]
-       mov      ecx, dword ptr [rdi+0x1C]
+						;; size=3 bbWeight=1 PerfScore 1.00
+G_M25584_IG04:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       mov      gword ptr [rsi+0x08], rcx
+						;; size=4 bbWeight=1 PerfScore 1.00
+G_M25584_IG05:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      dword ptr [rsi+0x1C], ecx
        mov      ecx, dword ptr [rbx+0x10]
        mov      dword ptr [rsi+0x10], ecx
@@ -70,12 +66,11 @@ G_M25584_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        mov      ecx, dword ptr [rbx+0x14]
        mov      dword ptr [rsi+0x14], ecx
        cmp      gword ptr [rbx+0x08], 0
-       jne      SHORT G_M25584_IG05
+       jne      SHORT G_M25584_IG08
        xor      rdx, rdx
        ; gcrRegs +[rdx]
-						;; size=98 bbWeight=1 PerfScore 32.00
-G_M25584_IG03:        ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdi]
+						;; size=31 bbWeight=1 PerfScore 14.25
+G_M25584_IG06:        ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
        lea      rcx, bword ptr [rsi+0x08]
        ; byrRegs +[rcx]
        call     CORINFO_HELP_ASSIGN_REF
@@ -86,14 +81,13 @@ G_M25584_IG03:        ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000
        mov      rax, rsi
        ; gcrRegs +[rax]
 						;; size=18 bbWeight=1 PerfScore 4.75
-G_M25584_IG04:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+G_M25584_IG07:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 40
        pop      rbx
        pop      rsi
-       pop      rdi
        ret      
-						;; size=8 bbWeight=1 PerfScore 2.75
-G_M25584_IG05:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+						;; size=7 bbWeight=1 PerfScore 2.25
+G_M25584_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
        ; gcrRegs -[rax]
        mov      rcx, gword ptr [rbx+0x08]
        ; gcrRegs +[rcx]
@@ -102,10 +96,10 @@ G_M25584_IG05:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0048 {
        ; gcr arg pop 0
        mov      rdx, rax
        ; gcrRegs +[rdx]
-       jmp      SHORT G_M25584_IG03
+       jmp      SHORT G_M25584_IG06
 						;; size=15 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 149, prolog size 7, PerfScore 43.00, instruction count 46, allocated bytes for code 149 (MethodHash=ad6f9c0f) for method Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (Tier1)
+; Total bytes of code 114, prolog size 6, PerfScore 29.50, instruction count 35, allocated bytes for code 114 (MethodHash=ad6f9c0f) for method Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (Tier1)
 ; ============================================================
 
 Unwind Info:
@@ -113,12 +107,11 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x07
-  CountOfUnwindCodes: 4
+  SizeOfProlog      : 0x06
+  CountOfUnwindCodes: 3
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
-    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+    CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 4 * 8 + 8 = 40 = 0x28
+    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-30 (-13.51%) : 359747.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
@@ -16,15 +16,16 @@
 ;  V03 arg3         [V03,T02] (  6,  2.92)     ref  ->  rdi         class-hnd single-def <System.Object>
 ;* V04 loc0         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <<unknown class>>
 ;  V05 OutArgs      [V05    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V06 tmp1         [V06,T10] (  0,  0   )     int  ->  zero-ref   
-;  V07 tmp2         [V07,T07] (  3,  0.32)     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Decimal>
-;  V08 tmp3         [V08,T09] (  2,  0.22)     ref  ->  rsi         class-hnd exact single-def "Single-def Box Helper" <System.Decimal>
-;  V09 tmp4         [V09,T08] (  3,  0.32)     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.Decimal>
+;* V06 tmp1         [V06,T09] (  0,  0   )     int  ->  zero-ref   
+;  V07 tmp2         [V07,T07] (  3,  0.32)     ref  ->  rdx         class-hnd exact single-def "Single-def Box Helper" <System.Decimal>
+;* V08 tmp3         [V08    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Decimal>
+;  V09 tmp4         [V09,T08] (  2,  0.22)     ref  ->  rdx         class-hnd exact single-def "Inlining Arg" <System.Decimal>
 ;  V10 tmp5         [V10,T03] (  2,  3.78)     int  ->  rdx         "impAppendStmt"
 ;  V11 tmp6         [V11,T06] (  3,  1.36)     ref  ->  rax         class-hnd "Inline return value spill temp" <System.Action`3[System.Runtime.CompilerServices.CallSite,System.Type,System.Object]>
 ;* V12 tmp7         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Runtime.CompilerServices.CallSite`1[System.Action`3[System.Runtime.CompilerServices.CallSite,System.Type,System.Object]]>
-;  V13 rat0         [V13,T04] (  4,  2.95)     ref  ->  rax         "replacement local"
-;  V14 rat1         [V14,T05] (  3,  2.04)    long  ->  rcx         "CSE for expectedClsNode"
+;* V13 tmp8         [V13    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Decimal]>
+;  V14 rat0         [V14,T04] (  4,  2.95)     ref  ->  rax         "replacement local"
+;  V15 rat1         [V15,T05] (  3,  2.04)    long  ->  rcx         "CSE for expectedClsNode"
 ;
 ; Lcl frame size = 32
 
@@ -62,26 +63,17 @@ G_M32564_IG05:        ; bbWeight=0.05, gcrefRegs=0080 {rdi}, byrefRegs=0000 {},
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
-       mov      rbx, rax
-       ; gcrRegs +[rbx]
-       vmovups  xmm0, xmmword ptr [rdi+0x08]
-       vmovups  xmmword ptr [rbx+0x08], xmm0
-       mov      rcx, 0xD1FFAB1E      ; System.Decimal
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs -[rdi]
-       ; gcr arg pop 0
-       mov      rsi, rax
-       ; gcrRegs +[rsi]
-       mov      rdx, rbx
+       mov      rdx, rax
        ; gcrRegs +[rdx]
+       vmovups  xmm0, xmmword ptr [rdi+0x08]
+       vmovups  xmmword ptr [rdx+0x08], xmm0
        mov      rcx, 0xD1FFAB1E
        ; gcrRegs +[rcx]
        call     [<unknown method>]
-       ; gcrRegs -[rax rcx rdx]
+       ; gcrRegs -[rax rcx rdx rdi]
        ; gcr arg pop 0
-       vmovups  xmm0, xmmword ptr [rbx+0x08]
-       vmovups  xmmword ptr [rsi+0x08], xmm0
-						;; size=75 bbWeight=0.05 PerfScore 1.00
+       nop      
+						;; size=45 bbWeight=0.05 PerfScore 0.59
 G_M32564_IG06:        ; bbWeight=0.05, epilog, nogc, extend
        add      rsp, 32
        pop      rbx
@@ -90,7 +82,7 @@ G_M32564_IG06:        ; bbWeight=0.05, epilog, nogc, extend
        ret      
 						;; size=8 bbWeight=0.05 PerfScore 0.15
 G_M32564_IG07:        ; bbWeight=0.95, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
-       ; gcrRegs +[rdi]
+       ; gcrRegs +[rbx rsi rdi]
        movzx    rdx, byte  ptr [rbx+0x10]
        mov      byte  ptr [rbx+0x10], 0
        test     edx, edx
@@ -141,7 +133,7 @@ G_M32564_IG12:        ; bbWeight=0.45, epilog, nogc, extend
        tail.jmp [rax+0x18]<unknown method>
 						;; size=11 bbWeight=0.45 PerfScore 1.70
 
-; Total bytes of code 222, prolog size 16, PerfScore 20.93, instruction count 60, allocated bytes for code 222 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
+; Total bytes of code 192, prolog size 16, PerfScore 20.53, instruction count 55, allocated bytes for code 192 (MethodHash=107680cb) for method (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
 ; ============================================================
 
 Unwind Info:
+27 (+7.09%) : 756432.dasm - Xunit.Assert:NotEqual[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
@@ -9,15 +9,15 @@
 ; 5 inlinees with PGO data; 14 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  4,  6   )   byref  ->  [rbp+0x10]  ld-addr-op EH-live single-def
-;  V01 arg1         [V01,T01] (  4,  6   )   byref  ->  [rbp+0x18]  ld-addr-op EH-live single-def
+;  V00 arg0         [V00,T00] (  4,  8   )   byref  ->  rcx         ld-addr-op single-def
+;  V01 arg1         [V01,T01] (  4,  8   )   byref  ->  rdx         ld-addr-op single-def
 ;  V02 arg2         [V02,T02] (  4,  4   )     ref  ->  r11         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]>
-;* V03 loc0         [V03,T41] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;* V04 loc1         [V04,T42] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;  V05 loc2         [V05,T03] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
+;* V03 loc0         [V03,T45] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;* V04 loc1         [V04,T46] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;  V05 loc2         [V05,T07] (  3,  1   )     ref  ->  [rbp-0x38]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V06 loc3         [V06    ] (  0,  0   )   ubyte  ->  zero-ref   
-;  V07 loc4         [V07,T15] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def <System.String>
-;  V08 loc5         [V08,T16] (  2,  0   )     ref  ->  rdx         class-hnd exact single-def <System.String>
+;  V07 loc4         [V07,T19] (  2,  0   )     ref  ->  rbx         class-hnd exact single-def <System.String>
+;  V08 loc5         [V08,T20] (  2,  0   )     ref  ->  rdx         class-hnd exact single-def <System.String>
 ;* V09 loc6         [V09    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V10 loc7         [V10    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V11 loc8         [V11    ] (  0,  0   )   ubyte  ->  zero-ref   
@@ -26,14 +26,14 @@
 ;* V14 loc11        [V14    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
 ;* V15 loc12        [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Collections.IEqualityComparer>
 ;* V16 loc13        [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Xunit.Sdk.AssertEqualityComparer`1[System.SequencePosition]>
-;* V17 loc14        [V17,T06] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
-;* V18 loc15        [V18,T07] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
+;* V17 loc14        [V17,T10] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
+;* V18 loc15        [V18,T11] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
 ;* V19 loc16        [V19    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
 ;* V20 loc17        [V20    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
-;* V21 loc18        [V21,T17] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
+;* V21 loc18        [V21,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
 ;* V22 loc19        [V22    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
-;* V23 loc20        [V23,T43] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
-;* V24 loc21        [V24,T44] (  0,  0   )   ubyte  ->  zero-ref   
+;* V23 loc20        [V23,T47] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
+;* V24 loc21        [V24,T48] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V25 loc22        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;* V26 loc23        [V26    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
 ;* V27 loc24        [V27    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
@@ -47,193 +47,191 @@
 ;* V35 loc32        [V35    ] (  0,  0   )     int  ->  zero-ref   
 ;* V36 loc33        [V36    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;  V37 OutArgs      [V37    ] (  1,  1   )  struct (56) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V38 tmp1         [V38    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.SequencePosition>
-;* V39 tmp2         [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.SequencePosition>
-;* V40 tmp3         [V40,T04] (  0,  0   )     int  ->  zero-ref    single-def
-;* V41 tmp4         [V41,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.SequencePosition>
-;* V42 tmp5         [V42,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.SequencePosition>
+;* V38 tmp1         [V38    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.SequencePosition>
+;* V39 tmp2         [V39    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.SequencePosition>
+;* V40 tmp3         [V40,T08] (  0,  0   )     int  ->  zero-ref    single-def
+;* V41 tmp4         [V41,T12] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.SequencePosition>
+;* V42 tmp5         [V42,T13] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.SequencePosition>
 ;* V43 tmp6         [V43    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V44 tmp7         [V44    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V45 tmp8         [V45    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V46 tmp9         [V46    ] (  0,  0   )     ref  ->  zero-ref   
-;* V47 tmp10        [V47,T18] (  0,  0   )     ref  ->  zero-ref   
-;* V48 tmp11        [V48,T19] (  0,  0   )     ref  ->  zero-ref   
+;* V47 tmp10        [V47,T22] (  0,  0   )     ref  ->  zero-ref   
+;* V48 tmp11        [V48,T23] (  0,  0   )     ref  ->  zero-ref   
 ;* V49 tmp12        [V49    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;* V50 tmp13        [V50    ] (  0,  0   )  struct ( 8) zero-ref    <System.Nullable`1[int]>
 ;* V51 tmp14        [V51    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;* V52 tmp15        [V52    ] (  0,  0   )  struct ( 8) zero-ref    <System.Nullable`1[int]>
-;* V53 tmp16        [V53,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V53 tmp16        [V53,T24] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
 ;* V54 tmp17        [V54    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V55 tmp18        [V55    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V56 tmp19        [V56    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V57 tmp20        [V57    ] (  0,  0   )     ref  ->  zero-ref   
-;* V58 tmp21        [V58,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V59 tmp22        [V59,T22] (  0,  0   )     ref  ->  zero-ref   
-;* V60 tmp23        [V60,T23] (  0,  0   )     ref  ->  zero-ref   
-;* V61 tmp24        [V61,T24] (  0,  0   )     ref  ->  zero-ref   
-;* V62 tmp25        [V62,T25] (  0,  0   )     ref  ->  zero-ref   
+;* V58 tmp21        [V58,T25] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V59 tmp22        [V59,T26] (  0,  0   )     ref  ->  zero-ref   
+;* V60 tmp23        [V60,T27] (  0,  0   )     ref  ->  zero-ref   
+;* V61 tmp24        [V61,T28] (  0,  0   )     ref  ->  zero-ref   
+;* V62 tmp25        [V62,T29] (  0,  0   )     ref  ->  zero-ref   
 ;* V63 tmp26        [V63    ] (  0,  0   )     int  ->  zero-ref   
 ;* V64 tmp27        [V64    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[int]>
 ;* V65 tmp28        [V65    ] (  0,  0   )  struct ( 8) zero-ref    "impAppendStmt" <System.Nullable`1[int]>
-;  V66 tmp29        [V66,T26] (  2,  0   )     ref  ->  rdx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;  V67 tmp30        [V67,T12] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V66 tmp29        [V66,T30] (  2,  0   )     ref  ->  rdx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;  V67 tmp30        [V67,T16] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V68 tmp31        [V68    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V69 tmp32        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.SequencePosition>
+;* V69 tmp32        [V69    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.SequencePosition>
 ;* V70 tmp33        [V70    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
 ;* V71 tmp34        [V71    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V72 tmp35        [V72    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.SequencePosition>
+;* V72 tmp35        [V72    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.SequencePosition>
 ;* V73 tmp36        [V73    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V74 tmp37        [V74,T45] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V75 tmp38        [V75,T46] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V76 tmp39        [V76,T47] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V74 tmp37        [V74,T49] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V75 tmp38        [V75,T50] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V76 tmp39        [V76,T51] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V77 tmp40        [V77    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V78 tmp41        [V78    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V79 tmp42        [V79    ] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[] "field V00._object (fldOffset=0x0)" P-DEP
-;* V80 tmp43        [V80    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[] "field V00._integer (fldOffset=0x8)" P-DEP
-;* V81 tmp44        [V81    ] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[] "field V01._object (fldOffset=0x0)" P-DEP
-;* V82 tmp45        [V82    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[] "field V01._integer (fldOffset=0x8)" P-DEP
-;* V83 tmp46        [V83,T08] (  0,  0   )   ubyte  ->  zero-ref    "field V13.hasValue (fldOffset=0x0)" P-INDEP
-;* V84 tmp47        [V84,T09] (  0,  0   )     int  ->  zero-ref    "field V13.value (fldOffset=0x4)" P-INDEP
-;* V85 tmp48        [V85    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-;* V86 tmp49        [V86    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-;* V87 tmp50        [V87    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V19.hasValue (fldOffset=0x0)" P-DEP
-;* V88 tmp51        [V88    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V19.value (fldOffset=0x4)" P-DEP
-;* V89 tmp52        [V89    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V20.hasValue (fldOffset=0x0)" P-DEP
-;* V90 tmp53        [V90    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V20.value (fldOffset=0x4)" P-DEP
-;* V91 tmp54        [V91    ] (  0,  0   )     ref  ->  zero-ref    "field V31._object (fldOffset=0x0)" P-INDEP
-;* V92 tmp55        [V92    ] (  0,  0   )     int  ->  zero-ref    "field V31._integer (fldOffset=0x8)" P-INDEP
-;* V93 tmp56        [V93    ] (  0,  0   )   ubyte  ->  zero-ref    "field V36.hasValue (fldOffset=0x0)" P-INDEP
-;* V94 tmp57        [V94    ] (  0,  0   )     int  ->  zero-ref    "field V36.value (fldOffset=0x4)" P-INDEP
-;* V95 tmp58        [V95,T48] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V96 tmp59        [V96,T33] (  0,  0   )     int  ->  zero-ref    single-def "field V49.value (fldOffset=0x4)" P-INDEP
-;* V97 tmp60        [V97,T34] (  0,  0   )   ubyte  ->  zero-ref    "field V50.hasValue (fldOffset=0x0)" P-INDEP
-;* V98 tmp61        [V98,T13] (  0,  0   )     int  ->  zero-ref    "field V50.value (fldOffset=0x4)" P-INDEP
-;* V99 tmp62        [V99,T49] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V51.hasValue (fldOffset=0x0)" P-INDEP
-;* V100 tmp63       [V100,T35] (  0,  0   )     int  ->  zero-ref    single-def "field V51.value (fldOffset=0x4)" P-INDEP
-;* V101 tmp64       [V101,T36] (  0,  0   )   ubyte  ->  zero-ref    "field V52.hasValue (fldOffset=0x0)" P-INDEP
-;* V102 tmp65       [V102,T14] (  0,  0   )     int  ->  zero-ref    "field V52.value (fldOffset=0x4)" P-INDEP
-;* V103 tmp66       [V103    ] (  0,  0   )   ubyte  ->  zero-ref    "field V64.hasValue (fldOffset=0x0)" P-INDEP
-;* V104 tmp67       [V104    ] (  0,  0   )     int  ->  zero-ref    "field V64.value (fldOffset=0x4)" P-INDEP
-;* V105 tmp68       [V105    ] (  0,  0   )   ubyte  ->  zero-ref    "field V65.hasValue (fldOffset=0x0)" P-INDEP
-;* V106 tmp69       [V106    ] (  0,  0   )     int  ->  zero-ref    "field V65.value (fldOffset=0x4)" P-INDEP
-;* V107 tmp70       [V107    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] "Promoted implicit byref" <System.SequencePosition>
-;* V108 tmp71       [V108    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] "Promoted implicit byref" <System.SequencePosition>
-;  V109 tmp72       [V109    ] (  6,  4   )  struct (16) [rbp-0x18]  do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.SequencePosition>
-;  V110 tmp73       [V110    ] (  2,  4   )  struct (16) [rbp-0x28]  do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.SequencePosition>
-;* V111 tmp74       [V111,T37] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V112 tmp75       [V112,T38] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V113 tmp76       [V113    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V114 tmp77       [V114    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V79 tmp42        [V79    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.SequencePosition]>
+;* V80 tmp43        [V80    ] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.SequencePosition]>
+;  V81 tmp44        [V81,T03] (  3,  1   )     ref  ->  [rbp-0x40]  EH-live spill-single-def "field V00._object (fldOffset=0x0)" P-INDEP
+;  V82 tmp45        [V82,T05] (  3,  1   )     int  ->  [rbp-0x0C]  EH-live spill-single-def "field V00._integer (fldOffset=0x8)" P-INDEP
+;  V83 tmp46        [V83,T04] (  3,  1   )     ref  ->  [rbp-0x48]  EH-live spill-single-def "field V01._object (fldOffset=0x0)" P-INDEP
+;  V84 tmp47        [V84,T06] (  3,  1   )     int  ->  [rbp-0x10]  EH-live spill-single-def "field V01._integer (fldOffset=0x8)" P-INDEP
+;* V85 tmp48        [V85,T14] (  0,  0   )   ubyte  ->  zero-ref    "field V13.hasValue (fldOffset=0x0)" P-INDEP
+;* V86 tmp49        [V86,T15] (  0,  0   )     int  ->  zero-ref    "field V13.value (fldOffset=0x4)" P-INDEP
+;* V87 tmp50        [V87    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+;* V88 tmp51        [V88    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+;* V89 tmp52        [V89    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V19.hasValue (fldOffset=0x0)" P-DEP
+;* V90 tmp53        [V90    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V19.value (fldOffset=0x4)" P-DEP
+;* V91 tmp54        [V91    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V20.hasValue (fldOffset=0x0)" P-DEP
+;* V92 tmp55        [V92    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V20.value (fldOffset=0x4)" P-DEP
+;* V93 tmp56        [V93    ] (  0,  0   )     ref  ->  zero-ref    "field V31._object (fldOffset=0x0)" P-INDEP
+;* V94 tmp57        [V94    ] (  0,  0   )     int  ->  zero-ref    "field V31._integer (fldOffset=0x8)" P-INDEP
+;* V95 tmp58        [V95    ] (  0,  0   )   ubyte  ->  zero-ref    "field V36.hasValue (fldOffset=0x0)" P-INDEP
+;* V96 tmp59        [V96    ] (  0,  0   )     int  ->  zero-ref    "field V36.value (fldOffset=0x4)" P-INDEP
+;* V97 tmp60        [V97,T52] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V49.hasValue (fldOffset=0x0)" P-INDEP
+;* V98 tmp61        [V98,T37] (  0,  0   )     int  ->  zero-ref    single-def "field V49.value (fldOffset=0x4)" P-INDEP
+;* V99 tmp62        [V99,T38] (  0,  0   )   ubyte  ->  zero-ref    "field V50.hasValue (fldOffset=0x0)" P-INDEP
+;* V100 tmp63       [V100,T17] (  0,  0   )     int  ->  zero-ref    "field V50.value (fldOffset=0x4)" P-INDEP
+;* V101 tmp64       [V101,T53] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V51.hasValue (fldOffset=0x0)" P-INDEP
+;* V102 tmp65       [V102,T39] (  0,  0   )     int  ->  zero-ref    single-def "field V51.value (fldOffset=0x4)" P-INDEP
+;* V103 tmp66       [V103,T40] (  0,  0   )   ubyte  ->  zero-ref    "field V52.hasValue (fldOffset=0x0)" P-INDEP
+;* V104 tmp67       [V104,T18] (  0,  0   )     int  ->  zero-ref    "field V52.value (fldOffset=0x4)" P-INDEP
+;* V105 tmp68       [V105    ] (  0,  0   )   ubyte  ->  zero-ref    "field V64.hasValue (fldOffset=0x0)" P-INDEP
+;* V106 tmp69       [V106    ] (  0,  0   )     int  ->  zero-ref    "field V64.value (fldOffset=0x4)" P-INDEP
+;* V107 tmp70       [V107    ] (  0,  0   )   ubyte  ->  zero-ref    "field V65.hasValue (fldOffset=0x0)" P-INDEP
+;* V108 tmp71       [V108    ] (  0,  0   )     int  ->  zero-ref    "field V65.value (fldOffset=0x4)" P-INDEP
+;* V109 tmp72       [V109    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.SequencePosition>
+;* V110 tmp73       [V110    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.SequencePosition>
+;  V111 tmp74       [V111    ] (  9,  6   )  struct (16) [rbp-0x20]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.SequencePosition>
+;  V112 tmp75       [V112    ] (  3,  6   )  struct (16) [rbp-0x30]  do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.SequencePosition>
+;* V113 tmp76       [V113,T41] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V114 tmp77       [V114,T42] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
 ;* V115 tmp78       [V115    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
 ;* V116 tmp79       [V116    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V117 tmp80       [V117,T27] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V118 tmp81       [V118,T28] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V119 tmp82       [V119,T29] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V120 tmp83       [V120,T30] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V121 tmp84       [V121,T39] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V122 tmp85       [V122,T40] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V123 tmp86       [V123    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
-;  V124 tmp87       [V124,T31] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
-;  V125 tmp88       [V125,T32] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V126 PSPSym      [V126,T05] (  1,  1   )    long  ->  [rbp-0x38]  do-not-enreg[V] "PSPSym"
+;* V117 tmp80       [V117    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V118 tmp81       [V118    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V119 tmp82       [V119,T31] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V120 tmp83       [V120,T32] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V121 tmp84       [V121,T33] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V122 tmp85       [V122,T34] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V123 tmp86       [V123,T43] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;* V124 tmp87       [V124,T44] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;* V125 tmp88       [V125    ] (  0,  0   )     ref  ->  zero-ref    "argument with side effect"
+;  V126 tmp89       [V126,T35] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
+;  V127 tmp90       [V127,T36] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V128 PSPSym      [V128,T09] (  1,  1   )    long  ->  [rbp-0x58]  do-not-enreg[V] "PSPSym"
 ;
-; Lcl frame size = 104
+; Lcl frame size = 136
 
 G_M65104_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rbp
        push     rbx
-       sub      rsp, 104
-       lea      rbp, [rsp+0x70]
-       xor      eax, eax
-       mov      qword ptr [rbp-0x28], rax
+       sub      rsp, 136
+       lea      rbp, [rsp+0x90]
        vxorps   xmm4, xmm4, xmm4
-       vmovdqa  xmmword ptr [rbp-0x20], xmm4
-       mov      qword ptr [rbp-0x10], rax
-       mov      qword ptr [rbp-0x38], rsp
-       mov      bword ptr [rbp+0x10], rcx
-       ; GC ptr vars +{V00}
-       mov      bword ptr [rbp+0x18], rdx
-       ; GC ptr vars +{V01}
+       vmovdqu  ymmword ptr [rbp-0x30], ymm4
+       mov      qword ptr [rbp-0x58], rsp
        mov      r11, r8
        ; gcrRegs +[r11]
-						;; size=45 bbWeight=1 PerfScore 10.58
-G_M65104_IG02:        ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref
+						;; size=33 bbWeight=1 PerfScore 6.33
+G_M65104_IG02:        ; bbWeight=1, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, byref
        ; byrRegs +[rcx rdx]
-       test     r11, r11
-       je       G_M65104_IG13
-       xor      r8, r8
+       mov      r8, gword ptr [rdx]
        ; gcrRegs +[r8]
-       mov      gword ptr [rbp-0x30], r8
-       ; GC ptr vars +{V05}
-						;; size=16 bbWeight=1 PerfScore 2.50
-G_M65104_IG03:        ; bbWeight=1, gcVars=000000000000000B {V00 V01 V05}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref, nogc
-       ; gcrRegs -[r8]
-       vmovdqu  xmm0, xmmword ptr [rcx]
-       vmovdqu  xmmword ptr [rbp-0x18], xmm0
-						;; size=9 bbWeight=1 PerfScore 5.00
-G_M65104_IG04:        ; bbWeight=1, nogc, extend
-       vmovdqu  xmm0, xmmword ptr [rdx]
-       vmovdqu  xmmword ptr [rbp-0x28], xmm0
...
+32 (+8.49%) : 614547.dasm - Xunit.Assert:Equal[System.Int128](System.Int128,System.Int128,System.Collections.Generic.IEqualityComparer`1[System.Int128]) (Tier1)
@@ -9,31 +9,31 @@
 ; 5 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  4,  6   )   byref  ->  [rbp+0x10]  ld-addr-op EH-live single-def
-;  V01 arg1         [V01,T01] (  4,  6   )   byref  ->  [rbp+0x18]  ld-addr-op EH-live single-def
+;  V00 arg0         [V00,T00] (  4,  8   )   byref  ->  rcx         ld-addr-op single-def
+;  V01 arg1         [V01,T01] (  4,  8   )   byref  ->  rdx         ld-addr-op single-def
 ;  V02 arg2         [V02,T02] (  4,  4   )     ref  ->  r11         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.Int128]>
-;* V03 loc0         [V03,T43] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;* V04 loc1         [V04,T44] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;  V05 loc2         [V05,T03] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
+;* V03 loc0         [V03,T47] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;* V04 loc1         [V04,T48] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;  V05 loc2         [V05,T07] (  3,  1   )     ref  ->  [rbp-0x50]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V06 loc3         [V06    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V07 loc4         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;* V08 loc5         [V08    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
 ;* V09 loc6         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Collections.IEqualityComparer>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Xunit.Sdk.AssertEqualityComparer`1[System.Int128]>
-;* V11 loc8         [V11,T06] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
-;* V12 loc9         [V12,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
+;* V11 loc8         [V11,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
+;* V12 loc9         [V12,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
 ;* V13 loc10        [V13    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
 ;* V14 loc11        [V14    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
-;* V15 loc12        [V15,T45] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
-;* V16 loc13        [V16,T46] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
-;* V17 loc14        [V17,T17] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
+;* V15 loc12        [V15,T49] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
+;* V16 loc13        [V16,T50] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
+;* V17 loc14        [V17,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
 ;* V18 loc15        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
-;* V19 loc16        [V19,T47] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
+;* V19 loc16        [V19,T51] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
 ;* V20 loc17        [V20    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
 ;* V21 loc18        [V21    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
 ;* V22 loc19        [V22    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
 ;* V23 loc20        [V23    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
-;* V24 loc21        [V24,T48] (  0,  0   )   ubyte  ->  zero-ref   
+;* V24 loc21        [V24,T52] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V25 loc22        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;* V26 loc23        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;* V27 loc24        [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.Int128>
@@ -44,126 +44,132 @@
 ;* V32 loc29        [V32    ] (  0,  0   )     int  ->  zero-ref   
 ;* V33 loc30        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;  V34 OutArgs      [V34    ] (  1,  1   )  struct (72) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V35 tmp1         [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int128>
-;* V36 tmp2         [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int128>
-;* V37 tmp3         [V37,T04] (  0,  0   )     int  ->  zero-ref    single-def
-;* V38 tmp4         [V38,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.Int128>
-;* V39 tmp5         [V39,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.Int128>
+;* V35 tmp1         [V35    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int128>
+;* V36 tmp2         [V36    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Int128>
+;* V37 tmp3         [V37,T08] (  0,  0   )     int  ->  zero-ref    single-def
+;* V38 tmp4         [V38,T12] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.Int128>
+;* V39 tmp5         [V39,T13] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.Int128>
 ;* V40 tmp6         [V40    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V41 tmp7         [V41    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V42 tmp8         [V42    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V43 tmp9         [V43    ] (  0,  0   )     ref  ->  zero-ref   
-;* V44 tmp10        [V44,T18] (  0,  0   )     ref  ->  zero-ref   
-;* V45 tmp11        [V45,T19] (  0,  0   )     ref  ->  zero-ref   
+;* V44 tmp10        [V44,T22] (  0,  0   )     ref  ->  zero-ref   
+;* V45 tmp11        [V45,T23] (  0,  0   )     ref  ->  zero-ref   
 ;* V46 tmp12        [V46    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;* V47 tmp13        [V47    ] (  0,  0   )  struct ( 8) zero-ref    <System.Nullable`1[int]>
 ;* V48 tmp14        [V48    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;* V49 tmp15        [V49    ] (  0,  0   )  struct ( 8) zero-ref    <System.Nullable`1[int]>
-;* V50 tmp16        [V50,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V51 tmp17        [V51,T21] (  0,  0   )     ref  ->  zero-ref   
-;* V52 tmp18        [V52,T22] (  0,  0   )     ref  ->  zero-ref   
-;* V53 tmp19        [V53,T23] (  0,  0   )     ref  ->  zero-ref   
-;* V54 tmp20        [V54,T24] (  0,  0   )     ref  ->  zero-ref   
-;* V55 tmp21        [V55,T25] (  0,  0   )     ref  ->  zero-ref   
-;* V56 tmp22        [V56,T26] (  0,  0   )     ref  ->  zero-ref   
+;* V50 tmp16        [V50,T24] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V51 tmp17        [V51,T25] (  0,  0   )     ref  ->  zero-ref   
+;* V52 tmp18        [V52,T26] (  0,  0   )     ref  ->  zero-ref   
+;* V53 tmp19        [V53,T27] (  0,  0   )     ref  ->  zero-ref   
+;* V54 tmp20        [V54,T28] (  0,  0   )     ref  ->  zero-ref   
+;* V55 tmp21        [V55,T29] (  0,  0   )     ref  ->  zero-ref   
+;* V56 tmp22        [V56,T30] (  0,  0   )     ref  ->  zero-ref   
 ;* V57 tmp23        [V57    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;* V58 tmp24        [V58    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;* V59 tmp25        [V59,T27] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;  V60 tmp26        [V60,T12] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int128>
-;  V61 tmp27        [V61,T13] (  3,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Int128>
-;  V62 tmp28        [V62,T28] (  2,  0   )     ref  ->  rdx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;  V63 tmp29        [V63,T14] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V59 tmp25        [V59,T31] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;  V60 tmp26        [V60,T14] (  4,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Int128>
+;  V61 tmp27        [V61,T15] (  4,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Int128>
+;  V62 tmp28        [V62,T32] (  2,  0   )     ref  ->  rdx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;  V63 tmp29        [V63,T18] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V64 tmp30        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V65 tmp31        [V65    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int128>
+;* V65 tmp31        [V65    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int128>
 ;* V66 tmp32        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
 ;* V67 tmp33        [V67    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V68 tmp34        [V68    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int128>
+;* V68 tmp34        [V68    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Int128>
 ;* V69 tmp35        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V70 tmp36        [V70,T49] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V71 tmp37        [V71,T50] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V72 tmp38        [V72,T51] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V70 tmp36        [V70,T53] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V71 tmp37        [V71,T54] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V72 tmp38        [V72,T55] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V73 tmp39        [V73    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp40        [V74    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V75 tmp41        [V75    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[] "field V00._lower (fldOffset=0x0)" P-DEP
-;* V76 tmp42        [V76    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[] "field V00._upper (fldOffset=0x8)" P-DEP
-;* V77 tmp43        [V77    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[] "field V01._lower (fldOffset=0x0)" P-DEP
-;* V78 tmp44        [V78    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[] "field V01._upper (fldOffset=0x8)" P-DEP
-;* V79 tmp45        [V79    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP
-;* V80 tmp46        [V80    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP
-;* V81 tmp47        [V81    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V13.hasValue (fldOffset=0x0)" P-DEP
-;* V82 tmp48        [V82    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V13.value (fldOffset=0x4)" P-DEP
-;* V83 tmp49        [V83    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-;* V84 tmp50        [V84    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-;* V85 tmp51        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V86 tmp52        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V87 tmp53        [V87,T08] (  0,  0   )   ubyte  ->  zero-ref    "field V31.hasValue (fldOffset=0x0)" P-INDEP
-;* V88 tmp54        [V88,T09] (  0,  0   )     int  ->  zero-ref    "field V31.value (fldOffset=0x4)" P-INDEP
-;* V89 tmp55        [V89    ] (  0,  0   )   ubyte  ->  zero-ref    "field V33.hasValue (fldOffset=0x0)" P-INDEP
-;* V90 tmp56        [V90    ] (  0,  0   )     int  ->  zero-ref    "field V33.value (fldOffset=0x4)" P-INDEP
-;* V91 tmp57        [V91,T52] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V46.hasValue (fldOffset=0x0)" P-INDEP
-;* V92 tmp58        [V92,T35] (  0,  0   )     int  ->  zero-ref    single-def "field V46.value (fldOffset=0x4)" P-INDEP
-;* V93 tmp59        [V93,T36] (  0,  0   )   ubyte  ->  zero-ref    "field V47.hasValue (fldOffset=0x0)" P-INDEP
-;* V94 tmp60        [V94,T15] (  0,  0   )     int  ->  zero-ref    "field V47.value (fldOffset=0x4)" P-INDEP
-;* V95 tmp61        [V95,T53] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP
-;* V96 tmp62        [V96,T37] (  0,  0   )     int  ->  zero-ref    single-def "field V48.value (fldOffset=0x4)" P-INDEP
-;* V97 tmp63        [V97,T38] (  0,  0   )   ubyte  ->  zero-ref    "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V98 tmp64        [V98,T16] (  0,  0   )     int  ->  zero-ref    "field V49.value (fldOffset=0x4)" P-INDEP
-;* V99 tmp65        [V99    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] "Promoted implicit byref" <System.Int128>
-;* V100 tmp66       [V100    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] "Promoted implicit byref" <System.Int128>
-;  V101 tmp67       [V101    ] (  2,  4   )  struct (16) [rbp-0x18]  do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Int128>
-;  V102 tmp68       [V102    ] (  2,  4   )  struct (16) [rbp-0x28]  do-not-enreg[XS] addr-exposed "by-value struct argument" <System.Int128>
-;* V103 tmp69       [V103,T39] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V104 tmp70       [V104,T40] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V105 tmp71       [V105    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V106 tmp72       [V106    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V75 tmp41        [V75    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Int128]>
+;* V76 tmp42        [V76    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Int128]>
+;  V77 tmp43        [V77,T03] (  3,  1   )    long  ->  [rbp-0x10]  EH-live spill-single-def "field V00._lower (fldOffset=0x0)" P-INDEP
+;  V78 tmp44        [V78,T04] (  3,  1   )    long  ->  [rbp-0x18]  EH-live spill-single-def "field V00._upper (fldOffset=0x8)" P-INDEP
+;  V79 tmp45        [V79,T05] (  3,  1   )    long  ->  [rbp-0x20]  EH-live spill-single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+;  V80 tmp46        [V80,T06] (  3,  1   )    long  ->  [rbp-0x28]  EH-live spill-single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp47        [V81    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP
+;* V82 tmp48        [V82    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP
+;* V83 tmp49        [V83    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V13.hasValue (fldOffset=0x0)" P-DEP
+;* V84 tmp50        [V84    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V13.value (fldOffset=0x4)" P-DEP
+;* V85 tmp51        [V85    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+;* V86 tmp52        [V86    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+;* V87 tmp53        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp54        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
+;* V89 tmp55        [V89,T16] (  0,  0   )   ubyte  ->  zero-ref    "field V31.hasValue (fldOffset=0x0)" P-INDEP
+;* V90 tmp56        [V90,T17] (  0,  0   )     int  ->  zero-ref    "field V31.value (fldOffset=0x4)" P-INDEP
+;* V91 tmp57        [V91    ] (  0,  0   )   ubyte  ->  zero-ref    "field V33.hasValue (fldOffset=0x0)" P-INDEP
+;* V92 tmp58        [V92    ] (  0,  0   )     int  ->  zero-ref    "field V33.value (fldOffset=0x4)" P-INDEP
+;* V93 tmp59        [V93,T56] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V46.hasValue (fldOffset=0x0)" P-INDEP
+;* V94 tmp60        [V94,T39] (  0,  0   )     int  ->  zero-ref    single-def "field V46.value (fldOffset=0x4)" P-INDEP
+;* V95 tmp61        [V95,T40] (  0,  0   )   ubyte  ->  zero-ref    "field V47.hasValue (fldOffset=0x0)" P-INDEP
+;* V96 tmp62        [V96,T19] (  0,  0   )     int  ->  zero-ref    "field V47.value (fldOffset=0x4)" P-INDEP
+;* V97 tmp63        [V97,T57] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP
+;* V98 tmp64        [V98,T41] (  0,  0   )     int  ->  zero-ref    single-def "field V48.value (fldOffset=0x4)" P-INDEP
+;* V99 tmp65        [V99,T42] (  0,  0   )   ubyte  ->  zero-ref    "field V49.hasValue (fldOffset=0x0)" P-INDEP
+;* V100 tmp66       [V100,T20] (  0,  0   )     int  ->  zero-ref    "field V49.value (fldOffset=0x4)" P-INDEP
+;* V101 tmp67       [V101    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.Int128>
+;* V102 tmp68       [V102    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.Int128>
+;  V103 tmp69       [V103    ] (  3,  6   )  struct (16) [rbp-0x38]  do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.Int128>
+;  V104 tmp70       [V104    ] (  3,  6   )  struct (16) [rbp-0x48]  do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.Int128>
+;* V105 tmp71       [V105,T43] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V106 tmp72       [V106,T44] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
 ;* V107 tmp73       [V107    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
 ;* V108 tmp74       [V108    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V109 tmp75       [V109,T29] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V110 tmp76       [V110,T30] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V111 tmp77       [V111,T31] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V112 tmp78       [V112,T32] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V113 tmp79       [V113,T41] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V114 tmp80       [V114,T42] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;  V115 tmp81       [V115,T33] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
-;  V116 tmp82       [V116,T34] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V117 PSPSym      [V117,T05] (  1,  1   )    long  ->  [rbp-0x38]  do-not-enreg[V] "PSPSym"
+;* V109 tmp75       [V109    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V110 tmp76       [V110    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V111 tmp77       [V111,T33] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V112 tmp78       [V112,T34] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V113 tmp79       [V113,T35] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V114 tmp80       [V114,T36] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V115 tmp81       [V115,T45] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;* V116 tmp82       [V116,T46] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;  V117 tmp83       [V117,T37] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
+;  V118 tmp84       [V118,T38] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V119 PSPSym      [V119,T09] (  1,  1   )    long  ->  [rbp-0x58]  do-not-enreg[V] "PSPSym"
 ;
-; Lcl frame size = 120
+; Lcl frame size = 152
 
 G_M5157_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rbp
        push     rbx
-       sub      rsp, 120
-       lea      rbp, [rsp+0x80]
-       mov      qword ptr [rbp-0x38], rsp
-       mov      bword ptr [rbp+0x10], rcx
-       ; GC ptr vars +{V00}
-       mov      bword ptr [rbp+0x18], rdx
-       ; GC ptr vars +{V01}
+       sub      rsp, 152
+       lea      rbp, [rsp+0xA0]
+       mov      qword ptr [rbp-0x58], rsp
        mov      r11, r8
        ; gcrRegs +[r11]
-						;; size=29 bbWeight=1 PerfScore 6.00
-G_M5157_IG02:        ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref
+						;; size=24 bbWeight=1 PerfScore 4.00
+G_M5157_IG02:        ; bbWeight=1, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, byref
        ; byrRegs +[rcx rdx]
+       mov      r8, qword ptr [rdx]
+       mov      qword ptr [rbp-0x20], r8
+       mov      rdx, qword ptr [rdx+0x08]
+       ; byrRegs -[rdx]
+       mov      qword ptr [rbp-0x28], rdx
+       mov      rax, qword ptr [rcx]
+       mov      qword ptr [rbp-0x10], rax
+       mov      rcx, qword ptr [rcx+0x08]
+       ; byrRegs -[rcx]
+       mov      qword ptr [rbp-0x18], rcx
        test     r11, r11
        je       G_M5157_IG08
-       xor      r8, r8
-       ; gcrRegs +[r8]
-       mov      gword ptr [rbp-0x30], r8
+       xor      r10, r10
+       ; gcrRegs +[r10]
+       mov      gword ptr [rbp-0x50], r10
        ; GC ptr vars +{V05}
-						;; size=16 bbWeight=1 PerfScore 2.50
-G_M5157_IG03:        ; bbWeight=1, gcVars=000000000000000B {V00 V01 V05}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref, isz
-       ; gcrRegs -[r8]
-       vmovups  xmm0, xmmword ptr [rcx]
-       vmovups  xmmword ptr [rbp-0x18], xmm0
-       vmovups  xmm0, xmmword ptr [rdx]
-       vmovups  xmmword ptr [rbp-0x28], xmm0
-       lea      r8, [rbp-0x28]
-       lea      rdx, [rbp-0x18]
...
+32 (+8.49%) : 614559.dasm - Xunit.Assert:Equal[System.UInt128](System.UInt128,System.UInt128,System.Collections.Generic.IEqualityComparer`1[System.UInt128]) (Tier1)
@@ -9,31 +9,31 @@
 ; 5 inlinees with PGO data; 15 single block inlinees; 1 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T00] (  4,  6   )   byref  ->  [rbp+0x10]  ld-addr-op EH-live single-def
-;  V01 arg1         [V01,T01] (  4,  6   )   byref  ->  [rbp+0x18]  ld-addr-op EH-live single-def
+;  V00 arg0         [V00,T00] (  4,  8   )   byref  ->  rcx         ld-addr-op single-def
+;  V01 arg1         [V01,T01] (  4,  8   )   byref  ->  rdx         ld-addr-op single-def
 ;  V02 arg2         [V02,T02] (  4,  4   )     ref  ->  r11         class-hnd single-def <System.Collections.Generic.IEqualityComparer`1[System.UInt128]>
-;* V03 loc0         [V03,T43] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;* V04 loc1         [V04,T44] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
-;  V05 loc2         [V05,T03] (  3,  1   )     ref  ->  [rbp-0x30]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
+;* V03 loc0         [V03,T47] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;* V04 loc1         [V04,T48] (  0,  0   )     ref  ->  zero-ref    class-hnd EH-live single-def <Xunit.Sdk.CollectionTracker>
+;  V05 loc2         [V05,T07] (  3,  1   )     ref  ->  [rbp-0x50]  do-not-enreg[M] class-hnd EH-live <<unknown class>>
 ;* V06 loc3         [V06    ] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V07 loc4         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;* V08 loc5         [V08    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
 ;* V09 loc6         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.Collections.IEqualityComparer>
 ;* V10 loc7         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <Xunit.Sdk.AssertEqualityComparer`1[System.UInt128]>
-;* V11 loc8         [V11,T06] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
-;* V12 loc9         [V12,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
+;* V11 loc8         [V11,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
+;* V12 loc9         [V12,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd <System.String>
 ;* V13 loc10        [V13    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
 ;* V14 loc11        [V14    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[XS] addr-exposed ld-addr-op <System.Nullable`1[int]>
-;* V15 loc12        [V15,T45] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
-;* V16 loc13        [V16,T46] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
-;* V17 loc14        [V17,T17] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
+;* V15 loc12        [V15,T49] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
+;* V16 loc13        [V16,T50] (  0,  0   )     ref  ->  zero-ref    do-not-enreg[M] class-hnd EH-live <System.String>
+;* V17 loc14        [V17,T21] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.String>
 ;* V18 loc15        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
-;* V19 loc16        [V19,T47] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
+;* V19 loc16        [V19,T51] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Type>
 ;* V20 loc17        [V20    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
 ;* V21 loc18        [V21    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
 ;* V22 loc19        [V22    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
 ;* V23 loc20        [V23    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed ld-addr-op
-;* V24 loc21        [V24,T48] (  0,  0   )   ubyte  ->  zero-ref   
+;* V24 loc21        [V24,T52] (  0,  0   )   ubyte  ->  zero-ref   
 ;* V25 loc22        [V25    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;* V26 loc23        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
 ;* V27 loc24        [V27    ] (  0,  0   )  struct (16) zero-ref    ld-addr-op <System.UInt128>
@@ -44,126 +44,132 @@
 ;* V32 loc29        [V32    ] (  0,  0   )     int  ->  zero-ref   
 ;* V33 loc30        [V33    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op <System.Nullable`1[int]>
 ;  V34 OutArgs      [V34    ] (  1,  1   )  struct (72) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V35 tmp1         [V35    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.UInt128>
-;* V36 tmp2         [V36    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.UInt128>
-;* V37 tmp3         [V37,T04] (  0,  0   )     int  ->  zero-ref    single-def
-;* V38 tmp4         [V38,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
-;* V39 tmp5         [V39,T11] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
+;* V35 tmp1         [V35    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.UInt128>
+;* V36 tmp2         [V36    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.UInt128>
+;* V37 tmp3         [V37,T08] (  0,  0   )     int  ->  zero-ref    single-def
+;* V38 tmp4         [V38,T12] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
+;* V39 tmp5         [V39,T13] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
 ;* V40 tmp6         [V40    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V41 tmp7         [V41    ] (  0,  0   )     ref  ->  zero-ref   
 ;* V42 tmp8         [V42    ] (  0,  0   )   byref  ->  zero-ref   
 ;* V43 tmp9         [V43    ] (  0,  0   )     ref  ->  zero-ref   
-;* V44 tmp10        [V44,T18] (  0,  0   )     ref  ->  zero-ref   
-;* V45 tmp11        [V45,T19] (  0,  0   )     ref  ->  zero-ref   
+;* V44 tmp10        [V44,T22] (  0,  0   )     ref  ->  zero-ref   
+;* V45 tmp11        [V45,T23] (  0,  0   )     ref  ->  zero-ref   
 ;* V46 tmp12        [V46    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;* V47 tmp13        [V47    ] (  0,  0   )  struct ( 8) zero-ref    <System.Nullable`1[int]>
 ;* V48 tmp14        [V48    ] (  0,  0   )  struct ( 8) zero-ref    ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]>
 ;* V49 tmp15        [V49    ] (  0,  0   )  struct ( 8) zero-ref    <System.Nullable`1[int]>
-;* V50 tmp16        [V50,T20] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V51 tmp17        [V51,T21] (  0,  0   )     ref  ->  zero-ref   
-;* V52 tmp18        [V52,T22] (  0,  0   )     ref  ->  zero-ref   
-;* V53 tmp19        [V53,T23] (  0,  0   )     ref  ->  zero-ref   
-;* V54 tmp20        [V54,T24] (  0,  0   )     ref  ->  zero-ref   
-;* V55 tmp21        [V55,T25] (  0,  0   )     ref  ->  zero-ref   
-;* V56 tmp22        [V56,T26] (  0,  0   )     ref  ->  zero-ref   
+;* V50 tmp16        [V50,T24] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V51 tmp17        [V51,T25] (  0,  0   )     ref  ->  zero-ref   
+;* V52 tmp18        [V52,T26] (  0,  0   )     ref  ->  zero-ref   
+;* V53 tmp19        [V53,T27] (  0,  0   )     ref  ->  zero-ref   
+;* V54 tmp20        [V54,T28] (  0,  0   )     ref  ->  zero-ref   
+;* V55 tmp21        [V55,T29] (  0,  0   )     ref  ->  zero-ref   
+;* V56 tmp22        [V56,T30] (  0,  0   )     ref  ->  zero-ref   
 ;* V57 tmp23        [V57    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
 ;* V58 tmp24        [V58    ] (  0,  0   )     int  ->  zero-ref    "impAppendStmt"
-;* V59 tmp25        [V59,T27] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;  V60 tmp26        [V60,T12] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
-;  V61 tmp27        [V61,T13] (  3,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
-;  V62 tmp28        [V62,T28] (  2,  0   )     ref  ->  rdx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;  V63 tmp29        [V63,T14] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V59 tmp25        [V59,T31] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;  V60 tmp26        [V60,T14] (  4,  0   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
+;  V61 tmp27        [V61,T15] (  4,  0   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.UInt128>
+;  V62 tmp28        [V62,T32] (  2,  0   )     ref  ->  rdx         class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;  V63 tmp29        [V63,T18] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V64 tmp30        [V64    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V65 tmp31        [V65    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.UInt128>
+;* V65 tmp31        [V65    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.UInt128>
 ;* V66 tmp32        [V66    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
 ;* V67 tmp33        [V67    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V68 tmp34        [V68    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.UInt128>
+;* V68 tmp34        [V68    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.UInt128>
 ;* V69 tmp35        [V69    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline return value spill temp" <Xunit.Sdk.CollectionTracker>
-;* V70 tmp36        [V70,T49] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;* V71 tmp37        [V71,T50] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V72 tmp38        [V72,T51] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V70 tmp36        [V70,T53] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
+;* V71 tmp37        [V71,T54] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
+;* V72 tmp38        [V72,T55] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V73 tmp39        [V73    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V74 tmp40        [V74    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;* V75 tmp41        [V75    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[] "field V00._lower (fldOffset=0x0)" P-DEP
-;* V76 tmp42        [V76    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[] "field V00._upper (fldOffset=0x8)" P-DEP
-;* V77 tmp43        [V77    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[] "field V01._lower (fldOffset=0x0)" P-DEP
-;* V78 tmp44        [V78    ] (  0,  0   )    long  ->  zero-ref    do-not-enreg[] "field V01._upper (fldOffset=0x8)" P-DEP
-;* V79 tmp45        [V79    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP
-;* V80 tmp46        [V80    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP
-;* V81 tmp47        [V81    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V13.hasValue (fldOffset=0x0)" P-DEP
-;* V82 tmp48        [V82    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V13.value (fldOffset=0x4)" P-DEP
-;* V83 tmp49        [V83    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
-;* V84 tmp50        [V84    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
-;* V85 tmp51        [V85    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
-;* V86 tmp52        [V86    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
-;* V87 tmp53        [V87,T08] (  0,  0   )   ubyte  ->  zero-ref    "field V31.hasValue (fldOffset=0x0)" P-INDEP
-;* V88 tmp54        [V88,T09] (  0,  0   )     int  ->  zero-ref    "field V31.value (fldOffset=0x4)" P-INDEP
-;* V89 tmp55        [V89    ] (  0,  0   )   ubyte  ->  zero-ref    "field V33.hasValue (fldOffset=0x0)" P-INDEP
-;* V90 tmp56        [V90    ] (  0,  0   )     int  ->  zero-ref    "field V33.value (fldOffset=0x4)" P-INDEP
-;* V91 tmp57        [V91,T52] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V46.hasValue (fldOffset=0x0)" P-INDEP
-;* V92 tmp58        [V92,T35] (  0,  0   )     int  ->  zero-ref    single-def "field V46.value (fldOffset=0x4)" P-INDEP
-;* V93 tmp59        [V93,T36] (  0,  0   )   ubyte  ->  zero-ref    "field V47.hasValue (fldOffset=0x0)" P-INDEP
-;* V94 tmp60        [V94,T15] (  0,  0   )     int  ->  zero-ref    "field V47.value (fldOffset=0x4)" P-INDEP
-;* V95 tmp61        [V95,T53] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP
-;* V96 tmp62        [V96,T37] (  0,  0   )     int  ->  zero-ref    single-def "field V48.value (fldOffset=0x4)" P-INDEP
-;* V97 tmp63        [V97,T38] (  0,  0   )   ubyte  ->  zero-ref    "field V49.hasValue (fldOffset=0x0)" P-INDEP
-;* V98 tmp64        [V98,T16] (  0,  0   )     int  ->  zero-ref    "field V49.value (fldOffset=0x4)" P-INDEP
-;* V99 tmp65        [V99    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] "Promoted implicit byref" <System.UInt128>
-;* V100 tmp66       [V100    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[S] "Promoted implicit byref" <System.UInt128>
-;  V101 tmp67       [V101    ] (  2,  4   )  struct (16) [rbp-0x18]  do-not-enreg[XS] addr-exposed "by-value struct argument" <System.UInt128>
-;  V102 tmp68       [V102    ] (  2,  4   )  struct (16) [rbp-0x28]  do-not-enreg[XS] addr-exposed "by-value struct argument" <System.UInt128>
-;* V103 tmp69       [V103,T39] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V104 tmp70       [V104,T40] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V105 tmp71       [V105    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V106 tmp72       [V106    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V75 tmp41        [V75    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.UInt128]>
+;* V76 tmp42        [V76    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.UInt128]>
+;  V77 tmp43        [V77,T03] (  3,  1   )    long  ->  [rbp-0x10]  EH-live spill-single-def "field V00._lower (fldOffset=0x0)" P-INDEP
+;  V78 tmp44        [V78,T04] (  3,  1   )    long  ->  [rbp-0x18]  EH-live spill-single-def "field V00._upper (fldOffset=0x8)" P-INDEP
+;  V79 tmp45        [V79,T05] (  3,  1   )    long  ->  [rbp-0x20]  EH-live spill-single-def "field V01._lower (fldOffset=0x0)" P-INDEP
+;  V80 tmp46        [V80,T06] (  3,  1   )    long  ->  [rbp-0x28]  EH-live spill-single-def "field V01._upper (fldOffset=0x8)" P-INDEP
+;* V81 tmp47        [V81    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V08.hasValue (fldOffset=0x0)" P-DEP
+;* V82 tmp48        [V82    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V08.value (fldOffset=0x4)" P-DEP
+;* V83 tmp49        [V83    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V13.hasValue (fldOffset=0x0)" P-DEP
+;* V84 tmp50        [V84    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V13.value (fldOffset=0x4)" P-DEP
+;* V85 tmp51        [V85    ] (  0,  0   )   ubyte  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.hasValue (fldOffset=0x0)" P-DEP
+;* V86 tmp52        [V86    ] (  0,  0   )     int  ->  zero-ref    do-not-enreg[X] addr-exposed "field V14.value (fldOffset=0x4)" P-DEP
+;* V87 tmp53        [V87    ] (  0,  0   )    long  ->  zero-ref    "field V27._lower (fldOffset=0x0)" P-INDEP
+;* V88 tmp54        [V88    ] (  0,  0   )    long  ->  zero-ref    "field V27._upper (fldOffset=0x8)" P-INDEP
+;* V89 tmp55        [V89,T16] (  0,  0   )   ubyte  ->  zero-ref    "field V31.hasValue (fldOffset=0x0)" P-INDEP
+;* V90 tmp56        [V90,T17] (  0,  0   )     int  ->  zero-ref    "field V31.value (fldOffset=0x4)" P-INDEP
+;* V91 tmp57        [V91    ] (  0,  0   )   ubyte  ->  zero-ref    "field V33.hasValue (fldOffset=0x0)" P-INDEP
+;* V92 tmp58        [V92    ] (  0,  0   )     int  ->  zero-ref    "field V33.value (fldOffset=0x4)" P-INDEP
+;* V93 tmp59        [V93,T56] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V46.hasValue (fldOffset=0x0)" P-INDEP
+;* V94 tmp60        [V94,T39] (  0,  0   )     int  ->  zero-ref    single-def "field V46.value (fldOffset=0x4)" P-INDEP
+;* V95 tmp61        [V95,T40] (  0,  0   )   ubyte  ->  zero-ref    "field V47.hasValue (fldOffset=0x0)" P-INDEP
+;* V96 tmp62        [V96,T19] (  0,  0   )     int  ->  zero-ref    "field V47.value (fldOffset=0x4)" P-INDEP
+;* V97 tmp63        [V97,T57] (  0,  0   )   ubyte  ->  zero-ref    single-def "field V48.hasValue (fldOffset=0x0)" P-INDEP
+;* V98 tmp64        [V98,T41] (  0,  0   )     int  ->  zero-ref    single-def "field V48.value (fldOffset=0x4)" P-INDEP
+;* V99 tmp65        [V99,T42] (  0,  0   )   ubyte  ->  zero-ref    "field V49.hasValue (fldOffset=0x0)" P-INDEP
+;* V100 tmp66       [V100,T20] (  0,  0   )     int  ->  zero-ref    "field V49.value (fldOffset=0x4)" P-INDEP
+;* V101 tmp67       [V101    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.UInt128>
+;* V102 tmp68       [V102    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref" <System.UInt128>
+;  V103 tmp69       [V103    ] (  3,  6   )  struct (16) [rbp-0x38]  do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.UInt128>
+;  V104 tmp70       [V104    ] (  3,  6   )  struct (16) [rbp-0x48]  do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.UInt128>
+;* V105 tmp71       [V105,T43] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V106 tmp72       [V106,T44] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
 ;* V107 tmp73       [V107    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
 ;* V108 tmp74       [V108    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
-;* V109 tmp75       [V109,T29] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V110 tmp76       [V110,T30] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V111 tmp77       [V111,T31] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V112 tmp78       [V112,T32] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
-;* V113 tmp79       [V113,T41] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;* V114 tmp80       [V114,T42] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
-;  V115 tmp81       [V115,T33] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
-;  V116 tmp82       [V116,T34] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V117 PSPSym      [V117,T05] (  1,  1   )    long  ->  [rbp-0x38]  do-not-enreg[V] "PSPSym"
+;* V109 tmp75       [V109    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V110 tmp76       [V110    ] (  0,  0   )     int  ->  zero-ref    "argument with side effect"
+;* V111 tmp77       [V111,T33] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V112 tmp78       [V112,T34] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V113 tmp79       [V113,T35] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V114 tmp80       [V114,T36] (  0,  0   )     ref  ->  zero-ref    single-def "argument with side effect"
+;* V115 tmp81       [V115,T45] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;* V116 tmp82       [V116,T46] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[S] "by-value struct argument" <System.Nullable`1[int]>
+;  V117 tmp83       [V117,T37] (  2,  0   )     ref  ->  rcx         single-def "argument with side effect"
+;  V118 tmp84       [V118,T38] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
+;  V119 PSPSym      [V119,T09] (  1,  1   )    long  ->  [rbp-0x58]  do-not-enreg[V] "PSPSym"
 ;
-; Lcl frame size = 120
+; Lcl frame size = 152
 
 G_M20965_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rbp
        push     rbx
-       sub      rsp, 120
-       lea      rbp, [rsp+0x80]
-       mov      qword ptr [rbp-0x38], rsp
-       mov      bword ptr [rbp+0x10], rcx
-       ; GC ptr vars +{V00}
-       mov      bword ptr [rbp+0x18], rdx
-       ; GC ptr vars +{V01}
+       sub      rsp, 152
+       lea      rbp, [rsp+0xA0]
+       mov      qword ptr [rbp-0x58], rsp
        mov      r11, r8
        ; gcrRegs +[r11]
-						;; size=29 bbWeight=1 PerfScore 6.00
-G_M20965_IG02:        ; bbWeight=1, gcVars=0000000000000003 {V00 V01}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref
+						;; size=24 bbWeight=1 PerfScore 4.00
+G_M20965_IG02:        ; bbWeight=1, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, byref
        ; byrRegs +[rcx rdx]
+       mov      r8, qword ptr [rdx]
+       mov      qword ptr [rbp-0x20], r8
+       mov      rdx, qword ptr [rdx+0x08]
+       ; byrRegs -[rdx]
+       mov      qword ptr [rbp-0x28], rdx
+       mov      rax, qword ptr [rcx]
+       mov      qword ptr [rbp-0x10], rax
+       mov      rcx, qword ptr [rcx+0x08]
+       ; byrRegs -[rcx]
+       mov      qword ptr [rbp-0x18], rcx
        test     r11, r11
        je       G_M20965_IG08
-       xor      r8, r8
-       ; gcrRegs +[r8]
-       mov      gword ptr [rbp-0x30], r8
+       xor      r10, r10
+       ; gcrRegs +[r10]
+       mov      gword ptr [rbp-0x50], r10
        ; GC ptr vars +{V05}
-						;; size=16 bbWeight=1 PerfScore 2.50
-G_M20965_IG03:        ; bbWeight=1, gcVars=000000000000000B {V00 V01 V05}, gcrefRegs=0800 {r11}, byrefRegs=0006 {rcx rdx}, gcvars, byref, isz
-       ; gcrRegs -[r8]
-       vmovups  xmm0, xmmword ptr [rcx]
-       vmovups  xmmword ptr [rbp-0x18], xmm0
-       vmovups  xmm0, xmmword ptr [rdx]
-       vmovups  xmmword ptr [rbp-0x28], xmm0
-       lea      r8, [rbp-0x28]
-       lea      rdx, [rbp-0x18]
...
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch
-49 (-25.39%) : 34157.dasm - Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (FullOpts)
@@ -8,23 +8,28 @@
 ; 0 inlinees with PGO data; 19 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T03] (  9,  8.50)     ref  ->  rbx         class-hnd single-def <Microsoft.Interop.LibraryImportCompilationData>
+;  V00 arg0         [V00,T02] (  9,  8.50)     ref  ->  rbx         class-hnd single-def <Microsoft.Interop.LibraryImportCompilationData>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T01] (  7, 14   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
-;  V03 tmp2         [V03,T02] (  7, 14   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <Microsoft.Interop.LibraryImportData>
+;* V02 tmp1         [V02    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
+;  V03 tmp2         [V03,T01] (  7, 14   )     ref  ->  rdi         class-hnd exact single-def "dup spill" <Microsoft.Interop.LibraryImportData>
 ;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V05 tmp4         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V08 tmp7         [V08,T06] (  3,  2   )     ref  ->  rdx        
+;  V08 tmp7         [V08,T05] (  3,  2   )     ref  ->  rdx        
 ;* V09 tmp8         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
-;  V10 tmp9         [V10,T00] (  8, 16   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
+;  V10 tmp9         [V10,T00] (  8, 16   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.LibraryImportData>
 ;* V11 tmp10        [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.String>
 ;* V12 tmp11        [V12    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V13 tmp12        [V13    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V14 tmp13        [V14    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V15 cse0         [V15,T04] (  3,  3   )     ref  ->  rbp         "CSE #02: aggressive"
-;  V16 cse1         [V16,T05] (  3,  3   )    long  ->  rsi         "CSE #01: aggressive"
+;* V15 tmp14        [V15,T06] (  0,  0   )  struct (48) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <Microsoft.Interop.LibraryImportData>
+;* V16 tmp15        [V16    ] (  0,  0   )    long  ->  zero-ref    single-def "V15.[000..008)"
+;* V17 tmp16        [V17    ] (  0,  0   )     int  ->  zero-ref    "V15.[016..020)"
+;* V18 tmp17        [V18    ] (  0,  0   )     int  ->  zero-ref    "V15.[020..024)"
+;* V19 tmp18        [V19    ] (  0,  0   )   ubyte  ->  zero-ref    "V15.[024..025)"
+;  V20 cse0         [V20,T03] (  2,  2   )     ref  ->  rsi         "CSE #01: aggressive"
+;  V21 cse1         [V21,T04] (  3,  3   )     ref  ->  rbp         "CSE #02: aggressive"
 ;
 ; Lcl frame size = 40
 
@@ -37,79 +42,58 @@ G_M28281_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      rbx, rcx
        ; gcrRegs +[rbx]
 						;; size=11 bbWeight=1 PerfScore 4.50
-G_M28281_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      rsi, 0xD1FFAB1E      ; Microsoft.Interop.LibraryImportData
-       mov      rcx, rsi
+G_M28281_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       mov      rsi, gword ptr [rbx+0x20]
+       ; gcrRegs +[rsi]
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.Interop.LibraryImportData
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
        mov      rdi, rax
        ; gcrRegs +[rdi]
-       mov      rbp, gword ptr [rbx+0x20]
+       xor      ecx, ecx
+       mov      dword ptr [rdi+0x10], ecx
+       mov      byte  ptr [rdi+0x18], 0
+						;; size=31 bbWeight=1 PerfScore 5.75
+G_M28281_IG03:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax]
+       mov      dword ptr [rdi+0x14], ecx
+						;; size=3 bbWeight=1 PerfScore 1.00
+G_M28281_IG04:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+       xor      rbp, rbp
        ; gcrRegs +[rbp]
+       mov      gword ptr [rdi+0x08], rbp
        lea      rcx, bword ptr [rdi+0x20]
        ; byrRegs +[rcx]
-       mov      rdx, rbp
+       mov      rdx, rsi
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
+       ; gcrRegs -[rdx rsi]
        ; byrRegs -[rcx]
-       mov      rcx, rsi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      rsi, rax
-       ; gcrRegs +[rsi]
-       mov      ecx, dword ptr [rdi+0x10]
-       mov      dword ptr [rsi+0x10], ecx
-       movzx    rcx, byte  ptr [rdi+0x18]
-       mov      byte  ptr [rsi+0x18], cl
-       mov      ecx, dword ptr [rdi+0x14]
-       mov      dword ptr [rsi+0x14], ecx
-       mov      rdx, gword ptr [rdi+0x08]
+       mov      gword ptr [rdi+0x28], rbp
+       mov      rdx, gword ptr [rbx+0x28]
        ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rsi+0x08]
+       lea      rcx, bword ptr [rdi+0x28]
        ; byrRegs +[rcx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
-       ; byrRegs -[rcx]
-       lea      rcx, bword ptr [rsi+0x20]
-       ; byrRegs +[rcx]
-       mov      rdx, rbp
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rdx rbp]
        ; byrRegs -[rcx]
-       mov      rdx, gword ptr [rdi+0x28]
-       ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rsi+0x28]
-       ; byrRegs +[rcx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx rdi]
-       ; byrRegs -[rcx]
-       mov      rdx, gword ptr [rbx+0x28]
-       ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rsi+0x28]
-       ; byrRegs +[rcx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx]
-       ; byrRegs -[rcx]
        mov      ecx, dword ptr [rbx+0x10]
-       mov      dword ptr [rsi+0x10], ecx
+       mov      dword ptr [rdi+0x10], ecx
        movzx    rcx, byte  ptr [rbx+0x18]
-       mov      byte  ptr [rsi+0x18], cl
+       mov      byte  ptr [rdi+0x18], cl
        mov      ecx, dword ptr [rbx+0x14]
-       mov      dword ptr [rsi+0x14], ecx
+       mov      dword ptr [rdi+0x14], ecx
        cmp      gword ptr [rbx+0x08], 0
-       jne      SHORT G_M28281_IG04
-						;; size=144 bbWeight=1 PerfScore 41.25
-G_M28281_IG03:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       jne      SHORT G_M28281_IG06
+						;; size=61 bbWeight=1 PerfScore 20.50
+G_M28281_IG05:        ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs -[rbx]
        xor      rdx, rdx
        ; gcrRegs +[rdx]
-       jmp      SHORT G_M28281_IG05
+       jmp      SHORT G_M28281_IG07
 						;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M28281_IG04:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M28281_IG06:        ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdx] +[rbx]
        mov      rcx, gword ptr [rbx+0x08]
        ; gcrRegs +[rcx]
@@ -119,17 +103,17 @@ G_M28281_IG04:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
        mov      rdx, rax
        ; gcrRegs +[rdx]
 						;; size=13 bbWeight=0.50 PerfScore 2.62
-G_M28281_IG05:        ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
+G_M28281_IG07:        ; bbWeight=1, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
-       lea      rcx, bword ptr [rsi+0x08]
+       lea      rcx, bword ptr [rdi+0x08]
        ; byrRegs +[rcx]
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rdx]
        ; byrRegs -[rcx]
-       mov      rax, rsi
+       mov      rax, rdi
        ; gcrRegs +[rax]
 						;; size=12 bbWeight=1 PerfScore 1.75
-G_M28281_IG06:        ; bbWeight=1, epilog, nogc, extend
+G_M28281_IG08:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        pop      rbx
        pop      rbp
@@ -138,7 +122,7 @@ G_M28281_IG06:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=9 bbWeight=1 PerfScore 3.25
 
-; Total bytes of code 193, prolog size 8, PerfScore 54.50, instruction count 57, allocated bytes for code 193 (MethodHash=79a39186) for method Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (FullOpts)
+; Total bytes of code 144, prolog size 8, PerfScore 40.50, instruction count 45, allocated bytes for code 144 (MethodHash=79a39186) for method Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (FullOpts)
 ; ============================================================
 
 Unwind Info:
-35 (-23.81%) : 14329.dasm - Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (FullOpts)
@@ -8,60 +8,56 @@
 ; 0 inlinees with PGO data; 18 single block inlinees; 0 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T03] (  7,  7   )     ref  ->  rbx         class-hnd single-def <Microsoft.Interop.GeneratedComInterfaceCompilationData>
+;  V00 arg0         [V00,T02] (  7,  7   )     ref  ->  rbx         class-hnd single-def <Microsoft.Interop.GeneratedComInterfaceCompilationData>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T02] (  6, 12   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
+;* V02 tmp1         [V02    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
 ;  V03 tmp2         [V03,T00] (  7, 14   )     ref  ->  rsi         class-hnd exact single-def "dup spill" <Microsoft.Interop.GeneratedComInterfaceData>
 ;* V04 tmp3         [V04    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V05 tmp4         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V06 tmp5         [V06    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V07 tmp6         [V07    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V08 tmp7         [V08,T06] (  3,  2   )     ref  ->  rdx        
+;  V08 tmp7         [V08,T04] (  3,  2   )     ref  ->  rdx        
 ;  V09 tmp8         [V09,T01] (  7, 14   )     ref  ->  rsi         class-hnd exact single-def "NewObj constructor temp" <Microsoft.Interop.GeneratedComInterfaceData>
 ;* V10 tmp9         [V10    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V11 tmp10        [V11    ] (  0,  0   )   ubyte  ->  zero-ref    "Inlining Arg"
 ;* V12 tmp11        [V12    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
 ;* V13 tmp12        [V13    ] (  0,  0   )     int  ->  zero-ref    "Inlining Arg"
-;  V14 cse0         [V14,T05] (  3,  2.50)     ref  ->  rcx         "CSE #02: aggressive"
-;  V15 cse1         [V15,T04] (  3,  3   )    long  ->  rsi         "CSE #01: aggressive"
+;* V14 tmp13        [V14    ] (  0,  0   )  struct (32) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <Microsoft.Interop.GeneratedComInterfaceData>
+;* V15 tmp14        [V15    ] (  0,  0   )    long  ->  zero-ref    single-def "V14.[000..008)"
+;* V16 tmp15        [V16    ] (  0,  0   )     int  ->  zero-ref    "V14.[016..020)"
+;* V17 tmp16        [V17    ] (  0,  0   )     int  ->  zero-ref    "V14.[020..024)"
+;* V18 tmp17        [V18    ] (  0,  0   )   ubyte  ->  zero-ref    "V14.[024..025)"
+;* V19 tmp18        [V19    ] (  0,  0   )     int  ->  zero-ref    "V14.[028..032)"
+;  V20 cse0         [V20,T03] (  3,  2.50)     ref  ->  rcx         "CSE #01: aggressive"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 40
 
 G_M25584_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 40
        mov      rbx, rcx
        ; gcrRegs +[rbx]
-						;; size=10 bbWeight=1 PerfScore 3.50
-G_M25584_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
-       mov      rsi, 0xD1FFAB1E      ; Microsoft.Interop.GeneratedComInterfaceData
-       mov      rcx, rsi
+						;; size=9 bbWeight=1 PerfScore 2.50
+G_M25584_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.Interop.GeneratedComInterfaceData
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
-       mov      rdi, rax
-       ; gcrRegs +[rdi]
-       mov      rcx, rsi
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
        mov      rsi, rax
        ; gcrRegs +[rsi]
-       mov      ecx, dword ptr [rdi+0x10]
+       xor      ecx, ecx
        mov      dword ptr [rsi+0x10], ecx
-       movzx    rcx, byte  ptr [rdi+0x18]
-       mov      byte  ptr [rsi+0x18], cl
-       mov      ecx, dword ptr [rdi+0x14]
+       mov      byte  ptr [rsi+0x18], 0
+						;; size=27 bbWeight=1 PerfScore 3.75
+G_M25584_IG03:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rax]
        mov      dword ptr [rsi+0x14], ecx
-       mov      rdx, gword ptr [rdi+0x08]
-       ; gcrRegs +[rdx]
-       lea      rcx, bword ptr [rsi+0x08]
-       ; byrRegs +[rcx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
-       ; byrRegs -[rcx]
-       mov      ecx, dword ptr [rdi+0x1C]
+						;; size=3 bbWeight=1 PerfScore 1.00
+G_M25584_IG04:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       mov      gword ptr [rsi+0x08], rcx
+						;; size=4 bbWeight=1 PerfScore 1.00
+G_M25584_IG05:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      dword ptr [rsi+0x1C], ecx
        mov      ecx, dword ptr [rbx+0x10]
        mov      dword ptr [rsi+0x10], ecx
@@ -72,15 +68,15 @@ G_M25584_IG02:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        mov      rcx, gword ptr [rbx+0x08]
        ; gcrRegs +[rcx]
        test     rcx, rcx
-       jne      SHORT G_M25584_IG04
-						;; size=98 bbWeight=1 PerfScore 31.00
-G_M25584_IG03:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
-       ; gcrRegs -[rcx rdi]
+       jne      SHORT G_M25584_IG07
+						;; size=31 bbWeight=1 PerfScore 13.25
+G_M25584_IG06:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rcx]
        xor      rdx, rdx
        ; gcrRegs +[rdx]
-       jmp      SHORT G_M25584_IG05
+       jmp      SHORT G_M25584_IG08
 						;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M25584_IG04:        ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
+G_M25584_IG07:        ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rdx] +[rcx]
        call     [<unknown method>]
        ; gcrRegs -[rcx] +[rax]
@@ -88,7 +84,7 @@ G_M25584_IG04:        ; bbWeight=0.50, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0
        mov      rdx, rax
        ; gcrRegs +[rdx]
 						;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M25584_IG05:        ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
+G_M25584_IG08:        ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        lea      rcx, bword ptr [rsi+0x08]
        ; byrRegs +[rcx]
@@ -100,15 +96,14 @@ G_M25584_IG05:        ; bbWeight=1, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000
        mov      rax, rsi
        ; gcrRegs +[rax]
 						;; size=18 bbWeight=1 PerfScore 4.75
-G_M25584_IG06:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+G_M25584_IG09:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 40
        pop      rbx
        pop      rsi
-       pop      rdi
        ret      
-						;; size=8 bbWeight=1 PerfScore 2.75
+						;; size=7 bbWeight=1 PerfScore 2.25
 
-; Total bytes of code 147, prolog size 7, PerfScore 44.75, instruction count 46, allocated bytes for code 147 (MethodHash=ad6f9c0f) for method Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (FullOpts)
+; Total bytes of code 112, prolog size 6, PerfScore 31.25, instruction count 35, allocated bytes for code 112 (MethodHash=ad6f9c0f) for method Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -116,12 +111,11 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x07
-  CountOfUnwindCodes: 4
+  SizeOfProlog      : 0x06
+  CountOfUnwindCodes: 3
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
-    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+    CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 4 * 8 + 8 = 40 = 0x28
+    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-31 (-17.71%) : 95230.dasm - System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0:b__21():System.Object:this (FullOpts)
@@ -8,91 +8,72 @@
 ; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T02] (  3,  3   )     ref  ->  rsi         this class-hnd single-def <System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0>
+;  V00 this         [V00,T01] (  3,  3   )     ref  ->  rcx         this class-hnd single-def <System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0>
 ;  V01 OutArgs      [V01    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V02 tmp1         [V02,T00] (  2,  4   )     ref  ->  rax         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
-;* V03 tmp2         [V03,T07] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[int]>
-;  V04 tmp3         [V04,T03] (  2,  4   )   byref  ->  rdx         single-def "Inlining Arg"
-;  V05 tmp4         [V05    ] (  3,  3   )  struct ( 8) [rsp+0x28]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[int]>
-;  V06 tmp5         [V06,T04] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.GenericEqualityComparer`1[int]>
-;  V07 tmp6         [V07,T01] (  3,  6   )     ref  ->  rbx         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
-;  V08 tmp7         [V08,T08] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V09 tmp8         [V09    ] (  3,  3   )     ref  ->  [rsp+0x28]  do-not-enreg[X] addr-exposed "field V05.array (fldOffset=0x0)" P-DEP
-;  V10 tmp9         [V10,T09] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
-;  V11 cse0         [V11,T05] (  3,  3   )   byref  ->  rdx         "CSE #01: aggressive"
-;  V12 cse1         [V12,T06] (  3,  3   )    long  ->  rbx         "CSE #02: aggressive"
+;* V02 tmp1         [V02    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
+;* V03 tmp2         [V03    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[int]>
+;* V04 tmp3         [V04    ] (  0,  0   )    long  ->  zero-ref    "Inlining Arg"
+;  V05 tmp4         [V05    ] (  3,  3   )  struct ( 8) [rsp+0x20]  do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Collections.Immutable.ImmutableArray`1[int]>
+;  V06 tmp5         [V06,T02] (  2,  4   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <System.Collections.Generic.GenericEqualityComparer`1[int]>
+;  V07 tmp6         [V07,T00] (  3,  6   )     ref  ->  rsi         class-hnd exact single-def "Single-def Box Helper" <System.Collections.Immutable.ImmutableArray`1[int]>
+;  V08 tmp7         [V08,T04] (  3,  0   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V09 tmp8         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated boxed value class temp" <System.Collections.Generic.KeyValuePair`2[long,System.Collections.Immutable.ImmutableArray`1[int]]>
+;  V10 tmp9         [V10    ] (  3,  3   )     ref  ->  [rsp+0x20]  do-not-enreg[X] addr-exposed "field V05.array (fldOffset=0x0)" P-DEP
+;* V11 tmp10        [V11    ] (  0,  0   )    long  ->  zero-ref    "V09.[000..008)"
+;  V12 tmp11        [V12,T03] (  2,  2   )     ref  ->  rcx         single-def "V09.[008..016)"
+;  V13 tmp12        [V13,T05] (  2,  0   )     ref  ->  rdx         single-def "argument with side effect"
 ;
-; Lcl frame size = 48
+; Lcl frame size = 40
 
 G_M58364_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-       push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 48
+       sub      rsp, 40
        xor      eax, eax
-       mov      qword ptr [rsp+0x28], rax
-       mov      rsi, rcx
-       ; gcrRegs +[rsi]
-						;; size=17 bbWeight=1 PerfScore 4.75
-G_M58364_IG02:        ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
-       mov      rbx, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableArray`1[int]
-       mov      rcx, rbx
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       add      rsi, 80
-       ; gcrRegs -[rsi]
-       ; byrRegs +[rsi]
-       lea      rdx, bword ptr [rax+0x08]
-       ; byrRegs +[rdx]
-       mov      rdi, rdx
-       ; byrRegs +[rdi]
-       call     CORINFO_HELP_ASSIGN_BYREF
-       ; gcrRegs -[rax]
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rsi, gword ptr [rcx]
-       ; gcrRegs +[rsi]
-       ; byrRegs -[rsi]
-       mov      rcx, gword ptr [rdx]
+       mov      qword ptr [rsp+0x20], rax
+						;; size=13 bbWeight=1 PerfScore 3.50
+G_M58364_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rcx]
-       mov      gword ptr [rsp+0x28], rcx
-       cmp      gword ptr [rsp+0x28], 0
+       mov      rcx, gword ptr [rcx+0x50]
+       mov      rax, 0xD1FFAB1E      ; const ptr
+       mov      rbx, gword ptr [rax]
+       ; gcrRegs +[rbx]
+       mov      gword ptr [rsp+0x20], rcx
+       cmp      gword ptr [rsp+0x20], 0
        je       SHORT G_M58364_IG04
-       mov      rcx, rbx
+       mov      rcx, 0xD1FFAB1E      ; System.Collections.Immutable.ImmutableArray`1[int]
        ; gcrRegs -[rcx]
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
-       ; byrRegs -[rdx rdi]
        ; gcr arg pop 0
-       mov      rbx, rax
-       ; gcrRegs +[rbx]
-       lea      rcx, [rsp+0x28]
-       mov      r8, rsi
+       mov      rsi, rax
+       ; gcrRegs +[rsi]
+       lea      rcx, [rsp+0x20]
+       mov      r8, rbx
        ; gcrRegs +[r8]
        xor      rdx, rdx
        ; gcrRegs +[rdx]
        call     [<unknown method>]
-       ; gcrRegs -[rdx rsi r8]
+       ; gcrRegs -[rdx rbx r8]
        ; gcr arg pop 0
-       lea      rcx, bword ptr [rbx+0x08]
+       lea      rcx, bword ptr [rsi+0x08]
        ; byrRegs +[rcx]
        mov      rdx, rax
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
-       mov      rax, rbx
+       mov      rax, rsi
        ; gcrRegs +[rax]
-						;; size=105 bbWeight=1 PerfScore 19.25
+						;; size=79 bbWeight=1 PerfScore 15.75
 G_M58364_IG03:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 48
+       add      rsp, 40
        pop      rbx
        pop      rsi
-       pop      rdi
        ret      
-						;; size=8 bbWeight=1 PerfScore 2.75
+						;; size=7 bbWeight=1 PerfScore 2.25
 G_M58364_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax rbx]
+       ; gcrRegs -[rax rsi]
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -116,7 +97,7 @@ G_M58364_IG04:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        int3     
 						;; size=45 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 175, prolog size 14, PerfScore 26.75, instruction count 46, allocated bytes for code 175 (MethodHash=ce781c03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0:<RemoveRangeEnumerableInvalid>b__21():System.Object:this (FullOpts)
+; Total bytes of code 144, prolog size 13, PerfScore 21.50, instruction count 36, allocated bytes for code 144 (MethodHash=ce781c03) for method System.Collections.Immutable.Tests.ImmutableArrayTest+<>c__DisplayClass128_0:<RemoveRangeEnumerableInvalid>b__21():System.Object:this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -124,12 +105,11 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x07
-  CountOfUnwindCodes: 4
+  SizeOfProlog      : 0x06
+  CountOfUnwindCodes: 3
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
-    CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
-    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
-    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
+    CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 4 * 8 + 8 = 40 = 0x28
+    CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+    CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
+22 (+36.67%) : 277424.dasm - System.Security.Permissions.Tests.PermissionTests:StrongNamePublicKeyBlobTests() (FullOpts)
@@ -10,15 +10,16 @@
 ;
 ;  V00 OutArgs      [V00    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V01 tmp1         [V01,T00] (  3,  6   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Security.Permissions.StrongNamePublicKeyBlob>
-;* V02 tmp2         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <System.Object>
+;* V02 tmp2         [V02    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Object>
 ;* V03 tmp3         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <System.RuntimeType>
-;  V04 tmp4         [V04,T01] (  2,  4   )     ref  ->  rcx         single-def "argument with side effect"
+;  V04 tmp4         [V04    ] (  2,  2   )  struct ( 8) [rsp+0x28]  do-not-enreg[XSF] addr-exposed "stack allocated ref class temp" <System.Object>
+;  V05 tmp5         [V05,T01] (  2,  4   )     ref  ->  rcx         single-def "argument with side effect"
 ;
-; Lcl frame size = 32
+; Lcl frame size = 48
 
 G_M24101_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 48
 						;; size=5 bbWeight=1 PerfScore 1.25
 G_M24101_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        mov      rcx, 0xD1FFAB1E      ; System.Security.Permissions.StrongNamePublicKeyBlob
@@ -27,6 +28,10 @@ G_M24101_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcr arg pop 0
        mov      rbx, rax
        ; gcrRegs +[rbx]
+       xor      ecx, ecx
+       mov      qword ptr [rsp+0x28], rcx
+       mov      rcx, 0xD1FFAB1E      ; System.Object
+       mov      qword ptr [rsp+0x28], rcx
        mov      rcx, rbx
        ; gcrRegs +[rcx]
        call     <unknown method>
@@ -44,14 +49,14 @@ G_M24101_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax rcx]
        ; gcr arg pop 0
        nop      
-						;; size=49 bbWeight=1 PerfScore 7.75
+						;; size=71 bbWeight=1 PerfScore 10.25
 G_M24101_IG03:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+       add      rsp, 48
        pop      rbx
        ret      
 						;; size=6 bbWeight=1 PerfScore 1.75
 
-; Total bytes of code 60, prolog size 5, PerfScore 10.75, instruction count 16, allocated bytes for code 60 (MethodHash=1724a1da) for method System.Security.Permissions.Tests.PermissionTests:StrongNamePublicKeyBlobTests() (FullOpts)
+; Total bytes of code 82, prolog size 5, PerfScore 13.25, instruction count 20, allocated bytes for code 82 (MethodHash=1724a1da) for method System.Security.Permissions.Tests.PermissionTests:StrongNamePublicKeyBlobTests() (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -64,5 +69,5 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
+22 (+66.67%) : 277482.dasm - System.Security.Permissions.Tests.CodeGroupTests:FileCodeGroupCallMethods() (FullOpts)
@@ -11,9 +11,13 @@
 ;  V00 OutArgs      [V00    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V01 tmp1         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Security.Policy.GacMembershipCondition>
 ;  V02 tmp2         [V02,T00] (  2,  4   )     ref  ->  rcx         class-hnd exact single-def "NewObj constructor temp" <System.Security.Policy.FileCodeGroup>
-;* V03 tmp3         [V03    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "NewObj constructor temp" <System.Object>
+;* V03 tmp3         [V03    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Object>
 ;* V04 tmp4         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Security.Policy.Evidence>
 ;* V05 tmp5         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Security.Policy.Evidence>
+;* V06 tmp6         [V06    ] (  0,  0   )  struct ( 8) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Policy.GacMembershipCondition>
+;  V07 tmp7         [V07    ] (  2,  2   )  struct ( 8) [rsp+0x20]  do-not-enreg[XSF] addr-exposed "stack allocated ref class temp" <System.Object>
+;* V08 tmp8         [V08    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Policy.Evidence>
+;* V09 tmp9         [V09    ] (  0,  0   )  struct (16) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <System.Security.Policy.Evidence>
 ;
 ; Lcl frame size = 40
 
@@ -27,17 +31,22 @@ G_M59522_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
        ; gcr arg pop 0
        mov      rcx, rax
        ; gcrRegs +[rcx]
+       xor      eax, eax
+       ; gcrRegs -[rax]
+       mov      qword ptr [rsp+0x20], rax
+       mov      rax, 0xD1FFAB1E      ; System.Object
+       mov      qword ptr [rsp+0x20], rax
        call     <unknown method>
-       ; gcrRegs -[rax rcx]
+       ; gcrRegs -[rcx]
        ; gcr arg pop 0
        nop      
-						;; size=24 bbWeight=1 PerfScore 2.75
+						;; size=46 bbWeight=1 PerfScore 5.25
 G_M59522_IG03:        ; bbWeight=1, epilog, nogc, extend
        add      rsp, 40
        ret      
 						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 33, prolog size 4, PerfScore 4.25, instruction count 8, allocated bytes for code 33 (MethodHash=7590177d) for method System.Security.Permissions.Tests.CodeGroupTests:FileCodeGroupCallMethods() (FullOpts)
+; Total bytes of code 55, prolog size 4, PerfScore 6.75, instruction count 12, allocated bytes for code 55 (MethodHash=7590177d) for method System.Security.Permissions.Tests.CodeGroupTests:FileCodeGroupCallMethods() (FullOpts)
 ; ============================================================
 
 Unwind Info:
+25 (+2500.00%) : 110098.dasm - System.ComponentModel.Composition.ComposablePartDefinitionTests:Constructor1_ShouldNotThrow():this (FullOpts)
@@ -10,17 +10,26 @@
 ;
 ;* V00 this         [V00    ] (  0,  0   )     ref  ->  zero-ref    this class-hnd single-def <System.ComponentModel.Composition.ComposablePartDefinitionTests>
 ;# V01 OutArgs      [V01    ] (  1,  1   )  struct ( 0) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;* V02 tmp1         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.ComponentModel.Composition.Factories.PartDefinitionFactory+NoOverridesComposablePartDefinition>
+;* V02 tmp1         [V02    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.ComponentModel.Composition.Factories.PartDefinitionFactory+NoOverridesComposablePartDefinition>
+;  V03 tmp2         [V03    ] (  2,  2   )  struct ( 8) [rsp+0x00]  do-not-enreg[XSF] addr-exposed "stack allocated ref class temp" <System.ComponentModel.Composition.Factories.PartDefinitionFactory+NoOverridesComposablePartDefinition>
 ;
-; Lcl frame size = 0
+; Lcl frame size = 8
 
 G_M40482_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
-						;; size=0 bbWeight=1 PerfScore 0.00
-G_M40482_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
-       ret      
+       push     rax
 						;; size=1 bbWeight=1 PerfScore 1.00
+G_M40482_IG02:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+       xor      eax, eax
+       mov      qword ptr [rsp], rax
+       mov      rax, 0xD1FFAB1E      ; System.ComponentModel.Composition.Factories.PartDefinitionFactory+NoOverridesComposablePartDefinition
+       mov      qword ptr [rsp], rax
+						;; size=20 bbWeight=1 PerfScore 2.50
+G_M40482_IG03:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 8
+       ret      
+						;; size=5 bbWeight=1 PerfScore 1.25
 
-; Total bytes of code 1, prolog size 0, PerfScore 1.00, instruction count 1, allocated bytes for code 1 (MethodHash=580e61dd) for method System.ComponentModel.Composition.ComposablePartDefinitionTests:Constructor1_ShouldNotThrow():this (FullOpts)
+; Total bytes of code 26, prolog size 1, PerfScore 4.75, instruction count 7, allocated bytes for code 26 (MethodHash=580e61dd) for method System.ComponentModel.Composition.ComposablePartDefinitionTests:Constructor1_ShouldNotThrow():this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -28,8 +37,9 @@ Unwind Info:
   >>   End offset   : 0xd1ffab1e (not in unwind data)
   Version           : 1
   Flags             : 0x00
-  SizeOfProlog      : 0x00
-  CountOfUnwindCodes: 0
+  SizeOfProlog      : 0x01
+  CountOfUnwindCodes: 1
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
+    CodeOffset: 0x01 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 0 * 8 + 8 = 8 = 0x08
realworld.run.windows.x64.checked.mch
-48 (-15.05%) : 8934.dasm - FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
@@ -12,32 +12,32 @@
 ;  V01 arg0         [V01,T01] (  3,  2.50)     ref  ->  rbx         class-hnd single-def <FSharp.Compiler.TcGlobals+TcGlobals>
 ;  V02 arg1         [V02,T00] (  3,  3   )     ref  ->   r8         class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
 ;  V03 arg2         [V03,T02] (  3,  2.50)     ref  ->  rsi         class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]>
-;  V04 arg3         [V04,T18] (  1,  0.50)     ref  ->  [rsp+0xB0]  class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]]>
-;  V05 arg4         [V05,T10] (  2,  2   )     ref  ->   r9         class-hnd single-def <FSharp.Compiler.PatternMatchCompilation+SubExprOfInput>
-;  V06 loc0         [V06,T07] (  3,  2   )     ref  ->  rbp         class-hnd single-def <FSharp.Compiler.TypedTree+Expr>
-;  V07 loc1         [V07,T08] (  3,  2   )     ref  ->  r14         class-hnd exact single-def <FSharp.Compiler.TypedTree+Val>
-;  V08 loc2         [V08,T09] (  3,  2   )     ref  ->  r15         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr]]>
+;  V04 arg3         [V04,T16] (  1,  0.50)     ref  ->  [rsp+0xB0]  class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]]>
+;  V05 arg4         [V05,T09] (  2,  2   )     ref  ->   r9         class-hnd single-def <FSharp.Compiler.PatternMatchCompilation+SubExprOfInput>
+;  V06 loc0         [V06,T06] (  2,  1.50)     ref  ->  rcx         class-hnd single-def <FSharp.Compiler.TypedTree+Expr>
+;  V07 loc1         [V07,T07] (  3,  2   )     ref  ->  rbp         class-hnd exact single-def <FSharp.Compiler.TypedTree+Val>
+;  V08 loc2         [V08,T08] (  3,  2   )     ref  ->  r14         class-hnd single-def <Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Expr]]>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (48) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T04] (  3,  3   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType]>
+;* V10 tmp1         [V10    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType]>
 ;* V11 tmp2         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
 ;* V12 tmp3         [V12    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Val]>
 ;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inlining Arg" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+Val]>
-;  V14 tmp5         [V14,T11] (  2,  2   )     ref  ->  [rsp+0x30]  class-hnd spill-single-def "Inlining Arg" <FSharp.Compiler.TypedTree+TType>
-;  V15 tmp6         [V15,T12] (  2,  2   )     ref  ->  rbp         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
-;  V16 tmp7         [V16,T03] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
+;* V14 tmp5         [V14,T10] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def "Inlining Arg" <FSharp.Compiler.TypedTree+TType>
+;  V15 tmp6         [V15,T11] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
+;  V16 tmp7         [V16,T03] (  4,  4   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]>
 ;* V17 tmp8         [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "impAppendStmt" <FSharp.Compiler.TypedTree+Expr>
 ;* V18 tmp9         [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]>
 ;* V19 tmp10        [V19    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <FSharp.Compiler.Text.Range>
-;* V20 tmp11        [V20    ] (  0,  0   )    long  ->  zero-ref    "field V19.code1 (fldOffset=0x0)" P-INDEP
-;* V21 tmp12        [V21    ] (  0,  0   )    long  ->  zero-ref    "field V19.code2 (fldOffset=0x8)" P-INDEP
-;  V22 tmp13        [V22    ] (  2,  2   )  struct (16) [rsp+0x38]  do-not-enreg[XS] addr-exposed "by-value struct argument" <FSharp.Compiler.Text.Range>
-;  V23 tmp14        [V23,T13] (  2,  2   )     ref  ->  rdx         single-def "argument with side effect"
-;  V24 tmp15        [V24,T14] (  2,  2   )     ref  ->   r8         single-def "argument with side effect"
-;  V25 tmp16        [V25,T15] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;  V26 tmp17        [V26,T16] (  2,  2   )     ref  ->   r9         single-def "argument with side effect"
-;  V27 cse0         [V27,T06] (  3,  2.50)     ref  ->  rdi         "CSE #02: moderate"
-;  V28 cse1         [V28,T17] (  3,  1.50)     ref  ->  r12         "CSE #03: moderate"
-;  V29 cse2         [V29,T05] (  3,  3   )     ref  ->  rdx         "CSE #01: aggressive"
+;* V20 tmp11        [V20,T15] (  0,  0   )  struct (24) zero-ref    do-not-enreg[SF] "stack allocated ref class temp" <System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType]>
+;* V21 tmp12        [V21    ] (  0,  0   )    long  ->  zero-ref    "field V19.code1 (fldOffset=0x0)" P-INDEP
+;* V22 tmp13        [V22    ] (  0,  0   )    long  ->  zero-ref    "field V19.code2 (fldOffset=0x8)" P-INDEP
+;* V23 tmp14        [V23    ] (  0,  0   )    long  ->  zero-ref    single-def "V20.[000..008)"
+;  V24 tmp15        [V24    ] (  2,  2   )  struct (16) [rsp+0x38]  do-not-enreg[XS] addr-exposed "by-value struct argument" <FSharp.Compiler.Text.Range>
+;  V25 tmp16        [V25,T12] (  2,  2   )     ref  ->   r8         single-def "argument with side effect"
+;  V26 tmp17        [V26,T13] (  2,  2   )     ref  ->   r9         single-def "argument with side effect"
+;  V27 cse0         [V27,T05] (  3,  2.50)     ref  ->  rdi         "CSE #03: aggressive"
+;  V28 cse1         [V28,T14] (  2,  1   )     ref  ->  r15         "CSE #02: moderate"
+;  V29 cse2         [V29,T04] (  3,  3   )     ref  ->  rdx         "CSE #01: aggressive"
 ;
 ; Lcl frame size = 72
 
@@ -64,25 +64,26 @@ G_M52294_IG02:        ; bbWeight=1, gcrefRegs=0348 {rbx rsi r8 r9}, byrefRegs=00
        ; gcrRegs +[rdx]
        mov      rdi, gword ptr [rdx+0x08]
        ; gcrRegs +[rdi]
-       mov      rbp, rdi
+       mov      rcx, rdi
+       ; gcrRegs +[rcx]
+       mov      rbp, gword ptr [rdx+0x10]
        ; gcrRegs +[rbp]
-       mov      r14, gword ptr [rdx+0x10]
+       mov      r14, gword ptr [r9+0x08]
        ; gcrRegs +[r14]
-       mov      r15, gword ptr [r9+0x08]
-       ; gcrRegs +[r15]
        cmp      gword ptr [r8+0x10], 0
        jne      SHORT G_M52294_IG05
 						;; size=26 bbWeight=1 PerfScore 12.25
-G_M52294_IG03:        ; bbWeight=0.50, gcrefRegs=8020 {rbp r15}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdx rbx rsi rdi r8-r9 r14]
+G_M52294_IG03:        ; bbWeight=0.50, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rdx rbx rbp rsi rdi r8-r9]
        mov      r8, 0xD1FFAB1E      ; const ptr
        mov      r8, gword ptr [r8]
        ; gcrRegs +[r8]
-       mov      r9, rbp
+       mov      r9, rcx
        ; gcrRegs +[r9]
-       mov      rdx, r15
+       mov      rdx, r14
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; <unknown method>
+       ; gcrRegs -[rcx]
 						;; size=29 bbWeight=0.50 PerfScore 1.50
 G_M52294_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 72
@@ -96,85 +97,62 @@ G_M52294_IG04:        ; bbWeight=0.50, epilog, nogc, extend
        pop      r15
        tail.jmp [<unknown method>]
 						;; size=22 bbWeight=0.50 PerfScore 3.12
-G_M52294_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C0E8 {rbx rbp rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rdx r8-r9] +[rbx rsi rdi r14]
-       mov      rcx, 0xD1FFAB1E      ; System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      r13, rax
-       ; gcrRegs +[r13]
-       mov      r12, gword ptr [r14+0x10]
-       ; gcrRegs +[r12]
-       mov      gword ptr [rsp+0x30], r12
-       ; GC ptr vars +{V14}
-       lea      rcx, bword ptr [r13+0x08]
-       ; byrRegs +[rcx]
-       mov      rdx, rbp
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx rbp]
-       ; byrRegs -[rcx]
-       lea      rcx, bword ptr [r13+0x10]
-       ; byrRegs +[rcx]
-       mov      rdx, gword ptr [rsp+0x30]
-       ; gcrRegs +[rdx]
-       ; GC ptr vars -{V14}
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx r13]
-       ; byrRegs -[rcx]
+G_M52294_IG05:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40E8 {rbx rbp rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref
+       ; gcrRegs -[rdx r8-r9] +[rbx rbp rsi rdi]
+       mov      r15, gword ptr [rbp+0x10]
+       ; gcrRegs +[r15]
        mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rbp, gword ptr [rcx]
-       ; gcrRegs +[rbp]
+       mov      r13, gword ptr [rcx]
+       ; gcrRegs +[r13]
        mov      rcx, 0xD1FFAB1E      ; Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]]
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
-       mov      r13, rax
-       ; gcrRegs +[r13]
-       lea      rcx, bword ptr [r13+0x08]
+       mov      r12, rax
+       ; gcrRegs +[r12]
+       lea      rcx, bword ptr [r12+0x08]
        ; byrRegs +[rcx]
        mov      rdx, rsi
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx rsi]
        ; byrRegs -[rcx]
-       lea      rcx, bword ptr [r13+0x10]
+       lea      rcx, bword ptr [r12+0x10]
        ; byrRegs +[rcx]
-       mov      rdx, rbp
+       mov      rdx, r13
        ; gcrRegs +[rdx]
        call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rdx rbp]
+       ; gcrRegs -[rdx r13]
        ; byrRegs -[rcx]
-       mov      rdx, rdi
-       ; gcrRegs +[rdx]
-       mov      r8, r12
+       mov      r8, 0xD1FFAB1E      ; const ptr
+       mov      r8, gword ptr [r8]
        ; gcrRegs +[r8]
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rcx, gword ptr [rcx]
-       ; gcrRegs +[rcx]
-       vmovups  xmm0, xmmword ptr [r14+0x28]
+       vmovups  xmm0, xmmword ptr [rbp+0x28]
        vmovups  xmmword ptr [rsp+0x38], xmm0
-       mov      gword ptr [rsp+0x20], rcx
+       mov      gword ptr [rsp+0x20], r8
        ; gcr arg write
-       lea      rcx, [rsp+0x38]
-       ; gcrRegs -[rcx]
-       mov      qword ptr [rsp+0x28], rcx
+       lea      r8, [rsp+0x38]
+       ; gcrRegs -[r8]
+       mov      qword ptr [rsp+0x28], r8
+       mov      r8, r15
+       ; gcrRegs +[r8]
+       mov      r9, r12
+       ; gcrRegs +[r9]
        mov      rcx, rbx
        ; gcrRegs +[rcx]
-       mov      r9, r13
-       ; gcrRegs +[r9]
+       mov      rdx, rdi
+       ; gcrRegs +[rdx]
        call     [FSharp.Compiler.TypedTreeOps:mkAppsAux(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range):FSharp.Compiler.TypedTree+Expr]
-       ; gcrRegs -[rcx rdx rbx rdi r8-r9 r12-r14] +[rax]
+       ; gcrRegs -[rcx rdx rbx rbp rdi r8-r9 r12 r15] +[rax]
        ; gcr arg pop 0
        mov      r9, rax
        ; gcrRegs +[r9]
-       mov      rdx, r15
+       mov      rdx, r14
        ; gcrRegs +[rdx]
        mov      r8, gword ptr [rsp+0xB0]
        ; gcrRegs +[r8]
        mov      rcx, 0xD1FFAB1E      ; <unknown method>
-						;; size=190 bbWeight=0.50 PerfScore 15.75
+						;; size=142 bbWeight=0.50 PerfScore 12.38
 G_M52294_IG06:        ; bbWeight=0.50, epilog, nogc, extend
        add      rsp, 72
        pop      rbx
@@ -188,7 +166,7 @@ G_M52294_IG06:        ; bbWeight=0.50, epilog, nogc, extend
        tail.jmp [<unknown method>]
 						;; size=22 bbWeight=0.50 PerfScore 3.12
 
-; Total bytes of code 319, prolog size 30, PerfScore 45.50, instruction count 82, allocated bytes for code 319 (MethodHash=9cd633b9) for method FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
+; Total bytes of code 271, prolog size 30, PerfScore 42.12, instruction count 72, allocated bytes for code 271 (MethodHash=9cd633b9) for method FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
 ; ============================================================
 
 Unwind Info:
-48 (-7.14%) : 8584.dasm - FSharp.Compiler.CheckExpressions+TcAttrs@10772:Invoke(int,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
@@ -8,65 +8,71 @@
 ; 0 inlinees with PGO data; 41 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 this         [V00,T08] (  7,  6   )     ref  ->  rbx         this class-hnd single-def <FSharp.Compiler.CheckExpressions+TcAttrs@10772>
-;  V01 arg1         [V01,T15] (  3,  3   )     int  ->  rdi         single-def
-;  V02 arg2         [V02,T16] (  3,  3   )   ubyte  ->   r8         single-def
-;  V03 arg3         [V03,T14] (  3,  3   )     ref  ->  rsi         class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]>
+;  V00 this         [V00,T07] (  7,  6   )     ref  ->  rbx         this class-hnd single-def <FSharp.Compiler.CheckExpressions+TcAttrs@10772>
+;  V01 arg1         [V01,T13] (  3,  3   )     int  ->  rdi         single-def
+;  V02 arg2         [V02,T14] (  3,  3   )   ubyte  ->   r8         single-def
+;  V03 arg3         [V03,T12] (  3,  3   )     ref  ->  rsi         class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]>
 ;* V04 loc0         [V04    ] (  0,  0   )     int  ->  zero-ref    single-def
-;* V05 loc1         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;  V06 loc2         [V06,T26] (  3,  2.50)     ref  ->  rsi         class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;* V05 loc1         [V05    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;  V06 loc2         [V06,T23] (  3,  2.50)     ref  ->  rsi         class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
 ;* V07 loc3         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <FSharp.Compiler.DiagnosticsLogger+DiagnosticWithText>
-;  V08 loc4         [V08,T39] (  3,  1.50)     ref  ->  rdi         class-hnd single-def <System.Tuple`2[int,System.String]>
+;  V08 loc4         [V08,T36] (  3,  1.50)     ref  ->  rdi         class-hnd single-def <System.Tuple`2[int,System.String]>
 ;  V09 OutArgs      [V09    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V10 tmp1         [V10,T35] (  2,  2   )     int  ->  rbp        
-;  V11 tmp2         [V11,T36] (  2,  2   )     int  ->  rbp         "impAppendStmt"
-;  V12 tmp3         [V12,T11] (  7,  7   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.DiagnosticsLogger+DiagnosticWithText>
-;* V13 tmp4         [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;  V14 tmp5         [V14,T13] (  3,  6   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckBasics+TcFileState>
-;  V15 tmp6         [V15,T19] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckBasics+TcEnv>
-;* V16 tmp7         [V16    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-;  V17 tmp8         [V17,T37] (  2,  2   )   ubyte  ->  rsi         single-def "Inline stloc first use temp"
-;  V18 tmp9         [V18,T21] (  4,  3   )     ref  ->  rdi         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V19 tmp10        [V19,T09] (  4,  8   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;* V20 tmp11        [V20    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-;  V21 tmp12        [V21,T28] (  2,  2   )     ref  ->  r13         class-hnd single-def "Inline stloc first use temp" <FSharp.Compiler.TcGlobals+TcGlobals>
+;  V10 tmp1         [V10,T32] (  2,  2   )     int  ->  rbp        
+;  V11 tmp2         [V11,T33] (  2,  2   )     int  ->  rbp         "impAppendStmt"
+;  V12 tmp3         [V12,T09] (  7,  7   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.DiagnosticsLogger+DiagnosticWithText>
+;* V13 tmp4         [V13    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;  V14 tmp5         [V14,T11] (  3,  6   )     ref  ->  r14         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckBasics+TcFileState>
+;  V15 tmp6         [V15,T17] (  2,  4   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckBasics+TcEnv>
+;* V16 tmp7         [V16    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;* V17 tmp8         [V17    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
+;  V18 tmp9         [V18,T18] (  4,  3   )     ref  ->  rsi         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;* V19 tmp10        [V19    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V20 tmp11        [V20    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;  V21 tmp12        [V21,T25] (  2,  2   )     ref  ->  r13         class-hnd single-def "Inline stloc first use temp" <FSharp.Compiler.TcGlobals+TcGlobals>
 ;  V22 tmp13        [V22,T04] (  8, 16   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CheckExpressions+TcAttributesWithPossibleTargetsEx@11261>
-;* V23 tmp14        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-;  V24 tmp15        [V24,T23] (  3,  3   )     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;  V25 tmp16        [V25,T38] (  2,  2   )   ubyte  ->  rsi         single-def "Inline stloc first use temp"
-;  V26 tmp17        [V26,T29] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-;  V27 tmp18        [V27,T07] (  5, 10   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-;  V28 tmp19        [V28,T20] (  2,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V29 tmp20        [V29,T24] (  2,  3   )     ref  ->  rbp         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckExpressions+TcAttributesMaybeFailEx@11281>
-;  V30 tmp21        [V30,T25] (  4,  2.50)     ref  ->  r15         class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;* V23 tmp14        [V23    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;  V24 tmp15        [V24,T20] (  3,  3   )     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;* V25 tmp16        [V25    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "Inline stloc first use temp"
+;  V26 tmp17        [V26,T26] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V27 tmp18        [V27    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;* V28 tmp19        [V28    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V29 tmp20        [V29,T21] (  2,  3   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckExpressions+TcAttributesMaybeFailEx@11281>
+;  V30 tmp21        [V30,T22] (  4,  2.50)     ref  ->  r14         class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
 ;* V31 tmp22        [V31    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V32 tmp23        [V32,T41] (  2,  1   )     ref  ->  r14         class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V33 tmp24        [V33,T27] (  4,  2   )     ref  ->  registers   class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
-;  V34 tmp25        [V34,T40] (  3,  1.50)     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V35 tmp26        [V35,T30] (  2,  2   )     ref  ->  r14         class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.TypedTree+Attrib>
-;  V36 tmp27        [V36,T31] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V37 tmp28        [V37,T17] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V38 tmp29        [V38,T32] (  2,  2   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.__Canon>
-;  V39 tmp30        [V39,T18] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V40 tmp31        [V40,T01] (  4, 25   )     ref  ->  registers   class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V41 tmp32        [V41,T02] (  4, 18   )     ref  ->  r13         class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V32 tmp23        [V32,T38] (  2,  1   )     ref  ->  rbp         class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;  V33 tmp24        [V33,T24] (  4,  2   )     ref  ->  registers   class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
+;  V34 tmp25        [V34,T37] (  3,  1.50)     ref  ->  r14         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V35 tmp26        [V35,T27] (  2,  2   )     ref  ->  rbp         class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.TypedTree+Attrib>
+;  V36 tmp27        [V36,T28] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V37 tmp28        [V37,T15] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V38 tmp29        [V38,T29] (  2,  2   )     ref  ->  r14         class-hnd single-def "Inlining Arg" <System.__Canon>
+;  V39 tmp30        [V39,T16] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V40 tmp31        [V40,T01] (  4, 25   )     ref  ->  rbp         class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;  V41 tmp32        [V41,T02] (  4, 18   )     ref  ->  r15         class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
 ;* V42 tmp33        [V42    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V43 tmp34        [V43,T10] (  2,  8   )     ref  ->  r12         class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;  V43 tmp34        [V43,T08] (  2,  8   )     ref  ->  r13         class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
 ;* V44 tmp35        [V44    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
-;  V45 tmp36        [V45,T03] (  3, 17   )     ref  ->  rbp         class-hnd single-def "Inlining Arg" <<unknown class>>
+;  V45 tmp36        [V45,T03] (  3, 17   )     ref  ->  rdi         class-hnd single-def "Inlining Arg" <<unknown class>>
 ;* V46 tmp37        [V46    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V47 tmp38        [V47,T05] (  2, 16   )     ref  ->  r14         class-hnd "Inlining Arg" <System.__Canon>
-;  V48 tmp39        [V48,T00] (  5, 40   )     ref  ->  [rsp+0x20]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V49 tmp40        [V49,T33] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.__Canon>
+;  V47 tmp38        [V47,T05] (  2, 16   )     ref  ->  rbp         class-hnd "Inlining Arg" <System.__Canon>
+;  V48 tmp39        [V48,T00] (  5, 40   )     ref  ->  r12         class-hnd exact "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V49 tmp40        [V49,T30] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.__Canon>
 ;* V50 tmp41        [V50    ] (  0,  0   )  struct (16) zero-ref    "Inlining Arg" <FSharp.Compiler.Text.Range>
-;  V51 tmp42        [V51,T42] (  2,  1   )    long  ->  rdi         single-def "field V50.code1 (fldOffset=0x0)" P-INDEP
-;  V52 tmp43        [V52,T43] (  2,  1   )    long  ->  rbx         single-def "field V50.code2 (fldOffset=0x8)" P-INDEP
-;  V53 tmp44        [V53,T34] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
-;  V54 cse0         [V54,T06] (  3, 12   )     ref  ->  r12         "CSE #06: aggressive"
-;  V55 cse1         [V55,T22] (  4,  3   )     ref  ->  r14         "CSE #01: moderate"
-;  V56 cse2         [V56,T12] (  5,  6   )    long  ->  registers   multi-def "CSE #05: aggressive"
+;  V51 tmp42        [V51,T34] (  2,  2   )  struct (24) [rsp+0x40]  do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;  V52 tmp43        [V52,T35] (  2,  2   )  struct (24) [rsp+0x28]  do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;  V53 tmp44        [V53,T39] (  2,  1   )    long  ->  rdi         single-def "field V50.code1 (fldOffset=0x0)" P-INDEP
+;  V54 tmp45        [V54,T40] (  2,  1   )    long  ->  rbx         single-def "field V50.code2 (fldOffset=0x8)" P-INDEP
+;* V55 tmp46        [V55    ] (  0,  0   )    long  ->  zero-ref    single-def "V51.[000..008)"
+;* V56 tmp47        [V56    ] (  0,  0   )   ubyte  ->  zero-ref    "V51.[016..017)"
+;* V57 tmp48        [V57    ] (  0,  0   )    long  ->  zero-ref    single-def "V52.[000..008)"
+;* V58 tmp49        [V58    ] (  0,  0   )   ubyte  ->  zero-ref    single-def "V52.[016..017)"
+;  V59 tmp50        [V59,T31] (  2,  2   )     ref  ->  rcx         single-def "argument with side effect"
+;  V60 cse0         [V60,T06] (  3, 12   )     ref  ->  r13         "CSE #06: aggressive"
+;  V61 cse1         [V61,T19] (  4,  3   )     ref  ->  rbp         "CSE #01: moderate"
+;  V62 cse2         [V62,T10] (  5,  6   )    long  ->  registers   multi-def "CSE #05: aggressive"
 ;
-; Lcl frame size = 40
+; Lcl frame size = 88
 
 G_M61336_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
@@ -77,13 +83,18 @@ G_M61336_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 40
+       sub      rsp, 88
+       xor      eax, eax
+       mov      qword ptr [rsp+0x28], rax
+       vxorps   xmm4, xmm4, xmm4
+       vmovdqu  ymmword ptr [rsp+0x30], ymm4
+       mov      qword ptr [rsp+0x50], rax
        mov      rbx, rcx
        ; gcrRegs +[rbx]
        mov      edi, edx
        mov      rsi, r9
        ; gcrRegs +[rsi]
-						;; size=24 bbWeight=1 PerfScore 9.00
+						;; size=46 bbWeight=1 PerfScore 13.58
 G_M61336_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        mov      ebp, 0x2000
        xor      ecx, ecx
@@ -134,49 +145,74 @@ G_M61336_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
        call     [<unknown method>]
        ; gcrRegs -[rdx rsi r9 r12] +[rax]
        ; gcr arg pop 0
-       movzx    rsi, byte  ptr [rax+0x10]
-       mov      rdi, gword ptr [rax+0x08]
-       ; gcrRegs +[rdi]
-       mov      rcx, 0xD1FFAB1E      ; System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
-       mov      rbp, rax
-       ; gcrRegs +[rbp]
-       mov      rdx, rdi
+       movsx    rdx, byte  ptr [rax+0x10]
+       mov      rdx, gword ptr [rax+0x08]
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; <unknown method>
        call     [<unknown method>]
-       ; gcrRegs -[rdx rdi]
+       ; gcrRegs -[rdx]
        ; gcr arg pop 0
-       lea      rcx, bword ptr [rbp+0x08]
-       ; byrRegs +[rcx]
-       mov      rdx, rax
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
-       ; byrRegs -[rcx]
-       mov      byte  ptr [rbp+0x10], sil
-       movzx    rsi, byte  ptr [rbp+0x10]
-       mov      rdi, gword ptr [rbp+0x08]
-       ; gcrRegs +[rdi]
-       mov      rcx, 0xD1FFAB1E      ; const ptr
-       mov      rbp, gword ptr [rcx]
-       mov      r14, gword ptr [rdi+0x10]
-       ; gcrRegs +[r14]
-       test     r14, r14
-       je       SHORT G_M61336_IG04
-						;; size=216 bbWeight=1 PerfScore 42.00
-G_M61336_IG03:        ; bbWeight=0.50, gcrefRegs=40A8 {rbx rbp rdi r14}, byrefRegs=0000 {}, byref, isz
-       cmp      gword ptr [r14+0x10], 0
-       jne      SHORT G_M61336_IG05
-       mov      rbp, gword ptr [rdi+0x08]
-       mov      r14, gword ptr [rbp+0x08]
+       mov      gword ptr [rsp+0x48], rax
+       mov      rsi, gword ptr [rsp+0x48]
+       ; gcrRegs +[rsi]
        mov      rcx, 0xD1FFAB1E      ; const ptr
        mov      rdi, gword ptr [rcx]
-       mov      r15, 0xD1FFAB1E      ; Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]
-       mov      rcx, r15
+       ; gcrRegs +[rdi]
+       mov      rbp, gword ptr [rsi+0x10]
+       ; gcrRegs +[rbp]
+       test     rbp, rbp
+       je       SHORT G_M61336_IG04
+						;; size=180 bbWeight=1 PerfScore 37.50
+G_M61336_IG03:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax]
+       cmp      gword ptr [rbp+0x10], 0
+       jne      SHORT G_M61336_IG05
+       mov      rdi, gword ptr [rsi+0x08]
+       mov      rbp, gword ptr [rdi+0x08]
+       mov      rcx, 0xD1FFAB1E      ; const ptr
+       mov      rsi, gword ptr [rcx]
+       mov      r14, 0xD1FFAB1E      ; Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]
+       mov      rcx, r14
        call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs -[rbp] +[rax]
+       ; gcrRegs -[rdi] +[rax]
+       ; gcr arg pop 0
+       mov      r14, rax
+       ; gcrRegs +[r14]
+       lea      rcx, bword ptr [r14+0x08]
+       ; byrRegs +[rcx]
+       mov      rdx, rbp
+       ; gcrRegs +[rdx]
+       call     CORINFO_HELP_ASSIGN_REF
+       ; gcrRegs -[rax rdx rbp]
+       ; byrRegs -[rcx]
+       lea      rcx, bword ptr [r14+0x10]
+       ; byrRegs +[rcx]
+       mov      rdx, rsi
+       ; gcrRegs +[rdx]
+       call     CORINFO_HELP_ASSIGN_REF
+       ; gcrRegs -[rdx rsi]
+       ; byrRegs -[rcx]
+       jmp      G_M61336_IG09
+						;; size=78 bbWeight=0.50 PerfScore 8.75
+G_M61336_IG04:        ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[r14]
+       mov      rcx, 0xD1FFAB1E      ; const ptr
+       mov      r14, gword ptr [rcx]
+       ; gcrRegs +[r14]
+       jmp      G_M61336_IG09
+						;; size=18 bbWeight=0.50 PerfScore 2.12
+G_M61336_IG05:        ; bbWeight=0.50, gcrefRegs=00E8 {rbx rbp rsi rdi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[r14] +[rbp rsi rdi]
+       mov      rcx, gword ptr [rsi+0x08]
+       ; gcrRegs +[rcx]
+       mov      r14, gword ptr [rcx+0x08]
+       ; gcrRegs +[r14]
+       mov      rcx, 0xD1FFAB1E      ; Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]
+       ; gcrRegs -[rcx]
+       mov      rsi, rcx
+       ; gcrRegs -[rsi]
+       call     CORINFO_HELP_NEWSFAST
+       ; gcrRegs +[rax]
...
-47 (-6.70%) : 10516.dasm - FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
@@ -8,55 +8,61 @@
 ; 0 inlinees with PGO data; 41 single block inlinees; 2 inlinees without PGO data
 ; Final local variable assignments
 ;
-;  V00 arg0         [V00,T12] (  5,  5   )     ref  ->  rbx         class-hnd single-def <FSharp.Compiler.CheckBasics+TcFileState>
-;  V01 arg1         [V01,T14] (  4,  4   )     ref  ->  rsi         class-hnd single-def <FSharp.Compiler.CheckBasics+TcEnv>
-;  V02 arg2         [V02,T16] (  4,  4   )     int  ->  rbp         single-def
-;  V03 arg3         [V03,T15] (  4,  4   )     ref  ->  rdi         class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]>
-;* V04 loc0         [V04    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;  V05 loc1         [V05,T32] (  2,  2   )   ubyte  ->  r14         single-def
-;  V06 loc2         [V06,T22] (  3,  3   )     ref  ->  r15         class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V00 arg0         [V00,T10] (  5,  5   )     ref  ->  rbx         class-hnd single-def <FSharp.Compiler.CheckBasics+TcFileState>
+;  V01 arg1         [V01,T12] (  4,  4   )     ref  ->  rsi         class-hnd single-def <FSharp.Compiler.CheckBasics+TcEnv>
+;  V02 arg2         [V02,T14] (  4,  4   )     int  ->  rbp         single-def
+;  V03 arg3         [V03,T13] (  4,  4   )     ref  ->  rdi         class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]>
+;* V04 loc0         [V04    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V05 loc1         [V05    ] (  0,  0   )   ubyte  ->  zero-ref    single-def
+;  V06 loc2         [V06,T19] (  3,  3   )     ref  ->  r15         class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
 ;  V07 OutArgs      [V07    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;  V08 tmp1         [V08,T04] (  8, 16   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CheckExpressions+TcAttributesCanFail@11291>
-;  V09 tmp2         [V09,T10] (  4,  8   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]]>
-;* V10 tmp3         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;* V11 tmp4         [V11    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-;  V12 tmp5         [V12,T33] (  2,  2   )   ubyte  ->  r14         single-def "Inline stloc first use temp"
-;  V13 tmp6         [V13,T20] (  4,  3   )     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V14 tmp7         [V14,T08] (  5, 10   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
-;* V15 tmp8         [V15    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-;  V16 tmp9         [V16,T27] (  2,  2   )     ref  ->  r14         class-hnd single-def "Inline stloc first use temp" <FSharp.Compiler.TcGlobals+TcGlobals>
+;  V09 tmp2         [V09,T08] (  4,  8   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]]>
+;* V10 tmp3         [V10    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V11 tmp4         [V11    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;  V12 tmp5         [V12,T29] (  2,  2   )   ubyte  ->  r14         single-def "Inline stloc first use temp"
+;  V13 tmp6         [V13,T17] (  4,  3   )     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;* V14 tmp7         [V14    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V15 tmp8         [V15    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;  V16 tmp9         [V16,T24] (  2,  2   )     ref  ->  r14         class-hnd single-def "Inline stloc first use temp" <FSharp.Compiler.TcGlobals+TcGlobals>
 ;  V17 tmp10        [V17,T05] (  8, 16   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CheckExpressions+TcAttributesWithPossibleTargetsEx@11261>
-;* V18 tmp11        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-;  V19 tmp12        [V19,T23] (  3,  3   )     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-;  V20 tmp13        [V20,T34] (  2,  2   )   ubyte  ->  r14         single-def "Inline stloc first use temp"
-;  V21 tmp14        [V21,T28] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
-;  V22 tmp15        [V22,T09] (  5, 10   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
-;  V23 tmp16        [V23,T19] (  2,  4   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
-;  V24 tmp17        [V24,T24] (  2,  3   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckExpressions+TcAttributesMaybeFailEx@11281>
-;  V25 tmp18        [V25,T25] (  4,  2.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;* V18 tmp11        [V18    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "Inline return value spill temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;  V19 tmp12        [V19,T20] (  3,  3   )     ref  ->  rax         class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+;  V20 tmp13        [V20,T30] (  2,  2   )   ubyte  ->  r14         single-def "Inline stloc first use temp"
+;  V21 tmp14        [V21,T25] (  2,  2   )     ref  ->  rdx         class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+;* V22 tmp15        [V22    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;* V23 tmp16        [V23    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]>
+;  V24 tmp17        [V24,T21] (  2,  3   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.CheckExpressions+TcAttributesMaybeFailEx@11281>
+;  V25 tmp18        [V25,T22] (  4,  2.50)     ref  ->  r13         class-hnd "Inline return value spill temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
 ;* V26 tmp19        [V26    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V27 tmp20        [V27,T36] (  2,  1   )     ref  ->  r12         class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V28 tmp21        [V28,T26] (  4,  2   )     ref  ->  registers   class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
-;  V29 tmp22        [V29,T35] (  3,  1.50)     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V30 tmp23        [V30,T29] (  2,  2   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.TypedTree+Attrib>
-;  V31 tmp24        [V31,T30] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V32 tmp25        [V32,T17] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V33 tmp26        [V33,T31] (  2,  2   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.__Canon>
-;  V34 tmp27        [V34,T18] (  4,  4   )     ref  ->  [rsp+0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V27 tmp20        [V27,T34] (  2,  1   )     ref  ->  r12         class-hnd single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;  V28 tmp21        [V28,T23] (  4,  2   )     ref  ->  registers   class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
+;  V29 tmp22        [V29,T33] (  3,  1.50)     ref  ->  r15         class-hnd exact single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V30 tmp23        [V30,T26] (  2,  2   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.TypedTree+Attrib>
+;  V31 tmp24        [V31,T27] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V32 tmp25        [V32,T15] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
+;  V33 tmp26        [V33,T28] (  2,  2   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.__Canon>
+;  V34 tmp27        [V34,T16] (  4,  4   )     ref  ->  [rsp+0x38]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
 ;  V35 tmp28        [V35,T01] (  4, 25   )     ref  ->  registers   class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
 ;  V36 tmp29        [V36,T02] (  4, 18   )     ref  ->  [rsp+0x30]  class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
 ;* V37 tmp30        [V37    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
-;  V38 tmp31        [V38,T11] (  2,  8   )     ref  ->  [rsp+0x28]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
+;  V38 tmp31        [V38,T09] (  2,  8   )     ref  ->  [rsp+0x28]  class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]]>
 ;* V39 tmp32        [V39    ] (  0,  0   )     ref  ->  zero-ref    class-hnd "Inline stloc first use temp" <System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]>
 ;  V40 tmp33        [V40,T03] (  3, 17   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <<unknown class>>
 ;* V41 tmp34        [V41    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
 ;  V42 tmp35        [V42,T06] (  2, 16   )     ref  ->  r12         class-hnd "Inlining Arg" <System.__Canon>
 ;  V43 tmp36        [V43,T00] (  5, 40   )     ref  ->  [rsp+0x20]  class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]>
-;  V44 cse0         [V44,T07] (  3, 12   )     ref  ->   r8         "CSE #06: aggressive"
-;  V45 cse1         [V45,T21] (  4,  3   )     ref  ->  r12         "CSE #01: moderate"
-;  V46 cse2         [V46,T13] (  5,  6   )    long  ->  [rsp+0x40]  multi-def "CSE #05: aggressive"
+;  V44 tmp37        [V44,T31] (  2,  2   )  struct (24) [rsp+0x60]  do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]>
+;  V45 tmp38        [V45,T32] (  2,  2   )  struct (24) [rsp+0x48]  do-not-enreg[SF] must-init "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]>
+;* V46 tmp39        [V46    ] (  0,  0   )    long  ->  zero-ref    single-def "V44.[000..008)"
+;* V47 tmp40        [V47    ] (  0,  0   )   ubyte  ->  zero-ref    "V44.[016..017)"
+;* V48 tmp41        [V48    ] (  0,  0   )    long  ->  zero-ref    single-def "V45.[000..008)"
+;* V49 tmp42        [V49    ] (  0,  0   )   ubyte  ->  zero-ref    "V45.[016..017)"
+;  V50 cse0         [V50,T07] (  3, 12   )     ref  ->   r8         "CSE #06: aggressive"
+;  V51 cse1         [V51,T18] (  4,  3   )     ref  ->  r12         "CSE #01: moderate"
+;  V52 cse2         [V52,T11] (  5,  6   )    long  ->  [rsp+0x40]  multi-def "CSE #05: aggressive"
 ;
-; Lcl frame size = 72
+; Lcl frame size = 120
 
 G_M3481_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     r15
@@ -67,7 +73,12 @@ G_M3481_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 72
+       sub      rsp, 120
+       xor      eax, eax
+       mov      qword ptr [rsp+0x48], rax
+       vxorps   xmm4, xmm4, xmm4
+       vmovdqu  ymmword ptr [rsp+0x50], ymm4
+       mov      qword ptr [rsp+0x70], rax
        mov      rbx, rcx
        ; gcrRegs +[rbx]
        mov      rsi, rdx
@@ -75,7 +86,7 @@ G_M3481_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
        mov      ebp, r8d
        mov      rdi, r9
        ; gcrRegs +[rdi]
-						;; size=28 bbWeight=1 PerfScore 9.25
+						;; size=50 bbWeight=1 PerfScore 13.83
 G_M3481_IG02:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        mov      r14, gword ptr [rbx+0x08]
        ; gcrRegs +[r14]
@@ -120,38 +131,25 @@ G_M3481_IG02:        ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
        ; gcrRegs -[rdx r9 r15] +[rax]
        ; gcr arg pop 0
        movzx    r14, byte  ptr [rax+0x10]
-       mov      r15, gword ptr [rax+0x08]
-       ; gcrRegs +[r15]
-       mov      rcx, 0xD1FFAB1E      ; System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],ubyte]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcr arg pop 0
-       mov      r13, rax
-       ; gcrRegs +[r13]
-       mov      rdx, r15
+       mov      rdx, gword ptr [rax+0x08]
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; <unknown method>
        call     [<unknown method>]
-       ; gcrRegs -[rdx r15]
+       ; gcrRegs -[rdx]
        ; gcr arg pop 0
-       lea      rcx, bword ptr [r13+0x08]
-       ; byrRegs +[rcx]
-       mov      rdx, rax
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx]
-       ; byrRegs -[rcx]
-       mov      byte  ptr [r13+0x10], r14b
-       movzx    r14, byte  ptr [r13+0x10]
-       mov      r15, gword ptr [r13+0x08]
+       mov      gword ptr [rsp+0x68], rax
+       mov      r15, gword ptr [rsp+0x68]
        ; gcrRegs +[r15]
        mov      rcx, 0xD1FFAB1E      ; const ptr
        mov      r13, gword ptr [rcx]
+       ; gcrRegs +[r13]
        mov      r12, gword ptr [r15+0x10]
        ; gcrRegs +[r12]
        test     r12, r12
        je       SHORT G_M3481_IG04
-						;; size=191 bbWeight=1 PerfScore 37.25
+						;; size=155 bbWeight=1 PerfScore 30.75
 G_M3481_IG03:        ; bbWeight=0.50, gcrefRegs=B0C8 {rbx rsi rdi r12 r13 r15}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rax]
        cmp      gword ptr [r12+0x10], 0
        jne      SHORT G_M3481_IG05
        mov      r13, gword ptr [r15+0x08]
@@ -296,25 +294,12 @@ G_M3481_IG08:        ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefReg
 						;; size=30 bbWeight=0.50 PerfScore 2.50
 G_M3481_IG09:        ; bbWeight=1, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
        ; gcrRegs -[r15]
-       mov      rcx, 0xD1FFAB1E      ; System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      r15, rax
+       mov      gword ptr [rsp+0x50], r13
+       mov      r15, gword ptr [rsp+0x50]
        ; gcrRegs +[r15]
-       lea      rcx, bword ptr [r15+0x08]
-       ; byrRegs +[rcx]
-       mov      rdx, r13
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx r13]
-       ; byrRegs -[rcx]
-       mov      byte  ptr [r15+0x10], r14b
-       movzx    r14, byte  ptr [r15+0x10]
-       mov      r15, gword ptr [r15+0x08]
        mov      rcx, 0xD1FFAB1E      ; FSharp.Compiler.CheckExpressions+TcAttributesCanFail@11291
        call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
+       ; gcrRegs -[r13] +[rax]
        ; gcr arg pop 0
        mov      r13, rax
        ; gcrRegs +[r13]
@@ -370,9 +355,9 @@ G_M3481_IG09:        ; bbWeight=1, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0
        ; byrRegs -[rcx]
        mov      rax, rbx
        ; gcrRegs +[rax]
-						;; size=162 bbWeight=1 PerfScore 24.00
+						;; size=129 bbWeight=1 PerfScore 17.75
 G_M3481_IG10:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 72
+       add      rsp, 120
        pop      rbx
        pop      rbp
        pop      rsi
@@ -384,7 +369,7 @@ G_M3481_IG10:        ; bbWeight=1, epilog, nogc, extend
        ret      
 						;; size=17 bbWeight=1 PerfScore 5.25
 
-; Total bytes of code 701, prolog size 16, PerfScore 199.50, instruction count 168, allocated bytes for code 701 (MethodHash=0776f266) for method FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
+; Total bytes of code 654, prolog size 38, PerfScore 191.33, instruction count 158, allocated bytes for code 654 (MethodHash=0776f266) for method FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -397,7 +382,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 8 * 8 + 8 = 72 = 0x48
+    CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 14 * 8 + 8 = 120 = 0x78
     CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbp (5)
     CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
+7 (+3.23%) : 10582.dasm - FSharp.Compiler.SyntaxTreeOps:|TyparsAndConstraints|(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]] (FullOpts)
@@ -9,29 +9,33 @@
 ; Final local variable assignments
 ;
 ;  V00 arg0         [V00,T01] (  4,  3.50)     ref  ->  rcx         class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]>
-;* V01 loc0         [V01    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
+;* V01 loc0         [V01    ] (  0,  0   )   byref  ->  zero-ref    class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
 ;* V02 loc1         [V02    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]>
-;  V03 loc2         [V03,T09] (  3,  1.50)     ref  ->  rbx         class-hnd single-def <FSharp.Compiler.Syntax.SynTyparDecls>
-;  V04 loc3         [V04,T05] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl]>
-;  V05 loc4         [V05,T06] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]>
+;  V03 loc2         [V03,T08] (  3,  1.50)     ref  ->  rbx         class-hnd single-def <FSharp.Compiler.Syntax.SynTyparDecls>
+;  V04 loc3         [V04,T04] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl]>
+;  V05 loc4         [V05,T05] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]>
 ;* V06 loc5         [V06    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]>
 ;  V07 OutArgs      [V07    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V08 tmp1         [V08,T04] (  4,  2.50)     ref  ->  rbx        
+;  V08 tmp1         [V08,T03] (  4,  2.50)   byref  ->  rbx        
 ;  V09 tmp2         [V09,T00] (  4,  7   )     ref  ->  rbp         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]>
-;  V10 tmp3         [V10,T07] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl]>
+;  V10 tmp3         [V10,T06] (  2,  2   )     ref  ->  rsi         class-hnd exact single-def "impAppendStmt" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl]>
 ;  V11 tmp4         [V11,T02] (  4,  4   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]>
-;  V12 tmp5         [V12,T08] (  2,  2   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]>
-;  V13 tmp6         [V13,T03] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
+;  V12 tmp5         [V12,T07] (  2,  2   )     ref  ->  rbx         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]>
+;* V13 tmp6         [V13    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
+;  V14 tmp7         [V14    ] (  3,  1.50)  struct (16) [rsp+0x28]  do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]>
 ;
-; Lcl frame size = 40
+; Lcl frame size = 56
 
 G_M46571_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
        push     rbp
        push     rbx
-       sub      rsp, 40
-						;; size=8 bbWeight=1 PerfScore 4.25
+       sub      rsp, 56
+       xor      eax, eax
+       mov      qword ptr [rsp+0x28], rax
+       mov      qword ptr [rsp+0x30], rax
+						;; size=20 bbWeight=1 PerfScore 6.50
 G_M46571_IG02:        ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rcx]
        test     rcx, rcx
@@ -81,20 +85,13 @@ G_M46571_IG04:        ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {},
        ; gcrRegs -[rdx rbx]
        ; byrRegs -[rcx]
        mov      rcx, 0xD1FFAB1E      ; Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]]]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       mov      rbx, rax
-       ; gcrRegs +[rbx]
-       lea      rcx, bword ptr [rbx+0x08]
-       ; byrRegs +[rcx]
-       mov      rdx, rdi
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx rdi]
-       ; byrRegs -[rcx]
-						;; size=102 bbWeight=0.50 PerfScore 10.12
-G_M46571_IG05:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+       mov      qword ptr [rsp+0x28], rcx
+       mov      gword ptr [rsp+0x30], rdi
+       lea      rbx, [rsp+0x28]
+						;; size=97 bbWeight=0.50 PerfScore 9.88
+G_M46571_IG05:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+       ; gcrRegs -[rdi]
+       ; byrRegs +[rbx]
        mov      rcx, 0xD1FFAB1E      ; const ptr
        mov      rsi, gword ptr [rcx]
        ; gcrRegs +[rsi]
@@ -125,25 +122,26 @@ G_M46571_IG05:        ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
        jne      SHORT G_M46571_IG08
 						;; size=73 bbWeight=1 PerfScore 10.75
 G_M46571_IG06:        ; bbWeight=0.50, gcrefRegs=0020 {rbp}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rbx]
+       ; byrRegs -[rbx]
        mov      rax, rbp
        ; gcrRegs +[rax]
 						;; size=3 bbWeight=0.50 PerfScore 0.12
 G_M46571_IG07:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 40
+       add      rsp, 56
        pop      rbx
        pop      rbp
        pop      rsi
        pop      rdi
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M46571_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax rbp] +[rbx]
+G_M46571_IG08:        ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref
+       ; gcrRegs -[rax rbp]
+       ; byrRegs +[rbx]
        mov      rax, gword ptr [rbx+0x08]
        ; gcrRegs +[rax]
 						;; size=4 bbWeight=0.50 PerfScore 1.00
 G_M46571_IG09:        ; bbWeight=0.50, epilog, nogc, extend
-       add      rsp, 40
+       add      rsp, 56
        pop      rbx
        pop      rbp
        pop      rsi
@@ -151,7 +149,7 @@ G_M46571_IG09:        ; bbWeight=0.50, epilog, nogc, extend
        ret      
 						;; size=9 bbWeight=0.50 PerfScore 1.62
 
-; Total bytes of code 217, prolog size 8, PerfScore 31.88, instruction count 61, allocated bytes for code 217 (MethodHash=7f4a4a14) for method FSharp.Compiler.SyntaxTreeOps:|TyparsAndConstraints|(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]] (FullOpts)
+; Total bytes of code 224, prolog size 20, PerfScore 33.88, instruction count 62, allocated bytes for code 224 (MethodHash=7f4a4a14) for method FSharp.Compiler.SyntaxTreeOps:|TyparsAndConstraints|(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]] (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -164,7 +162,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 4 * 8 + 8 = 40 = 0x28
+    CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 6 * 8 + 8 = 56 = 0x38
     CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbp (5)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
+48 (+3.58%) : 6950.dasm - FSharp.Compiler.CodeAnalysis.BoundModel+clo@334-584:Invoke(System.Tuple`5[FSharp.Compiler.CodeAnalysis.TcInfo,FSharp.Compiler.NameResolution+TcResultsSinkImpl,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile],System.String,System.Tuple`2[FSharp.Compiler.DiagnosticsLogger+PhasedDiagnostic,FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity][]]):Microsoft.FSharp.Control.FSharpAsync`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]:this (FullOpts)
@@ -11,73 +11,75 @@
 ;  V00 this         [V00,T02] (  7,  6   )     ref  ->  rbx         this class-hnd single-def <FSharp.Compiler.CodeAnalysis.BoundModel+clo@334-584>
 ;  V01 arg1         [V01,T05] (  5,  5   )     ref  ->  rdx         class-hnd single-def <System.Tuple`5[FSharp.Compiler.CodeAnalysis.TcInfo,FSharp.Compiler.NameResolution+TcResultsSinkImpl,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile],System.String,System.Tuple`2[FSharp.Compiler.DiagnosticsLogger+PhasedDiagnostic,FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity][]]>
 ;  V02 loc0         [V02,T01] ( 14,  8   )     ref  ->  rsi         class-hnd single-def <FSharp.Compiler.NameResolution+TcResultsSinkImpl>
-;  V03 loc1         [V03,T23] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile]>
-;  V04 loc2         [V04,T48] (  2,  1.50)     ref  ->  r14         class-hnd exact single-def <System.String>
-;* V05 loc3         [V05    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
-;  V06 loc4         [V06,T49] (  5,  1   )     ref  ->  [rbp-0x60]  class-hnd EH-live spill-single-def <<unknown class>>
-;* V07 loc5         [V07    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+;  V03 loc1         [V03,T21] (  2,  2   )     ref  ->  rdi         class-hnd exact single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile]>
+;  V04 loc2         [V04,T46] (  2,  1.50)     ref  ->  r14         class-hnd exact single-def <System.String>
+;* V05 loc3         [V05    ] (  0,  0   )   byref  ->  zero-ref    class-hnd single-def <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+;  V06 loc4         [V06,T47] (  5,  1   )     ref  ->  [rbp-0x90]  class-hnd EH-live spill-single-def <<unknown class>>
+;* V07 loc5         [V07    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
 ;* V08 loc6         [V08    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <FSharp.Compiler.NameResolution+TcResolutions>
 ;* V09 loc7         [V09    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder>
 ;* V10 loc8         [V10    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <System.Collections.Generic.HashSet`1[System.ValueTuple`2[FSharp.Compiler.Text.Position,FSharp.Compiler.Text.Position]]>
-;  V11 loc9         [V11,T50] (  2,  1   )     ref  ->  r13         class-hnd single-def <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-;  V12 loc10        [V12,T51] (  2,  1   )     ref  ->  r14         class-hnd exact single-def <FSharp.Compiler.EditorServices.SemanticClassificationItem[]>
+;  V11 loc9         [V11,T48] (  2,  1   )     ref  ->  r13         class-hnd single-def <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+;  V12 loc10        [V12,T49] (  2,  1   )     ref  ->  r14         class-hnd exact single-def <FSharp.Compiler.EditorServices.SemanticClassificationItem[]>
 ;* V13 loc11        [V13    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder>
 ;* V14 loc12        [V14    ] (  0,  0   )     ref  ->  zero-ref    class-hnd <<unknown class>>
-;  V15 loc13        [V15,T24] (  2,  2   )     ref  ->  r14         class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]>
-;  V16 loc14        [V16,T25] (  2,  2   )     ref  ->  r15         class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore]>
+;  V15 loc13        [V15,T22] (  2,  2   )     ref  ->  r15         class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]>
+;  V16 loc14        [V16,T23] (  2,  2   )     ref  ->  r14         class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore]>
 ;* V17 loc15        [V17    ] (  0,  0   )     ref  ->  zero-ref    class-hnd exact single-def <FSharp.Compiler.CodeAnalysis.TcInfoExtras>
 ;* V18 loc16        [V18    ] (  0,  0   )     ref  ->  zero-ref    class-hnd single-def <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile]>
 ;  V19 OutArgs      [V19    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-;  V20 tmp1         [V20,T09] (  4,  4   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
-;  V21 tmp2         [V21,T16] (  4,  3   )     ref  ->  rax        
-;  V22 tmp3         [V22,T26] (  2,  2   )     ref  ->  r13        
-;  V23 tmp4         [V23,T21] (  3,  2   )     ref  ->  rdi        
+;* V20 tmp1         [V20    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+;  V21 tmp2         [V21,T14] (  4,  3   )   byref  ->  r14        
+;  V22 tmp3         [V22,T24] (  2,  2   )     ref  ->  r13        
+;  V23 tmp4         [V23,T19] (  3,  2   )     ref  ->  rdi        
 ;* V24 tmp5         [V24    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V25 tmp6         [V25    ] (  0,  0   )     ref  ->  zero-ref   
-;  V26 tmp7         [V26,T22] (  3,  2   )     ref  ->  rbx        
+;  V26 tmp7         [V26,T20] (  3,  2   )     ref  ->  rbx        
 ;  V27 tmp8         [V27,T00] (  8, 16   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.TcInfoExtras>
 ;  V28 tmp9         [V28,T07] (  3,  6   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+clo@357-586>
-;  V29 tmp10        [V29,T17] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "dup spill" <<unknown class>>
-;  V30 tmp11        [V30,T10] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-;  V31 tmp12        [V31,T11] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder>
-;  V32 tmp13        [V32,T27] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+preventDuplicates@339>
-;  V33 tmp14        [V33,T18] (  3,  3   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.ValueTuple`2[FSharp.Compiler.Text.Position,FSharp.Compiler.Text.Position]]>
-;  V34 tmp15        [V34,T12] (  4,  4   )     ref  ->  [rbp-0x68]  class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+clo@343-585>
-;  V35 tmp16        [V35,T28] (  2,  2   )     ref  ->  r13         class-hnd single-def "impAppendStmt" <FSharp.Compiler.TcGlobals+TcGlobals>
-;  V36 tmp17        [V36,T29] (  2,  2   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.Import+ImportMap>
-;  V37 tmp18        [V37,T13] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder>
-;  V38 tmp19        [V38,T30] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "non-inline candidate call" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore]>
-;  V39 tmp20        [V39,T14] (  4,  4   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+;  V29 tmp10        [V29,T15] (  3,  3   )     ref  ->  r15         class-hnd exact single-def "dup spill" <<unknown class>>
+;  V30 tmp11        [V30,T09] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V31 tmp12        [V31,T10] (  4,  4   )     ref  ->  r15         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.ItemKeyStoreBuilder>
+;  V32 tmp13        [V32,T25] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+preventDuplicates@339>
+;  V33 tmp14        [V33,T16] (  3,  3   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.ValueTuple`2[FSharp.Compiler.Text.Position,FSharp.Compiler.Text.Position]]>
+;  V34 tmp15        [V34,T11] (  4,  4   )     ref  ->  [rbp-0x98]  class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.CodeAnalysis.BoundModel+clo@343-585>
+;  V35 tmp16        [V35,T26] (  2,  2   )     ref  ->  r13         class-hnd single-def "impAppendStmt" <FSharp.Compiler.TcGlobals+TcGlobals>
+;  V36 tmp17        [V36,T27] (  2,  2   )     ref  ->  r12         class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.Import+ImportMap>
+;  V37 tmp18        [V37,T12] (  4,  4   )     ref  ->  r13         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.EditorServices.SemanticClassificationKeyStoreBuilder>
+;  V38 tmp19        [V38,T28] (  2,  2   )     ref  ->  r15         class-hnd exact single-def "non-inline candidate call" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore]>
+;* V39 tmp20        [V39    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
 ;  V40 tmp21        [V40,T03] (  7,  7   )     ref  ->  r14         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.NameResolution+TcResolutions>
-;  V41 tmp22        [V41,T31] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`3[FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain]]>
-;  V42 tmp23        [V42,T32] (  2,  2   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`4[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Text.Range]]>
-;  V43 tmp24        [V43,T33] (  2,  2   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-;  V44 tmp25        [V44,T34] (  2,  2   )     ref  ->  r12         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-;  V45 tmp26        [V45,T35] (  2,  2   )     ref  ->  [rbp-0x70]  class-hnd spill-single-def "Inlining Arg" <System.__Canon[]>
-;  V46 tmp27        [V46,T04] (  7,  7   )     ref  ->  [rbp-0x78]  class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.EditorServices.TcResolutionsExtensions+TcResolutions-GetSemanticClassification@147>
+;  V41 tmp22        [V41,T29] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`3[FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain]]>
+;  V42 tmp23        [V42,T30] (  2,  2   )     ref  ->  r15         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`4[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Text.Range]]>
+;  V43 tmp24        [V43,T31] (  2,  2   )     ref  ->  r13         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+;  V44 tmp25        [V44,T32] (  2,  2   )     ref  ->  r12         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+;  V45 tmp26        [V45,T33] (  2,  2   )     ref  ->  [rbp-0xA0]  class-hnd spill-single-def "Inlining Arg" <System.__Canon[]>
+;  V46 tmp27        [V46,T04] (  7,  7   )     ref  ->  [rbp-0xA8]  class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.EditorServices.TcResolutionsExtensions+TcResolutions-GetSemanticClassification@147>
 ;  V47 tmp28        [V47    ] (  2,  2   )  struct (16) [rbp-0x48]  do-not-enreg[HS] hidden-struct-arg "impAppendStmt" <FSharp.Compiler.Text.Range>
 ;  V48 tmp29        [V48,T08] (  5,  5   )     ref  ->  r12         class-hnd exact single-def "NewObj constructor temp" <System.Reflection.Metadata.BlobBuilder>
 ;* V49 tmp30        [V49    ] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
-;  V50 tmp31        [V50,T36] (  2,  2   )     ref  ->  r13         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]>
+;  V50 tmp31        [V50,T34] (  2,  2   )     ref  ->  rax         class-hnd exact single-def "Inlining Arg" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]>
 ;  V51 tmp32        [V51,T06] (  6,  6   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.NameResolution+TcResolutions>
-;  V52 tmp33        [V52,T37] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`3[FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain]]>
-;  V53 tmp34        [V53,T38] (  2,  2   )     ref  ->  r12         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`4[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Text.Range]]>
-;  V54 tmp35        [V54,T39] (  2,  2   )     ref  ->  [rbp-0x80]  class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-;  V55 tmp36        [V55,T40] (  2,  2   )     ref  ->  [rbp-0x88]  class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-;  V56 tmp37        [V56,T41] (  2,  2   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <FSharp.Compiler.TcGlobals+TcGlobals>
-;  V57 tmp38        [V57,T42] (  2,  2   )     ref  ->  r12         class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
-;  V58 tmp39        [V58,T19] (  3,  3   )     ref  ->  [rbp-0x90]  class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.NameResolution+TcSymbolUses>
-;  V59 tmp40        [V59,T15] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.TypedTree+OpenDeclaration[]>
-;  V60 tmp41        [V60,T45] (  2,  2   )    long  ->  [rbp-0x48]  do-not-enreg[H] hidden-struct-arg "field V47.code1 (fldOffset=0x0)" P-DEP
-;  V61 tmp42        [V61,T46] (  2,  2   )    long  ->  [rbp-0x40]  do-not-enreg[H] hidden-struct-arg "field V47.code2 (fldOffset=0x8)" P-DEP
-;  V62 tmp43        [V62    ] (  2,  2   )  struct (16) [rbp-0x58]  do-not-enreg[XS] addr-exposed "by-value struct argument" <FSharp.Compiler.Text.Range>
-;  V63 tmp44        [V63,T43] (  2,  2   )     ref  ->   r9         single-def "argument with side effect"
-;  V64 tmp45        [V64,T44] (  2,  2   )     ref  ->   r9         single-def "argument with side effect"
-;  V65 PSPSym       [V65,T52] (  1,  1   )    long  ->  [rbp-0xA0]  do-not-enreg[V] "PSPSym"
-;  V66 cse0         [V66,T20] (  3,  3   )     ref  ->  rcx         "CSE #03: moderate"
-;  V67 cse1         [V67,T47] (  3,  1.50)     ref  ->  rcx         "CSE #01: conservative"
+;  V52 tmp33        [V52,T35] (  2,  2   )     ref  ->  rdx         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`3[FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain]]>
+;  V53 tmp34        [V53,T36] (  2,  2   )     ref  ->  r12         class-hnd single-def "Inlining Arg" <System.Collections.Generic.List`1[System.Tuple`4[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.NameResolution+NameResolutionEnv,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.Text.Range]]>
+;  V54 tmp35        [V54,T37] (  2,  2   )     ref  ->  [rbp-0xB0]  class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+;  V55 tmp36        [V55,T38] (  2,  2   )     ref  ->  [rbp-0xB8]  class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+;  V56 tmp37        [V56,T39] (  2,  2   )     ref  ->  rbx         class-hnd single-def "impAppendStmt" <FSharp.Compiler.TcGlobals+TcGlobals>
+;  V57 tmp38        [V57,T40] (  2,  2   )     ref  ->  r12         class-hnd single-def "impAppendStmt" <System.Collections.Generic.List`1[FSharp.Compiler.NameResolution+CapturedNameResolution]>
+;  V58 tmp39        [V58,T17] (  3,  3   )     ref  ->  [rbp-0xC0]  class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.NameResolution+TcSymbolUses>
+;  V59 tmp40        [V59,T13] (  2,  4   )     ref  ->  rsi         class-hnd exact single-def "Inlining Arg" <FSharp.Compiler.TypedTree+OpenDeclaration[]>
+;  V60 tmp41        [V60    ] (  4,  2   )  struct (24) [rbp-0x60]  do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+;  V61 tmp42        [V61    ] (  4,  2   )  struct (24) [rbp-0x78]  do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]>
+;  V62 tmp43        [V62,T43] (  2,  2   )    long  ->  [rbp-0x48]  do-not-enreg[H] hidden-struct-arg "field V47.code1 (fldOffset=0x0)" P-DEP
+;  V63 tmp44        [V63,T44] (  2,  2   )    long  ->  [rbp-0x40]  do-not-enreg[H] hidden-struct-arg "field V47.code2 (fldOffset=0x8)" P-DEP
+;  V64 tmp45        [V64    ] (  2,  2   )  struct (16) [rbp-0x88]  do-not-enreg[XS] addr-exposed "by-value struct argument" <FSharp.Compiler.Text.Range>
+;  V65 tmp46        [V65,T41] (  2,  2   )     ref  ->   r9         single-def "argument with side effect"
+;  V66 tmp47        [V66,T42] (  2,  2   )     ref  ->   r9         single-def "argument with side effect"
+;  V67 PSPSym       [V67,T50] (  1,  1   )    long  ->  [rbp-0xD0]  do-not-enreg[V] "PSPSym"
+;  V68 cse0         [V68,T18] (  3,  3   )     ref  ->  rcx         "CSE #03: moderate"
+;  V69 cse1         [V69,T45] (  3,  1.50)     ref  ->  rcx         "CSE #01: conservative"
 ;
-; Lcl frame size = 136
+; Lcl frame size = 184
 
 G_M32537_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
        push     rbp
@@ -88,12 +90,17 @@ G_M32537_IG01:        ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 136
-       lea      rbp, [rsp+0xC0]
-       mov      qword ptr [rbp-0xA0], rsp
+       sub      rsp, 184
+       lea      rbp, [rsp+0xF0]
+       xor      eax, eax
+       mov      qword ptr [rbp-0x78], rax
+       vxorps   xmm4, xmm4, xmm4
+       vmovdqu  ymmword ptr [rbp-0x70], ymm4
+       mov      qword ptr [rbp-0x50], rax
+       mov      qword ptr [rbp-0xD0], rsp
        mov      rbx, rcx
        ; gcrRegs +[rbx]
-						;; size=37 bbWeight=1 PerfScore 10.00
+						;; size=56 bbWeight=1 PerfScore 14.58
 G_M32537_IG02:        ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz
        ; gcrRegs +[rdx]
        mov      rsi, gword ptr [rdx+0x10]
@@ -146,28 +153,26 @@ G_M32537_IG03:        ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
        call     [<unknown method>]
        ; gcrRegs -[rcx rdx r15] +[rax]
        ; gcr arg pop 0
-       mov      gword ptr [rbp-0x60], rax
+       mov      gword ptr [rbp-0x90], rax
        ; GC ptr vars +{V06}
        jmp      SHORT G_M32537_IG06
-						;; size=104 bbWeight=0.50 PerfScore 7.25
+						;; size=107 bbWeight=0.50 PerfScore 7.25
 G_M32537_IG04:        ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rax]
        ; GC ptr vars -{V06}
        mov      rcx, 0xD1FFAB1E      ; System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.ItemKeyStore],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.EditorServices.SemanticClassificationKeyStore]]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
+       mov      qword ptr [rbp-0x78], rcx
        xor      rcx, rcx
        ; gcrRegs +[rcx]
-       mov      gword ptr [rax+0x08], rcx
-						;; size=21 bbWeight=0.50 PerfScore 1.25
-G_M32537_IG05:        ; bbWeight=0.50, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0000 {}, byref
+       mov      gword ptr [rbp-0x70], rcx
+						;; size=20 bbWeight=0.50 PerfScore 1.25
+G_M32537_IG05:        ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
        ; gcrRegs -[rcx]
-       mov      gword ptr [rax+0x10], rcx
-       jmp      G_M32537_IG14
-						;; size=9 bbWeight=0.50 PerfScore 1.50
-G_M32537_IG06:        ; bbWeight=0.50, gcVars=0002000000000000 {V06}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
-       ; gcrRegs -[rax]
+       mov      gword ptr [rbp-0x68], rcx
+       lea      r14, [rbp-0x78]
+       jmp      G_M32537_IG13
+						;; size=13 bbWeight=0.50 PerfScore 1.75
+G_M32537_IG06:        ; bbWeight=0.50, gcVars=0000800000000000 {V06}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
        ; GC ptr vars +{V06}
        mov      rcx, 0xD1FFAB1E      ; FSharp.Compiler.NameResolution+TcResolutions
        call     CORINFO_HELP_NEWSFAST
@@ -247,7 +252,7 @@ G_M32537_IG06:        ; bbWeight=0.50, gcVars=0002000000000000 {V06}, gcrefRegs=
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
        ; gcr arg pop 0
-       mov      gword ptr [rbp-0x68], rax
+       mov      gword ptr [rbp-0x98], rax
        ; GC ptr vars +{V34}
        lea      rcx, bword ptr [rax+0x08]
        ; byrRegs +[rcx]
@@ -256,9 +261,9 @@ G_M32537_IG06:        ; bbWeight=0.50, gcVars=0002000000000000 {V06}, gcrefRegs=
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx]
        ; byrRegs -[rcx]
-						;; size=197 bbWeight=0.50 PerfScore 18.75
+						;; size=200 bbWeight=0.50 PerfScore 18.75
 G_M32537_IG07:        ; bbWeight=0.50, extend
-       mov      rax, gword ptr [rbp-0x68]
+       mov      rax, gword ptr [rbp-0x98]
        ; gcrRegs +[rax]
        lea      rcx, bword ptr [rax+0x10]
        ; byrRegs +[rcx]
@@ -269,7 +274,7 @@ G_M32537_IG07:        ; bbWeight=0.50, extend
        ; byrRegs -[rcx]
        mov      r8, r13
        ; gcrRegs +[r8]
-       mov      rdx, gword ptr [rbp-0x68]
+       mov      rdx, gword ptr [rbp-0x98]
        ; gcrRegs +[rdx]
        mov      rcx, 0xD1FFAB1E      ; <unknown method>
        ; GC ptr vars -{V34}
@@ -293,18 +298,18 @@ G_M32537_IG07:        ; bbWeight=0.50, extend
        call     [System.Collections.Generic.List`1[System.__Canon]:ToArray():System.__Canon[]:this]
        ; gcrRegs -[rcx]
        ; gcr arg pop 0
-       mov      gword ptr [rbp-0x70], rax
+       mov      gword ptr [rbp-0xA0], rax
        ; GC ptr vars +{V45}
        mov      rcx, 0xD1FFAB1E      ; FSharp.Compiler.EditorServices.TcResolutionsExtensions+TcResolutions-GetSemanticClassification@147
        call     CORINFO_HELP_NEWSFAST
        ; gcr arg pop 0
-       mov      gword ptr [rbp-0x78], rax
+       mov      gword ptr [rbp-0xA8], rax
        ; GC ptr vars +{V46}
        lea      rcx, [rbp-0x48]
        call     [<unknown method>]
        ; gcrRegs -[rax]
        ; gcr arg pop 0
-       mov      rax, gword ptr [rbp-0x78]
+       mov      rax, gword ptr [rbp-0xA8]
        ; gcrRegs +[rax]
        lea      rcx, bword ptr [rax+0x08]
        ; byrRegs +[rcx]
@@ -313,7 +318,7 @@ G_M32537_IG07:        ; bbWeight=0.50, extend
        call     CORINFO_HELP_ASSIGN_REF
        ; gcrRegs -[rax rdx r14]
        ; byrRegs -[rcx]
-       mov      r14, gword ptr [rbp-0x78]
+       mov      r14, gword ptr [rbp-0xA8]
        ; gcrRegs +[r14]
        lea      rcx, bword ptr [r14+0x10]
        ; byrRegs +[rcx]
@@ -331,7 +336,7 @@ G_M32537_IG07:        ; bbWeight=0.50, extend
        ; byrRegs -[rcx]
...
+23 (+13.14%) : 2162.dasm - FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
@@ -15,7 +15,7 @@
 ;  V04 OutArgs      [V04    ] (  1,  1   )  struct (32) [rsp+0x00]  do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
 ;* V05 tmp1         [V05    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V06 tmp2         [V06    ] (  0,  0   )     ref  ->  zero-ref   
-;* V07 tmp3         [V07,T07] (  0,  0   )     ref  ->  zero-ref   
+;  V07 tmp3         [V07,T04] (  3,  2   )   byref  ->  rcx        
 ;* V08 tmp4         [V08    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V09 tmp5         [V09    ] (  0,  0   )     ref  ->  zero-ref   
 ;  V10 tmp6         [V10,T05] (  3,  2   )     ref  ->  rdx        
@@ -23,46 +23,65 @@
 ;  V12 tmp8         [V12,T02] (  3,  3   )     ref  ->  rdi         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
 ;* V13 tmp9         [V13    ] (  0,  0   )     ref  ->  zero-ref    single-def
 ;* V14 tmp10        [V14    ] (  0,  0   )     ref  ->  zero-ref    single-def
-;  V15 tmp11        [V15,T03] (  2,  2   )     ref  ->  rax         class-hnd exact single-def "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]>
-;  V16 tmp12        [V16,T04] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;* V15 tmp11        [V15    ] (  0,  0   )    long  ->  zero-ref    class-hnd exact "NewObj constructor temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]>
+;  V16 tmp12        [V16,T03] (  3,  3   )     ref  ->  rbx         class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+;  V17 tmp13        [V17    ] (  3,  1.50)  struct (16) [rsp+0x20]  do-not-enreg[XSF] must-init addr-exposed "stack allocated ref class temp" <Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]>
 ;
-; Lcl frame size = 32
+; Lcl frame size = 48
 
 G_M33216_IG01:        ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
        push     rdi
        push     rsi
        push     rbx
-       sub      rsp, 32
+       sub      rsp, 48
+       xor      eax, eax
+       mov      qword ptr [rsp+0x20], rax
+       mov      qword ptr [rsp+0x28], rax
        mov      rsi, rcx
        ; gcrRegs +[rsi]
        mov      rbx, rdx
        ; gcrRegs +[rbx]
-						;; size=13 bbWeight=1 PerfScore 3.75
+						;; size=25 bbWeight=1 PerfScore 6.00
 G_M33216_IG02:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
        cmp      byte  ptr [rsi], sil
        test     rbx, rbx
        je       SHORT G_M33216_IG05
 						;; size=8 bbWeight=1 PerfScore 4.25
-G_M33216_IG03:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M33216_IG03:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
        mov      rdi, gword ptr [rbx+0x08]
        ; gcrRegs +[rdi]
        test     byte  ptr [(reloc)], 1      ; global ptr
-       je       SHORT G_M33216_IG08
-						;; size=13 bbWeight=0.50 PerfScore 3.00
+       je       G_M33216_IG11
+						;; size=17 bbWeight=0.50 PerfScore 3.00
 G_M33216_IG04:        ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
        cmp      byte  ptr [(reloc)], 0      ; data for <unknown class>:<unknown field>
        je       SHORT G_M33216_IG05
        mov      rcx, 0xD1FFAB1E      ; Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]
-       call     CORINFO_HELP_NEWSFAST
-       ; gcrRegs +[rax]
-       ; gcr arg pop 0
-       lea      rcx, bword ptr [rax+0x08]
+       mov      qword ptr [rsp+0x20], rcx
+       mov      gword ptr [rsp+0x28], rdi
+       lea      rcx, [rsp+0x20]
+       jmp      SHORT G_M33216_IG06
+						;; size=36 bbWeight=0.50 PerfScore 4.38
+G_M33216_IG05:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rdi]
+       xor      rcx, rcx
+       ; gcrRegs +[rcx]
+						;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M33216_IG06:        ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0002 {rcx}, byref, isz
+       ; gcrRegs -[rcx]
        ; byrRegs +[rcx]
-       mov      rdx, rdi
-       ; gcrRegs +[rdx]
-       call     CORINFO_HELP_ASSIGN_REF
-       ; gcrRegs -[rax rdx rdi]
+       test     rcx, rcx
+       jne      SHORT G_M33216_IG08
+						;; size=5 bbWeight=1 PerfScore 1.25
+G_M33216_IG07:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+       ; gcrRegs -[rbx]
        ; byrRegs -[rcx]
+       xor      rdx, rdx
+       ; gcrRegs +[rdx]
+       jmp      SHORT G_M33216_IG09
+						;; size=4 bbWeight=0.50 PerfScore 1.12
+G_M33216_IG08:        ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rdx] +[rbx]
        mov      rcx, 0xD1FFAB1E      ; <unknown class>
        call     CORINFO_HELP_NEWSFAST
        ; gcrRegs +[rax]
@@ -91,14 +110,9 @@ G_M33216_IG04:        ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
        ; byrRegs -[rcx]
        mov      rdx, rbx
        ; gcrRegs +[rdx]
-       jmp      SHORT G_M33216_IG06
-						;; size=101 bbWeight=0.50 PerfScore 8.75
-G_M33216_IG05:        ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
-       ; gcrRegs -[rdx rbx]
-       xor      rdx, rdx
-       ; gcrRegs +[rdx]
-						;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M33216_IG06:        ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
+						;; size=63 bbWeight=0.50 PerfScore 4.25
+G_M33216_IG09:        ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {}, byref
+       ; gcrRegs -[rbx]
        lea      rcx, bword ptr [rsi+0x08]
        ; byrRegs +[rcx]
        call     CORINFO_HELP_ASSIGN_REF
@@ -106,14 +120,14 @@ G_M33216_IG06:        ; bbWeight=1, gcrefRegs=0044 {rdx rsi}, byrefRegs=0000 {},
        ; byrRegs -[rcx]
        nop      
 						;; size=10 bbWeight=1 PerfScore 1.75
-G_M33216_IG07:        ; bbWeight=1, epilog, nogc, extend
-       add      rsp, 32
+G_M33216_IG10:        ; bbWeight=1, epilog, nogc, extend
+       add      rsp, 48
        pop      rbx
        pop      rsi
        pop      rdi
        ret      
 						;; size=8 bbWeight=1 PerfScore 2.75
-G_M33216_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
+G_M33216_IG11:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref
        ; gcrRegs +[rbx rsi rdi]
        mov      rcx, 0xD1FFAB1E      ; Internal.Utilities.FSharpEnvironment
        call     CORINFO_HELP_GET_NONGCSTATIC_BASE
@@ -121,7 +135,7 @@ G_M33216_IG08:        ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=00C8 {
        jmp      G_M33216_IG04
 						;; size=20 bbWeight=0 PerfScore 0.00
 
-; Total bytes of code 175, prolog size 7, PerfScore 24.38, instruction count 45, allocated bytes for code 175 (MethodHash=03367e3f) for method FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
+; Total bytes of code 198, prolog size 19, PerfScore 28.88, instruction count 51, allocated bytes for code 198 (MethodHash=03367e3f) for method FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
 ; ============================================================
 
 Unwind Info:
@@ -134,7 +148,7 @@ Unwind Info:
   FrameRegister     : none (0)
   FrameOffset       : N/A (no FrameRegister) (Value=0)
   UnwindCodes       :
-    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 3 * 8 + 8 = 32 = 0x20
+    CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2)     OpInfo: 5 * 8 + 8 = 48 = 0x30
     CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rbx (3)
     CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rsi (6)
     CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0)     OpInfo: rdi (7)
Details

Size improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 8 4 4 0 -205 +60
benchmarks.run.windows.x64.checked.mch 8 2 0 6 -208 +0
benchmarks.run_pgo.windows.x64.checked.mch 0 0 0 0 -0 +0
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 -0 +0
libraries.pmi.windows.x64.checked.mch 241 115 16 110 -4,568 +266
libraries_tests.run.windows.x64.Release.mch 613 97 265 251 -3,206 +2,516
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 430 228 99 103 -16,476 +4,652
realworld.run.windows.x64.checked.mch 94 46 44 4 -1,670 +627
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 -0 +0
1,394 492 428 474 -26,333 +8,121

PerfScore improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same PerfScore Improvements (PerfScore) Regressions (PerfScore) PerfScore Overall in FullOpts
aspnet.run.windows.x64.checked.mch 8 4 4 0 -5.41% +5.56% -0.0000%
benchmarks.run.windows.x64.checked.mch 8 2 0 6 -8.35% 0.00% -0.0006%
benchmarks.run_pgo.windows.x64.checked.mch 0 0 0 0 0.00% 0.00% 0.0000%
benchmarks.run_tiered.windows.x64.checked.mch 0 0 0 0 0.00% 0.00% 0.0000%
libraries.crossgen2.windows.x64.checked.mch 0 0 0 0 0.00% 0.00% 0.0000%
libraries.pmi.windows.x64.checked.mch 241 96 29 116 -12.41% +2.32% -0.0037%
libraries_tests.run.windows.x64.Release.mch 613 348 29 236 -8.42% +12.62% -0.0105%
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 430 225 101 104 -8.84% +4.68% -0.0047%
realworld.run.windows.x64.checked.mch 94 46 46 2 -1.72% +2.44% +0.0009%
smoke_tests.nativeaot.windows.x64.checked.mch 0 0 0 0 0.00% 0.00% 0.0000%

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 180,991 95,458 85,533 49 (0.03%) 1 (0.00%)
benchmarks.run.windows.x64.checked.mch 28,313 4 28,309 38 (0.13%) 0 (0.00%)
benchmarks.run_pgo.windows.x64.checked.mch 103,671 52,070 51,601 18 (0.02%) 13 (0.01%)
benchmarks.run_tiered.windows.x64.checked.mch 54,678 37,922 16,756 3 (0.01%) 0 (0.00%)
libraries.crossgen2.windows.x64.checked.mch 241,901 15 241,886 56 (0.02%) 56 (0.02%)
libraries.pmi.windows.x64.checked.mch 322,192 6 322,186 588 (0.18%) 66 (0.02%)
libraries_tests.run.windows.x64.Release.mch 857,705 599,532 258,173 539 (0.06%) 42 (0.00%)
libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch 364,447 22,427 342,020 3,034 (0.83%) 403 (0.11%)
realworld.run.windows.x64.checked.mch 34,490 3 34,487 135 (0.39%) 0 (0.00%)
smoke_tests.nativeaot.windows.x64.checked.mch 31,208 10 31,198 8 (0.03%) 8 (0.03%)
2,219,596 807,447 1,412,149 4,468 (0.20%) 589 (0.03%)

jit-analyze output

aspnet.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64:

superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 65934970 (overridden on cmd)
Total bytes of diff: 65934825 (overridden on cmd)
Total bytes of delta: -145 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          41 : 68108.dasm (0.86% of base)
          13 : 111186.dasm (13.27% of base)
           3 : 110807.dasm (0.50% of base)
           3 : 57433.dasm (0.50% of base)

Top file improvements (bytes):
        -104 : 111185.dasm (-4.68% of base)
         -60 : 55150.dasm (-18.58% of base)
         -25 : 60921.dasm (-4.89% of base)
         -16 : 58694.dasm (-1.19% of base)

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

Top method regressions (bytes):
          41 ( 0.86% of base) : 68108.dasm - Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator:ValidateNoCycles(Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Model+Validation]):this (Tier1-OSR)
          13 (13.27% of base) : 111186.dasm - System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
           3 ( 0.50% of base) : 110807.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
           3 ( 0.50% of base) : 57433.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)

Top method improvements (bytes):
        -104 (-4.68% of base) : 111185.dasm - Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalModel:CreateTableMapping(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMappingSource,Microsoft.EntityFrameworkCore.Metadata.ITypeBase,Microsoft.EntityFrameworkCore.Metadata.ITypeBase,Microsoft.EntityFrameworkCore.Metadata.StoreObjectIdentifier,Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalModel,System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.Internal.TableMapping],ubyte,System.Nullable`1[ubyte]) (FullOpts)
         -60 (-18.58% of base) : 55150.dasm - BenchmarkDotNet.Toolchains.InProcess.Emit.InProcessEmitBuilder:Build(BenchmarkDotNet.Toolchains.Results.GenerateResult,BenchmarkDotNet.Running.BuildPartition,BenchmarkDotNet.Loggers.ILogger):BenchmarkDotNet.Toolchains.Results.BuildResult:this (FullOpts)
         -25 (-4.89% of base) : 60921.dasm - System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
         -16 (-1.19% of base) : 58694.dasm - Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor:VisitMethodCall(System.Linq.Expressions.MethodCallExpression):System.Linq.Expressions.Expression:this (FullOpts)

Top method regressions (percentages):
          13 (13.27% of base) : 111186.dasm - System.Collections.Generic.SortedDictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.__Canon]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (FullOpts)
          41 ( 0.86% of base) : 68108.dasm - Microsoft.EntityFrameworkCore.Infrastructure.ModelValidator:ValidateNoCycles(Microsoft.EntityFrameworkCore.Metadata.IModel,Microsoft.EntityFrameworkCore.Diagnostics.IDiagnosticsLogger`1[Microsoft.EntityFrameworkCore.DbLoggerCategory+Model+Validation]):this (Tier1-OSR)
           3 ( 0.50% of base) : 57433.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)
           3 ( 0.50% of base) : 110807.dasm - Microsoft.EntityFrameworkCore.Metadata.Conventions.RelationalValueGenerationConvention:ProcessPropertyAnnotationChanged(Microsoft.EntityFrameworkCore.Metadata.Builders.IConventionPropertyBuilder,System.String,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation,Microsoft.EntityFrameworkCore.Metadata.Conventions.IConventionContext`1[Microsoft.EntityFrameworkCore.Metadata.IConventionAnnotation]):this (FullOpts)

Top method improvements (percentages):
         -60 (-18.58% of base) : 55150.dasm - BenchmarkDotNet.Toolchains.InProcess.Emit.InProcessEmitBuilder:Build(BenchmarkDotNet.Toolchains.Results.GenerateResult,BenchmarkDotNet.Running.BuildPartition,BenchmarkDotNet.Loggers.ILogger):BenchmarkDotNet.Toolchains.Results.BuildResult:this (FullOpts)
         -25 (-4.89% of base) : 60921.dasm - System.Management.ManagementObjectCollection:GetEnumerator():System.Management.ManagementObjectCollection+ManagementObjectEnumerator:this (FullOpts)
        -104 (-4.68% of base) : 111185.dasm - Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalModel:CreateTableMapping(Microsoft.EntityFrameworkCore.Storage.IRelationalTypeMappingSource,Microsoft.EntityFrameworkCore.Metadata.ITypeBase,Microsoft.EntityFrameworkCore.Metadata.ITypeBase,Microsoft.EntityFrameworkCore.Metadata.StoreObjectIdentifier,Microsoft.EntityFrameworkCore.Metadata.Internal.RelationalModel,System.Collections.Generic.List`1[Microsoft.EntityFrameworkCore.Metadata.Internal.TableMapping],ubyte,System.Nullable`1[ubyte]) (FullOpts)
         -16 (-1.19% of base) : 58694.dasm - Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor:VisitMethodCall(System.Linq.Expressions.MethodCallExpression):System.Linq.Expressions.Expression:this (FullOpts)

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


benchmarks.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64:

superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 8749298 (overridden on cmd)
Total bytes of diff: 8749090 (overridden on cmd)
Total bytes of delta: -208 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file improvements (bytes):
        -194 : 13383.dasm (-12.61% of base)
         -14 : 6664.dasm (-0.71% of base)

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

Top method improvements (bytes):
        -194 (-12.61% of base) : 13383.dasm - System.Text.Tests.Perf_StringBuilder:Append_ValueTypes():System.Text.StringBuilder:this (FullOpts)
         -14 (-0.71% of base) : 6664.dasm - Sigil.Impl.ReturnTracer:TraceFrom(int,Sigil.Impl.LinqList`1[Sigil.Label],Sigil.Impl.LinqHashSet`1[Sigil.Label]):Sigil.Impl.ReturnTracerResult:this (FullOpts)

Top method improvements (percentages):
        -194 (-12.61% of base) : 13383.dasm - System.Text.Tests.Perf_StringBuilder:Append_ValueTypes():System.Text.StringBuilder:this (FullOpts)
         -14 (-0.71% of base) : 6664.dasm - Sigil.Impl.ReturnTracer:TraceFrom(int,Sigil.Impl.LinqList`1[Sigil.Label],Sigil.Impl.LinqHashSet`1[Sigil.Label]):Sigil.Impl.ReturnTracerResult:this (FullOpts)

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


libraries.pmi.windows.x64.checked.mch

To reproduce these diffs on Windows x64:

superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 63723297 (overridden on cmd)
Total bytes of diff: 63718995 (overridden on cmd)
Total bytes of delta: -4302 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          82 : 7557.dasm (4.67% of base)
          45 : 170263.dasm (3.81% of base)
          24 : 319370.dasm (1.94% of base)
          20 : 321387.dasm (3.70% of base)
          20 : 321388.dasm (6.94% of base)
          10 : 37123.dasm (7.35% of base)
          10 : 319369.dasm (0.82% of base)
           9 : 37122.dasm (3.26% of base)
           8 : 319371.dasm (0.66% of base)
           7 : 319368.dasm (0.59% of base)
           7 : 319366.dasm (0.58% of base)
           7 : 319367.dasm (0.58% of base)
           6 : 5207.dasm (0.68% of base)
           5 : 2990.dasm (0.50% of base)
           4 : 3900.dasm (2.20% of base)
           2 : 7658.dasm (0.13% of base)

Top file improvements (bytes):
        -158 : 146780.dasm (-3.62% of base)
        -154 : 181068.dasm (-3.60% of base)
        -133 : 92815.dasm (-7.54% of base)
        -121 : 319008.dasm (-13.10% of base)
        -113 : 319041.dasm (-12.00% of base)
         -95 : 319011.dasm (-10.60% of base)
         -92 : 319044.dasm (-10.01% of base)
         -88 : 232545.dasm (-47.83% of base)
         -87 : 112861.dasm (-1.62% of base)
         -82 : 191768.dasm (-3.99% of base)
         -67 : 232546.dasm (-16.46% of base)
         -61 : 232565.dasm (-16.62% of base)
         -60 : 15851.dasm (-48.39% of base)
         -58 : 232547.dasm (-42.34% of base)
         -57 : 104591.dasm (-4.81% of base)
         -56 : 272936.dasm (-11.38% of base)
         -56 : 172662.dasm (-11.38% of base)
         -56 : 232543.dasm (-40.88% of base)
         -55 : 232544.dasm (-41.98% of base)
         -54 : 40276.dasm (-8.91% of base)

49 total files with Code Size differences (33 improved, 16 regressed), 23 unchanged.

Top method regressions (bytes):
          82 ( 4.67% of base) : 7557.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display:fit@665(int,Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Text.StructuredPrintfImpl.TaggedText],Microsoft.FSharp.Text.StructuredPrintfImpl.Display+Breaks,int,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout):System.Tuple`4[Microsoft.FSharp.Text.StructuredPrintfImpl.Display+Breaks,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,int,int] (FullOpts)
          45 ( 3.81% of base) : 170263.dasm - Microsoft.Build.BackEnd.TargetEntry+<ProcessBucket>d__51:MoveNext():this (FullOpts)
          24 ( 1.94% of base) : 319370.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[System.Numerics.Vector`1[float],System.Nullable`1[int]](System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
          20 ( 3.70% of base) : 321387.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass26_0:<Find>b__0():this (FullOpts)
          20 ( 6.94% of base) : 321388.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:<Find>b__0():this (FullOpts)
          10 ( 7.35% of base) : 37123.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__1(System.Data.DataRow):ubyte:this (FullOpts)
          10 ( 0.82% of base) : 319369.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[double,System.Nullable`1[int]](double,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           9 ( 3.26% of base) : 37122.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__0(System.Data.DataRow):ubyte:this (FullOpts)
           8 ( 0.66% of base) : 319371.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[long,System.Nullable`1[int]](long,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           7 ( 0.59% of base) : 319368.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[int,System.Nullable`1[int]](int,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           7 ( 0.58% of base) : 319367.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[short,System.Nullable`1[int]](short,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           7 ( 0.58% of base) : 319366.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[ubyte,System.Nullable`1[int]](ubyte,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           6 ( 0.68% of base) : 5207.dasm - Microsoft.FSharp.Control.AsyncPrimitives:QueueAsyncAndWaitForResultSynchronously[System.Numerics.Vector`1[float]](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.Numerics.Vector`1[float]],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Numerics.Vector`1[float] (FullOpts)
           5 ( 0.50% of base) : 2990.dasm - Microsoft.FSharp.Linq.QueryModule:|MacroReduction|_|(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] (FullOpts)
           4 ( 2.20% of base) : 3900.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+SubstHelperRaw@64:Invoke(Microsoft.FSharp.Quotations.FSharpVar):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]:this (FullOpts)
           2 ( 0.13% of base) : 7658.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:sequenceValueL(Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ShowMode,int,int,System.Collections.IEnumerable):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)

Top method improvements (bytes):
        -158 (-3.62% of base) : 146780.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver:GetAllDiagnosticDescriptorsWithInfo(System.Threading.CancellationToken,byref):System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
        -154 (-3.60% of base) : 181068.dasm - Microsoft.CodeAnalysis.Diagnostics.AnalyzerDriver:GetAllDiagnosticDescriptorsWithInfo(System.Threading.CancellationToken,byref):System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.DiagnosticDescriptor,Microsoft.CodeAnalysis.DiagnosticDescriptorErrorLoggerInfo]]:this (FullOpts)
        -133 (-7.54% of base) : 92815.dasm - Microsoft.Diagnostics.Tracing.Parsers.IIS_Trace.W3CacheFileCacheAccessEnd:ToXml(System.Text.StringBuilder):System.Text.StringBuilder:this (FullOpts)
        -121 (-13.10% of base) : 319008.dasm - Xunit.Assert:Equal(double,double,int,int) (FullOpts)
        -113 (-12.00% of base) : 319041.dasm - Xunit.Assert:NotEqual(double,double,int,int) (FullOpts)
         -95 (-10.60% of base) : 319011.dasm - Xunit.Assert:Equal(float,float,int,int) (FullOpts)
         -92 (-10.01% of base) : 319044.dasm - Xunit.Assert:NotEqual(float,float,int,int) (FullOpts)
         -88 (-47.83% of base) : 232545.dasm - CSharpx.Maybe:Return[double](double):CSharpx.Maybe`1[double] (FullOpts)
         -87 (-1.62% of base) : 112861.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbol:ValidateAttributeUsage(Microsoft.CodeAnalysis.VisualBasic.Symbols.VisualBasicAttributeData,Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,int,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,System.Collections.Generic.HashSet`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol]):ubyte:this (FullOpts)
         -82 (-3.99% of base) : 191768.dasm - System.Data.OleDb.ColumnBinding:Value(System.Object):this (FullOpts)
         -67 (-16.46% of base) : 232546.dasm - CSharpx.Maybe:Return[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):CSharpx.Maybe`1[System.Numerics.Vector`1[float]] (FullOpts)
         -61 (-16.62% of base) : 232565.dasm - CSharpx.MaybeExtensions:ToMaybe[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):CSharpx.Maybe`1[System.Numerics.Vector`1[float]] (FullOpts)
         -60 (-48.39% of base) : 15851.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[double]:Equals(double,double):ubyte:this (FullOpts)
         -58 (-42.34% of base) : 232547.dasm - CSharpx.Maybe:Return[long](long):CSharpx.Maybe`1[long] (FullOpts)
         -57 (-4.81% of base) : 104591.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindForLoopBodyAndNextControlVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
         -56 (-40.88% of base) : 232543.dasm - CSharpx.Maybe:Return[short](short):CSharpx.Maybe`1[short] (FullOpts)
         -56 (-11.38% of base) : 272936.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[double](double,double,double,ubyte) (FullOpts)
         -56 (-11.38% of base) : 172662.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[double](double,double,double,ubyte) (FullOpts)
         -55 (-41.98% of base) : 232544.dasm - CSharpx.Maybe:Return[int](int):CSharpx.Maybe`1[int] (FullOpts)
         -54 (-8.91% of base) : 40276.dasm - System.Data.Common.SqlCharsStorage:ConvertXmlToObject(System.String):System.Object:this (FullOpts)

Top method regressions (percentages):
          10 ( 7.35% of base) : 37123.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__1(System.Data.DataRow):ubyte:this (FullOpts)
          20 ( 6.94% of base) : 321388.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass28_0:<Find>b__0():this (FullOpts)
          82 ( 4.67% of base) : 7557.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display:fit@665(int,Microsoft.FSharp.Core.FSharpFunc`2[System.Object,Microsoft.FSharp.Text.StructuredPrintfImpl.TaggedText],Microsoft.FSharp.Text.StructuredPrintfImpl.Display+Breaks,int,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout):System.Tuple`4[Microsoft.FSharp.Text.StructuredPrintfImpl.Display+Breaks,Microsoft.FSharp.Text.StructuredPrintfImpl.Layout,int,int] (FullOpts)
          45 ( 3.81% of base) : 170263.dasm - Microsoft.Build.BackEnd.TargetEntry+<ProcessBucket>d__51:MoveNext():this (FullOpts)
          20 ( 3.70% of base) : 321387.dasm - Xunit.Sdk.TestFrameworkDiscoverer+<>c__DisplayClass26_0:<Find>b__0():this (FullOpts)
           9 ( 3.26% of base) : 37122.dasm - System.Data.EnumerableRowCollection`1+<>c__DisplayClass16_0[ubyte]:<GetLinqDataView>b__0(System.Data.DataRow):ubyte:this (FullOpts)
           4 ( 2.20% of base) : 3900.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+SubstHelperRaw@64:Invoke(Microsoft.FSharp.Quotations.FSharpVar):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr]:this (FullOpts)
          24 ( 1.94% of base) : 319370.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[System.Numerics.Vector`1[float],System.Nullable`1[int]](System.Numerics.Vector`1[float],System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
          10 ( 0.82% of base) : 319369.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[double,System.Nullable`1[int]](double,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           6 ( 0.68% of base) : 5207.dasm - Microsoft.FSharp.Control.AsyncPrimitives:QueueAsyncAndWaitForResultSynchronously[System.Numerics.Vector`1[float]](System.Threading.CancellationToken,Microsoft.FSharp.Control.FSharpAsync`1[System.Numerics.Vector`1[float]],Microsoft.FSharp.Core.FSharpOption`1[int]):System.Numerics.Vector`1[float] (FullOpts)
           8 ( 0.66% of base) : 319371.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[long,System.Nullable`1[int]](long,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           7 ( 0.59% of base) : 319368.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[int,System.Nullable`1[int]](int,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           7 ( 0.58% of base) : 319366.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[ubyte,System.Nullable`1[int]](ubyte,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           7 ( 0.58% of base) : 319367.dasm - Xunit.Internal.AssertHelper:VerifyEquivalence[short,System.Nullable`1[int]](short,System.Nullable`1[int],ubyte,System.String,System.Collections.Generic.HashSet`1[System.Object],System.Collections.Generic.HashSet`1[System.Object],int):Xunit.Sdk.EquivalentException (FullOpts)
           5 ( 0.50% of base) : 2990.dasm - Microsoft.FSharp.Linq.QueryModule:|MacroReduction|_|(Microsoft.FSharp.Quotations.FSharpExpr):Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Quotations.FSharpExpr] (FullOpts)
           2 ( 0.13% of base) : 7658.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:sequenceValueL(Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ShowMode,int,int,System.Collections.IEnumerable):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)

Top method improvements (percentages):
         -60 (-48.39% of base) : 15851.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[double]:Equals(double,double):ubyte:this (FullOpts)
         -88 (-47.83% of base) : 232545.dasm - CSharpx.Maybe:Return[double](double):CSharpx.Maybe`1[double] (FullOpts)
         -52 (-44.83% of base) : 15853.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[System.Numerics.Vector`1[float]]:Equals(System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]):ubyte:this (FullOpts)
         -58 (-42.34% of base) : 232547.dasm - CSharpx.Maybe:Return[long](long):CSharpx.Maybe`1[long] (FullOpts)
         -55 (-41.98% of base) : 232544.dasm - CSharpx.Maybe:Return[int](int):CSharpx.Maybe`1[int] (FullOpts)
         -56 (-40.88% of base) : 232543.dasm - CSharpx.Maybe:Return[short](short):CSharpx.Maybe`1[short] (FullOpts)
         -52 (-39.69% of base) : 232542.dasm - CSharpx.Maybe:Return[ubyte](ubyte):CSharpx.Maybe`1[ubyte] (FullOpts)
         -42 (-39.62% of base) : 15855.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[long]:Equals(long,long):ubyte:this (FullOpts)
         -41 (-39.05% of base) : 15847.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[short]:Equals(short,short):ubyte:this (FullOpts)
         -40 (-38.46% of base) : 15844.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[ubyte]:Equals(ubyte,ubyte):ubyte:this (FullOpts)
         -39 (-37.86% of base) : 15849.dasm - Microsoft.FSharp.Core.LanguagePrimitives+HashCompare+structuralEqualityComparer@1777[int]:Equals(int,int):ubyte:this (FullOpts)
         -24 (-20.51% of base) : 225346.dasm - System.Speech.Recognition.GrammarBuilder:AppendWildcard():this (FullOpts)
         -27 (-17.53% of base) : 196871.dasm - System.Dynamic.Utils.CacheDict`2[ubyte,System.Nullable`1[int]]:Add(ubyte,System.Nullable`1[int]):this (FullOpts)
         -27 (-17.31% of base) : 196875.dasm - System.Dynamic.Utils.CacheDict`2[short,System.Nullable`1[int]]:Add(short,System.Nullable`1[int]):this (FullOpts)
         -52 (-16.83% of base) : 272937.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[long](long,long,long,ubyte) (FullOpts)
         -52 (-16.83% of base) : 172663.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[long](long,long,long,ubyte) (FullOpts)
         -61 (-16.62% of base) : 232565.dasm - CSharpx.MaybeExtensions:ToMaybe[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):CSharpx.Maybe`1[System.Numerics.Vector`1[float]] (FullOpts)
         -31 (-16.49% of base) : 278825.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:BoolToLdapConverter(System.DirectoryServices.AccountManagement.Principal,System.String,System.DirectoryServices.DirectoryEntry,System.String) (FullOpts)
         -67 (-16.46% of base) : 232546.dasm - CSharpx.Maybe:Return[System.Numerics.Vector`1[float]](System.Numerics.Vector`1[float]):CSharpx.Maybe`1[System.Numerics.Vector`1[float]] (FullOpts)
         -49 (-16.33% of base) : 172661.dasm - System.Configuration.ValidatorUtils:ValidateRangeImpl[int](int,int,int,ubyte) (FullOpts)


libraries_tests.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64:

superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 349428109 (overridden on cmd)
Total bytes of diff: 349427419 (overridden on cmd)
Total bytes of delta: -690 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
         738 : 751410.dasm (15.27% of base)
         182 : 160428.dasm (10.42% of base)
          68 : 584228.dasm (18.04% of base)
          68 : 426791.dasm (18.04% of base)
          68 : 547448.dasm (18.04% of base)
          68 : 417449.dasm (18.04% of base)
          68 : 711990.dasm (18.04% of base)
          68 : 723117.dasm (18.04% of base)
          68 : 615397.dasm (18.04% of base)
          50 : 329627.dasm (1.85% of base)
          32 : 614547.dasm (8.49% of base)
          32 : 614559.dasm (8.49% of base)
          27 : 756432.dasm (7.09% of base)
          27 : 584615.dasm (7.09% of base)
          24 : 540975.dasm (3.96% of base)
          24 : 540991.dasm (3.93% of base)
          23 : 335712.dasm (4.21% of base)
          23 : 726095.dasm (0.45% of base)
          21 : 152469.dasm (4.75% of base)
          20 : 641618.dasm (4.77% of base)

Top file improvements (bytes):
        -156 : 552937.dasm (-1.80% of base)
        -108 : 397908.dasm (-4.16% of base)
         -80 : 487012.dasm (-11.36% of base)
         -75 : 466738.dasm (-6.79% of base)
         -73 : 307728.dasm (-14.60% of base)
         -71 : 484847.dasm (-2.75% of base)
         -68 : 397840.dasm (-3.33% of base)
         -67 : 429189.dasm (-12.05% of base)
         -61 : 571631.dasm (-14.42% of base)
         -61 : 384325.dasm (-14.42% of base)
         -61 : 388881.dasm (-14.42% of base)
         -61 : 336491.dasm (-14.42% of base)
         -60 : 335945.dasm (-2.56% of base)
         -59 : 391494.dasm (-12.80% of base)
         -56 : 336335.dasm (-13.79% of base)
         -54 : 397830.dasm (-12.77% of base)
         -53 : 263034.dasm (-12.44% of base)
         -52 : 484252.dasm (-12.81% of base)
         -52 : 263072.dasm (-12.81% of base)
         -52 : 413080.dasm (-12.81% of base)

52 total files with Code Size differences (29 improved, 23 regressed), 20 unchanged.

Top method regressions (bytes):
         738 (15.27% of base) : 751410.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<TestNonGenericDictionaryKeyObject>d__152:MoveNext():this (Tier1)
         182 (10.42% of base) : 160428.dasm - (dynamicClass):lambda_method158(System.Runtime.CompilerServices.Closure,System.IServiceProvider,System.Object[]):System.Object (FullOpts)
          68 (18.04% of base) : 584228.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 426791.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 547448.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 417449.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 711990.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 723117.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 615397.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          50 ( 1.85% of base) : 329627.dasm - Xunit.Assert:Equal[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]](System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]]) (Tier1)
          32 ( 8.49% of base) : 614547.dasm - Xunit.Assert:Equal[System.Int128](System.Int128,System.Int128,System.Collections.Generic.IEqualityComparer`1[System.Int128]) (Tier1)
          32 ( 8.49% of base) : 614559.dasm - Xunit.Assert:Equal[System.UInt128](System.UInt128,System.UInt128,System.Collections.Generic.IEqualityComparer`1[System.UInt128]) (Tier1)
          27 ( 7.09% of base) : 584615.dasm - Xunit.Assert:NotEqual[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
          27 ( 7.09% of base) : 756432.dasm - Xunit.Assert:NotEqual[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
          24 ( 3.93% of base) : 540991.dasm - System.Xml.XslCompiledTransformApiTests.CTransformResolverTest:XmlResolver2(System.Object,int,int,int,int):this (Tier1)
          24 ( 3.96% of base) : 540975.dasm - System.Xml.XslCompiledTransformApiTests.CTransformResolverTest:XmlResolver3(System.Object,int,int,int,int):this (Tier1)
          23 ( 4.21% of base) : 335712.dasm - System.Diagnostics.Tests.ProcessTests:TestProcessorTime():this (Tier1-OSR)
          23 ( 0.45% of base) : 726095.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[int,int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (Tier1)
          21 ( 4.75% of base) : 152469.dasm - Microsoft.CodeAnalysis.ParseOptions:EqualsHelper(Microsoft.CodeAnalysis.ParseOptions):ubyte:this (Tier1)
          20 ( 4.77% of base) : 641618.dasm - Xunit.Assert:Equal[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)

Top method improvements (bytes):
        -156 (-1.80% of base) : 552937.dasm - System.Xml.Tests.TCReadContentAsBase64:ReadBase64BufferOverflowWorksProperly():int:this (Tier1)
        -108 (-4.16% of base) : 397908.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedFilesTestBase:ValidateMemoryMappedViewStream(System.IO.MemoryMappedFiles.MemoryMappedViewStream,long,int) (Tier1)
         -80 (-11.36% of base) : 487012.dasm - System.Security.Cryptography.X509Certificates.RSAPkcs1X509SignatureGenerator:BuildPublicKey(System.Security.Cryptography.RSA):System.Security.Cryptography.X509Certificates.PublicKey (Tier1)
         -75 (-6.79% of base) : 466738.dasm - System.Net.Mime.MimePart:GetEncodedStream(System.IO.Stream):System.IO.Stream:this (Tier1)
         -73 (-14.60% of base) : 307728.dasm - Xunit.Assert:RecordException(System.Action):System.Exception (Tier1)
         -71 (-2.75% of base) : 484847.dasm - System.IO.Tests.ConnectedStreamConformanceTests+<>c__DisplayClass43_1+<<ConcurrentBidirectionalReadsWrites_Success>b__3>d:MoveNext():this (Tier1)
         -68 (-3.33% of base) : 397840.dasm - System.IO.MemoryMappedFiles.Tests.MemoryMappedFilesTestBase:ValidateMemoryMappedViewAccessor(System.IO.MemoryMappedFiles.MemoryMappedViewAccessor,long,int) (Tier1)
         -67 (-12.05% of base) : 429189.dasm - Xunit.Assert:Equal[System.ValueTuple`2[System.__Canon,int]](System.ValueTuple`2[System.__Canon,int],System.ValueTuple`2[System.__Canon,int],System.Collections.Generic.IEqualityComparer`1[System.ValueTuple`2[System.__Canon,int]]) (Tier1)
         -61 (-14.42% of base) : 571631.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -61 (-14.42% of base) : 384325.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -61 (-14.42% of base) : 388881.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -61 (-14.42% of base) : 336491.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -60 (-2.56% of base) : 335945.dasm - System.Diagnostics.Tests.ProcessTests:TotalProcessorTime_PerformLoop_TotalProcessorTimeValid():this (Tier1-OSR)
         -59 (-12.80% of base) : 391494.dasm - Xunit.Assert:InRange[System.DateTime](System.DateTime,System.DateTime,System.DateTime,System.Collections.Generic.IComparer`1[System.DateTime]) (Tier1)
         -56 (-13.79% of base) : 336335.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -54 (-12.77% of base) : 397830.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -53 (-12.44% of base) : 263034.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -52 (-12.81% of base) : 484252.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 263072.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 413080.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)

Top method regressions (percentages):
          68 (18.04% of base) : 584228.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 426791.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 547448.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 417449.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 711990.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 723117.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
          68 (18.04% of base) : 615397.dasm - Xunit.Assert:Equal[System.Decimal](System.Decimal,System.Decimal,System.Collections.Generic.IEqualityComparer`1[System.Decimal]) (Tier1)
         738 (15.27% of base) : 751410.dasm - System.Text.Json.Serialization.Tests.CollectionTests+<TestNonGenericDictionaryKeyObject>d__152:MoveNext():this (Tier1)
         182 (10.42% of base) : 160428.dasm - (dynamicClass):lambda_method158(System.Runtime.CompilerServices.Closure,System.IServiceProvider,System.Object[]):System.Object (FullOpts)
          32 ( 8.49% of base) : 614547.dasm - Xunit.Assert:Equal[System.Int128](System.Int128,System.Int128,System.Collections.Generic.IEqualityComparer`1[System.Int128]) (Tier1)
          32 ( 8.49% of base) : 614559.dasm - Xunit.Assert:Equal[System.UInt128](System.UInt128,System.UInt128,System.Collections.Generic.IEqualityComparer`1[System.UInt128]) (Tier1)
          27 ( 7.09% of base) : 584615.dasm - Xunit.Assert:NotEqual[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
          27 ( 7.09% of base) : 756432.dasm - Xunit.Assert:NotEqual[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
          20 ( 4.77% of base) : 641618.dasm - Xunit.Assert:Equal[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
          20 ( 4.77% of base) : 583070.dasm - Xunit.Assert:Equal[System.Numerics.BigInteger](System.Numerics.BigInteger,System.Numerics.BigInteger,System.Collections.Generic.IEqualityComparer`1[System.Numerics.BigInteger]) (Tier1)
          20 ( 4.77% of base) : 439594.dasm - Xunit.Assert:Equal[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
          20 ( 4.77% of base) : 755350.dasm - Xunit.Assert:Equal[System.SequencePosition](System.SequencePosition,System.SequencePosition,System.Collections.Generic.IEqualityComparer`1[System.SequencePosition]) (Tier1)
          21 ( 4.75% of base) : 152469.dasm - Microsoft.CodeAnalysis.ParseOptions:EqualsHelper(Microsoft.CodeAnalysis.ParseOptions):ubyte:this (Tier1)
          23 ( 4.21% of base) : 335712.dasm - System.Diagnostics.Tests.ProcessTests:TestProcessorTime():this (Tier1-OSR)
          24 ( 3.96% of base) : 540975.dasm - System.Xml.XslCompiledTransformApiTests.CTransformResolverTest:XmlResolver3(System.Object,int,int,int,int):this (Tier1)

Top method improvements (percentages):
         -49 (-25.39% of base) : 94558.dasm - Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (Tier1)
         -35 (-23.49% of base) : 62400.dasm - Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (Tier1)
         -73 (-14.60% of base) : 307728.dasm - Xunit.Assert:RecordException(System.Action):System.Exception (Tier1)
         -61 (-14.42% of base) : 571631.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -61 (-14.42% of base) : 384325.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -61 (-14.42% of base) : 388881.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -61 (-14.42% of base) : 336491.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)
         -56 (-13.79% of base) : 336335.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -30 (-13.51% of base) : 359747.dasm - (dynamicClass):CallSite.Target(System.Runtime.CompilerServices.Closure,System.Runtime.CompilerServices.CallSite,System.Type,System.Object) (FullOpts)
         -52 (-12.81% of base) : 484252.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 263072.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 413080.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 392648.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 286161.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 381866.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 79599.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 663327.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -52 (-12.81% of base) : 617382.dasm - Xunit.Assert:InRange[int](int,int,int,System.Collections.Generic.IComparer`1[int]) (Tier1)
         -59 (-12.80% of base) : 391494.dasm - Xunit.Assert:InRange[System.DateTime](System.DateTime,System.DateTime,System.DateTime,System.Collections.Generic.IComparer`1[System.DateTime]) (Tier1)
         -54 (-12.77% of base) : 397830.dasm - Xunit.Assert:InRange[long](long,long,long,System.Collections.Generic.IComparer`1[long]) (Tier1)


libraries_tests_no_tiered_compilation.run.windows.x64.Release.mch

To reproduce these diffs on Windows x64:

superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 154364655 (overridden on cmd)
Total bytes of diff: 154352831 (overridden on cmd)
Total bytes of delta: -11824 (-0.01 % of base)
    diff is an improvement.
    relative diff is a regression.
Detail diffs


Top file regressions (bytes):
         440 : 45946.dasm (9.05% of base)
         433 : 203847.dasm (36.91% of base)
         363 : 202678.dasm (34.67% of base)
         212 : 49299.dasm (12.28% of base)
         171 : 202543.dasm (19.26% of base)
         152 : 194825.dasm (11.74% of base)
         149 : 202838.dasm (17.11% of base)
         144 : 202734.dasm (16.74% of base)
         131 : 202551.dasm (15.04% of base)
         131 : 203025.dasm (15.04% of base)
         118 : 261986.dasm (4.90% of base)
         118 : 261983.dasm (4.83% of base)
          94 : 206779.dasm (7.01% of base)
          90 : 364046.dasm (1.81% of base)
          79 : 251604.dasm (1.68% of base)
          78 : 184861.dasm (4.66% of base)
          71 : 184858.dasm (5.41% of base)
          63 : 97992.dasm (3.49% of base)
          62 : 261974.dasm (3.22% of base)
          58 : 261987.dasm (3.08% of base)

Top file improvements (bytes):
        -927 : 147323.dasm (-19.68% of base)
        -866 : 183771.dasm (-37.77% of base)
        -757 : 97993.dasm (-12.37% of base)
        -419 : 76049.dasm (-24.25% of base)
        -407 : 68649.dasm (-29.80% of base)
        -407 : 57680.dasm (-29.80% of base)
        -407 : 75188.dasm (-29.80% of base)
        -393 : 57828.dasm (-27.62% of base)
        -393 : 68452.dasm (-27.62% of base)
        -393 : 75336.dasm (-27.62% of base)
        -378 : 57603.dasm (-27.71% of base)
        -378 : 75174.dasm (-27.71% of base)
        -378 : 68410.dasm (-27.71% of base)
        -309 : 178660.dasm (-25.54% of base)
        -264 : 281128.dasm (-11.68% of base)
        -238 : 363788.dasm (-11.39% of base)
        -187 : 185408.dasm (-11.57% of base)
        -181 : 363916.dasm (-15.82% of base)
        -158 : 185719.dasm (-10.67% of base)
        -156 : 356670.dasm (-29.89% of base)

58 total files with Code Size differences (29 improved, 29 regressed), 20 unchanged.

Top method regressions (bytes):
         440 ( 9.05% of base) : 45946.dasm - Microsoft.Extensions.Configuration.Binder.Tests.ConfigurationBinderTests:GetNullValue():this (FullOpts)
         433 (36.91% of base) : 203847.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4EqualsTest():this (FullOpts)
         363 (34.67% of base) : 202678.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2EqualsTest():this (FullOpts)
         212 (12.28% of base) : 49299.dasm - (dynamicClass):lambda_method10(System.Runtime.CompilerServices.Closure,System.IServiceProvider,System.Object[]):System.Object (FullOpts)
         171 (19.26% of base) : 202543.dasm - System.Numerics.Tests.Vector3Tests:Vector3EqualsTest():this (FullOpts)
         152 (11.74% of base) : 194825.dasm - System.Net.Tests.GlobalProxySelectionTest+<>c:<Select_Success>b__1_0():this (FullOpts)
         149 (17.11% of base) : 202838.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsTest():this (FullOpts)
         144 (16.74% of base) : 202734.dasm - System.Numerics.Tests.Vector2Tests:Vector2EqualsTest():this (FullOpts)
         131 (15.04% of base) : 202551.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this (FullOpts)
         131 (15.04% of base) : 203025.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this (FullOpts)
         118 ( 4.90% of base) : 261986.dasm - System.Security.Claims.ClaimsIdentityTests:Ctor_IdentityEnumerableClaimAuthNameRoleType_ClaimsIdentityClaim():this (FullOpts)
         118 ( 4.83% of base) : 261983.dasm - System.Security.Claims.ClaimsIdentityTests:Ctor_IdentityEnumerableClaimAuthNameRoleType_ClaimsIdentityRestFilled():this (FullOpts)
          94 ( 7.01% of base) : 206779.dasm - System.PrivateUri.Tests.IriTest:VerifyUriNormalizationForEscapedCharacters(System.String):this (FullOpts)
          90 ( 1.81% of base) : 364046.dasm - System.Tests.ValueTupleTests+ValueTupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.ValueTuple`2[ubyte,System.__Canon],System.TimeSpan]:TestConstructor(System.Object[]):this (FullOpts)
          79 ( 1.68% of base) : 251604.dasm - System.Tests.TupleTests+TupleTestDriver`10[short,int,long,System.__Canon,ushort,float,double,System.DateTime,System.__Canon,System.TimeSpan]:Ctor(System.Object[]):this (FullOpts)
          78 ( 4.66% of base) : 184861.dasm - System.Net.Http.Tests.RetryConditionHeaderValueTest:GetHashCode_UseSameAndDifferentRetryConditions_SameOrDifferentHashCodes():this (FullOpts)
          71 ( 5.41% of base) : 184858.dasm - System.Net.Http.Tests.RetryConditionHeaderValueTest:Equals_UseSameAndDifferentRetrys_EqualOrNotEqualNoExceptions():this (FullOpts)
          63 ( 3.49% of base) : 97992.dasm - System.Collections.Immutable.Tests.ImmutableHashSetTest:ChangeUnorderedEqualityComparer():this (FullOpts)
          62 ( 3.22% of base) : 261974.dasm - System.Security.Claims.ClaimsIdentityTests:Ctor_IdentityEnumerableClaimAuthNameRoleType_NonClaimsIdentityClaims():this (FullOpts)
          58 ( 3.08% of base) : 261987.dasm - System.Security.Claims.ClaimsIdentityTests:Ctor_IdentityEnumerableClaimAuthNameRoleType_NonClaimsIdentityRestEmptyWorks():this (FullOpts)

Top method improvements (bytes):
        -927 (-19.68% of base) : 147323.dasm - System.Formats.Asn1.Tests.Reader.ReadEnumerated:ExpectedTag_IgnoresConstructed(int,System.String,int,int) (FullOpts)
        -866 (-37.77% of base) : 183771.dasm - System.Net.Http.Tests.WarningHeaderValueTest:Equals_UseSameAndDifferentRanges_EqualOrNotEqualNoExceptions():this (FullOpts)
        -757 (-12.37% of base) : 97993.dasm - System.Collections.Immutable.Tests.ImmutableHashSetTest:Create():this (FullOpts)
        -419 (-24.25% of base) : 76049.dasm - Microsoft.Extensions.Logging.Test.LoggerMessageTest:get_LogMessagesDataSkipEnabledCheck():System.Collections.Generic.IEnumerable`1[System.Object[]] (FullOpts)
        -407 (-29.80% of base) : 68649.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
        -407 (-29.80% of base) : 57680.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
        -407 (-29.80% of base) : 75188.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
        -393 (-27.62% of base) : 57828.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
        -393 (-27.62% of base) : 68452.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
        -393 (-27.62% of base) : 75336.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
        -378 (-27.71% of base) : 57603.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
        -378 (-27.71% of base) : 75174.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
        -378 (-27.71% of base) : 68410.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
        -309 (-25.54% of base) : 178660.dasm - System.Buffers.Tests.ArrayBufferWriterTests`1[ubyte]:ArrayBufferWriter_Ctor():this (FullOpts)
        -264 (-11.68% of base) : 281128.dasm - SampleSynthesisTests.GrammarTests:CreateMoreElaborateGrammar():this (FullOpts)
        -238 (-11.39% of base) : 363788.dasm - System.Tests.ValueTupleTests:OneTuples() (FullOpts)
        -187 (-11.57% of base) : 185408.dasm - System.Net.Http.Tests.ContentDispositionHeaderValueTest:Equals_UseContentDispositionWithAndWithoutParameters_EqualOrNotEqualNoExceptions():this (FullOpts)
        -181 (-15.82% of base) : 363916.dasm - System.Tests.ValueTupleTests:TestCustomTypeParameter2() (FullOpts)
        -158 (-10.67% of base) : 185719.dasm - System.Net.Http.Tests.TransferCodingHeaderValueTest:Equals_UseTransferCodingWithAndWithoutParameters_EqualOrNotEqualNoExceptions():this (FullOpts)
        -156 (-29.89% of base) : 356670.dasm - System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests:TestDataflowMessageHeader():this (FullOpts)

Top method regressions (percentages):
          25 (2,500.00% of base) : 110098.dasm - System.ComponentModel.Composition.ComposablePartDefinitionTests:Constructor1_ShouldNotThrow():this (FullOpts)
          22 (66.67% of base) : 277482.dasm - System.Security.Permissions.Tests.CodeGroupTests:FileCodeGroupCallMethods() (FullOpts)
         433 (36.91% of base) : 203847.dasm - System.Numerics.Tests.Matrix4x4Tests:Matrix4x4EqualsTest():this (FullOpts)
          22 (36.67% of base) : 277487.dasm - System.Security.Permissions.Tests.EvidenceBaseTests:ApplicationDirectoryCallMethods() (FullOpts)
          22 (36.67% of base) : 277486.dasm - System.Security.Permissions.Tests.EvidenceBaseTests:GacInstalledCallMethods() (FullOpts)
          22 (36.67% of base) : 277424.dasm - System.Security.Permissions.Tests.PermissionTests:StrongNamePublicKeyBlobTests() (FullOpts)
         363 (34.67% of base) : 202678.dasm - System.Numerics.Tests.Matrix3x2Tests:Matrix3x2EqualsTest():this (FullOpts)
         171 (19.26% of base) : 202543.dasm - System.Numerics.Tests.Vector3Tests:Vector3EqualsTest():this (FullOpts)
         149 (17.11% of base) : 202838.dasm - System.Numerics.Tests.PlaneTests:PlaneEqualsTest():this (FullOpts)
         144 (16.74% of base) : 202734.dasm - System.Numerics.Tests.Vector2Tests:Vector2EqualsTest():this (FullOpts)
         131 (15.04% of base) : 202551.dasm - System.Numerics.Tests.QuaternionTests:QuaternionEqualsTest():this (FullOpts)
         131 (15.04% of base) : 203025.dasm - System.Numerics.Tests.Vector4Tests:Vector4EqualsTest():this (FullOpts)
         212 (12.28% of base) : 49299.dasm - (dynamicClass):lambda_method10(System.Runtime.CompilerServices.Closure,System.IServiceProvider,System.Object[]):System.Object (FullOpts)
         152 (11.74% of base) : 194825.dasm - System.Net.Tests.GlobalProxySelectionTest+<>c:<Select_Success>b__1_0():this (FullOpts)
         440 ( 9.05% of base) : 45946.dasm - Microsoft.Extensions.Configuration.Binder.Tests.ConfigurationBinderTests:GetNullValue():this (FullOpts)
          36 ( 7.59% of base) : 88271.dasm - System.CodeDom.Tests.CodeAttachEventStatementTests:Event_Set_Get_ReturnsExpected(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression):this (FullOpts)
          36 ( 7.59% of base) : 90742.dasm - System.CodeDom.Tests.CodeRemoveEventStatementTests:Event_Set_Get_ReturnsExpected(System.CodeDom.CodeEventReferenceExpression,System.CodeDom.CodeExpression):this (FullOpts)
          94 ( 7.01% of base) : 206779.dasm - System.PrivateUri.Tests.IriTest:VerifyUriNormalizationForEscapedCharacters(System.String):this (FullOpts)
          54 ( 5.73% of base) : 365283.dasm - XDocumentTests.SDMSample.SDM__PI:ProcessingInstructionEquals():this (FullOpts)
          45 ( 5.63% of base) : 89207.dasm - System.CodeDom.Tests.CodeMethodInvokeExpressionTests:Ctor_Method_Parameters(System.CodeDom.CodeMethodReferenceExpression,System.CodeDom.CodeExpression[]):this (FullOpts)

Top method improvements (percentages):
         -50 (-41.32% of base) : 140822.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.conversions.dynamicobj002.dynamicobj002.Test:MainMethod():int (FullOpts)
        -866 (-37.77% of base) : 183771.dasm - System.Net.Http.Tests.WarningHeaderValueTest:Equals_UseSameAndDifferentRanges_EqualOrNotEqualNoExceptions():this (FullOpts)
        -156 (-29.89% of base) : 356670.dasm - System.Threading.Tasks.Dataflow.Tests.DataflowBlockExtensionsTests:TestDataflowMessageHeader():this (FullOpts)
        -407 (-29.80% of base) : 68649.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
        -407 (-29.80% of base) : 57680.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
        -407 (-29.80% of base) : 75188.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.CollectionTestExtensions:.cctor() (FullOpts)
        -378 (-27.71% of base) : 57603.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
        -378 (-27.71% of base) : 75174.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
        -378 (-27.71% of base) : 68410.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.TestInstances:.cctor() (FullOpts)
        -393 (-27.62% of base) : 57828.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
        -393 (-27.62% of base) : 68452.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
        -393 (-27.62% of base) : 75336.dasm - Microsoft.Extensions.Logging.Generators.Tests.TestClasses.ArgTestExtensions:.cctor() (FullOpts)
        -309 (-25.54% of base) : 178660.dasm - System.Buffers.Tests.ArrayBufferWriterTests`1[ubyte]:ArrayBufferWriter_Ctor():this (FullOpts)
         -64 (-25.40% of base) : 48559.dasm - Stashbox.Utils.Data.ExpandableArray`1[int]:Contains(int):ubyte:this (FullOpts)
         -49 (-25.39% of base) : 34157.dasm - Microsoft.Interop.LibraryImportData:From(Microsoft.Interop.LibraryImportCompilationData):Microsoft.Interop.LibraryImportData (FullOpts)
         -55 (-24.55% of base) : 365203.dasm - XDocumentTests.SDMSample.SDM_Document:DocumentXmlDeclaration():this (FullOpts)
        -419 (-24.25% of base) : 76049.dasm - Microsoft.Extensions.Logging.Test.LoggerMessageTest:get_LogMessagesDataSkipEnabledCheck():System.Collections.Generic.IEnumerable`1[System.Object[]] (FullOpts)
         -35 (-23.81% of base) : 14329.dasm - Microsoft.Interop.GeneratedComInterfaceData:From(Microsoft.Interop.GeneratedComInterfaceCompilationData):Microsoft.Interop.GeneratedComInterfaceData (FullOpts)
         -84 (-20.90% of base) : 365479.dasm - XDocumentTests.SDMSample.SDM_Element:ElementIsEmpty():this (FullOpts)
         -73 (-20.39% of base) : 183710.dasm - System.Net.Http.Tests.NameValueHeaderValueTest:Clone_Call_CloneFieldsMatchSourceFields():this (FullOpts)


realworld.run.windows.x64.checked.mch

To reproduce these diffs on Windows x64:

superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64

Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13613198 (overridden on cmd)
Total bytes of diff: 13612155 (overridden on cmd)
Total bytes of delta: -1043 (-0.01 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          53 : 12003.dasm (1.91% of base)
          48 : 6950.dasm (3.58% of base)
          42 : 3214.dasm (0.64% of base)
          42 : 10643.dasm (0.81% of base)
          40 : 8472.dasm (0.86% of base)
          37 : 2947.dasm (0.28% of base)
          35 : 8797.dasm (0.92% of base)
          25 : 11019.dasm (2.30% of base)
          23 : 2162.dasm (13.14% of base)
          20 : 10743.dasm (1.62% of base)
          18 : 10653.dasm (0.51% of base)
          18 : 8293.dasm (0.80% of base)
          18 : 9248.dasm (0.70% of base)
          17 : 5515.dasm (0.57% of base)
          15 : 8944.dasm (0.96% of base)
          14 : 10015.dasm (0.41% of base)
          13 : 6918.dasm (0.73% of base)
          12 : 3339.dasm (0.40% of base)
          10 : 10795.dasm (1.29% of base)
           9 : 10710.dasm (2.15% of base)

Top file improvements (bytes):
        -144 : 8286.dasm (-1.55% of base)
        -126 : 10108.dasm (-4.24% of base)
        -108 : 9407.dasm (-6.25% of base)
         -99 : 11558.dasm (-2.94% of base)
         -89 : 8960.dasm (-8.31% of base)
         -70 : 11537.dasm (-9.31% of base)
         -52 : 10726.dasm (-9.37% of base)
         -50 : 10691.dasm (-9.58% of base)
         -50 : 10671.dasm (-9.58% of base)
         -50 : 9239.dasm (-9.58% of base)
         -50 : 10648.dasm (-1.48% of base)
         -50 : 8609.dasm (-9.58% of base)
         -48 : 8584.dasm (-7.14% of base)
         -48 : 8934.dasm (-15.05% of base)
         -47 : 10516.dasm (-6.70% of base)
         -45 : 8339.dasm (-1.11% of base)
         -41 : 10767.dasm (-5.76% of base)
         -41 : 7446.dasm (-1.93% of base)
         -41 : 7598.dasm (-1.47% of base)
         -40 : 8798.dasm (-1.74% of base)

62 total files with Code Size differences (28 improved, 34 regressed), 4 unchanged.

Top method regressions (bytes):
          53 ( 1.91% of base) : 12003.dasm - FSharp.Compiler.CodeAnalysis.IncrementalBuilderHelpers+FinalizeTypeCheckTask@762-13:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile][]):Microsoft.FSharp.Control.FSharpAsync`1[System.Tuple`4[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef,FSharp.Compiler.CompilerConfig+ProjectAssemblyDataResult,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CheckedImplFile]],FSharp.Compiler.CodeAnalysis.BoundModel]]:this (FullOpts)
          48 ( 3.58% of base) : 6950.dasm - FSharp.Compiler.CodeAnalysis.BoundModel+clo@334-584:Invoke(System.Tuple`5[FSharp.Compiler.CodeAnalysis.TcInfo,FSharp.Compiler.NameResolution+TcResultsSinkImpl,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile],System.String,System.Tuple`2[FSharp.Compiler.DiagnosticsLogger+PhasedDiagnostic,FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity][]]):Microsoft.FSharp.Control.FSharpAsync`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]:this (FullOpts)
          42 ( 0.81% of base) : 10643.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecDefns_Phase2_Bindings(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType]]],FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2InfoForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],FSharp.Compiler.CheckBasics+TcEnv] (FullOpts)
          42 ( 0.64% of base) : 3214.dasm - FSharp.Compiler.CompilerConfig+TcConfig:.ctor(FSharp.Compiler.CompilerConfig+TcConfigBuilder,ubyte):this (FullOpts)
          40 ( 0.86% of base) : 8472.dasm - FSharp.Compiler.CheckExpressions:TcVal(ubyte,FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.TypedTree+ValRef,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckBasics+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TyparKind],System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckBasics+UnscopedTyparEnv]]]]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.NameResolution+AfterResolution],FSharp.Compiler.Text.Range):System.Tuple`6[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.TypedTree+Expr,ubyte,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
          37 ( 0.28% of base) : 2947.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)
          35 ( 0.92% of base) : 8797.dasm - FSharp.Compiler.CheckExpressions:TcValueItemThen(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+AfterResolution,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
          25 ( 2.30% of base) : 11019.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2C_FixupRecursiveReferences(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2C,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreInitializationGraphEliminationBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]] (FullOpts)
          23 (13.14% of base) : 2162.dasm - FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
          20 ( 1.62% of base) : 10743.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2A,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
          18 ( 0.51% of base) : 10653.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TcMutRecBindings_Phase2A_CreateRecursiveValuesAndCheckArgumentPatterns@1038-4:Invoke(System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckIncrementalClasses+IncrClassCtorInfo],FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]],FSharp.Compiler.CheckDeclarations+TyconBindingDefn):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A],System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CheckIncrementalClasses+IncrClassCtorInfo],FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]]:this (FullOpts)
          18 ( 0.80% of base) : 8293.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication_SplitSynArguments[System.__Canon](FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,System.__Canon,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Infos+MethInfo],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`3[FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]],Microsoft.FSharp.Collections.FSharpList`1[Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`5[FSharp.Compiler.Syntax.Ident,ubyte,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy] (FullOpts)
          18 ( 0.70% of base) : 9248.dasm - FSharp.Compiler.Infos:CrackParamAttribsInfo(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TypedTree+ArgReprInfo):FSharp.Compiler.Infos+ParamAttribs (FullOpts)
          17 ( 0.57% of base) : 5515.dasm - FSharp.Compiler.CompilerImports+TcImports:ImportTypeProviderExtensions(Internal.Utilities.Library.CompilationThreadToken,FSharp.Compiler.CompilerConfig+TcConfig,System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAttribute],FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Control.FSharpEvent`1[System.String],FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Tainted`1[Microsoft.FSharp.Core.CompilerServices.ITypeProvider]]:this (FullOpts)
          15 ( 0.96% of base) : 8944.dasm - FSharp.Compiler.PatternMatchCompilation+CompileSimultaneousSet@1276-1:Invoke(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest],FSharp.Compiler.PatternMatchCompilation+EdgeDiscrim):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeCase],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest]]:this (FullOpts)
          14 ( 0.41% of base) : 10015.dasm - FSharp.Compiler.PostTypeCheckSemanticChecks+CheckModuleBinding@2131-2:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.Unit:this (FullOpts)
          13 ( 0.73% of base) : 6918.dasm - FSharp.Compiler.CodeAnalysis.BoundModel:.ctor(FSharp.Compiler.CompilerConfig+TcConfig,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CompilerImports+TcImports,ubyte,ubyte,ubyte,ubyte,Microsoft.FSharp.Control.FSharpEvent`1[System.String],Microsoft.FSharp.Control.FSharpEvent`1[System.String],FSharp.Compiler.CodeAnalysis.TcInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CodeAnalysis.IncrementalBuildSyntaxTree+SyntaxTree],Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.BuildGraph+GraphNode`1[FSharp.Compiler.CodeAnalysis.TcInfo],FSharp.Compiler.BuildGraph+GraphNode`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]]]):this (FullOpts)
          12 ( 0.40% of base) : 3339.dasm - FSharp.Compiler.ScriptClosure+ScriptPreprocessClosure+processClosureSource@447:Invoke(FSharp.Compiler.ScriptClosure+ScriptPreprocessClosure+ClosureSource):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.ScriptClosure+ScriptPreprocessClosure+ClosureFile]:this (FullOpts)
          10 ( 1.29% of base) : 10795.dasm - FSharp.Compiler.NameResolution+SelectMethInfosFromExtMembers@701:Invoke(Microsoft.FSharp.Core.Unit):System.Collections.Generic.IEnumerable`1[FSharp.Compiler.Infos+MethInfo]:this (FullOpts)
           9 ( 1.02% of base) : 10556.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores+TcTyconDefnCore_Phase1D_Phase1F_EstablishSuperTypesAndInterfaceTypes@3269-1:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.Unit:this (FullOpts)

Top method improvements (bytes):
        -144 (-1.55% of base) : 8286.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplication(ubyte,FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[System.Tuple`3[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CallerNamedArg`1[FSharp.Compiler.TypedTree+Expr]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
        -126 (-4.24% of base) : 10108.dasm - FSharp.Compiler.TypedTreeOps:AdjustPossibleSubsumptionExpr(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]]] (FullOpts)
        -108 (-6.25% of base) : 9407.dasm - FSharp.Compiler.CheckExpressions:TcTyparDecl(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.Syntax.SynTyparDecl):FSharp.Compiler.TypedTree+Typar (FullOpts)
         -99 (-2.94% of base) : 11558.dasm - FSharp.Compiler.CheckComputationExpressions:TcArrayOrListComputedExpression(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,ubyte,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
         -89 (-8.31% of base) : 8960.dasm - FSharp.Compiler.PatternMatchCompilation:BindSubExprOfInput(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.PatternMatchCompilation+PatternValBinding,FSharp.Compiler.Text.Range,FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTree+Expr] (FullOpts)
         -70 (-9.31% of base) : 11537.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores+TyparsAllHaveMeasureDeclEarlyCheck@2681-1:Invoke(FSharp.Compiler.Syntax.SynTyparDecl):ubyte:this (FullOpts)
         -52 (-9.37% of base) : 10726.dasm - FSharp.Compiler.CheckExpressions+TcAttributesCanFail@11291:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -50 (-1.48% of base) : 10648.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TcMutRecBindings_Phase2A_CreateRecursiveValuesAndCheckArgumentPatterns@1019-3:Invoke(Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2A,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]],System.Tuple`3[FSharp.Compiler.CheckBasics+UnscopedTyparEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]]:this (FullOpts)
         -50 (-9.58% of base) : 8609.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@10876-2:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -50 (-9.58% of base) : 10691.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@12022-3:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -50 (-9.58% of base) : 9239.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@4257:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -50 (-9.58% of base) : 10671.dasm - FSharp.Compiler.CheckIncrementalClasses+prelimValReprInfo@192-5:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -48 (-7.14% of base) : 8584.dasm - FSharp.Compiler.CheckExpressions+TcAttrs@10772:Invoke(int,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -48 (-15.05% of base) : 8934.dasm - FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
         -47 (-6.70% of base) : 10516.dasm - FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
         -45 (-1.11% of base) : 8339.dasm - FSharp.Compiler.MethodCalls+CalledMeth`1+argSetInfos@538-1[System.__Canon]:Invoke(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.MethodCalls+CalledArg]):System.Tuple`6[System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon,System.__Canon]:this (FullOpts)
         -41 (-5.76% of base) : 10767.dasm - FSharp.Compiler.CheckExpressions+loop@12231-67:Invoke(FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding):ubyte:this (FullOpts)
         -41 (-1.47% of base) : 7598.dasm - FSharp.Compiler.TypeHierarchy+loop@227-40[System.__Canon]:Invoke(int,FSharp.Compiler.TypedTree+TType,System.Tuple`3[System.__Canon,FSharp.Compiler.TypedTreeOps+TyconRefMultiMap`1[System.__Canon],System.__Canon]):System.Tuple`3[System.__Canon,FSharp.Compiler.TypedTreeOps+TyconRefMultiMap`1[System.__Canon],System.__Canon]:this (FullOpts)
         -41 (-1.93% of base) : 7446.dasm - FSharp.Compiler.TypeHierarchy+loop@227-40[ubyte]:Invoke(int,FSharp.Compiler.TypedTree+TType,System.Tuple`3[Microsoft.FSharp.Collections.FSharpSet`1[long],FSharp.Compiler.TypedTreeOps+TyconRefMultiMap`1[FSharp.Compiler.TypedTree+TType],ubyte]):System.Tuple`3[Microsoft.FSharp.Collections.FSharpSet`1[long],FSharp.Compiler.TypedTreeOps+TyconRefMultiMap`1[FSharp.Compiler.TypedTree+TType],ubyte]:this (FullOpts)
         -40 (-1.74% of base) : 8798.dasm - FSharp.Compiler.CheckExpressions:MakeApplicableExprWithFlex(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.TypedTree+Expr):FSharp.Compiler.CheckExpressions+ApplicableExpr (FullOpts)

Top method regressions (percentages):
          23 (13.14% of base) : 2162.dasm - FSharp.Compiler.DependencyManager.NativeDllResolveHandler:.ctor(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.DependencyManager.NativeResolutionProbe]):this (FullOpts)
          48 ( 3.58% of base) : 6950.dasm - FSharp.Compiler.CodeAnalysis.BoundModel+clo@334-584:Invoke(System.Tuple`5[FSharp.Compiler.CodeAnalysis.TcInfo,FSharp.Compiler.NameResolution+TcResultsSinkImpl,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile],System.String,System.Tuple`2[FSharp.Compiler.DiagnosticsLogger+PhasedDiagnostic,FSharp.Compiler.Diagnostics.FSharpDiagnosticSeverity][]]):Microsoft.FSharp.Control.FSharpAsync`1[FSharp.Compiler.CodeAnalysis.TcInfoExtras]:this (FullOpts)
           7 ( 3.23% of base) : 10582.dasm - FSharp.Compiler.SyntaxTreeOps:|TyparsAndConstraints|(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Syntax.SynTyparDecls]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint]] (FullOpts)
           5 ( 2.98% of base) : 8253.dasm - FSharp.Compiler.TypedTreeOps:destTopForallTy(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+ValReprInfo,FSharp.Compiler.TypedTree+TType):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.TypedTree+TType] (FullOpts)
           7 ( 2.94% of base) : 8578.dasm - FSharp.Compiler.SyntaxTreeOps:|ValTyparDecls|(FSharp.Compiler.Syntax.SynValTyparDecls):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTyparDecl],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynTypeConstraint],ubyte] (FullOpts)
          25 ( 2.30% of base) : 11019.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2C_FixupRecursiveReferences(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.Text.Range):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2C,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreInitializationGraphEliminationBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]] (FullOpts)
           9 ( 2.15% of base) : 10710.dasm - FSharp.Compiler.TypedTreeOps:tryAddExtensionAttributeIfNotAlreadyPresentForType(FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Attrib]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Attrib]],Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+Entity):FSharp.Compiler.TypedTree+Entity (FullOpts)
          53 ( 1.91% of base) : 12003.dasm - FSharp.Compiler.CodeAnalysis.IncrementalBuilderHelpers+FinalizeTypeCheckTask@762-13:Invoke(Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CheckedImplFile][]):Microsoft.FSharp.Control.FSharpAsync`1[System.Tuple`4[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef,FSharp.Compiler.CompilerConfig+ProjectAssemblyDataResult,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+CheckedImplFile]],FSharp.Compiler.CodeAnalysis.BoundModel]]:this (FullOpts)
           9 ( 1.82% of base) : 6136.dasm - FSharp.Compiler.TypedTreeOps:updateSeqTypeIsPrefix(FSharp.Compiler.TypedTree+Entity) (FullOpts)
          20 ( 1.62% of base) : 10743.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2A,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingsPhase2B,Microsoft.FSharp.Collections.FSharpList`1[int],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
           4 ( 1.59% of base) : 6936.dasm - FSharp.Compiler.CodeAnalysis.IncrementalBuilder+getFSharpSource@1593:Invoke(System.String):FSharp.Compiler.CodeAnalysis.FSharpSource:this (FullOpts)
           8 ( 1.48% of base) : 9864.dasm - FSharp.Compiler.TypedTreeOps:tryAddExtensionAttributeIfNotAlreadyPresentForModule(FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Attrib]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.TypedTree+Entity):FSharp.Compiler.TypedTree+Entity (FullOpts)
          10 ( 1.29% of base) : 10795.dasm - FSharp.Compiler.NameResolution+SelectMethInfosFromExtMembers@701:Invoke(Microsoft.FSharp.Core.Unit):System.Collections.Generic.IEnumerable`1[FSharp.Compiler.Infos+MethInfo]:this (FullOpts)
           5 ( 1.03% of base) : 6252.dasm - FSharp.Compiler.CompilerImports+TcImports:ccuHasType(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Collections.FSharpList`1[System.String],System.String,ubyte):ubyte (FullOpts)
           9 ( 1.02% of base) : 10556.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores+TcTyconDefnCore_Phase1D_Phase1F_EstablishSuperTypesAndInterfaceTypes@3269-1:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Core.Unit:this (FullOpts)
          15 ( 0.96% of base) : 8944.dasm - FSharp.Compiler.PatternMatchCompilation+CompileSimultaneousSet@1276-1:Invoke(Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest],FSharp.Compiler.PatternMatchCompilation+EdgeDiscrim):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeCase],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+DecisionTreeTest]]:this (FullOpts)
          35 ( 0.92% of base) : 8797.dasm - FSharp.Compiler.CheckExpressions:TcValueItemThen(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.TypedTree+ValRef,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.NameResolution+AfterResolution,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
          40 ( 0.86% of base) : 8472.dasm - FSharp.Compiler.CheckExpressions:TcVal(ubyte,FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.TypedTree+ValRef,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.CheckBasics+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TyparKind],System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckBasics+UnscopedTyparEnv]]]]],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.NameResolution+AfterResolution],FSharp.Compiler.Text.Range):System.Tuple`6[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.TypedTree+Expr,ubyte,FSharp.Compiler.TypedTree+TType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
           6 ( 0.83% of base) : 11218.dasm - FSharp.Compiler.TypedTreeOps:remapLambaExpr(FSharp.Compiler.TypedTreeOps+RemapContext,FSharp.Compiler.TypedTreeOps+ValCopyFlag,FSharp.Compiler.TypedTreeOps+Remap,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Val],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Val],FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType):FSharp.Compiler.TypedTree+Expr (FullOpts)
          42 ( 0.81% of base) : 10643.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecDefns_Phase2_Bindings(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType]]],FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2InfoForTycon,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+MutRecShape`3[System.Tuple`2[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Entity],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecDefnsPhase2DataForModule,FSharp.Compiler.CheckBasics+TcEnv]]],FSharp.Compiler.CheckBasics+TcEnv] (FullOpts)

Top method improvements (percentages):
         -48 (-15.05% of base) : 8934.dasm - FSharp.Compiler.PatternMatchCompilation:GetSubExprOfInput[System.__Canon](FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Typar,FSharp.Compiler.TypedTree+TType]],FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):FSharp.Compiler.TypedTree+Expr (FullOpts)
         -50 (-9.58% of base) : 8609.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@10876-2:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -50 (-9.58% of base) : 10691.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@12022-3:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -50 (-9.58% of base) : 9239.dasm - FSharp.Compiler.CheckExpressions+prelimValReprInfo@4257:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -50 (-9.58% of base) : 10671.dasm - FSharp.Compiler.CheckIncrementalClasses+prelimValReprInfo@192-5:Invoke(int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -52 (-9.37% of base) : 10726.dasm - FSharp.Compiler.CheckExpressions+TcAttributesCanFail@11291:Invoke(Microsoft.FSharp.Core.Unit):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -70 (-9.31% of base) : 11537.dasm - FSharp.Compiler.CheckDeclarations+EstablishTypeDefinitionCores+TyparsAllHaveMeasureDeclEarlyCheck@2681-1:Invoke(FSharp.Compiler.Syntax.SynTyparDecl):ubyte:this (FullOpts)
         -89 (-8.31% of base) : 8960.dasm - FSharp.Compiler.PatternMatchCompilation:BindSubExprOfInput(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.Import+ImportMap,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.PatternMatchCompilation+PatternValBinding,FSharp.Compiler.Text.Range,FSharp.Compiler.PatternMatchCompilation+SubExprOfInput):System.Tuple`2[FSharp.Compiler.TypedTree+Val,FSharp.Compiler.TypedTree+Expr] (FullOpts)
         -48 (-7.14% of base) : 8584.dasm - FSharp.Compiler.CheckExpressions+TcAttrs@10772:Invoke(int,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]:this (FullOpts)
         -47 (-6.70% of base) : 10516.dasm - FSharp.Compiler.CheckExpressions:TcAttributesCanFail(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib]]] (FullOpts)
        -108 (-6.25% of base) : 9407.dasm - FSharp.Compiler.CheckExpressions:TcTyparDecl(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.Syntax.SynTyparDecl):FSharp.Compiler.TypedTree+Typar (FullOpts)
         -41 (-5.76% of base) : 10767.dasm - FSharp.Compiler.CheckExpressions+loop@12231-67:Invoke(FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding):ubyte:this (FullOpts)
         -21 (-5.20% of base) : 11805.dasm - FSharp.Compiler.NicePrint+PrintTypes:layoutTyparRef(FSharp.Compiler.TypedTreeOps+DisplayEnv,FSharp.Compiler.TypedTree+Typar):FSharp.Compiler.Text.Layout (FullOpts)
         -35 (-4.97% of base) : 9113.dasm - FSharp.Compiler.CheckExpressions:UpdateAccModuleOrNamespaceType(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[ubyte,Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.TypedTree+ModuleOrNamespaceType]]) (FullOpts)
        -126 (-4.24% of base) : 10108.dasm - FSharp.Compiler.TypedTreeOps:AdjustPossibleSubsumptionExpr(FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]):Microsoft.FSharp.Core.FSharpOption`1[System.Tuple`2[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr]]] (FullOpts)
         -17 (-3.22% of base) : 10664.dasm - FSharp.Compiler.CheckExpressions:TcAttributesMaybeFailEx(ubyte,FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,int,int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynAttribute]):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Attrib],ubyte] (FullOpts)
         -12 (-3.17% of base) : 2141.dasm - FSharp.Compiler.Driver:getParallelReferenceResolutionFromEnvironment():Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.CompilerConfig+ParallelReferenceResolution] (FullOpts)
         -99 (-2.94% of base) : 11558.dasm - FSharp.Compiler.CheckComputationExpressions:TcArrayOrListComputedExpression(FSharp.Compiler.CheckBasics+TcFileState,FSharp.Compiler.CheckBasics+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,FSharp.Compiler.CheckBasics+UnscopedTyparEnv,ubyte,FSharp.Compiler.Syntax.SynExpr,FSharp.Compiler.Text.Range):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckBasics+UnscopedTyparEnv] (FullOpts)
         -20 (-2.50% of base) : 11397.dasm - FSharp.Compiler.TypedTree+ModuleOrNamespaceType:get_TypesByDemangledNameAndArity():Microsoft.FSharp.Collections.FSharpMap`2[FSharp.Compiler.Syntax.PrettyNaming+NameArityPair,FSharp.Compiler.TypedTree+Entity]:this (FullOpts)
         -12 (-2.40% of base) : 10901.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:readBlobHeapAsPropertySigUncached(Microsoft.FSharp.Core.FSharpRef`1[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader]],FSharp.Compiler.AbstractIL.ILBinaryReader+BlobAsPropSigIdx):System.Tuple`3[FSharp.Compiler.AbstractIL.IL+ILThisConvention,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]] (FullOpts)


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment