[llvm] [ConstantFold] Fold inttoptr, ptrtoaddr to bitcast (PR #161087)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 29 00:45:55 PDT 2025


================
@@ -0,0 +1,24 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt < %s -passes=instcombine -S | FileCheck %s
+target datalayout = "p1:64:64:64:32"
+
+define i64 @ptrtoaddr_inttoptr() {
+; CHECK-LABEL: define i64 @ptrtoaddr_inttoptr() {
+; CHECK-NEXT:    ret i64 ptrtoaddr (ptr addrspace(1) inttoptr (i32 -1 to ptr addrspace(1)) to i64)
+;
+  ret i64 ptrtoaddr (ptr addrspace(1) inttoptr (i32 -1 to ptr addrspace(1)) to i64)
+}
+
+define i32 @ptrtoaddr_inttoptr_diff_size1() {
+; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_diff_size1() {
+; CHECK-NEXT:    ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i64 -1 to ptr addrspace(1)) to i32)
+;
+  ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i64 -1 to ptr addrspace(1)) to i32)
+}
+
+define i32 @ptrtoaddr_inttoptr_diff_size2() {
+; CHECK-LABEL: define i32 @ptrtoaddr_inttoptr_diff_size2() {
+; CHECK-NEXT:    ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i16 -1 to ptr addrspace(1)) to i32)
+;
+  ret i32 ptrtoaddr (ptr addrspace(1) inttoptr (i16 -1 to ptr addrspace(1)) to i32)
+}
----------------
nikic wrote:

Hm, we can make some of these fold, but we should really change the isEliminableCastPair() API to accept DataLayout for that. Leaving these cases alone is fine for now.

https://github.com/llvm/llvm-project/pull/161087


More information about the llvm-commits mailing list