Home | History | Annotate | Download | only in FunctionAttrs

Lines Matching full:convergent

4 ; CHECK-NOT: convergent
6 define i32 @nonleaf() convergent {
12 ; CHECK-NOT: convergent
14 define i32 @leaf() convergent {
19 ; CHECK-SAME: convergent
21 declare i32 @k() convergent
24 ; CHECK-SAME: convergent
26 define i32 @extern() convergent {
27 %a = call i32 @k() convergent
31 ; Convergent should not be removed on the function here. Although the call is
32 ; not explicitly convergent, it picks up the convergent attr from the callee.
35 ; CHECK-SAME: convergent
37 define i32 @extern_non_convergent_call() convergent {
43 ; CHECK-SAME: convergent
45 define i32 @indirect_convergent_call(i32 ()* %f) convergent {
46 %a = call i32 %f() convergent
53 ; CHECK-NOT: convergent
55 define i32 @indirect_non_convergent_call(i32 ()* %f) convergent norecurse {
61 ; CHECK-SAME: convergent
63 declare void @llvm.nvvm.barrier0() convergent
66 ; CHECK-SAME: convergent
68 define i32 @intrinsic() convergent {
69 ; Implicitly convergent, because the intrinsic is convergent.
75 ; CHECK-NOT: convergent
77 define i32 @recursive1() convergent {
78 %a = call i32 @recursive2() convergent
83 ; CHECK-NOT: convergent
85 define i32 @recursive2() convergent {
86 %a = call i32 @recursive1() convergent
91 ; CHECK-SAME: convergent
93 define i32 @noopt() convergent optnone noinline {
94 %a = call i32 @noopt_friend() convergent
98 ; A function which is mutually-recursive with a convergent, optnone function
99 ; shouldn't have its convergent attribute stripped.
101 ; CHECK-SAME: convergent
103 define i32 @noopt_friend() convergent {