summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll
diff options
context:
space:
mode:
authorJun Bum Lim <junbuml@codeaurora.org>2016-06-30 15:32:20 +0000
committerJun Bum Lim <junbuml@codeaurora.org>2016-06-30 15:32:20 +0000
commit596a3bd9ece335303c14cd3d33cbc4cb1717db88 (patch)
treef41f1113f4d8ee96c5317c8b3edf214da13e31e4 /llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll
parente766a87b0170fe9a1ecc1a776fef43bf27aa1294 (diff)
downloadbcm5719-llvm-596a3bd9ece335303c14cd3d33cbc4cb1717db88.tar.gz
bcm5719-llvm-596a3bd9ece335303c14cd3d33cbc4cb1717db88.zip
[DSE] Fix bug in partial overwrite tracking
Summary: Found cases where DSE incorrectly add partially-overwritten intervals. Please see the test case for details. Reviewers: mcrosier, eeckstein, hfinkel Subscribers: mcrosier, llvm-commits Differential Revision: http://reviews.llvm.org/D21859 llvm-svn: 274237
Diffstat (limited to 'llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll')
-rw-r--r--llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll39
1 files changed, 39 insertions, 0 deletions
diff --git a/llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll b/llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll
index bd639f629c8..cb015b2d1ce 100644
--- a/llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll
+++ b/llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll
@@ -198,3 +198,42 @@ entry:
ret i8 0
}
+define signext i8 @test6(i32 *%ptr) {
+entry:
+; CHECK-LABEL: @test6
+
+ store i32 0, i32* %ptr
+
+ %bptr = bitcast i32* %ptr to i16*
+ %bptr1 = getelementptr inbounds i16, i16* %bptr, i64 0
+ %bptr2 = getelementptr inbounds i16, i16* %bptr, i64 1
+
+ store i16 1456, i16* %bptr2, align 1
+ store i16 65535, i16* %bptr1, align 1
+
+; CHECK-NOT: store i32 0, i32* %ptr
+
+ ret i8 0
+}
+
+define signext i8 @test7(i64 *%ptr) {
+entry:
+; CHECK-LABEL: @test7
+
+ store i64 0, i64* %ptr
+
+ %bptr = bitcast i64* %ptr to i16*
+ %bptr1 = getelementptr inbounds i16, i16* %bptr, i64 0
+ %bptr2 = getelementptr inbounds i16, i16* %bptr, i64 1
+ %bptr3 = getelementptr inbounds i16, i16* %bptr, i64 2
+ %bptr4 = getelementptr inbounds i16, i16* %bptr, i64 3
+
+ store i16 1346, i16* %bptr1, align 1
+ store i16 1756, i16* %bptr3, align 1
+ store i16 1456, i16* %bptr2, align 1
+ store i16 5656, i16* %bptr4, align 1
+
+; CHECK-NOT: store i64 0, i64* %ptr
+
+ ret i8 0
+}
OpenPOWER on IntegriCloud