forked from OSchip/llvm-project
It is safe to remat a value killed by phis.
The source live range is recomputed using shrinkToUses() which does handle phis correctly. The hasPHIKill() condition was relevant in the old days when ReMaterializeTrivialDef() tried to recompute the live range itself. The shrinkToUses() function will mark the original def as dead when no more uses and phi kills remain. It is then removed by runOnMachineFunction(). llvm-svn: 139781
This commit is contained in:
parent
e7ca8ecd92
commit
dca022e377
|
@ -805,9 +805,7 @@ bool RegisterCoalescer::ReMaterializeTrivialDef(LiveInterval &SrcInt,
|
|||
LiveInterval::iterator SrcLR = SrcInt.FindLiveRangeContaining(CopyIdx);
|
||||
assert(SrcLR != SrcInt.end() && "Live range not found!");
|
||||
VNInfo *ValNo = SrcLR->valno;
|
||||
// If other defs can reach uses of this def, then it's not safe to perform
|
||||
// the optimization.
|
||||
if (ValNo->isPHIDef() || ValNo->isUnused() || ValNo->hasPHIKill())
|
||||
if (ValNo->isPHIDef() || ValNo->isUnused())
|
||||
return false;
|
||||
MachineInstr *DefMI = LIS->getInstructionFromIndex(ValNo->def);
|
||||
if (!DefMI)
|
||||
|
|
Loading…
Reference in New Issue