diff options
| author | Jun Bum Lim <junbuml@codeaurora.org> | 2016-06-30 15:32:20 +0000 |
|---|---|---|
| committer | Jun Bum Lim <junbuml@codeaurora.org> | 2016-06-30 15:32:20 +0000 |
| commit | 596a3bd9ece335303c14cd3d33cbc4cb1717db88 (patch) | |
| tree | f41f1113f4d8ee96c5317c8b3edf214da13e31e4 /llvm/test/Transforms/DeadStoreElimination/combined-partial-overwrites.ll | |
| parent | e766a87b0170fe9a1ecc1a776fef43bf27aa1294 (diff) | |
| download | bcm5719-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.ll | 39 |
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 +} |

