-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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: Reimport full spill clique for I_IMPL<->BYREF mismatches #92307
JIT: Reimport full spill clique for I_IMPL<->BYREF mismatches #92307
Conversation
Block morphing would create oddly typed trees (mixing up TYP_BYREF/TYP_I_IMPL, e.g. creating LCL_VAR<I_IMPL> for a TYP_BYREF typed local). The only effect of this was that it would avoid some constant propagation. Make this more explicit by setting GTF_DONT_CSE instead.
When the JIT sees code that pushes an untracked pointer from one branch, and a tracked pointer from another, it will reimport successors that were already imported under the wrong assumption of an untracked pointer. However, like in the other cases of spill clique handling, it should reimport the entire spill clique, including predecssors and other successors of those; otherwise we can still end up with mistyped LCL_VAR nodes.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsWhen the JIT sees code that pushes an untracked pointer from one branch, Based on #92292 since that PR is also necessary to allow us to restrict the assert in
|
…ch-reimport-spill-clique
/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress |
Azure Pipelines successfully started running 2 pipeline(s). |
cc @dotnet/jit-contrib PTAL @AndyAyersMS No diffs. Failure is known according to build analysis. |
When the JIT sees code that pushes an untracked pointer from one branch,
and a tracked pointer from another, it will reimport successors that
were already imported under the wrong assumption of an untracked
pointer. However, like in the other cases of spill clique handling, it
should reimport the entire spill clique, including predecessors and other
successors of those; otherwise we can still end up with mistyped LCL_VAR
nodes.