|
LLVM
4.0.0
|
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 |
| typedef SmallVectorImpl< Slice > ::iterator | iterator |
| Support for iterating over the slices. More... | |
| typedef iterator_range< iterator > | range |
| typedef SmallVectorImpl< Slice > ::const_iterator | const_iterator |
| typedef iterator_range < const_iterator > | const_range |
| 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.
| typedef SmallVectorImpl<Slice>::const_iterator llvm::sroa::AllocaSlices::const_iterator |
| typedef SmallVectorImpl<Slice>::iterator llvm::sroa::AllocaSlices::iterator |
| llvm::sroa::AllocaSlices::AllocaSlices | ( | const DataLayout & | DL, |
| AllocaInst & | AI | ||
| ) |
Construct the slices of a particular alloca.
|
inline |
Definition at line 211 of file SROA.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin().
|
inline |
Definition at line 216 of file SROA.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::begin().
| void llvm::sroa::AllocaSlices::dump | ( | const_iterator | I | ) | const |
| void llvm::sroa::AllocaSlices::dump | ( | ) | const |
|
inline |
Definition at line 212 of file SROA.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::end().
|
inline |
Definition at line 217 of file SROA.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::end().
Erase a range of slices.
Definition at line 221 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 228 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(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
|
inline |
| iterator_range<partition_iterator> llvm::sroa::AllocaSlices::partitions | ( | ) |
| void llvm::sroa::AllocaSlices::print | ( | raw_ostream & | OS, |
| const_iterator | I, | ||
| StringRef | Indent = " " |
||
| ) | const |
| void llvm::sroa::AllocaSlices::print | ( | raw_ostream & | OS | ) | const |
| void llvm::sroa::AllocaSlices::printSlice | ( | raw_ostream & | OS, |
| const_iterator | I, | ||
| StringRef | Indent = " " |
||
| ) | const |
| void llvm::sroa::AllocaSlices::printUse | ( | raw_ostream & | OS, |
| const_iterator | I, | ||
| StringRef | Indent = " " |
||
| ) | const |
|
friend |
1.8.6