diff options
author | Florian Hahn <florian.hahn@arm.com> | 2018-06-25 19:17:29 +0000 |
---|---|---|
committer | Florian Hahn <florian.hahn@arm.com> | 2018-06-25 19:17:29 +0000 |
commit | 5947c17fd4225fdf6d655fca0830f6c6f8337d0b (patch) | |
tree | 786e511ea5e36a28f0a3332e412f29dd6a3053ab /llvm/lib/Analysis/ScalarEvolutionExpander.cpp | |
parent | 1e911fa746ab00b50a70756288455ee8499aadf0 (diff) | |
download | bcm5719-llvm-5947c17fd4225fdf6d655fca0830f6c6f8337d0b.tar.gz bcm5719-llvm-5947c17fd4225fdf6d655fca0830f6c6f8337d0b.zip |
[SCEVExp] Advance found insertion point until we find a non-dbg instruction.
This avoids creating unnecessary casts if the IP used to be a dbg info
intrinsic. Fixes PR37727.
Reviewers: vsk, aprantl, sanjoy, efriedma
Reviewed By: vsk, efriedma
Differential Revision: https://reviews.llvm.org/D47874
llvm-svn: 335513
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolutionExpander.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolutionExpander.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolutionExpander.cpp b/llvm/lib/Analysis/ScalarEvolutionExpander.cpp index f2ce0f4aa86..43b3239a9e9 100644 --- a/llvm/lib/Analysis/ScalarEvolutionExpander.cpp +++ b/llvm/lib/Analysis/ScalarEvolutionExpander.cpp @@ -162,7 +162,8 @@ Value *SCEVExpander::InsertNoopCastOfTo(Value *V, Type *Ty) { // Cast the instruction immediately after the instruction. Instruction *I = cast<Instruction>(V); - BasicBlock::iterator IP = findInsertPointAfter(I, Builder.GetInsertBlock()); + BasicBlock::iterator IP = skipDebugInfo( + findInsertPointAfter(I, Builder.GetInsertBlock())); return ReuseOrCreateCast(I, Ty, Op, IP); } @@ -1480,8 +1481,8 @@ Value *SCEVExpander::visitAddRecExpr(const SCEVAddRecExpr *S) { NewOps[i] = SE.getAnyExtendExpr(S->op_begin()[i], CanonicalIV->getType()); Value *V = expand(SE.getAddRecExpr(NewOps, S->getLoop(), S->getNoWrapFlags(SCEV::FlagNW))); - BasicBlock::iterator NewInsertPt = - findInsertPointAfter(cast<Instruction>(V), Builder.GetInsertBlock()); + BasicBlock::iterator NewInsertPt = skipDebugInfo( + findInsertPointAfter(cast<Instruction>(V), Builder.GetInsertBlock())); V = expandCodeFor(SE.getTruncateExpr(SE.getUnknown(V), Ty), nullptr, &*NewInsertPt); return V; |