PandA-2024.02
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
ControlDepNode Class Reference

Specific type of OpNode used in Nuutila's strongly connected components algorithm. More...

Inheritance diagram for ControlDepNode:
Inheritance graph
[legend]
Collaboration diagram for ControlDepNode:
Collaboration graph
[legend]

Public Member Functions

 ControlDepNode (VarNode *sink, VarNode *source)
 
 ~ControlDepNode () override=default
 
 ControlDepNode (const ControlDepNode &)=delete
 
 ControlDepNode (ControlDepNode &&)=delete
 
ControlDepNodeoperator= (const ControlDepNode &)=delete
 
ControlDepNodeoperator= (ControlDepNode &&)=delete
 
OperationId getValueId () const override
 
VarNodegetSource () const
 Returns the source of the operation. More...
 
std::vector< tree_nodeConstRefgetSources () const override
 
void print (std::ostream &OS) const override
 Prints the content of the operation. More...
 
void printDot (std::ostream &OS) const override
 
- Public Member Functions inherited from OpNode
virtual ~OpNode ()=default
 The dtor. It's virtual because this is a base class. More...
 
 OpNode (const OpNode &)=delete
 
 OpNode (OpNode &&)=delete
 
OpNodeoperator= (const OpNode &)=delete
 
OpNodeoperator= (OpNode &&)=delete
 
const tree_nodeConstRefgetInstruction () const
 Return the instruction that originated this op node. More...
 
void solveFuture (VarNode *future)
 Replace symbolic intervals with hard-wired constants. More...
 
ValueRangeConstRef getIntersect () const
 Returns the range of the operation. More...
 
void setIntersect (const RangeConstRef &newIntersect)
 Changes the interval of the operation. More...
 
VarNodegetSink () const
 Returns the target of the operation, that is, where the result will be stored. More...
 
std::string ToString () const
 

Static Public Member Functions

static bool classof (ControlDepNode const *)
 
static bool classof (OpNode const *BO)
 
- Static Public Member Functions inherited from OpNode
static bool classof (OpNode const *)
 

Private Member Functions

RangeRef eval () const override
 Given the input of the operation and the operation that will be performed, evaluates the result of the operation. More...
 

Private Attributes

VarNodesource
 

Additional Inherited Members

- Public Types inherited from OpNode
enum  OperationId {
  OperationId::UnaryOpId, OperationId::SigmaOpId, OperationId::BinaryOpId, OperationId::TernaryOpId,
  OperationId::PhiOpId, OperationId::ControlDepId, OperationId::LoadOpId, OperationId::StoreOpId
}
 
- Data Fields inherited from OpNode
enum OpNode::OperationId __attribute__
 
- Static Public Attributes inherited from OpNode
static int debug_level = DEBUG_LEVEL_NONE
 
- Protected Member Functions inherited from OpNode
 OpNode (const ValueRangeRef &intersect, VarNode *sink, const tree_nodeConstRef &inst)
 We do not want people creating objects of this class, but we want to inherit from it. More...
 

Detailed Description

Specific type of OpNode used in Nuutila's strongly connected components algorithm.

Definition at line 4203 of file Range_Analysis.cpp.

Constructor & Destructor Documentation

◆ ControlDepNode() [1/3]

ControlDepNode::ControlDepNode ( VarNode sink,
VarNode source 
)

Definition at line 4245 of file Range_Analysis.cpp.

◆ ~ControlDepNode()

ControlDepNode::~ControlDepNode ( )
overridedefault

◆ ControlDepNode() [2/3]

ControlDepNode::ControlDepNode ( const ControlDepNode )
delete

◆ ControlDepNode() [3/3]

ControlDepNode::ControlDepNode ( ControlDepNode &&  )
delete

Member Function Documentation

◆ classof() [1/2]

static bool ControlDepNode::classof ( ControlDepNode const *  )
inlinestatic

Definition at line 4222 of file Range_Analysis.cpp.

◆ classof() [2/2]

static bool ControlDepNode::classof ( OpNode const *  BO)
inlinestatic

Definition at line 4226 of file Range_Analysis.cpp.

References OpNode::ControlDepId, and OpNode::getValueId().

Here is the call graph for this function:

◆ eval()

RangeRef ControlDepNode::eval ( ) const
overrideprivatevirtual

Given the input of the operation and the operation that will be performed, evaluates the result of the operation.

Implements OpNode.

Definition at line 4250 of file Range_Analysis.cpp.

References Range::max_digits, and Regular.

◆ getSource()

VarNode* ControlDepNode::getSource ( ) const
inline

Returns the source of the operation.

Definition at line 4232 of file Range_Analysis.cpp.

◆ getSources()

std::vector<tree_nodeConstRef> ControlDepNode::getSources ( ) const
inlineoverridevirtual

Implements OpNode.

Definition at line 4236 of file Range_Analysis.cpp.

References VarNode::getValue(), LoadOpNode::print(), and LoadOpNode::printDot().

Here is the call graph for this function:

◆ getValueId()

OperationId ControlDepNode::getValueId ( ) const
inlineoverridevirtual

Implements OpNode.

Definition at line 4218 of file Range_Analysis.cpp.

References OpNode::ControlDepId.

◆ operator=() [1/2]

ControlDepNode& ControlDepNode::operator= ( const ControlDepNode )
delete

◆ operator=() [2/2]

ControlDepNode& ControlDepNode::operator= ( ControlDepNode &&  )
delete

◆ print()

void ControlDepNode::print ( std::ostream &  OS) const
overridevirtual

Prints the content of the operation.

Implements OpNode.

Definition at line 4255 of file Range_Analysis.cpp.

◆ printDot()

void ControlDepNode::printDot ( std::ostream &  OS) const
overridevirtual

Implements OpNode.

Definition at line 4259 of file Range_Analysis.cpp.

Field Documentation

◆ source

VarNode* ControlDepNode::source
private

Definition at line 4206 of file Range_Analysis.cpp.


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

Generated on Mon Feb 12 2024 13:03:48 for PandA-2024.02 by doxygen 1.8.13