1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/Analysis/ScalarEvolution/2012-05-18-LoopPredRecurse.ll
Chandler Carruth ff4cd4e1d6 [PM] Clean up the testing for IVUsers, especially with the new PM.
First, I've moved a test of IVUsers from the LSR tree to a dedicated
IVUsers test directory. I've also simplified its RUN line now that the
new pass manager's loop PM is providing analyses on their own.

No functionality changed, but it makes subsequent changes cleaner.

llvm-svn: 292060
2017-01-15 09:29:27 +00:00

32 lines
1.0 KiB
LLVM

; RUN: opt < %s -iv-users -S -disable-output
; RUN: opt < %s -passes='require<ivusers>' -S -disable-output
;
; PR12868: Infinite recursion:
; getUDivExpr()->getZeroExtendExpr()->isLoopBackedgeGuardedBy()
;
; We actually want SCEV simplification to fail gracefully in this
; case, so there's no output to check, just the absence of stack overflow.
@c = common global i8 0, align 1
define i32 @func() {
entry:
br label %for.cond
for.cond: ; preds = %for.body, %entry
%storemerge = phi i8 [ -1, %entry ], [ %inc, %for.body ]
%ui.0 = phi i32 [ undef, %entry ], [ %div, %for.body ]
%tobool = icmp eq i8 %storemerge, 0
br i1 %tobool, label %for.end, label %for.body
for.body: ; preds = %for.cond
%conv = sext i8 %storemerge to i32
%div = lshr i32 %conv, 1
%tobool2 = icmp eq i32 %div, 0
%inc = add i8 %storemerge, 1
br i1 %tobool2, label %for.cond, label %for.end
for.end: ; preds = %for.body, %for.cond
ret i32 0
}