[llvm] [ASan] Convert pointer-pair operands based on type (PR #218494)
Thurston Dang via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 25 12:05:29 PDT 2026
================
@@ -71,3 +71,51 @@ define <2 x i1> @mycmp_vector(<2 x ptr> %p, <2 x ptr> %q) sanitize_address {
%z = icmp ult <2 x i64> %x, %y
ret <2 x i1> %z
}
+
+define i32 @mysub_ptrtoint_trunc(ptr %p, ptr %q) sanitize_address {
+; ALL-LABEL: @mysub_ptrtoint_trunc
+; NOSUB-NOT: call void @__sanitizer_ptr_sub
+; SUB: [[P:%[0-9A-Za-z]+]] = ptrtoint ptr %p to i32
+; SUB: [[Q:%[0-9A-Za-z]+]] = ptrtoint ptr %q to i32
+ %x = ptrtoint ptr %p to i32
+ %y = ptrtoint ptr %q to i32
+ %z = sub i32 %x, %y
+; SUB: [[XP:%[0-9A-Za-z]+]] = zext i32 [[P]] to i64
+; SUB: [[XQ:%[0-9A-Za-z]+]] = zext i32 [[Q]] to i64
+; SUB: call void @__sanitizer_ptr_sub(i64 [[XP]], i64 [[XQ]])
----------------
thurstond wrote:
If something wasn't intended to be a pointer, we shouldn't call __sanitizer_ptr_sub at all - it expects two real pointers.
https://github.com/llvm/llvm-project/pull/218494
More information about the llvm-commits
mailing list