52 #include <boost/range/adaptor/reversed.hpp> 63 const DesignFlowManagerConstRef _design_flow_manager,
76 switch(relationship_type)
80 relationships.insert(std::make_pair(OPERATIONS_CFG_COMPUTATION,
SAME_FUNCTION));
81 relationships.insert(std::make_pair(OP_REACHABILITY_COMPUTATION,
SAME_FUNCTION));
108 for(boost::tie(v, v_end) = boost::vertices(*bb_graph); v != v_end; ++v)
112 const auto& statements_list = bb_graph->
CGetBBNodeInfo(*v)->statements_list;
113 for(
const auto stmt : statements_list)
116 const unsigned int st_tn_id = node_info->GetNodeId();
117 if(not BH->CanBeMoved(st_tn_id))
119 bool previous =
true;
120 for(
const auto other_stmt : statements_list)
122 if(other_stmt == stmt)
141 if(
parameters->getOption<
bool>(OPT_print_dot))
DesignFlowStep_Status InternalExec() override
Performs the adding of flow edges to operation graphs.
#define FLG_SELECTOR
Flow edge selector.
#define DEBUG_LEVEL_VERY_PEDANTIC
extremely verbose debugging print is performed.
#define INDENT_DBG_MEX(dbgLevel, curDbgLevel, mex)
We are producing a debug version of the program, so the message is printed;.
Basic block control flow graph.
File containing functions and utilities to support the printing of debug messagges.
#define GET_CLASS(obj)
Macro returning the actual type of an object.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
Data structure describing a basic block at tree level.
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.
#define STR(s)
Macro which performs a lexical_cast to a string.
Auxiliary methods for manipulating string.
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
Analysis step which adds flow edges to builtin bambu time functions.
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.
#define DEBUG_LEVEL_NONE
no debugging print is performed.
AddArtificialCallFlowEdges(const application_managerRef AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
Constructor.
~AddArtificialCallFlowEdges() override
Destructor.
Class specification of the basic_block structure.
This file collects some hash functors.
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...
this class is used to manage the command-line or XML options.
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.