ROSE  0.9.10.91
Public Types | Public Member Functions | List of all members
ssa_unfiltered_cfg::ReachingDef Class Reference

Description

Definition at line 15 of file reachingDefUnfilteredCfg.h.

Public Types

enum  Type {
  PHI_FUNCTION,
  ORIGINAL_DEF,
  EXPANDED_DEF,
  EXTERNAL_DEF
}
 
typedef boost::shared_ptr< ReachingDefReachingDefPtr
 

Public Member Functions

 ReachingDef (const CFGNode &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< CFGEdge > > & getJoinedDefs () const
 If this is a join node (phi function), get the definitions merged. More...
 
const CFGNode & getDefinitionNode () const
 If this is not a phi function, returns the actual reaching definition. More...
 
std::set< CFGNode > 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
 
Type getType () const
 
void setDefinitionNode (CFGNode defNode)
 Set the definition node in the AST (only valid if this is not a phi function)
 
void addJoinedDef (ReachingDefPtr newDef, CFGEdge 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...
 
void setType (Type t)
 

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).

EXTERNAL_DEF 

This is not a real definition; this variable is external to the scope being analyzed and this def represents the existing value of the variable at the beginning of the scope.

Definition at line 19 of file reachingDefUnfilteredCfg.h.

Constructor & Destructor Documentation

ssa_unfiltered_cfg::ReachingDef::ReachingDef ( const CFGNode &  defNode,
Type  type 
)

Creates a new reaching def.

Member Function Documentation

bool ssa_unfiltered_cfg::ReachingDef::isPhiFunction ( ) const

Returns true if this is a phi function.

const std::map<ReachingDefPtr, std::set<CFGEdge> >& ssa_unfiltered_cfg::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.

const CFGNode& ssa_unfiltered_cfg::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<CFGNode> ssa_unfiltered_cfg::ReachingDef::getActualDefinitions ( ) const

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

int ssa_unfiltered_cfg::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 ssa_unfiltered_cfg::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 82 of file reachingDefUnfilteredCfg.h.

References ORIGINAL_DEF.

void ssa_unfiltered_cfg::ReachingDef::addJoinedDef ( ReachingDefPtr  newDef,
CFGEdge  edge 
)

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

void ssa_unfiltered_cfg::ReachingDef::setRenamingNumber ( int  n)

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


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