This adds two pieces:
- RegisterScavenger:::enterBasicBlockEnd() which behaves similar to enterBasicBlock() but starts tracking at the end of the basic block.
- A RegisterScavenger::backward() method. It is subtly different from the existing unprocess() method which only considers uses with the kill flag set: If a value is dead at the end of a basic block with a last use inside the basic block, unprocess() will fail to mark it as live. However we cannot change/fix this behaviour because unprocess() needs to perform the exact reverse operation of forward().
Note: This is part of a patch series to make FrameLowering/PEI independent of kill flags. Patches building upon this are upcoming. I will not commit this until some of the patches depending on this are accepted.