diff options
| author | Piotr Padlewski <piotr.padlewski@gmail.com> | 2017-02-18 20:34:36 +0000 |
|---|---|---|
| committer | Piotr Padlewski <piotr.padlewski@gmail.com> | 2017-02-18 20:34:36 +0000 |
| commit | cc5868c186652cbf42e57bf2a7f101b9135a33c7 (patch) | |
| tree | 82669f596010ebe57a2344dc27536e22f3d0efd0 /llvm/lib/Transforms | |
| parent | ba2a726cc6c3d7abfdfd23f24986d77925b62435 (diff) | |
| download | bcm5719-llvm-cc5868c186652cbf42e57bf2a7f101b9135a33c7.tar.gz bcm5719-llvm-cc5868c186652cbf42e57bf2a7f101b9135a33c7.zip | |
[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
llvm-svn: 295566
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Utils/MemorySSA.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/llvm/lib/Transforms/Utils/MemorySSA.cpp b/llvm/lib/Transforms/Utils/MemorySSA.cpp index af4dc028b85..74deec41119 100644 --- a/llvm/lib/Transforms/Utils/MemorySSA.cpp +++ b/llvm/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<MemoryUse>(&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<MemoryAccess *, 16> VersionStack; - SmallVector<StackInfo, 16> DomTreeWorklist; DenseMap<MemoryLocOrCall, MemlocStackInfo> 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); |

