[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.
This commit is contained in:
Lang Hames
2025-10-14 18:57:01 +11:00
committed by GitHub
parent 489a921796
commit aa731e1904
2 changed files with 9 additions and 0 deletions

View File

@@ -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);
}

View File

@@ -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);