diff --git a/lib/CodeGen/MachineBasicBlock.cpp b/lib/CodeGen/MachineBasicBlock.cpp index 7351302cc32..71d59f0b4b3 100644 --- a/lib/CodeGen/MachineBasicBlock.cpp +++ b/lib/CodeGen/MachineBasicBlock.cpp @@ -796,8 +796,8 @@ MachineBasicBlock::SplitCriticalEdge(MachineBasicBlock *Succ, Pass *P) { MachineOperand &MO = I->getOperand(ni); unsigned Reg = MO.getReg(); PHISrcRegs.insert(Reg); - if (MO.isUndef() || !isLastMBB) - break; + if (MO.isUndef()) + continue; LiveInterval &LI = LIS->getInterval(Reg); VNInfo *VNI = LI.getVNInfoAt(PrevIndex); @@ -817,16 +817,7 @@ MachineBasicBlock::SplitCriticalEdge(MachineBasicBlock *Succ, Pass *P) { if (!LI.liveAt(PrevIndex)) continue; - bool isLiveOut = false; - for (MachineBasicBlock::succ_iterator SI = succ_begin(), - SE = succ_end(); SI != SE; ++SI) { - MachineBasicBlock *SuccMBB = *SI == NMBB ? Succ : *SI; - if (LI.liveAt(LIS->getMBBStartIdx(SuccMBB))) { - isLiveOut = true; - break; - } - } - + bool isLiveOut = LI.liveAt(LIS->getMBBStartIdx(Succ)); if (isLiveOut && isLastMBB) { VNInfo *VNI = LI.getVNInfoAt(PrevIndex); assert(VNI && "LiveInterval should have VNInfo where it is live.");