PandA-2024.02
|
Specific type of OpNode used in Nuutila's strongly connected components algorithm. More...
Public Member Functions | |
ControlDepNode (VarNode *sink, VarNode *source) | |
~ControlDepNode () override=default | |
ControlDepNode (const ControlDepNode &)=delete | |
ControlDepNode (ControlDepNode &&)=delete | |
ControlDepNode & | operator= (const ControlDepNode &)=delete |
ControlDepNode & | operator= (ControlDepNode &&)=delete |
OperationId | getValueId () const override |
VarNode * | getSource () const |
Returns the source of the operation. More... | |
std::vector< tree_nodeConstRef > | getSources () 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 | |
OpNode & | operator= (const OpNode &)=delete |
OpNode & | operator= (OpNode &&)=delete |
const tree_nodeConstRef & | getInstruction () 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... | |
VarNode * | getSink () 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 | |
VarNode * | source |
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... | |
Specific type of OpNode used in Nuutila's strongly connected components algorithm.
Definition at line 4203 of file Range_Analysis.cpp.
Definition at line 4245 of file Range_Analysis.cpp.
|
overridedefault |
|
delete |
|
delete |
|
inlinestatic |
Definition at line 4222 of file Range_Analysis.cpp.
Definition at line 4226 of file Range_Analysis.cpp.
References OpNode::ControlDepId, and OpNode::getValueId().
|
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.
|
inline |
Returns the source of the operation.
Definition at line 4232 of file Range_Analysis.cpp.
|
inlineoverridevirtual |
Implements OpNode.
Definition at line 4236 of file Range_Analysis.cpp.
References VarNode::getValue(), LoadOpNode::print(), and LoadOpNode::printDot().
|
inlineoverridevirtual |
Implements OpNode.
Definition at line 4218 of file Range_Analysis.cpp.
References OpNode::ControlDepId.
|
delete |
|
delete |
|
overridevirtual |
Prints the content of the operation.
Implements OpNode.
Definition at line 4255 of file Range_Analysis.cpp.
|
overridevirtual |
Implements OpNode.
Definition at line 4259 of file Range_Analysis.cpp.
|
private |
Definition at line 4206 of file Range_Analysis.cpp.