PandA-2024.02
|
Static Public Member Functions | |
static bool | widen (OpNode *op, const std::vector< APInt > &constantvector) |
This is the meet operator of the growth analysis. More... | |
static bool | narrow (OpNode *op, const std::vector< APInt > &constantvector) |
This is the meet operator of the cropping analysis. More... | |
static bool | crop (OpNode *op) |
static bool | growth (OpNode *op) |
static bool | fixed (OpNode *op) |
Static Public Attributes | |
static int | debug_level = DEBUG_LEVEL_NONE |
Static Private Member Functions | |
static const APInt & | getFirstGreaterFromVector (const std::vector< APInt > &constantvector, const APInt &val) |
static const APInt & | getFirstLessFromVector (const std::vector< APInt > &constantvector, const APInt &val) |
Definition at line 4591 of file Range_Analysis.cpp.
Definition at line 4907 of file Range_Analysis.cpp.
References Nuutila::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, OpNode::eval(), GET_INDEX_CONST_NODE, VarNode::getAbstractState(), OpNode::getInstruction(), VarNode::getRange(), OpNode::getSink(), INDENT_DBG_MEX, Regular, VarNode::setRange(), and STR.
Definition at line 4644 of file Range_Analysis.cpp.
References Nuutila::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, OpNode::eval(), GET_INDEX_CONST_NODE, OpNode::getInstruction(), VarNode::getRange(), OpNode::getSink(), INDENT_DBG_MEX, VarNode::setRange(), and STR.
|
staticprivate |
Definition at line 4616 of file Range_Analysis.cpp.
References Range::Max.
|
staticprivate |
Definition at line 4631 of file Range_Analysis.cpp.
References Range::Min.
Definition at line 4760 of file Range_Analysis.cpp.
References Nuutila::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, OpNode::eval(), GET_INDEX_CONST_NODE, OpNode::getInstruction(), VarNode::getRange(), OpNode::getSink(), INDENT_DBG_MEX, Range::Max, Range::Min, Regular, VarNode::setRange(), and STR.
This is the meet operator of the cropping analysis.
Whereas the growth analysis expands the bounds of each variable, regardless of intersections in the constraint graph, the cropping analysis shrinks these bounds back to ranges that respect the intersections.
Definition at line 4810 of file Range_Analysis.cpp.
References Anti, Nuutila::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, OpNode::eval(), GET_INDEX_CONST_NODE, OpNode::getInstruction(), VarNode::getRange(), OpNode::getSink(), INDENT_DBG_MEX, Range::Max, Range::Min, Regular, VarNode::setRange(), and STR.
This is the meet operator of the growth analysis.
The growth analysis will change the bounds of each variable, if necessary. Initially, each variable is bound to either the undefined interval, e.g. [., .], or to a constant interval, e.g., [3, 15]. After this analysis runs, there will be no undefined interval. Each variable will be either bound to a constant interval, or to [-, c], or to [c, +], or to [-, +].
Definition at line 4670 of file Range_Analysis.cpp.
References Anti, Nuutila::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, OpNode::eval(), GET_INDEX_CONST_NODE, OpNode::getInstruction(), VarNode::getRange(), OpNode::getSink(), INDENT_DBG_MEX, Regular, VarNode::setRange(), and STR.
|
static |
Definition at line 4605 of file Range_Analysis.cpp.