diff options
| author | Dan Gohman <gohman@apple.com> | 2010-05-07 15:40:13 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2010-05-07 15:40:13 +0000 |
| commit | 5d5b8b1b8c8719d0ac362b8bc12957fc79de4595 (patch) | |
| tree | 497cb1e7154e632a9295fb15d182075c725ed2d7 /llvm/test/Transforms/Sink | |
| parent | 65f6acc551fe501a558ee84e19e282b4a4c5ca14 (diff) | |
| download | bcm5719-llvm-5d5b8b1b8c8719d0ac362b8bc12957fc79de4595.tar.gz bcm5719-llvm-5d5b8b1b8c8719d0ac362b8bc12957fc79de4595.zip | |
Add an LLVM IR version of code sinking. This uses the same simple algorithm
as MachineSink, but it isn't constrained by MachineInstr-level details.
llvm-svn: 103257
Diffstat (limited to 'llvm/test/Transforms/Sink')
| -rw-r--r-- | llvm/test/Transforms/Sink/basic.ll | 22 | ||||
| -rw-r--r-- | llvm/test/Transforms/Sink/dg.exp | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Sink/basic.ll b/llvm/test/Transforms/Sink/basic.ll new file mode 100644 index 00000000000..beb9481c840 --- /dev/null +++ b/llvm/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/llvm/test/Transforms/Sink/dg.exp b/llvm/test/Transforms/Sink/dg.exp new file mode 100644 index 00000000000..f2005891a59 --- /dev/null +++ b/llvm/test/Transforms/Sink/dg.exp @@ -0,0 +1,3 @@ +load_lib llvm.exp + +RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]] |

