diff options
Diffstat (limited to 'test/Transforms/Sink/convergent.ll')
| -rw-r--r-- | test/Transforms/Sink/convergent.ll | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/Transforms/Sink/convergent.ll b/test/Transforms/Sink/convergent.ll new file mode 100644 index 0000000000000..49207dbc99276 --- /dev/null +++ b/test/Transforms/Sink/convergent.ll @@ -0,0 +1,24 @@ +; RUN: opt -sink -S < %s | FileCheck %s + +; Verify that IR sinking does not move convergent operations to +; blocks that are not control equivalent. + +; CHECK: define i32 @foo +; CHECK: entry +; CHECK-NEXT: call i32 @bar +; CHECK-NEXT: br i1 %arg + +define i32 @foo(i1 %arg) { +entry: + %c = call i32 @bar() readonly convergent + br i1 %arg, label %then, label %end + +then: + ret i32 %c + +end: + ret i32 0 +} + +declare i32 @bar() readonly convergent + |
