summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2010-08-27 23:31:36 +0000
committerOwen Anderson <resistor@mac.com>2010-08-27 23:31:36 +0000
commitcf7f941121e848b1e2dcb4962e7033014d487e80 (patch)
tree69f65253293054595d68479eb1506445cc52cb76 /llvm/test/Transforms
parente71d553cd4e95b4cb8c9ffd2f7122a2ca735467c (diff)
downloadbcm5719-llvm-cf7f941121e848b1e2dcb4962e7033014d487e80.tar.gz
bcm5719-llvm-cf7f941121e848b1e2dcb4962e7033014d487e80.zip
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. llvm-svn: 112325
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/ValuePropagation/dg.exp3
-rw-r--r--llvm/test/Transforms/ValuePropagation/phi.ll17
-rw-r--r--llvm/test/Transforms/ValuePropagation/select.ll25
3 files changed, 45 insertions, 0 deletions
diff --git a/llvm/test/Transforms/ValuePropagation/dg.exp b/llvm/test/Transforms/ValuePropagation/dg.exp
new file mode 100644
index 00000000000..de42dad163f
--- /dev/null
+++ b/llvm/test/Transforms/ValuePropagation/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.ll]]
diff --git a/llvm/test/Transforms/ValuePropagation/phi.ll b/llvm/test/Transforms/ValuePropagation/phi.ll
new file mode 100644
index 00000000000..f150876525c
--- /dev/null
+++ b/llvm/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/llvm/test/Transforms/ValuePropagation/select.ll b/llvm/test/Transforms/ValuePropagation/select.ll
new file mode 100644
index 00000000000..02acc8fc76d
--- /dev/null
+++ b/llvm/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
OpenPOWER on IntegriCloud