64 unsigned int _function_id,
const DesignFlowManagerConstRef _design_flow_manager)
76 switch(relationship_type)
80 relationships.insert(std::make_pair(BASIC_BLOCKS_CFG_COMPUTATION,
SAME_FUNCTION));
81 relationships.insert(std::make_pair(DOM_POST_DOM_COMPUTATION,
SAME_FUNCTION));
111 if(
parameters->getOption<
bool>(OPT_print_dot))
116 auto loop_end = loops.end();
117 for(
auto loop = loops.begin(); loop != loop_end; ++loop)
120 if((*loop)->GetId() == 0)
126 for(bb_it = blocks.begin(); bb_it != bb_it_end; ++bb_it)
129 bb_node_info->loop_id = (*loop)->GetId();
131 " Basic block " + std::to_string(bb_node_info->block->number));
135 "Number of reducible loops: " + std::to_string(
function_behavior->CGetLoops()->NumLoops()));
#define DEBUG_LEVEL_VERY_PEDANTIC
extremely verbose debugging print is performed.
File containing functions and utilities to support the printing of debug messagges.
#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.
Definition of the class representing a generic C application.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
Class specification of the graph structures.
Data structure describing a basic block at tree level.
unsigned int bb_version
The version of the basic block intermediate representation on which this step has been applied...
Auxiliary methods for manipulating string.
~loops_computation() override
Destructor.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
Basic block control flow graph with feedback.
Target must be reexecuted.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
#define DEBUG_LEVEL_NONE
no debugging print is performed.
void Initialize() override
Initialize the step (i.e., like a constructor, but executed just before exec.
Analysis step performing loops computation.
DesignFlowStep_Status InternalExec() override
Performs the loop computation step.
BBNodeInfoRef GetBBNodeInfo(const vertex node)
Return the info associated with a basic block.
Class specification of the basic_block structure.
This file collects some hash functors.
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.
int debug_level
The debug level.
loops_computation(const ParameterConstRef _parameters, const application_managerRef AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager)
Constructor.
A brief description of the C++ Header File.
const FunctionBehaviorRef function_behavior
The function behavior of the function to be analyzed.
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 THROW_ASSERT(cond, str_expr)
helper function used to check an assert and if needed to throw an error in a standard way ...