summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorMichael Zolotukhin <mzolotukhin@apple.com>2014-05-07 14:30:18 +0000
committerMichael Zolotukhin <mzolotukhin@apple.com>2014-05-07 14:30:18 +0000
commit7d6293a0d3144ca6ee1bb84f9fba987d1600b272 (patch)
tree972a84ffca274101dfba70a0255ec1859e2200cf /llvm/test/Transforms
parent5b864d0cbb3a3e3029782df8d000464e6f4d4b2d (diff)
downloadbcm5719-llvm-7d6293a0d3144ca6ee1bb84f9fba987d1600b272.tar.gz
bcm5719-llvm-7d6293a0d3144ca6ee1bb84f9fba987d1600b272.zip
[InstCombine] Add optimization of redundant insertvalue instructions.
rdar://problem/11861387 llvm-svn: 208214
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstCombine/OverlappingInsertvalues.ll25
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/OverlappingInsertvalues.ll b/llvm/test/Transforms/InstCombine/OverlappingInsertvalues.ll
new file mode 100644
index 00000000000..3af684bf4b3
--- /dev/null
+++ b/llvm/test/Transforms/InstCombine/OverlappingInsertvalues.ll
@@ -0,0 +1,25 @@
+; RUN: opt < %s -instcombine -S | FileCheck %s
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
+; Check that we can find and remove redundant insertvalues
+; CHECK-LABEL: foo_simple
+; CHECK-NOT: i8* %x, 0
+define { i8*, i64, i32 } @foo_simple(i8* %x, i8* %y) nounwind {
+entry:
+ %0 = insertvalue { i8*, i64, i32 } undef, i8* %x, 0
+ %1 = insertvalue { i8*, i64, i32 } %0, i8* %y, 0
+ ret { i8*, i64, i32 } %1
+}
+; Check that we can find and remove redundant nodes in insertvalues chain
+; CHECK-LABEL: foo_ovwrt_chain
+; CHECK-NOT: i64 %y, 1
+; CHECK-NOT: i32 555, 2
+define { i8*, i64, i32 } @foo_ovwrt_chain(i8* %x, i64 %y, i64 %z) nounwind {
+entry:
+ %0 = insertvalue { i8*, i64, i32 } undef, i8* %x, 0
+ %1 = insertvalue { i8*, i64, i32 } %0, i64 %y, 1
+ %2 = insertvalue { i8*, i64, i32 } %1, i32 555, 2
+ %3 = insertvalue { i8*, i64, i32 } %2, i64 %z, 1
+ %4 = insertvalue { i8*, i64, i32 } %3, i32 777, 2
+ ret { i8*, i64, i32 } %4
+}
OpenPOWER on IntegriCloud