[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