-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Conversation
When a multi-reg var is defined by a call, but doesn't currently reside in a register, we must still update liveness. Fix #21500
@dotnet/jit-contrib PTAL |
test OSX10.12 x64 Checked Innerloop Build and Test |
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.
@CarolEidt could you please explain the general rule that we use to decide were we need to call genUpdateLife
for stack location?
Looking at codegenarm64.cpp
I see different cases:
genCodeForStoreLclVar
updates for both cases;
genLockedInstructions
updates only for registers, is it another missed case that we do not have a repro for or we need an assert that reg != REG_NA
?
coreclr/src/jit/codegenarm64.cpp
Lines 2717 to 2722 in bbfafe7
if (treeNode->gtRegNum != REG_NA) | |
{ | |
genProduceReg(treeNode); | |
} | |
} | |
The same for genCodeForStoreLclVar
, genCodeForCompare
,.
It needs to be called whenever the node is a tracked lclVar. Note that |
So do we need to call it in |
It is already being called in It doesn't need to be called for the other two you mention because they are not lclVars. They may consume lclVars, in which case the |
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, thank you.
Update var life for multireg local Commit migrated from dotnet/coreclr@ca65764
When a multi-reg var is defined by a call, but doesn't currently reside in a register,
we must still update liveness.
Fix #21500