dotnet/runtime
Ver no GitHub[JIT] X64 - Possible comparison optimization using `and` with a small type
Open
#81.520 aberto em 2 de fev. de 2023
arch-x64area-CodeGen-coreclrhelp wantedtenet-performance
Métricas do repositório
- Stars
- (17.886 stars)
- Métricas de merge de PR
- (Mesclagem média 12d 11h) (661 fundiu PRs em 30d)
Description
using System.Runtime.CompilerServices;
static class Program
{
[MethodImpl(MethodImplOptions.NoInlining)]
public static void SideEffect()
{
}
public static bool Test(byte p, int i)
{
if ((p & 0xffffff00) != 0)
{
SideEffect();
return true;
}
return false;
}
}
The (p & 0xffffff00) != 0 condition in this case can never be true. So, we could optimize this by folding it into false thus will eliminate the true path.
This will probably not have a lot of impact.