llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-llvm-transforms Author: Vitaly Buka (vitalybuka) <details> <summary>Changes</summary> Doing this because it's similar to `assume`, but I can't see a difference neither for `assume` nor for `allow`. RFC: https://discourse.llvm.org/t/rfc-add-llvm-experimental-hot-intrinsic-or-llvm-hot/77641 --- Full diff: https://github.com/llvm/llvm-project/pull/86067.diff 2 Files Affected: - (modified) llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp (+2) - (modified) llvm/test/Transforms/DeadStoreElimination/libcalls.ll (+17) ``````````diff diff --git a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp index bfc8bd5970bf27..5a9ea420392f75 100644 --- a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp +++ b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp @@ -760,6 +760,8 @@ namespace { bool isNoopIntrinsic(Instruction *I) { if (const IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) { switch (II->getIntrinsicID()) { + case Intrinsic::allow_runtime_check: + case Intrinsic::allow_ubsan_check: case Intrinsic::lifetime_start: case Intrinsic::lifetime_end: case Intrinsic::invariant_end: diff --git a/llvm/test/Transforms/DeadStoreElimination/libcalls.ll b/llvm/test/Transforms/DeadStoreElimination/libcalls.ll index 4d9a767e08d490..7a4908d550a96a 100644 --- a/llvm/test/Transforms/DeadStoreElimination/libcalls.ll +++ b/llvm/test/Transforms/DeadStoreElimination/libcalls.ll @@ -487,3 +487,20 @@ define void @dse_strncpy_test6(ptr noalias %out1, ptr noalias %out2, ptr noalias %call = tail call ptr @strncpy(ptr %out2, ptr %in, i64 100) ret void } + +define i32 @test_strcat_with_allow_check(ptr %src) { +; CHECK-LABEL: @test_strcat_with_allow_check( +; CHECK-NEXT: [[ALLOW1:%.*]] = call i1 @llvm.allow.runtime.check(metadata !"test_check") +; CHECK-NEXT: [[ALLOW2:%.*]] = call i1 @llvm.allow.ubsan.check(i8 7) +; CHECK-NEXT: tail call void @llvm.memset.p0.i64(ptr [[B:%.*]], i8 44, i64 16, i1 false) +; CHECK-NEXT: [[RET:%.*]] = load i32, ptr [[B]], align 4 +; CHECK-NEXT: ret i32 [[RET]] +; + tail call void @llvm.memset.p0.i64(ptr %src, i8 42, i64 16, i1 false) + %allow1 = call i1 @llvm.allow.runtime.check(metadata !"test_check") + tail call void @llvm.memset.p0.i64(ptr %src, i8 43, i64 16, i1 false) + %allow2 = call i1 @llvm.allow.ubsan.check(i8 7) + tail call void @llvm.memset.p0.i64(ptr %src, i8 44, i64 16, i1 false) + %ret = load i32, ptr %src, align 4 + ret i32 %ret +} `````````` </details> https://github.com/llvm/llvm-project/pull/86067 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits