; 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 |