LLVM  4.0.0
Classes | Public Member Functions | Friends | List of all members
llvm::sroa::AllocaSlices Class Reference

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< iteratorrange
 
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
 

Detailed Description

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.

Definition at line 196 of file SROA.cpp.

Member Typedef Documentation

Definition at line 214 of file SROA.cpp.

Definition at line 215 of file SROA.cpp.

Support for iterating over the slices.

Definition at line 209 of file SROA.cpp.

Definition at line 210 of file SROA.cpp.

Constructor & Destructor Documentation

llvm::sroa::AllocaSlices::AllocaSlices ( const DataLayout DL,
AllocaInst AI 
)

Construct the slices of a particular alloca.

Member Function Documentation

iterator llvm::sroa::AllocaSlices::begin ( )
inline

Definition at line 211 of file SROA.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::begin().

const_iterator llvm::sroa::AllocaSlices::begin ( ) const
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
iterator llvm::sroa::AllocaSlices::end ( )
inline

Definition at line 212 of file SROA.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::end().

const_iterator llvm::sroa::AllocaSlices::end ( ) const
inline

Definition at line 217 of file SROA.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::end().

void llvm::sroa::AllocaSlices::erase ( iterator  Start,
iterator  Stop 
)
inline

Erase a range of slices.

Definition at line 221 of file SROA.cpp.

References llvm::SmallVectorImpl< T >::erase().

ArrayRef<Use *> llvm::sroa::AllocaSlices::getDeadOperands ( ) const
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 250 of file SROA.cpp.

ArrayRef<Instruction *> llvm::sroa::AllocaSlices::getDeadUsers ( ) const
inline

Access the dead users for this alloca.

Definition at line 242 of file SROA.cpp.

void llvm::sroa::AllocaSlices::insert ( ArrayRef< Slice >  NewSlices)
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().

bool llvm::sroa::AllocaSlices::isEscaped ( ) const
inline

Test whether a pointer to the allocation escapes our analysis.

If this is true, the slices are never fully built and should be ignored.

Definition at line 205 of file SROA.cpp.

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

Friends And Related Function Documentation

friend class AllocaSlices::SliceBuilder
friend

Definition at line 265 of file SROA.cpp.


The documentation for this class was generated from the following file: