- 
                Notifications
    You must be signed in to change notification settings 
- Fork 5.2k
Open
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMItenet-performancePerformance related issuePerformance related issue
Milestone
Description
Unnecessary bounds check in the following snippet
static int Test(ReadOnlySpan<char> value)
{
    var i = 0;
    for (; i < value.Length; i++)
        if (value[i] != '/')
            break;
    value = value.Slice(i);
    foreach (var c in value)
    { }
    return 0;
}G_M000_IG01:                ;; offset=0x0000
       sub      rsp, 40
G_M000_IG02:                ;; offset=0x0004
       mov      rax, bword ptr [rcx]
       mov      ecx, dword ptr [rcx+0x08]
       xor      edx, edx
       xor      r8d, r8d
       test     ecx, ecx
       jle      SHORT G_M000_IG05
       align    [13 bytes for IG03]
G_M000_IG03:                ;; offset=0x0020
       cmp      word  ptr [rax+2*r8], 47
       jne      SHORT G_M000_IG04
       inc      r8d
       cmp      r8d, ecx
       jl       SHORT G_M000_IG03
G_M000_IG04:                ;; offset=0x0030
       mov      edx, r8d
G_M000_IG05:                ;; offset=0x0033
       cmp      edx, ecx
       ja       SHORT G_M000_IG09
       sub      ecx, edx
       xor      eax, eax
       test     ecx, ecx
       jle      SHORT G_M000_IG07
       align    [1 bytes for IG06]
G_M000_IG06:                ;; offset=0x0040
       cmp      eax, ecx
       jae      SHORT G_M000_IG10
       inc      eax
       cmp      eax, ecx
       jl       SHORT G_M000_IG06
G_M000_IG07:                ;; offset=0x004A
       xor      eax, eax
G_M000_IG08:                ;; offset=0x004C
       add      rsp, 40
       ret      
G_M000_IG09:                ;; offset=0x0051
       call     [System.ThrowHelper:ThrowArgumentOutOfRangeException()]
       int3     
G_M000_IG10:                ;; offset=0x0058
       call     CORINFO_HELP_RNGCHKFAIL
       int3     
; Total bytes of code: 94
Metadata
Metadata
Assignees
Labels
area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMItenet-performancePerformance related issuePerformance related issue