[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