Skip to content

Unnecessary sign-extension for some never-negative expressions #119680

@xtqqczze

Description

@xtqqczze
nint M1(uint mask) {
    return BitOperations.TrailingZeroCount(mask) / sizeof(ushort);
}

nint M2(uint mask) {
    return (nint)(uint.TrailingZeroCount(mask) / sizeof(ushort));
}
C:M1(uint):nint:this (FullOpts):
       xor      eax, eax
       tzcnt    eax, esi
       shr      eax, 1
       cdqe     
       ret      

C:M2(uint):nint:this (FullOpts):
       xor      eax, eax
       tzcnt    eax, esi
       shr      eax, 1
       ret    

godbolt.org

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIhelp wanted[up-for-grabs] Good issue for external contributors

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions