26 lines
522 B
LLVM
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
|