Changes in directory llvm/lib/Transforms/Utils:
LoopSimplify.cpp updated: 1.61 -> 1.62 --- Log message: Teach loopsimplify to update et-forest. Patch contributed by Daniel Berlin! --- Diffs of the changes: (+19 -0) LoopSimplify.cpp | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+) Index: llvm/lib/Transforms/Utils/LoopSimplify.cpp diff -u llvm/lib/Transforms/Utils/LoopSimplify.cpp:1.61 llvm/lib/Transforms/Utils/LoopSimplify.cpp:1.62 --- llvm/lib/Transforms/Utils/LoopSimplify.cpp:1.61 Fri Aug 12 20:30:36 2005 +++ llvm/lib/Transforms/Utils/LoopSimplify.cpp Mon Jan 9 02:03:08 2006 @@ -69,6 +69,7 @@ AU.addPreserved<LoopInfo>(); AU.addPreserved<DominatorSet>(); AU.addPreserved<ImmediateDominators>(); + AU.addPreserved<ETForest>(); AU.addPreserved<DominatorTree>(); AU.addPreserved<DominanceFrontier>(); AU.addPreservedID(BreakCriticalEdgesID); // No critical edges added. @@ -334,6 +335,7 @@ // the old header. DominatorTree::Node *PHDomTreeNode = DT.createNewNode(NewBB, DT.getNode(Header)->getIDom()); + BasicBlock *oldHeaderIDom = DT.getNode(Header)->getIDom()->getBlock(); // Change the header node so that PNHode is the new immediate dominator DT.changeImmediateDominator(DT.getNode(Header), PHDomTreeNode); @@ -359,6 +361,15 @@ // The preheader now is the immediate dominator for the header node... ID->setImmediateDominator(Header, NewBB); } + + // Update ET Forest information if we have it... + if (ETForest *EF = getAnalysisToUpdate<ETForest>()) { + // Whatever i-dominated the header node now immediately dominates NewBB + EF->addNewBlock(NewBB, oldHeaderIDom); + + // The preheader now is the immediate dominator for the header node... + EF->setImmediateDominator(Header, NewBB); + } // Update dominance frontier information... if (DominanceFrontier *DF = getAnalysisToUpdate<DominanceFrontier>()) { @@ -762,6 +773,7 @@ NewBBIDomNode = NewBBIDomNode->getIDom(); assert(NewBBIDomNode && "No shared dominator found??"); } + NewBBIDom = NewBBIDomNode->getBlock(); } // Create the new dominator tree node... and set the idom of NewBB. @@ -775,6 +787,13 @@ } } + // Update ET-Forest information if it is active. + if (ETForest *EF = getAnalysisToUpdate<ETForest>()) { + EF->addNewBlock(NewBB, NewBBIDom); + if (NewBBDominatesNewBBSucc) + EF->setImmediateDominator(NewBBSucc, NewBB); + } + // Update dominance frontier information... if (DominanceFrontier *DF = getAnalysisToUpdate<DominanceFrontier>()) { // If NewBB dominates NewBBSucc, then DF(NewBB) is now going to be the _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits