MachineBasicBlock::iterator TI = TrueBBI.BB->begin();
MachineBasicBlock::iterator FI = FalseBBI.BB->begin();
- while (TI != TrueBBI.BB->end() && FI != FalseBBI.BB->end()) {
+ while (1) {
+ // Skip dbg_value instructions
+ if (TI->isDebugValue())
+ ++TI;
+ if (FI->isDebugValue())
+ ++FI;
+ if (TI == TrueBBI.BB->end() || FI == FalseBBI.BB->end())
+ break;
+
if (!TI->isIdenticalTo(FI))
break;
++Dups1;
TI = firstNonBranchInst(TrueBBI.BB, TII);
FI = firstNonBranchInst(FalseBBI.BB, TII);
- while (TI != TrueBBI.BB->begin() && FI != FalseBBI.BB->begin()) {
+ while (1) {
+ // Skip dbg_value instructions
+ if (TI->isDebugValue())
+ --TI;
+ if (FI->isDebugValue())
+ --FI;
+ if (TI == TrueBBI.BB->begin() || FI == FalseBBI.BB->begin())
+ break;
+
if (!TI->isIdenticalTo(FI))
break;
++Dups2;
BBI.ClobbersPred = false;
for (MachineBasicBlock::iterator I = BBI.BB->begin(), E = BBI.BB->end();
I != E; ++I) {
+ if (I->isDebugValue())
+ continue;
+
const TargetInstrDesc &TID = I->getDesc();
if (TID.isNotDuplicable())
BBI.CannotBeCopied = true;
MachineBasicBlock::iterator E,
SmallVectorImpl<MachineOperand> &Cond) {
for (MachineBasicBlock::iterator I = BBI.BB->begin(); I != E; ++I) {
- if (TII->isPredicated(I))
+ if (I->isDebugValue() || TII->isPredicated(I))
continue;
if (!TII->PredicateInstruction(I, Cond)) {
#ifndef NDEBUG
ToBBI.BB->insert(ToBBI.BB->end(), MI);
ToBBI.NonPredSize++;
- if (!isPredicated)
+ if (!isPredicated && !MI->isDebugValue())
if (!TII->PredicateInstruction(MI, Cond)) {
#ifndef NDEBUG
dbgs() << "Unable to predicate " << *I << "!\n";