mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-02 16:36:40 +00:00
SCEVExpander: Fix a regression I introduced by to eagerly adding RAII objects.
PR17425. llvm-svn: 191741
This commit is contained in:
parent
dd8ae7a617
commit
e04c4c3faf
@ -569,7 +569,7 @@ Value *SCEVExpander::expandAddToGEP(const SCEV *const *op_begin,
|
||||
}
|
||||
|
||||
// Save the original insertion point so we can restore it when we're done.
|
||||
BuilderType::InsertPointGuard Guard(Builder);
|
||||
BuilderType::InsertPoint SaveInsertPt = Builder.saveIP();
|
||||
|
||||
// Move the insertion point out of as many loops as we can.
|
||||
while (const Loop *L = SE.LI->getLoopFor(Builder.GetInsertBlock())) {
|
||||
@ -604,6 +604,9 @@ Value *SCEVExpander::expandAddToGEP(const SCEV *const *op_begin,
|
||||
Ops.push_back(SE.getUnknown(GEP));
|
||||
rememberInstruction(GEP);
|
||||
|
||||
// Restore the original insert point.
|
||||
Builder.restoreIP(SaveInsertPt);
|
||||
|
||||
return expand(SE.getAddExpr(Ops));
|
||||
}
|
||||
|
||||
|
@ -68,3 +68,46 @@ bb7:
|
||||
catch i8* null
|
||||
ret void
|
||||
}
|
||||
|
||||
; PR17425
|
||||
define void @i() {
|
||||
entry:
|
||||
br label %while.cond
|
||||
|
||||
while.cond: ; preds = %while.cond, %entry
|
||||
%c.0 = phi i16* [ undef, %entry ], [ %incdec.ptr, %while.cond ]
|
||||
%incdec.ptr = getelementptr inbounds i16* %c.0, i64 1
|
||||
br i1 undef, label %while.cond1, label %while.cond
|
||||
|
||||
while.cond1: ; preds = %while.cond1, %while.cond
|
||||
%c.1 = phi i16* [ %incdec.ptr5, %while.cond1 ], [ %c.0, %while.cond ]
|
||||
%incdec.ptr5 = getelementptr inbounds i16* %c.1, i64 1
|
||||
br i1 undef, label %while.cond7, label %while.cond1
|
||||
|
||||
while.cond7: ; preds = %while.cond7, %while.cond1
|
||||
%0 = phi i16* [ %incdec.ptr10, %while.cond7 ], [ %c.1, %while.cond1 ]
|
||||
%incdec.ptr10 = getelementptr inbounds i16* %0, i64 1
|
||||
br i1 undef, label %while.cond12.preheader, label %while.cond7
|
||||
|
||||
while.cond12.preheader: ; preds = %while.cond7
|
||||
br i1 undef, label %while.end16, label %while.body13.lr.ph
|
||||
|
||||
while.body13: ; preds = %if.else, %while.body13.lr.ph
|
||||
%1 = phi i16* [ %2, %while.body13.lr.ph ], [ %incdec.ptr15, %if.else ]
|
||||
br i1 undef, label %while.cond12.outer.loopexit, label %if.else
|
||||
|
||||
while.cond12.outer.loopexit: ; preds = %while.body13
|
||||
br i1 undef, label %while.end16, label %while.body13.lr.ph
|
||||
|
||||
while.body13.lr.ph: ; preds = %while.cond12.outer.loopexit, %while.cond12.preheader
|
||||
%2 = phi i16* [ %1, %while.cond12.outer.loopexit ], [ undef, %while.cond12.preheader ]
|
||||
br label %while.body13
|
||||
|
||||
if.else: ; preds = %while.body13
|
||||
%incdec.ptr15 = getelementptr inbounds i16* %1, i64 1
|
||||
%cmp = icmp eq i16* %incdec.ptr15, %0
|
||||
br i1 %cmp, label %while.end16, label %while.body13
|
||||
|
||||
while.end16: ; preds = %if.else, %while.cond12.outer.loopexit, %while.cond12.preheader
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user