[llvm] [AddressSanitizer] Avoid unnecessary ptr<->int casts for stack poisoning (PR #162634)
Florian Mayer via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 10 10:21:47 PDT 2025
================
@@ -391,11 +391,23 @@ define void @FuncletPersonality(ptr %ptrParam) sanitize_address personality ptr
; CHECK-OUTLINE-NEXT: [[TMP70:%.*]] = call ptr @__asan_memset(ptr [[TMP16]], i32 0, i64 4) [ "funclet"(token [[TMP67]]) ]
; CHECK-OUTLINE-NEXT: [[TMP71:%.*]] = call ptr @__asan_memcpy(ptr [[TMP18]], ptr [[TMP16]], i64 4) [ "funclet"(token [[TMP67]]) ]
; CHECK-OUTLINE-NEXT: [[TMP72:%.*]] = call ptr @__asan_memmove(ptr [[TMP20]], ptr [[TMP16]], i64 4) [ "funclet"(token [[TMP67]]) ]
+; CHECK-OUTLINE-NEXT: [[TMP15:%.*]] = ptrtoint ptr [[TMP16]] to i64
+; CHECK-OUTLINE-NEXT: [[TMP17:%.*]] = ptrtoint ptr [[TMP18]] to i64
; CHECK-OUTLINE-NEXT: call void @__sanitizer_ptr_cmp(i64 [[TMP15]], i64 [[TMP17]]) [ "funclet"(token [[TMP67]]) ]
-; CHECK-OUTLINE-NEXT: call void @__sanitizer_ptr_sub(i64 [[TMP15]], i64 [[TMP17]]) [ "funclet"(token [[TMP67]]) ]
+; CHECK-OUTLINE-NEXT: [[ADDR1:%.*]] = ptrtoint ptr [[TMP16]] to i64
+; CHECK-OUTLINE-NEXT: [[ADDR2:%.*]] = ptrtoint ptr [[TMP18]] to i64
+; CHECK-OUTLINE-NEXT: call void @__sanitizer_ptr_sub(i64 [[ADDR1]], i64 [[ADDR2]]) [ "funclet"(token [[TMP67]]) ]
+; CHECK-OUTLINE-NEXT: [[SUBADDR:%.*]] = sub i64 [[ADDR1]], [[ADDR2]]
; CHECK-OUTLINE-NEXT: [[TMP73:%.*]] = ptrtoint ptr [[PTRPARAM]] to i64
; CHECK-OUTLINE-NEXT: call void @__asan_storeN(i64 [[TMP73]], i64 8) [ "funclet"(token [[TMP67]]) ]
; CHECK-OUTLINE-NEXT: store i64 0, ptr [[PTRPARAM]], align 1
+; CHECK-OUTLINE-NEXT: [[CMP:%.*]] = icmp ne i64 [[SUBADDR]], 0
+; CHECK-OUTLINE-NEXT: br i1 [[CMP]], label [[EHEXIT:%.*]], label [[NORETURNCALL:%.*]]
+; CHECK-OUTLINE: noreturncall:
+; CHECK-OUTLINE-NEXT: call void @__asan_handle_no_return() [ "funclet"(token [[TMP67]]) ]
----------------
fmayer wrote:
hmm that is odd. the LHS doesn't have any `__asan_handle_no_return`, and as I understand this change should be logic preserving
https://github.com/llvm/llvm-project/pull/162634
More information about the llvm-commits
mailing list