xref: /llvm-project/llvm/test/Transforms/Sink/convergent.ll (revision 211cf8a384ebb29787367c8fd5858e2a5ed3c10f)
1; RUN: opt -passes=sink -S < %s | FileCheck %s
2
3; Verify that IR sinking does not move convergent operations to
4; blocks that are not control equivalent.
5
6; CHECK: define i32 @foo
7; CHECK: entry
8; CHECK-NEXT: call i32 @bar
9; CHECK-NEXT: br i1 %arg
10
11define i32 @foo(i1 %arg) {
12entry:
13  %c = call i32 @bar() nounwind readonly convergent
14  br i1 %arg, label %then, label %end
15
16then:
17  ret i32 %c
18
19end:
20  ret i32 0
21}
22
23declare i32 @bar() nounwind readonly convergent
24