diff options
| author | Jun Bum Lim <junbuml@codeaurora.org> | 2016-07-15 16:14:34 +0000 |
|---|---|---|
| committer | Jun Bum Lim <junbuml@codeaurora.org> | 2016-07-15 16:14:34 +0000 |
| commit | a5737d8eac169e667662f5fc66cb284b600a4c1e (patch) | |
| tree | ce30780692b789b7d1f0702637b7fa3ec81c143a /llvm/test/Transforms/DeadStoreElimination/OverwriteStoreBegin.ll | |
| parent | 57ac95b0a6d33e2a52155bfeb92a797e6817d6b0 (diff) | |
| download | bcm5719-llvm-a5737d8eac169e667662f5fc66cb284b600a4c1e.tar.gz bcm5719-llvm-a5737d8eac169e667662f5fc66cb284b600a4c1e.zip | |
[DSE]Enhance shorthening MemIntrinsic based on OverlapIntervals
Summary:
This change use the overlap interval map built from partial overwrite tracking to perform shortening MemIntrinsics.
Add test cases which was missing opportunities before.
Reviewers: hfinkel, eeckstein, mcrosier
Subscribers: mcrosier, llvm-commits
Differential Revision: https://reviews.llvm.org/D21909
llvm-svn: 275571
Diffstat (limited to 'llvm/test/Transforms/DeadStoreElimination/OverwriteStoreBegin.ll')
| -rw-r--r-- | llvm/test/Transforms/DeadStoreElimination/OverwriteStoreBegin.ll | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/test/Transforms/DeadStoreElimination/OverwriteStoreBegin.ll b/llvm/test/Transforms/DeadStoreElimination/OverwriteStoreBegin.ll index 0bcd8516acd..1614a529ddd 100644 --- a/llvm/test/Transforms/DeadStoreElimination/OverwriteStoreBegin.ll +++ b/llvm/test/Transforms/DeadStoreElimination/OverwriteStoreBegin.ll @@ -86,5 +86,23 @@ entry: ret void } +define void @write8To15AndThen0To7(i64* nocapture %P) { +entry: +; CHECK-LABEL: @write8To15AndThen0To7( +; CHECK: [[GEP:%[0-9]+]] = getelementptr inbounds i8, i8* %mybase0, i64 16 +; CHECK: tail call void @llvm.memset.p0i8.i64(i8* [[GEP]], i8 0, i64 16, i32 8, i1 false) + + %base0 = bitcast i64* %P to i8* + %mybase0 = getelementptr inbounds i8, i8* %base0, i64 0 + tail call void @llvm.memset.p0i8.i64(i8* %mybase0, i8 0, i64 32, i32 8, i1 false) + + %base64_0 = getelementptr inbounds i64, i64* %P, i64 0 + %base64_1 = getelementptr inbounds i64, i64* %P, i64 1 + + store i64 1, i64* %base64_1 + store i64 2, i64* %base64_0 + ret void +} + declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind |

