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

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 APIntgetFirstGreaterFromVector (const std::vector< APInt > &constantvector, const APInt &val)
 
static const APIntgetFirstLessFromVector (const std::vector< APInt > &constantvector, const APInt &val)
 

Detailed Description

Definition at line 4591 of file Range_Analysis.cpp.

Member Function Documentation

◆ crop()

bool Meet::crop ( OpNode op)
static

◆ fixed()

bool Meet::fixed ( OpNode op)
static

◆ getFirstGreaterFromVector()

const APInt & Meet::getFirstGreaterFromVector ( const std::vector< APInt > &  constantvector,
const APInt val 
)
staticprivate

Definition at line 4616 of file Range_Analysis.cpp.

References Range::Max.

◆ getFirstLessFromVector()

const APInt & Meet::getFirstLessFromVector ( const std::vector< APInt > &  constantvector,
const APInt val 
)
staticprivate

Definition at line 4631 of file Range_Analysis.cpp.

References Range::Min.

◆ growth()

bool Meet::growth ( OpNode op)
static

◆ narrow()

bool Meet::narrow ( OpNode op,
const std::vector< APInt > &  constantvector 
)
static

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.

Here is the call graph for this function:

◆ widen()

bool Meet::widen ( OpNode op,
const std::vector< APInt > &  constantvector 
)
static

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.

Here is the call graph for this function:

Field Documentation

◆ debug_level

int Meet::debug_level = DEBUG_LEVEL_NONE
static

Definition at line 4605 of file Range_Analysis.cpp.


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

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