ROSE 0.11.145.147
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.
 
bool isPhiFunction () const
 Returns true if this is a phi function.
 
const std::map< ReachingDefPtr, std::set< FilteredCfgEdge > > & getJoinedDefs () const
 If this is a join node (phi function), get the definitions merged.
 
SgNodegetDefinitionNode () const
 If this is not a phi function, returns the actual reaching definition.
 
std::set< SgNode * > getActualDefinitions () const
 Returns the actual reaching definitions at the current node, expanding all phi functions.
 
int getRenamingNumber () const
 Get the renaming (SSA index) associated with this definition.
 
bool isOriginalDef () const
 Returns true if this is an original definition (i.e.
 
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).
 
void setRenamingNumber (int n)
 Set the renaming number (SSA index) of this def.
 

Member Typedef Documentation

◆ ReachingDefPtr

typedef boost::shared_ptr<ReachingDef> ReachingDef::ReachingDefPtr

Definition at line 31 of file reachingDef.h.

◆ FilteredCfgEdge

typedef FilteredCFGEdge<ssa_private::DataflowCfgFilter> ReachingDef::FilteredCfgEdge

Definition at line 33 of file reachingDef.h.

Member Enumeration Documentation

◆ Type

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.

Member Function Documentation

◆ getJoinedDefs()

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.

◆ getDefinitionNode()

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.

◆ getRenamingNumber()

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.

◆ isOriginalDef()

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.


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