diff options
author | Owen Anderson <resistor@mac.com> | 2010-08-27 23:31:36 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2010-08-27 23:31:36 +0000 |
commit | a0b59f6bd23afaeba923b94f46838cffd5218a12 (patch) | |
tree | 0ac25e8321349e71ebdc071c25df9b28d97a8d32 /test/Transforms | |
parent | ee61fcf98bb84e7e9f3450035bef92c4d087c0ae (diff) | |
download | external_llvm-a0b59f6bd23afaeba923b94f46838cffd5218a12.zip external_llvm-a0b59f6bd23afaeba923b94f46838cffd5218a12.tar.gz external_llvm-a0b59f6bd23afaeba923b94f46838cffd5218a12.tar.bz2 |
Add a prototype of a new peephole optimizing pass that uses LazyValue info to simplify PHIs and select's.
This pass addresses the missed optimizations from PR2581 and PR4420.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112325 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms')
-rw-r--r-- | test/Transforms/ValuePropagation/dg.exp | 3 | ||||
-rw-r--r-- | test/Transforms/ValuePropagation/phi.ll | 17 | ||||
-rw-r--r-- | test/Transforms/ValuePropagation/select.ll | 25 |
3 files changed, 45 insertions, 0 deletions
diff --git a/test/Transforms/ValuePropagation/dg.exp b/test/Transforms/ValuePropagation/dg.exp new file mode 100644 index 0000000..de42dad --- /dev/null +++ b/test/Transforms/ValuePropagation/dg.exp @@ -0,0 +1,3 @@ +load_lib llvm.exp + +RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.ll]] diff --git a/test/Transforms/ValuePropagation/phi.ll b/test/Transforms/ValuePropagation/phi.ll new file mode 100644 index 0000000..f150876 --- /dev/null +++ b/test/Transforms/ValuePropagation/phi.ll @@ -0,0 +1,17 @@ +; RUN: opt < %s -value-propagation -S | FileCheck %s +; PR2581 + +; CHECK: @run +define i32 @run(i1 %C) nounwind { + br i1 %C, label %exit, label %body + +body: ; preds = %0 +; CHECK-NOT: select + %A = select i1 %C, i32 10, i32 11 ; <i32> [#uses=1] +; CHECK: ret i32 11 + ret i32 %A + +exit: ; preds = %0 +; CHECK: ret i32 10 + ret i32 10 +}
\ No newline at end of file diff --git a/test/Transforms/ValuePropagation/select.ll b/test/Transforms/ValuePropagation/select.ll new file mode 100644 index 0000000..02acc8f --- /dev/null +++ b/test/Transforms/ValuePropagation/select.ll @@ -0,0 +1,25 @@ +; RUN: opt < %s -value-propagation -S | FileCheck %s +; PR4420 + +declare i1 @ext() +; CHECK: @foo +define i1 @foo() { +entry: + %cond = tail call i1 @ext() ; <i1> [#uses=2] + br i1 %cond, label %bb1, label %bb2 + +bb1: ; preds = %entry + %cond2 = tail call i1 @ext() ; <i1> [#uses=1] + br i1 %cond2, label %bb3, label %bb2 + +bb2: ; preds = %bb1, %entry +; CHECK-NOT: phi i1 + %cond_merge = phi i1 [ %cond, %entry ], [ false, %bb1 ] ; <i1> [#uses=1] +; CHECK: ret i1 false + ret i1 %cond_merge + +bb3: ; preds = %bb1 + %res = tail call i1 @ext() ; <i1> [#uses=1] +; CHECK: ret i1 %res + ret i1 %res +}
\ No newline at end of file |