Skip to content

CSE seems to fail when writing x / cns and x % cns for unsigned integers #119131

@hamarb123

Description

@hamarb123

Description

CSE seems to fail if I write something like:

uint Natural(uint index)
{
    uint arrIndex = index / 3;
    uint bitIndex = index % 3;

    return arrIndex + bitIndex;
}

(it does the division twice).

This seems to only be an issue for unsigned integers not using DivRem.

Godbolt.

Configuration

Seems to reproduce on any .NET version on godbolt - I've only checked the issue on x64.

Regression?

Probably not.

Analysis

@tannergooding was saying it seems that UMOD might be missing early expansion altogether & it's getting carried down to rationalisation.

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 contributorstenet-performancePerformance related issue

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions