Normally dead definitions have an own vreg when coming out of SSA form.
However we do not have a static single assignment property at the
subregister level, so we cannot easily detect dead subregister
definitions without doing subregister liveness analysis. We also cannot
mark them with a dead flag unless all lanes (even the ones not
affected by the subregister definition) are dead.
The new LiveIntervalAnalysis::renameDeadSubRegDefs() detects dead
subregister definitions based on liveness information and assigns them
to new vreg.
This is intended as a prepass to subregister aware scheduling and avoids
the formation of multiple connected components in liveintervals if dead
subregister defs are moved. It may also have some positive effects on
the allocation by removing unnecessary constraints.
This function needs comments reflecting some of what is explained in the commit message. It should be clear that this is an optimization not required for correctness.