PIPS
effects-generic.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/effects-generic/effects-generic-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef effects_generic_header_included
7 #define effects_generic_header_included
8 /* effects_generic-local.h */
9 /*
10 
11  $Id: effects-generic-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 #include "effects.h"
33 
34 
35 
36 /* some string constants for prettyprints...
37  */
38 #define ACTION_UNDEFINED string_undefined
39 #define ACTION_READ "R"
40 #define ACTION_WRITE "W"
41 #define ACTION_IN "IN"
42 #define ACTION_OUT "OUT"
43 #define ACTION_COPYIN "COPYIN"
44 #define ACTION_COPYOUT "COPYOUT"
45 #define ACTION_PRIVATE "PRIVATE"
46 #define ACTION_LIVE_IN "ALIVE (IN)"
47 #define ACTION_LIVE_OUT "ALIVE (OUT)"
48 
49 /* for debug
50 */
51 // functions that can be pointed by effect_consistent_p_func:
52 // effect_consistent_p
53 // region_consistent_p
54 #define pips_debug_effect(level, message, eff) \
55  ifdebug(level) { pips_debug(level, "%s\n", message); \
56  (*effect_consistent_p_func)(eff); \
57  (*effect_prettyprint_func)(eff);}
58 
59 #define pips_debug_effects(level, message, l_eff) \
60  ifdebug(level) { pips_debug(level, "%s\n", message); \
61  generic_print_effects(l_eff);}
62 
63 /* prettyprint function types:
64  */
65 #include "text.h" /* hum... */
66 typedef text (*generic_text_function)(list /* of effect */);
67 typedef void (*generic_prettyprint_function)(list /* of effect */);
69 
70 /* for db_* functions
71  */
72 #define DB_GET_SE(name, NAME) \
73  static statement_effects db_get_##name(const char *module_name) \
74  { \
75  return (statement_effects) \
76  db_get_memory_resource(DBR_##NAME, module_name, true); \
77  }
78 
79 #define DB_GET_LS(name, NAME) \
80  static list db_get_##name(const char *module_name) \
81  { \
82  return effects_to_list( \
83  (effects) db_get_memory_resource(DBR_##NAME, module_name, true)); \
84  }
85 
86 #define DB_GET_EE(name, NAME) \
87  static entity_effects db_get_##name(const char *module_name) \
88  { \
89  return (entity_effects) \
90  db_get_memory_resource(DBR_##NAME, module_name, true); \
91  }
92 
93 #define DB_PUT_SE(name, NAME) \
94  static void db_put_##name( \
95  const char *module_name, statement_effects se) \
96  { \
97  DB_PUT_MEMORY_RESOURCE(DBR_##NAME, module_name, (void*) se); \
98  }
99 
100 #define DB_PUT_LS(name, NAME) \
101  static void db_put_##name(const char *module_name, list l) \
102  { \
103  DB_PUT_MEMORY_RESOURCE(DBR_##NAME, module_name, \
104  (void*) list_to_effects(l)); \
105  }
106 
107 #define DB_PUT_EE(name, NAME) \
108  static void db_put_##name( \
109  const char *module_name, entity_effects ee) \
110  { \
111  DB_PUT_MEMORY_RESOURCE(DBR_##NAME, module_name, (void*) ee); \
112  }
113 
114 #define DB_NOPUT_SE(name) \
115  static void db_put_##name(_UNUSED_ const char *m, statement_effects se) \
116  { \
117  free_statement_effects(se); \
118  }
119 
120 #define DB_NOPUT_LS(name) \
121  static void db_put_##name(_UNUSED_ const char *m, list l) \
122  { \
123  gen_full_free_list(l); \
124  }
125 
126 #define DB_NOPUT_EE(name) \
127  static void db_put_##name(_UNUSED_ const char *m, entity_effects ee) \
128  { \
129  free_entity_effects(se); \
130  }
131 
132 #define DB_GETPUT_SE(name, NAME) DB_GET_SE(name, NAME) DB_PUT_SE(name, NAME)
133 #define DB_GETNOPUT_SE(name, NAME) DB_GET_SE(name, NAME) DB_NOPUT_SE(name)
134 #define DB_GETPUT_LS(name, NAME) DB_GET_LS(name, NAME) DB_PUT_LS(name, NAME)
135 #define DB_GETNOPUT_LS(name, NAME) DB_GET_LS(name, NAME) DB_NOPUT_LS(name)
136 #define DB_GETPUT_EE(name, NAME) DB_GET_EE(name, NAME) DB_PUT_EE(name, NAME)
137 #define DB_GETNOPUT_EE(name, NAME) DB_GET_EE(name, NAME) DB_NOPUT_EE(name)
138 
141 
143 
144 /* end of effects-generic-local.h
145  */
146 /* cproto-generated files */
147 /* proper_effects_engine.c */
148 extern void set_contracted_proper_effects(bool /*b*/);
153 extern list generic_p_proper_effect_of_reference(reference /*ref*/, effect */*pme*/, bool /*write_p*/, bool /*allow_partials_on_pme*/);
154 extern list generic_proper_effects_of_reference(reference /*ref*/, bool /*written_p*/);
159 extern list generic_proper_effects_of_complex_address_cast_dereferencing_op(cast /*dc*/, expression /*deref_exp*/, list */*l_pme*/, bool /*write_p*/);
161 extern list generic_proper_effects_of_complex_address_dereferencing_cast_op(list /*args*/, list */*l_pme*/, bool /*write_p*/);
162 extern list new_generic_proper_effects_of_complex_address_conditional_op(list /*args*/, list */*l_pme*/, bool /*write_p*/);
163 extern list old_generic_proper_effects_of_complex_address_conditional_op(list /*args*/, list */*l_pme*/, bool /*write_p*/);
164 extern list generic_proper_effects_of_complex_address_assign_op(list /*args*/, list */*l_pme*/, bool /*write_p*/);
165 extern list generic_proper_effects_of_complex_address_update_op(list /*args*/, list */*l_pme*/, bool /*write_p*/);
166 extern list generic_proper_effects_of_complex_address_expression(expression /*add_exp*/, list */*l_pme*/, int /*write_p*/);
168 extern list generic_proper_effects_of_complex_memory_access_expression(expression /*addexp*/, list */*l_addexp_pme*/, list */*lpme*/, int /*write_p*/);
174 extern bool check_sdfi_effects_p(entity /*func*/, list /*func_sdfi*/);
177 extern list type_to_effects(type /*t*/);
178 extern list recursive_type_to_effects(type /*t*/, set /*ts*/);
179 extern effect make_declaration_effect(entity /*e*/, bool /*written_p*/);
180 extern void proper_effects_of_module_statement(statement /*module_stat*/);
181 extern bool proper_effects_engine(const char */*module_name*/);
182 extern void expression_proper_effects_engine(const char */*module_name*/, statement /*current*/);
183 /* rw_effects_engine.c */
184 extern void set_contracted_rw_effects(bool /*b*/);
185 extern bool summary_rw_effects_engine(const char */*module_name*/);
186 extern void rw_effects_of_module_statement(statement /*module_stat*/);
187 extern bool rw_effects_engine(const char */*module_name*/);
188 /* in_effects_engine.c */
189 extern bool summary_in_effects_engine(const char */*module_name*/);
190 extern bool in_effects_engine(const char */*module_name*/, effects_representation_val /*representation*/);
191 /* out_effects_engine.c */
193 extern void update_out_summary_effects_list(list /*l_out*/);
195 extern bool summary_out_effects_engine(const char */*module_name*/);
196 extern bool out_effects_engine(const char */*module_name*/, effects_representation_val /*representation*/);
197 /* mappings.c */
199 extern void reset_proper_references(void);
203 extern void init_proper_references(void);
204 extern void close_proper_references(void);
205 extern void store_proper_references(statement /*k*/, effects /*v*/);
206 extern void update_proper_references(statement /*k*/, effects /*v*/);
212 extern void reset_cumulated_references(void);
216 extern void init_cumulated_references(void);
217 extern void close_cumulated_references(void);
218 extern void store_cumulated_references(statement /*k*/, effects /*v*/);
238 extern void reset_proper_rw_effects(void);
242 extern void init_proper_rw_effects(void);
243 extern void close_proper_rw_effects(void);
244 extern void store_proper_rw_effects(statement /*k*/, effects /*v*/);
245 extern void update_proper_rw_effects(statement /*k*/, effects /*v*/);
251 extern void reset_rw_pointer_effects(void);
255 extern void init_rw_pointer_effects(void);
256 extern void close_rw_pointer_effects(void);
257 extern void store_rw_pointer_effects(statement /*k*/, effects /*v*/);
258 extern void update_rw_pointer_effects(statement /*k*/, effects /*v*/);
276 extern bool rw_effects_undefined_p(void);
277 extern void reset_rw_effects(void);
278 extern void error_reset_rw_effects(void);
281 extern void init_rw_effects(void);
282 extern void close_rw_effects(void);
283 extern void store_rw_effects(statement /*k*/, effects /*v*/);
284 extern void update_rw_effects(statement /*k*/, effects /*v*/);
287 extern bool bound_rw_effects_p(statement /*k*/);
288 extern void store_or_update_rw_effects(statement /*k*/, effects /*v*/);
290 extern void reset_invariant_rw_effects(void);
294 extern void init_invariant_rw_effects(void);
295 extern void close_invariant_rw_effects(void);
296 extern void store_invariant_rw_effects(statement /*k*/, effects /*v*/);
303 extern void reset_cumulated_rw_effects(void);
307 extern void init_cumulated_rw_effects(void);
308 extern void close_cumulated_rw_effects(void);
309 extern void store_cumulated_rw_effects(statement /*k*/, effects /*v*/);
316 extern void reset_expr_prw_effects(void);
320 extern void init_expr_prw_effects(void);
321 extern void close_expr_prw_effects(void);
322 extern void store_expr_prw_effects(expression /*k*/, effects /*v*/);
323 extern void update_expr_prw_effects(expression /*k*/, effects /*v*/);
328 extern bool in_effects_undefined_p(void);
329 extern void reset_in_effects(void);
330 extern void error_reset_in_effects(void);
333 extern void init_in_effects(void);
334 extern void close_in_effects(void);
335 extern void store_in_effects(statement /*k*/, effects /*v*/);
336 extern void update_in_effects(statement /*k*/, effects /*v*/);
339 extern bool bound_in_effects_p(statement /*k*/);
340 extern void store_or_update_in_effects(statement /*k*/, effects /*v*/);
342 extern void reset_cumulated_in_effects(void);
346 extern void init_cumulated_in_effects(void);
347 extern void close_cumulated_in_effects(void);
348 extern void store_cumulated_in_effects(statement /*k*/, effects /*v*/);
355 extern void reset_invariant_in_effects(void);
359 extern void init_invariant_in_effects(void);
360 extern void close_invariant_in_effects(void);
361 extern void store_invariant_in_effects(statement /*k*/, effects /*v*/);
367 extern bool out_effects_undefined_p(void);
368 extern void reset_out_effects(void);
369 extern void error_reset_out_effects(void);
372 extern void init_out_effects(void);
373 extern void close_out_effects(void);
374 extern void store_out_effects(statement /*k*/, effects /*v*/);
375 extern void update_out_effects(statement /*k*/, effects /*v*/);
378 extern bool bound_out_effects_p(statement /*k*/);
380 extern bool live_in_paths_undefined_p(void);
381 extern void reset_live_in_paths(void);
382 extern void error_reset_live_in_paths(void);
385 extern void init_live_in_paths(void);
386 extern void close_live_in_paths(void);
387 extern void store_live_in_paths(statement /*k*/, effects /*v*/);
388 extern void update_live_in_paths(statement /*k*/, effects /*v*/);
391 extern bool bound_live_in_paths_p(statement /*k*/);
393 extern bool live_out_paths_undefined_p(void);
394 extern void reset_live_out_paths(void);
395 extern void error_reset_live_out_paths(void);
398 extern void init_live_out_paths(void);
399 extern void close_live_out_paths(void);
400 extern void store_live_out_paths(statement /*k*/, effects /*v*/);
401 extern void update_live_out_paths(statement /*k*/, effects /*v*/);
407 extern void reset_live_out_regions(void);
411 extern void init_live_out_regions(void);
412 extern void close_live_out_regions(void);
413 extern void store_live_out_regions(statement /*k*/, effects /*v*/);
414 extern void update_live_out_regions(statement /*k*/, effects /*v*/);
436 extern void store_proper_rw_effects_list(statement /*s*/, list /*l_eff*/);
437 extern void update_proper_rw_effects_list(statement /*s*/, list /*l_eff*/);
439 extern void store_rw_pointer_effects_list(statement /*s*/, list /*l_eff*/);
440 extern void update_rw_pointer_effects_list(statement /*s*/, list /*l_eff*/);
442 extern void store_rw_effects_list(statement /*s*/, list /*l_eff*/);
443 extern void update_rw_effects_list(statement /*s*/, list /*l_eff*/);
448 extern void store_invariant_rw_effects_list(statement /*s*/, list /*l_eff*/);
449 extern void update_invariant_rw_effects_list(statement /*s*/, list /*l_eff*/);
451 extern void store_cumulated_rw_effects_list(statement /*s*/, list /*l_eff*/);
452 extern void update_cumulated_rw_effects_list(statement /*s*/, list /*l_eff*/);
454 extern void store_in_effects_list(statement /*s*/, list /*l_eff*/);
455 extern void update_in_effects_list(statement /*s*/, list /*l_eff*/);
457 extern void store_cumulated_in_effects_list(statement /*s*/, list /*l_eff*/);
458 extern void update_cummulated_in_effects_list(statement /*s*/, list /*l_eff*/);
460 extern void store_invariant_in_effects_list(statement /*s*/, list /*l_eff*/);
461 extern void update_invariant_in_effects_list(statement /*s*/, list /*l_eff*/);
463 extern void store_out_effects_list(statement /*s*/, list /*l_eff*/);
464 extern void update_out_effects_list(statement /*s*/, list /*l_eff*/);
466 extern void store_live_in_paths_list(statement /*s*/, list /*l_paths*/);
467 extern void update_live_in_paths_list(statement /*s*/, list /*l_paths*/);
469 extern void store_live_out_paths_list(statement /*s*/, list /*l_paths*/);
470 extern void update_live_out_paths_list(statement /*s*/, list /*l_paths*/);
472 extern void store_live_out_regions_list(statement /*s*/, list /*l*/);
473 extern void update_live_out_regions_list(statement /*s*/, list /*l*/);
475 extern void store_statement_local_regions(statement /*s*/, list /*t*/);
478 extern void store_statement_inv_regions(statement /*s*/, list /*t*/);
479 extern void update_statement_inv_regions(statement /*s*/, list /*t*/);
483 extern void store_statement_in_regions(statement /*s*/, list /*t*/);
490 extern void store_statement_out_regions(statement /*s*/, list /*t*/);
491 /* unary_operators.c */
492 extern void effects_map(list /*l_eff*/, void (* /*apply*/)(effect));
493 extern list effects_to_effects_map(list /*l_eff*/, effect (* /*pure_apply*/)(effect));
494 extern void effects_filter_map(list /*l_eff*/, bool (* /*filter*/)(effect), void (* /*apply*/)(effect));
495 extern list effects_to_effects_filter_map(list /*l_eff*/, bool (* /*filter*/)(effect), effect (* /*pure_apply*/)(effect));
496 extern list effects_add_effect(list /*l_eff*/, effect /*eff*/);
497 extern list effects_read_effects(list /*l_eff*/);
498 extern list effects_store_effects(list /*l_eff*/);
499 extern list effects_write_effects(list /*l_eff*/);
500 extern bool effects_write_at_least_once_p(list /*l_eff*/);
503 extern effect effect_nop(effect /*eff*/);
504 extern list effects_nop(list /*l_eff*/);
505 extern void effect_to_may_effect(effect /*eff*/);
506 extern void effects_to_may_effects(list /*l_eff*/);
507 extern void effect_to_must_effect(effect /*eff*/);
508 extern void effects_to_must_effects(list /*l_eff*/);
509 extern void effect_to_write_effect(effect /*eff*/);
510 extern void effects_to_write_effects(list /*l_eff*/);
511 extern void effect_to_read_effect(effect /*eff*/);
512 extern void effects_to_read_effects(list /*l_eff*/);
513 extern void array_effects_to_may_effects(list /*l_eff*/);
514 extern list effects_dup_without_variables(list /*l_eff*/, list /*l_var*/);
515 extern list effects_dup(list /*l_eff*/);
516 extern void effect_free(effect /*eff*/);
517 extern void effects_free(list /*l_eff*/);
520 extern list effects_to_nil_list(effect /*eff1*/, effect /*eff2*/);
521 extern list effect_to_list(effect /*eff*/);
527 extern list effects_composition_with_preconditions_nop(list /*l_eff*/, transformer /*trans*/, bool /*b*/);
529 extern list effects_undefined_union_over_range(list /*l_eff*/, entity /*index*/, range /*r*/, descriptor /*d*/);
530 extern list effects_union_over_range_nop(list /*l_eff*/, entity /*index*/, range /*r*/, descriptor /*d*/);
531 extern list effects_undefined_descriptors_variable_change(list /*l_eff*/, entity /*orig_ent*/, entity /*new_ent*/);
532 extern list effects_descriptors_variable_change_nop(list /*l_eff*/, entity /*orig_ent*/, entity /*new_ent*/);
534 extern list effects_undefined_loop_normalize(list /*l_eff*/, entity /*index*/, range /*r*/, entity */*new_index*/, descriptor /*range_descriptor*/, bool /*descriptor_update_p*/);
535 extern list effects_loop_normalize_nop(list /*l_eff*/, entity /*index*/, range /*r*/, entity */*new_index*/, descriptor /*range_descriptor*/, bool /*descriptor_update_p*/);
536 extern list db_get_empty_list(string /*name*/);
538 extern void effect_add_field_dimension(effect /*eff*/, entity /*field*/);
539 extern list filter_effects_with_declaration(list /*l_eff*/, entity /*decl*/);
541 /* binary_operators.c */
542 extern list list_of_effects_generic_binary_op(list /*l1*/, list /*l2*/, bool (* /*r1_r2_combinable_p*/)(effect, effect), list (* /*r1_r2_generic_binary_op*/)(effect, effect, bool, bool, bool *, bool *, list (*)(effect, effect)), list (* /*r1_r2_concrete_binary_op*/)(effect, effect), list (* /*r1_unary_op*/)(effect), list (* /*r2_unary_op*/)(effect));
543 extern list list_of_effects_generic_union_op(list /*l1*/, list /*l2*/, bool (* /*r1_r2_combinable_p*/)(effect, effect), list (* /*r1_r2_concrete_union_op*/)(effect, effect), list (* /*r_unary_op*/)(effect));
544 extern list list_of_effects_generic_intersection_op(list /*l1*/, list /*l2*/, bool (* /*r1_r2_combinable_p*/)(effect, effect), list (* /*r1_r2_concrete_intersection_op*/)(effect, effect));
545 extern list list_of_effects_generic_cells_intersection_op(list /*l1*/, list /*l2*/, bool (* /*r1_r2_combinable_p*/)(effect, effect), list (* /*r1_r2_concrete_cells_intersection_op*/)(effect, effect));
546 extern list list_of_effects_generic_sup_difference_op(list /*l1*/, list /*l2*/, bool (* /*r1_r2_combinable_p*/)(effect, effect), list (* /*r1_r2_concrete_sup_difference_op*/)(effect, effect));
547 extern list list_of_effects_generic_inf_difference_op(list /*l1*/, list /*l2*/, bool (* /*r1_r2_combinable_p*/)(effect, effect), list (* /*r1_r2_concrete_inf_difference_op*/)(effect, effect));
548 extern list list_of_effects_generic_cells_inf_difference_op(list /*l1*/, list /*l2*/, bool (* /*r1_r2_combinable_p*/)(effect, effect), list (* /*r1_r2_concrete_cells_inf_difference_op*/)(effect, effect));
549 extern list proper_to_summary_effects(list /*l_effects*/);
550 extern list proper_effects_contract(list /*l_effects*/);
551 extern list proper_effects_combine(list /*l_eff*/, bool /*scalars_only_p*/);
552 extern bool effects_combinable_p(effect /*eff1*/, effect /*eff2*/);
553 extern bool cells_combinable_p(cell /*c1*/, cell /*c2*/);
554 extern bool effects_scalars_and_same_action_p(effect /*eff1*/, effect /*eff2*/);
555 extern bool effects_same_action_p(effect /*eff1*/, effect /*eff2*/);
556 extern bool effects_same_variable_p(effect /*eff1*/, effect /*eff2*/);
557 extern bool r_r_combinable_p(effect /*eff1*/, effect /*eff2*/);
558 extern bool w_w_combinable_p(effect /*eff1*/, effect /*eff2*/);
559 extern bool r_w_combinable_p(effect /*eff1*/, effect /*eff2*/);
560 extern bool w_r_combinable_p(effect /*eff1*/, effect /*eff2*/);
561 extern list effects_undefined_binary_operator(list /*l1*/, list /*l2*/, bool (* /*effects_combinable_p*/)(effect, effect));
562 extern list effects_entities_intersection(list /*l1*/, list /*l2*/, bool (* /*intersection_combinable_p*/)(effect, effect));
563 extern list effects_entities_inf_difference(list /*l1*/, list /*l2*/, bool (* /*difference_combinable_p*/)(effect, effect));
564 /* utils.c */
597 extern bool normalizable_and_linear_loop_p(entity /*index*/, range /*l_range*/);
599 extern void set_descriptor_range_p(bool /*b*/);
600 extern bool get_descriptor_range_p(void);
603 extern void descriptor_variable_rename(descriptor /*d*/, entity /*old_ent*/, entity /*new_ent*/);
607 extern bool empty_context_test_false(transformer /*context*/);
608 extern void effects_computation_no_init(const char */*module_name*/);
609 extern void effects_computation_no_reset(const char */*module_name*/);
610 extern string vect_debug_entity_name(entity /*e*/);
612 extern bool statement_io_effect_p(statement /*s*/);
615 extern list summary_effects_from_declaration(const char */*module_name*/);
616 extern void dump_cell(cell /*c*/);
617 extern void dump_effect(effect /*e*/);
618 extern void dump_effects(list /*le*/);
619 extern bool effects_reference_sharing_p(list /*el*/, bool /*persistant_p*/);
620 extern effect make_some_anywhere_effect(action /*act*/, entity /*anywhere_ent*/);
627 extern list clean_anywhere_effects(list /*l_eff*/);
629 extern bool null_pointer_value_effect_p(effect /*eff*/);
633 extern list generic_effect_generate_all_accessible_paths_effects_with_level(effect /*eff*/, type /*eff_type*/, tag /*act*/, bool /*add_eff*/, int /*level*/, bool /*pointers_only*/);
635 extern bool r_effect_pointer_type_p(effect /*eff*/, list /*l_ind*/, type /*ct*/);
636 extern bool effect_pointer_type_p(effect /*eff*/);
638 extern bool regions_weakly_consistent_p(list /*rl*/);
641 extern bool abstract_effect_in_effect_list_p(action /*ea*/, type /*et*/, list /*el*/);
642 extern list generic_effects_store_update(list /*l_eff*/, statement /*s*/, bool /*backward_p*/);
646 extern bool find_write_effect_on_entity(statement /*s*/, entity /*e*/);
647 /* methods.c */
650 extern void set_constant_paths_p(bool /*b*/);
651 extern bool get_constant_paths_p(void);
653 extern void (*effects_computation_init_func)(const char *);
654 extern void (*effects_computation_reset_func)(const char *);
655 extern effect (*effect_dup_func)(effect eff);
656 extern void (*effect_free_func)(effect eff);
661 extern effect (*effect_union_op)(effect, effect);
662 extern list (*effects_union_op)(list, list, bool (*eff1_eff2_combinable_p)(effect, effect));
663 extern list (*effects_test_union_op)(list, list, bool (*eff1_eff2_combinable_p)(effect, effect));
664 extern list (*effects_intersection_op)(list, list, bool (*eff1_eff2_combinable_p)(effect, effect));
665 extern list (*effects_sup_difference_op)(list, list, bool (*eff1_eff2_combinable_p)(effect, effect));
666 extern list (*effects_inf_difference_op)(list, list, bool (*eff1_eff2_combinable_p)(effect, effect));
674 extern void (*loop_range_in_effect_func)(loop, list *, list *, bool (*)(effect, effect), entity *, range);
679 extern void (*effects_translation_end_func)(void);
692 extern statement_effects (*db_get_proper_rw_effects_func)(const char *);
693 extern void (*db_put_proper_rw_effects_func)(const char *, statement_effects);
695 extern void (*db_put_invariant_rw_effects_func)(const char *, statement_effects);
696 extern statement_effects (*db_get_rw_effects_func)(const char *);
697 extern void (*db_put_rw_effects_func)(const char *, statement_effects);
698 extern list (*db_get_summary_rw_effects_func)(const char *);
699 extern void (*db_put_summary_rw_effects_func)(const char *, list);
700 extern statement_effects (*db_get_in_effects_func)(const char *);
701 extern void (*db_put_in_effects_func)(const char *, statement_effects);
703 extern void (*db_put_cumulated_in_effects_func)(const char *, statement_effects);
705 extern void (*db_put_invariant_in_effects_func)(const char *, statement_effects);
706 extern list (*db_get_summary_in_effects_func)(const char *);
707 extern void (*db_put_summary_in_effects_func)(const char *, list);
708 extern list (*db_get_summary_out_effects_func)(const char *);
709 extern void (*db_put_summary_out_effects_func)(const char *, list);
710 extern statement_effects (*db_get_out_effects_func)(const char *);
711 extern void (*db_put_out_effects_func)(const char *, statement_effects);
712 extern statement_effects (*db_get_live_in_paths_func)(const char *);
713 extern void (*db_put_live_in_paths_func)(const char *, statement_effects);
714 extern statement_effects (*db_get_live_out_paths_func)(const char *);
715 extern void (*db_put_live_out_paths_func)(const char *, statement_effects);
716 extern list (*db_get_live_in_summary_paths_func)(const char *);
717 extern void (*db_put_live_in_summary_paths_func)(const char *, list);
718 extern list (*db_get_live_out_summary_paths_func)(const char *);
719 extern void (*db_put_live_out_summary_paths_func)(const char *, list);
721 extern void (*db_put_useful_variables_effects_func)(const char *, entity_effects);
722 extern void (*effects_prettyprint_func)(list);
723 extern void (*effect_prettyprint_func)(effect);
724 extern text (*effects_to_text_func)(list);
729 /* prettyprint.c */
730 extern void set_action_interpretation(string /*r*/, string /*w*/);
731 extern void reset_action_interpretation(void);
732 extern string action_interpretation(int tag);
733 extern void set_is_user_view_p(bool /*user_view_p*/);
734 extern void set_prettyprint_with_attachments(bool /*attachments_p*/);
735 extern void reset_generic_prettyprints(void);
736 extern void set_a_generic_prettyprint(string /*resource_name*/, bool /*is_a_summary*/, gen_chunk */*res*/, generic_text_function /*tf*/, generic_prettyprint_function /*tp*/, generic_attachment_function /*ta*/);
737 extern void add_a_generic_prettyprint(string /*resource_name*/, bool /*is_a_summary*/, generic_text_function /*tf*/, generic_prettyprint_function /*tp*/, generic_attachment_function /*ta*/);
738 extern bool print_source_or_code_effects_engine(const char */*module_name*/, string /*file_suffix*/, bool /*use_values*/);
739 extern text get_any_effect_type_text(const char */*module_name*/, string /*resource_name*/, string /*summary_resource_name*/, bool /*give_code_p*/);
740 extern bool print_source_or_code_with_any_effects_engine(const char */*module_name*/, string /*resource_name*/, string /*summary_resource_name*/, string /*file_suffix*/, bool /*use_values*/);
741 extern void generic_print_effects(list /*pc*/);
742 /* intrinsics.c */
747 extern void add_range_information_to_cells(list /*cl*/, expression /*e*/);
750 /* interprocedural.c */
751 extern list generic_fortran_effects_backward_translation(entity /*callee*/, list /*real_args*/, list /*l_sum_eff*/, transformer /*context*/);
753 extern list generic_c_effects_backward_translation(entity /*callee*/, list /*real_args*/, list /*l_sum_eff*/, transformer /*context*/);
754 extern list generic_c_effects_forward_translation(entity /*callee*/, list /*real_args*/, list /*l_eff*/, transformer /*context*/);
755 extern list generic_effects_backward_translation(entity /*callee*/, list /*real_args*/, list /*l_sum_eff*/, transformer /*context*/);
756 extern list generic_effects_forward_translation(entity /*callee*/, list /*real_args*/, list /*l_eff*/, transformer /*context*/);
757 extern void effects_translate_fields_compilation_unit(list /*l_eff*/, string /*source_cu_name*/, string /*target_cu_name*/);
758 /* eval.c */
759 extern int effects_statement_line_number(void);
760 extern list generic_reference_to_points_to_matching_list(reference /*input_ref*/, descriptor /*input_desc*/, size_t */*p_current_max_path_length*/, bool */*exact_p*/, transformer /*current_precondition*/, list /*ptl*/, void (* /*cell_reference_conversion_func*/)(reference, reference *, descriptor *), bool (* /*cell_reference_preceding_p_func*/)(reference, descriptor, reference, descriptor, transformer, bool, bool *));
761 extern list generic_eval_cell_with_points_to(cell /*input_cell*/, descriptor /*input_desc*/, list /*ptl*/, bool */*exact_p*/, transformer /*current_precondition*/, bool (* /*cell_reference_preceding_p_func*/)(reference, descriptor, reference, descriptor, transformer, bool, bool *), void (* /*cell_reference_with_address_of_cell_reference_translation_func*/)(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *), void (* /*cell_reference_conversion_func*/)(reference, reference *, descriptor *));
762 extern list generic_effect_find_equivalent_simple_pointer_values(effect /*eff*/, list /*l_in*/, cell_relation */*exact_aliased_pv*/, list */*l_in_remnants*/, bool (* /*cells_intersection_p_func*/)(cell, descriptor, cell, descriptor, bool *), bool (* /*cells_inclusion_p_func*/)(cell, descriptor, cell, descriptor, bool *), void (* /*simple_cell_conversion_func*/)(cell, cell *, descriptor *));
763 extern list generic_effect_find_aliases_with_simple_pointer_values(effect /*eff*/, list /*l_pv*/, bool */*exact_p*/, transformer /*current_precondition*/, bool (* /*cell_preceding_p_func*/)(cell, descriptor, cell, descriptor, transformer, bool, bool *), void (* /*cell_with_address_of_cell_translation_func*/)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), void (* /*cell_with_value_of_cell_translation_func*/)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), bool (* /*cells_intersection_p_func*/)(cell, descriptor, cell, descriptor, bool *), bool (* /*cells_inclusion_p_func*/)(cell, descriptor, cell, descriptor, bool *), void (* /*simple_cell_conversion_func*/)(cell, cell *, descriptor *));
764 /* liveness_analysis_engine.c */
765 extern bool live_in_summary_paths_engine(const char */*module_name*/);
766 extern bool live_out_summary_paths_engine(const char */*module_name*/);
767 extern bool live_paths_engine(const char */*module_name*/, effects_representation_val /*representation*/);
768 extern bool live_out_region_engine(const char */*module_name*/, effects_representation_val /*representation*/);
769 /* points_to.c */
773 extern void effect_backward_translation_error(entity /*callee*/, effect /*eff*/);
774 extern list backward_translation_of_points_to_formal_context_effect(entity /*callee*/, list /*real_args*/, effect /*eff*/, set /*binding*/);
777 extern list cells_to_read_or_write_effects(list /*cl*/, bool /*write_p*/);
778 extern list cells_to_write_effects(list /*cl*/);
779 extern list cells_to_read_effects(list /*cl*/);
780 #endif /* effects_generic_header_included */
struct _newgen_struct_entity_ * entity
Definition: abc_private.h:14
struct _newgen_struct_expression_ * expression
Definition: alias_private.h:21
struct _newgen_struct_statement_ * statement
Definition: cloning.h:21
struct _newgen_struct_reference_ * reference
Definition: compsec.h:14
struct _newgen_struct_action_ * action
Definition: compsec.h:21
struct _newgen_struct_effect_ * effect
Definition: dg.h:21
effects_representation_val
void update_invariant_rw_pointer_effects(statement, effects)
void free_effects_private_current_context_stack(void)
void update_proper_rw_pointer_effects_list(statement, list)
void store_live_out_regions(statement, effects)
void update_rw_pointer_effects(statement, effects)
list make_anywhere_read_write_memory_effects(void)
void set_invariant_in_effects(statement_effects)
list effects_undefined_composition_with_preconditions(list, transformer)
void update_out_summary_effects_list(list)
effects delete_cumulated_references(statement)
void close_cumulated_rw_effects(void)
void store_proper_rw_effects(statement, effects)
void set_cumulated_in_effects(statement_effects)
transformer load_undefined_transformer(statement)
void init_live_out_regions(void)
void effects_to_write_effects(list)
void update_useful_variables_effects(entity, effects)
transformer(* load_transformer_func)(statement)
effect(* effect_union_op)(effect, effect)
bool bound_out_effects_p(statement)
bool bound_invariant_rw_pointer_effects_p(statement)
effects load_out_effects(statement)
void reset_live_out_regions(void)
list(* effects_sup_difference_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
list load_statement_proper_regions(statement)
list list_of_effects_generic_sup_difference_op(list, list, bool(*)(effect, effect), list(*)(effect, effect))
void(* db_put_invariant_in_effects_func)(const char *, statement_effects)
void store_or_update_out_effects(statement, effects)
list effects_to_effects_map(list, effect(*)(effect))
void set_live_in_paths(statement_effects)
list effects_store_effects(list)
void init_cumulated_rw_effects(void)
void update_statement_inv_in_regions(statement, list)
void reset_useful_variables_effects(void)
void update_proper_references(statement, effects)
void error_reset_cumulated_rw_effects(void)
effects delete_rw_effects(statement)
list generic_proper_effects_of_complex_address_expression(expression, list *, int)
list(* fortran_effects_backward_translation_op)(entity, list, list, transformer)
void store_or_update_invariant_rw_pointer_effects(statement, effects)
bool effects_private_current_context_empty_p(void)
void error_reset_out_effects(void)
list load_invariant_rw_effects_list(statement)
statement_effects(* db_get_invariant_in_effects_func)(const char *)
void set_rw_effects(statement_effects)
void reset_invariant_in_effects(void)
void error_reset_effects_private_current_stmt_stack(void)
void store_in_effects(statement, effects)
void error_reset_in_effects(void)
void close_invariant_rw_pointer_effects(void)
void set_is_user_view_p(bool)
bool effects_private_current_stmt_empty_p(void)
effects load_expr_prw_effects(expression)
void set_live_out_regions(statement_effects)
void close_live_out_paths(void)
list generic_eval_cell_with_points_to(cell, descriptor, list, bool *, transformer, bool(*)(reference, descriptor, reference, descriptor, transformer, bool, bool *), void(*)(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *), void(*)(reference, reference *, descriptor *))
Definition: eval.c:361
void(* db_put_summary_in_effects_func)(const char *, list)
void store_invariant_rw_effects(statement, effects)
void update_statement_local_regions(statement, list)
void proper_effects_error_handler(void)
bool invariant_rw_effects_undefined_p(void)
bool effect_pointer_type_p(effect)
void(* db_put_in_effects_func)(const char *, statement_effects)
void store_rw_pointer_effects(statement, effects)
effects load_cumulated_references(statement)
persistant_expression_to_effects get_expr_prw_effects(void)
list effect_to_may_effect_list(effect)
void effect_to_must_effect(effect)
void reset_proper_rw_pointer_effects(void)
descriptor effects_undefined_vector_to_descriptor(Pvecteur)
effects delete_invariant_rw_pointer_effects(statement)
list generic_proper_effects_of_complex_address_dereferencing_cast_op(list, list *, bool)
list effects_undefined_union_over_range(list, entity, range, descriptor)
statement_effects get_cumulated_references(void)
void effects_to_may_effects(list)
list old_generic_proper_effects_of_complex_address_conditional_op(list, list *, bool)
void set_proper_references(statement_effects)
string action_interpretation(int tag)
void update_live_out_regions_list(statement, list)
void update_invariant_rw_effects(statement, effects)
list generic_proper_effects_of_address_expression(expression, int)
effect make_undefined_pointer_value_effect(action)
bool invariant_in_effects_undefined_p(void)
list(* effect_to_constant_path_effects_func)(effect)
list list_of_effects_generic_union_op(list, list, bool(*)(effect, effect), list(*)(effect, effect), list(*)(effect))
void store_or_update_in_effects(statement, effects)
bool live_out_summary_paths_engine(const char *)
void update_in_effects(statement, effects)
void close_in_effects(void)
int effects_private_current_stmt_size(void)
void close_live_out_regions(void)
statement effects_private_current_stmt_nth(int)
bool bound_rw_pointer_effects_p(statement)
list effects_read_effects_dup(list)
effect make_anywhere_effect(action)
void error_reset_invariant_rw_effects(void)
void error_reset_cumulated_in_effects(void)
void store_or_update_rw_effects(statement, effects)
void dump_cell(cell)
transformer effects_private_current_context_head(void)
bool(* empty_context_test)(transformer)
void dump_effect(effect)
effects delete_in_effects(statement)
void store_invariant_rw_pointer_effects_list(statement, list)
list generic_c_effects_forward_translation(entity, list, list, transformer)
void error_reset_cumulated_references(void)
bool live_out_region_engine(const char *, effects_representation_val)
list(* effects_intersection_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
effects delete_invariant_rw_effects(statement)
void reset_live_out_paths(void)
list generic_proper_effects_of_complex_address_update_op(list, list *, bool)
void init_out_effects(void)
transformer(* load_completed_transformer_func)(statement)
bool live_in_summary_paths_engine(const char *)
liveness_analysis_engine.c
void make_effects_private_current_context_stack(void)
list effects_descriptors_variable_change_nop(list, entity, entity)
effect effect_nop(effect)
void set_contracted_rw_effects(bool)
rw_effects_engine.c
void init_cumulated_in_effects(void)
void error_reset_proper_rw_effects(void)
void reset_cumulated_references(void)
list(* c_effects_on_formal_parameter_backward_translation_func)(list, expression, transformer)
list load_out_effects_list(statement)
void init_cumulated_references(void)
bool useful_variables_effects_undefined_p(void)
void close_out_effects(void)
void store_live_out_paths(statement, effects)
list load_live_out_paths_list(statement)
void effect_add_dereferencing_dimension(effect)
list effects_lhs_expression_to_sinks(expression)
Returns a list of cells corresponding to the value,i.e.
Definition: points_to.c:369
void store_or_update_expr_prw_effects(expression, effects)
void close_cumulated_references(void)
transformer(* load_context_func)(statement)
bool proper_rw_effects_undefined_p(void)
void effect_to_write_effect(effect)
void reset_out_summary_effects_list(void)
out_effects_engine.c
void set_effects_private_current_stmt_stack(stack)
effects load_proper_rw_effects(statement)
statement_effects(* db_get_live_in_paths_func)(const char *)
list generic_effects_forward_translation(entity, list, list, transformer)
void store_or_update_proper_rw_pointer_effects(statement, effects)
list effects_composition_with_preconditions_nop(list, transformer, bool)
void close_expr_prw_effects(void)
list generic_proper_effects_of_read_reference(reference)
void make_effects_private_current_stmt_stack(void)
utils.c
bool live_out_paths_undefined_p(void)
effect(* proper_to_summary_effect_func)(effect)
list make_effects_for_array_declarations(list)
list(* effects_union_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
bool bound_invariant_in_effects_p(statement)
string vect_debug_entity_name(entity)
list statement_modified_pointers_effects_list(statement)
void effects_private_current_stmt_rewrite(statement)
statement_effects get_rw_pointer_effects(void)
list generic_proper_effects_of_complex_address_cast_dereferencing_op(cast, expression, list *, bool)
void(* db_put_rw_effects_func)(const char *, statement_effects)
bool in_effects_engine(const char *, effects_representation_val)
bool bound_cumulated_rw_effects_p(statement)
void init_live_out_paths(void)
bool null_pointer_value_effect_p(effect)
list generic_proper_effects_of_range(range)
list generic_proper_effects_of_reference(reference, bool)
void(* effect_descriptor_interprocedural_translation_op)(effect)
list load_live_in_paths_list(statement)
statement_effects get_live_out_regions(void)
list list_of_effects_generic_binary_op(list, list, bool(*)(effect, effect), list(*)(effect, effect, bool, bool, bool *, bool *, list(*)(effect, effect)), list(*)(effect, effect), list(*)(effect), list(*)(effect))
binary_operators.c
list effects_undefined_descriptors_variable_change(list, entity, entity)
void store_in_effects_list(statement, list)
list proper_to_summary_effects(list)
list generic_r_proper_effects_of_call(call)
void(* db_put_useful_variables_effects_func)(const char *, entity_effects)
list db_get_empty_list(string)
void init_invariant_in_effects(void)
void(* effects_translation_end_func)(void)
void store_statement_cumulated_in_regions(statement, list)
list generic_proper_effects_of_complex_address_assign_dereferencing_op(expression, expression, list *, bool)
void store_or_update_cumulated_in_effects(statement, effects)
void(* effects_descriptor_normalize_func)(list)
list effects_to_effects_filter_map(list, bool(*)(effect), effect(*)(effect))
list effects_add_effect(list, effect)
list type_to_effects(type)
list get_out_summary_effects_list(void)
void effect_backward_translation_error(entity, effect)
void update_live_out_paths_list(statement, list)
list load_invariant_in_effects_list(statement)
pointer_info_val get_pointer_info_kind(void)
void descriptor_variable_rename(descriptor, entity, entity)
bool effects_write_at_least_once_p(list)
list effects_read_effects(list)
void reset_cumulated_in_effects(void)
statement_effects get_cumulated_rw_effects(void)
list(* effects_transformer_composition_op)(list, transformer)
effects load_invariant_in_effects(statement)
void(* db_put_invariant_rw_effects_func)(const char *, statement_effects)
list proper_effects_contract(list)
void error_reset_proper_rw_pointer_effects(void)
void store_proper_rw_effects_list(statement, list)
effect make_some_anywhere_effect(action, entity)
effects load_in_effects(statement)
statement_effects(* db_get_invariant_rw_effects_func)(const char *)
list(* effect_to_store_independent_effect_list_func)(effect, bool)
bool(* effect_consistent_p_func)(effect)
bool cumulated_rw_effects_undefined_p(void)
void expression_proper_effects_engine(const char *, statement)
void close_proper_rw_pointer_effects(void)
bool abstract_effect_in_effect_list_p(action, type, list)
effects load_live_out_regions(statement)
void store_cumulated_in_effects(statement, effects)
statement_effects get_proper_rw_pointer_effects(void)
list effect_to_constant_path_effects_with_no_pointer_information(effect)
statement_effects get_proper_references(void)
void array_effects_to_may_effects(list)
void proper_effects_of_module_statement(statement)
void update_invariant_rw_pointer_effects_list(statement, list)
void(* loop_range_in_effect_func)(loop, list *, list *, bool(*)(effect, effect), entity *, range)
void store_or_update_proper_references(statement, effects)
effects load_invariant_rw_pointer_effects(statement)
void reset_action_interpretation(void)
statement_effects(* db_get_live_out_paths_func)(const char *)
void update_proper_rw_effects_list(statement, list)
void close_invariant_rw_effects(void)
void error_reset_expr_prw_effects(void)
void init_live_in_paths(void)
void store_proper_rw_pointer_effects(statement, effects)
bool out_effects_engine(const char *, effects_representation_val)
void store_rw_effects_list(statement, list)
list effects_write_effects_dup(list)
list generic_fortran_effects_backward_translation(entity, list, list, transformer)
interprocedural.c
list list_of_effects_generic_cells_inf_difference_op(list, list, bool(*)(effect, effect), list(*)(effect, effect))
list generic_proper_effects_of_complex_memory_access_expression(expression, list *, list *, int)
void init_invariant_rw_pointer_effects(void)
bool summary_in_effects_engine(const char *)
in_effects_engine.c
void update_invariant_in_effects(statement, effects)
void effects_filter_map(list, bool(*)(effect), void(*)(effect))
void add_range_information_to_cells(list, expression)
list load_statement_inv_regions(statement)
list generic_effect_find_aliases_with_simple_pointer_values(effect, list, bool *, transformer, bool(*)(cell, descriptor, cell, descriptor, transformer, bool, bool *), void(*)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), void(*)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), bool(*)(cell, descriptor, cell, descriptor, bool *), bool(*)(cell, descriptor, cell, descriptor, bool *), void(*)(cell, cell *, descriptor *))
Definition: eval.c:673
void error_reset_live_out_paths(void)
effects load_rw_pointer_effects(statement)
void close_rw_effects(void)
void update_cumulated_rw_effects_list(statement, list)
list generic_proper_effects_of_written_reference(reference)
void store_statement_inv_regions(statement, list)
void close_cumulated_in_effects(void)
void init_useful_variables_effects(void)
bool bound_in_effects_p(statement)
bool in_effects_undefined_p(void)
list load_proper_rw_effects_list(statement)
list cells_to_read_effects(list)
Definition: points_to.c:467
bool bound_cumulated_references_p(statement)
expression count_and_offset_expressions_to_range_expression(expression, expression)
list effects_composition_with_transformer_nop(list, transformer)
void add_a_generic_prettyprint(string, bool, generic_text_function, generic_prettyprint_function, generic_attachment_function)
descriptor(* loop_descriptor_make_func)(loop)
entity_effects get_useful_variables_effects(void)
bool(* cell_preceding_p_func)(cell, descriptor, cell, descriptor, bool, bool *)
void add_precondition_information_to_effects(list)
void set_invariant_rw_pointer_effects(statement_effects)
void store_rw_effects(statement, effects)
void(* effect_free_func)(effect eff)
list load_rw_pointer_effects_list(statement)
bool w_r_combinable_p(effect, effect)
statement_effects get_cumulated_in_effects(void)
void close_live_in_paths(void)
void reset_proper_references(void)
transformer descriptor_to_context(descriptor)
bool bound_proper_rw_effects_p(statement)
effects load_cumulated_in_effects(statement)
list(* effects_local_to_global_translation_op)(list)
statement effects_private_current_stmt_replace(statement)
void update_cumulated_references(statement, effects)
statement_effects get_invariant_rw_pointer_effects(void)
list effects_union_over_range_nop(list, entity, range, descriptor)
effects delete_expr_prw_effects(expression)
transformer transformer_remove_variable_and_dup(transformer, entity)
list generic_proper_effects_of_any_lhs(expression)
void(* attach_effects_decoration_to_text_func)(text)
int effects_private_current_context_size(void)
void init_rw_effects(void)
void store_or_update_rw_pointer_effects(statement, effects)
list(* db_get_summary_in_effects_func)(const char *)
effect(* reference_to_effect_func)(reference, action, bool)
statement_effects(* db_get_out_effects_func)(const char *)
void error_reset_invariant_rw_pointer_effects(void)
void store_or_update_live_in_paths(statement, effects)
expression count_expression_to_range_expression(expression)
statement effects_private_current_stmt_pop(void)
void store_useful_variables_effects(entity, effects)
void error_reset_invariant_in_effects(void)
void update_live_out_paths(statement, effects)
bool expr_prw_effects_undefined_p(void)
bool region_weakly_consistent_p(effect)
list load_invariant_rw_pointer_effects_list(statement)
list proper_effects_combine(list, bool)
void reset_out_effects(void)
void update_in_effects_list(statement, list)
list effects_entities_inf_difference(list, list, bool(*)(effect, effect))
void set_live_out_paths(statement_effects)
transformer effects_private_current_context_nth(int)
void update_live_in_paths(statement, effects)
void effects_map(list, void(*)(effect))
unary_operators.c
descriptor loop_undefined_descriptor_make(loop)
void(* db_put_out_effects_func)(const char *, statement_effects)
effect make_declaration_effect(entity, bool)
bool regions_weakly_consistent_p(list)
void set_proper_rw_pointer_effects(statement_effects)
bool print_source_or_code_effects_engine(const char *, string, bool)
void error_reset_effects_private_current_context_stack(void)
bool get_descriptor_range_p(void)
effect make_anywhere_write_memory_effect(void)
void update_cumulated_rw_effects(statement, effects)
stack get_effects_private_current_stmt_stack(void)
void update_expr_prw_effects(expression, effects)
void effects_computation_no_init(const char *)
void store_invariant_in_effects_list(statement, list)
void set_descriptor_range_p(bool)
void set_useful_variables_effects(entity_effects)
text get_any_effect_type_text(const char *, string, string, bool)
void effects_to_proper_approximation(list)
void store_or_update_cumulated_references(statement, effects)
list cells_to_write_effects(list)
Definition: points_to.c:462
void update_rw_pointer_effects_list(statement, list)
void store_or_update_live_out_paths(statement, effects)
void update_cummulated_in_effects_list(statement, list)
void store_or_update_useful_variables_effects(entity, effects)
void store_live_out_regions_list(statement, list)
bool bound_expr_prw_effects_p(expression)
void update_proper_rw_effects(statement, effects)
statement_effects get_invariant_in_effects(void)
void(* db_put_live_out_paths_func)(const char *, statement_effects)
void reset_proper_rw_effects(void)
void update_cumulated_in_effects(statement, effects)
void free_effects_private_current_stmt_stack(void)
list effect_to_nil_list_and_free(effect)
effects load_useful_variables_effects(entity)
list clean_anywhere_effects(list)
effects delete_cumulated_rw_effects(statement)
void update_live_in_paths_list(statement, list)
bool effects_combinable_p(effect, effect)
list effect_to_nil_list(effect)
bool proper_rw_pointer_effects_undefined_p(void)
void effect_free(effect)
list recursive_type_to_effects(type, set)
statement_effects get_live_in_paths(void)
list generic_effects_store_update(list, statement, bool)
list generic_proper_effects_of_complex_address_address_of_dereferencing_op(expression, list *, bool)
effects delete_invariant_in_effects(statement)
void(* generic_prettyprint_function)(list)
void rw_effects_of_module_statement(statement)
void(* effects_computation_init_func)(const char *)
void init_proper_rw_effects(void)
bool bound_proper_rw_pointer_effects_p(statement)
void set_proper_rw_effects(statement_effects)
list generic_proper_effects_of_derived_reference(reference, bool)
void reset_effects_private_current_stmt_stack(void)
bool cumulated_references_undefined_p(void)
text(* effects_to_text_func)(list)
bool undefined_pointer_value_effect_p(effect)
list(* db_get_summary_out_effects_func)(const char *)
void reset_rw_pointer_effects(void)
void close_rw_pointer_effects(void)
bool normalizable_and_linear_loop_p(entity, range)
void effects_free(list)
entity_effects(* db_get_useful_variables_effects_func)(const char *)
list generic_effects_backward_translation(entity, list, list, transformer)
void(* db_put_live_in_summary_paths_func)(const char *, list)
effects load_proper_references(statement)
list load_in_effects_list(statement)
void store_proper_rw_pointer_effects_list(statement, list)
descriptor descriptor_inequality_add(descriptor, Pvecteur)
bool effects_private_current_context_stack_initialized_p(void)
void effects_private_current_context_rewrite(transformer)
bool live_paths_engine(const char *, effects_representation_val)
bool check_sdfi_effects_p(entity, list)
void set_rw_pointer_effects(statement_effects)
bool effects_scalars_and_same_action_p(effect, effect)
statement_effects(* db_get_cumulated_in_effects_func)(const char *)
void store_out_effects(statement, effects)
bool summary_out_effects_engine(const char *)
bool live_out_regions_undefined_p(void)
void effects_to_must_effects(list)
statement effects_private_current_stmt_head(void)
transformer effects_private_current_context_replace(transformer)
void(* db_put_live_out_summary_paths_func)(const char *, list)
list generic_proper_effects_of_complex_address_assign_op(list, list *, bool)
bool statement_has_a_formal_argument_write_effect_p(statement)
void store_statement_inv_in_regions(statement, list)
list(* effects_test_union_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
list generic_proper_effects_of_c_function_call_argument(expression)
effects delete_out_effects(statement)
list generic_proper_effects_of_subscript(subscript)
void update_rw_effects_list(statement, list)
void set_cumulated_rw_effects(statement_effects)
void set_out_effects(statement_effects)
void error_reset_proper_references(void)
void effects_private_current_stmt_push(statement)
bool bound_rw_effects_p(statement)
void set_cumulated_references(statement_effects)
void store_or_update_invariant_rw_effects(statement, effects)
list effect_to_effects_with_given_tag(effect, tag)
list effects_expression_to_points_to_sinks(expression)
list effects_to_constant_path_effects_with_no_pointer_information(list)
statement_effects get_live_out_paths(void)
void error_reset_rw_effects(void)
void error_reset_live_out_regions(void)
descriptor descriptor_append(descriptor, descriptor)
void(* effects_translation_init_func)(entity, list, bool)
void set_action_interpretation(string, string)
prettyprint.c
bool rw_effects_undefined_p(void)
bool bound_cumulated_in_effects_p(statement)
void set_in_effects(statement_effects)
list generic_effect_find_equivalent_simple_pointer_values(effect, list, cell_relation *, list *, bool(*)(cell, descriptor, cell, descriptor, bool *), bool(*)(cell, descriptor, cell, descriptor, bool *), void(*)(cell, cell *, descriptor *))
find pointer_values in l_in which give (possible or exact) paths equivalent to eff.
Definition: eval.c:506
void store_invariant_rw_pointer_effects(statement, effects)
bool summary_rw_effects_engine(const char *)
list load_cumulated_in_effects_list(statement)
effects delete_proper_references(statement)
void store_or_update_cumulated_rw_effects(statement, effects)
void reset_in_effects(void)
list effects_dup(list)
void close_invariant_in_effects(void)
bool bound_invariant_rw_effects_p(statement)
void effect_to_may_effect(effect)
effect make_anywhere_read_memory_effect(void)
void store_cumulated_rw_effects_list(statement, list)
bool w_w_combinable_p(effect, effect)
effects delete_proper_rw_pointer_effects(statement)
bool rw_pointer_effects_undefined_p(void)
void update_invariant_rw_effects_list(statement, list)
list(* effects_loop_normalize_func)(list, entity, range, entity *, descriptor, bool)
list generic_intermediary_proper_effects_of_reference(reference)
bool rw_effects_engine(const char *)
void reset_generic_prettyprints(void)
void reset_expr_prw_effects(void)
list generic_p_proper_effect_of_reference(reference, effect *, bool, bool)
list filter_effects_with_declaration(list, entity)
void store_statement_local_regions(statement, list)
void update_statement_inv_regions(statement, list)
bool bound_live_out_regions_p(statement)
list load_rw_effects_list(statement)
bool effects_private_current_context_filter(transformer)
list effects_entities_intersection(list, list, bool(*)(effect, effect))
void(* effect_prettyprint_func)(effect)
list effect_intermediary_pointer_paths_effect(effect)
void set_contracted_proper_effects(bool)
end of effects-generic-local.h
list load_cumulated_rw_effects_list(statement)
list backward_translation_of_points_to_formal_context_effect(entity, list, effect, set)
void reset_invariant_rw_pointer_effects(void)
bool live_in_paths_undefined_p(void)
bool get_constant_paths_p(void)
statement_effects get_rw_effects(void)
void(* db_put_summary_out_effects_func)(const char *, list)
void store_or_update_live_out_regions(statement, effects)
list effects_undefined_loop_normalize(list, entity, range, entity *, descriptor, bool)
void error_reset_useful_variables_effects(void)
effects load_cumulated_rw_effects(statement)
void update_rw_effects(statement, effects)
void set_expr_prw_effects(persistant_expression_to_effects)
list effects_undefined_composition_with_transformer(list, transformer)
list(* effects_descriptors_variable_change_func)(list, entity, entity)
effect make_typed_anywhere_effect(action, type)
list(* db_get_live_out_summary_paths_func)(const char *)
list effects_undefined_binary_operator(list, list, bool(*)(effect, effect))
void store_statement_proper_regions(statement, list)
list generic_c_effects_backward_translation(entity, list, list, transformer)
statement_effects get_in_effects(void)
pointer_info_val
@ with_points_to
@ with_no_pointer_info
@ with_pointer_values
void store_cumulated_in_effects_list(statement, list)
effects load_rw_effects(statement)
list cells_to_read_or_write_effects(list, bool)
Definition: points_to.c:377
void close_proper_references(void)
list effects_to_written_scalar_entities(list)
void set_prettyprint_with_attachments(bool)
void init_proper_rw_pointer_effects(void)
descriptor(* vector_to_descriptor_func)(Pvecteur)
list list_of_effects_generic_intersection_op(list, list, bool(*)(effect, effect), list(*)(effect, effect))
list list_of_effects_generic_inf_difference_op(list, list, bool(*)(effect, effect), list(*)(effect, effect))
list new_generic_proper_effects_of_complex_address_conditional_op(list, list *, bool)
void store_live_in_paths_list(statement, list)
void(* db_put_summary_rw_effects_func)(const char *, list)
void store_cumulated_rw_effects(statement, effects)
list effects_write_effects(list)
void(* effect_add_expression_dimension_func)(effect eff, expression exp)
void update_out_effects(statement, effects)
list generic_proper_effects_of_complex_address_conditional_dereferencing_op(expression, expression, expression, list *, bool)
void store_out_effects_list(statement, list)
bool find_write_effect_on_entity(statement, entity)
type simple_effect_reference_type(reference)
list generic_proper_effects_of_expression(expression)
bool invariant_rw_pointer_effects_undefined_p(void)
void store_live_out_paths_list(statement, list)
void effect_to_read_effect(effect)
effects load_live_out_paths(statement)
void init_rw_pointer_effects(void)
void init_invariant_rw_effects(void)
effect make_null_pointer_value_effect(action)
void update_last_reference_subscript(reference, expression)
void store_live_in_paths(statement, effects)
list effects_loop_normalize_nop(list, entity, range, entity *, descriptor, bool)
bool effects_reference_sharing_p(list, bool)
void store_or_update_invariant_in_effects(statement, effects)
effects load_proper_rw_pointer_effects(statement)
list generic_proper_effects_of_application(application)
void reset_invariant_rw_effects(void)
void update_live_out_regions(statement, effects)
bool r_r_combinable_p(effect, effect)
list(* db_get_live_in_summary_paths_func)(const char *)
void update_out_effects_list(statement, list)
effects delete_useful_variables_effects(entity)
void(* effects_computation_reset_func)(const char *)
void(* db_put_cumulated_in_effects_func)(const char *, statement_effects)
void store_invariant_rw_effects_list(statement, list)
statement_effects get_out_effects(void)
void generic_print_effects(list)
list load_statement_out_regions(statement)
bool some_integer_scalar_read_or_write_effects_p(cons *)
bool proper_references_undefined_p(void)
mappings.c
effects delete_proper_rw_effects(statement)
bool bound_proper_references_p(statement)
text(* generic_text_function)(list)
prettyprint function types:
void reset_effects_private_current_context_stack(void)
list load_statement_cumulated_in_regions(statement)
bool empty_context_test_false(transformer)
void store_rw_pointer_effects_list(statement, list)
list(* effects_inf_difference_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
stack get_effects_private_current_context_stack(void)
bool out_effects_undefined_p(void)
bool bound_live_in_paths_p(statement)
effect(* effect_dup_func)(effect eff)
statement_effects(* db_get_in_effects_func)(const char *)
transformer effects_private_current_context_pop(void)
void effects_to_read_effects(list)
transformer load_undefined_context(statement)
list(* fortran_effects_forward_translation_op)(entity, list, list, transformer)
void(* effect_change_ith_dimension_expression_func)(effect eff, expression exp, int i)
list c_actual_argument_to_may_summary_effects(expression, tag)
void generic_effects_reset_all_methods(void)
void store_proper_references(statement, effects)
list load_statement_in_regions(statement)
void store_statement_out_regions(statement, list)
void reset_live_in_paths(void)
void(* db_put_proper_rw_effects_func)(const char *, statement_effects)
void close_useful_variables_effects(void)
bool r_w_combinable_p(effect, effect)
bool bound_live_out_paths_p(statement)
void error_reset_rw_pointer_effects(void)
void set_pointer_info_kind(pointer_info_val)
methods.c
effect make_generic_anywhere_effect(action, reference)
void effects_private_current_context_push(transformer)
list effects_dup_without_variables(list, list)
list list_of_effects_generic_cells_intersection_op(list, list, bool(*)(effect, effect), list(*)(effect, effect))
void dump_effects(list)
list effects_nop(list)
effects delete_live_out_regions(statement)
void effects_computation_no_reset(const char *)
list(* eval_cell_with_points_to_func)(cell, descriptor, list, bool *, transformer)
list pointer_effects_to_constant_path_effects(list)
list generic_effect_generate_all_accessible_paths_effects_with_level(effect, type, tag, bool, int, bool)
list effect_to_list(effect)
void(* generic_attachment_function)(text)
bool proper_effects_engine(const char *)
void set_invariant_rw_effects(statement_effects)
void(* effects_prettyprint_func)(list)
statement_effects(* db_get_proper_rw_effects_func)(const char *)
bool effects_private_current_stmt_filter(statement)
list(* effects_union_over_range_op)(list, entity, range, descriptor)
void effect_add_field_dimension(effect, entity)
void(* db_put_live_in_paths_func)(const char *, statement_effects)
void error_reset_live_in_paths(void)
list effects_lhs_expression_to_sources(expression)
Returns a list of cells corresponding to the possibles values, i.e.
Definition: points_to.c:349
bool statement_io_effect_p(statement)
void set_a_generic_prettyprint(string, bool, gen_chunk *, generic_text_function, generic_prettyprint_function, generic_attachment_function)
effects load_live_in_paths(statement)
void store_cumulated_references(statement, effects)
list effects_to_nil_list(effect, effect)
void init_expr_prw_effects(void)
bool print_source_or_code_with_any_effects_engine(const char *, string, string, string, bool)
void reset_cumulated_rw_effects(void)
list load_proper_rw_pointer_effects_list(statement)
list(* effects_transformer_inverse_composition_op)(list, transformer)
effects load_invariant_rw_effects(statement)
list generic_proper_effects_of_intrinsic(entity, list)
intrinsics.c
list generic_effect_generate_all_accessible_paths_effects(effect, type, tag)
void store_invariant_in_effects(statement, effects)
list load_statement_local_regions(statement)
void reset_rw_effects(void)
void init_in_effects(void)
bool bound_useful_variables_effects_p(entity)
int effects_statement_line_number(void)
eval.c
Definition: eval.c:208
bool cells_combinable_p(cell, cell)
bool effects_same_action_p(effect, effect)
effects delete_live_out_paths(statement)
effects delete_cumulated_in_effects(statement)
void set_constant_paths_p(bool)
void store_expr_prw_effects(expression, effects)
list load_statement_inv_in_regions(statement)
effects_representation_val
@ convex
@ simple
bool effects_private_current_stmt_stack_initialized_p(void)
list(* db_get_summary_rw_effects_func)(const char *)
set safe_user_call_to_points_to_interprocedural_binding_set(entity, list)
list summary_effects_from_declaration(const char *)
bool(* stmt_strongly_feasible_p_func)(statement)
statement_effects get_proper_rw_effects(void)
statement_effects get_invariant_rw_effects(void)
void set_effects_private_current_context_stack(stack)
void effects_translate_fields_compilation_unit(list, string, string)
void update_invariant_in_effects_list(statement, list)
list load_live_out_regions_list(statement)
void update_proper_rw_pointer_effects(statement, effects)
void close_proper_rw_effects(void)
list(* effects_precondition_composition_op)(list, transformer, bool)
effects delete_rw_pointer_effects(statement)
bool r_effect_pointer_type_p(effect, list, type)
statement_effects(* db_get_rw_effects_func)(const char *)
void store_statement_in_regions(statement, list)
bool cumulated_in_effects_undefined_p(void)
list generic_proper_effects_of_expressions(list)
effects delete_live_in_paths(statement)
list generic_reference_to_points_to_matching_list(reference, descriptor, size_t *, bool *, transformer, list, void(*)(reference, reference *, descriptor *), bool(*)(reference, descriptor, reference, descriptor, transformer, bool, bool *))
This function has been outlined from generic_eval_cell_with_points_to() to reduce the size of a funct...
Definition: eval.c:224
void store_or_update_proper_rw_effects(statement, effects)
list effects_expression_to_points_to_sources(expression)
points_to.c
bool effects_same_variable_p(effect, effect)
void init_proper_references(void)
list(* c_effects_on_actual_parameter_forward_translation_func)(entity, expression, entity, list, transformer)
struct _newgen_struct_cell_ * cell
Definition: effects.h:90
struct _newgen_struct_statement_effects_ * statement_effects
Definition: effects.h:210
struct _newgen_struct_descriptor_ * descriptor
Definition: effects.h:114
struct _newgen_struct_entity_effects_ * entity_effects
Definition: effects.h:146
#define loop
Definition: gfc2pips.h:54
struct _newgen_struct_range_ * range
Definition: message.h:21
int bool
we cannot use an enum or stdbool because we need to be compatible with newgen, thus boolean need to h...
Definition: newgen_types.h:78
int tag
TAG.
Definition: newgen_types.h:92
struct cons * list
Definition: newgen_types.h:106
struct _newgen_struct_transformer_ * transformer
Definition: ri.h:431
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
the stack head
Definition: stack.c:62
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
struct _newgen_struct_text_ * text
Definition: text.h:23
A gen_chunk is used to store every object.
Definition: genC.h:58
#define exp
Avoid some warnings from "gcc -Wshadow".
Definition: vasnprintf.c:207
struct Svecteur * Pvecteur