This is a docu-comment for the LiveDebugValues pass explaining what it does, and how it's structured. I remembered I was going to write this up; see D67500 for some thrashing out of what the pass Really (TM) does.
The lattice could be presented as going up or down, or be mirrored; which way doesn't bother me.
Doesn't it also support constants and memory locations?
variable -> variable (fragment)