Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JIT: slightly more aggressive tail duplication #61179

Merged
merged 3 commits into from
Nov 11, 2021

Conversation

AndyAyersMS
Copy link
Member

Generalize tail duplication to catch patterns like the one in #37904 where
a trinary compare feeds a binary compare.

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Nov 3, 2021
@ghost
Copy link

ghost commented Nov 3, 2021

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

Issue Details

Generalize tail duplication to catch patterns like the one in #37904 where
a trinary compare feeds a binary compare.

Author: AndyAyersMS
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@AndyAyersMS
Copy link
Member Author

cc @dotnet/jit-contrib

Not sure this is in its final form yet; thinking about ways to generalize the pattern match. Would perhaps be a nice test case for a high-level declarative syntax driven match. Also might want to experiment with making this even more aggressive.

On the example from #37904 this now gets us the same codegen for Compare1 and Compare2. For example:

;; before

; Assembly listing for method C`1:Compare1(Span`1,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
;  V00 arg0         [V00,T00] (  4,  8   )   byref  ->  rcx         ld-addr-op single-def
;  V01 arg1         [V01,T01] (  4,  3.50)     int  ->  rdx         single-def
;  V02 OutArgs      [V02    ] (  1,  1   )  lclBlk (32) [rsp+00H]   "OutgoingArgSpace"
;* V03 tmp1         [V03,T04] (  0,  0   )    bool  ->  zero-ref    "Inline return value spill temp"
;  V04 tmp2         [V04,T02] (  3,  5   )     int  ->  rax         ld-addr-op "Inlining Arg"
;  V05 tmp3         [V05,T03] (  4,  2.50)     int  ->  rcx         "Inline return value spill temp"
;* V06 tmp4         [V06    ] (  0,  0   )   byref  ->  zero-ref    V08._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)"
;* V07 tmp5         [V07    ] (  0,  0   )     int  ->  zero-ref    V08._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
;* V08 tmp6         [V08    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref"
;
; Lcl frame size = 40

G_M38094_IG01:
       sub      rsp, 40
						;; bbWeight=1    PerfScore 0.25
G_M38094_IG02:
       cmp      dword ptr [rcx+8], 0
       jbe      SHORT G_M38094_IG11
       mov      rax, bword ptr [rcx]
       mov      eax, dword ptr [rax]
       cmp      eax, edx
       jge      SHORT G_M38094_IG04
						;; bbWeight=1    PerfScore 9.25
G_M38094_IG03:
       mov      ecx, -1
       jmp      SHORT G_M38094_IG06
						;; bbWeight=0.50 PerfScore 1.12
G_M38094_IG04:
       cmp      eax, edx
       jle      SHORT G_M38094_IG05
       mov      ecx, 1
       jmp      SHORT G_M38094_IG06
						;; bbWeight=0.50 PerfScore 1.75
G_M38094_IG05:
       xor      ecx, ecx
						;; bbWeight=0.50 PerfScore 0.12
G_M38094_IG06:
       test     ecx, ecx
       jl       SHORT G_M38094_IG09
						;; bbWeight=1    PerfScore 1.25
G_M38094_IG07:
       xor      eax, eax
						;; bbWeight=0.50 PerfScore 0.12
G_M38094_IG08:
       add      rsp, 40
       ret      
						;; bbWeight=0.50 PerfScore 0.62
G_M38094_IG09:
       mov      eax, 1
						;; bbWeight=0.50 PerfScore 0.12
G_M38094_IG10:
       add      rsp, 40
       ret      
						;; bbWeight=0.50 PerfScore 0.62
G_M38094_IG11:
       call     CORINFO_HELP_RNGCHKFAIL
       int3     
						;; bbWeight=0    PerfScore 0.00

;; after

; Assembly listing for method C`1:Compare1(Span`1,int):int
; Emitting BLENDED_CODE for X64 CPU with AVX - Windows
; optimized code
; rsp based frame
; partially interruptible
; No PGO data
; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
;  V00 arg0         [V00,T00] (  4,  8   )   byref  ->  rcx         ld-addr-op single-def
;  V01 arg1         [V01,T01] (  3,  3   )     int  ->  rdx         single-def
;  V02 OutArgs      [V02    ] (  1,  1   )  lclBlk (32) [rsp+00H]   "OutgoingArgSpace"
;* V03 tmp1         [V03,T03] (  0,  0   )    bool  ->  zero-ref    "Inline return value spill temp"
;  V04 tmp2         [V04,T02] (  2,  4   )     int  ->  rax         ld-addr-op "Inlining Arg"
;* V05 tmp3         [V05,T04] (  0,  0   )     int  ->  zero-ref    "Inline return value spill temp"
;* V06 tmp4         [V06    ] (  0,  0   )   byref  ->  zero-ref    V08._pointer(offs=0x00) P-INDEP "field V00._pointer (fldOffset=0x0)"
;* V07 tmp5         [V07    ] (  0,  0   )     int  ->  zero-ref    V08._length(offs=0x08) P-INDEP "field V00._length (fldOffset=0x8)"
;* V08 tmp6         [V08    ] (  0,  0   )  struct (16) zero-ref    "Promoted implicit byref"
;
; Lcl frame size = 40

G_M38094_IG01:
       sub      rsp, 40
						;; bbWeight=1    PerfScore 0.25
G_M38094_IG02:
       cmp      dword ptr [rcx+8], 0
       jbe      SHORT G_M38094_IG07
       mov      rax, bword ptr [rcx]
       mov      eax, dword ptr [rax]
       cmp      eax, edx
       jl       SHORT G_M38094_IG05
						;; bbWeight=1    PerfScore 9.25
G_M38094_IG03:
       xor      eax, eax
						;; bbWeight=0.50 PerfScore 0.12
G_M38094_IG04:
       add      rsp, 40
       ret      
						;; bbWeight=0.50 PerfScore 0.62
G_M38094_IG05:
       mov      eax, 1
						;; bbWeight=0.50 PerfScore 0.12
G_M38094_IG06:
       add      rsp, 40
       ret      
						;; bbWeight=0.50 PerfScore 0.62
G_M38094_IG07:
       call     CORINFO_HELP_RNGCHKFAIL
       int3     
						;; bbWeight=0    PerfScore 0.00

SPMI on (on top of #61023) shows modest number of hits..

aspnet.run.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13670369 (overridden on cmd)
Total bytes of diff: 13670229 (overridden on cmd)
Total bytes of delta: -140 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file improvements (bytes):
         -20 : 28896.dasm (-5.25% of base)
         -20 : 14131.dasm (-5.14% of base)
         -20 : 4959.dasm (-5.14% of base)
         -18 : 38900.dasm (-3.38% of base)
         -16 : 14124.dasm (-1.06% of base)
         -16 : 4947.dasm (-1.06% of base)
         -12 : 28894.dasm (-0.81% of base)
          -8 : 18570.dasm (-0.87% of base)
          -8 : 24623.dasm (-0.86% of base)
          -2 : 6134.dasm (-0.81% of base)

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

Top method improvements (bytes):
         -20 (-5.25% of base) : 28896.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -20 (-5.14% of base) : 14131.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -20 (-5.14% of base) : 4959.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -18 (-3.38% of base) : 38900.dasm - ExpressionUtils:RequiresCanRead(Expression,String,int)
         -16 (-1.06% of base) : 14124.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
         -16 (-1.06% of base) : 4947.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
         -12 (-0.81% of base) : 28894.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
          -8 (-0.87% of base) : 18570.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
          -8 (-0.86% of base) : 24623.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
          -2 (-0.81% of base) : 6134.dasm - SocketAsyncEventArgs:StartOperationAccept():this

Top method improvements (percentages):
         -20 (-5.25% of base) : 28896.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -20 (-5.14% of base) : 14131.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -20 (-5.14% of base) : 4959.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -18 (-3.38% of base) : 38900.dasm - ExpressionUtils:RequiresCanRead(Expression,String,int)
         -16 (-1.06% of base) : 14124.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
         -16 (-1.06% of base) : 4947.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
          -8 (-0.87% of base) : 18570.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
          -8 (-0.86% of base) : 24623.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
         -12 (-0.81% of base) : 28894.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
          -2 (-0.81% of base) : 6134.dasm - SocketAsyncEventArgs:StartOperationAccept():this

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


benchmarks.run.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7151127 (overridden on cmd)
Total bytes of diff: 7150968 (overridden on cmd)
Total bytes of delta: -159 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
           2 : 11056.dasm (0.43% of base)

Top file improvements (bytes):
         -18 : 6098.dasm (-1.36% of base)
         -16 : 18739.dasm (-0.87% of base)
         -15 : 12882.dasm (-2.74% of base)
         -14 : 18084.dasm (-1.82% of base)
         -13 : 12880.dasm (-1.06% of base)
         -13 : 9473.dasm (-2.11% of base)
         -13 : 21133.dasm (-3.01% of base)
         -13 : 12412.dasm (-0.89% of base)
         -13 : 6816.dasm (-3.10% of base)
          -8 : 18760.dasm (-4.21% of base)
          -7 : 13506.dasm (-8.86% of base)
          -5 : 13383.dasm (-0.94% of base)
          -4 : 1617.dasm (-0.13% of base)
          -3 : 18343.dasm (-0.08% of base)
          -2 : 4913.dasm (-0.80% of base)
          -2 : 13451.dasm (-0.50% of base)
          -2 : 18655.dasm (-0.21% of base)

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

Top method regressions (bytes):
           2 ( 0.43% of base) : 11056.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:ExecutionContextCallback(System.Object)

Top method improvements (bytes):
         -18 (-1.36% of base) : 6098.dasm - JetStream.Statistics:findOptimalSegmentationInternal(System.Single[][],System.Int32[][],System.Double[],JetStream.SampleVarianceUpperTriangularMatrix,int)
         -16 (-0.87% of base) : 18739.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:Scan(byref):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.PreciseAbstractFlowPass`1+PendingBranch[[Microsoft.CodeAnalysis.CSharp.DataFlowPass+LocalState, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -15 (-2.74% of base) : 12882.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewList(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,byref):System.Collections.IList:this
         -14 (-1.82% of base) : 18084.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,bool,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Reflection.Metadata.ParameterHandle,int,byref):this
         -13 (-3.10% of base) : 6816.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:InitializeContract(Newtonsoft.Json.Serialization.JsonContract):this
         -13 (-0.89% of base) : 12412.dasm - Newtonsoft.Json.Serialization.JsonDictionaryContract:.ctor(System.Type):this
         -13 (-1.06% of base) : 12880.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateList(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object,System.String):System.Object:this
         -13 (-3.01% of base) : 21133.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewDictionary(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonDictionaryContract,byref):System.Collections.IDictionary:this
         -13 (-2.11% of base) : 9473.dasm - System.Net.Http.HttpWindowsProxy:TryCreate(byref):bool
          -8 (-4.21% of base) : 18760.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:IntersectWith(byref,byref):bool:this
          -7 (-8.86% of base) : 13506.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
          -5 (-0.94% of base) : 13383.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslClientAuthenticationOptions,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertSelectionCallback):this
          -4 (-0.13% of base) : 1617.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this
          -3 (-0.08% of base) : 18343.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool):Microsoft.CodeAnalysis.CSharp.Symbol:this
          -2 (-0.21% of base) : 18655.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitBuiltInConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this
          -2 (-0.50% of base) : 13451.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslAuthenticationOptions):this
          -2 (-0.80% of base) : 4913.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this

Top method regressions (percentages):
           2 ( 0.43% of base) : 11056.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:ExecutionContextCallback(System.Object)

Top method improvements (percentages):
          -7 (-8.86% of base) : 13506.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
          -8 (-4.21% of base) : 18760.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:IntersectWith(byref,byref):bool:this
         -13 (-3.10% of base) : 6816.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:InitializeContract(Newtonsoft.Json.Serialization.JsonContract):this
         -13 (-3.01% of base) : 21133.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewDictionary(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonDictionaryContract,byref):System.Collections.IDictionary:this
         -15 (-2.74% of base) : 12882.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewList(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,byref):System.Collections.IList:this
         -13 (-2.11% of base) : 9473.dasm - System.Net.Http.HttpWindowsProxy:TryCreate(byref):bool
         -14 (-1.82% of base) : 18084.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,bool,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Reflection.Metadata.ParameterHandle,int,byref):this
         -18 (-1.36% of base) : 6098.dasm - JetStream.Statistics:findOptimalSegmentationInternal(System.Single[][],System.Int32[][],System.Double[],JetStream.SampleVarianceUpperTriangularMatrix,int)
         -13 (-1.06% of base) : 12880.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateList(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object,System.String):System.Object:this
          -5 (-0.94% of base) : 13383.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslClientAuthenticationOptions,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertSelectionCallback):this
         -13 (-0.89% of base) : 12412.dasm - Newtonsoft.Json.Serialization.JsonDictionaryContract:.ctor(System.Type):this
         -16 (-0.87% of base) : 18739.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:Scan(byref):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.PreciseAbstractFlowPass`1+PendingBranch[[Microsoft.CodeAnalysis.CSharp.DataFlowPass+LocalState, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
          -2 (-0.80% of base) : 4913.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this
          -2 (-0.50% of base) : 13451.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslAuthenticationOptions):this
          -2 (-0.21% of base) : 18655.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitBuiltInConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this
          -4 (-0.13% of base) : 1617.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this
          -3 (-0.08% of base) : 18343.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool):Microsoft.CodeAnalysis.CSharp.Symbol:this

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


coreclr_tests.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 124163274 (overridden on cmd)
Total bytes of diff: 124162492 (overridden on cmd)
Total bytes of delta: -782 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
           3 : 88633.dasm (4.05% of base)

Top file improvements (bytes):
        -222 : 249541.dasm (-14.61% of base)
         -77 : 83853.dasm (-32.08% of base)
         -51 : 88738.dasm (-61.45% of base)
         -49 : 250030.dasm (-4.24% of base)
         -30 : 84713.dasm (-14.42% of base)
         -30 : 248103.dasm (-10.60% of base)
         -30 : 85910.dasm (-10.27% of base)
         -30 : 248135.dasm (-10.27% of base)
         -30 : 237875.dasm (-10.27% of base)
         -30 : 237982.dasm (-10.60% of base)
         -15 : 88223.dasm (-5.79% of base)
         -15 : 88219.dasm (-7.50% of base)
         -15 : 88214.dasm (-6.98% of base)
         -13 : 209718.dasm (-1.98% of base)
         -13 : 209750.dasm (-0.23% of base)
         -12 : 209740.dasm (-0.70% of base)
         -12 : 209745.dasm (-2.82% of base)
         -11 : 84187.dasm (-2.72% of base)
          -8 : 88221.dasm (-3.65% of base)
          -4 : 102780.dasm (-0.61% of base)

44 total files with Code Size differences (43 improved, 1 regressed), 4 unchanged.

Top method regressions (bytes):
           3 ( 4.05% of base) : 88633.dasm - foo:Main():int

Top method improvements (bytes):
        -222 (-14.61% of base) : 249541.dasm - HelloWorld:Main(System.String[]):int
         -77 (-32.08% of base) : 83853.dasm - GenericArrayOverride.Program:Main():int
         -51 (-61.45% of base) : 88738.dasm - Test:Main():int
         -49 (-4.24% of base) : 250030.dasm - Threading.Tests.OSThreadId:Main(System.String[]):int
         -30 (-14.42% of base) : 84713.dasm - P:Main():int
         -30 (-10.60% of base) : 248103.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.27% of base) : 85910.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.27% of base) : 248135.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.27% of base) : 237875.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.60% of base) : 237982.dasm - Test.Assert:AreEqual(System.String,System.String)
         -15 (-7.50% of base) : 88219.dasm - Test:Main():int
         -15 (-6.98% of base) : 88214.dasm - Test:Main():int
         -15 (-5.79% of base) : 88223.dasm - Test:Main(System.String[]):int
         -13 (-0.23% of base) : 209750.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
         -13 (-1.98% of base) : 209718.dasm - Internal.IL.ILImporter:ImportNewArray(int):this
         -12 (-2.82% of base) : 209745.dasm - Internal.IL.ILImporter:ImportAddressOfVar(int,bool):this
         -12 (-0.70% of base) : 209740.dasm - Internal.IL.ILImporter:StartImportingBasicBlock(BasicBlock):this
         -11 (-2.72% of base) : 84187.dasm - Test:Main():int
          -8 (-3.65% of base) : 88221.dasm - Test:Main():int
          -4 (-0.61% of base) : 102780.dasm - Helper:Compare(MixedAllStruct,MixedAllStruct):bool

Top method regressions (percentages):
           3 ( 4.05% of base) : 88633.dasm - foo:Main():int

Top method improvements (percentages):
         -51 (-61.45% of base) : 88738.dasm - Test:Main():int
         -77 (-32.08% of base) : 83853.dasm - GenericArrayOverride.Program:Main():int
        -222 (-14.61% of base) : 249541.dasm - HelloWorld:Main(System.String[]):int
         -30 (-14.42% of base) : 84713.dasm - P:Main():int
         -30 (-10.60% of base) : 248103.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.60% of base) : 237982.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.27% of base) : 85910.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.27% of base) : 248135.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.27% of base) : 237875.dasm - Test.Assert:AreEqual(System.String,System.String)
         -15 (-7.50% of base) : 88219.dasm - Test:Main():int
         -15 (-6.98% of base) : 88214.dasm - Test:Main():int
         -15 (-5.79% of base) : 88223.dasm - Test:Main(System.String[]):int
         -49 (-4.24% of base) : 250030.dasm - Threading.Tests.OSThreadId:Main(System.String[]):int
          -8 (-3.65% of base) : 88221.dasm - Test:Main():int
         -12 (-2.82% of base) : 209745.dasm - Internal.IL.ILImporter:ImportAddressOfVar(int,bool):this
         -11 (-2.72% of base) : 84187.dasm - Test:Main():int
         -13 (-1.98% of base) : 209718.dasm - Internal.IL.ILImporter:ImportNewArray(int):this
          -2 (-1.01% of base) : 86708.dasm - Test:Main():int
         -12 (-0.70% of base) : 209740.dasm - Internal.IL.ILImporter:StartImportingBasicBlock(BasicBlock):this
          -2 (-0.64% of base) : 209712.dasm - Internal.IL.ILImporter:ImportLoadString(int):this

44 total methods with Code Size differences (43 improved, 1 regressed), 4 unchanged.


libraries.crossgen2.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34282827 (overridden on cmd)
Total bytes of diff: 34282877 (overridden on cmd)
Total bytes of delta: 50 (0.00 % of base)
    diff is a regression.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          78 : 111099.dasm (5.21% of base)
          42 : 91497.dasm (1.72% of base)
          12 : 204820.dasm (3.73% of base)
           3 : 178397.dasm (0.23% of base)
           2 : 84264.dasm (0.70% of base)
           2 : 156447.dasm (0.63% of base)
           2 : 193575.dasm (0.50% of base)

Top file improvements (bytes):
         -14 : 4527.dasm (-0.90% of base)
         -14 : 99244.dasm (-8.97% of base)
         -12 : 98754.dasm (-7.79% of base)
          -7 : 193684.dasm (-5.74% of base)
          -7 : 160353.dasm (-4.70% of base)
          -7 : 160352.dasm (-4.67% of base)
          -7 : 193613.dasm (-5.38% of base)
          -6 : 82927.dasm (-3.73% of base)
          -5 : 193576.dasm (-1.00% of base)
          -4 : 160585.dasm (-0.58% of base)
          -4 : 66529.dasm (-0.86% of base)
          -4 : 98336.dasm (-0.20% of base)

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

Top method regressions (bytes):
          78 ( 5.21% of base) : 111099.dasm - System.Reflection.AssemblyName:EscapeString(System.String,int,int,System.Char[],byref,bool,ushort,ushort,ushort):System.Char[]
          42 ( 1.72% of base) : 91497.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
          12 ( 3.73% of base) : 204820.dasm - Microsoft.DiaSymReader.SymUnmanagedWriterImpl:DefineLocalStringConstant(Microsoft.DiaSymReader.ISymUnmanagedWriter5,System.String,System.String,int):bool:this
           3 ( 0.23% of base) : 178397.dasm - System.Numerics.BigNumber:HexNumberToBigInteger(byref,byref):bool
           2 ( 0.70% of base) : 84264.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsFirstStatementOnLine(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):bool:this
           2 ( 0.50% of base) : 193575.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslAuthenticationOptions):this
           2 ( 0.63% of base) : 156447.dasm - TargetSymbolResolver:ParseParameter():System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver+ParameterInfo]:this

Top method improvements (bytes):
         -14 (-0.90% of base) : 4527.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:MergePartialMethods(System.Collections.Generic.Dictionary`2[System.String, System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]],Microsoft.CodeAnalysis.DiagnosticBag)
         -14 (-8.97% of base) : 99244.dasm - System.Configuration.BaseConfigurationRecord:get_IsEmpty():bool:this
         -12 (-7.79% of base) : 98754.dasm - System.Configuration.ConfigurationSchemaErrors:ThrowIfErrors(bool):this
          -7 (-4.70% of base) : 160353.dasm - Microsoft.CodeAnalysis.SyntaxList`1:LastIndexOf(System.__Canon):int:this
          -7 (-4.67% of base) : 160352.dasm - Microsoft.CodeAnalysis.SyntaxList`1:LastIndexOf(System.Func`2[System.__Canon, System.Boolean]):int:this
          -7 (-5.74% of base) : 193684.dasm - System.Net.Security.SecureChannel:GetRequestCertificateAuthorities():System.String[]:this
          -7 (-5.38% of base) : 193613.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
          -6 (-3.73% of base) : 82927.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxNodeExtensions:GetIndexAfterLastSkippedToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):int
          -5 (-1.00% of base) : 193576.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslClientAuthenticationOptions,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertSelectionCallback):this
          -4 (-0.58% of base) : 160585.dasm - Microsoft.CodeAnalysis.AbstractSyntaxNavigator:GetLastToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken, System.Boolean],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia, System.Boolean]):Microsoft.CodeAnalysis.SyntaxToken:this
          -4 (-0.20% of base) : 98336.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDeclarationUpdates(int):System.Configuration.SectionUpdates:this
          -4 (-0.86% of base) : 66529.dasm - System.Speech.Internal.SrgsCompiler.Arc:Serialize(System.Speech.Internal.StreamMarshaler,bool,int):float:this

Top method regressions (percentages):
          78 ( 5.21% of base) : 111099.dasm - System.Reflection.AssemblyName:EscapeString(System.String,int,int,System.Char[],byref,bool,ushort,ushort,ushort):System.Char[]
          12 ( 3.73% of base) : 204820.dasm - Microsoft.DiaSymReader.SymUnmanagedWriterImpl:DefineLocalStringConstant(Microsoft.DiaSymReader.ISymUnmanagedWriter5,System.String,System.String,int):bool:this
          42 ( 1.72% of base) : 91497.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
           2 ( 0.70% of base) : 84264.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsFirstStatementOnLine(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):bool:this
           2 ( 0.63% of base) : 156447.dasm - TargetSymbolResolver:ParseParameter():System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver+ParameterInfo]:this
           2 ( 0.50% of base) : 193575.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslAuthenticationOptions):this
           3 ( 0.23% of base) : 178397.dasm - System.Numerics.BigNumber:HexNumberToBigInteger(byref,byref):bool

Top method improvements (percentages):
         -14 (-8.97% of base) : 99244.dasm - System.Configuration.BaseConfigurationRecord:get_IsEmpty():bool:this
         -12 (-7.79% of base) : 98754.dasm - System.Configuration.ConfigurationSchemaErrors:ThrowIfErrors(bool):this
          -7 (-5.74% of base) : 193684.dasm - System.Net.Security.SecureChannel:GetRequestCertificateAuthorities():System.String[]:this
          -7 (-5.38% of base) : 193613.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
          -7 (-4.70% of base) : 160353.dasm - Microsoft.CodeAnalysis.SyntaxList`1:LastIndexOf(System.__Canon):int:this
          -7 (-4.67% of base) : 160352.dasm - Microsoft.CodeAnalysis.SyntaxList`1:LastIndexOf(System.Func`2[System.__Canon, System.Boolean]):int:this
          -6 (-3.73% of base) : 82927.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxNodeExtensions:GetIndexAfterLastSkippedToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):int
          -5 (-1.00% of base) : 193576.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslClientAuthenticationOptions,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertSelectionCallback):this
         -14 (-0.90% of base) : 4527.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:MergePartialMethods(System.Collections.Generic.Dictionary`2[System.String, System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]],Microsoft.CodeAnalysis.DiagnosticBag)
          -4 (-0.86% of base) : 66529.dasm - System.Speech.Internal.SrgsCompiler.Arc:Serialize(System.Speech.Internal.StreamMarshaler,bool,int):float:this
          -4 (-0.58% of base) : 160585.dasm - Microsoft.CodeAnalysis.AbstractSyntaxNavigator:GetLastToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken, System.Boolean],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia, System.Boolean]):Microsoft.CodeAnalysis.SyntaxToken:this
          -4 (-0.20% of base) : 98336.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDeclarationUpdates(int):System.Configuration.SectionUpdates:this

19 total methods with Code Size differences (12 improved, 7 regressed), 7 unchanged.


libraries.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45344539 (overridden on cmd)
Total bytes of diff: 45343678 (overridden on cmd)
Total bytes of delta: -861 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          22 : 216386.dasm (1.55% of base)
          22 : 216385.dasm (1.61% of base)
          21 : 50065.dasm (0.82% of base)
          19 : 216387.dasm (1.46% of base)
          13 : 119531.dasm (0.35% of base)
          12 : 166490.dasm (4.18% of base)
           3 : 150605.dasm (0.31% of base)
           3 : 216505.dasm (0.19% of base)
           3 : 136047.dasm (0.24% of base)
           2 : 83558.dasm (0.65% of base)
           1 : 136743.dasm (0.16% of base)

Top file improvements (bytes):
         -36 : 149284.dasm (-2.65% of base)
         -26 : 28641.dasm (-2.01% of base)
         -24 : 132106.dasm (-2.36% of base)
         -24 : 132104.dasm (-2.36% of base)
         -23 : 160688.dasm (-9.35% of base)
         -22 : 43474.dasm (-1.11% of base)
         -20 : 105502.dasm (-1.21% of base)
         -20 : 112235.dasm (-1.59% of base)
         -20 : 105639.dasm (-3.48% of base)
         -20 : 111708.dasm (-1.57% of base)
         -19 : 105953.dasm (-1.54% of base)
         -19 : 49656.dasm (-1.92% of base)
         -18 : 223541.dasm (-1.91% of base)
         -18 : 35751.dasm (-2.03% of base)
         -17 : 110954.dasm (-2.38% of base)
         -17 : 219907.dasm (-2.02% of base)
         -16 : 28646.dasm (-0.94% of base)
         -16 : 165921.dasm (-1.64% of base)
         -16 : 104181.dasm (-1.33% of base)
         -15 : 22221.dasm (-2.41% of base)

110 total files with Code Size differences (99 improved, 11 regressed), 4 unchanged.

Top method regressions (bytes):
          22 ( 1.61% of base) : 216385.dasm - System.Numerics.BigInteger:op_BitwiseAnd(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          22 ( 1.55% of base) : 216386.dasm - System.Numerics.BigInteger:op_BitwiseOr(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          21 ( 0.82% of base) : 50065.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
          19 ( 1.46% of base) : 216387.dasm - System.Numerics.BigInteger:op_ExclusiveOr(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          13 ( 0.35% of base) : 119531.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileTryExpression(System.Linq.Expressions.Expression):this
          12 ( 4.18% of base) : 166490.dasm - Microsoft.DiaSymReader.SymUnmanagedWriterImpl:DefineLocalStringConstant(Microsoft.DiaSymReader.ISymUnmanagedWriter5,System.String,System.String,int):bool:this
           3 ( 0.19% of base) : 216505.dasm - System.Numerics.BigNumber:HexNumberToBigInteger(byref,byref):bool
           3 ( 0.31% of base) : 150605.dasm - System.Text.SBCSCodePageEncoding:GetChars(long,int,long,int,System.Text.DecoderNLS):int:this
           3 ( 0.24% of base) : 136047.dasm - System.Xml.Schema.Compiler:IsSequenceFromChoice(System.Xml.Schema.XmlSchemaSequence,System.Xml.Schema.XmlSchemaChoice):bool:this
           2 ( 0.65% of base) : 83558.dasm - TargetSymbolResolver:ParseParameter():System.Nullable`1[ParameterInfo]:this
           1 ( 0.16% of base) : 136743.dasm - System.Xml.Schema.SchemaCollectionCompiler:IsSequenceFromChoice(System.Xml.Schema.XmlSchemaSequence,System.Xml.Schema.XmlSchemaChoice):bool:this

Top method improvements (bytes):
         -36 (-2.65% of base) : 149284.dasm - System.Speech.Internal.Synthesis.SsmlParser:TryParseNumber(System.String,byref):bool
         -26 (-2.01% of base) : 28641.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:VisitLambda(Microsoft.CodeAnalysis.CSharp.BoundLambda):Microsoft.CodeAnalysis.CSharp.BoundNode:this
         -24 (-2.36% of base) : 132104.dasm - System.Xml.XmlConvert:TryToDecimal(System.String,byref):System.Exception
         -24 (-2.36% of base) : 132106.dasm - System.Xml.XmlConvert:TryToInteger(System.String,byref):System.Exception
         -23 (-9.35% of base) : 160688.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:<ProvideConfiguration>g__ProcessElementChild|7_4(Microsoft.Extensions.Configuration.Xml.Prefix,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement,System.Nullable`1[Int32],byref)
         -22 (-1.11% of base) : 43474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:MergePartialMethods(System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], System.Collections.Immutable, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],Microsoft.CodeAnalysis.DiagnosticBag)
         -20 (-3.48% of base) : 105639.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:InitializeContract(Newtonsoft.Json.Serialization.JsonContract):this
         -20 (-1.21% of base) : 105502.dasm - Newtonsoft.Json.Utilities.ReflectionObject:Create(System.Type,System.Reflection.MethodBase,System.String[]):Newtonsoft.Json.Utilities.ReflectionObject
         -20 (-1.57% of base) : 111708.dasm - System.Data.ConstNode:SmallestDecimal(System.Object):System.Object:this
         -20 (-1.59% of base) : 112235.dasm - System.Data.SqlTypes.SqlMoney:Parse(System.String):System.Data.SqlTypes.SqlMoney
         -19 (-1.92% of base) : 49656.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitAsNewLocalDeclarations(Microsoft.CodeAnalysis.VisualBasic.BoundAsNewLocalDeclarations):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
         -19 (-1.54% of base) : 105953.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateList(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object,System.String):System.Object:this
         -18 (-2.03% of base) : 35751.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:GetValueDecimal(System.String,int,int):System.Decimal:this
         -18 (-1.91% of base) : 223541.dasm - System.Security.Cryptography.Xml.C14NAncestralNamespaceContextManager:GetNamespacesToRender(System.Xml.XmlElement,System.Collections.SortedList,System.Collections.SortedList,System.Collections.Hashtable):this
         -17 (-2.38% of base) : 110954.dasm - System.Data.ForeignKeyConstraint:CascadeRollback(System.Data.DataRow):this
         -17 (-2.02% of base) : 219907.dasm - System.Security.Cryptography.ECDiffieHellmanCng:DeriveSecretAgreementHandle(System.Security.Cryptography.CngKey):Microsoft.Win32.SafeHandles.SafeNCryptSecretHandle:this
         -16 (-0.94% of base) : 28646.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:Scan(byref):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.PreciseAbstractFlowPass`1+PendingBranch[[Microsoft.CodeAnalysis.CSharp.DataFlowPass+LocalState, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -16 (-1.64% of base) : 165921.dasm - Newtonsoft.Json.Bson.BsonDataReader:ReadDecimalString(System.String):System.Nullable`1[Decimal]:this
         -16 (-1.33% of base) : 104181.dasm - Newtonsoft.Json.JsonReader:ReadDecimalString(System.String):System.Nullable`1[Decimal]:this
         -15 (-2.41% of base) : 22221.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.VarEnumSelector:GetConversionsToComPrimitiveTypeFamilies(System.Type):System.Collections.Generic.List`1[VarEnum]

Top method regressions (percentages):
          12 ( 4.18% of base) : 166490.dasm - Microsoft.DiaSymReader.SymUnmanagedWriterImpl:DefineLocalStringConstant(Microsoft.DiaSymReader.ISymUnmanagedWriter5,System.String,System.String,int):bool:this
          22 ( 1.61% of base) : 216385.dasm - System.Numerics.BigInteger:op_BitwiseAnd(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          22 ( 1.55% of base) : 216386.dasm - System.Numerics.BigInteger:op_BitwiseOr(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          19 ( 1.46% of base) : 216387.dasm - System.Numerics.BigInteger:op_ExclusiveOr(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          21 ( 0.82% of base) : 50065.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
           2 ( 0.65% of base) : 83558.dasm - TargetSymbolResolver:ParseParameter():System.Nullable`1[ParameterInfo]:this
          13 ( 0.35% of base) : 119531.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileTryExpression(System.Linq.Expressions.Expression):this
           3 ( 0.31% of base) : 150605.dasm - System.Text.SBCSCodePageEncoding:GetChars(long,int,long,int,System.Text.DecoderNLS):int:this
           3 ( 0.24% of base) : 136047.dasm - System.Xml.Schema.Compiler:IsSequenceFromChoice(System.Xml.Schema.XmlSchemaSequence,System.Xml.Schema.XmlSchemaChoice):bool:this
           3 ( 0.19% of base) : 216505.dasm - System.Numerics.BigNumber:HexNumberToBigInteger(byref,byref):bool
           1 ( 0.16% of base) : 136743.dasm - System.Xml.Schema.SchemaCollectionCompiler:IsSequenceFromChoice(System.Xml.Schema.XmlSchemaSequence,System.Xml.Schema.XmlSchemaChoice):bool:this

Top method improvements (percentages):
         -23 (-9.35% of base) : 160688.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:<ProvideConfiguration>g__ProcessElementChild|7_4(Microsoft.Extensions.Configuration.Xml.Prefix,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement,System.Nullable`1[Int32],byref)
          -7 (-8.86% of base) : 209536.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
         -11 (-8.66% of base) : 28666.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:CheckAssigned(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):this
          -8 (-8.51% of base) : 49721.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:ConsiderLocalInitiallyAssigned(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol):bool:this
         -11 (-6.96% of base) : 49683.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitForStatementVariableDeclaration(Microsoft.CodeAnalysis.VisualBasic.BoundForStatement):this
          -7 (-6.25% of base) : 209446.dasm - System.Net.Security.SecureChannel:GetRequestCertificateAuthorities():System.String[]:this
          -8 (-5.33% of base) : 28688.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowsOutWalker:NoteWrite(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,bool):this
         -11 (-5.21% of base) : 28601.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:VisitPropertyAccess(Microsoft.CodeAnalysis.CSharp.BoundPropertyAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this
          -8 (-5.16% of base) : 182057.dasm - System.Configuration.ConfigurationSchemaErrors:ThrowIfErrors(bool):this
         -12 (-5.13% of base) : 105735.dasm - Newtonsoft.Json.Serialization.JsonArrayContract:StoreFSharpListCreatorIfNecessary(System.Type):this
         -11 (-4.64% of base) : 28734.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:CheckAssigned(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):this
          -7 (-4.40% of base) : 49698.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:CheckAssigned(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,int):this
          -8 (-4.35% of base) : 28689.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowsOutWalker:AssignImpl(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,bool,bool):this
          -7 (-3.74% of base) : 49676.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitFieldAccess(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
          -7 (-3.66% of base) : 49677.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitFieldAccessInReadWriteContext(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,int):this
          -8 (-3.65% of base) : 28608.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:IntersectWith(byref,byref):bool:this
          -4 (-3.48% of base) : 81468.dasm - Microsoft.CodeAnalysis.CodeGen.MethodBody:GetSequencePoints():System.Collections.Immutable.ImmutableArray`1[SequencePoint]:this
         -20 (-3.48% of base) : 105639.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:InitializeContract(Newtonsoft.Json.Serialization.JsonContract):this
         -15 (-3.46% of base) : 105962.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewDictionary(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonDictionaryContract,byref):System.Collections.IDictionary:this
         -11 (-3.28% of base) : 110958.dasm - System.Data.ForeignKeyConstraint:CheckCascade(System.Data.DataRow,int):this

110 total methods with Code Size differences (99 improved, 11 regressed), 4 unchanged.


libraries_tests.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 114254374 (overridden on cmd)
Total bytes of diff: 114253114 (overridden on cmd)
Total bytes of delta: -1260 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          10 : 121869.dasm (2.62% of base)
           5 : 35173.dasm (0.44% of base)
           3 : 121852.dasm (0.98% of base)
           3 : 121859.dasm (0.98% of base)
           1 : 29166.dasm (0.26% of base)
           1 : 29170.dasm (0.30% of base)
           1 : 126224.dasm (0.22% of base)
           1 : 29164.dasm (0.12% of base)

Top file improvements (bytes):
         -61 : 117581.dasm (-16.85% of base)
         -37 : 114341.dasm (-5.35% of base)
         -29 : 118237.dasm (-1.84% of base)
         -27 : 118207.dasm (-1.25% of base)
         -27 : 119509.dasm (-1.79% of base)
         -26 : 119632.dasm (-13.61% of base)
         -26 : 262051.dasm (-2.61% of base)
         -25 : 118243.dasm (-3.14% of base)
         -24 : 242746.dasm (-1.39% of base)
         -23 : 130619.dasm (-1.20% of base)
         -21 : 242521.dasm (-4.79% of base)
         -21 : 117016.dasm (-4.79% of base)
         -21 : 123274.dasm (-4.79% of base)
         -17 : 121866.dasm (-1.98% of base)
         -17 : 121848.dasm (-6.32% of base)
         -17 : 245168.dasm (-4.86% of base)
         -17 : 125915.dasm (-0.60% of base)
         -16 : 127409.dasm (-1.55% of base)
         -15 : 300647.dasm (-2.26% of base)
         -15 : 179560.dasm (-2.26% of base)

143 total files with Code Size differences (135 improved, 8 regressed), 9 unchanged.

Top method regressions (bytes):
          10 ( 2.62% of base) : 121869.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogTargetFinished(Microsoft.Build.Framework.BuildEventContext,System.String,System.String,System.String,bool,System.Collections.Generic.IEnumerable`1[[Microsoft.Build.Execution.ProjectItemInstance+TaskItem, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):this
           5 ( 0.44% of base) : 35173.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.indexer.genclass.genclass008.genclass008.Test:DoWhileExpression()
           3 ( 0.98% of base) : 121852.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogError(Microsoft.Build.Framework.BuildEventContext,System.String,Microsoft.Build.Shared.BuildEventFileInfo,System.String,System.Object[]):this
           3 ( 0.98% of base) : 121859.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogWarning(Microsoft.Build.Framework.BuildEventContext,System.String,Microsoft.Build.Shared.BuildEventFileInfo,System.String,System.Object[]):this
           1 ( 0.30% of base) : 29170.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do001.do001.Test:MainMethod(System.String[]):int
           1 ( 0.26% of base) : 29166.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do002.do002.Test:MainMethod(System.String[]):int
           1 ( 0.12% of base) : 29164.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do003.do003.Test:MainMethod(System.String[]):int
           1 ( 0.22% of base) : 126224.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ExpressionSyntaxExtensions:IsExpressionOfArgumentInDeconstruction(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax):bool

Top method improvements (bytes):
         -61 (-16.85% of base) : 117581.dasm - Microsoft.Build.Exceptions.InternalLoggerException:.ctor(System.String,System.Exception,Microsoft.Build.Framework.BuildEventArgs,System.String,System.String,bool):this
         -37 (-5.35% of base) : 114341.dasm - Microsoft.Build.Tasks.BindingRedirect:Read(System.Xml.XmlReader):this
         -29 (-1.84% of base) : 118237.dasm - Microsoft.Build.Construction.SolutionFile:GetSolutionFileAndVisualStudioMajorVersions(System.String,byref,byref)
         -27 (-1.25% of base) : 118207.dasm - Microsoft.Build.Construction.SolutionFile:ParseProject(System.String):this
         -27 (-1.79% of base) : 119509.dasm - Microsoft.Build.Evaluation.ProjectRootElementCache:Get(System.String,OpenProjectRootElement,bool,System.Nullable`1[Boolean]):Microsoft.Build.Construction.ProjectRootElement:this
         -26 (-13.61% of base) : 119632.dasm - Microsoft.Build.Experimental.ProjectCache.ProjectCacheException:.ctor(System.String,System.Exception,bool,System.String):this
         -26 (-2.61% of base) : 262051.dasm - NuGet.Versioning.VersionRangeFormatter:PrettyPrint(NuGet.Versioning.VersionRange,bool):System.String:this
         -25 (-3.14% of base) : 118243.dasm - Microsoft.Build.Construction.SolutionFile:ParseSolutionFile():this
         -24 (-1.39% of base) : 242746.dasm - Microsoft.Build.Utilities.ToolLocationHelper:GatherPlatformsForSdk(Microsoft.Build.Utilities.TargetPlatformSDK)
         -23 (-1.20% of base) : 130619.dasm - StringPiece:Split(System.String):System.Collections.Generic.IList`1[StringPiece]
         -21 (-4.79% of base) : 242521.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -21 (-4.79% of base) : 117016.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -21 (-4.79% of base) : 123274.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -17 (-6.32% of base) : 121848.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogComment(Microsoft.Build.Framework.BuildEventContext,int,System.String,System.Object[]):this
         -17 (-1.98% of base) : 121866.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogProjectStarted(Microsoft.Build.Framework.BuildEventContext,int,int,Microsoft.Build.Framework.BuildEventContext,System.String,System.String,System.Collections.Generic.IEnumerable`1[DictionaryEntry],System.Collections.Generic.IEnumerable`1[DictionaryEntry],int):Microsoft.Build.Framework.BuildEventContext:this
         -17 (-0.60% of base) : 125915.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.CSharpTriviaFormatter:GetLineColumnRuleBetween(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.Formatting.LineColumnDelta,bool,Microsoft.CodeAnalysis.SyntaxTrivia):Microsoft.CodeAnalysis.Formatting.LineColumnRule:this
         -17 (-4.86% of base) : 245168.dasm - Microsoft.CodeAnalysis.Scripting.Hosting.CommonMemberFilter:Include(System.Diagnostics.StackFrame):bool:this
         -16 (-1.55% of base) : 127409.dasm - TypeInferrer:InferTypeInAttributeArgument(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeArgumentSyntax,System.Nullable`1[SyntaxToken]):System.Collections.Generic.IEnumerable`1[TypeInferenceInfo]:this
         -15 (-2.26% of base) : 300647.dasm - System.Net.Http.HttpWindowsProxy:TryCreate(byref):bool
         -15 (-2.26% of base) : 179560.dasm - System.Net.Http.HttpWindowsProxy:TryCreate(byref):bool

Top method regressions (percentages):
          10 ( 2.62% of base) : 121869.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogTargetFinished(Microsoft.Build.Framework.BuildEventContext,System.String,System.String,System.String,bool,System.Collections.Generic.IEnumerable`1[[Microsoft.Build.Execution.ProjectItemInstance+TaskItem, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):this
           3 ( 0.98% of base) : 121852.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogError(Microsoft.Build.Framework.BuildEventContext,System.String,Microsoft.Build.Shared.BuildEventFileInfo,System.String,System.Object[]):this
           3 ( 0.98% of base) : 121859.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogWarning(Microsoft.Build.Framework.BuildEventContext,System.String,Microsoft.Build.Shared.BuildEventFileInfo,System.String,System.Object[]):this
           5 ( 0.44% of base) : 35173.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.indexer.genclass.genclass008.genclass008.Test:DoWhileExpression()
           1 ( 0.30% of base) : 29170.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do001.do001.Test:MainMethod(System.String[]):int
           1 ( 0.26% of base) : 29166.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do002.do002.Test:MainMethod(System.String[]):int
           1 ( 0.22% of base) : 126224.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ExpressionSyntaxExtensions:IsExpressionOfArgumentInDeconstruction(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax):bool
           1 ( 0.12% of base) : 29164.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do003.do003.Test:MainMethod(System.String[]):int

Top method improvements (percentages):
         -61 (-16.85% of base) : 117581.dasm - Microsoft.Build.Exceptions.InternalLoggerException:.ctor(System.String,System.Exception,Microsoft.Build.Framework.BuildEventArgs,System.String,System.String,bool):this
         -26 (-13.61% of base) : 119632.dasm - Microsoft.Build.Experimental.ProjectCache.ProjectCacheException:.ctor(System.String,System.Exception,bool,System.String):this
         -10 (-8.85% of base) : 117741.dasm - Microsoft.Build.Construction.ProjectElementContainer:UpdateElementValue(Microsoft.Build.Construction.ProjectElement):this
         -13 (-8.61% of base) : 118045.dasm - Microsoft.Build.Construction.ProjectRootElement:Reload(bool,System.Nullable`1[Boolean]):this
         -17 (-6.32% of base) : 121848.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogComment(Microsoft.Build.Framework.BuildEventContext,int,System.String,System.Object[]):this
         -37 (-5.35% of base) : 114341.dasm - Microsoft.Build.Tasks.BindingRedirect:Read(System.Xml.XmlReader):this
          -8 (-4.88% of base) : 126582.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ContextQuery.SyntaxTokenExtensions:IsXmlCrefParameterModifierContext(Microsoft.CodeAnalysis.SyntaxToken):bool
         -17 (-4.86% of base) : 245168.dasm - Microsoft.CodeAnalysis.Scripting.Hosting.CommonMemberFilter:Include(System.Diagnostics.StackFrame):bool:this
         -21 (-4.79% of base) : 242521.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -21 (-4.79% of base) : 117016.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -21 (-4.79% of base) : 123274.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -12 (-4.24% of base) : 9366.dasm - Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation:.ctor(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.Text.TextSpan):this
         -13 (-4.21% of base) : 142258.dasm - NuGet.Protocol.Extensions.VersionRangeExtensions:DoesRangeSatisfy(NuGet.Versioning.VersionRange,NuGet.Versioning.NuGetVersion,NuGet.Versioning.NuGetVersion):bool
          -7 (-4.12% of base) : 123862.dasm - ProjectPropertyXmlBacked:set_UnevaluatedValue(System.String):this
          -2 (-4.08% of base) : 255823.dasm - Microsoft.Assumes:Is(System.Object)
          -8 (-3.56% of base) : 9398.dasm - Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation:.ctor(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.Text.TextSpan,int):this
         -11 (-3.31% of base) : 119193.dasm - Microsoft.Build.Evaluation.ProjectMetadata:set_UnevaluatedValue(System.String):this
          -7 (-3.30% of base) : 118135.dasm - Microsoft.Build.Construction.ProjectChooseElement:CreateDisconnected(Microsoft.Build.Construction.ProjectRootElement):Microsoft.Build.Construction.ProjectChooseElement
         -13 (-3.30% of base) : 262049.dasm - NuGet.Versioning.VersionRangeFormatter:GetLegacyShortString(NuGet.Versioning.VersionRangeBase):System.String:this
         -13 (-3.30% of base) : 262048.dasm - NuGet.Versioning.VersionRangeFormatter:GetToString(NuGet.Versioning.VersionRange):System.String:this

143 total methods with Code Size differences (135 improved, 8 regressed), 9 unchanged.


@AndyAyersMS
Copy link
Member Author

Not cleear yet what's going wrong with the installer builds, could be related.

  Microsoft.NETCore.App.Runtime.Composite -> 
/root/runtime/artifacts/bin/Crossgen2Tasks/Debug/net6.0/Microsoft.NET.CrossGen.targets(463,5): error : /root/runtime//dotnet.sh:***@" [/root/runtime/src/installer/pkg/sfx/Microsoft.NETCore.App/Microsoft.NETCore.App.Runtime.Composite.sfxproj]

Also have a branch off this change where I'm trying to remove all the ? true : false from the runtime to see if it's no longer needed.

@AndyAyersMS
Copy link
Member Author

I'm trying to remove all the ? true : false from the runtime to see if it's no longer needed.

Hmm, this is going to take a bit more work. Right now the ? true : false are creating flow and this is triggering tail dup.

If we get rid of these constructs we instead end up with two relops in the same block, I'd hoped that #61023 would be sufficient to clean this up, but (at least in the case of ArraySortHelper.SwapIfGreater we are thwarted by two things:

  • prior VN has an exec set, jump cond doesn't...
  • prior VN actually can cause exceptions, so we can't just copy it as is to effect fwd-sub, we actually need to move it
optRedundantRelop in BB02; jump tree is
N004 (  8,  7) [000015] ------------              *  JTRUE     void  
N003 (  6,  5) [000014] J------N----              \--*  EQ        int    <l:$147, c:$146>
N001 (  4,  3) [000034] ------------                 +--*  LCL_VAR   bool   V03 tmp1         u:1 (last use) <l:$143, c:$142>
N002 (  1,  1) [000013] ------------                 \--*  CNS_INT   int    0 $40
 ... checking previous tree
N007 ( 16, 10) [000033] -A-XG---R---              *  ASG       bool   <l:$145, c:$144>
N006 (  3,  2) [000032] D------N----              +--*  LCL_VAR   int    V03 tmp1         d:1 <l:$143, c:$142>
N005 ( 12,  7) [000031] ---XG-------              \--*  GT        int    <l:$145, c:$144>
N002 (  4,  3) [000029] *--XG-------                 +--*  IND       ubyte  <l:$201, c:$200>
N001 (  1,  1) [000009] ------------                 |  \--*  LCL_VAR   byref  V00 arg0         u:1 $80
N004 (  4,  3) [000030] *--XG-------                 \--*  IND       ubyte  <l:$203, c:$202>
N003 (  1,  1) [000010] ------------                    \--*  LCL_VAR   byref  V01 arg1         u:1 $81
 -- prev tree VN is not related

If the two statements are adjacent then moving instead of copying is not too difficult; something like:

  • generalize the VN check to ensure the jump VN is compatible (equal normal liberal VNs, subset of the exec set VN).
  • allow side-effecting statement to be fwd-subbed, if it's adjacent to the jump stmt
  • move the RHS in place rather than cloning, and delete the prior stmt
  • note that "not live out" is now a requirement rather than just a heuristic

@AndyAyersMS
Copy link
Member Author

Going to wait on this until after #61275.

@AndyAyersMS
Copy link
Member Author

Diffs on top of #61275.

aspnet.run.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 13642296 (overridden on cmd)
Total bytes of diff: 13642114 (overridden on cmd)
Total bytes of delta: -182 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file improvements (bytes):
         -27 : 14131.dasm (-6.94% of base)
         -27 : 28896.dasm (-7.09% of base)
         -27 : 4959.dasm (-6.94% of base)
         -23 : 14124.dasm (-1.54% of base)
         -23 : 4947.dasm (-1.54% of base)
         -19 : 28894.dasm (-1.28% of base)
         -18 : 38900.dasm (-3.38% of base)
          -8 : 24623.dasm (-0.86% of base)
          -8 : 18570.dasm (-0.87% of base)
          -2 : 6134.dasm (-0.83% of base)

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

Top method improvements (bytes):
         -27 (-6.94% of base) : 14131.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -27 (-7.09% of base) : 28896.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -27 (-6.94% of base) : 4959.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -23 (-1.54% of base) : 14124.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
         -23 (-1.54% of base) : 4947.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
         -19 (-1.28% of base) : 28894.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
         -18 (-3.38% of base) : 38900.dasm - ExpressionUtils:RequiresCanRead(Expression,String,int)
          -8 (-0.86% of base) : 24623.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
          -8 (-0.87% of base) : 18570.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
          -2 (-0.83% of base) : 6134.dasm - SocketAsyncEventArgs:StartOperationAccept():this

Top method improvements (percentages):
         -27 (-7.09% of base) : 28896.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -27 (-6.94% of base) : 14131.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -27 (-6.94% of base) : 4959.dasm - SocketAsyncEventArgs:StartOperationAccept():this
         -18 (-3.38% of base) : 38900.dasm - ExpressionUtils:RequiresCanRead(Expression,String,int)
         -23 (-1.54% of base) : 14124.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
         -23 (-1.54% of base) : 4947.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
         -19 (-1.28% of base) : 28894.dasm - Socket:AcceptAsync(SocketAsyncEventArgs,CancellationToken):bool:this
          -8 (-0.87% of base) : 18570.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
          -8 (-0.86% of base) : 24623.dasm - RelationalPropertyExtensions:GetColumnName(IReadOnlyProperty,byref):String
          -2 (-0.83% of base) : 6134.dasm - SocketAsyncEventArgs:StartOperationAccept():this

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


benchmarks.run.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 7121898 (overridden on cmd)
Total bytes of diff: 7121722 (overridden on cmd)
Total bytes of delta: -176 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
           2 : 11056.dasm (0.43% of base)

Top file improvements (bytes):
         -21 : 18739.dasm (-1.14% of base)
         -18 : 6098.dasm (-1.36% of base)
         -15 : 12882.dasm (-2.74% of base)
         -14 : 18084.dasm (-1.84% of base)
         -13 : 12412.dasm (-0.97% of base)
         -13 : 21133.dasm (-3.01% of base)
         -13 : 12880.dasm (-1.06% of base)
         -13 : 6816.dasm (-3.10% of base)
         -13 : 9473.dasm (-2.11% of base)
          -9 : 4913.dasm (-3.61% of base)
          -8 : 18760.dasm (-4.21% of base)
          -7 : 13506.dasm (-8.86% of base)
          -7 : 18655.dasm (-0.72% of base)
          -5 : 13383.dasm (-0.94% of base)
          -4 : 1617.dasm (-0.13% of base)
          -3 : 18343.dasm (-0.08% of base)
          -2 : 13451.dasm (-0.50% of base)

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

Top method regressions (bytes):
           2 ( 0.43% of base) : 11056.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:ExecutionContextCallback(System.Object)

Top method improvements (bytes):
         -21 (-1.14% of base) : 18739.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:Scan(byref):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.PreciseAbstractFlowPass`1+PendingBranch[[Microsoft.CodeAnalysis.CSharp.DataFlowPass+LocalState, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -18 (-1.36% of base) : 6098.dasm - JetStream.Statistics:findOptimalSegmentationInternal(System.Single[][],System.Int32[][],System.Double[],JetStream.SampleVarianceUpperTriangularMatrix,int)
         -15 (-2.74% of base) : 12882.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewList(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,byref):System.Collections.IList:this
         -14 (-1.84% of base) : 18084.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,bool,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Reflection.Metadata.ParameterHandle,int,byref):this
         -13 (-3.10% of base) : 6816.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:InitializeContract(Newtonsoft.Json.Serialization.JsonContract):this
         -13 (-0.97% of base) : 12412.dasm - Newtonsoft.Json.Serialization.JsonDictionaryContract:.ctor(System.Type):this
         -13 (-1.06% of base) : 12880.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateList(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object,System.String):System.Object:this
         -13 (-3.01% of base) : 21133.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewDictionary(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonDictionaryContract,byref):System.Collections.IDictionary:this
         -13 (-2.11% of base) : 9473.dasm - System.Net.Http.HttpWindowsProxy:TryCreate(byref):bool
          -9 (-3.61% of base) : 4913.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this
          -8 (-4.21% of base) : 18760.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:IntersectWith(byref,byref):bool:this
          -7 (-0.72% of base) : 18655.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitBuiltInConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this
          -7 (-8.86% of base) : 13506.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
          -5 (-0.94% of base) : 13383.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslClientAuthenticationOptions,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertSelectionCallback):this
          -4 (-0.13% of base) : 1617.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this
          -3 (-0.08% of base) : 18343.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool):Microsoft.CodeAnalysis.CSharp.Symbol:this
          -2 (-0.50% of base) : 13451.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslAuthenticationOptions):this

Top method regressions (percentages):
           2 ( 0.43% of base) : 11056.dasm - StateMachineBox`1[Int32,<ReadAsyncSlowPath>d__39][System.Int32,System.IO.Strategies.BufferedFileStreamStrategy+<ReadAsyncSlowPath>d__39]:ExecutionContextCallback(System.Object)

Top method improvements (percentages):
          -7 (-8.86% of base) : 13506.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
          -8 (-4.21% of base) : 18760.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:IntersectWith(byref,byref):bool:this
          -9 (-3.61% of base) : 4913.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this
         -13 (-3.10% of base) : 6816.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:InitializeContract(Newtonsoft.Json.Serialization.JsonContract):this
         -13 (-3.01% of base) : 21133.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewDictionary(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonDictionaryContract,byref):System.Collections.IDictionary:this
         -15 (-2.74% of base) : 12882.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewList(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,byref):System.Collections.IList:this
         -13 (-2.11% of base) : 9473.dasm - System.Net.Http.HttpWindowsProxy:TryCreate(byref):bool
         -14 (-1.84% of base) : 18084.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEParameterSymbol:.ctor(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbol,int,bool,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Reflection.Metadata.ParameterHandle,int,byref):this
         -18 (-1.36% of base) : 6098.dasm - JetStream.Statistics:findOptimalSegmentationInternal(System.Single[][],System.Int32[][],System.Double[],JetStream.SampleVarianceUpperTriangularMatrix,int)
         -21 (-1.14% of base) : 18739.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:Scan(byref):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.PreciseAbstractFlowPass`1+PendingBranch[[Microsoft.CodeAnalysis.CSharp.DataFlowPass+LocalState, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -13 (-1.06% of base) : 12880.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateList(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object,System.String):System.Object:this
         -13 (-0.97% of base) : 12412.dasm - Newtonsoft.Json.Serialization.JsonDictionaryContract:.ctor(System.Type):this
          -5 (-0.94% of base) : 13383.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslClientAuthenticationOptions,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertSelectionCallback):this
          -7 (-0.72% of base) : 18655.dasm - Microsoft.CodeAnalysis.CSharp.ConversionsBase:ClassifyImplicitBuiltInConversionFromExpression(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,byref):Microsoft.CodeAnalysis.CSharp.Conversion:this
          -2 (-0.50% of base) : 13451.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslAuthenticationOptions):this
          -4 (-0.13% of base) : 1617.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this
          -3 (-0.08% of base) : 18343.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindNamespaceOrTypeOrAliasSymbol(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.DiagnosticBag,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool):Microsoft.CodeAnalysis.CSharp.Symbol:this

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


coreclr_tests.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 124106317 (overridden on cmd)
Total bytes of diff: 124105544 (overridden on cmd)
Total bytes of delta: -773 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
           3 : 88633.dasm (4.05% of base)

Top file improvements (bytes):
        -211 : 249541.dasm (-17.35% of base)
         -77 : 83853.dasm (-32.08% of base)
         -51 : 88738.dasm (-61.45% of base)
         -49 : 250030.dasm (-4.27% of base)
         -30 : 248135.dasm (-10.56% of base)
         -30 : 248103.dasm (-10.91% of base)
         -30 : 85910.dasm (-10.56% of base)
         -30 : 237875.dasm (-10.56% of base)
         -30 : 237982.dasm (-10.91% of base)
         -29 : 84713.dasm (-17.06% of base)
         -15 : 88214.dasm (-8.47% of base)
         -15 : 88219.dasm (-9.26% of base)
         -13 : 88223.dasm (-5.88% of base)
         -13 : 209718.dasm (-1.98% of base)
         -13 : 209750.dasm (-0.23% of base)
         -12 : 209740.dasm (-0.71% of base)
         -12 : 209745.dasm (-2.82% of base)
         -11 : 84187.dasm (-2.72% of base)
          -8 : 88221.dasm (-3.79% of base)
          -7 : 209712.dasm (-2.24% of base)

44 total files with Code Size differences (43 improved, 1 regressed), 4 unchanged.

Top method regressions (bytes):
           3 ( 4.05% of base) : 88633.dasm - foo:Main():int

Top method improvements (bytes):
        -211 (-17.35% of base) : 249541.dasm - HelloWorld:Main(System.String[]):int
         -77 (-32.08% of base) : 83853.dasm - GenericArrayOverride.Program:Main():int
         -51 (-61.45% of base) : 88738.dasm - Test:Main():int
         -49 (-4.27% of base) : 250030.dasm - Threading.Tests.OSThreadId:Main(System.String[]):int
         -30 (-10.56% of base) : 248135.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.91% of base) : 248103.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.56% of base) : 85910.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.56% of base) : 237875.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.91% of base) : 237982.dasm - Test.Assert:AreEqual(System.String,System.String)
         -29 (-17.06% of base) : 84713.dasm - P:Main():int
         -15 (-8.47% of base) : 88214.dasm - Test:Main():int
         -15 (-9.26% of base) : 88219.dasm - Test:Main():int
         -13 (-0.23% of base) : 209750.dasm - Internal.IL.ILImporter:ImportCall(int,int):this
         -13 (-1.98% of base) : 209718.dasm - Internal.IL.ILImporter:ImportNewArray(int):this
         -13 (-5.88% of base) : 88223.dasm - Test:Main(System.String[]):int
         -12 (-2.82% of base) : 209745.dasm - Internal.IL.ILImporter:ImportAddressOfVar(int,bool):this
         -12 (-0.71% of base) : 209740.dasm - Internal.IL.ILImporter:StartImportingBasicBlock(BasicBlock):this
         -11 (-2.72% of base) : 84187.dasm - Test:Main():int
          -8 (-3.79% of base) : 88221.dasm - Test:Main():int
          -7 (-2.24% of base) : 209712.dasm - Internal.IL.ILImporter:ImportLoadString(int):this

Top method regressions (percentages):
           3 ( 4.05% of base) : 88633.dasm - foo:Main():int

Top method improvements (percentages):
         -51 (-61.45% of base) : 88738.dasm - Test:Main():int
         -77 (-32.08% of base) : 83853.dasm - GenericArrayOverride.Program:Main():int
        -211 (-17.35% of base) : 249541.dasm - HelloWorld:Main(System.String[]):int
         -29 (-17.06% of base) : 84713.dasm - P:Main():int
         -30 (-10.91% of base) : 248103.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.91% of base) : 237982.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.56% of base) : 248135.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.56% of base) : 85910.dasm - Test.Assert:AreEqual(System.String,System.String)
         -30 (-10.56% of base) : 237875.dasm - Test.Assert:AreEqual(System.String,System.String)
         -15 (-9.26% of base) : 88219.dasm - Test:Main():int
         -15 (-8.47% of base) : 88214.dasm - Test:Main():int
         -13 (-5.88% of base) : 88223.dasm - Test:Main(System.String[]):int
         -49 (-4.27% of base) : 250030.dasm - Threading.Tests.OSThreadId:Main(System.String[]):int
          -8 (-3.79% of base) : 88221.dasm - Test:Main():int
         -12 (-2.82% of base) : 209745.dasm - Internal.IL.ILImporter:ImportAddressOfVar(int,bool):this
         -11 (-2.72% of base) : 84187.dasm - Test:Main():int
          -7 (-2.24% of base) : 209712.dasm - Internal.IL.ILImporter:ImportLoadString(int):this
         -13 (-1.98% of base) : 209718.dasm - Internal.IL.ILImporter:ImportNewArray(int):this
          -2 (-1.01% of base) : 86708.dasm - Test:Main():int
         -12 (-0.71% of base) : 209740.dasm - Internal.IL.ILImporter:StartImportingBasicBlock(BasicBlock):this

44 total methods with Code Size differences (43 improved, 1 regressed), 4 unchanged.


libraries.crossgen2.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 34263227 (overridden on cmd)
Total bytes of diff: 34263277 (overridden on cmd)
Total bytes of delta: 50 (0.00 % of base)
    diff is a regression.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          78 : 111099.dasm (5.21% of base)
          42 : 91497.dasm (1.72% of base)
          12 : 204820.dasm (3.73% of base)
           3 : 178397.dasm (0.23% of base)
           2 : 193575.dasm (0.50% of base)
           2 : 156447.dasm (0.63% of base)
           2 : 84264.dasm (0.70% of base)

Top file improvements (bytes):
         -14 : 99244.dasm (-8.97% of base)
         -14 : 4527.dasm (-0.90% of base)
         -12 : 98754.dasm (-7.79% of base)
          -7 : 193613.dasm (-5.38% of base)
          -7 : 160353.dasm (-4.70% of base)
          -7 : 193684.dasm (-5.74% of base)
          -7 : 160352.dasm (-4.67% of base)
          -6 : 82927.dasm (-3.73% of base)
          -5 : 193576.dasm (-1.00% of base)
          -4 : 160585.dasm (-0.58% of base)
          -4 : 66529.dasm (-0.88% of base)
          -4 : 98336.dasm (-0.20% of base)

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

Top method regressions (bytes):
          78 ( 5.21% of base) : 111099.dasm - System.Reflection.AssemblyName:EscapeString(System.String,int,int,System.Char[],byref,bool,ushort,ushort,ushort):System.Char[]
          42 ( 1.72% of base) : 91497.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
          12 ( 3.73% of base) : 204820.dasm - Microsoft.DiaSymReader.SymUnmanagedWriterImpl:DefineLocalStringConstant(Microsoft.DiaSymReader.ISymUnmanagedWriter5,System.String,System.String,int):bool:this
           3 ( 0.23% of base) : 178397.dasm - System.Numerics.BigNumber:HexNumberToBigInteger(byref,byref):bool
           2 ( 0.70% of base) : 84264.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsFirstStatementOnLine(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):bool:this
           2 ( 0.50% of base) : 193575.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslAuthenticationOptions):this
           2 ( 0.63% of base) : 156447.dasm - TargetSymbolResolver:ParseParameter():System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver+ParameterInfo]:this

Top method improvements (bytes):
         -14 (-0.90% of base) : 4527.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:MergePartialMethods(System.Collections.Generic.Dictionary`2[System.String, System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]],Microsoft.CodeAnalysis.DiagnosticBag)
         -14 (-8.97% of base) : 99244.dasm - System.Configuration.BaseConfigurationRecord:get_IsEmpty():bool:this
         -12 (-7.79% of base) : 98754.dasm - System.Configuration.ConfigurationSchemaErrors:ThrowIfErrors(bool):this
          -7 (-4.70% of base) : 160353.dasm - Microsoft.CodeAnalysis.SyntaxList`1:LastIndexOf(System.__Canon):int:this
          -7 (-4.67% of base) : 160352.dasm - Microsoft.CodeAnalysis.SyntaxList`1:LastIndexOf(System.Func`2[System.__Canon, System.Boolean]):int:this
          -7 (-5.74% of base) : 193684.dasm - System.Net.Security.SecureChannel:GetRequestCertificateAuthorities():System.String[]:this
          -7 (-5.38% of base) : 193613.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
          -6 (-3.73% of base) : 82927.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxNodeExtensions:GetIndexAfterLastSkippedToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):int
          -5 (-1.00% of base) : 193576.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslClientAuthenticationOptions,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertSelectionCallback):this
          -4 (-0.58% of base) : 160585.dasm - Microsoft.CodeAnalysis.AbstractSyntaxNavigator:GetLastToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken, System.Boolean],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia, System.Boolean]):Microsoft.CodeAnalysis.SyntaxToken:this
          -4 (-0.20% of base) : 98336.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDeclarationUpdates(int):System.Configuration.SectionUpdates:this
          -4 (-0.88% of base) : 66529.dasm - System.Speech.Internal.SrgsCompiler.Arc:Serialize(System.Speech.Internal.StreamMarshaler,bool,int):float:this

Top method regressions (percentages):
          78 ( 5.21% of base) : 111099.dasm - System.Reflection.AssemblyName:EscapeString(System.String,int,int,System.Char[],byref,bool,ushort,ushort,ushort):System.Char[]
          12 ( 3.73% of base) : 204820.dasm - Microsoft.DiaSymReader.SymUnmanagedWriterImpl:DefineLocalStringConstant(Microsoft.DiaSymReader.ISymUnmanagedWriter5,System.String,System.String,int):bool:this
          42 ( 1.72% of base) : 91497.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
           2 ( 0.70% of base) : 84264.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:IsFirstStatementOnLine(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode):bool:this
           2 ( 0.63% of base) : 156447.dasm - TargetSymbolResolver:ParseParameter():System.Nullable`1[Microsoft.CodeAnalysis.Diagnostics.SuppressMessageAttributeState+TargetSymbolResolver+ParameterInfo]:this
           2 ( 0.50% of base) : 193575.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslAuthenticationOptions):this
           3 ( 0.23% of base) : 178397.dasm - System.Numerics.BigNumber:HexNumberToBigInteger(byref,byref):bool

Top method improvements (percentages):
         -14 (-8.97% of base) : 99244.dasm - System.Configuration.BaseConfigurationRecord:get_IsEmpty():bool:this
         -12 (-7.79% of base) : 98754.dasm - System.Configuration.ConfigurationSchemaErrors:ThrowIfErrors(bool):this
          -7 (-5.74% of base) : 193684.dasm - System.Net.Security.SecureChannel:GetRequestCertificateAuthorities():System.String[]:this
          -7 (-5.38% of base) : 193613.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
          -7 (-4.70% of base) : 160353.dasm - Microsoft.CodeAnalysis.SyntaxList`1:LastIndexOf(System.__Canon):int:this
          -7 (-4.67% of base) : 160352.dasm - Microsoft.CodeAnalysis.SyntaxList`1:LastIndexOf(System.Func`2[System.__Canon, System.Boolean]):int:this
          -6 (-3.73% of base) : 82927.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxNodeExtensions:GetIndexAfterLastSkippedToken(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):int
          -5 (-1.00% of base) : 193576.dasm - System.Net.Security.SslStream:ValidateCreateContext(System.Net.Security.SslClientAuthenticationOptions,System.Net.Security.RemoteCertificateValidationCallback,System.Net.Security.LocalCertSelectionCallback):this
         -14 (-0.90% of base) : 4527.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:MergePartialMethods(System.Collections.Generic.Dictionary`2[System.String, System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol]],Microsoft.CodeAnalysis.DiagnosticBag)
          -4 (-0.88% of base) : 66529.dasm - System.Speech.Internal.SrgsCompiler.Arc:Serialize(System.Speech.Internal.StreamMarshaler,bool,int):float:this
          -4 (-0.58% of base) : 160585.dasm - Microsoft.CodeAnalysis.AbstractSyntaxNavigator:GetLastToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken, System.Boolean],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia, System.Boolean]):Microsoft.CodeAnalysis.SyntaxToken:this
          -4 (-0.20% of base) : 98336.dasm - System.Configuration.MgmtConfigurationRecord:GetConfigDeclarationUpdates(int):System.Configuration.SectionUpdates:this

19 total methods with Code Size differences (12 improved, 7 regressed), 7 unchanged.


libraries.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 45123265 (overridden on cmd)
Total bytes of diff: 45122347 (overridden on cmd)
Total bytes of delta: -918 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          22 : 216386.dasm (1.55% of base)
          22 : 216385.dasm (1.61% of base)
          21 : 50065.dasm (0.82% of base)
          19 : 216387.dasm (1.46% of base)
          12 : 166490.dasm (4.18% of base)
          10 : 119531.dasm (0.27% of base)
           3 : 150605.dasm (0.31% of base)
           3 : 136047.dasm (0.24% of base)
           3 : 216505.dasm (0.19% of base)
           2 : 83558.dasm (0.65% of base)
           1 : 136743.dasm (0.16% of base)

Top file improvements (bytes):
         -36 : 149284.dasm (-2.65% of base)
         -24 : 132106.dasm (-2.36% of base)
         -24 : 132104.dasm (-2.36% of base)
         -23 : 160688.dasm (-9.35% of base)
         -22 : 43474.dasm (-1.11% of base)
         -20 : 105502.dasm (-1.21% of base)
         -20 : 112235.dasm (-1.59% of base)
         -20 : 111708.dasm (-1.57% of base)
         -20 : 105639.dasm (-3.48% of base)
         -19 : 105953.dasm (-1.54% of base)
         -19 : 49656.dasm (-1.91% of base)
         -19 : 105788.dasm (-1.37% of base)
         -18 : 35751.dasm (-2.03% of base)
         -17 : 219907.dasm (-2.02% of base)
         -17 : 110954.dasm (-2.38% of base)
         -16 : 149304.dasm (-1.62% of base)
         -16 : 104181.dasm (-1.33% of base)
         -16 : 165921.dasm (-1.64% of base)
         -16 : 28646.dasm (-0.94% of base)
         -16 : 28641.dasm (-1.25% of base)

110 total files with Code Size differences (99 improved, 11 regressed), 4 unchanged.

Top method regressions (bytes):
          22 ( 1.61% of base) : 216385.dasm - System.Numerics.BigInteger:op_BitwiseAnd(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          22 ( 1.55% of base) : 216386.dasm - System.Numerics.BigInteger:op_BitwiseOr(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          21 ( 0.82% of base) : 50065.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
          19 ( 1.46% of base) : 216387.dasm - System.Numerics.BigInteger:op_ExclusiveOr(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          12 ( 4.18% of base) : 166490.dasm - Microsoft.DiaSymReader.SymUnmanagedWriterImpl:DefineLocalStringConstant(Microsoft.DiaSymReader.ISymUnmanagedWriter5,System.String,System.String,int):bool:this
          10 ( 0.27% of base) : 119531.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileTryExpression(System.Linq.Expressions.Expression):this
           3 ( 0.19% of base) : 216505.dasm - System.Numerics.BigNumber:HexNumberToBigInteger(byref,byref):bool
           3 ( 0.31% of base) : 150605.dasm - System.Text.SBCSCodePageEncoding:GetChars(long,int,long,int,System.Text.DecoderNLS):int:this
           3 ( 0.24% of base) : 136047.dasm - System.Xml.Schema.Compiler:IsSequenceFromChoice(System.Xml.Schema.XmlSchemaSequence,System.Xml.Schema.XmlSchemaChoice):bool:this
           2 ( 0.65% of base) : 83558.dasm - TargetSymbolResolver:ParseParameter():System.Nullable`1[ParameterInfo]:this
           1 ( 0.16% of base) : 136743.dasm - System.Xml.Schema.SchemaCollectionCompiler:IsSequenceFromChoice(System.Xml.Schema.XmlSchemaSequence,System.Xml.Schema.XmlSchemaChoice):bool:this

Top method improvements (bytes):
         -36 (-2.65% of base) : 149284.dasm - System.Speech.Internal.Synthesis.SsmlParser:TryParseNumber(System.String,byref):bool
         -24 (-2.36% of base) : 132104.dasm - System.Xml.XmlConvert:TryToDecimal(System.String,byref):System.Exception
         -24 (-2.36% of base) : 132106.dasm - System.Xml.XmlConvert:TryToInteger(System.String,byref):System.Exception
         -23 (-9.35% of base) : 160688.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:<ProvideConfiguration>g__ProcessElementChild|7_4(Microsoft.Extensions.Configuration.Xml.Prefix,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement,System.Nullable`1[Int32],byref)
         -22 (-1.11% of base) : 43474.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:MergePartialMethods(System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], System.Collections.Immutable, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]],Microsoft.CodeAnalysis.DiagnosticBag)
         -20 (-3.48% of base) : 105639.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:InitializeContract(Newtonsoft.Json.Serialization.JsonContract):this
         -20 (-1.21% of base) : 105502.dasm - Newtonsoft.Json.Utilities.ReflectionObject:Create(System.Type,System.Reflection.MethodBase,System.String[]):Newtonsoft.Json.Utilities.ReflectionObject
         -20 (-1.57% of base) : 111708.dasm - System.Data.ConstNode:SmallestDecimal(System.Object):System.Object:this
         -20 (-1.59% of base) : 112235.dasm - System.Data.SqlTypes.SqlMoney:Parse(System.String):System.Data.SqlTypes.SqlMoney
         -19 (-1.91% of base) : 49656.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitAsNewLocalDeclarations(Microsoft.CodeAnalysis.VisualBasic.BoundAsNewLocalDeclarations):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
         -19 (-1.37% of base) : 105788.dasm - Newtonsoft.Json.Serialization.JsonDictionaryContract:.ctor(System.Type):this
         -19 (-1.54% of base) : 105953.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateList(Newtonsoft.Json.JsonReader,System.Type,Newtonsoft.Json.Serialization.JsonContract,Newtonsoft.Json.Serialization.JsonProperty,System.Object,System.String):System.Object:this
         -18 (-2.03% of base) : 35751.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer:GetValueDecimal(System.String,int,int):System.Decimal:this
         -17 (-2.38% of base) : 110954.dasm - System.Data.ForeignKeyConstraint:CascadeRollback(System.Data.DataRow):this
         -17 (-2.02% of base) : 219907.dasm - System.Security.Cryptography.ECDiffieHellmanCng:DeriveSecretAgreementHandle(System.Security.Cryptography.CngKey):Microsoft.Win32.SafeHandles.SafeNCryptSecretHandle:this
         -16 (-0.94% of base) : 28646.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:Scan(byref):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.CSharp.PreciseAbstractFlowPass`1+PendingBranch[[Microsoft.CodeAnalysis.CSharp.DataFlowPass+LocalState, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]:this
         -16 (-1.25% of base) : 28641.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:VisitLambda(Microsoft.CodeAnalysis.CSharp.BoundLambda):Microsoft.CodeAnalysis.CSharp.BoundNode:this
         -16 (-1.64% of base) : 165921.dasm - Newtonsoft.Json.Bson.BsonDataReader:ReadDecimalString(System.String):System.Nullable`1[Decimal]:this
         -16 (-1.33% of base) : 104181.dasm - Newtonsoft.Json.JsonReader:ReadDecimalString(System.String):System.Nullable`1[Decimal]:this
         -16 (-1.62% of base) : 149304.dasm - System.Speech.Internal.Synthesis.SsmlParser:ParseTextBlock(System.Xml.XmlReader,System.Speech.Internal.Synthesis.ISsmlParser,bool,System.String,SsmlAttributes,bool)

Top method regressions (percentages):
          12 ( 4.18% of base) : 166490.dasm - Microsoft.DiaSymReader.SymUnmanagedWriterImpl:DefineLocalStringConstant(Microsoft.DiaSymReader.ISymUnmanagedWriter5,System.String,System.String,int):bool:this
          22 ( 1.61% of base) : 216385.dasm - System.Numerics.BigInteger:op_BitwiseAnd(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          22 ( 1.55% of base) : 216386.dasm - System.Numerics.BigInteger:op_BitwiseOr(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          19 ( 1.46% of base) : 216387.dasm - System.Numerics.BigInteger:op_ExclusiveOr(System.Numerics.BigInteger,System.Numerics.BigInteger):System.Numerics.BigInteger
          21 ( 0.82% of base) : 50065.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ComputeVariableType(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol:this
           2 ( 0.65% of base) : 83558.dasm - TargetSymbolResolver:ParseParameter():System.Nullable`1[ParameterInfo]:this
           3 ( 0.31% of base) : 150605.dasm - System.Text.SBCSCodePageEncoding:GetChars(long,int,long,int,System.Text.DecoderNLS):int:this
          10 ( 0.27% of base) : 119531.dasm - System.Linq.Expressions.Interpreter.LightCompiler:CompileTryExpression(System.Linq.Expressions.Expression):this
           3 ( 0.24% of base) : 136047.dasm - System.Xml.Schema.Compiler:IsSequenceFromChoice(System.Xml.Schema.XmlSchemaSequence,System.Xml.Schema.XmlSchemaChoice):bool:this
           3 ( 0.19% of base) : 216505.dasm - System.Numerics.BigNumber:HexNumberToBigInteger(byref,byref):bool
           1 ( 0.16% of base) : 136743.dasm - System.Xml.Schema.SchemaCollectionCompiler:IsSequenceFromChoice(System.Xml.Schema.XmlSchemaSequence,System.Xml.Schema.XmlSchemaChoice):bool:this

Top method improvements (percentages):
         -11 (-9.57% of base) : 81468.dasm - Microsoft.CodeAnalysis.CodeGen.MethodBody:GetSequencePoints():System.Collections.Immutable.ImmutableArray`1[SequencePoint]:this
         -23 (-9.35% of base) : 160688.dasm - Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider:<ProvideConfiguration>g__ProcessElementChild|7_4(Microsoft.Extensions.Configuration.Xml.Prefix,Microsoft.Extensions.Configuration.Xml.XmlConfigurationElement,System.Nullable`1[Int32],byref)
          -7 (-8.86% of base) : 209536.dasm - System.Net.Security.SslStream:get_IsAuthenticated():bool:this
         -11 (-8.66% of base) : 28666.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:CheckAssigned(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):this
         -15 (-7.98% of base) : 105735.dasm - Newtonsoft.Json.Serialization.JsonArrayContract:StoreFSharpListCreatorIfNecessary(System.Type):this
          -7 (-7.78% of base) : 49721.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:ConsiderLocalInitiallyAssigned(Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol):bool:this
         -11 (-6.96% of base) : 49683.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitForStatementVariableDeclaration(Microsoft.CodeAnalysis.VisualBasic.BoundForStatement):this
          -7 (-6.25% of base) : 209446.dasm - System.Net.Security.SecureChannel:GetRequestCertificateAuthorities():System.String[]:this
          -8 (-5.33% of base) : 28688.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowsOutWalker:NoteWrite(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.BoundExpression,bool):this
         -11 (-5.21% of base) : 28601.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:VisitPropertyAccess(Microsoft.CodeAnalysis.CSharp.BoundPropertyAccess):Microsoft.CodeAnalysis.CSharp.BoundNode:this
          -8 (-5.16% of base) : 182057.dasm - System.Configuration.ConfigurationSchemaErrors:ThrowIfErrors(bool):this
          -8 (-4.91% of base) : 49698.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:CheckAssigned(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,int):this
         -11 (-4.64% of base) : 28734.dasm - Microsoft.CodeAnalysis.CSharp.ReadWriteWalker:CheckAssigned(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Symbols.FieldSymbol,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):this
         -11 (-4.38% of base) : 210555.dasm - System.Net.Sockets.SocketAsyncEventArgs:StartOperationAccept():this
          -8 (-4.35% of base) : 28689.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowsOutWalker:AssignImpl(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,bool,bool):this
          -8 (-4.19% of base) : 49676.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitFieldAccess(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess):Microsoft.CodeAnalysis.VisualBasic.BoundNode:this
          -8 (-4.10% of base) : 49677.dasm - Microsoft.CodeAnalysis.VisualBasic.DataFlowPass:VisitFieldAccessInReadWriteContext(Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess,int):this
          -8 (-3.65% of base) : 28608.dasm - Microsoft.CodeAnalysis.CSharp.DataFlowPass:IntersectWith(byref,byref):bool:this
         -20 (-3.48% of base) : 105639.dasm - Newtonsoft.Json.Serialization.DefaultContractResolver:InitializeContract(Newtonsoft.Json.Serialization.JsonContract):this
         -15 (-3.46% of base) : 105962.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:CreateNewDictionary(Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonDictionaryContract,byref):System.Collections.IDictionary:this

110 total methods with Code Size differences (99 improved, 11 regressed), 4 unchanged.


libraries_tests.pmi.windows.x64.checked.mch:


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 114063047 (overridden on cmd)
Total bytes of diff: 114061792 (overridden on cmd)
Total bytes of delta: -1255 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
          10 : 121869.dasm (2.62% of base)
           5 : 35173.dasm (0.44% of base)
           3 : 121852.dasm (0.98% of base)
           3 : 121859.dasm (0.98% of base)
           1 : 29166.dasm (0.26% of base)
           1 : 29170.dasm (0.30% of base)
           1 : 126224.dasm (0.22% of base)
           1 : 29164.dasm (0.12% of base)

Top file improvements (bytes):
         -61 : 117581.dasm (-16.85% of base)
         -37 : 114341.dasm (-5.35% of base)
         -29 : 118237.dasm (-1.84% of base)
         -27 : 119509.dasm (-1.79% of base)
         -26 : 119632.dasm (-13.61% of base)
         -26 : 262051.dasm (-2.61% of base)
         -25 : 118243.dasm (-3.14% of base)
         -24 : 118207.dasm (-1.14% of base)
         -24 : 242746.dasm (-1.39% of base)
         -23 : 130619.dasm (-1.20% of base)
         -17 : 121866.dasm (-1.98% of base)
         -17 : 245168.dasm (-5.67% of base)
         -17 : 121848.dasm (-6.32% of base)
         -17 : 125915.dasm (-0.60% of base)
         -16 : 127409.dasm (-1.55% of base)
         -15 : 117016.dasm (-4.21% of base)
         -15 : 123274.dasm (-4.21% of base)
         -15 : 300647.dasm (-2.26% of base)
         -15 : 179560.dasm (-2.26% of base)
         -15 : 242521.dasm (-4.21% of base)

143 total files with Code Size differences (135 improved, 8 regressed), 9 unchanged.

Top method regressions (bytes):
          10 ( 2.62% of base) : 121869.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogTargetFinished(Microsoft.Build.Framework.BuildEventContext,System.String,System.String,System.String,bool,System.Collections.Generic.IEnumerable`1[[Microsoft.Build.Execution.ProjectItemInstance+TaskItem, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):this
           5 ( 0.44% of base) : 35173.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.indexer.genclass.genclass008.genclass008.Test:DoWhileExpression()
           3 ( 0.98% of base) : 121852.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogError(Microsoft.Build.Framework.BuildEventContext,System.String,Microsoft.Build.Shared.BuildEventFileInfo,System.String,System.Object[]):this
           3 ( 0.98% of base) : 121859.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogWarning(Microsoft.Build.Framework.BuildEventContext,System.String,Microsoft.Build.Shared.BuildEventFileInfo,System.String,System.Object[]):this
           1 ( 0.30% of base) : 29170.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do001.do001.Test:MainMethod(System.String[]):int
           1 ( 0.26% of base) : 29166.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do002.do002.Test:MainMethod(System.String[]):int
           1 ( 0.12% of base) : 29164.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do003.do003.Test:MainMethod(System.String[]):int
           1 ( 0.22% of base) : 126224.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ExpressionSyntaxExtensions:IsExpressionOfArgumentInDeconstruction(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax):bool

Top method improvements (bytes):
         -61 (-16.85% of base) : 117581.dasm - Microsoft.Build.Exceptions.InternalLoggerException:.ctor(System.String,System.Exception,Microsoft.Build.Framework.BuildEventArgs,System.String,System.String,bool):this
         -37 (-5.35% of base) : 114341.dasm - Microsoft.Build.Tasks.BindingRedirect:Read(System.Xml.XmlReader):this
         -29 (-1.84% of base) : 118237.dasm - Microsoft.Build.Construction.SolutionFile:GetSolutionFileAndVisualStudioMajorVersions(System.String,byref,byref)
         -27 (-1.79% of base) : 119509.dasm - Microsoft.Build.Evaluation.ProjectRootElementCache:Get(System.String,OpenProjectRootElement,bool,System.Nullable`1[Boolean]):Microsoft.Build.Construction.ProjectRootElement:this
         -26 (-13.61% of base) : 119632.dasm - Microsoft.Build.Experimental.ProjectCache.ProjectCacheException:.ctor(System.String,System.Exception,bool,System.String):this
         -26 (-2.61% of base) : 262051.dasm - NuGet.Versioning.VersionRangeFormatter:PrettyPrint(NuGet.Versioning.VersionRange,bool):System.String:this
         -25 (-3.14% of base) : 118243.dasm - Microsoft.Build.Construction.SolutionFile:ParseSolutionFile():this
         -24 (-1.14% of base) : 118207.dasm - Microsoft.Build.Construction.SolutionFile:ParseProject(System.String):this
         -24 (-1.39% of base) : 242746.dasm - Microsoft.Build.Utilities.ToolLocationHelper:GatherPlatformsForSdk(Microsoft.Build.Utilities.TargetPlatformSDK)
         -23 (-1.20% of base) : 130619.dasm - StringPiece:Split(System.String):System.Collections.Generic.IList`1[StringPiece]
         -17 (-6.32% of base) : 121848.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogComment(Microsoft.Build.Framework.BuildEventContext,int,System.String,System.Object[]):this
         -17 (-1.98% of base) : 121866.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogProjectStarted(Microsoft.Build.Framework.BuildEventContext,int,int,Microsoft.Build.Framework.BuildEventContext,System.String,System.String,System.Collections.Generic.IEnumerable`1[DictionaryEntry],System.Collections.Generic.IEnumerable`1[DictionaryEntry],int):Microsoft.Build.Framework.BuildEventContext:this
         -17 (-0.60% of base) : 125915.dasm - Microsoft.CodeAnalysis.CSharp.Formatting.CSharpTriviaFormatter:GetLineColumnRuleBetween(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.Formatting.LineColumnDelta,bool,Microsoft.CodeAnalysis.SyntaxTrivia):Microsoft.CodeAnalysis.Formatting.LineColumnRule:this
         -17 (-5.67% of base) : 245168.dasm - Microsoft.CodeAnalysis.Scripting.Hosting.CommonMemberFilter:Include(System.Diagnostics.StackFrame):bool:this
         -16 (-1.55% of base) : 127409.dasm - TypeInferrer:InferTypeInAttributeArgument(Microsoft.CodeAnalysis.CSharp.Syntax.AttributeArgumentSyntax,System.Nullable`1[SyntaxToken]):System.Collections.Generic.IEnumerable`1[TypeInferenceInfo]:this
         -15 (-4.21% of base) : 117016.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -15 (-4.21% of base) : 123274.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -15 (-4.21% of base) : 242521.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -15 (-2.26% of base) : 300647.dasm - System.Net.Http.HttpWindowsProxy:TryCreate(byref):bool
         -15 (-2.26% of base) : 179560.dasm - System.Net.Http.HttpWindowsProxy:TryCreate(byref):bool

Top method regressions (percentages):
          10 ( 2.62% of base) : 121869.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogTargetFinished(Microsoft.Build.Framework.BuildEventContext,System.String,System.String,System.String,bool,System.Collections.Generic.IEnumerable`1[[Microsoft.Build.Execution.ProjectItemInstance+TaskItem, Microsoft.Build, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]):this
           3 ( 0.98% of base) : 121852.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogError(Microsoft.Build.Framework.BuildEventContext,System.String,Microsoft.Build.Shared.BuildEventFileInfo,System.String,System.Object[]):this
           3 ( 0.98% of base) : 121859.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogWarning(Microsoft.Build.Framework.BuildEventContext,System.String,Microsoft.Build.Shared.BuildEventFileInfo,System.String,System.Object[]):this
           5 ( 0.44% of base) : 35173.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.context.indexer.genclass.genclass008.genclass008.Test:DoWhileExpression()
           1 ( 0.30% of base) : 29170.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do001.do001.Test:MainMethod(System.String[]):int
           1 ( 0.26% of base) : 29166.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do002.do002.Test:MainMethod(System.String[]):int
           1 ( 0.22% of base) : 126224.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ExpressionSyntaxExtensions:IsExpressionOfArgumentInDeconstruction(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax):bool
           1 ( 0.12% of base) : 29164.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.dynamicType.statements.do003.do003.Test:MainMethod(System.String[]):int

Top method improvements (percentages):
         -61 (-16.85% of base) : 117581.dasm - Microsoft.Build.Exceptions.InternalLoggerException:.ctor(System.String,System.Exception,Microsoft.Build.Framework.BuildEventArgs,System.String,System.String,bool):this
          -7 (-14.29% of base) : 255823.dasm - Microsoft.Assumes:Is(System.Object)
         -26 (-13.61% of base) : 119632.dasm - Microsoft.Build.Experimental.ProjectCache.ProjectCacheException:.ctor(System.String,System.Exception,bool,System.String):this
         -10 (-8.85% of base) : 117741.dasm - Microsoft.Build.Construction.ProjectElementContainer:UpdateElementValue(Microsoft.Build.Construction.ProjectElement):this
         -13 (-8.61% of base) : 118045.dasm - Microsoft.Build.Construction.ProjectRootElement:Reload(bool,System.Nullable`1[Boolean]):this
         -17 (-6.32% of base) : 121848.dasm - Microsoft.Build.BackEnd.Logging.LoggingService:LogComment(Microsoft.Build.Framework.BuildEventContext,int,System.String,System.Object[]):this
         -17 (-5.67% of base) : 245168.dasm - Microsoft.CodeAnalysis.Scripting.Hosting.CommonMemberFilter:Include(System.Diagnostics.StackFrame):bool:this
         -37 (-5.35% of base) : 114341.dasm - Microsoft.Build.Tasks.BindingRedirect:Read(System.Xml.XmlReader):this
          -8 (-4.88% of base) : 126582.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ContextQuery.SyntaxTokenExtensions:IsXmlCrefParameterModifierContext(Microsoft.CodeAnalysis.SyntaxToken):bool
         -12 (-4.24% of base) : 9366.dasm - Microsoft.CodeAnalysis.Formatting.Rules.AnchorIndentationOperation:.ctor(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.Text.TextSpan):this
         -15 (-4.21% of base) : 117016.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -15 (-4.21% of base) : 123274.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -15 (-4.21% of base) : 242521.dasm - Microsoft.Build.Shared.Debugging.PrintLineDebugger:<.cctor>g__ScanNodeMode|21_4(System.String):int
         -13 (-4.21% of base) : 142258.dasm - NuGet.Protocol.Extensions.VersionRangeExtensions:DoesRangeSatisfy(NuGet.Versioning.VersionRange,NuGet.Versioning.NuGetVersion,NuGet.Versioning.NuGetVersion):bool
          -7 (-4.12% of base) : 123862.dasm - ProjectPropertyXmlBacked:set_UnevaluatedValue(System.String):this
          -7 (-4.02% of base) : 7447.dasm - Microsoft.CodeAnalysis.Shared.Extensions.TextDocumentExtensions:WithAdditionalDocumentText(Microsoft.CodeAnalysis.TextDocument,Microsoft.CodeAnalysis.Text.SourceText):Microsoft.CodeAnalysis.TextDocument
          -7 (-4.02% of base) : 7448.dasm - Microsoft.CodeAnalysis.Shared.Extensions.TextDocumentExtensions:WithAnalyzerConfigDocumentText(Microsoft.CodeAnalysis.TextDocument,Microsoft.CodeAnalysis.Text.SourceText):Microsoft.CodeAnalysis.TextDocument
          -8 (-3.56% of base) : 9398.dasm - Microsoft.CodeAnalysis.Formatting.Rules.SuppressOperation:.ctor(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.Text.TextSpan,int):this
         -11 (-3.31% of base) : 119193.dasm - Microsoft.Build.Evaluation.ProjectMetadata:set_UnevaluatedValue(System.String):this
          -7 (-3.30% of base) : 118135.dasm - Microsoft.Build.Construction.ProjectChooseElement:CreateDisconnected(Microsoft.Build.Construction.ProjectRootElement):Microsoft.Build.Construction.ProjectChooseElement

143 total methods with Code Size differences (135 improved, 8 regressed), 9 unchanged.


Catch patterns like the one in dotnet#37904 where a trinary compare feeds a
binary compare.
@AndyAyersMS
Copy link
Member Author

The odd non-windows installer failure is still there, looks like I'll have to debug it.

@AndyAyersMS
Copy link
Member Author

@dotnet/jit-contrib think this is ready for review.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants