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 | 28a193ed8b4b37593afb76f9130eacf393ea9383 (patch) | |
tree | bdd468e10d1107479ea3c54cf85d2ba2c40f5cd9 /test/Transforms | |
parent | 5374195cd74b481681f41d5e1b03e5ba69c9dad0 (diff) | |
download | external_llvm-28a193ed8b4b37593afb76f9130eacf393ea9383.zip external_llvm-28a193ed8b4b37593afb76f9130eacf393ea9383.tar.gz external_llvm-28a193ed8b4b37593afb76f9130eacf393ea9383.tar.bz2 |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103257 91177308-0d34-0410-b5e6-96231b3b80d8
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}]] |