From: Cameron Zwarich Date: Fri, 24 Dec 2010 03:09:36 +0000 (+0000) Subject: Simplify a check for implicit defs and remove a FIXME. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ef485d86585123b5e31a7f88aef22725ebd07e7a;p=oota-llvm.git 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 --- 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