For real this time: PHI Def & Kill tracking added to PHIElimination.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76865 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/PHIElimination.cpp b/lib/CodeGen/PHIElimination.cpp
index 1cbe798..56dca08 100644
--- a/lib/CodeGen/PHIElimination.cpp
+++ b/lib/CodeGen/PHIElimination.cpp
@@ -50,6 +50,8 @@
bool llvm::PHIElimination::runOnMachineFunction(MachineFunction &Fn) {
MRI = &Fn.getRegInfo();
+ PHIDefs.clear();
+ PHIKills.clear();
analyzePHINodes(Fn);
bool Changed = false;
@@ -183,8 +185,8 @@
}
// Record PHI def.
- //assert(!hasPHIDef(DestReg) && "Vreg has multiple phi-defs?");
- //PHIDefs[DestReg] = &MBB;
+ assert(!hasPHIDef(DestReg) && "Vreg has multiple phi-defs?");
+ PHIDefs[DestReg] = &MBB;
// Update live variable information if there is any.
LiveVariables *LV = getAnalysisIfAvailable<LiveVariables>();
@@ -232,7 +234,7 @@
MachineBasicBlock &opBlock = *MPhi->getOperand(i*2+2).getMBB();
// Record the kill.
- //PHIKills[SrcReg].insert(&opBlock);
+ PHIKills[SrcReg].insert(&opBlock);
// If source is defined by an implicit def, there is no need to insert a
// copy.