Add an improved/new heuristic to catch more cases when values are not live out of a basic block.
I see regressions with this one after some possibly recent commits? In the first test case in test/CodeGen/AMDGPU/basic-branch.ll, it seems to not detect the use of the pointer value and omits the spill. The restore is still present
Typo, extra c in Across
This is broken because it's skipping the first use. It can also useMRI->reg_nodbg_instructions.
This is also broken for the case where there is a phi/copy when there is a loop back to the same block. This needs to check for whether the use instruction happens before the spilled value def
Fix use scan skipping first use. Assume live-out if block is its own successor.
Update tests. Not sure what's going on with test/DebugInfo/X86/pieces-1.ll, but I doubt it's testing what it's supposed to