[llvm] 68782a8 - [DSE] Read after strcpy test.
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 2 09:38:24 PST 2021
Author: Florian Hahn
Date: 2021-12-02T17:37:59Z
New Revision: 68782a860dfa680697cf5748f2609624e933fcbb
URL: https://github.com/llvm/llvm-project/commit/68782a860dfa680697cf5748f2609624e933fcbb
DIFF: https://github.com/llvm/llvm-project/commit/68782a860dfa680697cf5748f2609624e933fcbb.diff
LOG: [DSE] Read after strcpy test.
Added:
Modified:
llvm/test/Transforms/DeadStoreElimination/libcalls.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/DeadStoreElimination/libcalls.ll b/llvm/test/Transforms/DeadStoreElimination/libcalls.ll
index 9e8d556881dbb..06ae9d04ad199 100644
--- a/llvm/test/Transforms/DeadStoreElimination/libcalls.ll
+++ b/llvm/test/Transforms/DeadStoreElimination/libcalls.ll
@@ -15,6 +15,27 @@ define void @test1(i8* %src) {
ret void
}
+define void @strcpy_reads_after(i8* noalias %dest, i8* %src) {
+; CHECK-LABEL: @strcpy_reads_after(
+; CHECK-NEXT: [[SRC_2:%.*]] = getelementptr inbounds i8, i8* [[SRC:%.*]], i64 1
+; CHECK-NEXT: store i8 1, i8* [[SRC]], align 1
+; CHECK-NEXT: store i8 99, i8* [[SRC_2]], align 1
+; CHECK-NEXT: [[SRC_1:%.*]] = getelementptr inbounds i8, i8* [[SRC]], i64 1
+; CHECK-NEXT: [[CALL:%.*]] = call i8* @strcpy(i8* [[DEST:%.*]], i8* [[SRC_1]])
+; CHECK-NEXT: store i8 2, i8* [[SRC]], align 1
+; CHECK-NEXT: store i8 2, i8* [[SRC_2]], align 1
+; CHECK-NEXT: ret void
+;
+ %src.2 = getelementptr inbounds i8, i8* %src, i64 1
+ store i8 1, i8* %src
+ store i8 99, i8* %src.2
+ %src.1 = getelementptr inbounds i8, i8* %src, i64 1
+ %call = call i8* @strcpy(i8* %dest, i8* %src.1)
+ store i8 2, i8* %src
+ store i8 2, i8* %src.2
+ ret void
+}
+
declare i8* @strncpy(i8* %dest, i8* %src, i64 %n) nounwind
define void @test2(i8* %src) {
; CHECK-LABEL: @test2(
More information about the llvm-commits
mailing list