Dead code elimination may separate the live interval into multiple connected components.

I have convinced myself that it can only happen when a phi value dies. When it
happens, allocate new virtual registers for the components.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127827 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen
2011-03-17 20:37:07 +00:00
parent c74513d1b6
commit 6a3dbd3b25
6 changed files with 47 additions and 23 deletions

View File

@@ -460,7 +460,7 @@ bool InlineSpiller::reMaterializeFor(MachineBasicBlock::iterator MI) {
}
// Alocate a new register for the remat.
LiveInterval &NewLI = Edit->create(MRI, LIS, VRM);
LiveInterval &NewLI = Edit->create(LIS, VRM);
NewLI.markNotSpillable();
// Rematting for a copy: Set allocation hint to be the destination register.
@@ -685,7 +685,7 @@ void InlineSpiller::spillAroundUses(unsigned Reg) {
// Allocate interval around instruction.
// FIXME: Infer regclass from instruction alone.
LiveInterval &NewLI = Edit->create(MRI, LIS, VRM);
LiveInterval &NewLI = Edit->create(LIS, VRM);
NewLI.markNotSpillable();
if (Reads)