22 lines
455 B
LLVM
22 lines
455 B
LLVM
; 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
|