; RUN: opt < %s -S -licm | FileCheck %s | |
; Check that we do not hoist convergent functions out of loop | |
; CHECK: define i32 @test | |
; CHECK: loop: | |
; CHECK: call i32 @f | |
define i32 @test(i32* nocapture noalias %x, i32* nocapture %y) { | |
entry: | |
br label %loop | |
loop: | |
%a = call i32 @f() nounwind readnone convergent | |
%exitcond = icmp ne i32 %a, 0 | |
br i1 %exitcond, label %end, label %loop | |
end: | |
ret i32 %a | |
} | |
declare i32 @f() nounwind readnone convergent |