Devirtualization isn't acting on devirtualizable calls past the first #39519
Labels
area-CodeGen-coreclr
CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Milestone
Ran from a VM due to dotnet/BenchmarkDotNet#1499
The idea is to do a two step virtual call, once dispatching from
this
(Combined) and once to a separate sealed class (Separate), JustMe is the control as it devirtualizes correctly.And the resulting asm:
.NET Core 5.0.0 (CoreCLR 5.0.20.30506, CoreFX 5.0.20.30506), X64 RyuJIT
.NET Core 5.0.0 (CoreCLR 5.0.20.30506, CoreFX 5.0.20.30506), X64 RyuJIT
.NET Core 5.0.0 (CoreCLR 5.0.20.30506, CoreFX 5.0.20.30506), X64 RyuJIT
Expectation would be that all benchmarks compile down to
mov eax, 1
category:cq
theme:devirtualization
skill-level:expert
cost:large
impact:medium
The text was updated successfully, but these errors were encountered: