53 llvm::SmallVector<std::pair<int64_t, int64_t>> occupied,
54 int64_t alignBytes = 1) {
55 assert(alignBytes > 0 &&
"alignBytes must be positive");
58 int64_t cursor = window.
start;
59 auto consider = [&](int64_t start, int64_t end) {
60 start = llvm::alignTo(start, alignBytes);
61 if (start < end && end - start > best.
size)
62 best = {start, end - start};
64 for (
auto &interval : occupied) {
66 if (interval.first == interval.second)
68 int64_t lo = std::max(interval.first, window.
start);
69 int64_t hi = std::min(interval.second, window.
end());
73 cursor = std::max(cursor, hi);
74 if (cursor >= window.
end())
77 consider(cursor, window.
end());