diff options
Diffstat (limited to 'test/Transforms')
-rw-r--r-- | test/Transforms/Sink/basic.ll | 22 | ||||
-rw-r--r-- | test/Transforms/Sink/dg.exp | 3 |
2 files changed, 25 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 +} diff --git a/test/Transforms/Sink/dg.exp b/test/Transforms/Sink/dg.exp new file mode 100644 index 0000000..f200589 --- /dev/null +++ b/test/Transforms/Sink/dg.exp @@ -0,0 +1,3 @@ +load_lib llvm.exp + +RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]] |