When rewriting statepoints to make relocations explicit, we need to have a conservative but consistent notion of where a particular pointer is live at a particular site. The old code just used dominance, which is correct, but decidedly more conservative then it needed to be. This patch implements a simple dataflow algorithm that's run one per function (well, twice counting fixup after base pointer insertion). There's still lots of room to make this faster, but it's fast enough for all practical purposes today.
p.s. This patch was build on top of http://reviews.llvm.org/D8671 and might not apply cleanly without it.
I don't understand the comment "Exclusive of this in KillSet.".
Also, is this a subset of LiveIn? Or do you not count X in cases like