PIPS
effects-simple.h
Go to the documentation of this file.
1 /* Warning! Do not modify this file that is automatically generated! */
2 /* Modify src/Libs/effects-simple/effects-simple-local.h instead, to add your own modifications. */
3 
4 /* header file built by cproto */
5 
6 #ifndef effects_simple_header_included
7 #define effects_simple_header_included
8 /* effects_simple-local.h */
9 /*
10 
11  $Id: effects-simple-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 /* actions interpretation for simple effects prettyprinting */
36 
37 /* copies an effect with no subcript expression */
38 #define make_sdfi_effect(e) \
39  (reference_indices(effect_any_reference(e)) == NIL) ? \
40  make_simple_effect(make_reference(reference_variable(effect_any_reference(e)), NIL),\
41  copy_action(effect_action(e)), \
42  make_approximation(approximation_tag(effect_approximation(e)), UU)) : \
43  make_simple_effect(make_reference(reference_variable(effect_any_reference(e)), NIL), \
44  copy_action(effect_action(e)), \
45  make_approximation(is_approximation_may, UU))
46 /* cproto-generated files */
47 /* binary_operators.c */
48 extern list ReferenceUnion(list /*l1*/, list /*l2*/, bool (* /*union_combinable_p*/)(effect, effect));
49 extern list ReferenceTestUnion(list /*l1*/, list /*l2*/, bool (* /*union_combinable_p*/)(effect, effect));
50 extern list EffectsMayUnion(list /*l1*/, list /*l2*/, bool (* /*union_combinable_p*/)(effect, effect));
51 extern list ProperEffectsMustUnion(list /*l1*/, list /*l2*/, bool (* /*union_combinable_p*/)(effect, effect));
52 extern list EffectsMustUnion(list /*l1*/, list /*l2*/, bool (* /*union_combinable_p*/)(effect, effect));
53 extern list effects_may_union(effect /*eff1*/, effect /*eff2*/);
54 extern list effects_must_union(effect /*eff1*/, effect /*eff2*/);
55 extern effect effect_may_union(effect /*eff1*/, effect /*eff2*/);
56 extern effect effect_must_union(effect /*eff1*/, effect /*eff2*/);
57 extern list EffectsSupDifference(list /*l1*/, list /*l2*/, bool (* /*difference_combinable_p*/)(effect, effect));
58 extern list EffectsInfDifference(list /*l1*/, list /*l2*/, bool (* /*difference_combinable_p*/)(effect, effect));
60 extern bool simple_cells_intersection_p(cell /*c1*/, descriptor /*d1*/, cell /*c2*/, descriptor /*d2*/, bool */*exact_p*/);
61 extern bool simple_cells_inclusion_p(cell /*c1*/, descriptor /*d1*/, cell /*c2*/, descriptor /*d2*/, bool */*exact_p*/);
62 /* interface.c */
63 extern bool cumulated_references(const string /*module_name*/);
64 extern bool proper_references(const string /*module_name*/);
65 extern bool proper_pointer_effects(const string /*module_name*/);
66 extern bool summary_pointer_effects(const string /*module_name*/);
67 extern bool cumulated_pointer_effects(const string /*module_name*/);
68 extern bool cumulated_pointer_effects_with_points_to(const string /*module_name*/);
69 extern bool cumulated_pointer_effects_with_pointer_values(const string /*module_name*/);
70 extern bool proper_effects(const string /*module_name*/);
71 extern bool proper_effects_with_points_to(const string /*module_name*/);
72 extern bool proper_effects_with_pointer_values(const string /*module_name*/);
73 extern bool summary_effects(const string /*module_name*/);
74 extern bool cumulated_effects(const string /*module_name*/);
75 extern bool cumulated_effects_with_points_to(const string /*module_name*/);
76 extern bool cumulated_effects_with_pointer_values(const string /*module_name*/);
77 extern bool in_summary_effects(const string /*module_name*/);
78 extern bool out_summary_effects(const string /*module_name*/);
79 extern bool in_effects(const string /*module_name*/);
80 extern bool out_effects(const string /*module_name*/);
81 extern bool print_code_proper_pointer_effects(const string /*module_name*/);
82 extern bool print_code_cumulated_pointer_effects(const string /*module_name*/);
83 extern bool print_code_proper_effects(const string /*module_name*/);
84 extern bool print_code_cumulated_effects(const string /*module_name*/);
85 extern bool print_code_proper_references(const string /*module_name*/);
86 extern bool print_code_cumulated_references(const string /*module_name*/);
87 extern bool print_code_in_effects(const string /*module_name*/);
88 extern bool print_code_out_effects(const string /*module_name*/);
89 extern bool print_source_proper_effects(const string /*module_name*/);
90 extern bool print_source_cumulated_effects(const string /*module_name*/);
91 extern bool print_source_in_effects(const string /*module_name*/);
92 extern bool print_source_out_effects(const string /*module_name*/);
93 extern bool print_code_as_a_graph_proper_effects(const string /*mod_name*/);
94 extern bool print_code_as_a_graph_cumulated_effects(const string /*mod_name*/);
95 extern text get_text_proper_pointer_effects(const string /*module_name*/);
96 extern text get_text_cumulated_pointer_effects(const string /*module_name*/);
97 extern text get_text_proper_effects(const string /*module_name*/);
98 extern text get_text_cumulated_effects(const string /*module_name*/);
110 extern bool expression_invariant_wrt_effects(expression /*exp*/, list /*el*/);
114 extern bool full_simple_proper_effects(const char */*module_name*/, statement /*current*/);
115 extern bool simple_cumulated_effects(const char */*module_name*/, statement /*current*/);
116 extern bool live_paths(const string /*module_name*/);
117 extern bool live_in_summary_paths(const string /*module_name*/);
118 extern bool live_out_summary_paths(const string /*module_name*/);
119 extern bool print_code_live_in_paths(const string /*module_name*/);
120 extern bool print_code_live_out_paths(const string /*module_name*/);
121 extern bool update_loops_locals(const char */*module_name*/, statement /*module_stat*/);
122 extern bool is_implied_do_index(entity /*e*/, instruction /*ins*/);
124 extern bool print_icfg_with_proper_effects(const string /*module_name*/);
125 extern bool print_icfg_with_cumulated_effects(const string /*module_name*/);
126 extern bool print_icfg_with_loops_proper_effects(const string /*module_name*/);
127 extern bool print_icfg_with_loops_cumulated_effects(const string /*module_name*/);
128 extern bool print_icfg_with_control_proper_effects(const string /*module_name*/);
129 extern bool print_icfg_with_control_cumulated_effects(const string /*module_name*/);
130 extern bool print_icfg_with_filtered_proper_effects(const string /*module_name*/);
131 extern bool print_dvicfg_with_filtered_proper_effects(const string /*module_name*/);
132 /* methods.c */
140 extern void set_methods_for_inout_effects(const char */*module_name*/);
141 extern void set_methods_for_live_paths(const char */*module_name*/);
143 extern void set_methods_for_rw_effects_prettyprint(const char */*module_name*/);
144 extern void set_methods_for_inout_effects_prettyprint(const char */*module_name*/);
145 extern void set_methods_for_live_in_paths_prettyprint(const char */*module_name*/);
146 extern void set_methods_for_live_out_paths_prettyprint(const char */*module_name*/);
147 extern void reset_methods_for_effects_prettyprint(const char */*module_name*/);
148 /* translation.c */
149 extern bool add_points_to_subscript_lists(list */*posl*/, list /*asl*/, list /*isl*/);
150 extern bool simple_cell_reference_with_address_of_cell_reference_translation_fi(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*/);
151 extern void simple_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*/);
152 extern void simple_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*/);
153 extern void simple_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*/);
154 extern void simple_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*/);
155 /* interprocedural.c */
156 extern void simple_effects_translation_init(entity /*callee*/, list /*real_args*/, bool /*backward_p*/);
159 extern list simple_effects_backward_translation(entity /*func*/, list /*real_args*/, list /*l_eff*/, transformer /*context*/);
161 extern list effects_dynamic_elim(list /*l_eff*/);
162 extern list make_unknown_subscript(int /*d*/);
164 extern void check_user_call_site(entity /*func*/, list /*args*/);
165 extern list fortran_summary_to_proper_effects(entity /*func*/, list /*args*/, list /*func_sdfi*/);
168 extern list c_summary_to_proper_effects(entity /*func*/, list /*args*/, list /*func_sdfi*/);
169 extern list summary_to_proper_effects(entity /*func*/, list /*args*/, list /*func_sdfi*/);
170 extern list simple_effects_forward_translation(entity /*callee*/, list /*real_args*/, list /*l_eff*/, transformer /*context*/);
171 extern list c_simple_effects_on_actual_parameter_forward_translation(entity /*callee*/, expression /*real_exp*/, entity /*formal_ent*/, list /*l_eff*/, transformer /*context*/);
172 /* prettyprint.c */
177 extern string effect_to_string(effect /*eff*/);
178 extern list words_effect_generic(effect /*obj*/, bool /*approximation_p*/);
179 extern list words_effect(effect /*obj*/);
181 extern void print_effect(effect /*e*/);
182 extern void print_effects(list /*pc*/);
183 extern void print_memory_effects(list /*pc*/);
184 extern bool print_call_graph_with_proper_effects(const string /*module_name*/);
185 extern bool print_call_graph_with_cumulated_effects(const string /*module_name*/);
186 /* unary_operators.c */
187 extern effect reference_to_simple_effect(reference /*ref*/, action /*act*/, bool /*use_preference_p*/);
189 extern void simple_effect_change_ith_dimension_expression(effect /*eff*/, expression /*exp*/, int /*i*/);
192 extern effect reference_to_reference_effect(reference /*ref*/, action /*act*/, bool /*use_preference_p*/);
193 extern list simple_effects_union_over_range(list /*l_eff*/, entity /*i*/, range /*r*/, descriptor /*d*/);
195 extern cell simple_cell_to_store_independent_cell(cell /*c*/, bool */*changed_p*/);
196 extern list effect_to_store_independent_sdfi_list(effect /*eff*/, bool /*force_may_p*/);
202 /* filter_proper_effects.c */
203 extern bool filter_proper_effects(const char */*module_name*/);
204 /* eval.c */
205 extern bool simple_cell_reference_preceding_p(reference /*r1*/, descriptor /*d1*/, reference /*r2*/, descriptor /*d2*/, transformer /*current_precondition*/, bool /*strict_p*/, bool */*exact_p*/);
206 extern bool simple_cell_preceding_p(cell /*c1*/, descriptor /*d1*/, cell /*c2*/, descriptor /*d2*/, transformer /*current_precondition*/, bool /*strict_p*/, bool */*exact_p*/);
207 extern bool path_preceding_p(effect /*eff1*/, effect /*eff2*/, transformer /*current_precondition*/, bool /*strict_p*/, bool */*exact_p*/);
208 extern void simple_reference_to_simple_reference_conversion(reference /*ref*/, reference */*output_ref*/, descriptor */*output_desc*/);
209 extern void simple_cell_to_simple_cell_conversion(cell /*input_cell*/, cell */*output_cell*/, descriptor */*output_desc*/);
210 extern list eval_simple_cell_with_points_to(cell /*c*/, descriptor /*d*/, list /*ptl*/, bool */*exact_p*/, transformer /*t*/);
214 extern list eval_cell_with_points_to(cell /*c*/, list /*ptl*/, bool */*exact_p*/);
215 #endif /* effects_simple_header_included */
bool print_source_in_effects(const string)
list effects_may_union(effect, effect)
effect reference_to_reference_effect(reference, action, bool)
bool print_icfg_with_proper_effects(const string)
void reset_methods_for_inout_effects(void)
text simple_inout_effects_to_text(list)
bool path_preceding_p(effect, effect, transformer, bool, bool *)
Definition: eval.c:132
void set_methods_for_proper_simple_effects(void)
list eval_cell_with_points_to(cell, list, bool *)
for backward compatibility
Definition: eval.c:352
bool cumulated_effects(const string)
bool proper_pointer_effects(const string)
bool simple_cells_intersection_p(cell, descriptor, cell, descriptor, bool *)
list effect_to_store_independent_sdfi_list(effect, bool)
bool proper_references(const string)
void print_effects(list)
void simple_effect_descriptor_interprocedural_translation(effect)
bool summary_effects(const string)
bool print_code_cumulated_effects(const string)
list EffectsInfDifference(list, list, bool(*)(effect, effect))
list EffectsInfDifference(list l1, l2) input : two lists of effects output : a list of effect,...
bool expression_invariant_wrt_effects(expression, list)
list proper_constant_path_effects_of_lhs_expression(expression)
bool live_in_summary_paths(const string)
void set_methods_for_inout_effects(const char *)
text simple_rw_effects_to_text(list)
prettyprint.c
bool print_call_graph_with_proper_effects(const string)
list EffectsMustUnion(list, list, bool(*)(effect, effect))
list EffectsMustUnion(list l1, list l2, union_combinable_p) input : two lists of effects output : a l...
bool in_effects(const string)
text get_text_proper_effects(const string)
bool live_paths(const string)
list effect_to_constant_path_effects_with_points_to(effect, statement, transformer)
Definition: eval.c:284
list simple_effect_to_constant_path_effects_with_points_to(effect)
Definition: eval.c:343
void simple_effects_descriptor_normalize(list)
void set_methods_for_proper_simple_pointer_effects(void)
bool cumulated_pointer_effects_with_points_to(const string)
list proper_constant_path_effects_of_expression(expression)
void simple_cell_reference_with_address_of_cell_reference_translation(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *)
list c_simple_effects_on_formal_parameter_backward_translation(list, expression, transformer)
bool print_code_as_a_graph_cumulated_effects(const string)
void simple_effect_change_ith_dimension_expression(effect, expression, int)
bool cumulated_pointer_effects_with_pointer_values(const string)
text get_text_proper_pointer_effects(const string)
bool proper_effects_with_pointer_values(const string)
simple_effects_actions_interpretations
Warning! Do not modify this file that is automatically generated!
@ act_inout
@ act_live_out
@ act_rw
@ act_live_in
list proper_constant_path_effects_of_any_expression(expression, bool)
void simple_effect_add_expression_dimension(effect, expression)
bool print_icfg_with_loops_proper_effects(const string)
bool out_effects(const string)
list effect_to_sdfi_list(effect)
bool print_code_proper_pointer_effects(const string)
bool simple_cell_reference_preceding_p(reference, descriptor, reference, descriptor, transformer, bool, bool *)
eval.c
list simple_effect_to_constant_path_effects_with_pointer_values(effect)
Definition: eval.c:206
bool update_loops_locals(const char *, statement)
list proper_effects_of_expression(expression)
bool simple_cumulated_effects(const char *, statement)
bool print_source_out_effects(const string)
bool add_points_to_subscript_lists(list *, list, list)
translation.c
list EffectsMayUnion(list, list, bool(*)(effect, effect))
list EffectsMayUnion(list l1, list l2, union_combinable_p) input : two lists of effects output : a li...
list EffectsSupDifference(list, list, bool(*)(effect, effect))
list EffectsSupDifference(list l1, l2) input : two lists of effects output : a list of effect,...
list effects_dynamic_elim(list)
void simple_effects_translation_init(entity, list, bool)
interprocedural.c
list fortran_summary_to_proper_effects(entity, list, list)
bool print_icfg_with_filtered_proper_effects(const string)
effect effect_may_union(effect, effect)
Preserve store independent information as long as you can.
text get_text_cumulated_effects(const string)
bool cumulated_pointer_effects(const string)
list expression_to_proper_effects(expression)
bool print_code_proper_effects(const string)
bool simple_cells_inclusion_p(cell, descriptor, cell, descriptor, bool *)
bool proper_effects_with_points_to(const string)
bool print_icfg_with_loops_cumulated_effects(const string)
bool print_source_proper_effects(const string)
bool print_code_live_in_paths(const string)
bool proper_effects(const string)
list c_simple_effects_on_actual_parameter_forward_translation(entity, expression, entity, list, transformer)
bool print_code_out_effects(const string)
effect translate_effect_to_sdfi_effect(effect)
bool simple_cell_reference_with_address_of_cell_reference_translation_fi(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *)
bool print_code_in_effects(const string)
bool live_out_summary_paths(const string)
bool print_code_cumulated_pointer_effects(const string)
bool cumulated_effects_with_pointer_values(const string)
list expression_to_proper_constant_path_effects(expression)
bool in_summary_effects(const string)
void set_methods_for_proper_references(void)
methods.c
effect reference_to_simple_effect(reference, action, bool)
unary_operators.c
text get_text_cumulated_pointer_effects(const string)
bool simple_cell_preceding_p(cell, descriptor, cell, descriptor, transformer, bool, bool *)
Definition: eval.c:119
void simple_cell_with_value_of_cell_translation(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *)
void set_default_methods_for_proper_simple_effects(void)
reference simple_reference_to_store_independent_reference(reference, bool *)
cell simple_cell_to_store_independent_cell(cell, bool *)
list effect_to_may_sdfi_list(effect)
bool print_code_cumulated_references(const string)
effect simple_effect_field_to_rank_conversion(effect)
void print_effect(effect)
list statement_to_effects(statement)
void rproper_effects_of_statement(statement)
list summary_to_proper_effects(entity, list, list)
void set_methods_for_live_in_paths_prettyprint(const char *)
void simple_cell_to_simple_cell_conversion(cell, cell *, descriptor *)
Definition: eval.c:154
void set_methods_for_simple_pointer_effects(void)
list proper_effects_of_range(range)
list simple_effects_backward_translation(entity, list, list, transformer)
list get_list_of_variable_to_filter(void)
effect effect_must_union(effect, effect)
computes the must union of two combinable effects
text simple_live_out_paths_to_text(list)
bool print_code_proper_references(const string)
void reset_methods_for_effects_prettyprint(const char *)
list summary_effect_to_proper_effect(call, effect)
string effect_to_string(effect)
bool print_code_as_a_graph_proper_effects(const string)
list ReferenceUnion(list, list, bool(*)(effect, effect))
cproto-generated files
effect simple_effect_dup(effect)
void check_user_call_site(entity, list)
void set_methods_for_cumulated_references(void)
list lhs_expression_to_proper_constant_path_effects(expression)
void simple_cell_reference_with_value_of_cell_reference_translation(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *)
void simple_reference_to_simple_reference_conversion(reference, reference *, descriptor *)
Definition: eval.c:146
bool filter_proper_effects(const char *)
filter_proper_effects.c
bool print_source_cumulated_effects(const string)
void set_methods_for_simple_effects(void)
list words_effect(effect)
text simple_live_in_paths_to_text(list)
list eval_simple_cell_with_points_to(cell, descriptor, list, bool *, transformer)
bool is_implied_do_index(entity, instruction)
bool cumulated_references(const string)
interface.c
bool summary_pointer_effects(const string)
bool print_dvicfg_with_filtered_proper_effects(const string)
void set_methods_for_live_paths(const char *)
bool print_call_graph_with_cumulated_effects(const string)
list c_summary_effect_to_proper_effects(effect, expression)
void rcumulated_effects_of_statement(statement)
list words_effect_generic(effect, bool)
list simple_effects_composition_with_effect_transformer(list, transformer)
list make_unknown_subscript(int)
list c_summary_to_proper_effects(entity, list, list)
list simple_effects_union_over_range(list, entity, range, descriptor)
bool cumulated_effects_with_points_to(const string)
void set_methods_for_live_out_paths_prettyprint(const char *)
list proper_constant_path_effects_of_expression_with_points_to(expression, statement)
list simple_effects_forward_translation(entity, list, list, transformer)
bool print_icfg_with_control_proper_effects(const string)
void set_methods_for_rw_effects_prettyprint(const char *)
bool print_icfg_with_control_cumulated_effects(const string)
bool print_code_live_out_paths(const string)
void simple_effects_translation_end(void)
bool out_summary_effects(const string)
effect proper_to_summary_simple_effect(effect)
FI: the goal is to get rid of array subscripts to handle the arrays atomically.
bool expression_with_side_effect_p(expression)
bool print_icfg_with_cumulated_effects(const string)
list old_effects_composition_with_effect_transformer(list, transformer)
bool full_simple_proper_effects(const char *, statement)
void simple_cell_with_address_of_cell_translation(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *)
list words_effect_without_approximation(effect)
list effects_must_union(effect, effect)
void print_memory_effects(list)
void set_methods_for_inout_effects_prettyprint(const char *)
list ProperEffectsMustUnion(list, list, bool(*)(effect, effect))
list EffectsMustUnion(list l1, list l2, union_combinable_p) input : two lists of effects output : a l...
list ReferenceTestUnion(list, list, bool(*)(effect, effect))
list expression_to_proper_constant_path_effects_with_points_to(expression, statement)
The structure used to build lists in NewGen.
Definition: newgen_list.h:41