[llvm] 80b311a - [SpeculativeExecution] Add support for ptrtoaddr

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 20 07:56:22 PDT 2025


Author: Nikita Popov
Date: 2025-10-20T16:56:11+02:00
New Revision: 80b311a9443f46826ed3a9a0003b83771bd53124

URL: https://github.com/llvm/llvm-project/commit/80b311a9443f46826ed3a9a0003b83771bd53124
DIFF: https://github.com/llvm/llvm-project/commit/80b311a9443f46826ed3a9a0003b83771bd53124.diff

LOG: [SpeculativeExecution] Add support for ptrtoaddr

Added: 
    

Modified: 
    llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
    llvm/test/Transforms/SpeculativeExecution/spec-casts.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp b/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
index fa66a038844db..23e1243def290 100644
--- a/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
+++ b/llvm/lib/Transforms/Scalar/SpeculativeExecution.cpp
@@ -227,6 +227,7 @@ static InstructionCost ComputeSpeculationCost(const Instruction *I,
     case Instruction::Call:
     case Instruction::BitCast:
     case Instruction::PtrToInt:
+    case Instruction::PtrToAddr:
     case Instruction::IntToPtr:
     case Instruction::AddrSpaceCast:
     case Instruction::FPToUI:

diff  --git a/llvm/test/Transforms/SpeculativeExecution/spec-casts.ll b/llvm/test/Transforms/SpeculativeExecution/spec-casts.ll
index 8e4d1c432c9ac..c7500cf8f4392 100644
--- a/llvm/test/Transforms/SpeculativeExecution/spec-casts.ll
+++ b/llvm/test/Transforms/SpeculativeExecution/spec-casts.ll
@@ -43,6 +43,26 @@ b:
   ret void
 }
 
+define void @ifThen_ptrtoaddr(ptr %arg) {
+; CHECK-LABEL: define void @ifThen_ptrtoaddr(
+; CHECK-SAME: ptr [[ARG:%.*]]) {
+; CHECK-NEXT:    [[X:%.*]] = ptrtoaddr ptr [[ARG]] to i64
+; CHECK-NEXT:    br i1 true, label %[[A:.*]], label %[[B:.*]]
+; CHECK:       [[A]]:
+; CHECK-NEXT:    br label %[[B]]
+; CHECK:       [[B]]:
+; CHECK-NEXT:    ret void
+;
+  br i1 true, label %a, label %b
+
+a:
+  %x = ptrtoaddr ptr %arg to i64
+  br label %b
+
+b:
+  ret void
+}
+
 define void @ifThen_inttoptr(i64 %arg) {
 ; CHECK-LABEL: define void @ifThen_inttoptr(
 ; CHECK-SAME: i64 [[ARG:%.*]]) {


        


More information about the llvm-commits mailing list