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(); }
 
 
  127    while (It2 != 
Ranges.end() && It2->start() <= 
Range.end())
 
  131      It = 
Ranges.erase(It, It2);
 
  133    if (It != 
Ranges.begin() && 
Range.start() <= std::prev(It)->end()) {
 
  135      *It = {It->start(), std::max(It->end(), 
Range.end())};
 
 
 
  153  return LHS.Range == 
RHS.Range && 
LHS.Value == 
RHS.Value;
 
 
  172          return R.Range.start() <= 
Range.start();
 
  178    while (!
Range.empty()) {
 
  181      if (It == 
Ranges.end() || 
Range.end() <= It->Range.start()) {
 
  188      if (
Range.start() < It->Range.start()) {
 
  196      if (
Range.end() <= It->Range.end())
 
  201      if (
Range.start() < It->Range.end())
 
 
 
 
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
ConstantRange Range(APInt(BitWidth, Low), APInt(BitWidth, High))
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...
void reserve(size_t Capacity)
bool contains(uint64_t Addr) const
SmallVector< T > Collection
Collection::const_iterator find(uint64_t Start, uint64_t End) const
const T & operator[](size_t I) const
std::optional< T > getRangeThatContains(uint64_t Addr) const
bool contains(AddressRange Range) const
Collection::const_iterator end() const
Collection::const_iterator begin() const
bool operator==(const AddressRangesBase &RHS) 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)
typename SuperClass::const_iterator const_iterator
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
LLVM Value Representation.
This is an optimization pass for GlobalISel generic memory operations.
auto partition_point(R &&Range, Predicate P)
Binary search for the first iterator in a range where a predicate is false.
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)