70 unsigned int _function_id,
71 const DesignFlowManagerConstRef _design_flow_manager)
84 switch(relationship_type)
88 relationships.insert(std::make_pair(LOOPS_COMPUTATION,
SAME_FUNCTION));
89 relationships.insert(std::make_pair(OPERATIONS_CFG_COMPUTATION,
SAME_FUNCTION));
105 return relationships;
113 auto loop_end = loops.end();
114 for(
auto loop = loops.begin(); loop != loop_end; ++loop)
116 if((*loop)->GetId() == 0)
121 for(
auto sp_back_edge : (*loop)->get_sp_back_edges())
123 const auto& from_bb = sp_back_edge.first;
124 const auto& to_bb = sp_back_edge.second;
126 vertex label_vertex = bb_node_info->statements_list.front();
129 "Empty block " + std::to_string(bb_node_info_from->block->number));
130 vertex goto_vertex = bb_node_info_from->statements_list.back();
141 if(
parameters->getOption<
bool>(OPT_print_dot))
#define DEBUG_LEVEL_VERY_PEDANTIC
extremely verbose debugging print is performed.
~op_feedback_edges_computation() override
Destructor.
#define INDENT_DBG_MEX(dbgLevel, curDbgLevel, mex)
We are producing a debug version of the program, so the message is printed;.
File containing functions and utilities to support the printing of debug messagges.
#define GET_CLASS(obj)
Macro returning the actual type of an object.
Definition of the class representing a generic C application.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
Data structure describing a basic block at tree level.
#define STR(s)
Macro which performs a lexical_cast to a string.
Auxiliary methods for manipulating string.
#define FB_CFG_SELECTOR
Feedback control flow edge selector.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
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 control flow graph with feedback.
Target must be reexecuted.
boost::graph_traits< graph >::vertex_descriptor vertex
vertex definition.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
#define DEBUG_LEVEL_NONE
no debugging print is performed.
Analysis step computing feedback edges for operation control flow graph.
Class specification of the basic_block structure.
DesignFlowStep_Status InternalExec() override
Computes the feedback edges for the CFG and the CDG operations graphs.
const BBNodeInfoConstRef CGetBBNodeInfo(const vertex node) const
Return the info associated with a basic block.
Data structures used in operations graph.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
interface of loops finding algorithm
this class is used to manage the command-line or XML options.
Control flow graph with feedback.
int debug_level
The debug level.
This class provides methods to build an operations graph.
#define CFG_SELECTOR
Control flow graph edge selector.
op_feedback_edges_computation(const ParameterConstRef _parameters, const application_managerRef AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager)
Constructor.
Class specification of the manager of the tree structures extracted from the raw file.
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 ...