LLVM
8.0.1
|
Representation of the alloca slices. More...
Public Member Functions | |
AllocaSlices (const DataLayout &DL, AllocaInst &AI) | |
Construct the slices of a particular alloca. More... | |
bool | isEscaped () const |
Test whether a pointer to the allocation escapes our analysis. More... | |
void | erase (iterator Start, iterator Stop) |
Erase a range of slices. More... | |
void | insert (ArrayRef< Slice > NewSlices) |
Insert new slices for this alloca. More... | |
iterator_range< partition_iterator > | partitions () |
ArrayRef< Instruction * > | getDeadUsers () const |
Access the dead users for this alloca. More... | |
ArrayRef< Use * > | getDeadOperands () const |
Access the dead operands referring to this alloca. More... | |
void | print (raw_ostream &OS, const_iterator I, StringRef Indent=" ") const |
void | printSlice (raw_ostream &OS, const_iterator I, StringRef Indent=" ") const |
void | printUse (raw_ostream &OS, const_iterator I, StringRef Indent=" ") const |
void | print (raw_ostream &OS) const |
void | dump (const_iterator I) const |
void | dump () const |
Friends | |
class | AllocaSlices::SliceBuilder |
using | iterator = SmallVectorImpl< Slice >::iterator |
Support for iterating over the slices. More... | |
using | range = iterator_range< iterator > |
using | const_iterator = SmallVectorImpl< Slice >::const_iterator |
using | const_range = iterator_range< const_iterator > |
iterator | begin () |
iterator | end () |
const_iterator | begin () const |
const_iterator | end () const |
Representation of the alloca slices.
This class represents the slices of an alloca which are formed by its various uses. If a pointer escapes, we can't fully build a representation for the slices used and we reflect that in this structure. The uses are stored, sorted by increasing beginning offset and with unsplittable slices starting at a particular offset before splittable slices.
using llvm::sroa::AllocaSlices::const_iterator = SmallVectorImpl<Slice>::const_iterator |
using llvm::sroa::AllocaSlices::iterator = SmallVectorImpl<Slice>::iterator |
llvm::sroa::AllocaSlices::AllocaSlices | ( | const DataLayout & | DL, |
AllocaInst & | AI | ||
) |
Construct the slices of a particular alloca.
Referenced by AllocaSlices::SliceBuilder::SliceBuilder().
|
inline |
Definition at line 255 of file SROA.cpp.
Referenced by getTypePartition().
|
inline |
void llvm::sroa::AllocaSlices::dump | ( | const_iterator | I | ) | const |
void llvm::sroa::AllocaSlices::dump | ( | ) | const |
Referenced by AllocaSlices::SliceBuilder::SliceBuilder().
|
inline |
Definition at line 256 of file SROA.cpp.
Referenced by getTypePartition().
|
inline |
Access the dead operands referring to this alloca.
These are operands which have cannot actually be used to refer to the alloca as they are outside its range and the user doesn't correct for that. These mostly consist of PHI node inputs and the like which we just need to replace with undef.
Definition at line 295 of file SROA.cpp.
References llvm::dump(), I, Indent, and print().
|
inline |
|
inline |
Insert new slices for this alloca.
This moves the slices into the alloca's slices collection, and re-sorts everything so that the usual ordering properties of the alloca's slices hold.
Definition at line 273 of file SROA.cpp.
References llvm::ArrayRef< T >::begin(), llvm::ArrayRef< T >::end(), and llvm::sort().
Referenced by getTypePartition().
|
inline |
iterator_range<partition_iterator> llvm::sroa::AllocaSlices::partitions | ( | ) |
Referenced by getTypePartition(), and AllocaSlices::partition_iterator::operator*().
void llvm::sroa::AllocaSlices::print | ( | raw_ostream & | OS, |
const_iterator | I, | ||
StringRef | Indent = " " |
||
) | const |
Referenced by getTypePartition(), and AllocaSlices::SliceBuilder::SliceBuilder().
void llvm::sroa::AllocaSlices::print | ( | raw_ostream & | OS | ) | const |
void llvm::sroa::AllocaSlices::printSlice | ( | raw_ostream & | OS, |
const_iterator | I, | ||
StringRef | Indent = " " |
||
) | const |
Referenced by AllocaSlices::SliceBuilder::SliceBuilder(), and llvm::sroa::AllocaSliceRewriter::visit().
void llvm::sroa::AllocaSlices::printUse | ( | raw_ostream & | OS, |
const_iterator | I, | ||
StringRef | Indent = " " |
||
) | const |
Referenced by AllocaSlices::SliceBuilder::SliceBuilder().
|
friend |