62 const DesignFlowManagerConstRef _design_flow_manager)
72 switch(relationship_type)
76 relationships.insert(std::make_pair(BLOCK_FIX,
SAME_FUNCTION));
77 relationships.insert(std::make_pair(FIX_STRUCTS_PASSED_BY_VALUE,
SAME_FUNCTION));
79 relationships.insert(std::make_pair(HWCALL_INJECTION,
SAME_FUNCTION));
80 relationships.insert(std::make_pair(REBUILD_INITIALIZATION,
SAME_FUNCTION));
81 relationships.insert(std::make_pair(REMOVE_CLOBBER_GA,
SAME_FUNCTION));
82 relationships.insert(std::make_pair(SWITCH_FIX,
SAME_FUNCTION));
104 switch(relationship_type)
113 const auto technology_flow_step_factory = GetPointerS<const TechnologyFlowStepFactory>(
115 const auto technology_flow_signature =
118 const auto technology_design_flow_step =
119 technology_flow_step ?
120 design_flow_graph->CGetDesignFlowStepInfo(technology_flow_step)->design_flow_step :
122 relationship.insert(technology_design_flow_step);
137 const auto TM =
AppM->get_tree_manager();
139 const auto fd = GetPointer<const function_decl>(tn);
140 THROW_ASSERT(fd && fd->body,
"Node is not a function or it hasn't a body");
144 const auto isSingleMem = GetPointerS<const HLS_manager>(
AppM)->IsSingleWriteMemory();
145 for(
const auto&
block :
sl->list_of_bloc)
148 for(
const auto& s :
block.second->CGetStmtList())
151 const auto gn = GetPointerS<gimple_node>(
GET_NODE(s));
154 gn->vdef = gn->memdef;
155 if(!gn->vuses.empty())
161 gn->AddVuse(gn->memuse);
163 if(!gn->vovers.empty())
168 gn->memdef =
nullptr;
169 gn->memuse =
nullptr;
#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.
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.
Data structure representing the entire HLS information.
#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.
void ComputeRelationships(DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override
Compute the relationships of a step with other steps.
RelationshipType
The relationship type.
Source must be executed to satisfy target.
~FixVdef() override
Destructor.
exceptions managed by PandA
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.
std::string ToString(ActorGraphBackend_Type actor_graph_backend_type)
Header include.
void ComputeRelationships(DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override
Compute the relationships of a step with other steps.
Pure virtual base class for all the design flow step factory.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
merge memory dependencies in virtual dependencies
Classes to describe design flow graph.
Target must be reexecuted.
static const std::string ComputeSignature(const TechnologyFlowStep_Type technology_flow_step_type)
Compute the signature of a technology flow step.
Factory for technology flow step.
const Wrefcount< const DesignFlowManager > design_flow_manager
The design flow manager.
#define GET_CONST_NODE(t)
Classes specification of the tree_node data structures.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
This struct specifies the block node.
DesignFlowStep_Status InternalExec() override
move memory dependencies to virtual in case of single wryte memories
refcount< T > lock() const
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.
FixVdef(const ParameterConstRef Param, const application_managerRef AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager)
Constructor.
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.
Class specification of the manager of the tree structures extracted from the raw file.
Base class for technology flow steps.
#define THROW_ASSERT(cond, str_expr)
helper function used to check an assert and if needed to throw an error in a standard way ...