Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LSRA: Remove assert that enforces all multi-reg RefPositions to be either copy or reload but not mixed #101824

Merged
merged 1 commit into from
May 3, 2024

Conversation

kunalspathak
Copy link
Member

The consumer for a multi-reg node can be a GT_COPY, individual registers of multi-reg node can either get copied (they are assigned a different register at the use than the one they were assigned at def) or reloaded (they are spilled and got assigned to a different register than they were originally assigned at the def). Our code paths already handle the situation where RefPosition can be mixed of copy/reload and as such there is no need of an assert that enforce that all RefPositions should either be copy or all should be reload.

In #99810, the call in the test produced 4 registers, and one of which (because of constraint enforced by JitStressRegs=8) get spilled and hence marked for reload. But that should be ok to have and the current assert was prohibiting us from such scenario to exist.

Other details: #99810 (comment)

Fixes: #99810

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label May 2, 2024
Copy link
Contributor

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

@kunalspathak
Copy link
Member Author

@dotnet/jit-contrib

@kunalspathak kunalspathak changed the title Remove assert LSRA: Remove assert that enforces all multi-reg RefPositions to be either copy or reload but not mixed May 3, 2024
@kunalspathak
Copy link
Member Author

/azp run runtime-coreclr jitstressregs, runtime-coreclr jitstress2-jitstressregs

Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@kunalspathak
Copy link
Member Author

jitstressregs failure is #100476

@kunalspathak kunalspathak merged commit 43a341a into dotnet:main May 3, 2024
139 of 143 checks passed
@kunalspathak kunalspathak deleted the superpmi-swift branch May 3, 2024 13:00
michaelgsharp pushed a commit to michaelgsharp/runtime that referenced this pull request May 9, 2024
Ruihan-Yin pushed a commit to Ruihan-Yin/runtime that referenced this pull request May 30, 2024
@github-actions github-actions bot locked and limited conversation to collaborators Jun 4, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

JIT: Assertion failed 'parent->OperGet() == oper' during 'LSRA allocate'
2 participants