diff options
Diffstat (limited to 'test/Transforms/Sink/basic.ll')
-rw-r--r-- | test/Transforms/Sink/basic.ll | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/Transforms/Sink/basic.ll b/test/Transforms/Sink/basic.ll new file mode 100644 index 0000000..beb9481 --- /dev/null +++ b/test/Transforms/Sink/basic.ll @@ -0,0 +1,22 @@ +; RUN: opt < %s -sink -S | FileCheck %s + +@A = external global i32 +@B = external global i32 + +; Sink should sink the load past the store (which doesn't overlap) into +; the block that uses it. + +; CHECK: @foo +; CHECK: true: +; CHECK-NEXT: %l = load i32* @A +; CHECK-NEXT: ret i32 %l + +define i32 @foo(i1 %z) { + %l = load i32* @A + store i32 0, i32* @B + br i1 %z, label %true, label %false +true: + ret i32 %l +false: + ret i32 0 +} |