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