When mapValues was called on one half, this was reporting CR_Erase.
For the second value, it would see the value live out of the block
and report CR_Impossible. Check if it's live out when clearing
ErasableImplicitDef to avoid reporting inconsistent results.
I'm not very confident this is the right way to fix this. Changing
ErasableImplicitDef in the middle of this seems strange to me.