1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 13:33:37 +02:00
llvm-mirror/test/Transforms/InstCombine/convergent.ll

34 lines
804 B
LLVM
Raw Normal View History

; RUN: opt -instcombine -S < %s | FileCheck %s
declare i32 @k() convergent
declare i32 @f()
define i32 @extern() {
; Convergent attr shouldn't be removed here; k is convergent.
; CHECK: call i32 @k() [[CONVERGENT_ATTR:#[0-9]+]]
%a = call i32 @k() convergent
ret i32 %a
}
define i32 @extern_no_attr() {
; Convergent attr shouldn't be added here, even though k is convergent.
; CHECK: call i32 @k(){{$}}
%a = call i32 @k()
ret i32 %a
}
define i32 @no_extern() {
; Convergent should be removed here, as the target is convergent.
; CHECK: call i32 @f(){{$}}
%a = call i32 @f() convergent
ret i32 %a
}
define i32 @indirect_call(i32 ()* %f) {
; CHECK call i32 %f() [[CONVERGENT_ATTR]]
%a = call i32 %f() convergent
ret i32 %a
}
; CHECK: [[CONVERGENT_ATTR]] = { convergent }