62 unsigned int _function_id,
const DesignFlowManagerConstRef _design_flow_manager)
74 switch(relationship_type)
78 relationships.insert(std::make_pair(OPERATIONS_CFG_COMPUTATION,
SAME_FUNCTION));
79 relationships.insert(std::make_pair(OP_REACHABILITY_COMPUTATION,
SAME_FUNCTION));
100 if(boost::num_vertices(*flg) != 0)
103 for(boost::tie(edge, edge_end) =
boost::edges(*flg); edge != edge_end; edge++)
124 for(boost::tie(v, v_end) = boost::vertices(*fcfg); v != v_end; ++v)
128 for(
const auto operation : basic_block_graph
129 ->CGetBBNodeInfo(basic_block_graph->CGetBBGraphInfo()
142 if(
parameters->getOption<
bool>(OPT_print_dot))
#define FLG_SELECTOR
Flow edge selector.
#define GET_TYPE(data, vertex_index)
Helper macro returning the type associated with a node.
Basic block control flow graph.
File containing functions and utilities to support the printing of debug messagges.
Analysis step which adds flow edges for scheduling to operation graphs.
#define GET_CLASS(obj)
Macro returning the actual type of an object.
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.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
DesignFlowStep_Status InternalExec() override
Performs the adding of flow edges to operation graphs.
unsigned int bb_version
The version of the basic block intermediate representation on which this step has been applied...
Auxiliary methods for manipulating string.
boost::graph_traits< graph >::edge_iterator EdgeIterator
edge_iterator definition.
const OpNodeInfoConstRef CGetOpNodeInfo(const vertex node) const
Returns the info associated with a node.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
AddOpExitFlowEdges(const ParameterConstRef _parameters, const application_managerRef AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager)
Constructor.
This class specifies the characteristic of a particular operation working on a given functional unit...
Target must be reexecuted.
boost::graph_traits< graph >::vertex_iterator VertexIterator
vertex_iterator definition.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
~AddOpExitFlowEdges() override
Destructor.
#define DEBUG_LEVEL_NONE
no debugging print is performed.
Class specification of the basic_block structure.
This file collects some hash functors.
Data structures used in operations graph.
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.
Control flow graph with feedback.
void Initialize() override
Initialize the step (i.e., like a constructor, but executed just before exec.
int debug_level
The debug level.
This class provides methods to build an operations graph.
System dependence + anti-dependence + output dependence graph + flow graph with feedback.
const FunctionBehaviorRef function_behavior
The function behavior of the function to be analyzed.
#define TYPE_LAST_OP
A vertex of type LAST_OP if it is the last operation of the application.