[llvm] 4030b27 - [Loads] Handle ptrtoaddr in isPointerUseReplaceable()
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 9 01:59:27 PDT 2025
Author: Nikita Popov
Date: 2025-10-09T10:59:16+02:00
New Revision: 4030b276f7e59b66caa483ed4cecf05729611c3c
URL: https://github.com/llvm/llvm-project/commit/4030b276f7e59b66caa483ed4cecf05729611c3c
DIFF: https://github.com/llvm/llvm-project/commit/4030b276f7e59b66caa483ed4cecf05729611c3c.diff
LOG: [Loads] Handle ptrtoaddr in isPointerUseReplaceable()
Unlike the ptrtoint case, this is actually correct for ptrtoaddr.
Added:
Modified:
llvm/lib/Analysis/Loads.cpp
llvm/test/Transforms/GVN/assume-equal.ll
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/Loads.cpp b/llvm/lib/Analysis/Loads.cpp
index 4c2e1feed29cd..54f55b20a93ac 100644
--- a/llvm/lib/Analysis/Loads.cpp
+++ b/llvm/lib/Analysis/Loads.cpp
@@ -812,7 +812,9 @@ static bool isPointerUseReplacable(const Use &U) {
auto *User = Worklist.pop_back_val();
if (!Visited.insert(User).second)
continue;
- if (isa<ICmpInst, PtrToIntInst>(User))
+ // FIXME: The PtrToIntInst case here is not strictly correct, as it
+ // changes which provenance is exposed.
+ if (isa<ICmpInst, PtrToIntInst, PtrToAddrInst>(User))
continue;
if (isa<PHINode, SelectInst>(User))
Worklist.append(User->user_begin(), User->user_end());
diff --git a/llvm/test/Transforms/GVN/assume-equal.ll b/llvm/test/Transforms/GVN/assume-equal.ll
index 8a585ef9d5cd1..bbbc5c58584a6 100644
--- a/llvm/test/Transforms/GVN/assume-equal.ll
+++ b/llvm/test/Transforms/GVN/assume-equal.ll
@@ -393,7 +393,7 @@ define i64 @assume_ptr_eq_
diff erent_prov_does_not_matter_ptrtoaddr(ptr %p, ptr %
; CHECK-SAME: ptr [[P:%.*]], ptr [[P2:%.*]]) {
; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr [[P]], [[P2]]
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]])
-; CHECK-NEXT: [[INT:%.*]] = ptrtoaddr ptr [[P2]] to i64
+; CHECK-NEXT: [[INT:%.*]] = ptrtoaddr ptr [[P]] to i64
; CHECK-NEXT: ret i64 [[INT]]
;
%cmp = icmp eq ptr %p, %p2
More information about the llvm-commits
mailing list