Maps between a MIR Location, which identifies a particular
statement within a basic block, to a “rich location”, which
identifies at a finer granularity. In particular, we distinguish
the start of a statement and the mid-point. The mid-point is
the point just before the statement takes effect; in particular,
for an assignment A = B
, it is the point where B is about to be
written into A. This mid-point is a kind of hack to work around
our inability to track the position information at sufficient
granularity through outlives relations; however, the rich location
table serves another purpose: it compresses locations from
multiple words into a single u32.