Skip to content

Commit b9cb7bf

Browse files
lhamesakadutta
authored andcommitted
[ORC] Add ExecutorAddrRange::contains overload for ranges. (llvm#163321)
Can be used to test that one address range is fully contained within another. This will be used in upcoming SimpleExecutorMemoryManager changes.
1 parent 1c44d49 commit b9cb7bf

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

llvm/include/llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,9 @@ struct ExecutorAddrRange {
272272
}
273273

274274
bool contains(ExecutorAddr Addr) const { return Start <= Addr && Addr < End; }
275+
bool contains(const ExecutorAddrRange &Other) {
276+
return (Other.Start >= Start && Other.End <= End);
277+
}
275278
bool overlaps(const ExecutorAddrRange &Other) {
276279
return !(Other.End <= Start || End <= Other.Start);
277280
}

llvm/unittests/ExecutionEngine/Orc/ExecutorAddressTest.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,16 @@ TEST(ExecutorAddrTest, AddrRanges) {
9797
EXPECT_FALSE(R1.contains(A0));
9898
EXPECT_FALSE(R1.contains(A2));
9999

100+
EXPECT_TRUE(R3.contains(R0)); // True for singleton range at start.
101+
EXPECT_TRUE(R3.contains(R1)); // True for singleton range at end.
102+
EXPECT_FALSE(R3.contains(R2)); // False for non-overlaping singleton range.
103+
EXPECT_FALSE(R3.contains(R4)); // False for overlapping, uncontained range.
104+
100105
EXPECT_FALSE(R1.overlaps(R0));
101106
EXPECT_FALSE(R1.overlaps(R2));
102107
EXPECT_TRUE(R1.overlaps(R3));
103108
EXPECT_TRUE(R1.overlaps(R4));
109+
EXPECT_TRUE(R3.overlaps(R4));
104110

105111
EXPECT_LE(R0, R0);
106112
EXPECT_LT(R0, R1);

0 commit comments

Comments
 (0)