-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
JIT arm32: Assertion failed 'refPosition->RegOptional()' in 'System.Numerics.Tests.ComplexTests:Abs(double,double)' during 'LSRA build intervals' when using non-standard arg sort #76382
Comments
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Details
Result: [22:19:58] ISSUE: <ASSERT> #271154 D:\a\_work\1\s\src\coreclr\jit\lsra.cpp (11934) - Assertion failed 'refPosition->RegOptional()' in 'System.Numerics.Tests.ComplexTests:Abs(double,double)' during 'LSRA build intervals' (IL size 22; hash 0xbf3bc3d1; FullOpts)
|
cc @BruceForstall @kunalspathak
|
Do we know why this is 7.0 and not 8.0? |
@jakobbotsch - I just tried on main and I do not repro it. Can you confirm the exact |
@kunalspathak The superpmi-replay run that failed was this one: https://dev.azure.com/dnceng-public/public/_build/results?buildId=32422&view=results Looks like it also needs |
Yes, was able to repro with that.
Yes, it runs with all the JitStressRegs switches because replay doesn't complain about missing contexts for them, and the collection is still valid, unlike with JitStress. Perhaps it would be too early for me to comment on this given the limited knowledge I have around PutArg. I will spend some more time to see why we hit into it. But essentially, we are not able to find a free pair of registers to allocate because they are either occupied or marked as "busy until next kill". In such case, we expect at least the ref position to be marked as "RegOptional()", but that's not the case either, which I am not sure should be the right thing to do or there is other problem somewhere else.
|
What does the IR around this call look like? It's possible the IR produced around the |
Here is the full IR:
The relevant node that constructs those refpositions is
Here are the intervals:
Let's talk offline about this. |
Hmm, the IR look valid enough to me. |
CallArgs::SortArgs
that does the sort (everything after the initial loop that assignssortedArgs
)COMPlus_JitStressRegs=3
Result:
category:correctness
theme:register-allocator
The text was updated successfully, but these errors were encountered: