71 const DesignFlowManagerConstRef _design_flow_manager,
83 const auto TM =
AppM->get_tree_manager();
85 switch(relationship_type)
89 relationships.insert(std::make_pair(BASIC_BLOCKS_CFG_COMPUTATION,
SAME_FUNCTION));
105 return relationships;
110 const auto TM =
AppM->get_tree_manager();
112 (!
parameters->IsParameter(
"print-dot-FF") ||
parameters->GetParameter<
unsigned int>(
"print-dot-FF")))
117 bool changed =
false;
120 for(boost::tie(basic_block, basic_block_end) = boost::vertices(*basic_block_graph); basic_block != basic_block_end;
123 const auto block = basic_block_graph->CGetBBNodeInfo(*basic_block)->
block;
125 for(
const auto& stmt :
block->CGetStmtList())
127 const auto* pn = GetPointer<gimple_pragma>(
GET_NODE(stmt));
128 if(pn && pn->scope && GetPointer<omp_pragma>(
GET_NODE(pn->scope)))
130 const auto oa = GetPointer<omp_atomic_pragma>(
GET_NODE(pn->directive));
134 stmt ==
block->CGetStmtList().front())
136 gimple_to_be_removed = stmt;
137 GetPointer<function_decl>(
AppM->get_tree_manager()->get_tree_node_const(
function_id))->omp_atomic =
149 if(gimple_to_be_removed)
151 block->RemoveStmt(gimple_to_be_removed,
AppM);
155 (!
parameters->IsParameter(
"print-dot-FF") ||
parameters->GetParameter<
unsigned int>(
"print-dot-FF")))
#define GET_NODE(t)
Macro used to hide implementation details when accessing a tree_node from another tree_node...
#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 DEBUG_LEVEL_PEDANTIC
very verbose debugging print is performed.
Step successfully executed.
#define GET_CLASS(obj)
Macro returning the actual type of an object.
Definition of the class representing a generic C application.
std::string GetName() const override
Return the name of this design step.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
A simple interface to token object of the raw files.
void PrintTreeManager(const bool before) const
Dump the tree manager.
Data structure describing a basic block at tree level.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
void WriteBBGraphDot(const std::string &filename) const
Write the current version of statement list in dot format.
Target must be reexecuted.
redefinition of set to manage ordered/unordered structures
#define BB_ENTRY
constant identifying the basic block node of type entry
boost::graph_traits< graph >::vertex_iterator VertexIterator
vertex_iterator definition.
Classes specification of the tree_node data structures.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
This file collects some utility functions and macros.
#define DEBUG_LEVEL_NONE
no debugging print is performed.
#define THROW_ERROR(str_expr)
helper function used to throw an error in a standard way
This struct specifies the block node.
const unsigned int function_id
The index of the function to be analyzed.
const application_managerRef AppM
The application manager.
Class specification of the tree_reindex support class.
Class specification of the basic_block structure.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
Classes specification of the tree_node data structures not present in the gcc.
this class is used to manage the command-line or XML options.
int debug_level
The debug level.
block(unsigned int i)
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.