[llvm] 2ec549a - [GVNSink] Add support for ptrtoaddr
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 20 07:46:18 PDT 2025
Author: Nikita Popov
Date: 2025-10-20T16:46:08+02:00
New Revision: 2ec549ad119a9c9979fbaa1af2acf3726028bdea
URL: https://github.com/llvm/llvm-project/commit/2ec549ad119a9c9979fbaa1af2acf3726028bdea
DIFF: https://github.com/llvm/llvm-project/commit/2ec549ad119a9c9979fbaa1af2acf3726028bdea.diff
LOG: [GVNSink] Add support for ptrtoaddr
Added:
llvm/test/Transforms/GVNSink/ptrtoaddr.ll
Modified:
llvm/lib/Transforms/Scalar/GVNSink.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/GVNSink.cpp b/llvm/lib/Transforms/Scalar/GVNSink.cpp
index b9534def3c738..a06f8325c90bf 100644
--- a/llvm/lib/Transforms/Scalar/GVNSink.cpp
+++ b/llvm/lib/Transforms/Scalar/GVNSink.cpp
@@ -430,6 +430,7 @@ class ValueTable {
case Instruction::FPTrunc:
case Instruction::FPExt:
case Instruction::PtrToInt:
+ case Instruction::PtrToAddr:
case Instruction::IntToPtr:
case Instruction::BitCast:
case Instruction::AddrSpaceCast:
diff --git a/llvm/test/Transforms/GVNSink/ptrtoaddr.ll b/llvm/test/Transforms/GVNSink/ptrtoaddr.ll
new file mode 100644
index 0000000000000..3a9d16ebbcf6c
--- /dev/null
+++ b/llvm/test/Transforms/GVNSink/ptrtoaddr.ll
@@ -0,0 +1,30 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
+; RUN: opt -S -passes=gvn-sink < %s | FileCheck %s
+
+define i64 @test(i1 %c, ptr %p, ptr %p2) {
+; CHECK-LABEL: define i64 @test(
+; CHECK-SAME: i1 [[C:%.*]], ptr [[P:%.*]], ptr [[P2:%.*]]) {
+; CHECK-NEXT: br i1 [[C]], label %[[IF:.*]], label %[[ELSE:.*]]
+; CHECK: [[IF]]:
+; CHECK-NEXT: br label %[[JOIN:.*]]
+; CHECK: [[ELSE]]:
+; CHECK-NEXT: br label %[[JOIN]]
+; CHECK: [[JOIN]]:
+; CHECK-NEXT: [[P2_SINK:%.*]] = phi ptr [ [[P2]], %[[ELSE]] ], [ [[P]], %[[IF]] ]
+; CHECK-NEXT: [[PHI:%.*]] = ptrtoaddr ptr [[P2_SINK]] to i64
+; CHECK-NEXT: ret i64 [[PHI]]
+;
+ br i1 %c, label %if, label %else
+
+if:
+ %p.addr = ptrtoaddr ptr %p to i64
+ br label %join
+
+else:
+ %p2.addr = ptrtoaddr ptr %p2 to i64
+ br label %join
+
+join:
+ %phi = phi i64 [ %p.addr, %if ], [ %p2.addr, %else ]
+ ret i64 %phi
+}
More information about the llvm-commits
mailing list