[llvm] [UBSan] make ubsantrap IntrInaccessibleMemOnly (PR #156100)
Florian Mayer via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 29 14:32:44 PDT 2025
https://github.com/fmayer updated https://github.com/llvm/llvm-project/pull/156100
>From 6348ea5e1ea6497f46a003959c429ad3038152d8 Mon Sep 17 00:00:00 2001
From: Florian Mayer <fmayer at google.com>
Date: Fri, 29 Aug 2025 13:29:37 -0700
Subject: [PATCH 1/2] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?=
=?UTF-8?q?itial=20version?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Created using spr 1.3.4
---
llvm/include/llvm/IR/Intrinsics.td | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/llvm/include/llvm/IR/Intrinsics.td b/llvm/include/llvm/IR/Intrinsics.td
index e0ee12391b31d..ca8bf6d7b912e 100644
--- a/llvm/include/llvm/IR/Intrinsics.td
+++ b/llvm/include/llvm/IR/Intrinsics.td
@@ -1834,7 +1834,8 @@ def int_trap : Intrinsic<[], [], [IntrNoReturn, IntrCold, IntrInaccessibleMemOnl
def int_debugtrap : Intrinsic<[]>,
ClangBuiltin<"__builtin_debugtrap">;
def int_ubsantrap : Intrinsic<[], [llvm_i8_ty],
- [IntrNoReturn, IntrCold, ImmArg<ArgIndex<0>>]>;
+ [IntrNoReturn, IntrCold, ImmArg<ArgIndex<0>>,
+ IntrInaccessibleMemOnly, IntrWriteMem]>;
// Return true if ubsan check is allowed.
def int_allow_ubsan_check : DefaultAttrsIntrinsic<[llvm_i1_ty], [llvm_i8_ty],
>From 52311443d04c7faf89baba9b63099a08137c1291 Mon Sep 17 00:00:00 2001
From: Florian Mayer <fmayer at google.com>
Date: Fri, 29 Aug 2025 14:32:30 -0700
Subject: [PATCH 2/2] update test
Created using spr 1.3.4
---
llvm/test/Instrumentation/BoundsChecking/runtimes.ll | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/llvm/test/Instrumentation/BoundsChecking/runtimes.ll b/llvm/test/Instrumentation/BoundsChecking/runtimes.ll
index 2006a6db2ef40..84dd51cd3fa28 100644
--- a/llvm/test/Instrumentation/BoundsChecking/runtimes.ll
+++ b/llvm/test/Instrumentation/BoundsChecking/runtimes.ll
@@ -182,7 +182,7 @@ define void @f1(i64 %x) nounwind {
; RT: attributes #[[ATTR0]] = { nounwind }
;.
; TR-NOMERGE: attributes #[[ATTR0]] = { nounwind }
-; TR-NOMERGE: attributes #[[ATTR1:[0-9]+]] = { cold noreturn nounwind }
+; TR-NOMERGE: attributes #[[ATTR1:[0-9]+]] = { cold noreturn nounwind memory(inaccessiblemem: write) }
; TR-NOMERGE: attributes #[[ATTR2]] = { nomerge noreturn nounwind }
;.
; RT-NOMERGE: attributes #[[ATTR0]] = { nounwind }
@@ -201,7 +201,7 @@ define void @f1(i64 %x) nounwind {
;.
; TR-GUARD: attributes #[[ATTR0]] = { nounwind }
; TR-GUARD: attributes #[[ATTR1:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) }
-; TR-GUARD: attributes #[[ATTR2:[0-9]+]] = { cold noreturn nounwind }
+; TR-GUARD: attributes #[[ATTR2:[0-9]+]] = { cold noreturn nounwind memory(inaccessiblemem: write) }
; TR-GUARD: attributes #[[ATTR3]] = { nomerge noreturn nounwind }
;.
; RT-GUARD: attributes #[[ATTR0]] = { nounwind }
More information about the llvm-commits
mailing list