Fix PR4419: handle defs of partial uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73816 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2009-06-20 04:34:51 +00:00
parent e9fe6c7729
commit 694f6c81e8
2 changed files with 36 additions and 7 deletions

View File

@ -359,12 +359,11 @@ bool LiveVariables::HandlePhysRegKill(unsigned Reg, MachineInstr *MI) {
// That is, unless we are currently processing the last reference itself.
LastRefOrPartRef->addRegisterDead(Reg, TRI, true);
/* Partial uses. Mark register def dead and add implicit def of
sub-registers which are used.
FIXME: LiveIntervalAnalysis can't handle this yet!
EAX<dead> = op AL<imp-def>
That is, EAX def is dead but AL def extends pass it.
Enable this after live interval analysis is fixed to improve codegen!
// Partial uses. Mark register def dead and add implicit def of
// sub-registers which are used.
// EAX<dead> = op AL<imp-def>
// That is, EAX def is dead but AL def extends pass it.
// Enable this after live interval analysis is fixed to improve codegen!
else if (!PhysRegUse[Reg]) {
PhysRegDef[Reg]->addRegisterDead(Reg, TRI, true);
for (const unsigned *SubRegs = TRI->getSubRegisters(Reg);
@ -377,7 +376,7 @@ bool LiveVariables::HandlePhysRegKill(unsigned Reg, MachineInstr *MI) {
PartUses.erase(*SS);
}
}
} */
}
else
LastRefOrPartRef->addRegisterKilled(Reg, TRI, true);
return true;