diff options
| author | Vaivaswatha Nagaraj <vn@compilertree.com> | 2016-04-27 05:25:09 +0000 |
|---|---|---|
| committer | Vaivaswatha Nagaraj <vn@compilertree.com> | 2016-04-27 05:25:09 +0000 |
| commit | 08efb0efcdacb079f0687ad94e64b2b85c6f051a (patch) | |
| tree | edf6936c21ccd695824f5479006d36729593deb6 | |
| parent | de4318b9280127604ccbe0c1834b063c9b5006e0 (diff) | |
| download | bcm5719-llvm-08efb0efcdacb079f0687ad94e64b2b85c6f051a.tar.gz bcm5719-llvm-08efb0efcdacb079f0687ad94e64b2b85c6f051a.zip | |
[Cloning] cloneLoopWithPreheader(): add assert to ensure no sub-loops
Summary:
cloneLoopWithPreheader() does not update LoopInfo for sub-loop of
the original loop being cloned. Add assert to ensure no sub-loops for loop being cloned.
Reviewers: anemet, ashutosh.nema, hfinkel
Subscribers: mzolotukhin, llvm-commits
Differential Revision: http://reviews.llvm.org/D15922
llvm-svn: 267671
| -rw-r--r-- | llvm/include/llvm/Transforms/Utils/Cloning.h | 1 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Utils/CloneFunction.cpp | 2 |
2 files changed, 3 insertions, 0 deletions
diff --git a/llvm/include/llvm/Transforms/Utils/Cloning.h b/llvm/include/llvm/Transforms/Utils/Cloning.h index 4f006f2adee..6adc58e2e98 100644 --- a/llvm/include/llvm/Transforms/Utils/Cloning.h +++ b/llvm/include/llvm/Transforms/Utils/Cloning.h @@ -221,6 +221,7 @@ bool InlineFunction(CallSite CS, InlineFunctionInfo &IFI, /// /// Updates LoopInfo and DominatorTree assuming the loop is dominated by block /// \p LoopDomBB. Insert the new blocks before block specified in \p Before. +/// Note: Only innermost loops are supported. Loop *cloneLoopWithPreheader(BasicBlock *Before, BasicBlock *LoopDomBB, Loop *OrigLoop, ValueToValueMapTy &VMap, const Twine &NameSuffix, LoopInfo *LI, diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp index f2d929f555c..c8d12129861 100644 --- a/llvm/lib/Transforms/Utils/CloneFunction.cpp +++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp @@ -672,6 +672,8 @@ Loop *llvm::cloneLoopWithPreheader(BasicBlock *Before, BasicBlock *LoopDomBB, const Twine &NameSuffix, LoopInfo *LI, DominatorTree *DT, SmallVectorImpl<BasicBlock *> &Blocks) { + assert(OrigLoop->getSubLoops().empty() && + "Loop to be cloned cannot have inner loop"); Function *F = OrigLoop->getHeader()->getParent(); Loop *ParentLoop = OrigLoop->getParentLoop(); |

