diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-06-09 19:06:30 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-06-09 19:06:30 +0000 |
| commit | 85d8b2bbe386bcfe669575d05b61482d7be07e5d (patch) | |
| tree | 1dc5e75ab222a9ead44c699eceafab7a6ca7b310 /test/Transforms/Sink/convergent.ll | |
| parent | 5a5ac124e1efaf208671f01c46edb15f29ed2a0b (diff) | |
Notes
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 + |
