Open CarolEidt opened 7 years ago
Due to lack of recent activity, this issue has been marked as a candidate for backlog cleanup. It will be closed if no further activity occurs within 14 more days. Any new comment (by anyone, not necessarily the author) will undo this process.
This process is part of our issue cleanup automation.
This issue will now be closed since it had been marked no-recent-activity
but received no further activity in the past 14 days. It is still possible to reopen or comment on the issue, but please note that the issue will be locked if it remains inactive for another 30 days.
When a node has a delayed-use register (either due to an RMW def or due to an internalRegDelayFree), if its result has a fixed-use, we can't propagate the register constraint to the def, because there's no associated fixed-reference on the
RegRecord
to ensure that it will not be used by the delay-free register. So, in those cases we leave theregisterAssignment
unchanged on the def, although theInterval
will be preferenced to that if there is no conflict. See the code inLinearScan::associateRefPosWithInterval()
. This means that we may often require a copy at the use of this node's result. This case could be moved toBuildRefPositionsForNode()
, at the point where the defRefPosition
is created, causing aRefTypeFixedRef
to be added at that location. This, however, results in:RefPosition
s on theRegRecord
(a possible throughput impact), andThere may be an alternative approach to handle this issue, but in any case further investigation is required. This came to my attention while looking at dotnet/runtime#7931 category:cq theme:register-allocator skill-level:expert cost:medium