D66284 fixes a crash in LiveDebugValues, but in doing so disallows the spilling of complex variable locations, as they cannot be easily restored.
This [revised] patch slightly adjusts the DBG_VALUE insts that LiveDebugValues tracks: instead of tracking the last DBG_VALUE for a variable, it tracks the last _unspilt_ DBG_VALUE. The spill-restore code is then able to access and copy the original complex expression; but the rest of LiveDebugValues has to be aware of the slight semantic shift, and produce a new spilt location if a spilt location is propagated between blocks.
This avoids the crash and allows us to spill/restore all DBG_VALUEs.
So here we are restoring the original expression since DebugInstr points to the pre-spill DBG_VALUE.