[llvm] 0bc3781 - [Analysis] Exclude llvm.allow.{runtime,ubsan}.check() from AliasSetTracker (#86065)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Mar 31 22:47:58 PDT 2024
Author: Vitaly Buka
Date: 2024-03-31T22:47:55-07:00
New Revision: 0bc3781649c2d029e61766c0b74ea1f416996105
URL: https://github.com/llvm/llvm-project/commit/0bc3781649c2d029e61766c0b74ea1f416996105
DIFF: https://github.com/llvm/llvm-project/commit/0bc3781649c2d029e61766c0b74ea1f416996105.diff
LOG: [Analysis] Exclude llvm.allow.{runtime,ubsan}.check() from AliasSetTracker (#86065)
RFC:
https://discourse.llvm.org/t/rfc-add-llvm-experimental-hot-intrinsic-or-llvm-hot/77641
Added:
Modified:
llvm/lib/Analysis/AliasSetTracker.cpp
llvm/test/Analysis/AliasSet/intrinsics.ll
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/AliasSetTracker.cpp b/llvm/lib/Analysis/AliasSetTracker.cpp
index 59bb40cdba6e15..32e545daaf2269 100644
--- a/llvm/lib/Analysis/AliasSetTracker.cpp
+++ b/llvm/lib/Analysis/AliasSetTracker.cpp
@@ -354,6 +354,8 @@ void AliasSetTracker::addUnknown(Instruction *Inst) {
default:
break;
// FIXME: Add lifetime/invariant intrinsics (See: PR30807).
+ case Intrinsic::allow_runtime_check:
+ case Intrinsic::allow_ubsan_check:
case Intrinsic::assume:
case Intrinsic::experimental_noalias_scope_decl:
case Intrinsic::sideeffect:
diff --git a/llvm/test/Analysis/AliasSet/intrinsics.ll b/llvm/test/Analysis/AliasSet/intrinsics.ll
index 678d6d246e639c..0dc802ca7e0aaf 100644
--- a/llvm/test/Analysis/AliasSet/intrinsics.ll
+++ b/llvm/test/Analysis/AliasSet/intrinsics.ll
@@ -74,6 +74,36 @@ entry:
ret void
}
+; CHECK: Alias sets for function 'test_runtime':
+; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
+; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Memory locations: (ptr %a, LocationSize::precise(1))
+; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Memory locations: (ptr %b, LocationSize::precise(1))
+define i1 @test_runtime() local_unnamed_addr {
+entry:
+ %a = alloca i8, align 1
+ %b = alloca i8, align 1
+ store i8 1, ptr %a, align 1
+ %allow = call i1 @llvm.allow.runtime.check(metadata !"test_check")
+ store i8 1, ptr %b, align 1
+ ret i1 %allow
+}
+
+; CHECK: Alias sets for function 'test_ubsan':
+; CHECK: Alias Set Tracker: 2 alias sets for 2 pointer values.
+; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Memory locations: (ptr %a, LocationSize::precise(1))
+; CHECK: AliasSet[0x{{[0-9a-f]+}}, 1] must alias, Mod Memory locations: (ptr %b, LocationSize::precise(1))
+define i1 @test_ubsan() local_unnamed_addr {
+entry:
+ %a = alloca i8, align 1
+ %b = alloca i8, align 1
+ store i8 1, ptr %a, align 1
+ %allow = call i1 @llvm.allow.ubsan.check(i8 7)
+ store i8 1, ptr %b, align 1
+ ret i1 %allow
+}
+
+declare i1 @llvm.allow.ubsan.check(i8)
+declare i1 @llvm.allow.runtime.check(metadata)
declare void @llvm.assume(i1)
declare void @llvm.experimental.guard(i1, ...)
declare void @llvm.experimental.noalias.scope.decl(metadata)
More information about the llvm-commits
mailing list