Uh oh!
There was an error while loading. Please reload this page.
Check if interval interferes with the call - #76904
Conversation
ghost
commented
Oct 11, 2022
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsAfter building intervals, check if any of them interferes with a call. In other words, scan all the intervals and check if there are refpositions that are created before a call and used after the call. If yes, then update such intervals preference to use I am assuming a TP cost to do this because we will be doing non-linear search, but hopefully, it will be not as bad, and we do get some good results out of it. I do add various checks to skip iteration if we know that scanning it won't make sense.
|
kunalspathak
commented
Oct 12, 2022
It is significantly worse. Need to think of some better way to handle it. I could probably do something smarter:
I will replace this PR with above strategy. |
kunalspathak
commented
Oct 14, 2022
ghost
commented
Nov 13, 2022
Draft Pull Request was automatically closed for 30 days of inactivity. Please let us know if you'd like to reopen it. |
kunalspathak
commented
Sep 27, 2023
I took a stab at this today with better handling of call interference and marking |
kunalspathak
commented
Sep 27, 2023
Replaced by #92744 |


After building intervals, check if any of them interferes with a call. In other words, scan all the intervals and check if there are refpositions that are created before a call and used after the call. If yes, then update such intervals preference to use
callee-saveregisters. To accomplish this, I keep track ofLsraLocationjust before addingRefTypeKilland also record the killmask. After building intervals, go through all the call locations and see if any of the interval collides and if yes, then set itspreferCalleeSave = true.I am assuming a TP cost to do this because we will be doing non-linear search, but hopefully, it will be not as bad, and we do get some good results out of it. I do add various checks to skip iteration if we know that scanning it won't make sense. We cannot do this at the time of building interval, because we do not have information about the future uses of the interval under consideration.
Related conversation: #75565 (comment)