diff options
author | Michael Zolotukhin <mzolotukhin@apple.com> | 2014-05-07 14:30:18 +0000 |
---|---|---|
committer | Michael Zolotukhin <mzolotukhin@apple.com> | 2014-05-07 14:30:18 +0000 |
commit | 355e0a6460c1b76abe966480a6a7401444f48034 (patch) | |
tree | 498dcb881fa6d9176adb2e7e64defcffda4f2e85 /test/Transforms/InstCombine | |
parent | 0c78010b8888ab4ebb4f7d0a33fa8078111d1808 (diff) | |
download | llvm-355e0a6460c1b76abe966480a6a7401444f48034.tar.gz llvm-355e0a6460c1b76abe966480a6a7401444f48034.tar.bz2 llvm-355e0a6460c1b76abe966480a6a7401444f48034.tar.xz |
[InstCombine] Add optimization of redundant insertvalue instructions.
rdar://problem/11861387
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208214 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine')
-rw-r--r-- | test/Transforms/InstCombine/OverlappingInsertvalues.ll | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/OverlappingInsertvalues.ll b/test/Transforms/InstCombine/OverlappingInsertvalues.ll new file mode 100644 index 0000000000..3af684bf4b --- /dev/null +++ b/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 +} |