From aa731e190457eb0509548e255d69db4376209365 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Tue, 14 Oct 2025 18:57:01 +1100 Subject: [PATCH] [ORC] Add ExecutorAddrRange::contains overload for ranges. (#163321) Can be used to test that one address range is fully contained within another. This will be used in upcoming SimpleExecutorMemoryManager changes. --- .../llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h | 3 +++ llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h b/llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h index a4a7fa4be8b9..a5f6c4f373a1 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h @@ -272,6 +272,9 @@ struct ExecutorAddrRange { } bool contains(ExecutorAddr Addr) const { return Start <= Addr && Addr < End; } + bool contains(const ExecutorAddrRange &Other) { + return (Other.Start >= Start && Other.End <= End); + } bool overlaps(const ExecutorAddrRange &Other) { return !(Other.End <= Start || End <= Other.Start); } diff --git a/llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp b/llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp index ae9db141bdd4..9a37980a8428 100644 --- a/llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp +++ b/llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp @@ -97,10 +97,16 @@ TEST(ExecutorAddrTest, AddrRanges) { EXPECT_FALSE(R1.contains(A0)); EXPECT_FALSE(R1.contains(A2)); + EXPECT_TRUE(R3.contains(R0)); // True for singleton range at start. + EXPECT_TRUE(R3.contains(R1)); // True for singleton range at end. + EXPECT_FALSE(R3.contains(R2)); // False for non-overlaping singleton range. + EXPECT_FALSE(R3.contains(R4)); // False for overlapping, uncontained range. + EXPECT_FALSE(R1.overlaps(R0)); EXPECT_FALSE(R1.overlaps(R2)); EXPECT_TRUE(R1.overlaps(R3)); EXPECT_TRUE(R1.overlaps(R4)); + EXPECT_TRUE(R3.overlaps(R4)); EXPECT_LE(R0, R0); EXPECT_LT(R0, R1);