45 #ifndef FRONTEND_FLOW_STEP_HPP 46 #define FRONTEND_FLOW_STEP_HPP 48 #include "config_HAVE_FROM_PRAGMA_BUILT.hpp" 49 #include "config_HAVE_HOST_PROFILING_BUILT.hpp" 50 #include "config_HAVE_ILP_BUILT.hpp" 51 #include "config_HAVE_PRAGMA_BUILT.hpp" 52 #include "config_HAVE_TASTE.hpp" 71 #if HAVE_HOST_PROFILING_BUILT 72 BASIC_BLOCKS_PROFILING,
75 FIND_MAX_TRANSFORMATIONS,
77 #if HAVE_HOST_PROFILING_BUILT 80 #if HAVE_FROM_PRAGMA_BUILT 83 SYMBOLIC_APPLICATION_FRONTEND_FLOW_STEP,
86 ADD_ARTIFICIAL_CALL_FLOW_EDGES,
87 ADD_OP_EXIT_FLOW_EDGES,
88 ADD_OP_LOOP_FLOW_EDGES,
89 ADD_OP_PHI_FLOW_EDGES,
91 BASIC_BLOCKS_CFG_COMPUTATION,
92 BB_CONTROL_DEPENDENCE_COMPUTATION,
93 BB_FEEDBACK_EDGES_IDENTIFICATION,
95 BB_REACHABILITY_COMPUTATION,
103 CALL_GRAPH_BUILTIN_CALL,
107 COMPUTE_IMPLICIT_CALLS,
108 COMMUTATIVE_EXPR_RESTRUCTURING,
109 COND_EXPR_RESTRUCTURING,
111 CREATE_ADDRESS_TRANSLATION,
115 DEAD_CODE_ELIMINATION,
116 DEAD_CODE_ELIMINATION_IPA,
117 DETERMINE_MEMORY_ACCESSES,
118 DOM_POST_DOM_COMPUTATION,
119 EXTRACT_GIMPLE_COND_OP,
120 #if HAVE_FROM_PRAGMA_BUILT 125 FIX_STRUCTS_PASSED_BY_VALUE,
126 FUNCTION_CALL_TYPE_CLEANUP,
130 HDL_FUNCTION_DECL_FIX,
137 LOOPS_ANALYSIS_BAMBU,
141 MULTIPLE_ENTRY_IF_REDUCTION,
143 OP_CONTROL_DEPENDENCE_COMPUTATION,
144 OP_FEEDBACK_EDGES_IDENTIFICATION,
145 OP_ORDER_COMPUTATION,
146 OP_REACHABILITY_COMPUTATION,
147 OPERATIONS_CFG_COMPUTATION,
149 PARM_DECL_TAKEN_ADDRESS,
151 #if HAVE_PRAGMA_BUILT 154 PREDICATE_STATEMENTS,
157 REBUILD_INITIALIZATION,
158 REBUILD_INITIALIZATION2,
161 SCALAR_SSA_DATA_FLOW_ANALYSIS,
165 SERIALIZE_MUTUAL_EXCLUSIONS,
172 UN_COMPARISON_LOWERING,
181 VERIFICATION_OPERATION,
182 VIRTUAL_AGGREGATE_DATA_FLOW_ANALYSIS,
183 VIRTUAL_PHI_NODES_SPLIT
194 struct hash<FrontendFlowStepType> :
public unary_function<FrontendFlowStepType, size_t>
196 size_t operator()(FrontendFlowStepType
algorithm)
const 199 return hasher(static_cast<int>(algorithm));
266 CreateSteps(
const DesignFlowManagerConstRef design_flow_manager,
267 const CustomUnorderedSet<std::pair<FrontendFlowStepType, FunctionRelationship>>& frontend_relationships,
273 virtual std::string GetKindText()
const;
286 DesignFlowStepFactoryConstRef CGetDesignFlowStepFactory()
const override;
292 void PrintTreeManager(
const bool before)
const;
296 void PrintInitialIR()
const override;
301 void PrintFinalIR()
const override;
313 :
public unary_function<FrontendFlowStep::FunctionRelationship, size_t>
318 return hasher(static_cast<int>(relationship));
CONSTREF_FORWARD_DECL(application_manager)
Forward declaration.
REF_FORWARD_DECL(application_manager)
RelationshipType
The relationship type.
This structure records a sequence of operations.
The base class for design step.
Definition of hash function for EdgeDescriptor.
const FrontendFlowStepType frontend_flow_step_type
The type of this step.
Base class for step of design flow.
redefinition of set to manage ordered/unordered structures
enum { ALL_FUNCTIONS, CALLED_FUNCTIONS, CALLING_FUNCTIONS, SAME_FUNCTION, WHOLE_APPLICATION } FunctionRelationship
The different relationship type between function analysis.
enum FrontendFlowStepType { CREATE_TREE_MANAGER, FIND_MAX_TRANSFORMATIONS, FUNCTION_ANALYSIS, SYMBOLIC_APPLICATION_FRONTEND_FLOW_STEP, ADD_BB_ECFG_EDGES, ADD_ARTIFICIAL_CALL_FLOW_EDGES, ADD_OP_EXIT_FLOW_EDGES, ADD_OP_LOOP_FLOW_EDGES, ADD_OP_PHI_FLOW_EDGES, BAMBU_FRONTEND_FLOW, BASIC_BLOCKS_CFG_COMPUTATION, BB_CONTROL_DEPENDENCE_COMPUTATION, BB_FEEDBACK_EDGES_IDENTIFICATION, BB_ORDER_COMPUTATION, BB_REACHABILITY_COMPUTATION, BIT_VALUE, BIT_VALUE_OPT, BITVALUE_RANGE, BIT_VALUE_IPA, BLOCK_FIX, BUILD_VIRTUAL_PHI, CALL_EXPR_FIX, CALL_GRAPH_BUILTIN_CALL, CHECK_SYSTEM_TYPE, COMPLETE_BB_GRAPH, COMPLETE_CALL_GRAPH, COMPUTE_IMPLICIT_CALLS, COMMUTATIVE_EXPR_RESTRUCTURING, COND_EXPR_RESTRUCTURING, CSE_STEP, DATAFLOW_CG_EXT, DEAD_CODE_ELIMINATION, DEAD_CODE_ELIMINATION_IPA, DETERMINE_MEMORY_ACCESSES, DOM_POST_DOM_COMPUTATION, EXTRACT_GIMPLE_COND_OP, EXTRACT_PATTERNS, FIX_STRUCTS_PASSED_BY_VALUE, FUNCTION_CALL_TYPE_CLEANUP, FUNCTION_CALL_OPT, FANOUT_OPT, FIX_VDEF, HDL_FUNCTION_DECL_FIX, HDL_VAR_DECL_FIX, HLS_DIV_CG_EXT, HWCALL_INJECTION, INTERFACE_INFER, IR_LOWERING, LOOP_COMPUTATION, LOOPS_ANALYSIS_BAMBU, LOOPS_COMPUTATION, LUT_TRANSFORMATION, MULTI_WAY_IF, MULTIPLE_ENTRY_IF_REDUCTION, NI_SSA_LIVENESS, OP_CONTROL_DEPENDENCE_COMPUTATION, OP_FEEDBACK_EDGES_IDENTIFICATION, OP_ORDER_COMPUTATION, OP_REACHABILITY_COMPUTATION, OPERATIONS_CFG_COMPUTATION, PARM2SSA, PARM_DECL_TAKEN_ADDRESS, PHI_OPT, PREDICATE_STATEMENTS, ESSA, RANGE_ANALYSIS, REBUILD_INITIALIZATION, REBUILD_INITIALIZATION2, REMOVE_CLOBBER_GA, REMOVE_ENDING_IF, SCALAR_SSA_DATA_FLOW_ANALYSIS, SERIALIZE_MUTUAL_EXCLUSIONS, SPLIT_RETURN, SHORT_CIRCUIT_TAF, SIMPLE_CODE_MOTION, SOFT_FLOAT_CG_EXT, STRING_CST_FIX, SWITCH_FIX, UN_COMPARISON_LOWERING, UNROLLING_DEGREE, USE_COUNTING, VAR_ANALYSIS, VAR_DECL_FIX, VECTORIZE, VERIFICATION_OPERATION, VIRTUAL_AGGREGATE_DATA_FLOW_ANALYSIS, VIRTUAL_PHI_NODES_SPLIT } FrontendFlowStepType
Template definition of refcount.
unsigned int print_counter
Print counter.
const application_managerRef AppM
The application manager.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...