MLIR  18.0.0git
Public Types | Public Member Functions | List of all members
mlir::BufferViewFlowAnalysis Class Reference

A straight-forward alias analysis which ensures that all dependencies of all values will be determined. More...

#include "mlir/Dialect/Bufferization/Transforms/BufferViewFlowAnalysis.h"

Public Types

using ValueSetT = SmallPtrSet< Value, 16 >
 
using ValueMapT = llvm::DenseMap< Value, ValueSetT >
 

Public Member Functions

 BufferViewFlowAnalysis (Operation *op)
 Constructs a new alias analysis using the op provided. More...
 
ValueMapT::const_iterator find (Value value) const
 Find all immediate dependencies this value could potentially have. More...
 
ValueMapT::const_iterator begin () const
 Returns the begin iterator to iterate over all dependencies. More...
 
ValueMapT::const_iterator end () const
 Returns the end iterator that can be used in combination with find. More...
 
ValueSetT resolve (Value value) const
 Find all immediate and indirect views upon this value. More...
 
void remove (const SetVector< Value > &aliasValues)
 Removes the given values from all alias sets. More...
 
void rename (Value from, Value to)
 Replaces all occurrences of 'from' in the internal datastructures with 'to'. More...
 

Detailed Description

A straight-forward alias analysis which ensures that all dependencies of all values will be determined.

This is a requirement for the BufferPlacement class since you need to determine safe positions to place alloc and deallocs. This alias analysis only finds aliases that might have been created on top of the specified view. To find all aliases, resolve the intial alloc/argument value.

Definition at line 23 of file BufferViewFlowAnalysis.h.

Member Typedef Documentation

◆ ValueMapT

Definition at line 26 of file BufferViewFlowAnalysis.h.

◆ ValueSetT

Definition at line 25 of file BufferViewFlowAnalysis.h.

Constructor & Destructor Documentation

◆ BufferViewFlowAnalysis()

BufferViewFlowAnalysis::BufferViewFlowAnalysis ( Operation op)

Constructs a new alias analysis using the op provided.

Definition at line 19 of file BufferViewFlowAnalysis.cpp.

Member Function Documentation

◆ begin()

ValueMapT::const_iterator mlir::BufferViewFlowAnalysis::begin ( ) const
inline

Returns the begin iterator to iterate over all dependencies.

Definition at line 37 of file BufferViewFlowAnalysis.h.

◆ end()

ValueMapT::const_iterator mlir::BufferViewFlowAnalysis::end ( ) const
inline

Returns the end iterator that can be used in combination with find.

Definition at line 40 of file BufferViewFlowAnalysis.h.

◆ find()

ValueMapT::const_iterator mlir::BufferViewFlowAnalysis::find ( Value  value) const
inline

Find all immediate dependencies this value could potentially have.

Definition at line 32 of file BufferViewFlowAnalysis.h.

◆ remove()

void BufferViewFlowAnalysis::remove ( const SetVector< Value > &  aliasValues)

Removes the given values from all alias sets.

Definition at line 43 of file BufferViewFlowAnalysis.cpp.

◆ rename()

void BufferViewFlowAnalysis::rename ( Value  from,
Value  to 
)

Replaces all occurrences of 'from' in the internal datastructures with 'to'.

This is useful when the defining operation of a value has to be re-built because additional results have to be added or the types of results have to be changed.

Definition at line 48 of file BufferViewFlowAnalysis.cpp.

◆ resolve()

BufferViewFlowAnalysis::ValueSetT BufferViewFlowAnalysis::resolve ( Value  rootValue) const

Find all immediate and indirect views upon this value.

Find all immediate and indirect dependent buffers this value could potentially have.

This will find all dependencies on this value that can potentially be later in the execution of the program, but will not return values that this alias might have been created from (such as if the value is created by a subview, this will not return the parent view if there is no cyclic behavior). Note that the resulting set will also contain the value provided as it is an alias of itself.

A = * B = subview(A) C = B

Results in resolve(B) returning {B, C}

Note that the resulting set will also contain the value provided as it is a dependent alias of itself.

Definition at line 25 of file BufferViewFlowAnalysis.cpp.

Referenced by hasAllocationScope().


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