dotnet/roslyn

Codegen of System.Nullable `is null` check is poor

Open

#65.091 geöffnet am 28. Okt. 2022

Auf GitHub ansehen
 (2 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)C# (4.257 Forks)batch import
4 - In ReviewArea-CompilersCode Gen QualityConcept-Design Debthelp wanted

Repository-Metriken

Stars
 (20.414 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (256 gemergte PRs in 30 T)

Beschreibung

Codegen of System.Nullable is null check is poor

Take a look at: https://sharplab.io/#v2:C4LglgNgPgAgLAAgAoHsUCcDCKAmBTAczwDsAKMYhC4AfgQDcBKAWACgBvNhbqgMwVL0qAZwTEArhAiMEXHvJgB2ANxsAvmzbwEAcTQ5s+ImQpVitBiw5zuYfqQCE9AHQAJAIbCAau4ji8MjbyCEqqrBqsWoh6uIaEJABM5JTUdExsnKzydgJCALx5YpLSslnB3KHqQA

void PoorCodegen(in int? v)
{
    if (v is null) 
        return;
}

void GoodCodegen(in int? v)
{
    if (!v.HasValue) 
        return;
}

void GoodCodegen2(in int? v)
{
    if (v == null) 
        return;
}

In the pattern matching case there suddenly is a copy.

Contributor Guide