74 const DesignFlowManagerConstRef _design_flow_manager)
86 switch(relationship_type)
90 relationships.insert(std::make_pair(BASIC_BLOCKS_CFG_COMPUTATION,
SAME_FUNCTION));
103 return relationships;
124 for(
auto& it : dominator_map)
126 if(it.first != bbentry)
132 if(
parameters->getOption<
bool>(OPT_print_dot))
140 const auto& post_dominator_map =
function_behavior->post_dominators->get_dominator_map();
141 for(
auto& it : post_dominator_map)
143 if(it.first != bbexit)
151 if(
parameters->getOption<
bool>(OPT_print_dot))
#define DEBUG_LEVEL_VERY_PEDANTIC
extremely verbose debugging print is performed.
#define PRINT_DBG_MEX(dbgLevel, curDbgLevel, mex)
We are producing a debug version of the program, so the message is printed;.
#define GET_CLASS(obj)
Macro returning the actual type of an object.
std::string get_function_name() const
Return the name of the function.
Definition of the class representing a generic C application.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
const BBGraphInfoConstRef CGetBBGraphInfo() const
Returns the property associated with the graph.
Class specification of the graph structures.
#define D_SELECTOR
Selectors used only in basic block graphs; numbers continue from cdfg_edge_info.hpp.
const CustomUnorderedSet< std::pair< FrontendFlowStepType, FunctionRelationship > > ComputeFrontendRelationships(const DesignFlowStep::RelationshipType relationship_type) const override
Return the set of analyses in relationship with this design step.
Basic block post-dominator tree.
This class provides methods to build a basic blocks graph.
Analysis step performing dominators and post dominators computation.
redefinition of map to manage ordered/unordered structures
Auxiliary methods for manipulating string.
dom_post_dom_computation(const ParameterConstRef _parameters, const application_managerRef AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager)
Constructor.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
Basic block dominator tree.
~dom_post_dom_computation() override
Destructor.
Classes to describe design flow graph.
Basic block control flow graph with feedback.
Target must be reexecuted.
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
void Initialize() override
Initialize the step (i.e., like a constructor, but executed just before exec.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
#define DEBUG_LEVEL_NONE
no debugging print is performed.
DesignFlowStep_Status InternalExec() override
Performs the dominators post-dominators computation step.
Class specification of the basic_block structure.
This file collects some hash functors.
#define PD_SELECTOR
post-dominator graph edge selector
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
this class is used to manage the command-line or XML options.
int debug_level
The debug level.
A brief description of the C++ Header File.
const FunctionBehaviorRef function_behavior
The function behavior of the function to be analyzed.
#define THROW_ASSERT(cond, str_expr)
helper function used to check an assert and if needed to throw an error in a standard way ...