PIPS
effects-convex.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/effects-convex/effects-convex-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef effects_convex_header_included
7 #define effects_convex_header_included
8 /* effects_convex-local.h */
9 /*
10 
11  $Id: effects-convex-local.h 23065 2016-03-02 09:05:50Z coelho $
12 
13  Copyright 1989-2016 MINES ParisTech
14 
15  This file is part of PIPS.
16 
17  PIPS is free software: you can redistribute it and/or modify it
18  under the terms of the GNU General Public License as published by
19  the Free Software Foundation, either version 3 of the License, or
20  any later version.
21 
22  PIPS is distributed in the hope that it will be useful, but WITHOUT ANY
23  WARRANTY; without even the implied warranty of MERCHANTABILITY or
24  FITNESS FOR A PARTICULAR PURPOSE.
25 
26  See the GNU General Public License for more details.
27 
28  You should have received a copy of the GNU General Public License
29  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
30 
31 */
32 
33 /* simulation of the type region */
34 
35 #define region effect
36 #define REGION EFFECT /* for casts */
37 #define region_CAST REGION_CAST
38 #define REGION_CAST(x) REGION(x)
39 #define REGION_ EFFECT_ /* for some left casts */
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
44 
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))
51 /* To be avoided. Use region_any_reference() instead.
52  I definitely remove this one : it is too dangerous. BC.
53  FC: it should not compile, rather than compile and fail???
54 */
55 /*
56  // v1
57  #define region_reference(reg) \
58  preference_reference(cell_preference(effect_cell(reg)))
59  // v2
60  #define region_reference(reg) \
61  pips_internal_error("region_reference is not defined anymore \n")
62  // v3: nothing, should break compilation or link
63 */
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)
70 
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))
79 
80 /* useful region macros */
81 
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)))
94 
95 /* consistency checking */
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);}
100 
101 /* convenient debug messages */
102 #define debug_print_region(level, message, region) \
103  ifdebug(level) { pips_debug(level, "%s\n", message); print_region(region);}
104 
105 /* other things */
106 
107 
108 
109 #define R_RW 0
110 #define R_IN 1
111 #define R_OUT 2
112 
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"
120 
121 #define NB_MAX_ARRAY_DIM 12
122 /* cproto-generated files */
123 /* interface.c */
124 extern bool summary_pointer_regions(const string /*module_name*/);
125 extern bool summary_regions(const string /*module_name*/);
126 extern bool may_pointer_regions(const string /*module_name*/);
127 extern bool may_regions(const string /*module_name*/);
128 extern bool must_pointer_regions(const string /*module_name*/);
129 extern bool must_pointer_regions_with_points_to(const string /*module_name*/);
130 extern bool must_regions(const string /*module_name*/);
131 extern bool must_regions_with_points_to(const string /*module_name*/);
132 extern bool must_regions_with_pointer_values(const string /*module_name*/);
133 extern bool in_summary_regions(const string /*module_name*/);
134 extern bool in_regions(const string /*module_name*/);
135 extern bool out_summary_regions(const string /*module_name*/);
136 extern bool out_regions(const string /*module_name*/);
137 extern bool live_out_regions(const char */*module_name*/);
138 extern bool print_code_proper_pointer_regions(const string /*module_name*/);
139 extern bool print_code_pointer_regions(const string /*module_name*/);
140 extern bool print_code_inv_pointer_regions(const string /*module_name*/);
141 extern bool print_code_proper_regions(const string /*module_name*/);
142 extern bool print_source_proper_regions(const string /*module_name*/);
143 extern bool print_code_regions(const string /*module_name*/);
144 extern bool print_source_regions(const string /*module_name*/);
145 extern bool print_code_inv_regions(const string /*module_name*/);
146 extern bool print_source_inv_regions(const string /*module_name*/);
147 extern bool print_code_in_regions(const string /*module_name*/);
148 extern bool print_source_in_regions(const string /*module_name*/);
149 extern bool print_code_out_regions(const string /*module_name*/);
150 extern bool print_source_out_regions(const string /*module_name*/);
151 extern bool print_code_live_out_regions(const char */*module_name*/);
152 extern bool print_code_as_a_graph_regions(const string /*mod_name*/);
153 extern bool print_code_as_a_graph_in_regions(const string /*mod_name*/);
154 extern bool print_code_as_a_graph_out_regions(const string /*mod_name*/);
157 extern list proper_regions_of_expressions(list /*l_exp*/, transformer /*context*/);
158 extern bool print_call_graph_with_regions(const string /*module_name*/);
159 extern bool print_call_graph_with_in_regions(const string /*module_name*/);
160 extern bool print_call_graph_with_out_regions(const string /*module_name*/);
161 extern bool print_icfg_with_regions(const string /*module_name*/);
162 extern bool print_icfg_with_in_regions(const string /*module_name*/);
163 extern bool print_icfg_with_out_regions(const string /*module_name*/);
164 extern bool print_icfg_with_loops_regions(const string /*module_name*/);
165 extern bool print_icfg_with_loops_in_regions(const string /*module_name*/);
166 extern bool print_icfg_with_loops_out_regions(const string /*module_name*/);
167 extern bool print_icfg_with_control_regions(const string /*module_name*/);
168 extern bool print_icfg_with_control_in_regions(const string /*module_name*/);
169 extern bool print_icfg_with_control_out_regions(const string /*module_name*/);
170 /* translation.c */
171 extern void region_translation_statistics_init(bool /*stat_p*/);
172 extern void region_translation_statistics_close(const char */*mod_name*/, const char */*prefix*/);
173 extern void region_translation_init(entity /*ent_1*/, reference /*rf_1*/, entity /*ent_2*/, reference /*rf_2*/, Value /*offset_1_m_2*/);
175 extern effect region_translation(effect /*reg_1*/, entity /*func_1*/, reference /*rf_1*/, entity /*ent_2*/, entity /*func_2*/, reference /*rf_2*/, Value /*offset_1_m_2*/, bool /*backward_p*/);
178 extern void set_interprocedural_translation_context_sc(entity /*callee*/, list /*real_args*/);
184 extern void set_arguments_to_eliminate(list /*l_args*/);
188 extern void convex_cell_reference_with_address_of_cell_reference_translation(reference /*input_ref*/, descriptor /*input_desc*/, reference /*address_of_ref*/, descriptor /*address_of_desc*/, int /*nb_common_indices*/, reference */*output_ref*/, descriptor */*output_desc*/, bool */*exact_p*/);
189 extern void convex_cell_reference_with_value_of_cell_reference_translation(reference /*input_ref*/, descriptor /*input_desc*/, reference /*value_of_ref*/, descriptor /*value_of_desc*/, int /*nb_common_indices*/, reference */*output_ref*/, descriptor */*output_desc*/, bool */*exact_p*/);
190 extern void convex_cell_with_address_of_cell_translation(cell /*input_cell*/, descriptor /*input_desc*/, cell /*address_of_cell*/, descriptor /*address_of_desc*/, int /*nb_common_indices*/, cell */*output_cell*/, descriptor */*output_desc*/, bool */*exact_p*/);
191 extern void convex_cell_with_value_of_cell_translation(cell /*input_cell*/, descriptor /*input_desc*/, cell /*value_of_cell*/, descriptor /*value_of_desc*/, int /*nb_common_indices*/, cell */*output_cell*/, descriptor */*output_desc*/, bool */*exact_p*/);
192 /* methods.c */
193 extern void set_methods_for_convex_effects(void);
194 extern void set_methods_for_convex_rw_effects(void);
196 extern void set_methods_for_convex_in_out_effects(void);
197 extern bool in_out_methods_p(void);
198 extern void init_convex_rw_prettyprint(const char */*module_name*/);
199 extern void init_convex_rw_regions(const char */*module_name*/);
200 extern void init_convex_inout_prettyprint(const char */*module_name*/);
201 extern void init_convex_in_out_regions(const char */*module_name*/);
202 extern void reset_convex_rw_regions(const char */*module_name*/);
203 extern void reset_convex_in_out_regions(const char */*module_name*/);
204 extern void init_convex_summary_rw_regions(const char */*module_name*/);
205 extern void reset_convex_summary_rw_regions(const char */*module_name*/);
206 extern void init_convex_summary_in_out_regions(const char */*module_name*/);
207 extern void reset_convex_prettyprint(const char */*module_name*/);
208 extern void reset_convex_summary_in_out_regions(const char */*module_name*/);
209 /* compose.c */
212 extern list convex_regions_precondition_compose(list /*l_reg*/, transformer /*context*/, bool /*on_scalar_p*/);
213 /* unary_operators.c */
214 extern effect reference_to_convex_region(reference /*ref*/, action /*act*/, bool /*use_preference_p*/);
215 extern list convex_regions_descriptor_variable_rename(list /*l_reg*/, entity /*old_ent*/, entity /*new_ent*/);
217 extern list convex_regions_loop_normalize(list /*l_reg*/, entity /*index*/, range /*r*/, entity */*new_index*/, descriptor /*d*/, bool /*descriptor_normalize_p*/);
218 extern list convex_regions_union_over_range(list /*l_reg*/, entity /*index*/, range /*r*/, descriptor /*d*/);
221 /* sc_enumerate.c */
222 extern Ppolynome sc_enumerate(Psysteme /*ordered_sc*/, Pbase /*ordered_base*/, const char */*variable_names*/[]);
223 /* utils.c */
224 extern entity make_beta_entity(int /*n*/);
225 extern list beta_entities_list(int /*beta_min*/, int /*beta_max*/);
227 extern void regions_init(void);
228 extern void regions_end(void);
229 extern effect region_dup(effect /*reg*/);
230 extern list regions_dup(list /*l_reg*/);
231 extern void regions_free(list /*l_reg*/);
232 extern void region_free(effect /*reg*/);
233 extern list region_add_to_regions(effect /*reg*/, list /*l_reg*/);
234 extern list regions_add_region(list /*l_reg*/, effect /*reg*/);
235 extern list regions_add_context(list /*l_reg*/, transformer /*context*/);
236 extern Psysteme region_sc_normalize(Psysteme /*sc_reg*/, int /*level*/);
237 extern Psysteme cell_system_sc_append_and_normalize(Psysteme /*sc1*/, Psysteme /*sc2*/, int /*level*/);
238 extern void region_sc_append_and_normalize(effect /*reg*/, Psysteme /*sc*/, int /*level*/);
239 extern list regions_sc_append_and_normalize(list /*l_reg*/, Psysteme /*sc*/, bool /*arrays_only*/, bool /*scalars_only*/, int /*level*/);
240 extern list array_regions_sc_append_and_normalize(list /*l_reg*/, Psysteme /*sc*/, int /*level*/);
241 extern void region_sc_append(effect /*reg*/, Psysteme /*sc*/, bool /*nredund_p*/);
242 extern list regions_sc_append(list /*l_reg*/, Psysteme /*sc*/, bool /*arrays_only*/, bool /*scalars_only*/, bool /*nredund_p*/);
243 extern list all_regions_sc_append(list /*l_reg*/, Psysteme /*sc*/, bool /*nredund_p*/);
244 extern list scalar_regions_sc_append(list /*l_reg*/, Psysteme /*sc*/, bool /*nredund_p*/);
245 extern list array_regions_sc_append(list /*l_reg*/, Psysteme /*sc*/, bool /*nredund_p*/);
246 extern list regions_remove_variables_regions(list /*l_reg*/, list /*l_var*/);
247 extern void array_regions_variable_rename(list /*l_reg*/, entity /*old_entity*/, entity /*new_entity*/);
248 extern void all_regions_variable_rename(list /*l_reg*/, entity /*old_entity*/, entity /*new_entity*/);
249 extern void region_value_substitute(effect /*reg*/, entity /*e1*/, entity /*e2*/);
250 extern list region_entities_cfc_variables(effect /*reg*/, list /*l_ent*/);
251 extern list sc_entities_cfc_variables(Psysteme /*sc*/, list /*l_ent*/);
252 extern list region_to_list(effect /*reg*/);
254 extern list regions_to_nil_list(effect /*reg1*/, effect /*reg2*/);
257 extern list regions_read_regions(list /*l_reg*/);
258 extern list regions_write_regions(list /*l_reg*/);
259 extern reference make_pointed_regions_reference(entity /*ent*/, bool /*indexed_p*/);
261 extern effect make_reference_region(reference /*ref*/, action /*tac*/);
264 extern effect entity_whole_region(entity /*e*/, action /*tac*/);
265 extern list region_to_store_independent_region_list(effect /*reg*/, bool /*force_may_p*/);
267 extern void convex_region_change_ith_dimension_expression(effect /*reg*/, expression /*exp*/, int /*i*/);
270 extern effect region_append(effect /*eff1*/, effect /*eff2*/);
271 extern entity make_phi_entity(int /*n*/);
272 extern int phi_entity_rank(entity /*phi*/);
273 extern list phi_entities_list(int /*phi_min*/, int /*phi_max*/);
275 extern expression make_phi_expression(int /*n*/);
276 extern bool sc_add_phi_equation(Psysteme */*psc*/, expression /*expr*/, int /*dim*/, bool /*is_eg*/, bool /*is_phi_first*/);
277 extern void phi_first_sort_base(Pbase */*ppbase*/);
278 extern int base_nb_phi(Pbase /*b*/);
279 extern entity make_psi_entity(int /*n*/);
280 extern list psi_entities_list(int /*psi_min*/, int /*psi_max*/);
281 extern expression make_psi_expression(int /*n*/);
282 extern int base_nb_psi(Pbase /*b*/);
283 extern entity make_rho_entity(int /*n*/);
284 extern list rho_entities_list(int /*rho_min*/, int /*rho_max*/);
285 extern bool rho_reference_p(reference /*ref*/);
286 extern bool rho_region_p(effect /*reg*/);
287 extern expression make_rho_expression(int /*n*/);
288 extern int base_nb_rho(Pbase /*b*/);
291 extern void psi_to_phi_region(effect /*reg*/);
292 extern void phi_to_psi_region(effect /*reg*/);
293 extern bool psi_reference_p(reference /*ref*/);
294 extern bool psi_region_p(effect /*reg*/);
295 extern bool exact_regions_p(void);
296 extern bool must_regions_p(void);
297 extern bool array_bounds_p(void);
298 extern bool disjunct_regions_p(void);
299 extern bool op_statistics_p(void);
300 extern void reset_op_statistics(void);
301 extern void get_regions_properties(void);
303 extern void region_sc_sort(Psysteme /*sc*/, Pbase /*sorted_base*/);
304 extern Pcontrainte region_constraints_sort(Pcontrainte /*c*/, Pbase /*sorted_base*/, bool /*equality_p*/);
309 extern Psysteme sc_list_variables_rename(Psysteme /*sc*/, list /*l_var*/, list /*l_var_new*/);
311 extern char *func_entity_name(entity /*e*/);
312 extern bool same_common_variables_p(entity /*e1*/, entity /*e2*/);
314 extern bool empty_convex_context_p(transformer /*context*/);
315 extern string region_to_string(effect /*reg*/);
316 extern bool rectangular_region_p(effect /*r*/);
317 extern bool rectangular_must_region_p(entity /*var*/, statement /*s*/);
318 extern effect region_rectangular_hull(effect /*reg*/, bool /*nofield*/);
321 /* debug.c */
322 extern bool region_consistent_p(effect /*reg*/);
323 extern bool regions_consistent_p(list /*l_reg*/);
324 /* interprocedural.c */
325 extern void convex_regions_translation_init(entity /*callee*/, list /*real_args*/, bool /*backward_p*/);
326 extern void convex_regions_translation_end(void);
327 extern void reset_out_summary_regions_list(void);
328 extern void update_out_summary_regions_list(list /*l_out*/);
330 extern list out_regions_from_caller_to_callee(entity /*caller*/, entity /*callee*/);
331 extern void out_regions_from_call_site_to_callee(call /*c*/);
332 extern list in_regions_of_external(entity /*func*/, list /*real_args*/, transformer /*context*/);
333 extern list regions_of_external(entity /*func*/, list /*real_args*/, transformer /*context*/, bool /*proper*/);
334 extern list convex_regions_backward_translation(entity /*func*/, list /*real_args*/, list /*l_reg*/, transformer /*context*/);
335 extern list convex_regions_forward_translation(entity /*callee*/, list /*real_args*/, list /*l_reg*/, transformer /*context*/);
336 extern list regions_backward_translation(entity /*func*/, list /*real_args*/, list /*func_regions*/, transformer /*context*/, bool /*proper*/);
337 extern list c_convex_effects_on_formal_parameter_backward_translation(list /*l_sum_eff*/, expression /*real_arg*/, transformer /*context*/);
338 extern list regions_forward_translation(entity /*func*/, list /*real_args*/, list /*l_reg*/, transformer /*context*/);
339 extern list c_convex_effects_on_actual_parameter_forward_translation(entity /*callee*/, expression /*real_exp*/, entity /*formal_ent*/, list /*l_reg*/, transformer /*context*/);
340 /* prettyprint.c */
341 extern string region_sc_to_string(string /*s*/, Psysteme /*ps*/);
342 extern text text_region(effect /*reg*/);
343 extern void print_region_sc(effect /*r*/);
348 extern text get_text_regions(const string /*module_name*/);
349 extern text get_text_in_regions(const string /*module_name*/);
350 extern text get_text_out_regions(const string /*module_name*/);
351 extern void print_rw_regions(list /*l*/);
352 extern void print_inout_regions(list /*l*/);
353 extern void print_copyinout_regions(list /*l*/);
354 extern void print_private_regions(list /*l*/);
355 extern void print_regions(list /*l*/);
356 extern void print_region(effect /*r*/);
357 extern void print_regions_op_statistics(char */*mod_name*/, int /*regions_type*/);
358 /* binary_operators.c */
359 extern void reset_binary_op_statistics(void);
360 extern void print_umust_statistics(char */*mod_name*/, char */*prefix*/);
361 extern void print_umay_statistics(char */*mod_name*/, char */*prefix*/);
362 extern void print_dsup_statistics(char */*mod_name*/, char */*prefix*/);
363 extern void print_dinf_statistics(char */*mod_name*/, char */*prefix*/);
364 extern list RegionsMayUnion(list /*l1*/, list /*l2*/, bool (* /*union_combinable_p*/)(effect, effect));
365 extern list RegionsMustUnion(list /*l1*/, list /*l2*/, bool (* /*union_combinable_p*/)(effect, effect));
366 extern list RegionsIntersection(list /*l1*/, list /*l2*/, bool (* /*intersection_combinable_p*/)(effect, effect));
367 extern list RegionsEntitiesIntersection(list /*l1*/, list /*l2*/, bool (* /*intersection_combinable_p*/)(effect, effect));
368 extern list RegionsSupDifference(list /*l1*/, list /*l2*/, bool (* /*difference_combinable_p*/)(effect, effect));
369 extern list RegionsInfDifference(list /*l1*/, list /*l2*/, bool (* /*difference_combinable_p*/)(effect, effect));
370 extern list RegionsEntitiesInfDifference(list /*l1*/, list /*l2*/, bool (* /*difference_combinable_p*/)(effect, effect));
371 extern list region_must_union(effect /*r1*/, effect /*r2*/);
372 extern list region_may_union(effect /*r1*/, effect /*r2*/);
373 extern list region_union(effect /*r1*/, effect /*r2*/, bool /*must_p*/);
375 extern bool convex_cells_inclusion_p(cell /*c1*/, descriptor /*d1*/, cell /*c2*/, descriptor /*d2*/, bool */*exact_p*/);
376 extern list region_intersection(effect /*reg1*/, effect /*reg2*/);
377 extern bool convex_cells_intersection_p(cell /*c1*/, descriptor /*d1*/, cell /*c2*/, descriptor /*d2*/, bool */*exact_p*/);
379 extern list region_sup_difference(effect /*reg1*/, effect /*reg2*/);
380 extern list region_inf_difference(effect /*reg1*/, effect /*reg2*/);
381 /* old_projection.c */
382 extern void reset_proj_op_statistics(void);
383 extern void print_proj_op_statistics(char */*mod_name*/, char */*prefix*/);
384 extern entity loop_regions_normalize(list /*l_reg*/, entity /*index*/, range /*l_range*/, bool */*normalized_regions_p*/, bool /*sc_loop_p*/, Psysteme */*psc_loop*/);
385 extern void project_regions_along_loop_index(list /*l_reg*/, entity /*index*/, range /*l_range*/);
386 extern void project_regions_along_variables(list /*l_reg*/, list /*l_var*/);
387 extern void project_regions_along_parameters(list /*l_reg*/, list /*l_param*/);
388 extern void project_regions_with_transformer(list /*l_reg*/, transformer /*trans*/, list /*l_var_not_proj*/);
389 extern void project_regions_with_transformer_inverse(list /*l_reg*/, transformer /*trans*/, list /*l_var_not_proj*/);
390 extern void regions_transformer_apply(list /*l_reg*/, transformer /*trans*/, list /*l_var_not_proj*/, bool /*backward_p*/);
391 extern void regions_remove_phi_variables(list /*l_reg*/);
392 extern list regions_dynamic_elim(list /*l_reg*/);
393 extern void region_remove_phi_variables(effect /*reg*/);
394 extern Psysteme cell_reference_system_remove_psi_variables(reference /*ref*/, Psysteme /*sc*/, bool */*exact_p*/);
395 extern void region_remove_psi_variables(effect /*reg*/);
396 extern Psysteme cell_reference_system_remove_rho_variables(reference /*ref*/, Psysteme /*sc*/, bool */*exact_p*/);
397 extern void region_remove_rho_variables(effect /*reg*/);
399 extern void region_non_exact_projection_along_parameters(effect /*reg*/, list /*l_param*/);
400 extern void region_exact_projection_along_parameters(effect /*reg*/, list /*l_param*/);
402 extern void region_exact_projection_along_variables(effect /*reg*/, list /*l_var*/);
403 extern Psysteme cell_reference_sc_exact_projection_along_variable(reference /*ref*/, Psysteme /*sc*/, entity /*var*/, bool */*exact_p*/);
405 extern bool region_projection_along_index_safe_p(entity /*index*/, range /*l_range*/);
406 extern void region_dynamic_var_elim(effect /*reg*/);
408 extern void region_sc_projection_along_variables_ofl_ctrl(Psysteme */*psc*/, Pvecteur /*pv*/, int /*ofl_ctrl*/);
409 /* eval.c */
410 extern bool convex_cell_reference_preceding_p(reference /*r1*/, descriptor /*d1*/, reference /*r2*/, descriptor /*d2*/, transformer /*current_precondition*/, bool /*strict_p*/, bool */*exact_p*/);
411 extern bool convex_cell_preceding_p(cell /*c1*/, descriptor /*d1*/, cell /*c2*/, descriptor /*d2*/, transformer /*current_precondition*/, bool /*strict_p*/, bool */*exact_p*/);
412 extern void simple_reference_to_convex_reference_conversion(reference /*ref*/, reference */*output_ref*/, descriptor */*output_desc*/);
413 extern void simple_cell_to_convex_cell_conversion(cell /*input_cell*/, cell */*output_cell*/, descriptor */*output_desc*/);
414 extern list eval_convex_cell_with_points_to(cell /*c*/, descriptor /*d*/, list /*ptl*/, bool */*exact_p*/, transformer /*current_precondition*/);
418 /* points_to.c */
420 extern void adapt_phi_n_variable_in_convex_effect(effect /*eff*/, expression /*se*/, entity /*phi_n*/);
422 extern effect substitute_stubs_in_convex_array_region(effect /*eff*/, bool /*backward_p*/, set /*binding*/);
423 #endif /* effects_convex_header_included */
int Value
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)
Definition: eval.c:275
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 *)
Definition: eval.c:191
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 *)
Definition: methods.c:606
list convex_effect_to_constant_path_effects_with_pointer_values(effect)
list regions_read_regions(list)
void regions_end(void)
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)
Definition: eval.c:285
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)
void region_free(effect)
void print_regions(list)
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)
void regions_init(void)
bool disjunct_regions_p(void)
void init_convex_summary_rw_regions(const char *)
Definition: methods.c:583
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 *)
Definition: methods.c:528
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 *)
Definition: eval.c:234
void set_methods_for_convex_rw_pointer_effects(void)
Definition: methods.c:365
bool adapt_convex_effect_cell_to_backward_translation(effect)
points_to.c
void init_convex_rw_regions(const char *)
Definition: methods.c:495
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
Definition: methods.c:235
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)
Definition: debug.c:116
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 *)
Definition: methods.c:560
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)
text text_region(effect)
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)
int base_nb_phi(Pbase)
void simple_reference_to_convex_reference_conversion(reference, reference *, descriptor *)
Definition: eval.c:205
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)
Definition: eval.c:326
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 regions_dup(list)
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
Definition: sc_enumerate.c:307
int base_nb_psi(Pbase)
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
int base_nb_rho(Pbase)
void reset_out_summary_regions_list(void)
void region_exact_projection_along_variable(effect, entity)
void region_translation_statistics_init(bool)
translation.c
Definition: translation.c:162
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)
Definition: methods.c:469
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 *)
Definition: translation.c:212
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
Definition: eval.c:67
list region_may_union(effect, effect)
bool print_source_in_regions(const string)
bool in_out_methods_p(void)
Definition: methods.c:476
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)
Definition: methods.c:358
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)
Definition: translation.c:362
list regions_add_region(list, effect)
void regions_free(list)
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
Definition: vecteur-local.h:89
FI: I do not understand why the type is duplicated at the set level.
Definition: set.c:59
The structure used to build lists in NewGen.
Definition: newgen_list.h:41