From: Piotr Padlewski Date: Sat, 18 Feb 2017 20:34:36 +0000 (+0000) Subject: [MemorySSA] NFC small fixes X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e7c7257c3ac24e8c9adc540a969bdfff7a3612ee;p=llvm [MemorySSA] NFC small fixes Summary: 2 small fixes extracted from https://reviews.llvm.org/D29064 Reviewers: kuhar, davide, dberlin, george.burgess.iv Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D30109 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@295566 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Utils/MemorySSA.cpp b/lib/Transforms/Utils/MemorySSA.cpp index af4dc028b85..74deec41119 100644 --- a/lib/Transforms/Utils/MemorySSA.cpp +++ b/lib/Transforms/Utils/MemorySSA.cpp @@ -1322,7 +1322,10 @@ void MemorySSA::OptimizeUses::optimizeUsesInBlock( // Pop everything that doesn't dominate the current block off the stack, // increment the PopEpoch to account for this. - while (!VersionStack.empty()) { + while (true) { + assert( + !VersionStack.empty() && + "Version stack should have liveOnEntry sentinel dominating everything"); BasicBlock *BackBlock = VersionStack.back()->getBlock(); if (DT->dominates(BackBlock, BB)) break; @@ -1330,6 +1333,7 @@ void MemorySSA::OptimizeUses::optimizeUsesInBlock( VersionStack.pop_back(); ++PopEpoch; } + for (MemoryAccess &MA : *Accesses) { auto *MU = dyn_cast(&MA); if (!MU) { @@ -1450,20 +1454,13 @@ void MemorySSA::OptimizeUses::optimizeUsesInBlock( /// Optimize uses to point to their actual clobbering definitions. void MemorySSA::OptimizeUses::optimizeUses() { - - // We perform a non-recursive top-down dominator tree walk - struct StackInfo { - const DomTreeNode *Node; - DomTreeNode::const_iterator Iter; - }; - SmallVector VersionStack; - SmallVector DomTreeWorklist; DenseMap LocStackInfo; VersionStack.push_back(MSSA->getLiveOnEntryDef()); unsigned long StackEpoch = 1; unsigned long PopEpoch = 1; + // We perform a non-recursive top-down dominator tree walk. for (const auto *DomNode : depth_first(DT->getRootNode())) optimizeUsesInBlock(DomNode->getBlock(), StackEpoch, PopEpoch, VersionStack, LocStackInfo);