45 #include "config_HAVE_FROM_PRAGMA_BUILT.hpp" 46 #include "config_HAVE_HOST_PROFILING_BUILT.hpp" 47 #include "config_HAVE_ILP_BUILT.hpp" 48 #include "config_HAVE_TASTE.hpp" 58 const DesignFlowManagerConstRef _design_flow_manager,
60 :
FrontendFlowStep(_AppM, _frontend_flow_step_type, _design_flow_manager, _parameters)
69 switch(frontend_flow_step_type)
71 case ADD_BB_ECFG_EDGES:
72 case ADD_ARTIFICIAL_CALL_FLOW_EDGES:
73 case ADD_OP_EXIT_FLOW_EDGES:
74 case ADD_OP_LOOP_FLOW_EDGES:
75 case ADD_OP_PHI_FLOW_EDGES:
76 case BASIC_BLOCKS_CFG_COMPUTATION:
77 case BB_CONTROL_DEPENDENCE_COMPUTATION:
78 case BB_FEEDBACK_EDGES_IDENTIFICATION:
79 case BB_ORDER_COMPUTATION:
80 case BB_REACHABILITY_COMPUTATION:
85 case BUILD_VIRTUAL_PHI:
87 case CALL_GRAPH_BUILTIN_CALL:
88 case CHECK_SYSTEM_TYPE:
89 case COMPLETE_BB_GRAPH:
90 case COMPUTE_IMPLICIT_CALLS:
91 case COMMUTATIVE_EXPR_RESTRUCTURING:
92 case COND_EXPR_RESTRUCTURING:
95 case DEAD_CODE_ELIMINATION:
96 case DETERMINE_MEMORY_ACCESSES:
97 case DOM_POST_DOM_COMPUTATION:
100 case MULTIPLE_ENTRY_IF_REDUCTION:
101 case EXTRACT_GIMPLE_COND_OP:
102 #if HAVE_FROM_PRAGMA_BUILT 103 case EXTRACT_OMP_ATOMIC:
104 case EXTRACT_OMP_FOR:
106 case EXTRACT_PATTERNS:
107 case FIX_STRUCTS_PASSED_BY_VALUE:
109 case FUNCTION_CALL_TYPE_CLEANUP:
110 case FUNCTION_CALL_OPT:
111 case HDL_VAR_DECL_FIX:
113 case HWCALL_INJECTION:
115 case LOOP_COMPUTATION:
116 case LOOPS_ANALYSIS_BAMBU:
117 case LOOPS_COMPUTATION:
118 case LUT_TRANSFORMATION:
120 case NI_SSA_LIVENESS:
121 case OP_CONTROL_DEPENDENCE_COMPUTATION:
122 case OP_FEEDBACK_EDGES_IDENTIFICATION:
123 case OP_ORDER_COMPUTATION:
124 case OP_REACHABILITY_COMPUTATION:
125 case OPERATIONS_CFG_COMPUTATION:
127 case PARM_DECL_TAKEN_ADDRESS:
129 case PREDICATE_STATEMENTS:
130 case REBUILD_INITIALIZATION:
131 case REBUILD_INITIALIZATION2:
132 case REMOVE_CLOBBER_GA:
133 case REMOVE_ENDING_IF:
134 case SCALAR_SSA_DATA_FLOW_ANALYSIS:
136 case SDC_CODE_MOTION:
138 case SERIALIZE_MUTUAL_EXCLUSIONS:
140 case SHORT_CIRCUIT_TAF:
141 case SIMPLE_CODE_MOTION:
142 case SOFT_FLOAT_CG_EXT:
144 case UN_COMPARISON_LOWERING:
146 case UPDATE_SCHEDULE:
148 case UNROLLING_DEGREE:
153 case VERIFICATION_OPERATION:
154 case VIRTUAL_AGGREGATE_DATA_FLOW_ANALYSIS:
155 case VIRTUAL_PHI_NODES_SPLIT:
159 case(BAMBU_FRONTEND_FLOW):
161 case INTERFACE_INFER:
162 #if HAVE_HOST_PROFILING_BUILT 163 case BASIC_BLOCKS_PROFILING:
165 case(COMPLETE_CALL_GRAPH):
167 case CREATE_ADDRESS_TRANSLATION:
169 case(CREATE_TREE_MANAGER):
170 case DEAD_CODE_ELIMINATION_IPA:
171 case FIND_MAX_TRANSFORMATIONS:
172 case(FUNCTION_ANALYSIS):
173 case HDL_FUNCTION_DECL_FIX:
174 #if HAVE_HOST_PROFILING_BUILT 175 case(HOST_PROFILING):
177 #if HAVE_FROM_PRAGMA_BUILT 178 case(PRAGMA_ANALYSIS):
180 #if HAVE_FROM_PRAGMA_BUILT 181 case(PRAGMA_SUBSTITUTION):
184 case(STRING_CST_FIX):
185 case(SYMBOLIC_APPLICATION_FRONTEND_FLOW_STEP):
187 return "Frontend::" +
STR(frontend_flow_step_type);
#define GET_CLASS(obj)
Macro returning the actual type of an object.
exceptions managed by PandA
virtual std::string GetKindText() const
Return the name of the type of this frontend flow step.
const FrontendFlowStepType frontend_flow_step_type
The type of this step.
#define STR(s)
Macro which performs a lexical_cast to a string.
Auxiliary methods for manipulating string.
~ApplicationFrontendFlowStep() override
Destructor.
ApplicationFrontendFlowStep(const application_managerRef AppM, const FrontendFlowStepType frontend_flow_step_type, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
Constructor.
#define THROW_UNREACHABLE(str_expr)
helper function used to specify that some points should never be reached
static const std::string ComputeSignature(const FrontendFlowStepType frontend_flow_step_type)
Compute the signature of a symbolic application frontend flow step.
static const std::string ComputeSignature(const FrontendFlowStepType frontend_flow_step_type)
Compute the signature of a function frontend flow step.
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
const ParameterConstRef parameters
Set of input parameters.
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
std::string GetSignature() const override
Return the signature of this step.
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.
std::string GetName() const override
Return the name of this design step.
int debug_level
The debug level.
This class contains the base representation for a generic frontend flow step which works on the whole...
This class models the application of a analysis to all the functions of an application.