![]() |
PandA-2024.02
|


Public Member Functions | |
| LoadOpNode (const ValueRangeRef &intersect, VarNode *sink, const tree_nodeConstRef &inst) | |
| ~LoadOpNode () override=default | |
| LoadOpNode (const LoadOpNode &)=delete | |
| LoadOpNode (LoadOpNode &&)=delete | |
| LoadOpNode & | operator= (const LoadOpNode &)=delete |
| LoadOpNode & | operator= (LoadOpNode &&)=delete |
| OperationId | getValueId () const override |
| void | addSource (const VarNode *newsrc) |
| Add source to the vector of sources. More... | |
| const VarNode * | getSource (size_t index) const |
| Return source identified by index. More... | |
| size_t | getNumSources () const |
| return the number of sources 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 (LoadOpNode const *) |
| static bool | classof (OpNode const *BO) |
| static std::function< OpNode *(NodeContainer *)> | opCtorGenerator (const tree_nodeConstRef &stmt, unsigned int function_id, const FunctionBehaviorConstRef &FB, const tree_managerConstRef &TM, const application_managerRef &AppM) |
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 | |
| std::vector< const VarNode * > | sources |
| reference to the memory access operand More... | |
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... | |
Definition at line 3872 of file Range_Analysis.cpp.
| LoadOpNode::LoadOpNode | ( | const ValueRangeRef & | intersect, |
| VarNode * | sink, | ||
| const tree_nodeConstRef & | inst | ||
| ) |
Definition at line 3934 of file Range_Analysis.cpp.
Referenced by opCtorGenerator().

|
overridedefault |
|
delete |
|
delete |
|
inline |
Add source to the vector of sources.
Definition at line 3902 of file Range_Analysis.cpp.
|
inlinestatic |
Definition at line 3892 of file Range_Analysis.cpp.
Definition at line 3896 of file Range_Analysis.cpp.
References OpNode::getValueId(), and OpNode::LoadOpId.

|
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 3939 of file Range_Analysis.cpp.
References OpNode::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, Empty, GET_CONST_NODE, OpNode::getIntersect(), getNumSources(), OpNode::getSink(), INDENT_DBG_MEX, result, sources, STR, test(), THROW_ASSERT, and OpNode::ToString().

|
inline |
return the number of sources
Definition at line 3912 of file Range_Analysis.cpp.
Referenced by eval().

Return source identified by index.
Definition at line 3907 of file Range_Analysis.cpp.
References index.
|
inlineoverridevirtual |
Implements OpNode.
Definition at line 3916 of file Range_Analysis.cpp.
References TernaryOpNode::opCtorGenerator(), TernaryOpNode::print(), and TernaryOpNode::printDot().

|
inlineoverridevirtual |
|
static |
Definition at line 4030 of file Range_Analysis.cpp.
References constructor_range(), DEBUG_LEVEL_VERY_PEDANTIC, Empty, tree_helper::get_base_index(), GET_CONST_NODE, FunctionBehavior::get_function_mem(), GET_INDEX_NODE, GET_NODE, VarNode::getValue(), INDENT_DBG_MEX, intersection(), tree_helper::IsLoad(), LoadOpNode(), Regular, OpNode::sink, STR, and THROW_ASSERT.
Referenced by printDot().


|
delete |
|
delete |
|
overridevirtual |
Prints the content of the operation.
Implements OpNode.
Definition at line 4159 of file Range_Analysis.cpp.
References GET_CONST_NODE, and OpNode::getSink().
Referenced by ControlDepNode::getSources().


|
overridevirtual |
Implements OpNode.
Definition at line 4164 of file Range_Analysis.cpp.
References NodeContainer::_opCtorGenerators, GET_CONST_NODE, tree_helper::GetConstValue(), OpNode::getSink(), VarNode::getValue(), PhiOpNode::opCtorGenerator(), UnaryOpNode::opCtorGenerator(), SigmaOpNode::opCtorGenerator(), BinaryOpNode::opCtorGenerator(), TernaryOpNode::opCtorGenerator(), opCtorGenerator(), and sources.
Referenced by ControlDepNode::getSources().


|
private |
reference to the memory access operand
Definition at line 3876 of file Range_Analysis.cpp.
Referenced by eval(), and printDot().
1.8.13