mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
ff4cd4e1d6
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
32 lines
1.0 KiB
LLVM
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
|
|
}
|