dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.12k stars 4.7k forks source link

JIT: Unnecessarily large copies to resolve parameter/argument conflicts for tailcalls #105552

Open jakobbotsch opened 2 months ago

jakobbotsch commented 2 months ago

See the example code in #105551. We are introducing a full struct copy because the control expression accesses a parameter that will be overriden by placing a previous arg. However, we only need a single pointer sized copy to resolve the conflict.

dotnet-policy-service[bot] commented 2 months ago

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