This patch is to fix a bug reported here: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160411/347420.html
Because HoistSpillHelper::hoistAllSpills is called in postOptimization, we don't want LiveRangeEdit::eliminateDeadDefs to generate unassigned new vregs. That is why I set NoSplit flag to early return from LiveRangeEdit::eliminateDeadDefs. However, skipping splitSeparateComponents will make verify-machineinstrs unhappy, so I remove the early return, and use HoistSpillHelper::LRE_DidCloneVirtReg to assign physreg/stackslot for those new vregs. I know those new vregs should have the same physreg/stackslot as the old vreg which new vregs are splitted from.
Some code reorganization to make class HoistSpillHelper private inheriting from LiveRangeEdit::Delegate possible. This is to be consistent with class RAGreedy and class RegisterCoalescer.
Thanks,
Wei.