From: Dan Gohman Date: Thu, 20 May 2010 20:00:25 +0000 (+0000) Subject: Simplify this code. Don't do a DomTreeNode lookup for each visited block. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=d974a0e9d682e627f100340a8021e02ca991f965;p=oota-llvm.git Simplify this code. Don't do a DomTreeNode lookup for each visited block. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104267 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp index 968c3067f9a..3c94616fe95 100644 --- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -3091,17 +3091,6 @@ void LSRInstance::Solve(SmallVectorImpl &Solution) const { }); } -/// getImmediateDominator - A handy utility for the specific DominatorTree -/// query that we need here. -/// -static BasicBlock *getImmediateDominator(BasicBlock *BB, DominatorTree &DT) { - DomTreeNode *Node = DT.getNode(BB); - if (!Node) return 0; - Node = Node->getIDom(); - if (!Node) return 0; - return Node->getBlock(); -} - /// HoistInsertPosition - Helper for AdjustInsertPositionForExpand. Climb up /// the dominator tree far as we can go while still being dominated by the /// input positions. This helps canonicalize the insert position, which @@ -3115,9 +3104,11 @@ LSRInstance::HoistInsertPosition(BasicBlock::iterator IP, unsigned IPLoopDepth = IPLoop ? IPLoop->getLoopDepth() : 0; BasicBlock *IDom; - for (BasicBlock *Rung = IP->getParent(); ; Rung = IDom) { - IDom = getImmediateDominator(Rung, DT); - if (!IDom) return IP; + for (DomTreeNode *Rung = DT.getNode(IP->getParent()); ; ) { + assert(Rung && "Block has no DomTreeNode!"); + Rung = Rung->getIDom(); + if (!Rung) return IP; + IDom = Rung->getBlock(); // Don't climb into a loop though. const Loop *IDomLoop = LI.getLoopFor(IDom);