[llvm] 473b059 - [ORC] Add ExecutorAddrRange::fromPtrRange convenience method.
    Lang Hames via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Mar 24 21:45:54 PDT 2025
    
    
  
Author: Lang Hames
Date: 2025-03-25T15:45:48+11:00
New Revision: 473b0595051aa3da2990d389eee05a41bc71e602
URL: https://github.com/llvm/llvm-project/commit/473b0595051aa3da2990d389eee05a41bc71e602
DIFF: https://github.com/llvm/llvm-project/commit/473b0595051aa3da2990d389eee05a41bc71e602.diff
LOG: [ORC] Add ExecutorAddrRange::fromPtrRange convenience method.
This can be used to construct an ExecutorAddrRange from a pair of pointers, or
a pointer and a size.
This will be used to reduce boilerplate in an upcoming patch.
Added: 
    
Modified: 
    llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h
    llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp
Removed: 
    
################################################################################
diff  --git a/llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h b/llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h
index c9595ed4d99e7..a4a7fa4be8b9c 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h
@@ -226,6 +226,19 @@ struct ExecutorAddrRange {
   ExecutorAddrRange(ExecutorAddr Start, ExecutorAddrDiff Size)
       : Start(Start), End(Start + Size) {}
 
+  template <typename T, typename UnwrapFn = ExecutorAddr::defaultUnwrap<T>>
+  static ExecutorAddrRange fromPtrRange(T *Start, T *End,
+                                        UnwrapFn &&Unwrap = UnwrapFn()) {
+    return {ExecutorAddr::fromPtr(Start, Unwrap),
+            ExecutorAddr::fromPtr(End, Unwrap)};
+  }
+
+  template <typename T, typename UnwrapFn = ExecutorAddr::defaultUnwrap<T>>
+  static ExecutorAddrRange fromPtrRange(T *Ptr, ExecutorAddrDiff Size,
+                                        UnwrapFn &&Unwrap = UnwrapFn()) {
+    return {ExecutorAddr::fromPtr(Ptr, std::forward<UnwrapFn>(Unwrap)), Size};
+  }
+
   bool empty() const { return Start == End; }
   ExecutorAddrDiff size() const { return End - Start; }
 
diff  --git a/llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp b/llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp
index 3de77031291c5..ae9db141bdd4a 100644
--- a/llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp
+++ b/llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp
@@ -106,6 +106,16 @@ TEST(ExecutorAddrTest, AddrRanges) {
   EXPECT_LT(R0, R1);
   EXPECT_GE(R0, R0);
   EXPECT_GT(R1, R0);
+
+  // Check fromPtr support.
+  char A[10];
+  auto RP1 = ExecutorAddrRange::fromPtrRange(A, A + 10);
+  EXPECT_EQ(RP1.Start.toPtr<char *>(), A);
+  EXPECT_EQ(RP1.End.toPtr<char *>(), A + 10);
+
+  auto RP2 = ExecutorAddrRange::fromPtrRange(A, 10);
+  EXPECT_EQ(RP2.Start.toPtr<char *>(), A);
+  EXPECT_EQ(RP2.End.toPtr<char *>(), A + 10);
 }
 
 TEST(ExecutorSymbolDef, PointerConversion) {
        
    
    
More information about the llvm-commits
mailing list