ROSE  0.9.10.54
Public Types | Public Member Functions | List of all members
ReachingDef Class Reference

Description

Definition at line 14 of file reachingDef.h.

Public Types

enum  Type {
  PHI_FUNCTION,
  ORIGINAL_DEF,
  EXPANDED_DEF
}
 
typedef boost::shared_ptr< ReachingDefReachingDefPtr
 
typedef FilteredCFGEdge< ssa_private::DataflowCfgFilterFilteredCfgEdge
 

Public Member Functions

 ReachingDef (SgNode *defNode, Type type)
 Creates a new reaching def. More...
 
bool isPhiFunction () const
 Returns true if this is a phi function. More...
 
const std::map< ReachingDefPtr, std::set< FilteredCfgEdge > > & getJoinedDefs () const
 If this is a join node (phi function), get the definitions merged. More...
 
SgNodegetDefinitionNode () const
 If this is not a phi function, returns the actual reaching definition. More...
 
std::set< SgNode * > getActualDefinitions () const
 Returns the actual reaching definitions at the current node, expanding all phi functions. More...
 
int getRenamingNumber () const
 Get the renaming (SSA index) associated with this definition. More...
 
bool isOriginalDef () const
 Returns true if this is an original definition (i.e. More...
 
bool operator== (const ReachingDef &other) const
 
void setDefinitionNode (SgNode *defNode)
 Set the definition node in the AST (only valid if this is not a phi function)
 
void addJoinedDef (ReachingDefPtr newDef, FilteredCfgEdge edge)
 Add a new join definition (only valid for phi functions). More...
 
void setRenamingNumber (int n)
 Set the renaming number (SSA index) of this def. More...
 

Member Enumeration Documentation

Enumerator
PHI_FUNCTION 

'Fake' definition that joins two different reaching definitions.

ORIGINAL_DEF 

Definition for the actual variable in question, not a parent or child.

EXPANDED_DEF 

Definition for the parent or child of this variable.

(E.g. if x.b is the variable in question, this def could be for x or x.b.a).

Definition at line 18 of file reachingDef.h.

Constructor & Destructor Documentation

ReachingDef::ReachingDef ( SgNode defNode,
Type  type 
)

Creates a new reaching def.

Member Function Documentation

bool ReachingDef::isPhiFunction ( ) const

Returns true if this is a phi function.

const std::map<ReachingDefPtr, std::set<FilteredCfgEdge> >& ReachingDef::getJoinedDefs ( ) const

If this is a join node (phi function), get the definitions merged.

Each definition is paired with the CFG node along which it flows.

SgNode* ReachingDef::getDefinitionNode ( ) const

If this is not a phi function, returns the actual reaching definition.

If this is a phi function, returns the node where the phi function appears.

std::set<SgNode*> ReachingDef::getActualDefinitions ( ) const

Returns the actual reaching definitions at the current node, expanding all phi functions.

int ReachingDef::getRenamingNumber ( ) const

Get the renaming (SSA index) associated with this definition.

0 is the first value, and numbers increase monotonically with program flow.

bool ReachingDef::isOriginalDef ( ) const
inline

Returns true if this is an original definition (i.e.

if p.x is defined, p.x is an original defintion and p is an expanded definition)

Definition at line 79 of file reachingDef.h.

void ReachingDef::addJoinedDef ( ReachingDefPtr  newDef,
FilteredCfgEdge  edge 
)

Add a new join definition (only valid for phi functions).

void ReachingDef::setRenamingNumber ( int  n)

Set the renaming number (SSA index) of this def.


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