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: simple forward substitution pass #63720

Merged
merged 30 commits into from
Feb 4, 2022

Conversation

AndyAyersMS
Copy link
Member

@AndyAyersMS AndyAyersMS commented Jan 13, 2022

Extend ref counting done by local morph so that we can determine
single-def single-use locals.

Add a phase that runs just after local morph that will attempt to
forward single-def single-use local defs to uses when they are in
adjacent statements.

Fix or work around issues uncovered elsewhere:

  • gtFoldExprCompare might fold "identical" volatile subtrees
  • fgGetStubAddrArg cannot handle complex trees
  • some simd/hw operations can lose struct handles
  • some calls cannot handle struct local args

Addresses #6973 and related issues. Still sorting through exactly
which ones are fixed, so list below may need revising.

Fixes #48605.
Fixes #51599.
Fixes #55472.

Improves some but not all cases in #12880 and #62604.

Does not address #33002, #47082, or #63116; these require handling multiple
uses or bypassing statements.

Extend ref counting done by local morph so that we can determine
single-def single-use locals.

Add a phase that runs just after local morph that will attempt to
forward single-def single-use local defs to uses when they are in
adjacent statements.

Fix or work around issues uncovered elsewhere:
* `gtFoldExprCompare` might fold "identical" volatile subtrees
* `fgGetStubAddrArg` cannot handle complex trees
* some simd/hw operations can lose struct handles
* some calls cannot handle struct local args

Addresses dotnet#6973 and related issues. Still sorting through exactly
which ones are fixed, so list below may need revising.

Fixes dotnet#48605.
Fixes dotnet#51599.
Fixes dotnet#55472.

Improves some but not all cases in dotnet#12280 and dotnet#62064.

Does not fix dotnet#33002, dotnet#47082, or dotnet#63116; these require handling multiple
uses or bypassing statements.
@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 Jan 13, 2022
@ghost ghost assigned AndyAyersMS Jan 13, 2022
@ghost
Copy link

ghost commented Jan 13, 2022

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

Issue Details

Extend ref counting done by local morph so that we can determine
single-def single-use locals.

Add a phase that runs just after local morph that will attempt to
forward single-def single-use local defs to uses when they are in
adjacent statements.

Fix or work around issues uncovered elsewhere:

  • gtFoldExprCompare might fold "identical" volatile subtrees
  • fgGetStubAddrArg cannot handle complex trees
  • some simd/hw operations can lose struct handles
  • some calls cannot handle struct local args

Addresses #6973 and related issues. Still sorting through exactly
which ones are fixed, so list below may need revising.

Fixes #48605.
Fixes #51599.
Fixes #55472.

Improves some but not all cases in #12280 and #62064.

Does not fix #33002, #47082, or #63116; these require handling multiple
uses or bypassing statements.

Author: AndyAyersMS
Assignees: -
Labels:

area-CodeGen-coreclr

Milestone: -

@AndyAyersMS
Copy link
Member Author

cc @dotnet/jit-contrib

Large numbers of diffs expected. A few large regressions where we now decide to clone loops. Some small regressions where we now report generics context where we didn't previously (possibly a bug fix, the exact requirements here are a bit squishy). Lots of improvements.

Will post some examples once this gets a bit further along.

@AndyAyersMS
Copy link
Member Author

Looks like various issues cropping up during crossgen for non-windows non-x64 builds. Hopefully minor.

@ShreyasJejurkar
Copy link
Contributor

Just a note merging this PR will close these issues as well! Maybe put some dash or whitespace to avoid I guess!
image

// if the next tree can't change the value of fwdSubNode or be adversly impacted by fwdSubNode effects
//
const bool fwdSubNodeInvariant = ((fwdSubNode->gtFlags & GTF_ALL_EFFECT) == 0);
const bool nextTreeIsPureUpToUse = ((fsv.GetFlags() & (GTF_EXCEPT | GTF_GLOB_REF | GTF_CALL)) == 0);
Copy link
Contributor

@SingleAccretion SingleAccretion Jan 13, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels very risky to rely on GTF_GLOB_REF before (or, really, after, since we don't have the checker enabled for it) morph. For example:

static int* _lclAddr;

[MethodImpl(MethodImplOptions.NoInlining)]
static int Problem(int a, int b)
{
    [MethodImpl(MethodImplOptions.NoInlining)]
    static void CaptureLcl(int* lclAddr)
    {
        _lclAddr = lclAddr;
    }

    [MethodImpl(MethodImplOptions.NoInlining)]
    static int MutateLcl()
    {
        (*_lclAddr)++;
        return 0;
    }

    CaptureLcl(&a);

    b = a + a;

    return MutateLcl() + b; // We will forward-substitute 'b' because "a + a" won't have GTF_GLOB_REF on it.
}

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the example. Seems like we'll need to walk over the tree to substitute and compute the actual set of effects flags.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added some extra flags scanning.

@AndyAyersMS
Copy link
Member Author

Going to set this aside for a while to focus on OSR. Looks like:

  • there are possibly restrictions with forwarding unmanaged calls (messed up pinvoke transitions)
  • something perhaps wrong with native AOT. Tried reproing this but was unable to build the tests properly.
  • SPMI diffs may be too large to download? I can run them locally, but they take a long time...

@EgorBo feel free to look into any of the above.

@AndyAyersMS
Copy link
Member Author

JIT/Directed/debugging/debuginfo/tester is failing everywhere as we're evidently removing statements with debug info. Wonder if we should be merging debug info somehow.

@AndyAyersMS
Copy link
Member Author

Latest diff summary for windows x64 (since CI runs are still unable to provide data, likely because of the huge number of impacted methods):

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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 20437148 (overridden on cmd)
Total bytes of diff: 20404319 (overridden on cmd)
Total bytes of delta: -32829 (-0.16 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
         359 : 31193.dasm (67.99% of base)
         195 : 64130.dasm (1.13% of base)
          65 : 52047.dasm (7.78% of base)
          60 : 50166.dasm (7.21% of base)
          47 : 51516.dasm (5.08% of base)
          46 : 65775.dasm (0.44% of base)
          35 : 18861.dasm (5.20% of base)
          32 : 34557.dasm (1.30% of base)
          32 : 62779.dasm (0.63% of base)
          32 : 66812.dasm (1.30% of base)
          31 : 60170.dasm (1.22% of base)
          29 : 50431.dasm (3.08% of base)
          26 : 44637.dasm (1.50% of base)
          26 : 62781.dasm (0.26% of base)
          25 : 35794.dasm (1.03% of base)
          25 : 27528.dasm (1.28% of base)
          24 : 65641.dasm (0.45% of base)
          24 : 15218.dasm (2.63% of base)
          23 : 47807.dasm (3.43% of base)
          20 : 25977.dasm (1.56% of base)

Top file improvements (bytes):
        -159 : 29878.dasm (-4.16% of base)
        -156 : 66000.dasm (-2.75% of base)
        -155 : 60074.dasm (-2.73% of base)
        -126 : 45282.dasm (-1.79% of base)
        -119 : 11935.dasm (-4.35% of base)
        -119 : 21417.dasm (-3.42% of base)
        -111 : 49734.dasm (-1.57% of base)
        -110 : 13529.dasm (-1.57% of base)
        -110 : 19013.dasm (-1.57% of base)
        -106 : 62732.dasm (-1.61% of base)
        -102 : 27959.dasm (-3.88% of base)
        -100 : 29887.dasm (-4.56% of base)
        -100 : 59804.dasm (-3.23% of base)
         -95 : 14570.dasm (-3.87% of base)
         -94 : 62240.dasm (-2.86% of base)
         -91 : 67942.dasm (-2.99% of base)
         -90 : 28632.dasm (-3.55% of base)
         -90 : 29610.dasm (-4.65% of base)
         -88 : 25713.dasm (-4.42% of base)
         -88 : 25742.dasm (-1.48% of base)

5478 total files with Code Size differences (4779 improved, 699 regressed), 2627 unchanged.

Top method regressions (bytes):
         359 (67.99% of base) : 31193.dasm - MethodBase:CheckArguments(byref,ReadOnlySpan`1,Binder,int,CultureInfo,ref):Span`1:this
         195 ( 1.13% of base) : 64130.dasm - NpgsqlTypeMappingSource:.ctor(TypeMappingSourceDependencies,RelationalTypeMappingSourceDependencies,ISqlGenerationHelper,INpgsqlOptions):this
          65 ( 7.78% of base) : 52047.dasm - TextEncoder:EncodeToNewString(ReadOnlySpan`1,int):String:this
          60 ( 7.21% of base) : 50166.dasm - TextEncoder:EncodeToNewString(ReadOnlySpan`1,int):String:this
          47 ( 5.08% of base) : 51516.dasm - CancellationTokenSource:Register(Delegate,Object,SynchronizationContext,ExecutionContext):CancellationTokenRegistration:this
          46 ( 0.44% of base) : 65775.dasm - SelectExpression:ApplyProjection(Expression,int,int):Expression:this
          35 ( 5.20% of base) : 18861.dasm - ResourceManager:GetFirstResourceSet(CultureInfo):ResourceSet:this
          32 ( 1.30% of base) : 34557.dasm - HttpParser`1:ParseHeaders(Http1ParsingHandler,byref):bool:this
          32 ( 1.30% of base) : 66812.dasm - HttpParser`1:ParseHeaders(Http1ParsingHandler,byref):bool:this
          32 ( 0.63% of base) : 62779.dasm - NpgsqlMemberTranslatorProvider:.ctor(RelationalMemberTranslatorProviderDependencies,IModel,IRelationalTypeMappingSource,INpgsqlOptions):this
          31 ( 1.22% of base) : 60170.dasm - <OpenInternalAsync>d__70:MoveNext():this
          29 ( 3.08% of base) : 50431.dasm - ViewLocationCacheKey:GetHashCode():int:this
          26 ( 1.50% of base) : 44637.dasm - DbContextOptions:GetHashCode():int:this
          26 ( 0.26% of base) : 62781.dasm - NpgsqlMethodCallTranslatorProvider:.ctor(RelationalMethodCallTranslatorProviderDependencies,IModel,INpgsqlOptions):this
          25 ( 1.28% of base) : 27528.dasm - DfaMatcherBuilder:CreateCandidate(Endpoint,int):Candidate:this
          25 ( 1.03% of base) : 35794.dasm - JsonMiddleware:Invoke(HttpContext):Task:this
          24 ( 2.63% of base) : 15218.dasm - HttpProtocol:CreateResponseHeaders(bool):HttpResponseHeaders:this
          24 ( 0.45% of base) : 65641.dasm - IncludeExpandingExpressionVisitor:ExpandIncludesHelper(Expression,EntityReference,INavigationBase):Expression:this
          23 ( 3.43% of base) : 47807.dasm - ConnectorTypeMapper:Reset():this
          20 ( 5.12% of base) : 58929.dasm - DefaultViewCompiler:EnsureCompiledViews(ILogger):this

Top method improvements (bytes):
        -159 (-4.16% of base) : 29878.dasm - <ConnectAsync>d__96:MoveNext():this
        -156 (-2.75% of base) : 66000.dasm - <ExecuteReaderAsync>d__19:MoveNext():this
        -155 (-2.73% of base) : 60074.dasm - <ExecuteReaderAsync>d__19:MoveNext():this
        -126 (-1.79% of base) : 45282.dasm - <ExecuteReaderAsync>d__19:MoveNext():this
        -119 (-3.42% of base) : 21417.dasm - <ConnectAsync>d__96:MoveNext():this
        -119 (-4.35% of base) : 11935.dasm - ThreadPoolWorkQueue:Dispatch():bool
        -111 (-1.57% of base) : 49734.dasm - <ExecuteReaderAsync>d__19:MoveNext():this
        -110 (-1.57% of base) : 13529.dasm - HttpRequestHeaders:Append(ReadOnlySpan`1,ReadOnlySpan`1,bool):this
        -110 (-1.57% of base) : 19013.dasm - HttpRequestHeaders:Append(ReadOnlySpan`1,ReadOnlySpan`1,bool):this
        -106 (-1.61% of base) : 62732.dasm - <ExecuteReaderAsync>d__19:MoveNext():this
        -102 (-3.88% of base) : 27959.dasm - <GetHttp11ConnectionAsync>d__75:MoveNext():this
        -100 (-4.56% of base) : 29887.dasm - <CreateHttp11ConnectionAsync>d__98:MoveNext():this
        -100 (-3.23% of base) : 59804.dasm - <ReceiveBlobAsync>d__174`1:MoveNext():this
         -95 (-3.87% of base) : 14570.dasm - ThreadPoolWorkQueue:Dispatch():bool
         -94 (-2.86% of base) : 62240.dasm - <ReceiveBlobAsync>d__174`1:MoveNext():this
         -91 (-2.99% of base) : 67942.dasm - <QueryAsync>d__33`1:MoveNext():this
         -90 (-3.55% of base) : 28632.dasm - <GetHttp11ConnectionAsync>d__75:MoveNext():this
         -90 (-4.65% of base) : 29610.dasm - <GetHttp11ConnectionAsync>d__75:MoveNext():this
         -88 (-4.42% of base) : 25713.dasm - <GetHttp11ConnectionAsync>d__75:MoveNext():this
         -88 (-1.48% of base) : 25742.dasm - <WriteHeadersAsync>d__56:MoveNext():this

Top method regressions (percentages):
         359 (67.99% of base) : 31193.dasm - MethodBase:CheckArguments(byref,ReadOnlySpan`1,Binder,int,CultureInfo,ref):Span`1:this
           7 (24.14% of base) : 64420.dasm - OnEntityTypeAddedNode:Run(ConventionDispatcher):this
           7 (24.14% of base) : 64763.dasm - OnKeyAddedNode:Run(ConventionDispatcher):this
           7 (24.14% of base) : 64692.dasm - OnPropertyAddedNode:Run(ConventionDispatcher):this
           7 (24.14% of base) : 64831.dasm - OnPropertyNullableChangedNode:Run(ConventionDispatcher):this
           7 (24.14% of base) : 20658.dasm - String:GetHashCode():int:this
          11 (23.40% of base) : 34174.dasm - OrdinalCaseSensitiveComparer:GetHashCode(String):int:this
          11 (23.40% of base) : 51784.dasm - OrdinalCaseSensitiveComparer:GetHashCode(String):int:this
          11 (23.40% of base) : 43070.dasm - OrdinalCaseSensitiveComparer:GetHashCode(String):int:this
          11 (23.40% of base) : 31283.dasm - OrdinalCaseSensitiveComparer:GetHashCode(String):int:this
          11 (23.40% of base) : 48194.dasm - OrdinalCaseSensitiveComparer:GetHashCode(String):int:this
          11 (23.40% of base) : 48486.dasm - OrdinalCaseSensitiveComparer:GetHashCode(String):int:this
          11 (23.40% of base) : 61243.dasm - OrdinalCaseSensitiveComparer:GetHashCode(String):int:this
           7 (18.92% of base) : 62267.dasm - IdnMapping:get_NlsFlags():int:this
           7 (18.92% of base) : 49152.dasm - IdnMapping:get_NlsFlags():int:this
           7 (18.92% of base) : 44254.dasm - IdnMapping:get_NlsFlags():int:this
          10 (17.54% of base) : 14792.dasm - ILStubClass:IL_STUB_PInvoke(int,long):int
          14 (13.46% of base) : 15795.dasm - AwaitableSocketAsyncEventArgs:Release():this
          14 (13.46% of base) : 6199.dasm - AwaitableSocketAsyncEventArgs:Release():this
          15 (12.71% of base) : 54664.dasm - ControllerFactoryProvider:GetPropertiesToActivate(ControllerActionDescriptor):ref:this

Top method improvements (percentages):
          -3 (-37.50% of base) : 15829.dasm - HeartbeatManager:get_UtcNowTicks():long:this
         -32 (-31.37% of base) : 48870.dasm - IEnumerableCallSite:.ctor(ResultCache,Type,ref):this
         -51 (-31.10% of base) : 44776.dasm - TypeMappingInfo:.ctor(Type,bool,Nullable`1,Nullable`1,Nullable`1,Nullable`1,Nullable`1):this
         -51 (-31.10% of base) : 62677.dasm - TypeMappingInfo:.ctor(Type,bool,Nullable`1,Nullable`1,Nullable`1,Nullable`1,Nullable`1):this
         -51 (-31.10% of base) : 49523.dasm - TypeMappingInfo:.ctor(Type,bool,Nullable`1,Nullable`1,Nullable`1,Nullable`1,Nullable`1):this
          -3 (-30.00% of base) : 1028.dasm - Socket:get_SafeHandle():SafeSocketHandle:this
         -47 (-29.38% of base) : 60036.dasm - TypeMappingInfo:.ctor(Type,bool,Nullable`1,Nullable`1,Nullable`1,Nullable`1,Nullable`1):this
          -8 (-27.59% of base) : 48895.dasm - ResultCache:.ctor(int,ServiceCacheKey):this
          -3 (-27.27% of base) : 22339.dasm - ProxyConfigManager:GetChangeToken():IChangeToken:this
          -8 (-21.62% of base) : 6285.dasm - Complex:Abs():double:this
         -28 (-20.59% of base) : 29690.dasm - CancellationTokenSource:TryReset():bool:this
         -28 (-20.59% of base) : 25168.dasm - CancellationTokenSource:TryReset():bool:this
         -25 (-18.80% of base) : 18727.dasm - CancellationTokenSource:TryReset():bool:this
         -25 (-18.80% of base) : 16354.dasm - CancellationTokenSource:TryReset():bool:this
         -84 (-18.58% of base) : 16480.dasm - AdjustmentRule:get_HasDaylightSaving():bool:this
         -31 (-17.32% of base) : 65406.dasm - NpgsqlDecimalTypeMapping:Clone(RelationalTypeMappingParameters):RelationalTypeMapping:this
         -31 (-17.32% of base) : 65358.dasm - NpgsqlDoubleTypeMapping:Clone(RelationalTypeMappingParameters):RelationalTypeMapping:this
         -31 (-17.32% of base) : 65413.dasm - NpgsqlFloatTypeMapping:Clone(RelationalTypeMappingParameters):RelationalTypeMapping:this
         -31 (-16.40% of base) : 65409.dasm - NpgsqlCidrTypeMapping:Clone(RelationalTypeMappingParameters):RelationalTypeMapping:this
         -31 (-16.40% of base) : 65408.dasm - NpgsqlInetTypeMapping:Clone(RelationalTypeMappingParameters):RelationalTypeMapping:this

5478 total methods with Code Size differences (4779 improved, 699 regressed), 2627 unchanged.


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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 12150977 (overridden on cmd)
Total bytes of diff: 12143455 (overridden on cmd)
Total bytes of delta: -7522 (-0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
         356 : 324.dasm (54.19% of base)
         116 : 22084.dasm (7.94% of base)
          81 : 7226.dasm (2.07% of base)
          70 : 12172.dasm (1.56% of base)
          51 : 1459.dasm (0.72% of base)
          39 : 6819.dasm (3.18% of base)
          39 : 15683.dasm (0.97% of base)
          39 : 17699.dasm (5.08% of base)
          39 : 2984.dasm (4.64% of base)
          39 : 17635.dasm (4.53% of base)
          36 : 20032.dasm (1.63% of base)
          36 : 8172.dasm (1.23% of base)
          33 : 5635.dasm (13.41% of base)
          32 : 17461.dasm (2.28% of base)
          31 : 17238.dasm (8.45% of base)
          31 : 22230.dasm (3.60% of base)
          30 : 18974.dasm (0.75% of base)
          29 : 8974.dasm (1.26% of base)
          29 : 6278.dasm (5.99% of base)
          27 : 9714.dasm (19.57% of base)

Top file improvements (bytes):
        -351 : 17979.dasm (-7.50% of base)
        -194 : 12466.dasm (-14.50% of base)
        -141 : 5943.dasm (-3.66% of base)
        -134 : 10075.dasm (-15.78% of base)
        -116 : 5941.dasm (-7.08% of base)
        -100 : 10080.dasm (-2.79% of base)
         -87 : 5916.dasm (-3.34% of base)
         -75 : 22440.dasm (-3.60% of base)
         -72 : 1287.dasm (-5.28% of base)
         -70 : 6054.dasm (-4.39% of base)
         -65 : 2901.dasm (-10.06% of base)
         -64 : 8010.dasm (-1.37% of base)
         -64 : 6071.dasm (-0.41% of base)
         -63 : 18262.dasm (-2.73% of base)
         -60 : 5932.dasm (-3.83% of base)
         -60 : 1586.dasm (-1.75% of base)
         -59 : 6049.dasm (-5.48% of base)
         -57 : 16172.dasm (-2.67% of base)
         -54 : 16142.dasm (-5.15% of base)
         -54 : 5945.dasm (-2.01% of base)

1888 total files with Code Size differences (1502 improved, 386 regressed), 9226 unchanged.

Top method regressions (bytes):
         356 (54.19% of base) : 324.dasm - System.Reflection.MethodBase:CheckArguments(byref,System.ReadOnlySpan`1[[System.Object, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Reflection.Binder,int,System.Globalization.CultureInfo,System.RuntimeType[]):System.Span`1[[System.Object, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]:this
         116 ( 7.94% of base) : 22084.dasm - System.Net.Dns:GetHostEntryOrAddressesCore(System.Net.IPAddress,bool,int,Microsoft.Extensions.Internal.ValueStopwatch):System.Object
          81 ( 2.07% of base) : 7226.dasm - MessagePack.Internal.DynamicObjectTypeBuilder:BuildSerialize(System.Type,MessagePack.Internal.ObjectSerializationInfo,System.Reflection.Emit.ILGenerator,System.Action,System.Func`3[[System.Int32, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[MessagePack.Internal.ObjectSerializationInfo+EmittableMember, MessagePack, Version=1.9.0.0, Culture=neutral, PublicKeyToken=b4a0369545f0a1be],[System.Action, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],int)
          70 ( 1.56% of base) : 12172.dasm - System.Runtime.Serialization.Json.XmlJsonReader:Read():bool:this
          51 ( 0.72% of base) : 1459.dasm - ProtoBuf.Meta.MetaType:ApplyDefaultBehaviourImpl(int):this
          39 ( 5.08% of base) : 17699.dasm - Microsoft.CodeAnalysis.CSharp.ExecutableCodeBinder:ComputeBinderMap():this
          39 ( 4.53% of base) : 17635.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:AddSynthesizedConstructorsIfNecessary(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=2.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ImmutableArray`1],Microsoft.CodeAnalysis.DiagnosticBag):this
          39 ( 0.97% of base) : 15683.dasm - System.Diagnostics.Process:StartWithCreateProcess(System.Diagnostics.ProcessStartInfo):bool:this
          39 ( 4.64% of base) : 2984.dasm - System.Resources.ResourceManager:GetFirstResourceSet(System.Globalization.CultureInfo):System.Resources.ResourceSet:this
          39 ( 3.18% of base) : 6819.dasm - System.Text.Json.Tests.Perf_Reader:Setup():this
          36 ( 1.63% of base) : 20032.dasm - CriticalHelper:ReadSimpleDictionary(System.Runtime.Serialization.CollectionDataContract,System.Type):this
          36 ( 1.23% of base) : 8172.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[],System.String):System.Reflection.Assembly
          33 (13.41% of base) : 5635.dasm - System.Net.IPAddress:.ctor(System.ReadOnlySpan`1[Byte]):this
          32 ( 2.28% of base) : 17461.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[__Canon,__Canon][System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[__Canon],int):bool:this
          31 ( 3.60% of base) : 22230.dasm - Enumerator[Int32][System.Int32]:.ctor(Node[Int32],Builder[Int32],int,int,bool):this
          31 ( 8.45% of base) : 17238.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode:ComputeSyntaxTree(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode):Microsoft.CodeAnalysis.SyntaxTree
          30 ( 0.75% of base) : 18974.dasm - CriticalHelper:ReadCollection(System.Runtime.Serialization.CollectionDataContract):this
          29 ( 1.26% of base) : 8974.dasm - System.Numerics.BigIntegerCalculator:PowCore(System.Span`1[UInt32],int,System.ReadOnlySpan`1[UInt32],System.ReadOnlySpan`1[UInt32],System.Span`1[UInt32],System.Span`1[UInt32])
          29 ( 5.99% of base) : 6278.dasm - System.Reflection.PortableExecutable.PEReader:ReadDebugDirectory():System.Collections.Immutable.ImmutableArray`1[DebugDirectoryEntry]:this
          27 ( 9.44% of base) : 6696.dasm - Newtonsoft.Json.Linq.JObject:Property(System.String,int):Newtonsoft.Json.Linq.JProperty:this

Top method improvements (bytes):
        -351 (-7.50% of base) : 17979.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckValueKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,ushort,bool,Microsoft.CodeAnalysis.DiagnosticBag):bool:this
        -194 (-14.50% of base) : 12466.dasm - System.Diagnostics.Tracing.EventSource:WriteEventWithRelatedActivityIdCore(int,long,int,long):this
        -141 (-3.66% of base) : 5943.dasm - <ConnectAsync>d__96:MoveNext():this
        -134 (-15.78% of base) : 10075.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
        -116 (-7.08% of base) : 5941.dasm - <CreateHttp11ConnectionAsync>d__98:MoveNext():this
        -100 (-2.79% of base) : 10080.dasm - <ReceiveBlobAsync>d__174`1[AsyncReadWriteAdapter][System.Net.Security.AsyncReadWriteAdapter]:MoveNext():this
         -87 (-3.34% of base) : 5916.dasm - <GetHttp11ConnectionAsync>d__75:MoveNext():this
         -75 (-3.60% of base) : 22440.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_ActiveOrUpcomingEventFormatter2:Deserialize(byref,Utf8Json.IJsonFormatterResolver):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:this
         -72 (-5.28% of base) : 1287.dasm - MicroBenchmarks.Serializers.DataGenerator:CreateMyEventsListerItem():MicroBenchmarks.Serializers.MyEventsListerItem
         -70 (-4.39% of base) : 6054.dasm - <ApplyPlaintextFilterAsync>d__100:MoveNext():this
         -65 (-10.06% of base) : 2901.dasm - Sigil.Impl.BufferedILGenerator`1[__Canon][System.__Canon]:Emit(System.Reflection.Emit.OpCode,Sigil.Label,byref):this
         -64 (-0.41% of base) : 6071.dasm - <SendAsyncCore>d__60:MoveNext():this
         -64 (-1.37% of base) : 8010.dasm - Newtonsoft.Json.JsonWriter:WriteValue(Newtonsoft.Json.JsonWriter,int,System.Object)
         -63 (-2.73% of base) : 18262.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMyEventsListerViewModel:Read4_MyEventsListerItem(bool,bool):MicroBenchmarks.Serializers.MyEventsListerItem:this
         -60 (-3.83% of base) : 5932.dasm - <AddHttp11ConnectionAsync>d__73:MoveNext():this
         -60 (-1.75% of base) : 1586.dasm - ProtoBuf.Meta.MetaType:BuildSerializer():ProtoBuf.Internal.Serializers.IProtoTypeSerializer:this
         -59 (-5.48% of base) : 6049.dasm - <ConstructHttp11ConnectionAsync>d__101:MoveNext():this
         -57 (-2.67% of base) : 16172.dasm - Utf8Json.Formatters.MicroBenchmarks_Serializers_MyEventsListerItemFormatter2:Deserialize(byref,Utf8Json.IJsonFormatterResolver):MicroBenchmarks.Serializers.MyEventsListerItem:this
         -54 (-2.01% of base) : 5945.dasm - <ConnectToTcpHostAsync>d__97:MoveNext():this
         -54 (-5.15% of base) : 16142.dasm - LUDecomp:build_problem(System.Double[][],int,System.Double[])

Top method regressions (percentages):
         356 (54.19% of base) : 324.dasm - System.Reflection.MethodBase:CheckArguments(byref,System.ReadOnlySpan`1[[System.Object, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.Reflection.Binder,int,System.Globalization.CultureInfo,System.RuntimeType[]):System.Span`1[[System.Object, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]:this
           7 (35.00% of base) : 21467.dasm - System.Tests.Perf_String:Concat_str_str_str(System.Tests.StringArguments):System.String:this
          11 (33.33% of base) : 19567.dasm - <>c__DisplayClass2_1:<RenderSingleThreadedWithADT>b__1(int,int):this
          11 (33.33% of base) : 19017.dasm - <>c__DisplayClass3_1:<RenderSingleThreadedNoADT>b__1(int,int):this
          11 (33.33% of base) : 20098.dasm - <>c__DisplayClass3_1:<RenderSingleThreadedNoADT>b__1(long,int):this
          11 (33.33% of base) : 20620.dasm - <>c__DisplayClass4_1:<RenderSingleThreadedWithADT>b__1(long,int):this
           6 (26.09% of base) : 8317.dasm - System.Text.RegularExpressions.Capture:get_Value():System.String:this
          25 (26.04% of base) : 17640.dasm - Microsoft.CodeAnalysis.ArrayBuilderExtensions:Any(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[ImmutableArray`1],System.Func`2[ImmutableArray`1,Boolean]):bool
           7 (24.14% of base) : 2598.dasm - System.String:GetHashCode():int:this
          24 (20.87% of base) : 9237.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeToSymbolicConverter:<Convert>g__EnsureNewlinePredicateInitialized|9_0():this
          27 (19.57% of base) : 9714.dasm - System.Uri:ToString():System.String:this
          17 (17.89% of base) : 19399.dasm - System.Text.RegularExpressions.Symbolic.RegexNodeToSymbolicConverter:<Convert>g__EnsureWordLetterPredicateInitialized|9_1():this
          23 (17.69% of base) : 6736.dasm - Newtonsoft.Json.Linq.JObject:WriteTo(Newtonsoft.Json.JsonWriter,Newtonsoft.Json.JsonConverter[]):this
           7 (17.50% of base) : 1692.dasm - ProtoBuf.Serializers.RepeatedSerializerStub:EmitProvider(System.Reflection.Emit.ILGenerator):this
           4 (14.81% of base) : 21912.dasm - System.Tests.Perf_String:Concat_str_str_str_str(System.Tests.StringArguments):System.String:this
           7 (14.00% of base) : 19019.dasm - StoreBlock.AnyLocation:InitBlockAllZeros8():this
           7 (13.73% of base) : 19570.dasm - StoreBlock.AnyLocation:InitBlockAllOnes8():this
          33 (13.41% of base) : 5635.dasm - System.Net.IPAddress:.ctor(System.ReadOnlySpan`1[Byte]):this
          11 (12.94% of base) : 4072.dasm - System.Xml.XmlTextReaderImpl:ElementNamespaceLookup():this
          27 ( 9.44% of base) : 6696.dasm - Newtonsoft.Json.Linq.JObject:Property(System.String,int):Newtonsoft.Json.Linq.JProperty:this

Top method improvements (percentages):
         -24 (-42.11% of base) : 3757.dasm - EscaperImplementation:.ctor(bool):this
          -8 (-42.11% of base) : 14454.dasm - System.Span`1[__Canon][System.__Canon]:Clear():this
          -8 (-27.59% of base) : 4154.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache:.ctor(int,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey):this
         -10 (-25.00% of base) : 9639.dasm - DataMemberComparer:Compare(System.Runtime.Serialization.DataMember,System.Runtime.Serialization.DataMember):int:this
          -3 (-25.00% of base) : 23079.dasm - System.Threading.Tests.Perf_Volatile:Read_double():double:this
         -22 (-20.00% of base) : 11532.dasm - System.Buffers.Tests.BufferSegment`1[Byte][System.Byte]:Append(System.ReadOnlyMemory`1[Byte]):System.Buffers.Tests.BufferSegment`1[Byte]:this
         -22 (-20.00% of base) : 5568.dasm - System.Memory.BufferSegment`1[Byte][System.Byte]:Append(System.ReadOnlyMemory`1[Byte]):System.Memory.BufferSegment`1[Byte]:this
         -52 (-19.55% of base) : 18264.dasm - Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderMyEventsListerViewModel:Read1_NullableOfDateTimeOffset(bool):System.Nullable`1[DateTimeOffset]:this
         -33 (-17.65% of base) : 17612.dasm - Microsoft.CodeAnalysis.CSharp.Binder:WithUnsafeRegionIfNecessary(Microsoft.CodeAnalysis.SyntaxTokenList):Microsoft.CodeAnalysis.CSharp.Binder:this
         -31 (-17.61% of base) : 12618.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[__Canon][System.__Canon]:ReadAheadPropertyValue(byref,byref,System.Text.Json.Serialization.Metadata.JsonPropertyInfo):bool
         -31 (-17.61% of base) : 23561.dasm - System.Text.Json.Serialization.Converters.ObjectDefaultConverter`1[LargeStructWithProperties][MicroBenchmarks.Serializers.LargeStructWithProperties]:ReadAheadPropertyValue(byref,byref,System.Text.Json.Serialization.Metadata.JsonPropertyInfo):bool
         -28 (-15.91% of base) : 6755.dasm - Newtonsoft.Json.JsonWriter:Pop():int:this
         -16 (-15.84% of base) : 20200.dasm - System.Numerics.Matrix4x4:op_Equality(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4):bool
        -134 (-15.78% of base) : 10075.dasm - System.Net.Security.SslSessionsCache:<CacheCredential>g__ShrinkCredentialCache|5_0()
         -10 (-15.38% of base) : 10920.dasm - System.Net.Http.HttpConnectionPool:GetSslOptionsForRequest(System.Net.Http.HttpRequestMessage):System.Net.Security.SslClientAuthenticationOptions:this
         -16 (-15.38% of base) : 16312.dasm - System.Numerics.Matrix4x4:op_Inequality(System.Numerics.Matrix4x4,System.Numerics.Matrix4x4):bool
         -12 (-15.19% of base) : 22559.dasm - DynamicClass:StartDateSetter(System.Object,System.DateTimeOffset)
         -15 (-14.85% of base) : 6132.dasm - System.Net.Http.HttpConnection:EqualsOrdinal(System.String,System.ReadOnlySpan`1[Byte]):bool
          -6 (-14.63% of base) : 11077.dasm - <>c:<set_MaxCacheSize>b__11_0(Node,Node):int:this
        -194 (-14.50% of base) : 12466.dasm - System.Diagnostics.Tracing.EventSource:WriteEventWithRelatedActivityIdCore(int,long,int,long):this

1888 total methods with Code Size differences (1502 improved, 386 regressed), 9226 unchanged.


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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 125687386 (overridden on cmd)
Total bytes of diff: 125612814 (overridden on cmd)
Total bytes of delta: -74572 (-0.06 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
        4305 : 228767.dasm (3.56% of base)
        4203 : 228757.dasm (3.44% of base)
         636 : 219486.dasm (0.45% of base)
         624 : 219389.dasm (0.46% of base)
         581 : 219369.dasm (0.44% of base)
         565 : 219466.dasm (0.42% of base)
         415 : 219418.dasm (0.34% of base)
         415 : 219428.dasm (0.34% of base)
         415 : 219251.dasm (0.34% of base)
         415 : 219270.dasm (0.34% of base)
         295 : 234492.dasm (1.28% of base)
         280 : 234556.dasm (1.21% of base)
         277 : 234630.dasm (1.19% of base)
         268 : 234529.dasm (1.11% of base)
         268 : 234640.dasm (1.14% of base)
         265 : 234566.dasm (1.13% of base)
         264 : 228650.dasm (1.07% of base)
         264 : 228656.dasm (1.07% of base)
         259 : 219213.dasm (0.20% of base)
         254 : 219309.dasm (0.20% of base)

Top file improvements (bytes):
       -1526 : 161218.dasm (-16.72% of base)
       -1210 : 256458.dasm (-8.81% of base)
       -1105 : 226565.dasm (-7.16% of base)
       -1105 : 226568.dasm (-7.16% of base)
       -1059 : 93555.dasm (-21.56% of base)
       -1059 : 91021.dasm (-20.44% of base)
       -1059 : 90808.dasm (-20.43% of base)
       -1059 : 90810.dasm (-20.64% of base)
       -1057 : 93557.dasm (-20.95% of base)
       -1057 : 93559.dasm (-20.57% of base)
        -980 : 161488.dasm (-14.06% of base)
        -953 : 90805.dasm (-17.20% of base)
        -944 : 164092.dasm (-13.61% of base)
        -933 : 90813.dasm (-14.68% of base)
        -846 : 256459.dasm (-7.91% of base)
        -843 : 229545.dasm (-1.40% of base)
        -819 : 229550.dasm (-1.36% of base)
        -739 : 161442.dasm (-8.38% of base)
        -632 : 162140.dasm (-10.33% of base)
        -572 : 164550.dasm (-9.60% of base)

12030 total files with Code Size differences (10443 improved, 1587 regressed), 34702 unchanged.

Top method regressions (bytes):
        4305 ( 3.56% of base) : 228767.dasm - r8div:Main():int
        4203 ( 3.44% of base) : 228757.dasm - r4div:Main():int
         636 ( 0.45% of base) : 219486.dasm - u8rem:Main():int
         624 ( 0.46% of base) : 219389.dasm - i8rem:Main():int
         581 ( 0.44% of base) : 219369.dasm - i4rem:Main():int
         565 ( 0.42% of base) : 219466.dasm - u4rem:Main():int
         415 ( 0.34% of base) : 219251.dasm - overlddiv:Main():int
         415 ( 0.34% of base) : 219270.dasm - overlddiv:Main():int
         415 ( 0.34% of base) : 219418.dasm - overldrem:Main():int
         415 ( 0.34% of base) : 219428.dasm - overldrem:Main():int
         295 ( 1.28% of base) : 234492.dasm - lclfldadd:Main():int
         280 ( 1.21% of base) : 234556.dasm - lclfldmul:Main():int
         277 ( 1.19% of base) : 234630.dasm - lclfldsub:Main():int
         268 ( 1.11% of base) : 234529.dasm - lclflddiv:Main():int
         268 ( 1.14% of base) : 234640.dasm - lclfldsub:Main():int
         265 ( 1.13% of base) : 234566.dasm - lclfldmul:Main():int
         264 ( 1.07% of base) : 228650.dasm - r8NaNmul:Main():int
         264 ( 1.07% of base) : 228656.dasm - r8NaNmul:Main():int
         259 ( 0.20% of base) : 219213.dasm - i8div:Main():int
         254 ( 0.20% of base) : 219309.dasm - u4div:Main():int

Top method improvements (bytes):
       -1526 (-16.72% of base) : 161218.dasm - testout1:Func_0_4_5_4():System.Decimal
       -1210 (-8.81% of base) : 256458.dasm - bug178119:foo1():int
       -1105 (-7.16% of base) : 226565.dasm - IntelHardwareIntrinsicTest.Program:Main(System.String[]):int
       -1105 (-7.16% of base) : 226568.dasm - IntelHardwareIntrinsicTest.Program:Main(System.String[]):int
       -1059 (-21.56% of base) : 93555.dasm - JitTest.Test:Main():int
       -1059 (-20.44% of base) : 91021.dasm - JitTest.Test:Main():int
       -1059 (-20.43% of base) : 90808.dasm - JitTest.Test:Main():int
       -1059 (-20.64% of base) : 90810.dasm - JitTest.Test:Main():int
       -1057 (-20.95% of base) : 93557.dasm - JitTest.Test:Main():int
       -1057 (-20.57% of base) : 93559.dasm - JitTest.Test:Main():int
        -980 (-14.06% of base) : 161488.dasm - testout1:Func_0_2_3_1_5():System.Decimal
        -953 (-17.20% of base) : 90805.dasm - JitTest.Test:Main():int
        -944 (-13.61% of base) : 164092.dasm - testout1:Func_0_2_3_1_5():System.Decimal
        -933 (-14.68% of base) : 90813.dasm - JitTest.Test:Main():int
        -846 (-7.91% of base) : 256459.dasm - bug178119:foo2():int
        -843 (-1.40% of base) : 229545.dasm - testout1:Func_0():int
        -819 (-1.36% of base) : 229550.dasm - testout1:Func_0():int
        -739 (-8.38% of base) : 161442.dasm - testout1:Func_0_1_6_6_1():System.Decimal
        -632 (-10.33% of base) : 162140.dasm - testout1:Func_0_5_5_5_6():System.Decimal
        -572 (-9.60% of base) : 164550.dasm - testout1:Func_0_5_5_5_6():System.Decimal

Top method regressions (percentages):
          35 (3,500.00% of base) : 224259.dasm - TestUnsafeCasts:StructFromPrim()
         102 (728.57% of base) : 92552.dasm - Z:Main():int
          85 (607.14% of base) : 92517.dasm - Z:Main(System.String[]):int
          17 (188.89% of base) : 216950.dasm - TestClassVTableTracking:Run()
         246 (179.56% of base) : 241821.dasm - ServerSimulator.Parameters:.ctor():this
          18 (163.64% of base) : 246904.dasm - JitTest.Test:method_3_0(long):long
          18 (163.64% of base) : 246794.dasm - JitTest.Test:method_3_0(long):long
          18 (163.64% of base) : 247235.dasm - JitTest.Test:method_3_0(ushort):ushort
          18 (163.64% of base) : 256210.dasm - JitTest.Test:method_3_6(JitTest.ValueClass):JitTest.ValueClass
          18 (163.64% of base) : 256222.dasm - JitTest.Test:method_5_0(JitTest.ValueClass):JitTest.ValueClass
          18 (163.64% of base) : 246776.dasm - JitTest.Test:method_5_3(long):long
          18 (163.64% of base) : 246886.dasm - JitTest.Test:method_5_3(long):long
          18 (163.64% of base) : 247218.dasm - JitTest.Test:method_5_3(ushort):ushort
          18 (163.64% of base) : 246779.dasm - JitTest.Test:method_5_6(long):long
          18 (163.64% of base) : 246889.dasm - JitTest.Test:method_5_6(long):long
          18 (163.64% of base) : 247221.dasm - JitTest.Test:method_5_6(ushort):ushort
          51 (159.38% of base) : 97723.dasm - Test_TestCase0:Main():int
          51 (159.38% of base) : 97724.dasm - Test_TestCase0:Main():int
          51 (159.38% of base) : 97725.dasm - Test_TestCase1:Main():int
          17 (121.43% of base) : 96212.dasm - _callvirt:main(System.String[]):int

Top method improvements (percentages):
         -31 (-91.18% of base) : 241290.dasm - S:m(S):this
         -31 (-91.18% of base) : 241297.dasm - S1:m(S2):this
         -31 (-91.18% of base) : 241300.dasm - S1`1[Byte][System.Byte]:m(S2`1[Byte]):this
         -31 (-91.18% of base) : 241298.dasm - S2:m(S1):this
         -31 (-91.18% of base) : 241302.dasm - S2`1[Byte][System.Byte]:m(S1`1[Byte]):this
         -31 (-91.18% of base) : 241292.dasm - S2`1[Byte][System.Byte]:m(S2`1[Byte]):this
          -6 (-60.00% of base) : 229398.dasm - TestApp:test_0_1(ubyte,AA,AA):ubyte
          -8 (-57.14% of base) : 96217.dasm - _isinst:main(System.String[]):int
          -8 (-57.14% of base) : 96225.dasm - _newobj:main(System.String[]):int
          -8 (-57.14% of base) : 96133.dasm - ldind_ref:main(System.String[]):int
          -8 (-47.06% of base) : 246286.dasm - InlineBool.Program:Id02(bool):bool
          -8 (-47.06% of base) : 246288.dasm - InlineBool.Program:Id05(bool):bool
          -8 (-47.06% of base) : 246272.dasm - InlineBool.Program:Id43(bool):bool
          -8 (-47.06% of base) : 246251.dasm - InlineBool.Program:Id72(bool):bool
         -19 (-46.34% of base) : 207048.dasm - Tests:Test141_cns(int):ubyte
         -19 (-46.34% of base) : 206990.dasm - Tests:Test144_cns(int):ubyte
         -19 (-46.34% of base) : 206996.dasm - Tests:Test147_cns(int):ubyte
         -19 (-46.34% of base) : 207004.dasm - Tests:Test151_cns(int):ubyte
         -19 (-46.34% of base) : 207012.dasm - Tests:Test155_cns(int):ubyte
         -19 (-46.34% of base) : 206954.dasm - Tests:Test158_cns(int):ubyte

12030 total methods with Code Size differences (10443 improved, 1587 regressed), 34702 unchanged.


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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 33840459 (overridden on cmd)
Total bytes of diff: 33806367 (overridden on cmd)
Total bytes of delta: -34092 (-0.10 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
         339 : 101030.dasm (12.81% of base)
         313 : 5692.dasm (52.52% of base)
         175 : 87909.dasm (2.71% of base)
         141 : 55252.dasm (6.33% of base)
         140 : 85038.dasm (3.00% of base)
         117 : 63710.dasm (68.42% of base)
         109 : 135503.dasm (5.09% of base)
         105 : 63618.dasm (12.24% of base)
         103 : 99874.dasm (9.36% of base)
          98 : 96195.dasm (2.83% of base)
          92 : 96209.dasm (2.85% of base)
          89 : 77410.dasm (0.71% of base)
          86 : 96265.dasm (2.82% of base)
          81 : 72708.dasm (14.44% of base)
          77 : 122243.dasm (10.69% of base)
          72 : 11373.dasm (3.55% of base)
          71 : 196656.dasm (4.11% of base)
          70 : 48183.dasm (7.36% of base)
          66 : 94646.dasm (31.88% of base)
          61 : 101359.dasm (13.01% of base)

Top file improvements (bytes):
       -1199 : 48057.dasm (-2.77% of base)
        -553 : 150312.dasm (-3.75% of base)
        -138 : 196477.dasm (-4.05% of base)
        -132 : 96716.dasm (-3.02% of base)
        -128 : 125173.dasm (-7.01% of base)
        -120 : 187382.dasm (-1.77% of base)
        -112 : 121694.dasm (-2.52% of base)
        -103 : 91217.dasm (-2.86% of base)
        -101 : 85458.dasm (-4.32% of base)
         -98 : 203490.dasm (-6.39% of base)
         -96 : 77231.dasm (-2.27% of base)
         -95 : 22376.dasm (-6.18% of base)
         -92 : 13739.dasm (-12.71% of base)
         -92 : 163580.dasm (-10.37% of base)
         -91 : 136659.dasm (-8.45% of base)
         -91 : 203515.dasm (-6.95% of base)
         -82 : 150475.dasm (-0.71% of base)
         -80 : 70717.dasm (-3.49% of base)
         -75 : 13740.dasm (-10.81% of base)
         -75 : 196925.dasm (-7.04% of base)

8946 total files with Code Size differences (6917 improved, 2029 regressed), 20935 unchanged.

Top method regressions (bytes):
         339 (12.81% of base) : 101030.dasm - System.Data.XMLDiffLoader:ReadOldRowData(System.Data.DataSet,byref,byref,System.Xml.XmlReader):int:this
         313 (52.52% of base) : 5692.dasm - System.Reflection.MethodBase:CheckArguments(byref,System.ReadOnlySpan`1[System.Object],System.Reflection.Binder,int,System.Globalization.CultureInfo,System.RuntimeType[]):System.Span`1[System.Object]:this
         175 ( 2.71% of base) : 87909.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:Preprocess(System.Xml.Schema.XmlSchema,System.String,int):this
         141 ( 6.33% of base) : 55252.dasm - ReferenceManager:CreateAndSetSourceAssemblyFullBind(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation):bool:this
         140 ( 3.00% of base) : 85038.dasm - System.Xml.Xsl.XsltOld.HtmlElementProps:CreatePropsTable():System.Collections.Hashtable
         117 (68.42% of base) : 63710.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.SyntaxNode[],int,int):Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:this
         109 ( 5.09% of base) : 135503.dasm - Microsoft.CodeAnalysis.Emit.DeltaMetadataWriter:GetDelta(Microsoft.CodeAnalysis.Emit.EmitBaseline,Microsoft.CodeAnalysis.Compilation,System.Guid,Microsoft.Cci.MetadataSizes):Microsoft.CodeAnalysis.Emit.EmitBaseline:this
         105 (12.24% of base) : 63618.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this
         103 ( 9.36% of base) : 99874.dasm - System.Data.DataSet:SerializeDataSet(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext,int):this
          98 ( 2.83% of base) : 96195.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
          92 ( 2.85% of base) : 96209.dasm - System.Data.Common.SqlInt64Storage:Aggregate(System.Int32[],int):System.Object:this
          89 ( 0.71% of base) : 77410.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportOverloadResolutionFailureForASingleCandidate(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.Location,int,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],bool,bool,bool,bool,Microsoft.CodeAnalysis.DiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.Symbol,bool,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbol):this
          86 ( 2.82% of base) : 96265.dasm - System.Data.Common.SqlDoubleStorage:Aggregate(System.Int32[],int):System.Object:this
          81 (14.44% of base) : 72708.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbolExtensions:TransformToCanonicalFormFor(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol],Microsoft.CodeAnalysis.VisualBasic.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol]):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol]
          77 (10.69% of base) : 122243.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:EvaluateSideEffectingArgumentsToTemps(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this
          72 ( 3.55% of base) : 11373.dasm - System.Globalization.TimeSpanFormat:FormatCustomized(System.TimeSpan,System.ReadOnlySpan`1[System.Char],System.Globalization.DateTimeFormatInfo,System.Text.StringBuilder):System.Text.StringBuilder
          71 ( 4.11% of base) : 196656.dasm - System.DirectoryServices.Protocols.DirectoryControl:TransformControls(System.DirectoryServices.Protocols.DirectoryControl[])
          70 ( 7.36% of base) : 48183.dasm - Microsoft.Diagnostics.Tracing.SampleProfilerThreadTimeComputer:<GenerateThreadTimeStacks>b__8_2(Microsoft.Diagnostics.Tracing.TraceEvent):this
          66 (31.88% of base) : 94646.dasm - MS.Internal.Xml.Cache.XPathNodeHelper:GetContentChild(byref,byref):bool
          61 (13.01% of base) : 101359.dasm - System.Xml.XmlDataDocument:GetRowInsertBeforeLocation(System.Data.DataRow,System.Xml.XmlElement,System.Xml.XmlNode):System.Xml.XmlNode:this

Top method improvements (bytes):
       -1199 (-2.77% of base) : 48057.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[System.String, Microsoft.Diagnostics.Tracing.ETWMapping]
        -553 (-3.75% of base) : 150312.dasm - <StartupCode$FSharp-Core>.$Query:.cctor()
        -138 (-4.05% of base) : 196477.dasm - System.DirectoryServices.Protocols.LdapConnection:SendRequestHelper(System.DirectoryServices.Protocols.DirectoryRequest,byref):int:this
        -132 (-3.02% of base) : 96716.dasm - System.Data.Common.DbDataAdapter:Update(System.Data.DataRow[],System.Data.Common.DataTableMapping):int:this
        -128 (-7.01% of base) : 125173.dasm - Microsoft.CodeAnalysis.CSharp.ClsComplianceChecker:TryGetCollisionErrorCode(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.Symbol,byref):bool
        -120 (-1.77% of base) : 187382.dasm - R2RTest.BuildFolderSet:WriteBuildStatistics(System.IO.StreamWriter):this
        -112 (-2.52% of base) : 121694.dasm - Microsoft.CodeAnalysis.CSharp.TypeUnification:CanUnifyHelper(Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithModifiers,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithModifiers,byref):bool
        -103 (-2.86% of base) : 91217.dasm - System.Xml.XmlTextReaderImpl:ParseAttributeValueSlow(int,ushort,System.Xml.XmlTextReaderImpl+NodeData):this
        -101 (-4.32% of base) : 85458.dasm - System.Xml.Xsl.Xslt.XsltInput:GetAttributes(System.Xml.Xsl.Xslt.XsltInput+XsltAttribute[]):System.Xml.Xsl.Xslt.XsltInput+ContextInfo:this
         -98 (-6.39% of base) : 203490.dasm - System.Threading.Tasks.Parallel:PartitionerForEachWorker(System.Collections.Concurrent.Partitioner`1[System.__Canon],System.Threading.Tasks.ParallelOptions,System.Action`1[System.__Canon],System.Action`2[System.__Canon, System.Threading.Tasks.ParallelLoopState],System.Action`3[System.__Canon, System.Threading.Tasks.ParallelLoopState, System.Int64],System.Func`4[System.__Canon, System.Threading.Tasks.ParallelLoopState, System.__Canon, System.__Canon],System.Func`5[System.__Canon, System.Threading.Tasks.ParallelLoopState, System.Int64, System.__Canon, System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult
         -96 (-2.27% of base) : 77231.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindRaiseEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this
         -95 (-6.18% of base) : 22376.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExprVisitorBase:VisitChildren(Microsoft.CSharp.RuntimeBinder.Semantics.Expr):this
         -92 (-10.37% of base) : 163580.dasm - Microsoft.Extensions.DependencyModel.DependencyContextWriter:WriteCompilationOptions(Microsoft.Extensions.DependencyModel.CompilationOptions,System.Text.Json.Utf8JsonWriter):this
         -92 (-12.71% of base) : 13739.dasm - System.TupleExtensions:ToValueTuple(System.Tuple`8[System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.Tuple`8[System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.Tuple`7[System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon]]]):System.ValueTuple`8[System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.ValueTuple`8[System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.ValueTuple`7[System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon, System.__Canon]]]
         -91 (-8.45% of base) : 136659.dasm - Microsoft.CodeAnalysis.AbstractSyntaxNavigator:GetPreviousToken(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTriviaList,System.Func`2[Microsoft.CodeAnalysis.SyntaxToken, System.Boolean],System.Func`2[Microsoft.CodeAnalysis.SyntaxTrivia, System.Boolean],byref):Microsoft.CodeAnalysis.SyntaxToken:this
         -91 (-6.95% of base) : 203515.dasm - System.Threading.Tasks.Parallel:ForWorker(int,int,System.Threading.Tasks.ParallelOptions,System.Action`1[System.Int32],System.Action`2[System.Int32, System.Threading.Tasks.ParallelLoopState],System.Func`4[System.Int32, System.Threading.Tasks.ParallelLoopState, System.__Canon, System.__Canon],System.Func`1[System.__Canon],System.Action`1[System.__Canon]):System.Threading.Tasks.ParallelLoopResult
         -82 (-0.71% of base) : 150475.dasm - Microsoft.FSharp.Linq.QueryModule:TransInner(int,bool,Microsoft.FSharp.Quotations.FSharpExpr):System.Tuple`2[Microsoft.FSharp.Linq.QueryModule+TransInnerResult, Microsoft.FSharp.Linq.RuntimeHelpers.Adapters+ConversionDescription]
         -80 (-3.49% of base) : 70717.dasm - Microsoft.CodeAnalysis.VisualBasic.LocalRewriter:RewriteIfStatement(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,Microsoft.CodeAnalysis.VisualBasic.BoundStatement,bool,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundStatement]):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this
         -75 (-7.04% of base) : 196925.dasm - EncodeHelpers:EncodeKeyTransRecipientInfo(System.Security.Cryptography.Pkcs.CmsRecipient,Internal.Cryptography.Pal.Windows.HeapBlockRetainer):long
         -75 (-5.68% of base) : 39212.dasm - Microsoft.Diagnostics.Tracing.Parsers.MicrosoftWindowsTCPIP.TcpConnectionSummaryArgs:PayloadValue(int):System.Object:this

Top method regressions (percentages):
         117 (68.42% of base) : 63710.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:AddRange(Microsoft.CodeAnalysis.SyntaxNode[],int,int):Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxListBuilder:this
          25 (64.10% of base) : 95503.dasm - <>c__DisplayClass36_0:<ReadInternal>b__2():this
          10 (62.50% of base) : 189338.dasm - <>c__0`1:<Create>b__0_0(System.Diagnostics.Metrics.LabelInstruction,System.Diagnostics.Metrics.LabelInstruction):int:this
          10 (55.56% of base) : 178233.dasm - <>c:<GetUnreadOptionNames>b__13_1(Internal.CommandLine.ArgumentToken):System.String:this
          10 (55.56% of base) : 56060.dasm - Comparer:Equals(Microsoft.CodeAnalysis.VisualBasic.Symbols.SingleNamespaceDeclaration,Microsoft.CodeAnalysis.VisualBasic.Symbols.SingleNamespaceDeclaration):bool:this
          10 (55.56% of base) : 176045.dasm - PointerHashtable:CompareValueToValue(Internal.TypeSystem.PointerType,Internal.TypeSystem.PointerType):bool:this
          10 (55.56% of base) : 11336.dasm - TimeSpanTokenizer:.ctor(System.ReadOnlySpan`1[System.Char]):this
         313 (52.52% of base) : 5692.dasm - System.Reflection.MethodBase:CheckArguments(byref,System.ReadOnlySpan`1[System.Object],System.Reflection.Binder,int,System.Globalization.CultureInfo,System.RuntimeType[]):System.Span`1[System.Object]:this
          10 (47.62% of base) : 153511.dasm - ArgumentStorage:EmitAddress():this
          10 (47.62% of base) : 153513.dasm - ArgumentStorage:EmitLoad():this
          10 (47.62% of base) : 153512.dasm - ArgumentStorage:EmitStore():this
          10 (45.45% of base) : 189361.dasm - <>c__DisplayClass24_0:<Include>b__0(System.Diagnostics.Metrics.Instrument):bool:this
          10 (40.00% of base) : 186274.dasm - System.Net.HttpListenerRequest:GetChannelBinding():System.Security.Authentication.ExtendedProtection.ChannelBinding:this
           3 (37.50% of base) : 143109.dasm - System.Text.Json.JsonSerializerOptions:GetNodeOptions():System.Text.Json.Nodes.JsonNodeOptions:this
          10 (35.71% of base) : 29999.dasm - Microsoft.Diagnostics.Tracing.Ctf.CtfArray:ToString():System.String:this
          10 (35.71% of base) : 172210.dasm - System.CommandLine.Binding.BoundValue:ToString():System.String:this
          10 (34.48% of base) : 104536.dasm - <>c__DisplayClass5_0:<GetPropertyString>b__0():System.Object:this
          10 (33.33% of base) : 175843.dasm - FieldForInstantiatedTypeKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+FieldForInstantiatedTypeKey,Internal.TypeSystem.FieldForInstantiatedType):bool:this
          10 (33.33% of base) : 175848.dasm - MethodForInstantiatedTypeKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+MethodForInstantiatedTypeKey,Internal.TypeSystem.MethodForInstantiatedType):bool:this
          10 (33.33% of base) : 175831.dasm - MethodForRuntimeDeterminedTypeKeyHashtable:CompareKeyToValue(Internal.TypeSystem.TypeSystemContext+MethodForRuntimeDeterminedTypeKey,Internal.TypeSystem.MethodForRuntimeDeterminedType):bool:this

Top method improvements (percentages):
         -36 (-52.94% of base) : 160850.dasm - System.Linq.ParallelQuery`1:.ctor(System.Linq.Parallel.QuerySettings):this
         -39 (-46.43% of base) : 160115.dasm - System.Linq.Parallel.QueryOperator`1:.ctor(bool,System.Linq.Parallel.QuerySettings):this
         -39 (-46.43% of base) : 160982.dasm - System.Linq.Parallel.QueryOperator`1:.ctor(bool,System.Linq.Parallel.QuerySettings):this
         -18 (-46.15% of base) : 137257.dasm - Microsoft.CodeAnalysis.CompilationReference:.ctor(Microsoft.CodeAnalysis.MetadataReferenceProperties):this
         -34 (-45.33% of base) : 160116.dasm - System.Linq.Parallel.QueryOperator`1:.ctor(System.Linq.Parallel.QuerySettings):this
         -34 (-45.33% of base) : 160983.dasm - System.Linq.Parallel.QueryOperator`1:.ctor(System.Linq.Parallel.QuerySettings):this
         -24 (-42.11% of base) : 190383.dasm - EscaperImplementation:.ctor(bool):this
         -37 (-40.66% of base) : 171600.dasm - System.IO.Pipelines.PipeReader:Create(System.Buffers.ReadOnlySequence`1[System.Byte]):System.IO.Pipelines.PipeReader
          -3 (-37.50% of base) : 25499.dasm - System.Net.Http.Http3Connection:get_AbortException():System.Exception:this
          -3 (-37.50% of base) : 196209.dasm - System.Threading.Barrier:get_CurrentPhaseNumber():long:this
         -47 (-35.61% of base) : 135996.dasm - Microsoft.CodeAnalysis.SyntaxTriviaList:Equals(Microsoft.CodeAnalysis.SyntaxTriviaList):bool:this
         -37 (-34.26% of base) : 160061.dasm - System.Linq.Parallel.UnaryQueryOperator`2:.ctor(System.Linq.Parallel.QueryOperator`1[System.__Canon],bool,System.Linq.Parallel.QuerySettings):this
          -6 (-33.33% of base) : 6872.dasm - System.Runtime.InteropServices.MemoryMarshal:GetArrayDataReference(System.Array):byref
          -3 (-33.33% of base) : 9872.dasm - System.Threading.PortableThreadPool:GetMaxThreads():int:this
          -3 (-33.33% of base) : 9874.dasm - System.Threading.PortableThreadPool:GetMinThreads():int:this
         -42 (-33.07% of base) : 189804.dasm - System.Diagnostics.DiagLinkedList`1:.ctor(System.Diagnostics.ActivityEvent):this
         -19 (-30.16% of base) : 137178.dasm - Microsoft.CodeAnalysis.UnresolvedMetadataReference:.ctor(System.String,Microsoft.CodeAnalysis.MetadataReferenceProperties):this
          -9 (-30.00% of base) : 174651.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache:.ctor(int,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceCacheKey):this
          -3 (-30.00% of base) : 192535.dasm - System.Net.Sockets.Socket:get_SafeHandle():System.Net.Sockets.SafeSocketHandle:this
         -20 (-29.41% of base) : 206984.dasm - System.BinaryData:FromBytes(System.ReadOnlyMemory`1[System.Byte]):System.BinaryData

8946 total methods with Code Size differences (6917 improved, 2029 regressed), 20935 unchanged.


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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 44427933 (overridden on cmd)
Total bytes of diff: 44358561 (overridden on cmd)
Total bytes of delta: -69372 (-0.16 % of base)
    diff is an improvement.
    relative diff is an improvement.
Detail diffs


Top file regressions (bytes):
         369 : 172785.dasm (50.20% of base)
         238 : 141676.dasm (4.46% of base)
         203 : 172788.dasm (31.87% of base)
         194 : 18503.dasm (22.27% of base)
         188 : 30550.dasm (6.62% of base)
         164 : 18509.dasm (14.05% of base)
         164 : 18526.dasm (14.30% of base)
         154 : 137685.dasm (1.83% of base)
         140 : 140673.dasm (2.49% of base)
         122 : 16935.dasm (4.49% of base)
         112 : 26572.dasm (0.45% of base)
         112 : 18520.dasm (12.99% of base)
          99 : 29499.dasm (3.09% of base)
          98 : 114762.dasm (2.88% of base)
          94 : 114692.dasm (3.04% of base)
          93 : 114748.dasm (2.83% of base)
          90 : 116744.dasm (13.45% of base)
          90 : 43068.dasm (4.21% of base)
          84 : 75007.dasm (12.52% of base)
          82 : 188503.dasm (2.58% of base)

Top file improvements (bytes):
        -900 : 85717.dasm (-1.89% of base)
        -327 : 50965.dasm (-2.77% of base)
        -258 : 69447.dasm (-8.05% of base)
        -226 : 218776.dasm (-4.62% of base)
        -221 : 59165.dasm (-6.33% of base)
        -216 : 50985.dasm (-3.22% of base)
        -215 : 199132.dasm (-1.29% of base)
        -200 : 24935.dasm (-2.63% of base)
        -200 : 30414.dasm (-5.52% of base)
        -180 : 115652.dasm (-11.76% of base)
        -173 : 44186.dasm (-8.35% of base)
        -170 : 71144.dasm (-8.72% of base)
        -156 : 73449.dasm (-8.53% of base)
        -153 : 73655.dasm (-2.55% of base)
        -148 : 103908.dasm (-8.00% of base)
        -146 : 218815.dasm (-8.05% of base)
        -146 : 220637.dasm (-8.05% of base)
        -144 : 123683.dasm (-3.71% of base)
        -143 : 50658.dasm (-13.49% of base)
        -137 : 155948.dasm (-4.29% of base)

13905 total files with Code Size differences (11216 improved, 2689 regressed), 17020 unchanged.

Top method regressions (bytes):
         369 (50.20% of base) : 172785.dasm - System.Collections.Generic.SortedSet`1[__Canon][System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[__Canon]):this
         238 ( 4.46% of base) : 141676.dasm - System.Xml.Xsl.Runtime.XmlCollation:Create(System.String,bool):System.Xml.Xsl.Runtime.XmlCollation
         203 (31.87% of base) : 172788.dasm - System.Collections.Generic.SortedSet`1[__Canon][System.__Canon]:IntersectWith(System.Collections.Generic.IEnumerable`1[__Canon]):this
         194 (22.27% of base) : 18503.dasm - System.SpanHelpers:IndexOfAny(byref,System.Numerics.Vector`1[Single],System.Numerics.Vector`1[Single],int):int
         188 ( 6.62% of base) : 30550.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeParameterConstraints(System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.ITypeSymbol, Microsoft.CodeAnalysis, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):this
         164 (14.05% of base) : 18509.dasm - System.SpanHelpers:IndexOfAny(byref,System.Numerics.Vector`1[Single],System.Numerics.Vector`1[Single],System.Numerics.Vector`1[Single],int):int
         164 (14.30% of base) : 18526.dasm - System.SpanHelpers:LastIndexOfAny(byref,System.Numerics.Vector`1[Single],System.Numerics.Vector`1[Single],System.Numerics.Vector`1[Single],int):int
         154 ( 1.83% of base) : 137685.dasm - System.Xml.Schema.SchemaCollectionPreprocessor:Preprocess(System.Xml.Schema.XmlSchema,System.String,int):this
         140 ( 2.49% of base) : 140673.dasm - System.Xml.Xsl.XsltOld.HtmlElementProps:CreatePropsTable():System.Collections.Hashtable
         122 ( 4.49% of base) : 16935.dasm - Internal.TypeSystem.Ecma.EcmaType:GetClassLayout():Internal.TypeSystem.ClassLayoutMetadata:this
         112 ( 0.45% of base) : 26572.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCommandLineParser:Parse(System.Collections.Generic.IEnumerable`1[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]],System.String,System.String,System.String):Microsoft.CodeAnalysis.CSharp.CSharpCommandLineArguments:this
         112 (12.99% of base) : 18520.dasm - System.SpanHelpers:LastIndexOfAny(byref,System.Numerics.Vector`1[Single],System.Numerics.Vector`1[Single],int):int
          99 ( 3.09% of base) : 29499.dasm - Microsoft.CodeAnalysis.CSharp.AsyncExceptionHandlerRewriter:VisitTryStatement(Microsoft.CodeAnalysis.CSharp.BoundTryStatement):Microsoft.CodeAnalysis.CSharp.BoundNode:this
          98 ( 2.88% of base) : 114762.dasm - System.Data.Common.SqlMoneyStorage:Aggregate(System.Int32[],int):System.Object:this
          94 ( 3.04% of base) : 114692.dasm - System.Data.Common.SqlDoubleStorage:Aggregate(System.Int32[],int):System.Object:this
          93 ( 2.83% of base) : 114748.dasm - System.Data.Common.SqlInt64Storage:Aggregate(System.Int32[],int):System.Object:this
          90 ( 4.21% of base) : 43068.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.ConversionsBase,Microsoft.CodeAnalysis.CSharp.Symbols.TypeMap,Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ArrayBuilder`1[TypeParameterDiagnosticInfo],byref):bool
          90 (13.45% of base) : 116744.dasm - System.Drawing.Printing.PageSettings:get_PrintableArea():System.Drawing.RectangleF:this
          84 (12.52% of base) : 75007.dasm - DiagnosticRewriter:Rewrite(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CompilationUnitSyntax,Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.IfDirectiveTriviaSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.RegionDirectiveTriviaSyntax, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.ExternalSourceDirectiveTriviaSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.CompilationUnitSyntax
          82 ( 2.58% of base) : 188503.dasm - <ConstructResponseAsync>d__57:MoveNext():this

Top method improvements (bytes):
        -900 (-1.89% of base) : 85717.dasm - Microsoft.Diagnostics.Tracing.CtfTraceEventSource:InitEventMap():System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Microsoft.Diagnostics.Tracing.ETWMapping, Microsoft.Diagnostics.Tracing.TraceEvent, Version=2.0.65.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]]
        -327 (-2.77% of base) : 50965.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[ImmutableArray`1],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.DiagnosticBag):System.Collections.Immutable.ImmutableArray`1[[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]
        -258 (-8.05% of base) : 69447.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:OperatorInvocationOverloadResolution(Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Binder,bool,bool,byref):OverloadResolutionResult
        -226 (-4.62% of base) : 218776.dasm - System.Security.Cryptography.Asn1.GeneralNameAsn:DecodeCore(byref,System.ReadOnlyMemory`1[Byte],byref)
        -221 (-6.33% of base) : 59165.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanDateLiteral(Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxList`1[[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this
        -216 (-3.22% of base) : 50985.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindSymbolAccess(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.LookupResult,int,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax,int,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this
        -215 (-1.29% of base) : 199132.dasm - System.Management.ManagementClassGenerator:GenerateTypeConverterClass():System.CodeDom.CodeTypeDeclaration:this
        -200 (-2.63% of base) : 24935.dasm - Microsoft.CodeAnalysis.CSharp.Imports:FromSyntax(Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.InContainerBinder,Roslyn.Utilities.ConsList`1[[Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],bool):Microsoft.CodeAnalysis.CSharp.Imports
        -200 (-5.52% of base) : 30414.dasm - Microsoft.CodeAnalysis.CSharp.SyntaxFacts:GetContextualKeywordKind(System.String):ushort
        -180 (-11.76% of base) : 115652.dasm - System.Drawing.ImageFormatConverter:ConvertTo(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object,System.Type):System.Object:this
        -173 (-8.35% of base) : 44186.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:HasInstanceData(Microsoft.CodeAnalysis.CSharp.Syntax.MemberDeclarationSyntax):bool
        -170 (-8.72% of base) : 71144.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter:VisitToken(Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.SyntaxToken:this
        -156 (-8.53% of base) : 73449.dasm - TypeBinder:BindTypeOrAliasSyntax(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.DiagnosticBag,bool,bool,bool):Microsoft.CodeAnalysis.VisualBasic.Symbol
        -153 (-2.55% of base) : 73655.dasm - AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this
        -148 (-8.00% of base) : 103908.dasm - <>c__DisplayClass0_0:<.ctor>b__1(Microsoft.Diagnostics.Tracing.TraceEvent):this
        -146 (-8.05% of base) : 218815.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
        -146 (-8.05% of base) : 220637.dasm - System.Security.Cryptography.Asn1.PssParamsAsn:Encode(System.Formats.Asn1.AsnWriter,System.Formats.Asn1.Asn1Tag):this
        -144 (-3.71% of base) : 123683.dasm - <ConnectAsync>d__96:MoveNext():this
        -143 (-13.49% of base) : 50658.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindRemoveNamespaceAttributesInvocation(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,Microsoft.CodeAnalysis.VisualBasic.BoundRValuePlaceholder,byref,byref,Microsoft.CodeAnalysis.DiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this
        -137 (-4.29% of base) : 155948.dasm - Microsoft.CSharp.RuntimeBinder.Errors.ErrorHandling:Error(int,Microsoft.CSharp.RuntimeBinder.Errors.ErrArg[]):Microsoft.CSharp.RuntimeBinder.RuntimeBinderException

Top method regressions (percentages):
          15 (187.50% of base) : 158144.dasm - Microsoft.Extensions.DependencyModel.EnvironmentWrapper:GetAppContextData(System.String):System.Object:this
           8 (66.67% of base) : 115301.dasm - System.Drawing.CharacterRange:GetHashCode():int:this
           8 (66.67% of base) : 188529.dasm - System.Drawing.Point:GetHashCode():int:this
           8 (66.67% of base) : 188661.dasm - System.Drawing.Size:GetHashCode():int:this
           8 (66.67% of base) : 225706.dasm - System.Text.RegularExpressions.Symbolic.SymbolicMatch:GetHashCode():int:this
           8 (61.54% of base) : 80879.dasm - Microsoft.CodeAnalysis.Text.TextLine:get_SpanIncludingLineBreak():Microsoft.CodeAnalysis.Text.TextSpan:this
         369 (50.20% of base) : 172785.dasm - System.Collections.Generic.SortedSet`1[__Canon][System.__Canon]:UnionWith(System.Collections.Generic.IEnumerable`1[__Canon]):this
           7 (50.00% of base) : 217603.dasm - System.Security.Cryptography.CryptoPool:Return(System.ArraySegment`1[Byte])
           7 (50.00% of base) : 221720.dasm - System.Security.Cryptography.CryptoPool:Return(System.ArraySegment`1[Byte])
           7 (50.00% of base) : 218658.dasm - System.Security.Cryptography.CryptoPool:Return(System.ArraySegment`1[Byte])
           7 (50.00% of base) : 220175.dasm - System.Security.Cryptography.CryptoPool:Return(System.ArraySegment`1[Byte])
           7 (46.67% of base) : 115433.dasm - System.Drawing.Graphics:DrawImageUnscaled(System.Drawing.Image,System.Drawing.Rectangle):this
          10 (45.45% of base) : 209476.dasm - System.Reflection.Context.Projection.ProjectingManifestResourceInfo:get_ReferencedAssembly():System.Reflection.Assembly:this
           7 (43.75% of base) : 157440.dasm - Microsoft.Extensions.Configuration.ConfigurationSection:GetChildren():System.Collections.Generic.IEnumerable`1[[Microsoft.Extensions.Configuration.IConfigurationSection, Microsoft.Extensions.Configuration.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]]:this
           7 (43.75% of base) : 3694.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvVarToLinq(Microsoft.FSharp.Quotations.FSharpVar):System.Linq.Expressions.ParameterExpression
           7 (43.75% of base) : 117997.dasm - System.Linq.Expressions.ConstantCheck:AnalyzeTypeIs(System.Linq.Expressions.TypeBinaryExpression):int
           7 (43.75% of base) : 119708.dasm - System.Linq.Expressions.DynamicExpression:System.Linq.Expressions.IDynamicExpression.CreateCallSite():System.Object:this
           7 (43.75% of base) : 138654.dasm - System.Xml.Schema.XmlSchemaValidator:BuildElementName(System.Xml.XmlQualifiedName):System.String
          35 (43.21% of base) : 73369.dasm - MemberLookup:AnyShadows(Microsoft.CodeAnalysis.VisualBasic.LookupResult):bool
          38 (43.18% of base) : 53748.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSignatureComparer:AreConstraintTypesSubset(Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]],Microsoft.CodeAnalysis.ArrayBuilder`1[[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol, Microsoft.CodeAnalysis.VisualBasic, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]):bool

Top method improvements (percentages):
         -62 (-88.57% of base) : 209599.dasm - System.Reflection.Context.Projection.Projector:Project(long,System.Func`2[Int64,Int64]):long:this
         -58 (-87.88% of base) : 209596.dasm - System.Reflection.Context.Projection.Projector:Project(int,System.Func`2[Int32,Int32]):int:this
         -67 (-85.90% of base) : 209597.dasm - System.Reflection.Context.Projection.Projector:Project(double,System.Func`2[Double,Double]):double:this
         -60 (-84.51% of base) : 209594.dasm - System.Reflection.Context.Projection.Projector:Project(ubyte,System.Func`2[Byte,Byte]):ubyte:this
         -59 (-83.10% of base) : 209595.dasm - System.Reflection.Context.Projection.Projector:Project(short,System.Func`2[Int16,Int16]):short:this
         -20 (-80.00% of base) : 150141.dasm - System.Text.Json.Nodes.JsonArray:.ctor(System.Nullable`1[JsonNodeOptions]):this
         -22 (-70.97% of base) : 150365.dasm - System.Text.Json.Nodes.JsonValue`1[Byte][System.Byte]:.ctor(ubyte,System.Nullable`1[JsonNodeOptions]):this
         -22 (-70.97% of base) : 150369.dasm - System.Text.Json.Nodes.JsonValue`1[Int32][System.Int32]:.ctor(int,System.Nullable`1[JsonNodeOptions]):this
         -22 (-70.97% of base) : 150326.dasm - System.Text.Json.Nodes.JsonValueNotTrimmable`1[Byte][System.Byte]:.ctor(ubyte,System.Nullable`1[JsonNodeOptions]):this
         -22 (-70.97% of base) : 150328.dasm - System.Text.Json.Nodes.JsonValueNotTrimmable`1[Int32][System.Int32]:.ctor(int,System.Nullable`1[JsonNodeOptions]):this
         -22 (-68.75% of base) : 150367.dasm - System.Text.Json.Nodes.JsonValue`1[Int16][System.Int16]:.ctor(short,System.Nullable`1[JsonNodeOptions]):this
         -22 (-68.75% of base) : 150375.dasm - System.Text.Json.Nodes.JsonValue`1[Int64][System.Int64]:.ctor(long,System.Nullable`1[JsonNodeOptions]):this
         -22 (-68.75% of base) : 150327.dasm - System.Text.Json.Nodes.JsonValueNotTrimmable`1[Int16][System.Int16]:.ctor(short,System.Nullable`1[JsonNodeOptions]):this
         -22 (-68.75% of base) : 150331.dasm - System.Text.Json.Nodes.JsonValueNotTrimmable`1[Int64][System.Int64]:.ctor(long,System.Nullable`1[JsonNodeOptions]):this
          -9 (-64.29% of base) : 12863.dasm - Microsoft.FSharp.Core.Operators:Snd(System.Tuple`2[__Canon,Nullable`1]):System.Nullable`1[Int32]
          -9 (-64.29% of base) : 12864.dasm - Microsoft.FSharp.Core.Operators:Snd(System.Tuple`2[Byte,Nullable`1]):System.Nullable`1[Int32]
         -21 (-60.00% of base) : 150371.dasm - System.Text.Json.Nodes.JsonValue`1[Double][System.Double]:.ctor(double,System.Nullable`1[JsonNodeOptions]):this
         -21 (-60.00% of base) : 150329.dasm - System.Text.Json.Nodes.JsonValueNotTrimmable`1[Double][System.Double]:.ctor(double,System.Nullable`1[JsonNodeOptions]):this
         -35 (-59.32% of base) : 9947.dasm - groupByRefType@438-3[__Canon,Nullable`1][System.__Canon,System.Nullable`1[System.Int32]]:Invoke(System.__Canon):StructBox`1[Nullable`1]:this
         -35 (-59.32% of base) : 9952.dasm - groupByRefType@438-3[Int32,Nullable`1][System.Int32,System.Nullable`1[System.Int32]]:Invoke(int):StructBox`1[Nullable`1]:this

13905 total methods with Code Size differences (11216 improved, 2689 regressed), 17020 unchanged.


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


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 114663564 (overridden on cmd)
Total bytes of diff: 114588769 (overridden on cmd)
Total bytes of delta: -74795 (-0.07 % of base)
    diff is an improvement.
    relative diff is a regression.
Detail diffs


Top file regressions (bytes):
         547 : 154090.dasm (6.39% of base)
         535 : 154996.dasm (3.64% of base)
         464 : 126998.dasm (20.25% of base)
         426 : 205779.dasm (2.98% of base)
         297 : 190051.dasm (6.18% of base)
         297 : 67723.dasm (6.18% of base)
         286 : 190046.dasm (5.98% of base)
         286 : 67718.dasm (5.98% of base)
         284 : 154095.dasm (6.03% of base)
         275 : 154995.dasm (3.74% of base)
         268 : 70254.dasm (6.21% of base)
         246 : 205723.dasm (1.80% of base)
         245 : 159242.dasm (20.02% of base)
         240 : 51993.dasm (4.19% of base)
         240 : 51994.dasm (4.19% of base)
         230 : 188322.dasm (2.14% of base)
         229 : 153100.dasm (7.02% of base)
         223 : 204718.dasm (1.71% of base)
         219 : 282332.dasm (100.00% of base)
         219 : 204877.dasm (1.55% of base)

Top file improvements (bytes):
        -612 : 160187.dasm (-52.80% of base)
        -612 : 160188.dasm (-52.67% of base)
        -612 : 160189.dasm (-52.67% of base)
        -612 : 160190.dasm (-52.67% of base)
        -579 : 25023.dasm (-1.97% of base)
        -451 : 281941.dasm (-7.17% of base)
        -357 : 347313.dasm (-7.62% of base)
        -338 : 340325.dasm (-30.67% of base)
        -338 : 340327.dasm (-28.07% of base)
        -299 : 126348.dasm (-9.89% of base)
        -280 : 209068.dasm (-7.85% of base)
        -240 : 129253.dasm (-10.26% of base)
        -239 : 126272.dasm (-9.09% of base)
        -238 : 286019.dasm (-1.95% of base)
        -234 : 93118.dasm (-8.45% of base)
        -225 : 217620.dasm (-5.37% of base)
        -225 : 213467.dasm (-5.37% of base)
        -223 : 159202.dasm (-15.83% of base)
        -216 : 180363.dasm (-6.36% of base)
        -216 : 128350.dasm (-9.82% of base)

31384 total files with Code Size differences (18420 improved, 12964 regressed), 54114 unchanged.

Top method regressions (bytes):
         547 ( 6.39% of base) : 154090.dasm - System.Data.Tests.DataTableTest4:XmlTest10():this
         535 ( 3.64% of base) : 154996.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_True():this
         464 (20.25% of base) : 126998.dasm - Microsoft.CodeAnalysis.CSharp.Classification.Worker:ClassifyDirectiveTrivia(Microsoft.CodeAnalysis.CSharp.Syntax.DirectiveTriviaSyntax,bool):this
         426 ( 2.98% of base) : 205779.dasm - <>c__DisplayClass29_0:<Read_FullItem_ReturnsExpected>b__0(System.ServiceModel.Syndication.SyndicationFeed):this
         297 ( 6.18% of base) : 190051.dasm - System.Tests.StringTests:WhiteSpaceInMiddleTrim_Memory()
         297 ( 6.18% of base) : 67723.dasm - System.Tests.StringTests:WhiteSpaceInMiddleTrim_Memory()
         286 ( 5.98% of base) : 190046.dasm - System.Tests.StringTests:NoWhiteSpaceTrim_Memory()
         286 ( 5.98% of base) : 67718.dasm - System.Tests.StringTests:NoWhiteSpaceTrim_Memory()
         284 ( 6.03% of base) : 154095.dasm - System.Data.Tests.DataTableTest4:XmlTest15():this
         275 ( 3.74% of base) : 154995.dasm - System.Data.Tests.Common.DbConnectionStringBuilderTest:AppendKeyValuePair2_UseOdbcRules_False():this
         268 ( 6.21% of base) : 70254.dasm - System.Tests.TimeZoneInfoTests:GetAmbiguousTimeOffsets_Invalid()
         246 ( 1.80% of base) : 205723.dasm - <>c__DisplayClass20_0:<ReadFrom_FullItem_ReturnsExpected>b__0(System.ServiceModel.Syndication.SyndicationItem):this
         245 (20.02% of base) : 159242.dasm - System.Drawing.Drawing2D.Tests.MatrixTests:Ctor_Elements(float,float,float,float,float,float,bool,bool):this
         240 ( 4.19% of base) : 51993.dasm - System.Linq.Expressions.Tests.Expression_Tests:TestUserDefinedComparisonOperators()
         240 ( 4.19% of base) : 51994.dasm - System.Linq.Expressions.Tests.Expression_Tests:TestUserDefinedComparisonOperators()
         230 ( 2.14% of base) : 188322.dasm - System.Reflection.Tests.PropertyTests:TestProperties_GetterSetter()
         229 ( 7.02% of base) : 153100.dasm - System.Data.Tests.DataColumnCollectionTest2:Add():this
         223 ( 1.71% of base) : 204718.dasm - System.ServiceModel.Syndication.Tests.Rss20ItemFormatterTests:ReadFrom_TryParseReturnsTrue_ReturnsExpected(bool,bool):this
         219 (100.00% of base) : 282332.dasm - <>c:<TestAddingSamplerTagsFromMultipleListeners>b__21_3(byref):int:this
         219 ( 1.55% of base) : 204877.dasm - System.ServiceModel.Syndication.Tests.Atom10FeedFormatterTests:Read_TryParseTrue_ReturnsExpected(bool,bool):this

Top method improvements (bytes):
        -612 (-52.80% of base) : 160187.dasm - System.Drawing.Tests.TextureBrushTests:WrapMode_Tile_ReturnsExpected():this
        -612 (-52.67% of base) : 160188.dasm - System.Drawing.Tests.TextureBrushTests:WrapMode_TileFlipX_ReturnsExpected():this
        -612 (-52.67% of base) : 160190.dasm - System.Drawing.Tests.TextureBrushTests:WrapMode_TileFlipXY_ReturnsExpected():this
        -612 (-52.67% of base) : 160189.dasm - System.Drawing.Tests.TextureBrushTests:WrapMode_TileFlipY_ReturnsExpected():this
        -579 (-1.97% of base) : 25023.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.overloadResolution.Methods.Oneclass2methods.literals01.literals01.A:MainMethod():int
        -451 (-7.17% of base) : 281941.dasm - System.Diagnostics.Tests.ActivityTests:ActivityTraceFlagsTests():this
        -357 (-7.62% of base) : 347313.dasm - System.Xml.Tests.ToTypeTests:TestInvalid(System.String[],System.String,System.String[]):int:this
        -338 (-30.67% of base) : 340325.dasm - System.Threading.Tasks.Tests.ValueTaskTests:Generic_OperatorEquals():this
        -338 (-28.07% of base) : 340327.dasm - System.Threading.Tasks.Tests.ValueTaskTests:Generic_OperatorNotEquals():this
        -299 (-9.89% of base) : 126348.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ContextQuery.SyntaxTokenExtensions:IsBeginningOfGlobalStatementContext(Microsoft.CodeAnalysis.SyntaxToken):bool
        -280 (-7.85% of base) : 209068.dasm - System.Threading.Tasks.Tests.TaskAwaiterTests:AwaiterAndAwaitableEquality()
        -240 (-10.26% of base) : 129253.dasm - Microsoft.CodeAnalysis.VisualBasic.Extensions.ContextQuery.SyntaxTreeExtensions:IsQueryIntoClauseContext(Microsoft.CodeAnalysis.SyntaxTree,int,Microsoft.CodeAnalysis.SyntaxToken,System.Threading.CancellationToken):bool
        -239 (-9.09% of base) : 126272.dasm - Microsoft.CodeAnalysis.CSharp.Extensions.ContextQuery.SyntaxTreeExtensions:IsAtEndOfPattern(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxToken,int):bool
        -238 (-1.95% of base) : 286019.dasm - System.Formats.Asn1.Tests.Writer.ComprehensiveWriteTest:WriteMicrosoftDotComCert()
        -234 (-8.45% of base) : 93118.dasm - System.Text.Json.Nodes.Tests.OperatorTests:ExplicitOperators_FromNullableValues()
        -225 (-5.37% of base) : 217620.dasm - Microsoft.SqlServer.Server.ValueUtilsSmi:GetSqlValue(Microsoft.SqlServer.Server.SmiEventSink_Default,Microsoft.SqlServer.Server.ITypedGettersV3,int,Microsoft.SqlServer.Server.SmiMetaData):System.Object
        -225 (-5.37% of base) : 213467.dasm - Microsoft.SqlServer.Server.ValueUtilsSmi:GetSqlValue(Microsoft.SqlServer.Server.SmiEventSink_Default,Microsoft.SqlServer.Server.ITypedGettersV3,int,Microsoft.SqlServer.Server.SmiMetaData):System.Object
        -223 (-15.83% of base) : 159202.dasm - System.Drawing.Drawing2D.Tests.LinearGradientBrushTests:InterpolationColors_SetWithExistingInterpolationColors_OverwritesInterpolationColors():this
        -216 (-9.82% of base) : 128350.dasm - Microsoft.CodeAnalysis.VisualBasic.Classification.ClassificationHelpers:ClassifyIdentifierSyntax(Microsoft.CodeAnalysis.SyntaxToken):System.String
        -216 (-6.36% of base) : 180363.dasm - System.Net.Http.Tests.HttpRequestHeadersTest:AddHeaders_SpecialHeaderValuesOnDestinationNotOnSource_NotCopied():this

Top method regressions (percentages):
          15 (1,500.00% of base) : 326577.dasm - <>c:<AppendPrivatePath>b__37_0():this
          15 (1,500.00% of base) : 326578.dasm - <>c:<ClearPrivatePath>b__38_0():this
          15 (1,500.00% of base) : 326529.dasm - <>c:<ClearShadowCopyPath>b__39_0():this
          15 (1,500.00% of base) : 326530.dasm - <>c:<SetCachePath>b__40_0():this
          15 (1,500.00% of base) : 326531.dasm - <>c:<SetShadowCopyFiles>b__41_0():this
          15 (1,500.00% of base) : 326532.dasm - <>c:<SetShadowCopyPath>b__42_0():this
          15 (1,500.00% of base) : 325555.dasm - System.Tests.AppDomainTests:DynamicDirectory_Null():this
          15 (1,500.00% of base) : 325548.dasm - System.Tests.AppDomainTests:RelativeSearchPath_Is_Null():this
          51 (463.64% of base) : 32195.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.declarations.formalParameter.Methods.genericbaseclass001.genericbaseclass001.Test:MainMethod(System.String[]):int
          34 (309.09% of base) : 32267.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.declarations.backwardscompatible.dynamictypedeclared021.dynamictypedeclared021.App:MainMethod(System.String[]):int
          34 (309.09% of base) : 32171.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.declarations.formalParameter.Methods.genericbaseclass003.genericbaseclass003.NS.Test:MainMethod(System.String[]):int
          34 (309.09% of base) : 32164.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.declarations.formalParameter.Methods.genericbaseclass004.genericbaseclass004.NS.Test:MainMethod(System.String[]):int
          34 (309.09% of base) : 32157.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.declarations.formalParameter.Methods.genericbaseclass005.genericbaseclass005.NS.Test:MainMethod(System.String[]):int
          17 (188.89% of base) : 151308.dasm - System.ComponentModel.Design.Serialization.Tests.DesignerLoaderTests:Flush_Invoke_Nop():this
          17 (188.89% of base) : 150598.dasm - System.ComponentModel.Tests.LicenseContextTests:GetSavedLicenseKey_Invoke_ReturnsNull():this
          17 (188.89% of base) : 150599.dasm - System.ComponentModel.Tests.LicenseContextTests:GetService_Invoke_ReturnsNull():this
          17 (188.89% of base) : 150600.dasm - System.ComponentModel.Tests.LicenseContextTests:SetSavedLicenseKey_Invoke_Nop():this
          17 (188.89% of base) : 50178.dasm - System.Linq.Expressions.Tests.ExpressionTests:DefaultReducesToSame():this
          17 (188.89% of base) : 53252.dasm - System.Linq.Expressions.Tests.VisitorTests:VisitNullDefaultsToReturnNull():this
          17 (188.89% of base) : 196221.dasm - System.Runtime.Serialization.Xml.Tests.XmlDictionaryReaderTests:Close_DerivedReader_Success()

Top method improvements (percentages):
        -129 (-91.49% of base) : 327199.dasm - System.Runtime.InteropServices.Tests.CULongTests:Ctor_NUInt_LargeValue():this
        -124 (-91.18% of base) : 327211.dasm - System.Runtime.InteropServices.Tests.CLongTests:Ctor_NInt_LargeValue():this
         -30 (-90.91% of base) : 23628.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.unaryOperators.is002.is002.Test:MainMethod(System.String[]):int
         -30 (-90.91% of base) : 23626.dasm - ManagedTests.DynamicCSharp.Conformance.dynamic.statements.unaryOperators.is003.is003.Test:MainMethod(System.String[]):int
          -8 (-88.89% of base) : 19856.dasm - System.Collections.Tests.HashSet_Generic_Tests`1[Byte][System.Byte]:CanBeCastedToISet():this
          -8 (-88.89% of base) : 147669.dasm - System.ComponentModel.Composition.ImportingConstructorAttributeTests:Constructor_ShouldNotThrow():this
          -8 (-88.89% of base) : 147675.dasm - System.ComponentModel.Composition.MetadataAttributeAttributeTests:Constructor_ShouldNotThrow():this
          -8 (-88.89% of base) : 283907.dasm - System.Diagnostics.SymbolStore.Tests.SymDocumentTypeTests:Ctor_Default():this
          -8 (-88.89% of base) : 283909.dasm - System.Diagnostics.SymbolStore.Tests.SymLanguageTypeTests:Ctor_Default():this
          -8 (-88.89% of base) : 283912.dasm - System.Diagnostics.SymbolStore.Tests.SymLanguageVendorTests:Ctor_Default():this
          -8 (-88.89% of base) : 335116.dasm - System.Text.Tests.DecoderCtor:PosTest1():this
          -8 (-88.89% of base) : 335192.dasm - System.Text.Tests.EncoderCtor:PosTest1():this
          -8 (-88.89% of base) : 352770.dasm - XmlSerializerTests:XmlSerializationGeneratedCodeTest()
         -46 (-88.46% of base) : 111729.dasm - genDictionary@1026-1[Double][System.Double]:Invoke(double):bool:this
         -46 (-88.46% of base) : 111730.dasm - genDictionary@1026-1[Vector`1][System.Numerics.Vector`1[System.Single]]:Invoke(System.Numerics.Vector`1[Single]):bool:this
         -35 (-85.37% of base) : 111731.dasm - genDictionary@1026-1[Int64][System.Int64]:Invoke(long):bool:this
         -34 (-85.00% of base) : 111726.dasm - genDictionary@1026-1[Byte][System.Byte]:Invoke(ubyte):bool:this
         -34 (-85.00% of base) : 111727.dasm - genDictionary@1026-1[Int16][System.Int16]:Invoke(short):bool:this
         -33 (-84.62% of base) : 111728.dasm - genDictionary@1026-1[Int32][System.Int32]:Invoke(int):bool:this
         -20 (-80.00% of base) : 231336.dasm - FluentAssertions.Primitives.BooleanAssertions:.ctor(System.Nullable`1[Boolean]):this

31384 total methods with Code Size differences (18420 improved, 12964 regressed), 54114 unchanged.


@AndyAyersMS
Copy link
Member Author

As noted earlier, the big regressions (eg System.Reflection.MethodBase:CheckArguments in benchmarks) are cases where loop cloning now kicks in.

@EgorBo
Copy link
Member

EgorBo commented Jan 20, 2022

From my impression some regressions are just missing opportunities for CSE that was supposed to "un-substitute" back where needed. Example:

public class Strings
{
    public string s1 { get; }
    public string s2 { get; }
    public string s3 { get; }
}

public class Program
{
    public string Test(Strings size)
        => string.Concat(size.s1, size.s2, size.s3);
}
G_M19485_IG02:
        mov      rcx, gword ptr [rdx+8]
-       mov      rax, gword ptr [rdx+16]
-       mov      r8, gword ptr [rdx+24]
-       mov      rdx, rax
+       mov      gword ptr [rsp+10H], rdx
+       mov      rdx, gword ptr [rdx+16]
+       mov      r8, gword ptr [rsp+10H]
+       mov      r8, gword ptr [r8+24]
G_M19485_IG03:
        jmp      System.String:Concat(System.String,System.String,System.String):System.String
-; Total bytes of code: 20
+; Total bytes of code: 27

@AndyAyersMS
Copy link
Member Author

some regressions are just missing opportunities for CSE

Or (in this case) poor modelling of ABI constraints, LSRA preferencing, or poor choices for or arg evaluation order... @jakobbotsch was noting our current arg order sorting seems to be unhelpful.

@AndyAyersMS
Copy link
Member Author

Might need to avoid forward sub of an implicit byref's promoted fields....

@jakobbotsch
Copy link
Member

jakobbotsch commented Jan 20, 2022

JIT/Directed/debugging/debuginfo/tester is failing everywhere as we're evidently removing statements with debug info. Wonder if we should be merging debug info somehow.

The debug info tests assume that mappings will be placed on statements containing calls. We should probably think about what the best way forward is -- perhaps prefer using the earliest offset? If we determine current behavior is ok the tests can be changed to have multiple uses to turn off the forward sub.

@EgorBo
Copy link
Member

EgorBo commented Jan 21, 2022

I am not sure the NativeAOT failure is related, well it is related but during reducing a repro I came up with one that fails even on Main jit (if I did everything correctly):

using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Text;

public class Test
{
    public static void Main()
    {
        try
        {
            throw new Exception();
        }
        catch when (FilterWithStackTrace())
        {
        }
    }

    [MethodImpl(MethodImplOptions.NoInlining)]
    static bool FilterWithStackTrace()
    {
        Consume(new StackTrace(0, true).ToString());
        return true;
    }
    
    [MethodImpl(MethodImplOptions.NoInlining)]
    private static void Consume(string s)
    {
    }
}

@MichalStrehovsky could you please check this repro?

UPD: nvm, I am now able to repro it only under this PR, investigating...

@EgorBo
Copy link
Member

EgorBo commented Jan 21, 2022

NativeAOT's failed test was a difficult one since it only reproduced on app start and not during AOT compilation...
I managed to find the exact method ForwardSub for leads to a crash, here is the assembly diff for that file: https://www.diffchecker.com/JPgVi4N7 (forward sub result is on the right).

NgenDump diff: https://www.diffchecker.com/mbzS9LLk

Is this a correct substitution:
image
don't we need to wrap ASG nodes to COMMA here? (or propagate the actual value we assign if possible)

@AndyAyersMS

@AndyAyersMS
Copy link
Member Author

It looks like we are reordering a call that modifies local0 and a read of local0. Seems like we need to watch for address-exposed uses when computing the effects of the statement we're trying to substitute into.

Can you see if this diff fixes things?

@@ -145,6 +145,15 @@ public:
                     m_parentNode = parent;
                 }
             }
+
+            // Uses of address-exposed locals are modelled as global refs.
+            //
+            LclVarDsc* const varDsc = m_compiler->lvaGetDesc(lclNum);
+
+            if (varDsc->IsAddressExposed())
+            {
+                m_accumulatedFlags |= GTF_GLOB_REF;
+            }
         }

         m_accumulatedFlags |= (node->gtFlags & GTF_GLOB_EFFECT);
@@ -215,8 +224,8 @@ public:

         if (node->OperIs(GT_LCL_VAR))
         {
-            unsigned const lclNum = node->AsLclVarCommon()->GetLclNum();
-            LclVarDsc*     varDsc = m_compiler->lvaGetDesc(lclNum);
+            unsigned const   lclNum = node->AsLclVarCommon()->GetLclNum();
+            LclVarDsc* const varDsc = m_compiler->lvaGetDesc(lclNum);

             if (varDsc->IsAddressExposed())
             {

@AndyAyersMS
Copy link
Member Author

/azp run Fuzzlyn, Antigen

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@AndyAyersMS
Copy link
Member Author

I think the Fuzzlyn and Antigen issues are known issues. And the runtime CI failures likewise. So, I'm going to merge.

@jakobbotsch
Copy link
Member

@AndyAyersMS I do see 2 Fuzzlyn examples in the latest run that look related.

// Generated by Fuzzlyn v1.5 on 2022-02-03 20:06:22
// Run on X86 Windows
// Seed: 4993495812901676847
// Reduced from 57.3 KiB to 0.6 KiB in 00:00:48
// Debug: Outputs 1
// Release: Outputs 4294967295
public struct S1
{
    public uint F4;
    public long F7;
    public S1(uint f4): this()
    {
        F4 = f4;
    }

    public ref bool M1(uint arg0, bool arg1)
    {
        this.F4 = (uint)-this.F4;
        System.Console.WriteLine(arg0);
        return ref Program.s_4;
    }
}

public struct S2
{
    public S1 F3;
    public S2(S1 f3): this()
    {
        F3 = f3;
    }
}

public class Program
{
    public static S1[] s_2 = new S1[]{new S1(0)};
    public static bool s_4;
    public static void Main()
    {
        S2 vr0 = new S2(new S1(1));
        s_2[0].M1(vr0.F3.F4, vr0.F3.M1(0, false));
    }
}
// Generated by Fuzzlyn v1.5 on 2022-02-03 20:11:11
// Run on X86 Windows
// Seed: 3146441340761756415
// Reduced from 127.7 KiB to 0.7 KiB in 00:03:37
// Debug: Throws 'System.NullReferenceException'
// Release: Runs successfully
public struct S0
{
    public int F3;
    public uint F6;
}

public class C1
{
    public S1 M31(C1 arg0)
    {
        return new S1(new C1(), new S0());
    }
}

public struct S1
{
    public C1 F4;
    public S0 F7;
    public S1(C1 f4, S0 f7): this()
    {
    }

    public C1 M26(int arg0)
    {
        if (Program.s_4)
        {
            this.F4 = new C1();
        }

        return new C1();
    }
}

public class Program
{
    public static bool s_4 = true;
    public static long s_20;
    public static void Main()
    {
        S1 vr8 = default(S1);
        var vr9 = vr8.F7.F3;
        S1 vr10 = vr8.F4.M31(vr8.M26(vr9));
        System.Console.WriteLine(s_20);
    }
}

@jakobbotsch
Copy link
Member

The first one needs a little massaging to repro as a console app:

// Generated by Fuzzlyn v1.5 on 2022-02-03 20:06:22
// Run on X86 Windows
// Seed: 4993495812901676847
// Reduced from 57.3 KiB to 0.6 KiB in 00:00:48
// Debug: Outputs 1
// Release: Outputs 4294967295
using System;

public struct S1
{
    public uint F4;
    public long F7;
    public S1(uint f4): this()
    {
        F4 = f4;
    }

    public ref bool M1(uint arg0, bool arg1)
    {
        this.F4 = (uint)-this.F4;
        Program.s_rt.WriteLine(arg0);
        return ref Program.s_4;
    }
}

public struct S2
{
    public S1 F3;
    public S2(S1 f3): this()
    {
        F3 = f3;
    }
}

public class Program
{
    public static IRT s_rt;
    public static S1[] s_2 = new S1[]{new S1(0)};
    public static bool s_4;
    public static void Main()
    {
        s_rt = new C();
        S2 vr0 = new S2(new S1(1));
        s_2[0].M1(vr0.F3.F4, vr0.F3.M1(0, false));
    }
}

public interface IRT
{
    void WriteLine<T>(T value);
}

public class C : IRT
{
    public void WriteLine<T>(T value)
    {
        Console.WriteLine(value);
    }
}

The second repros out of the box.

jakobbotsch added a commit to jakobbotsch/runtime that referenced this pull request Feb 4, 2022
For LIR we verify that we can really consider locals to be used at their
user by having a checker that looks for interfering stores to the same
locals. However, in some cases we may have "interfering"
GT_LCL_FLD/GT_STORE_LCL_FLD, in the sense that they work on the same
local but on a disjoint range of bytes. Add support to validate this.

This fixes dotnet#57919 which made the fuzzer jobs very noisy and made it easy
to miss actual new examples (e.g. dotnet#63720 was just merged even though
there were real examples found there).

Fix dotnet#57919
jakobbotsch added a commit that referenced this pull request Feb 4, 2022
For LIR we verify that we can really consider locals to be used at their
user by having a checker that looks for interfering stores to the same
locals. However, in some cases we may have "interfering"
GT_LCL_FLD/GT_STORE_LCL_FLD, in the sense that they work on the same
local but on a disjoint range of bytes. Add support to validate this.

This fixes #57919 which made the fuzzer jobs very noisy and made it easy
to miss actual new examples (e.g. #63720 was just merged even though
there were real examples found there).

Fix #57919
@jakobbotsch
Copy link
Member

Some failures from this weekend's Fuzzlyn run. All of these repro in main (179ffff) in win-x86 and not on win-x64.

// Generated by Fuzzlyn v1.5 on 2022-02-06 17:06:01
// Run on X86 Windows
// Seed: 7854701479455767355
// Reduced from 192.2 KiB to 0.6 KiB in 00:03:51
// Debug: Outputs 0
// Release: Outputs 1
public struct S0
{
    public uint F0;
    public ulong F2;
    public int F3;
    public ushort F6;
    public int F8;
    public int[] M35(int arg0, int[] arg1)
    {
        this.F3 = arg1[0];
        Program.s_rt.WriteLine(arg0);
        return arg1;
    }
}

public class Program
{
    public static IRT s_rt;
    public static int[][] s_28 = new int[][]{new int[]{1}};
    public static void Main()
    {
        s_rt = new C();
        var vr3 = new S0();
        var vr6 = vr3.F3;
        var vr13 = s_28[0];
        var vr12 = vr3.M35(0, vr13);
        vr3.M35(vr6, vr12);
    }
}

public interface IRT
{
    void WriteLine<T>(T value);
}

public class C : IRT
{
    public void WriteLine<T>(T value)
    {
        System.Console.WriteLine(value);
    }
}
// Generated by Fuzzlyn v1.5 on 2022-02-06 18:06:07
// Run on X86 Windows
// Seed: 525178552114891112
// Reduced from 142.0 KiB to 0.9 KiB in 00:06:35
// Debug: Throws 'System.NullReferenceException'
// Release: Runs successfully
public interface I0
{
}

public class C0
{
    public ushort F0;
}

public struct S0 : I0
{
    public byte F0;
    public bool F1;
    public long F3;
    public byte F4;
    public C0 F5;
    public S0(long f3, C0 f5): this()
    {
        F5 = f5;
    }

    public C1 M24(ref bool arg0)
    {
        this = new S0(0, new C0());
        return Program.s_18;
    }
}

public class C1
{
}

public class Program
{
    public static IRT s_rt;
    public static C1 s_18;
    public static void Main()
    {
        s_rt = new C();
        var vr4 = new S0(0, new C0());
        I0 vr7 = vr4;
        bool vr8 = default(bool);
        S0 vr9 = default(S0);
        var vr10 = vr9.F5;
        var vr11 = vr9.M24(ref vr8);
        M8(vr10, ref vr7, vr11);
    }

    public static void M8(C0 argThis, ref I0 arg0, C1 arg1)
    {
        s_rt.WriteLine(argThis.F0);
    }
}

public interface IRT
{
    void WriteLine<T>(T value);
}

public class C : IRT
{
    public void WriteLine<T>(T value)
    {
        System.Console.WriteLine(value);
    }
}
// Generated by Fuzzlyn v1.5 on 2022-02-06 16:34:36
// Run on X86 Windows
// Seed: 15345211054104247945
// Reduced from 56.7 KiB to 1.1 KiB in 00:00:55
// Debug: Outputs 0
// Release: Outputs -1
public struct S0
{
    public ulong F1;
    public int F2;
    public byte F3;
    public short F5;
    public long F6;
    public void M4(int arg0, sbyte[] arg1)
    {
        Program.s_rt.WriteLine(arg0);
    }

    public sbyte[] M6(ref int arg0, bool arg1, ref S0 arg2, ref byte arg3)
    {
        var vr0 = Program.s_5;
        Program.M7(arg2, vr0, ref Program.s_6, ref Program.s_10, arg0);
        var vr1 = arg2.F6;
        Program.M8(arg2, vr1);
        arg0 = this.F2--;
        return new sbyte[]{1};
    }
}

public class Program
{
    public static IRT s_rt;
    public static bool s_2;
    public static S0 s_4;
    public static uint[] s_5;
    public static byte s_6;
    public static S0[] s_10;
    public static S0[, ] s_20 = new S0[, ]{{new S0()}};
    public static void Main()
    {
        s_rt = new C();
        S0 vr2 = default(S0);
        new S0().M4(vr2.F2, vr2.M6(ref s_4.F2, s_2, ref s_20[0, 0], ref s_4.F3));
    }

    public static void M8(S0 arg0, long arg1)
    {
    }

    public static void M7(S0 argThis, uint[] arg0, ref byte arg1, ref S0[] arg2, int arg3)
    {
    }
}

public interface IRT
{
    void WriteLine<T>(T value);
}

public class C : IRT
{
    public void WriteLine<T>(T value)
    {
        System.Console.WriteLine(value);
    }
}

@kunalspathak
Copy link
Member

@jakobbotsch - do you think they are related to the forward substitution? Could you open GH issues instead for better tracking?

@jakobbotsch
Copy link
Member

@kunalspathak Yes I expect so. Opened #64904. I don't really want to open two more yet since it seems very likely they may have the same cause.

@EgorBo
Copy link
Member

EgorBo commented Feb 17, 2022

@ghost ghost locked as resolved and limited conversation to collaborators Mar 19, 2022
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
7 participants