xref: /llvm-project/llvm/test/Transforms/LoopSimplify/convergent.ll (revision 80a89c55c6d958dc100c91d9e87c0f6e9f6794a6)
1; RUN: opt < %s -S -passes=loop-simplify | FileCheck %s
2
3; Don't separate out nested loops if a convergent call is present
4
5; CHECK-NOT: BB1.outer
6; CHECK: BB1.backedge
7
8define i32 @test(i1 %loop_cond, i1 %exit_cond, i32 %init) {
9entry:
10  br label %BB1
11
12BB1:
13  %indvar = phi i32 [%indvar, %BB1], [%inc, %BB2], [%init, %entry]
14  call void @f() convergent
15  br i1 %loop_cond, label %BB1, label %BB2
16
17BB2:
18  %inc = add i32 %indvar, 1
19  br i1 %exit_cond, label %exit, label %BB1
20
21exit:
22  ret i32 %inc
23}
24
25declare void @f() convergent
26