Make liveness more precise in some cases.

After phi lowering, it's possible for a live range to have a gap in
the middle of a basic block, as a result of a loopback edge.  In this
case, we can add two disjoint segments to the live range instead of
marking it live for the entire basic block.  This makes it possible
and more likely for a phi destination and its lowered temp to be
assigned the same register.