summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2018-02-02 13:44:37 +0000
committerHans Wennborg <hans@hanshq.net>2018-02-02 13:44:37 +0000
commit7e8d1e7421f89de424e8ddf40d1948588e0dc3e9 (patch)
tree5782cb17ec2084158476340c96a93a2fe678a682 /test
parent240f1f3d602bc77d4ee810653042307bb5f734b9 (diff)
Merging r323759:
------------------------------------------------------------------------ r323759 | spatel | 2018-01-30 14:53:59 +0100 (Tue, 30 Jan 2018) | 10 lines [DSE] make sure memory is not modified before partial store merging (PR36129) We missed a critical check in D30703. We must make sure that no intermediate store is sitting between the stores that we want to merge. This should fix: https://bugs.llvm.org/show_bug.cgi?id=36129 Differential Revision: https://reviews.llvm.org/D42663 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_60@324086 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Transforms/DeadStoreElimination/merge-stores.ll17
1 files changed, 17 insertions, 0 deletions
diff --git a/test/Transforms/DeadStoreElimination/merge-stores.ll b/test/Transforms/DeadStoreElimination/merge-stores.ll
index ad1bc310878..ff1bfaa4d3c 100644
--- a/test/Transforms/DeadStoreElimination/merge-stores.ll
+++ b/test/Transforms/DeadStoreElimination/merge-stores.ll
@@ -186,6 +186,23 @@ define void @PR34074(i32* %x, i64* %y) {
ret void
}
+; We can't eliminate the last store because P and Q may alias.
+
+define void @PR36129(i32* %P, i32* %Q) {
+; CHECK-LABEL: @PR36129(
+; CHECK-NEXT: store i32 1, i32* [[P:%.*]]
+; CHECK-NEXT: [[P2:%.*]] = bitcast i32* [[P]] to i8*
+; CHECK-NEXT: store i32 2, i32* [[Q:%.*]]
+; CHECK-NEXT: store i8 3, i8* [[P2]]
+; CHECK-NEXT: ret void
+;
+ store i32 1, i32* %P
+ %P2 = bitcast i32* %P to i8*
+ store i32 2, i32* %Q
+ store i8 3, i8* %P2
+ ret void
+}
+
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 5.0.0 (trunk 306512)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
!1 = !DIFile(filename: "me.cpp", directory: "/compiler-explorer")
!2 = !{}