LLVM 17.0.0git
|
Representation of the alloca slices. More...
Public Member Functions | |
AllocaSlices (const DataLayout &DL, AllocaInst &AI) | |
Construct the slices of a particular alloca. | |
bool | isEscaped () const |
Test whether a pointer to the allocation escapes our analysis. | |
void | erase (iterator Start, iterator Stop) |
Erase a range of slices. | |
void | insert (ArrayRef< Slice > NewSlices) |
Insert new slices for this alloca. | |
iterator_range< partition_iterator > | partitions () |
ArrayRef< Instruction * > | getDeadUsers () const |
Access the dead users for this alloca. | |
ArrayRef< Use * > | getDeadUsesIfPromotable () const |
Access Uses that should be dropped if the alloca is promotable. | |
ArrayRef< Use * > | getDeadOperands () const |
Access the dead operands referring to this alloca. | |
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. | |
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::iterator = SmallVectorImpl<Slice>::iterator |
llvm::sroa::AllocaSlices::AllocaSlices | ( | const DataLayout & | DL, |
AllocaInst & | AI | ||
) |
Construct the slices of a particular alloca.
|
inline |
Definition at line 450 of file SROA.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin().
|
inline |
Definition at line 456 of file SROA.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin().
void llvm::sroa::AllocaSlices::dump | ( | ) | const |
void llvm::sroa::AllocaSlices::dump | ( | const_iterator | I | ) | const |
|
inline |
Definition at line 451 of file SROA.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::end().
|
inline |
Definition at line 457 of file SROA.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::end().
Erase a range of slices.
Definition at line 461 of file SROA.cpp.
References llvm::SmallVectorImpl< T >::erase().
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.
|
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 468 of file SROA.cpp.
References llvm::SmallVectorImpl< T >::append(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::ArrayRef< T >::begin(), llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::ArrayRef< T >::end(), llvm::SmallVectorBase< Size_T >::size(), and llvm::sort().
|
inline |
iterator_range< partition_iterator > llvm::sroa::AllocaSlices::partitions | ( | ) |
void llvm::sroa::AllocaSlices::print | ( | raw_ostream & | OS | ) | const |
void llvm::sroa::AllocaSlices::print | ( | raw_ostream & | OS, |
const_iterator | I, | ||
StringRef | Indent = " " |
||
) | const |
void llvm::sroa::AllocaSlices::printSlice | ( | raw_ostream & | OS, |
const_iterator | I, | ||
StringRef | Indent = " " |
||
) | const |
Referenced by llvm::sroa::AllocaSliceRewriter::visit().
void llvm::sroa::AllocaSlices::printUse | ( | raw_ostream & | OS, |
const_iterator | I, | ||
StringRef | Indent = " " |
||
) | const |
|
friend |