RegScavenger::unprocess walks backward, so it should undo the effects of defs before undoing effects of kills. Previously it did things in the opposite order, leaving a register apparently unused (dead) in the case where an instruction both used (killed) and defined a register.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
LGTM.
That said the medium to short term plan is to get rid of kill flags, which means RegisterScavenger::forward() and RegisterScavenger::unprocess() will no longer work (or at least give you conservative results which aren't very useful). I'd recommend to switch your code to LiveRegUnits/LivePhysRegs (in case you don't need emergency spilling) or RegisterScavenger::backward() instead!
I assume you don't have commit access?
Usually it's the author of the patch that commits it unless he doesn't have commit access yet in which case it's upon the reviewers.
I had commit access at one time but I don't know if I still do. If I do, I guess I can commit via svn but how do I get all the nice metadata in the commit log like "Differential Revision?" Do people just add it manually?
I add it by hand. I think arcanist will do that for you automatically, but I've never used it.