[llvm] 1c32ad1 - [DSE] Add tests for __memset_chk libcalls.
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 1 04:08:08 PST 2022
Author: Florian Hahn
Date: 2022-12-01T12:07:51Z
New Revision: 1c32ad11bb2ba4592513b3686b25e6c6a2c7f212
URL: https://github.com/llvm/llvm-project/commit/1c32ad11bb2ba4592513b3686b25e6c6a2c7f212
DIFF: https://github.com/llvm/llvm-project/commit/1c32ad11bb2ba4592513b3686b25e6c6a2c7f212.diff
LOG: [DSE] Add tests for __memset_chk libcalls.
Added:
Modified:
llvm/test/Transforms/DeadStoreElimination/libcalls-chk.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/DeadStoreElimination/libcalls-chk.ll b/llvm/test/Transforms/DeadStoreElimination/libcalls-chk.ll
index d414b36f4e95..85fc55df96b2 100644
--- a/llvm/test/Transforms/DeadStoreElimination/libcalls-chk.ll
+++ b/llvm/test/Transforms/DeadStoreElimination/libcalls-chk.ll
@@ -4,6 +4,8 @@
target triple = "x86_64-unknown-linux-gnu"
declare ptr @__memset_chk(ptr writeonly, i32, i64, i64) argmemonly
+declare ptr @__memcpy_chk(ptr writeonly, ptr readonly, i64, i64) argmemonly nounwind
+
declare ptr @strncpy(ptr %dest, ptr %src, i64 %n) nounwind
declare void @use(ptr)
@@ -106,3 +108,27 @@ define void @dse_strncpy_chk_test3(ptr noalias %out1, ptr noalias %out2, ptr noa
%call.2 = tail call ptr @__memset_chk(ptr %out2, i32 42, i64 100, i64 %n)
ret void
}
+
+define void @dse_strncpy_memcpy_chk_test1(ptr noalias %out, ptr noalias %in, i64 %n) {
+; CHECK-LABEL: @dse_strncpy_memcpy_chk_test1(
+; CHECK-NEXT: store i32 0, ptr [[OUT:%.*]], align 4
+; CHECK-NEXT: [[CALL_1:%.*]] = tail call ptr @__memcpy_chk(ptr [[OUT]], ptr [[IN:%.*]], i64 100, i64 [[N:%.*]])
+; CHECK-NEXT: ret void
+;
+ store i32 0, ptr %out
+ %call.1 = tail call ptr @__memcpy_chk(ptr %out, ptr %in, i64 100, i64 %n)
+ ret void
+}
+
+define void @dse_strncpy_memcpy_chk_test2(ptr noalias %out, ptr noalias %in, i64 %n) {
+; CHECK-LABEL: @dse_strncpy_memcpy_chk_test2(
+; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i8, ptr [[OUT:%.*]], i64 100
+; CHECK-NEXT: store i8 10, ptr [[GEP]], align 1
+; CHECK-NEXT: [[CALL_1:%.*]] = tail call ptr @__memcpy_chk(ptr [[OUT]], ptr [[IN:%.*]], i64 100, i64 [[N:%.*]])
+; CHECK-NEXT: ret void
+;
+ %gep = getelementptr inbounds i8, ptr %out, i64 100
+ store i8 10, ptr %gep
+ %call.1 = tail call ptr @__memcpy_chk(ptr %out, ptr %in, i64 100, i64 %n)
+ ret void
+}
More information about the llvm-commits
mailing list