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 | 7d6293a0d3144ca6ee1bb84f9fba987d1600b272 (patch) | |
| tree | 972a84ffca274101dfba70a0255ec1859e2200cf /llvm/test/Transforms | |
| parent | 5b864d0cbb3a3e3029782df8d000464e6f4d4b2d (diff) | |
| download | bcm5719-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.ll | 25 |
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 +} |

