-
Notifications
You must be signed in to change notification settings - Fork 5k
Fix lowering usage of an unset LSRA field. #54731
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
Conversation
PTAL @kunalspathak @dotnet/jit-contrib |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any diffs?
It is good that you asked, I wrote that there is none but now I checked again and saw 1 that I lost in the thousands of SPMI downloading lines.
added a comment to fix it later. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM...are the CI failures related to your change?
part of them are, I am working on a fix, looks like the fix will have to be bigger than I thought. |
/azp run runtime-coreclr jitstress, runtime-coreclr outerloop |
Azure Pipelines successfully started running 2 pipeline(s). |
The failures are unrelated (at least I have not seen any JIT asserts and they failed in the previous run, so looking like infa).
I will fix them in a separate PR (#54841), this is just correctness. |
…bugger2 * origin/main: (78 commits) Fix unreached during dump. (dotnet#54861) Fix lowering usage of an unset LSRA field. (dotnet#54731) Fix setting breakpoints on AVX 256 instructions and other 32 byte immediate instructions (dotnet#54786) Add perf_slow yaml (dotnet#54853) Faster type load for scenarios made more common by generic math (dotnet#54588) Make sure we consider buffer length when marshalling back Unicode ByValTStr fields (dotnet#54695) Add YieldProcessor implementation for arm (dotnet#54829) Remove ActiveIssue for dotnet#50968 (dotnet#54831) Enable System.Text.Json tests for Wasm AOT (dotnet#54833) Remove ActiveIssue for dotnet#51723 (dotnet#54830) Fix load exception on generic covariant return type (dotnet#54790) Obsolete X509Certificate2.PrivateKey and PublicKey.Key. (dotnet#54562) First round of converting System.Drawing.Common to COMWrappers (dotnet#54636) Fix alloc-dealloc mismatches (dotnet#54701) Add one-shot ECB methods [Mono] MSBuild Task housekeeping (dotnet#54485) Move iOS/tvOS simulator AOT imports in the Mono workload (dotnet#54821) Remove unnecessary char[] allocation from Uri.GetRelativeSerializationString (dotnet#54799) Reduce overhead of Enumerable.Chunk (dotnet#54782) Fix EnumMemberRefs always returning NULL (dotnet#54805) ...
Potential regression: DrewScoggins/performance-2#7131. Needs investigation. |
Potential improvement: DrewScoggins/performance-2#7138 |
@sandreenko - do you mind taking a look at the regression? |
I am planning to fix #54841 this week and it will most likely go away. I can't assign the issue to myself (it is in a fork). |
@DrewScoggins - this is the one that needs a transfer. |
The old code was using
m_lsra->isRegCandidate(varDsc)
that readslvIsTracked
field that is not set during lowering and until liveness. So we were reading defaultlvIsTracked=false
and always saying that it is not a reg candidate.The issue started to happen after we added HW support in VN/CSE, it started to produce wrong results, then we added more checks in codegen and it started to fail with assert.
No diffs, the codegen is now clever enough to skip bitcast node when the source is in memory. In theory, we still don't want to create it for TP purposes so we need something like "varIsAlreadyKnownToBeInMemory" but I will try to add it in another change.
Fixes #54466