llvm-for-llvmta/test/Transforms/LoopSimplify/convergent.ll

26 lines
522 B
LLVM

; RUN: opt < %s -S -loop-simplify | FileCheck %s
; Don't separate out nested loops if a convergent call is present
; CHECK-NOT: BB1.outer
; CHECK: BB1.backedge
define i32 @test(i1 %loop_cond, i1 %exit_cond, i32 %init) {
entry:
br label %BB1
BB1:
%indvar = phi i32 [%indvar, %BB1], [%inc, %BB2], [%init, %entry]
call void @f() convergent
br i1 %loop_cond, label %BB1, label %BB2
BB2:
%inc = add i32 %indvar, 1
br i1 %exit_cond, label %exit, label %BB1
exit:
ret i32 %inc
}
declare void @f() convergent