From ef485d86585123b5e31a7f88aef22725ebd07e7a Mon Sep 17 00:00:00 2001 From: Cameron Zwarich Date: Fri, 24 Dec 2010 03:09:36 +0000 Subject: [PATCH] Simplify a check for implicit defs and remove a FIXME. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122537 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/StrongPHIElimination.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/lib/CodeGen/StrongPHIElimination.cpp b/lib/CodeGen/StrongPHIElimination.cpp index b475432bcfb..a0ad2fb0c0b 100644 --- a/lib/CodeGen/StrongPHIElimination.cpp +++ b/lib/CodeGen/StrongPHIElimination.cpp @@ -189,20 +189,18 @@ void StrongPHIElimination::InsertCopiesForPHI(MachineInstr* PHI, SmallPtrSet MBBsInsertedInto; for (unsigned i = 1; i < PHI->getNumOperands(); i += 2) { MachineOperand& SrcMO = PHI->getOperand(i); + + // If a source is defined by an implicit def, there is no need to insert a + // copy in the predecessor. + if (SrcMO.isUndef()) + continue; + unsigned SrcReg = SrcMO.getReg(); unsigned SrcSubReg = SrcMO.getSubReg(); assert(TargetRegisterInfo::isVirtualRegister(SrcReg) && "Machine PHI Operands must all be virtual registers!"); - // If source is defined by an implicit def, there is no need to insert a - // copy. - // FIXME: For some reason, if LiveIntervals is run prior to PHI elimination - // implcit defs have no defining instruction. Is this expected? - MachineInstr* DefMI = MRI->getVRegDef(SrcReg); - if (!DefMI) - continue; - MachineBasicBlock* PredBB = PHI->getOperand(i + 1).getMBB(); // A copy may have already been inserted in the predecessor in the case of a