[Mlir-commits] [mlir] [mlir][LLVMIR] Add folders for `llvm.inttoptr` and `llvm.ptrtoint` (PR #141891)

Mehdi Amini llvmlistbot at llvm.org
Thu May 29 01:50:24 PDT 2025


================
@@ -134,6 +134,32 @@ llvm.func @fold_extract_splat() -> f64 {
 
 // -----
 
+// CHECK-LABEL: fold_inttoptr_ptrtoint
+//  CHECK-SAME: %[[ARG:.+]]: i32) -> i32
+//   CHECK-NOT: inttoptr
+//   CHECK-NOT: ptrtoint
+//  CHECK-NEXT: llvm.return %[[ARG]]
+llvm.func @fold_inttoptr_ptrtoint(%x : i32) -> i32 {
+  %c = llvm.inttoptr %x : i32 to !llvm.ptr
+  %d = llvm.ptrtoint %c : !llvm.ptr to i32
+  llvm.return %d : i32
+}
+
+// -----
+
+// CHECK-LABEL: fold_ptrtoint_inttoptr
+//  CHECK-SAME: %[[ARG:.+]]: !llvm.ptr<3>) -> !llvm.ptr<3>
+//   CHECK-NOT: inttoptr
+//   CHECK-NOT: ptrtoint
+//  CHECK-NEXT: llvm.return %[[ARG]]
+llvm.func @fold_ptrtoint_inttoptr(%x : !llvm.ptr<3>) -> !llvm.ptr<3> {
+  %c = llvm.ptrtoint %x : !llvm.ptr<3> to i32
+  %d = llvm.inttoptr %c : i32 to !llvm.ptr<3>
+  llvm.return %d : !llvm.ptr<3>
----------------
joker-eph wrote:

In particular, I'm not sure about how the provenance is supposed to be handled for this kind of things. I try these example with InstCombine first.

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


More information about the Mlir-commits mailing list