mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 19:08:21 +08:00
[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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user