9#ifndef LLVM_ADT_ADDRESSRANGES_H
10#define LLVM_ADT_ADDRESSRANGES_H
34 return Start <= R.Start && R.End <= End;
37 return Start < R.End && R.Start < End;
40 return Start == R.Start && End == R.End;
44 return std::make_pair(Start, End) < std::make_pair(R.Start, R.End);
76 typename Collection::const_iterator It =
find(
Addr,
Addr + 1);
83 typename Collection::const_iterator
begin()
const {
return Ranges.begin(); }
84 typename Collection::const_iterator
end()
const {
return Ranges.end(); }
101 std::partition_point(
Ranges.begin(),
Ranges.end(), [=](
const T &R) {
102 return AddressRange(R).start() <= Start;
137 *It = {It->start(), std::max(It->end(),
Range.end())};
174 return R.Range.start() <= Range.start();
180 while (!
Range.empty()) {
190 if (
Range.start() < It->Range.start()) {
198 if (
Range.end() <= It->Range.end())
203 if (
Range.start() < It->Range.end())
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
const MachineOperand & RHS
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This file defines the SmallVector class.
A class that represents an address range.
AddressRange(uint64_t S, uint64_t E)
bool operator<(const AddressRange &R) const
bool contains(const AddressRange &R) const
bool intersects(const AddressRange &R) const
bool operator!=(const AddressRange &R) const
bool contains(uint64_t Addr) const
bool operator==(const AddressRange &R) const
The AddressRangesBase class presents the base functionality for the normalized address ranges collect...
const T & operator[](size_t i) const
void reserve(size_t Capacity)
bool contains(uint64_t Addr) const
bool operator==(const AddressRangesBase< T > &RHS) const
SmallVector< T > Collection
Collection::const_iterator find(uint64_t Start, uint64_t End) const
std::optional< T > getRangeThatContains(uint64_t Addr) const
bool contains(AddressRange Range) const
Collection::const_iterator end() const
Collection::const_iterator begin() const
AddressRangesMap class maps values to the address ranges.
void insert(AddressRange Range, int64_t Value)
The AddressRanges class helps normalize address range collections.
Collection::const_iterator insert(AddressRange Range)
iterator erase(const_iterator CI)
iterator insert(iterator I, T &&Elt)
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
LLVM Value Representation.
Value(Type *Ty, unsigned scid)
This is an optimization pass for GlobalISel generic memory operations.
auto upper_bound(R &&Range, T &&Value)
Provide wrappers to std::upper_bound which take ranges instead of having to pass begin/end explicitly...
bool operator==(const AddressRangeValuePair &LHS, const AddressRangeValuePair &RHS)