6 #ifndef effects_convex_header_included
7 #define effects_convex_header_included
37 #define region_CAST REGION_CAST
38 #define REGION_CAST(x) REGION(x)
39 #define REGION_ EFFECT_
40 #define REGION_TYPE EFFECT_TYPE
41 #define REGION_NEWGEN_DOMAIN EFFECT_NEWGEN_DOMAIN
42 #define gen_REGION_cons gen_effect_cons
43 #define gen_region_cons gen_effect_cons
45 #define region_undefined effect_undefined
46 #define region_undefined_p(reg) effect_undefined_p((reg))
47 #define make_region(reference,action,approximation,system) \
48 make_effect(make_cell(is_cell_reference, (reference)), \
49 (action), (approximation), \
50 make_descriptor(is_descriptor_convex,system))
64 #define region_any_reference(reg) \
65 (cell_preference_p(effect_cell(reg)) ? preference_reference(cell_preference(effect_cell(reg))) : cell_reference(effect_cell(reg)))
66 #define region_action(reg) effect_action(reg)
67 #define region_approximation(reg) effect_approximation(reg)
68 #define region_context(reg) effect_context(reg)
69 #define region_cell(reg) effect_cell(reg)
71 #define region_entity(reg) reference_variable(region_any_reference(reg))
72 #define region_action_tag(reg) action_tag(effect_action(reg))
73 #define region_approximation_tag(reg) \
74 approximation_tag(effect_approximation(reg))
75 #define region_system_(reg) \
76 descriptor_convex_(effect_descriptor(reg))
77 #define region_system(reg) \
78 descriptor_convex(effect_descriptor(reg))
82 #define region_read_p(reg) (action_tag(effect_action(reg))==is_action_read)
83 #define region_write_p(reg) (action_tag(effect_action(reg))==is_action_write)
84 #define region_may_p(reg) \
85 (approximation_tag(effect_approximation(reg)) == is_approximation_may)
86 #define region_must_p(reg) \
87 (approximation_tag(effect_approximation(reg)) == is_approximation_must)
88 #define region_exact_p(reg) \
89 (approximation_tag(effect_approximation(reg)) == is_approximation_exact)
90 #define region_empty_p(reg) sc_empty_p(region_system(reg))
91 #define region_rn_p(reg) sc_rn_p(region_system(reg))
92 #define region_scalar_p(reg) (anywhere_effect_p(reg) || entity_scalar_p(region_entity(reg)))
93 #define effect_region_p(e) (descriptor_convex_p(effect_descriptor(e)))
96 #define debug_regions_consistency(l_reg)\
97 ifdebug(1){regions_consistent_p(l_reg);}
98 #define debug_region_consistency(reg)\
99 ifdebug(1){region_consistent_p(reg);}
102 #define debug_print_region(level, message, region) \
103 ifdebug(level) { pips_debug(level, "%s\n", message); print_region(region);}
113 #define SEQUENTIAL_REGION_SUFFIX ".reg"
114 #define SEQUENTIAL_PROPER_REGION_SUFFIX ".preg"
115 #define USER_REGION_SUFFIX ".ureg"
116 #define SEQUENTIAL_IN_REGION_SUFFIX ".inreg"
117 #define USER_IN_REGION_SUFFIX ".uinreg"
118 #define SEQUENTIAL_OUT_REGION_SUFFIX ".outreg"
119 #define USER_OUT_REGION_SUFFIX ".uoutreg"
121 #define NB_MAX_ARRAY_DIM 12
list region_union(effect, effect, bool)
list all_regions_sc_append(list, Psysteme, bool)
void print_region(effect)
bool rho_region_p(effect)
bool print_source_inv_regions(const string)
list eval_convex_cell_with_points_to(cell, descriptor, list, bool *, transformer)
bool print_source_out_regions(const string)
list function_formal_parameters(entity)
void adapt_phi_n_variable_in_convex_effect(effect, expression, entity)
void print_copyinout_regions(list)
bool convex_cell_preceding_p(cell, descriptor, cell, descriptor, transformer, bool, bool *)
void convex_region_change_ith_dimension_expression(effect, expression, int)
list region_to_may_region_list(effect)
bool must_regions(const string)
void convex_region_descriptor_translation(effect)
list region_add_to_regions(effect, list)
entity make_phi_entity(int)
bool print_source_regions(const string)
bool print_icfg_with_control_regions(const string)
list out_regions_from_caller_to_callee(entity, entity)
void all_regions_variable_rename(list, entity, entity)
list region_sup_difference(effect, effect)
list regions_write_regions(list)
void set_backward_arguments_to_eliminate(entity)
effect make_reference_region(reference, action)
descriptor loop_convex_descriptor_make(loop)
list regions_backward_translation(entity, list, list, transformer, bool)
list regions_backward_tranlation(entity func, list real_args, list func_regions, transformer context)...
Psysteme cell_reference_sc_exact_projection_along_variable(reference, Psysteme, entity, bool *)
entity loop_regions_normalize(list, entity, range, bool *, bool, Psysteme *)
FONCTIONS D'INTERFACE
Psysteme sc_list_variables_rename(Psysteme, list, list)
bool print_code_inv_regions(const string)
text get_text_regions(const string)
list regions_sc_append_and_normalize(list, Psysteme, bool, bool, int)
bool region_projection_along_index_safe_p(entity, range)
Psysteme get_translation_context_sc(void)
list convex_regions_descriptor_variable_rename(list, entity, entity)
bool print_code_proper_pointer_regions(const string)
bool in_regions(const string)
bool print_call_graph_with_regions(const string)
void print_umust_statistics(char *, char *)
void region_value_substitute(effect, entity, entity)
void get_in_out_regions_properties(void)
bool print_icfg_with_control_out_regions(const string)
bool exact_regions_p(void)
bool print_icfg_with_loops_regions(const string)
bool print_code_as_a_graph_in_regions(const string)
void init_convex_summary_in_out_regions(const char *)
list convex_effect_to_constant_path_effects_with_pointer_values(effect)
list regions_read_regions(list)
bool must_regions_p(void)
effect reference_to_convex_region(reference, action, bool)
unary_operators.c
bool empty_convex_context_p(transformer)
list rho_entities_list(int, int)
void project_regions_with_transformer(list, transformer, list)
void convex_cell_reference_with_address_of_cell_reference_translation(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *)
bool print_call_graph_with_out_regions(const string)
list convex_effect_to_constant_path_effects_with_points_to(effect)
list variables_to_int_variables(list)
expression make_rho_expression(int)
void set_translation_context_sc(Psysteme)
bool print_icfg_with_loops_out_regions(const string)
Psysteme sc_loop_proper_precondition(loop)
void psi_to_phi_region(effect)
expression make_psi_expression(int)
bool out_summary_regions(const string)
bool rho_reference_p(reference)
void convex_regions_translation_init(entity, list, bool)
interprocedural.c
list in_regions_of_external(entity, list, transformer)
list in_regions_of_external(entity func, list real_args, transformer context) input : an external fun...
void update_out_summary_regions_list(list)
bool print_call_graph_with_in_regions(const string)
void print_rw_regions(list)
bool disjunct_regions_p(void)
void init_convex_summary_rw_regions(const char *)
list region_to_list(effect)
void reset_proj_op_statistics(void)
old_projection.c
text text_copyinout_array_regions(list)
list regions_of_expression(expression, transformer)
list convex_effect_to_phi_entity_list(effect)
void init_convex_in_out_regions(const char *)
list phi_entities_list(int, int)
bool print_code_as_a_graph_regions(const string)
list RegionsSupDifference(list, list, bool(*)(effect, effect))
list RegionsSupDifference(list l1, l2) input : two lists of regions output : a list of region,...
void region_sc_projection_along_variables_ofl_ctrl(Psysteme *, Pvecteur, int)
void region_sc_projection_ofl_along_variables(Psysteme *psc, Pvecteur pv) input : a system of constra...
effect entity_whole_region(entity, action)
bool convex_cells_inclusion_p(cell, descriptor, cell, descriptor, bool *)
Inclusion test :
void simple_cell_to_convex_cell_conversion(cell, cell *, descriptor *)
void set_methods_for_convex_rw_pointer_effects(void)
bool adapt_convex_effect_cell_to_backward_translation(effect)
points_to.c
void init_convex_rw_regions(const char *)
bool add_precondition_to_scalar_convex_regions
bool same_common_variables_p(entity, entity)
void reset_binary_op_statistics(void)
binary_operators.c
list get_out_summary_regions_list(void)
void set_methods_for_convex_effects(void)
methods.c
void region_non_exact_projection_along_variables(effect, list)
void region_sc_append_and_normalize(effect, Psysteme, int)
list RegionsMustUnion(list, list, bool(*)(effect, effect))
list RegionsMustUnion(list l1, list l2, union_combinable_p) input : two lists of regions output : a l...
void convex_cell_reference_with_value_of_cell_reference_translation(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *)
void set_forward_arguments_to_eliminate(void)
void project_regions_along_parameters(list, list)
void project_regions_along_parameters(list l_reg, list l_param) input : a list of regions to project,...
bool regions_consistent_p(list)
effect region_append(effect, effect)
void convex_cell_with_address_of_cell_translation(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *)
void region_dynamic_var_elim(effect)
void reset_convex_in_out_regions(const char *)
list sc_entities_cfc_variables(Psysteme, list)
void region_remove_beta_variables(effect)
list region_entities_intersection(effect, effect)
list RegionsEntitiesInfDifference(list, list, bool(*)(effect, effect))
list RegionsEntitiesInfDifference(list l1, l2) input : two lists of regions output : a list of region...
void reset_convex_rw_regions(const char *)
list proper_regions_of_expression(expression, transformer)
void convex_region_descriptor_remove_ith_dimension(effect, int)
bool convex_cells_intersection_p(cell, descriptor, cell, descriptor, bool *)
reference make_pointed_regions_reference(entity, bool)
void set_arguments_to_eliminate(list)
list region_to_store_independent_region_list(effect, bool)
list c_convex_effects_on_formal_parameter_backward_translation(list, expression, transformer)
bool array_bounds_p(void)
list region_phi_cfc_variables(effect)
Pcontrainte region_constraints_sort(Pcontrainte, Pbase, bool)
text text_rw_array_regions(list)
bool rectangular_must_region_p(entity, statement)
void out_regions_from_call_site_to_callee(call)
void out_regions_from_call_site_to_callee(call c) input : a potential call site for current_callee.
list c_convex_effects_on_actual_parameter_forward_translation(entity, expression, entity, list, transformer)
void phi_first_sort_base(Pbase *)
effect regions_must_convex_hull(effect, effect)
bool psi_region_p(effect)
void simple_reference_to_convex_reference_conversion(reference, reference *, descriptor *)
bool must_pointer_regions_with_points_to(const string)
bool print_icfg_with_regions(const string)
list beta_entities_list(int, int)
void reset_convex_summary_in_out_regions(const char *)
bool may_pointer_regions(const string)
bool must_regions_with_pointer_values(const string)
bool must_pointer_regions(const string)
effect substitute_stubs_in_convex_array_region(effect, bool, set)
bool print_icfg_with_in_regions(const string)
void get_regions_properties(void)
void set_interprocedural_translation_context_sc(entity, list)
void reset_arguments_to_eliminate(void)
bool sc_add_phi_equation(Psysteme *, expression, int, bool, bool)
void append_declaration_sc_if_exact_without_constraints(effect)
bool print_code_out_regions(const string)
effect reference_whole_region(reference, action)
void convex_effects_descriptor_normalize(list)
list convex_effect_find_aliased_paths_with_pointer_values(effect, statement)
list proper_regions_of_expressions(list, transformer)
void reset_convex_prettyprint(const char *)
list cell_reference_phi_cfc_variables(reference, Psysteme)
void phi_to_psi_region(effect)
void region_sc_append(effect, Psysteme, bool)
expression make_phi_expression(int)
void print_region_sc(effect)
reference make_regions_psi_reference(entity)
list convex_regions_backward_translation(entity, list, list, transformer)
of effects
void print_private_regions(list)
list psi_entities_list(int, int)
text text_inout_array_regions(list)
list RegionsMayUnion(list, list, bool(*)(effect, effect))
list RegionsMayUnion(list l1, list l2, union_combinable_p) input : two lists of regions output : a li...
void regions_remove_phi_variables(list)
void regions_remove_phi_variables(list l_reg) input : a list of regions, and an integer,...
void print_umay_statistics(char *, char *)
list regions_to_write_regions(list)
void init_convex_rw_prettyprint(const char *)
bool summary_regions(const string)
Psysteme region_sc_normalize(Psysteme, int)
bool print_code_pointer_regions(const string)
Ppolynome region_enumerate(effect)
Ppolynome sc_enumerate(Psysteme, Pbase, const char *[])
sc_enumerate.c
bool region_consistent_p(effect)
debug.c
list region_entities_cfc_variables(effect, list)
list regions_add_context(list, transformer)
bool summary_pointer_regions(const string)
cproto-generated files
void reset_out_summary_regions_list(void)
void region_exact_projection_along_variable(effect, entity)
void region_translation_statistics_init(bool)
translation.c
void region_remove_phi_variables(effect)
entity make_beta_entity(int)
utils.c
descriptor vector_to_convex_descriptor(Pvecteur)
bool print_source_proper_regions(const string)
void region_remove_rho_variables(effect)
bool print_icfg_with_loops_in_regions(const string)
effect region_dup(effect)
list regions_of_external(entity, list, transformer, bool)
list regions_of_external(entity func, list real_args, transformer context) input : an external functi...
expression region_reference_to_expression(reference)
void convex_regions_translation_end(void)
void print_proj_op_statistics(char *, char *)
list RegionsInfDifference(list, list, bool(*)(effect, effect))
list RegionsInfDifference(list l1, l2) input : two lists of regions output : a list of region,...
list region_must_union(effect, effect)
Psysteme entity_declaration_sc(entity)
Psysteme cell_system_sc_append_and_normalize(Psysteme, Psysteme, int)
void array_regions_variable_rename(list, entity, entity)
bool print_code_live_out_regions(const char *)
string region_to_string(effect)
bool rectangular_region_p(effect)
bool live_out_regions(const char *)
Psysteme cell_reference_system_remove_psi_variables(reference, Psysteme, bool *)
list scalar_regions_sc_append(list, Psysteme, bool)
Psysteme sc_projection_ofl_along_list_of_variables(Psysteme, list)
MISC
void set_methods_for_convex_in_out_effects(void)
list get_arguments_to_eliminate(void)
void project_regions_with_transformer_inverse(list, transformer, list)
effect adapt_translation_as_convex_effect(effect, effect)
list convex_regions_loop_normalize(list, entity, range, entity *, descriptor, bool)
void print_dinf_statistics(char *, char *)
void region_exact_projection_along_parameters(effect, list)
void convex_cell_with_value_of_cell_translation(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *)
void print_dsup_statistics(char *, char *)
Psysteme cell_reference_system_remove_rho_variables(reference, Psysteme, bool *)
effect convex_effect_field_to_rank_conversion(effect)
void init_convex_inout_prettyprint(const char *)
bool print_code_inv_pointer_regions(const string)
bool psi_reference_p(reference)
void region_translation_statistics_close(const char *, const char *)
bool print_code_regions(const string)
Pbase region_sorted_base_dup(effect)
bool print_code_proper_regions(const string)
bool print_code_as_a_graph_out_regions(const string)
list convex_regions_forward_translation(entity, list, list, transformer)
of effects
bool print_icfg_with_control_in_regions(const string)
void convex_region_add_expression_dimension(effect, expression)
void project_regions_along_loop_index(list, entity, range)
void project_regions_along_loop_index(list l_reg, entity index, l_range) input : a list l_reg of regi...
list region_intersection(effect, effect)
list region_inf_difference(effect, effect)
list regions_sc_append(list, Psysteme, bool, bool, bool)
list convex_regions_precondition_compose(list, transformer, bool)
bool must_regions_with_points_to(const string)
void print_regions_op_statistics(char *, int)
text text_private_array_regions(list)
bool op_statistics_p(void)
void region_exact_projection_along_variables(effect, list)
void region_exact_projection_along_variables(effect reg, list l_var) input : a region and a list of v...
void region_remove_psi_variables(effect)
list RegionsIntersection(list, list, bool(*)(effect, effect))
list RegionsIntersection(list l1,l2, bool (*intersection_combinable_p)(effect, effect)) input : outpu...
reference make_regions_reference(entity)
effect region_translation(effect, entity, reference, entity, entity, reference, Value, bool)
bool convex_cell_reference_preceding_p(reference, descriptor, reference, descriptor, transformer, bool, bool *)
eval.c
list region_may_union(effect, effect)
bool print_source_in_regions(const string)
bool in_out_methods_p(void)
void print_inout_regions(list)
list regions_dynamic_elim(list)
list regions_dynamic_elim(list l_reg) input : a list of regions.
void set_methods_for_convex_rw_effects(void)
list regions_to_nil_list(effect, effect)
list convex_regions_union_over_range(list, entity, range, descriptor)
effect region_rectangular_hull(effect, bool)
void region_sc_sort(Psysteme, Pbase)
void regions_transformer_apply(list, transformer, list, bool)
void regions_transformer_apply(l_reg, trans, l_var_not_proj) input : a list of regions,...
bool out_regions(const string)
void reset_convex_summary_rw_regions(const char *)
char * func_entity_name(entity)
entity make_psi_entity(int)
list regions_forward_translation(entity, list, list, transformer)
list regions_forward_translation(entity func, list real_args, l_reg, transformer context input : the ...
int phi_entity_rank(entity)
void region_translation_init(entity, reference, entity, reference, Value)
list regions_add_region(list, effect)
void region_non_exact_projection_along_parameters(effect, list)
bool print_code_in_regions(const string)
void set_region_interprocedural_translation(void)
string region_sc_to_string(string, Psysteme)
prettyprint.c
bool may_regions(const string)
void reset_op_statistics(void)
void reset_translation_context_sc(void)
bool in_summary_regions(const string)
entity make_rho_entity(int)
list array_regions_sc_append(list, Psysteme, bool)
bool print_icfg_with_out_regions(const string)
list region_to_nil_list(effect)
list convex_regions_transformer_compose(list, transformer)
compose.c
void reset_region_interprocedural_translation(void)
list convex_regions_inverse_transformer_compose(list, transformer)
list array_regions_sc_append_and_normalize(list, Psysteme, int)
text get_text_in_regions(const string)
text get_text_out_regions(const string)
list variables_to_old_variables(list)
list regions_remove_variables_regions(list, list)
void project_regions_along_variables(list, list)
void project_regions_along_variables(list l_reg, list l_param) input : a list of regions to project,...
list RegionsEntitiesIntersection(list, list, bool(*)(effect, effect))
list RegionsEntitiesIntersection(list l1,l2, bool (*intersection_combinable_p)(effect,...
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.