Index: llvm/trunk/include/llvm/Support/GenericDomTreeConstruction.h =================================================================== --- llvm/trunk/include/llvm/Support/GenericDomTreeConstruction.h +++ llvm/trunk/include/llvm/Support/GenericDomTreeConstruction.h @@ -632,7 +632,9 @@ Bucket; SmallDenseSet Visited; SmallVector Affected; - SmallVector VisitedNotAffectedQueue; +#ifndef NDEBUG + SmallVector VisitedUnaffected; +#endif }; static void InsertEdge(DomTreeT &DT, const BatchUpdatePtr BUI, @@ -800,8 +802,10 @@ // vertices. Store it in UnaffectedOnCurrentLevel. LLVM_DEBUG(dbgs() << "\t\tMarking visited not affected " << BlockNamePrinter(Succ) << "\n"); - II.VisitedNotAffectedQueue.push_back(SuccTN); UnaffectedOnCurrentLevel.push_back(SuccTN); +#ifndef NDEBUG + II.VisitedUnaffected.push_back(SuccTN); +#endif } else { // The condition is satisfied (Succ is affected). Add Succ to the // bucket queue. @@ -833,20 +837,13 @@ TN->setIDom(NCD); } - UpdateLevelsAfterInsertion(II); - if (IsPostDom) UpdateRootsAfterUpdate(DT, BUI); - } +#ifndef NDEBUG + for (const TreeNodePtr TN : II.VisitedUnaffected) + assert(TN->getLevel() == TN->getIDom()->getLevel() + 1 && + "TN should have been updated by an affected ancestor"); +#endif - static void UpdateLevelsAfterInsertion(InsertionInfo &II) { - LLVM_DEBUG( - dbgs() << "Updating levels for visited but not affected nodes\n"); - - for (const TreeNodePtr TN : II.VisitedNotAffectedQueue) { - LLVM_DEBUG(dbgs() << "\tlevel(" << BlockNamePrinter(TN) << ") = (" - << BlockNamePrinter(TN->getIDom()) << ") " - << TN->getIDom()->getLevel() << " + 1\n"); - TN->UpdateLevel(); - } + if (IsPostDom) UpdateRootsAfterUpdate(DT, BUI); } // Handles insertion to previously unreachable nodes.