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 | |
| 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')
| -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;  | 

