dotnet / dotnet/linker

Possibly detect calls which are not virtual and avoid related virtual method checks

Open
#3,133 0 comments 0 reactions 0 assignees View on GitHub
area-Linker: Diagnostic
Dominant language
C#
Stars
392
Forks
128
Avg merge
2d 10h
Merged PRs (30d)
2

Description

In some cases it's clear from the code that a call to a virtual method is actually not virtual. For example if the method implements an interface but there are no calls to the method through the interface. Similarly for static abstract methods where calling the base can never happen. Same situation happens if the implementation method is called through reflection.

In such cases it is correct to avoid treating the call as virtual and thus avoiding additional work and checks related to virtual calls. So for example warning `IL2092` could be avoided.

NativeAOT has this behavior due to the nature of itss code generation algorithms, so there's a discrepancy between ILLink and NativeAOT.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.