Go to the documentation of this file.
9 #ifndef LLVM_ADT_ADDRESSRANGES_H
10 #define LLVM_ADT_ADDRESSRANGES_H
32 return Start < R.End && R.Start < End;
35 return Start == R.Start && End == R.End;
39 return std::make_pair(Start, End) < std::make_pair(R.Start, R.End);
73 Collection::const_iterator
begin()
const {
return Ranges.begin(); }
74 Collection::const_iterator
end()
const {
return Ranges.end(); }
79 #endif // LLVM_ADT_ADDRESSRANGES_H
This is an optimization pass for GlobalISel generic memory operations.
void reserve(size_t Capacity)
std::vector< AddressRange > Collection
Collection::const_iterator begin() const
bool operator==(const AddressRanges &RHS) const
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
Optional< AddressRange > getRangeThatContains(uint64_t Addr) const
bool contains(uint64_t Addr) const
A class that represents an address range.
void insert(AddressRange Range)
bool operator<(const AddressRange &R) const
const AddressRange & operator[](size_t i) const
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
bool operator==(const AddressRange &R) const
AddressRange(uint64_t S, uint64_t E)
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
bool intersects(const AddressRange &R) const
bool operator!=(const AddressRange &R) const
The AddressRanges class helps normalize address range collections.
Collection::const_iterator end() const
bool contains(uint64_t Addr) const