summaryrefslogtreecommitdiff
path: root/test/Transforms/InstSimplify
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2011-01-01 16:12:09 +0000
committerDuncan Sands <baldrick@free.fr>2011-01-01 16:12:09 +0000
commit7cf85e74e3885005ca8e5fdb155fa5351e255b85 (patch)
treea2849e3f74b4753e12d33981b7d3aa62256efdbf /test/Transforms/InstSimplify
parentc88e91b875fc85ecc3e0d0f51b4a71dca9f29012 (diff)
downloadllvm-7cf85e74e3885005ca8e5fdb155fa5351e255b85.tar.gz
llvm-7cf85e74e3885005ca8e5fdb155fa5351e255b85.tar.bz2
llvm-7cf85e74e3885005ca8e5fdb155fa5351e255b85.tar.xz
Fix a README item by having InstructionSimplify do a mild form of value
numbering, in which it considers (for example) "%a = add i32 %x, %y" and "%b = add i32 %x, %y" to be equal because the operands are equal and the result of the instructions only depends on the values of the operands. This has almost no effect (it removes 4 instructions from gcc-as-one-file), and perhaps slows down compilation: I measured a 0.4% slowdown on the large gcc-as-one-file testcase, but it wasn't statistically significant. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122654 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstSimplify')
-rw-r--r--test/Transforms/InstSimplify/2010-12-31-ValueNumber.ll9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/Transforms/InstSimplify/2010-12-31-ValueNumber.ll b/test/Transforms/InstSimplify/2010-12-31-ValueNumber.ll
new file mode 100644
index 0000000000..5fd94aa78a
--- /dev/null
+++ b/test/Transforms/InstSimplify/2010-12-31-ValueNumber.ll
@@ -0,0 +1,9 @@
+; RUN: opt < %s -instsimplify -S | FileCheck %s
+define i1 @g(i32 %a) nounwind readnone {
+; CHECK: @g
+ %add = shl i32 %a, 1
+ %mul = shl i32 %a, 1
+ %cmp = icmp ugt i32 %add, %mul
+ ret i1 %cmp
+; CHECK: ret i1 false
+}