LLVM 17.0.0git
Public Member Functions | List of all members
llvm::cflaa::StratifiedSets< T > Class Template Reference

These are stratified sets, as described in "Fast algorithms for Dyck-CFL-reachability with applications to Alias Analysis" by Zhang Q, Lyu M R, Yuan H, and Su Z. More...

#include "Analysis/StratifiedSets.h"

Public Member Functions

 StratifiedSets ()=default
 
 StratifiedSets (StratifiedSets &&)=default
 
StratifiedSetsoperator= (StratifiedSets &&)=default
 
 StratifiedSets (DenseMap< T, StratifiedInfo > Map, std::vector< StratifiedLink > Links)
 
std::optional< StratifiedInfofind (const T &Elem) const
 
const StratifiedLinkgetLink (StratifiedIndex Index) const
 

Detailed Description

template<typename T>
class llvm::cflaa::StratifiedSets< T >

These are stratified sets, as described in "Fast algorithms for Dyck-CFL-reachability with applications to Alias Analysis" by Zhang Q, Lyu M R, Yuan H, and Su Z.

– in short, this is meant to represent different sets of Value*s. If two Value*s are in the same set, or if both sets have overlapping attributes, then the Value*s are said to alias.

Sets may be related by position, meaning that one set may be considered as above or below another. In CFL Alias Analysis, this gives us an indication of how two variables are related; if the set of variable A is below a set containing variable B, then at some point, a variable that has interacted with B (or B itself) was either used in order to extract the variable A, or was used as storage of variable A.

Sets may also have attributes (as noted above). These attributes are generally used for noting whether a variable in the set has interacted with a variable whose origins we don't quite know (i.e. globals/arguments), or if the variable may have had operations performed on it (modified in a function call). All attributes that exist in a set A must exist in all sets marked as below set A.

Definition at line 83 of file StratifiedSets.h.

Constructor & Destructor Documentation

◆ StratifiedSets() [1/3]

template<typename T >
llvm::cflaa::StratifiedSets< T >::StratifiedSets ( )
default

◆ StratifiedSets() [2/3]

template<typename T >
llvm::cflaa::StratifiedSets< T >::StratifiedSets ( StratifiedSets< T > &&  )
default

◆ StratifiedSets() [3/3]

template<typename T >
llvm::cflaa::StratifiedSets< T >::StratifiedSets ( DenseMap< T, StratifiedInfo Map,
std::vector< StratifiedLink Links 
)
inline

Definition at line 89 of file StratifiedSets.h.

Member Function Documentation

◆ find()

template<typename T >
std::optional< StratifiedInfo > llvm::cflaa::StratifiedSets< T >::find ( const T Elem) const
inline

Definition at line 93 of file StratifiedSets.h.

◆ getLink()

template<typename T >
const StratifiedLink & llvm::cflaa::StratifiedSets< T >::getLink ( StratifiedIndex  Index) const
inline

Definition at line 100 of file StratifiedSets.h.

References assert().

◆ operator=()

template<typename T >
StratifiedSets & llvm::cflaa::StratifiedSets< T >::operator= ( StratifiedSets< T > &&  )
default

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