PIPS
|
Go to the source code of this file.
Variables | |
bool | add_precondition_to_scalar_convex_regions |
#define debug_print_region | ( | level, | |
message, | |||
region | |||
) | ifdebug(level) { pips_debug(level, "%s\n", message); print_region(region);} |
convenient debug messages
Definition at line 102 of file effects-convex.h.
#define debug_region_consistency | ( | reg | ) | ifdebug(1){region_consistent_p(reg);} |
Definition at line 98 of file effects-convex.h.
#define debug_regions_consistency | ( | l_reg | ) | ifdebug(1){regions_consistent_p(l_reg);} |
consistency checking
Definition at line 96 of file effects-convex.h.
#define effect_region_p | ( | e | ) | (descriptor_convex_p(effect_descriptor(e))) |
Definition at line 93 of file effects-convex.h.
#define gen_REGION_cons gen_effect_cons |
Definition at line 42 of file effects-convex.h.
#define gen_region_cons gen_effect_cons |
Definition at line 43 of file effects-convex.h.
#define make_region | ( | reference, | |
action, | |||
approximation, | |||
system | |||
) |
Definition at line 47 of file effects-convex.h.
#define NB_MAX_ARRAY_DIM 12 |
Definition at line 121 of file effects-convex.h.
#define R_IN 1 |
Definition at line 110 of file effects-convex.h.
#define R_OUT 2 |
Definition at line 111 of file effects-convex.h.
#define R_RW 0 |
other things
Definition at line 109 of file effects-convex.h.
#define region effect |
Warning! Do not modify this file that is automatically generated!
Modify src/Libs/effects-convex/effects-convex-local.h instead, to add your own modifications. header file built by cproto effects_convex-local.h simulation of the type region
Definition at line 35 of file effects-convex.h.
#define REGION EFFECT /**for casts */ |
Definition at line 36 of file effects-convex.h.
#define REGION_ EFFECT_ /**for some left casts */ |
Definition at line 39 of file effects-convex.h.
#define region_action | ( | reg | ) | effect_action(reg) |
Definition at line 66 of file effects-convex.h.
#define region_action_tag | ( | reg | ) | action_tag(effect_action(reg)) |
Definition at line 72 of file effects-convex.h.
#define region_any_reference | ( | reg | ) | (cell_preference_p(effect_cell(reg)) ? preference_reference(cell_preference(effect_cell(reg))) : cell_reference(effect_cell(reg))) |
To be avoided.
Use region_any_reference() instead. I definitely remove this one : it is too dangerous. BC. FC: it should not compile, rather than compile and fail???
Definition at line 64 of file effects-convex.h.
#define region_approximation | ( | reg | ) | effect_approximation(reg) |
Definition at line 67 of file effects-convex.h.
#define region_approximation_tag | ( | reg | ) | approximation_tag(effect_approximation(reg)) |
Definition at line 73 of file effects-convex.h.
#define region_CAST REGION_CAST |
Definition at line 37 of file effects-convex.h.
Definition at line 38 of file effects-convex.h.
#define region_cell | ( | reg | ) | effect_cell(reg) |
Definition at line 69 of file effects-convex.h.
#define region_context | ( | reg | ) | effect_context(reg) |
Definition at line 68 of file effects-convex.h.
#define region_empty_p | ( | reg | ) | sc_empty_p(region_system(reg)) |
Definition at line 90 of file effects-convex.h.
#define region_entity | ( | reg | ) | reference_variable(region_any_reference(reg)) |
Definition at line 71 of file effects-convex.h.
#define region_exact_p | ( | reg | ) | (approximation_tag(effect_approximation(reg)) == is_approximation_exact) |
Definition at line 88 of file effects-convex.h.
#define region_may_p | ( | reg | ) | (approximation_tag(effect_approximation(reg)) == is_approximation_may) |
Definition at line 84 of file effects-convex.h.
#define region_must_p | ( | reg | ) | (approximation_tag(effect_approximation(reg)) == is_approximation_must) |
Definition at line 86 of file effects-convex.h.
#define REGION_NEWGEN_DOMAIN EFFECT_NEWGEN_DOMAIN |
Definition at line 41 of file effects-convex.h.
#define region_read_p | ( | reg | ) | (action_tag(effect_action(reg))==is_action_read) |
useful region macros
Definition at line 82 of file effects-convex.h.
#define region_rn_p | ( | reg | ) | sc_rn_p(region_system(reg)) |
Definition at line 91 of file effects-convex.h.
#define region_scalar_p | ( | reg | ) | (anywhere_effect_p(reg) || entity_scalar_p(region_entity(reg))) |
Definition at line 92 of file effects-convex.h.
#define region_system | ( | reg | ) | descriptor_convex(effect_descriptor(reg)) |
Definition at line 77 of file effects-convex.h.
#define region_system_ | ( | reg | ) | descriptor_convex_(effect_descriptor(reg)) |
Definition at line 75 of file effects-convex.h.
#define REGION_TYPE EFFECT_TYPE |
Definition at line 40 of file effects-convex.h.
#define region_undefined effect_undefined |
Definition at line 45 of file effects-convex.h.
#define region_undefined_p | ( | reg | ) | effect_undefined_p((reg)) |
Definition at line 46 of file effects-convex.h.
#define region_write_p | ( | reg | ) | (action_tag(effect_action(reg))==is_action_write) |
Definition at line 83 of file effects-convex.h.
#define SEQUENTIAL_IN_REGION_SUFFIX ".inreg" |
Definition at line 116 of file effects-convex.h.
#define SEQUENTIAL_OUT_REGION_SUFFIX ".outreg" |
Definition at line 118 of file effects-convex.h.
#define SEQUENTIAL_PROPER_REGION_SUFFIX ".preg" |
Definition at line 114 of file effects-convex.h.
#define SEQUENTIAL_REGION_SUFFIX ".reg" |
Definition at line 113 of file effects-convex.h.
#define USER_IN_REGION_SUFFIX ".uinreg" |
Definition at line 117 of file effects-convex.h.
#define USER_OUT_REGION_SUFFIX ".uoutreg" |
Definition at line 119 of file effects-convex.h.
#define USER_REGION_SUFFIX ".ureg" |
Definition at line 115 of file effects-convex.h.
void adapt_phi_n_variable_in_convex_effect | ( | effect | , |
expression | , | ||
entity | |||
) |
void append_declaration_sc_if_exact_without_constraints | ( | effect | ) |
bool array_bounds_p | ( | void | ) |
list c_convex_effects_on_actual_parameter_forward_translation | ( | entity | callee, |
expression | real_exp, | ||
entity | formal_ent, | ||
list | l_reg, | ||
transformer | context | ||
) |
it's an intrinsic : FI, cannot it be a constant?
first we compute a SIMPLE effect on the argument of the address_of operator. This is to distinguish between the general case and the case where the operand of the & operator is an array element. Simple effect indices are easier to retrieve.
there should be a FOREACH here to scan the whole list
there are indices but we don't know if they represent array dimensions, struct/union/enum fields, or pointer dimensions.
we build the constraint PHI_nb_phi_real >= last index of eff_real
well, not strictly necessary : forward propagation is only for OUT regions
now we compute a convex effect on the argument of the address_of operator and modify it's last dimension according to the fact that there is an addressing operator
here should be a FOREACH to handle all elements
array element operand : we replace the constraint on the last phi variable with
First we have to test if the eff_real access path leads to the eff_orig access path
to do that, if the entities are the same (well in fact we should also take care of aliasing), we add the constraints of eff_real to those of eff_orig, and the system must be feasible. We should also take care of linearization here.
I guess we could reuse convex_cell_reference_with_address_of_cell_reference_translation
At least part of the original effect corresponds to the actual argument : we need to translate it
first we translate the predicate in the callee's name space
Then we remove the phi variables common to the two regions except the last one if we are not in the general case
This is only valid when there is no linearization ; in the general case a translation system should be built
if not in the general case, we add the constraint phi_nb_phi_real == psi_nb_phi_real - exp_nb_phi_real
Finally, we must rename remaining phi variables from 2 add a PHI1==0 constraint in the general case, or, in the contrary, rename remaining phi variables from 1. We must also change the resulting region entity for the formal entity in all cases.
add PHI1 == 0
else of the if (sc_empty_p)
if(effect_entity(eff_orig) == effect_entity(eff_real) ...)
FOREACH
first we compute an effect on the real_arg
here should be a foreach to scan all the elements
First we have to test if the eff_real access path leads to the eff_orig access path
to do that, if the entities are the same (well in fact we should also take care of aliasing), we add the constraints of eff_real to those of eff_orig, and the system must be feasible.
At least part of the original effect corresponds to the actual argument : we need to translate it
first we perform the path translation
then we translate the predicate in the callee's name space
else of the if (sc_empty_p)
if(effect_entity(eff_orig) == effect_entity(eff_real) ...)
FOREACH
switch
callee | allee |
real_exp | eal_exp |
formal_ent | ormal_ent |
l_reg | _reg |
context | ontext |
Definition at line 1163 of file interprocedural.c.
References _FALLTHROUGH_, basic_concrete_types_compatible_for_effects_interprocedural_translation_p(), c_actual_argument_to_may_summary_effects(), c_convex_effects_on_actual_parameter_forward_translation(), call_arguments, call_function, callee, CAR, cast_expression, CDR, cell_indices(), cell_reference, CONS, contrainte_make(), convex_cell_reference_with_value_of_cell_reference_translation(), convex_region_descriptor_translation(), copy_action(), copy_approximation(), copy_expression(), EFFECT, effect_action, effect_any_reference, effect_approximation, effect_cell, effect_descriptor, effect_undefined, effect_undefined_p, effects_same_action_p(), ENDP, ENTITY_ADDRESS_OF_P, ENTITY_ASSIGN_P, entity_basic_concrete_type(), entity_field_p(), entity_initial, entity_name, entity_to_expression(), entity_type, EXPRESSION, expression_reference(), expression_reference_p(), expression_syntax, expression_to_type(), expression_undefined, expression_undefined_p, FOREACH, free_effect(), free_expression(), free_reference(), free_type(), gen_free_list(), gen_full_free_list(), gen_length(), gen_nconc(), gen_nth(), generic_proper_effects_of_complex_address_expression(), get_current_module_entity(), in_out_methods_p(), init_convex_inout_prettyprint(), int, int_to_expression(), IS_EG, is_syntax_application, is_syntax_call, is_syntax_cast, is_syntax_range, is_syntax_reference, is_syntax_sizeofexpression, is_syntax_subscript, is_syntax_va_arg, make_action_write_memory(), make_approximation_may(), make_cell_reference(), make_effect(), make_phi_entity(), make_phi_expression(), make_psi_entity(), make_reference(), make_reference_region(), module_local_name(), NIL, NORMALIZE_EXPRESSION, normalized_linear, normalized_linear_p, NOT_EG, NOT_PHI_FIRST, path_preceding_p(), PHI_FIRST, pips_assert, pips_debug, pips_debug_effect, pips_debug_effects, pips_internal_error, pips_user_error, pips_user_warning, POP, reference_indices, reference_variable, region_exact_projection_along_variable(), region_remove_psi_variables(), region_sc_append_and_normalize(), region_system, RegionsMustUnion(), sc_add_phi_equation(), sc_constraint_add(), sc_empty_p(), sc_free(), sc_new(), sc_variable_rename(), set_methods_for_convex_in_out_effects(), set_methods_for_convex_rw_effects(), set_methods_for_proper_simple_effects(), simple_effect_reference_type(), syntax_call, syntax_cast, syntax_reference, syntax_reference_p, syntax_tag, transformer_undefined, type_functional_p, type_undefined, type_undefined_p, type_variable, type_variable_p, ultimate_type(), value_code_p, VALUE_ONE, variable_dimensions, vect_add(), vect_copy(), vect_new(), vect_rm(), and vect_substract().
Referenced by c_convex_effects_on_actual_parameter_forward_translation(), set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
list c_convex_effects_on_formal_parameter_backward_translation | ( | list | l_sum_eff, |
expression | real_arg, | ||
transformer | context | ||
) |
l_sum_eff | is a list of effects on a C function formal parameter. These effects must be visible from the caller, which means that their reference has at leat one index. |
real_arg | is an expression. It's the real argument corresponding to the formal parameter which memory effects are represented by l_sum_eff. |
context | is the transformer translating the callee's neame space into the caller's name space. |
the result
if it's a pointer or a partially indexed array We should do more testing here to check if types are compatible...
the test here may not be right. I guess I should use basic_concrete_type here BC
Then we compute the region corresponding to the real argument
this could easily be made generic BC.
FI: I add the restriction on store regions, but they should have been eliminated before translation is attempted
we translate the initial region descriptor into the caller's name space
and then perform the translation
shouldn't it be a union ? BC
if (pointer_type_p(real_arg_t))
else
case is_syntax_reference
first we compute an effect on the argument of the address_of operator (to treat cases like &(n->m))
we translate the initial region descriptor into the caller's name space
if(!ENDP(eff_ind))
else du if (effect_undefined_p(eff_real) || ...)
FOREACH(EFFECT, eff, l_sum_eff)
FOREACH (EFFECT, eff_real, l_eff_real)
if it's a pointer or a partially indexed array We should do more testing here to check if types are compatible...
first compute the region corresponding to the real argument
this could easily be made generic BC.
FI: I add the restriction on store regions, but they should have been eliminated before translation is attempted
we translate the initial region descriptor into the caller's name space
and then perform the translation
shouldn't it be a union ? BC
if (pointer_type_p(real_arg_t))
else
first we compute an effect on the real_arg
first we translate the formal region predicate
Then we append the formal region to the real region
Well this is valid only in the general case : we should verify that types are compatible.
else du if (effect_undefined_p(eff_real))
shouldn't it be a union ? BC
FOREACH(EFFECT, eff, l_sum_eff)
BC : do not generate effects on HEAP
n_eff = heap_effect(get_current_module_entity(), copy_action(effect_action(eff)));
case is_syntax_call
we should test here the compatibility of the casted expression type with the formal entity type. It is not available here, however, I think it's equivalent to test the compatibility with the real arg expression type since the current function is called after testing the compatilibty between the real expression type and the formal parameter type.
let us at least generate effects on all memory locations reachable from the cast expression
switch
free_type(real_arg_t);
l_sum_eff | _sum_eff |
real_arg | eal_arg |
context | ontext |
Definition at line 523 of file interprocedural.c.
References anywhere_effect_p(), c_actual_argument_to_may_summary_effects(), c_convex_effects_on_formal_parameter_backward_translation(), call_arguments, call_function, CAR, cast_expression, CDR, CONS, convex_cell_reference_with_address_of_cell_reference_translation(), convex_cell_reference_with_value_of_cell_reference_translation(), convex_region_descriptor_translation(), copy_action(), copy_approximation(), copy_reference(), EFFECT, effect_action, effect_action_tag, effect_any_reference, effect_approximation, effect_approximation_tag, effect_descriptor, effect_undefined, effect_undefined_p, effect_write_p, ENDP, ENTITY_ADDRESS_OF_P, entity_all_locations_p(), ENTITY_ASSIGN_P, ENTITY_DEREFERENCING_P, ENTITY_FIELD_P, ENTITY_MALLOC_SYSTEM_P, ENTITY_POINT_TO_P, entity_type, EXPRESSION, expression_syntax, expression_to_string(), expression_to_type(), FOREACH, free_effect(), free_reference(), gen_free_list(), gen_full_free_list(), gen_length(), gen_nconc(), generic_proper_effects_of_complex_address_expression(), ifdebug, is_syntax_application, is_syntax_call, is_syntax_cast, is_syntax_range, is_syntax_reference, is_syntax_sizeofexpression, is_syntax_subscript, is_syntax_va_arg, make_action_read_memory(), make_action_write_memory(), make_anywhere_effect(), make_approximation_may(), make_cell_reference(), make_effect(), NIL, pips_debug, pips_debug_effect, pips_debug_effects, pips_internal_error, pips_user_error, pips_user_warning, pointer_type_p(), print_regions(), reference_indices, reference_variable, region_append(), store_effect_p(), syntax_call, syntax_cast, syntax_reference, syntax_tag, transformer_undefined_p, type_depth(), type_to_string(), type_variable, types_compatible_for_effects_interprocedural_translation_p(), and variable_dimensions.
Referenced by c_convex_effects_on_formal_parameter_backward_translation(), set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
Referenced by cell_reference_sc_exact_projection_along_variable().
Psysteme cell_reference_sc_exact_projection_along_variable | ( | reference | ref, |
Psysteme | sc, | ||
entity | var, | ||
bool * | exact_p | ||
) |
ref | ef |
sc | c |
var | ar |
exact_p | xact_p |
Definition at line 1084 of file old_projection.c.
References Ssysteme::base, base_contains_variable_p(), CATCH, cell_reference_phi_cfc_variables(), chunk_undefined, FWD_OFL_CTRL, gen_find_eq(), gen_free_list(), overflow_error, ref, region_sc_normalize(), sc_base_remove_variable(), sc_empty_p(), sc_rm(), sc_rn_p(), TRY, UNCATCH, VALUE_ONE, vect_add_elem(), and vect_rm().
Referenced by cell_reference_system_remove_psi_variables(), and cell_reference_system_remove_rho_variables().
ref | ef |
sc | c |
exact_p | xact_p |
Definition at line 651 of file old_projection.c.
References CAR, CATCH, CDR, cell_reference_sc_exact_projection_along_variable(), ENDP, ENTITY, NB_MAX_ARRAY_DIM, overflow_error, psi_entities_list(), ref, sc_projection_ofl_along_list_of_variables(), sc_rm(), TRY, and UNCATCH.
ref | ef |
sc | c |
exact_p | xact_p |
Definition at line 709 of file old_projection.c.
References CAR, CATCH, CDR, cell_reference_sc_exact_projection_along_variable(), ENDP, ENTITY, NB_MAX_ARRAY_DIM, overflow_error, ref, rho_entities_list(), sc_projection_ofl_along_list_of_variables(), sc_rm(), TRY, and UNCATCH.
bool convex_cell_preceding_p | ( | cell | c1, |
descriptor | d1, | ||
cell | c2, | ||
descriptor | d2, | ||
transformer | current_precondition, | ||
bool | strict_p, | ||
bool * | exact_p | ||
) |
c1 | 1 |
d1 | 1 |
c2 | 2 |
d2 | 2 |
current_precondition | urrent_precondition |
strict_p | trict_p |
exact_p | xact_p |
Definition at line 191 of file eval.c.
References cell_any_reference(), convex_cell_reference_preceding_p(), and current_precondition.
Referenced by convex_effect_find_aliased_paths_with_pointer_values().
bool convex_cell_reference_preceding_p | ( | reference | r1, |
descriptor | d1, | ||
reference | r2, | ||
descriptor | d2, | ||
transformer | current_precondition, | ||
bool | strict_p, | ||
bool * | exact_p | ||
) |
eval.c
same entity and the path length of r1 is shorter than the path length of r2.
we now have to check that each common index matches
only matching reference indices have been found (phi variables or struct field entities).
we must now check the descriptors.
r1 | 1 |
d1 | 1 |
r2 | 2 |
d2 | 2 |
current_precondition | urrent_precondition |
strict_p | trict_p |
exact_p | xact_p |
Definition at line 67 of file eval.c.
References CAR, cell_reference, CONS, copy_effect(), current_precondition, descriptor_undefined, EFFECT, effect_cell, effect_descriptor, ENDP, EXPRESSION, expression_equal_p(), free_effect(), gen_free_list(), gen_full_free_list(), gen_length(), is_cell_reference, make_action_write_memory(), make_approximation_exact(), make_cell(), make_effect(), NIL, phi_entities_list(), pips_debug, pips_debug_effect, POP, predicate_system, project_regions_along_variables(), reference_indices, reference_to_string(), reference_undefined, reference_variable, region, region_intersection(), region_sc_append(), region_sup_difference(), same_entity_p(), transformer_relation, and transformer_undefined_p.
Referenced by convex_cell_preceding_p(), and eval_convex_cell_with_points_to().
void convex_cell_reference_with_address_of_cell_reference_translation | ( | reference | , |
descriptor | , | ||
reference | , | ||
descriptor | , | ||
int | , | ||
reference * | , | ||
descriptor * | , | ||
bool * | |||
) |
Referenced by c_convex_effects_on_formal_parameter_backward_translation(), and eval_convex_cell_with_points_to().
void convex_cell_reference_with_value_of_cell_reference_translation | ( | reference | , |
descriptor | , | ||
reference | , | ||
descriptor | , | ||
int | , | ||
reference * | , | ||
descriptor * | , | ||
bool * | |||
) |
Referenced by c_convex_effects_on_actual_parameter_forward_translation(), and c_convex_effects_on_formal_parameter_backward_translation().
void convex_cell_with_address_of_cell_translation | ( | cell | , |
descriptor | , | ||
cell | , | ||
descriptor | , | ||
int | , | ||
cell * | , | ||
descriptor * | , | ||
bool * | |||
) |
Referenced by convex_effect_find_aliased_paths_with_pointer_values().
void convex_cell_with_value_of_cell_translation | ( | cell | , |
descriptor | , | ||
cell | , | ||
descriptor | , | ||
int | , | ||
cell * | , | ||
descriptor * | , | ||
bool * | |||
) |
Referenced by convex_effect_find_aliased_paths_with_pointer_values().
bool convex_cells_inclusion_p | ( | cell | c1, |
descriptor | d1, | ||
cell | c2, | ||
descriptor | d2, | ||
bool * | exact_p | ||
) |
Inclusion test :
returns true if c1 is included into c2, false otherwise. returns false if c1 may only be included into c2.
exact_p | target is set to true if the result is exact, false otherwise. |
In fact, this parameter would be useful only if there are overflows during the systems inclusion test. But it is not currently used.
default result
we have combinable concrete locations or assimilated (context sensitive heap locations)
they intersect if their descriptors intersection is not empty
if one of the systems is unfeasible, the result is false and exact
if one of the systems is not constrained, the result is true and exact
c1 | 1 |
d1 | 1 |
c2 | 2 |
d2 | 2 |
exact_p | xact_p |
Definition at line 1015 of file binary_operators.c.
References abstract_locations_max(), cell_abstract_location_p(), cell_entity(), cells_combinable_p(), descriptor_convex, entity_flow_or_context_sentitive_heap_location_p(), same_entity_p(), sc_empty_p(), sc_inclusion_p, and sc_rn_p().
Referenced by convex_effect_find_aliased_paths_with_pointer_values().
bool convex_cells_intersection_p | ( | cell | c1, |
descriptor | d1, | ||
cell | c2, | ||
descriptor | d2, | ||
bool * | exact_p | ||
) |
default safe result
can it be true if we have two null locations ?
we have combinable concrete locations or assimilated (context sensitive heap locations)
they intersect if their descriptors intersection is not empty
if one of the systems is unfeasible, the result is false and exact
if one of the systems is not constrained, the result is true and exact
else test the feasibility of the systems intersection
could be some other level?
c1 | 1 |
d1 | 1 |
c2 | 2 |
d2 | 2 |
exact_p | xact_p |
Definition at line 1201 of file binary_operators.c.
References CATCH, cell_abstract_location_p(), cell_entity(), cell_system_sc_append_and_normalize(), cells_combinable_p(), descriptor_convex, entity_flow_or_context_sentitive_heap_location_p(), FWD_OFL_CTRL, overflow_error, pips_debug, sc_dup(), sc_empty_p(), sc_integer_feasibility_ofl_ctrl(), sc_rm(), sc_rn_p(), TRY, and UNCATCH.
Referenced by convex_effect_find_aliased_paths_with_pointer_values().
eff | ff |
Definition at line 326 of file eval.c.
References cell_relations_list, convex_cell_preceding_p(), convex_cell_with_address_of_cell_translation(), convex_cell_with_value_of_cell_translation(), convex_cells_inclusion_p(), convex_cells_intersection_p(), generic_effect_find_aliases_with_simple_pointer_values(), load_pv(), make_simple_pv_context(), reset_pv_context(), simple_cell_to_convex_cell_conversion(), and transformer_undefined.
Referenced by convex_effect_to_constant_path_effects_with_pointer_values().
We have not found any equivalent constant path : it may point anywhere
We should maybe contract these effects later. Is it done by the callers ?
change the resulting effects action to the current effect action
eff | ff |
Definition at line 285 of file eval.c.
References CONS, copy_action(), copy_effect(), EFFECT, effect_action, effect_any_reference, effect_cell, effect_descriptor, effect_read_p, effect_reference_dereferencing_p(), effects_private_current_context_empty_p(), effects_private_current_context_head(), effects_private_current_stmt_head(), effects_to_read_effects(), ENDP, eval_convex_cell_with_points_to(), gen_nconc(), load_pt_to_list(), make_anywhere_effect(), NIL, pips_debug, points_to_list_list, ref, and transformer_undefined.
Referenced by set_methods_for_convex_effects().
void convex_effects_descriptor_normalize | ( | list | ) |
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
void convex_region_add_expression_dimension | ( | effect | , |
expression | |||
) |
Referenced by set_methods_for_convex_effects(), set_methods_for_convex_rw_pointer_effects(), and simple_reference_to_convex_reference_conversion().
void convex_region_change_ith_dimension_expression | ( | effect | , |
expression | , | ||
int | |||
) |
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
void convex_region_descriptor_translation | ( | effect | ) |
Referenced by c_convex_effects_on_actual_parameter_forward_translation(), c_convex_effects_on_formal_parameter_backward_translation(), set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
list convex_regions_backward_translation | ( | entity | func, |
list | real_args, | ||
list | l_reg, | ||
transformer | context | ||
) |
of effects
func | unc |
real_args | eal_args |
l_reg | _reg |
context | ontext |
Definition at line 298 of file interprocedural.c.
References NIL, and regions_backward_translation().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
list convex_regions_forward_translation | ( | entity | callee, |
list | real_args, | ||
list | l_reg, | ||
transformer | context | ||
) |
of effects
callee | allee |
real_args | eal_args |
l_reg | _reg |
context | ontext |
Definition at line 309 of file interprocedural.c.
References c_module_p(), callee, fortran_module_p(), generic_c_effects_forward_translation(), get_current_module_entity(), NIL, and regions_forward_translation().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
list convex_regions_inverse_transformer_compose | ( | list | , |
transformer | |||
) |
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
list convex_regions_precondition_compose | ( | list | , |
transformer | , | ||
bool | |||
) |
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
list convex_regions_transformer_compose | ( | list | , |
transformer | |||
) |
Referenced by add_parameter_aliases_for_this_call_site(), set_methods_for_convex_effects(), set_methods_for_convex_rw_pointer_effects(), and test_dependence_using_regions().
void convex_regions_translation_end | ( | void | ) |
Definition at line 108 of file interprocedural.c.
References reset_arguments_to_eliminate(), and reset_translation_context_sc().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
interprocedural.c
interprocedural.c
callee | allee |
real_args | eal_args |
backward_p | ackward_p |
Definition at line 98 of file interprocedural.c.
References callee, set_backward_arguments_to_eliminate(), set_forward_arguments_to_eliminate(), and set_interprocedural_translation_context_sc().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
list convex_regions_union_over_range | ( | list | , |
entity | , | ||
range | , | ||
descriptor | |||
) |
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
bool disjunct_regions_p | ( | void | ) |
bool empty_convex_context_p | ( | transformer | ) |
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
Referenced by append_declaration_sc_if_exact_without_constraints(), array_must_fully_written_by_regions_p(), do_array_expansion(), effects_to_dma(), initialize_array_variable(), region_translation(), and statement_insertion_fix_access().
Referenced by array_must_fully_written_by_regions_p(), and region_translation().
list eval_convex_cell_with_points_to | ( | cell | c, |
descriptor | d, | ||
list | ptl, | ||
bool * | exact_p, | ||
transformer | current_precondition | ||
) |
ptl | tl |
exact_p | xact_p |
current_precondition | urrent_precondition |
Definition at line 275 of file eval.c.
References convex_cell_reference_preceding_p(), convex_cell_reference_with_address_of_cell_reference_translation(), current_precondition, generic_eval_cell_with_points_to(), and simple_reference_to_convex_reference_conversion().
Referenced by convex_effect_to_constant_path_effects_with_points_to(), and set_methods_for_convex_effects().
bool exact_regions_p | ( | void | ) |
char* func_entity_name | ( | entity | ) |
list get_arguments_to_eliminate | ( | void | ) |
void get_in_out_regions_properties | ( | void | ) |
Referenced by add_alias_pairs_for_this_caller(), init_convex_in_out_regions(), and init_convex_summary_in_out_regions().
list get_out_summary_regions_list | ( | void | ) |
void get_regions_properties | ( | void | ) |
Referenced by array_bound_check_top_down(), comp_regions(), init_convex_rw_regions(), phrase_comEngine_distributor(), phrase_distributor(), phrase_distributor_control_code(), safescale_distributor(), and used_before_set().
text get_text_in_regions | ( | const | string | ) |
string | odule_name |
text get_text_out_regions | ( | const | string | ) |
string | odule_name |
text get_text_regions | ( | const | string | ) |
string | odule_name |
Psysteme get_translation_context_sc | ( | void | ) |
bool in_out_methods_p | ( | void | ) |
Definition at line 476 of file methods.c.
References effects_computation_init_func, and init_convex_in_out_regions().
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
bool in_regions | ( | const | string | ) |
string | odule_name |
list in_regions_of_external | ( | entity | func, |
list | real_args, | ||
transformer | context | ||
) |
list in_regions_of_external(entity func, list real_args, transformer context) input : an external function func, and the list of real arguments used in the calling function.
output : the corresponding list of regions, at call site. modifies : nothing. comment : The effects of "func" are computed into externals effects, ie. ‘translated’. The translation is made in two phases : _ regions on formal parameters _ regions on common parameters
Get the regions of "func".
translate them
func | unc |
real_args | eal_args |
context | ontext |
Definition at line 232 of file interprocedural.c.
References db_get_memory_resource(), effects_to_list(), entity_module_p(), module_local_name(), NIL, pips_debug, pips_internal_error, regions_backward_translation(), and SUMMARY.
bool in_summary_regions | ( | const | string | ) |
string | odule_name |
void init_convex_in_out_regions | ( | const char * | module_name | ) |
This very useful warning should be placed in pipsmake where IN and OUT regions are requested. Moved to rmake() in pipsmake.c
if (!same_string_p(rule_phase(find_rule_by_resource("REGIONS")),
"MUST_REGIONS"))
pips_user_warning("\nMUST REGIONS not selected - "
"Do not expect wonderful results\n");
Get the transformers and preconditions of the module.
for intermediate values
module_name | odule_name |
Definition at line 528 of file methods.c.
References db_get_memory_resource(), get_in_out_regions_properties(), init_convex_inout_prettyprint(), module_name(), module_name_to_entity(), module_to_value_mappings(), regions_init(), reset_proper_rw_effects(), set_bool_property(), set_cumulated_rw_effects(), set_precondition_map(), set_proper_rw_effects(), and set_transformer_map().
Referenced by in_out_methods_p(), and set_methods_for_convex_in_out_effects().
void init_convex_inout_prettyprint | ( | const char * | ) |
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
void init_convex_rw_prettyprint | ( | const char * | ) |
Referenced by bdsc_code_instrumentation(), dsc_code_parallelization(), hbdsc_parallelization(), sequence_dependence_graph(), and spire_distributed_unstructured_to_structured().
void init_convex_rw_regions | ( | const char * | module_name | ) |
Get the transformers and preconditions of the module.
for intermediate values
module_name | odule_name |
Definition at line 495 of file methods.c.
References db_get_memory_resource(), get_bool_property(), get_regions_properties(), init_convex_rw_prettyprint(), module_name(), module_name_to_entity(), module_to_value_mappings(), region_translation_statistics_init(), regions_init(), reset_proper_rw_effects(), set_cumulated_rw_effects(), set_precondition_map(), set_proper_rw_effects(), and set_transformer_map().
Referenced by set_methods_for_convex_rw_effects(), set_methods_for_convex_rw_pointer_effects(), and step_analyse().
void init_convex_summary_in_out_regions | ( | const char * | module_name | ) |
for intermediate values
module_name | odule_name |
Definition at line 606 of file methods.c.
References db_get_memory_resource(), get_in_out_regions_properties(), init_convex_inout_prettyprint(), module_name(), module_name_to_entity(), module_to_value_mappings(), regions_init(), reset_proper_rw_effects(), set_bool_property(), set_cumulated_rw_effects(), and set_proper_rw_effects().
void init_convex_summary_rw_regions | ( | const char * | module_name | ) |
for intermediate values
module_name | odule_name |
Definition at line 583 of file methods.c.
References db_get_memory_resource(), init_convex_rw_prettyprint(), module_name(), module_name_to_entity(), module_to_value_mappings(), regions_init(), reset_proper_rw_effects(), set_cumulated_rw_effects(), and set_proper_rw_effects().
bool live_out_regions | ( | const char * | ) |
descriptor loop_convex_descriptor_make | ( | loop | ) |
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
entity loop_regions_normalize | ( | list | l_reg, |
entity | index, | ||
range | l_range, | ||
bool * | normalized_regions_p, | ||
bool | sc_loop_p, | ||
Psysteme * | psc_loop | ||
) |
FONCTIONS D'INTERFACE
entity loop_regions_normalize(list l_reg, entity index, range l_range, bool *normalized_regions_p, bool sc_loop_p, Psysteme *psc_loop) input : a list of regions, a loop index, its range, and a pointer on a bool to know if the loop is normalized, a bool to know if the loop precondition system sc_loop must be normalized.
output : an entity representing the new loop index to use; it may be index if the loop is already normalized. modifies : l_reg, and *normalized_regions_p. comment : Loops are not normalized in PIPS, but array region semantic functions are defined for normalized loops (incr = +/-1). So we perform here a virtual loop normalization. If the loop is not already normalized, a new loop index (beta) is introduced, and the following system is added to each region of l_reg: { index = lower_bound + beta * incr, 0 <= beta } Then the old index is eliminated as a parameter, and the beta variable is returned as the new loop index. If the loop was already normalized, or has been virtually normalized, then *normalized_regions_p is set to TRUE.
Is the loop increment numerically known ?
add to each region predicate the system: { index = lower_bound + beta * incr, 0 <= beta }
eliminate the old index (which is no more a variable, but a parameter)
update the loop preconditions
l_reg | _reg |
index | ndex |
l_range | _range |
normalized_regions_p | ormalized_regions_p |
sc_loop_p | c_loop_p |
psc_loop | sc_loop |
Definition at line 160 of file old_projection.c.
References CONS, contrainte_make(), debug_regions_consistency, EFFECT, ENTITY, FOREACH, FWD_OFL_CTRL, gen_free_list(), ifdebug, make_beta_entity(), must_regions_p(), NIL, NO_OFL_CTRL, NORMALIZE_EXPRESSION, normalized_linear, normalized_linear_p, pips_debug, range_increment, range_lower, range_upper, region_empty_p, region_exact_projection_along_parameters(), region_rn_p, region_sc_append_and_normalize(), sc_add_egalite(), sc_add_inegalite(), sc_base_remove_variable(), sc_creer_base(), sc_new(), sc_rm(), sc_safe_append(), sc_syst_debug(), store_effect_p(), TCST, value_abs, VALUE_MONE, value_notone_p, value_notzero_p, VALUE_ONE, value_uminus, VALUE_ZERO, vect_add_elem(), vect_cl_ofl_ctrl(), vect_coeff(), vect_constant_p(), and vect_new().
Referenced by project_regions_along_loop_index().
Referenced by c_convex_effects_on_actual_parameter_forward_translation(), find_motif(), find_pattern(), set_dimensions_of_local_variable_family(), top_down_abc_dimension(), and xml_Region_Range().
expression make_phi_expression | ( | int | ) |
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
expression make_psi_expression | ( | int | ) |
Referenced by c_convex_effects_on_actual_parameter_forward_translation(), and region_translation().
expression make_rho_expression | ( | int | ) |
bool may_pointer_regions | ( | const | string | ) |
string | odule_name |
bool may_regions | ( | const | string | ) |
string | odule_name |
bool must_pointer_regions | ( | const | string | ) |
string | odule_name |
bool must_pointer_regions_with_points_to | ( | const | string | ) |
string | odule_name |
bool must_regions | ( | const | string | ) |
string | odule_name |
bool must_regions_p | ( | void | ) |
Referenced by loop_regions_normalize(), project_regions_along_loop_index(), project_regions_along_parameters(), project_regions_along_variables(), region_dynamic_var_elim(), regions_may_convex_hull(), regions_must_convex_hull(), and regions_transformer_apply().
bool must_regions_with_pointer_values | ( | const | string | ) |
string | odule_name |
bool must_regions_with_points_to | ( | const | string | ) |
string | odule_name |
bool op_statistics_p | ( | void | ) |
Referenced by region_exact_projection_along_parameters(), region_exact_projection_along_variable(), region_exact_projection_along_variables(), region_inf_difference(), region_non_exact_projection_along_parameters(), region_non_exact_projection_along_variables(), region_sc_projection_ofl_along_parameter(), region_sup_difference(), regions_may_convex_hull(), and regions_must_convex_hull().
bool out_regions | ( | const | string | ) |
string | odule_name |
Referenced by do_statement_insertion().
void out_regions_from_call_site_to_callee | ( | call | c | ) |
void out_regions_from_call_site_to_callee(call c) input : a potential call site for current_callee.
output : nothing modifies : l_sum_out_reg becomes the may union of l_sum_out_reg and the translated out regions of the current call site. comment :
Definition at line 205 of file interprocedural.c.
References call_arguments, call_function, current_callee, current_stmt, load_statement_out_regions(), load_statement_precondition(), NIL, regions_forward_translation(), and update_out_summary_regions_list().
Referenced by out_regions_from_caller_to_callee().
All we need to perform the translation
caller | aller |
callee | allee |
Definition at line 150 of file interprocedural.c.
References call_domain, callee, caller_name, current_callee, db_get_memory_resource(), free_value_mappings(), gen_multi_recurse(), gen_null(), l_sum_out_reg, module_local_name(), module_to_value_mappings(), out_regions_from_call_site_to_callee(), pips_debug, reset_cumulated_rw_effects(), reset_current_module_entity(), reset_current_module_statement(), reset_out_effects(), reset_precondition_map(), reset_proper_rw_effects(), set_cumulated_rw_effects(), set_current_module_entity(), set_current_module_statement(), set_out_effects(), set_precondition_map(), set_proper_rw_effects(), statement_domain, and stmt_filter().
bool out_summary_regions | ( | const | string | ) |
string | odule_name |
Referenced by convex_cell_reference_preceding_p(), initialize_array_variable(), my_system_remove_variables(), region_remove_phi_variables(), and verify_array_variable().
void phi_first_sort_base | ( | Pbase * | ) |
void phi_to_psi_region | ( | effect | ) |
bool print_call_graph_with_in_regions | ( | const | string | ) |
string | odule_name |
bool print_call_graph_with_out_regions | ( | const | string | ) |
string | odule_name |
bool print_call_graph_with_regions | ( | const | string | ) |
string | odule_name |
bool print_code_as_a_graph_in_regions | ( | const | string | ) |
string | od_name |
bool print_code_as_a_graph_out_regions | ( | const | string | ) |
string | od_name |
bool print_code_as_a_graph_regions | ( | const | string | ) |
string | od_name |
bool print_code_in_regions | ( | const | string | ) |
string | odule_name |
bool print_code_inv_pointer_regions | ( | const | string | ) |
string | odule_name |
bool print_code_inv_regions | ( | const | string | ) |
string | odule_name |
bool print_code_live_out_regions | ( | const char * | ) |
bool print_code_out_regions | ( | const | string | ) |
string | odule_name |
bool print_code_pointer_regions | ( | const | string | ) |
string | odule_name |
bool print_code_proper_pointer_regions | ( | const | string | ) |
string | odule_name |
bool print_code_proper_regions | ( | const | string | ) |
string | odule_name |
bool print_code_regions | ( | const | string | ) |
string | odule_name |
void print_copyinout_regions | ( | list | ) |
void print_dinf_statistics | ( | char * | mod_name, |
char * | prefix | ||
) |
mod_name | od_name |
prefix | refix |
Definition at line 177 of file binary_operators.c.
References concatenate(), db_get_current_workspace_directory(), fprintf(), free(), nb_dinf, nb_dinf_must, nb_dinf_pot_must, prefix, safe_fclose(), safe_fopen(), and strdup().
void print_dsup_statistics | ( | char * | mod_name, |
char * | prefix | ||
) |
mod_name | od_name |
prefix | refix |
Definition at line 158 of file binary_operators.c.
References concatenate(), db_get_current_workspace_directory(), fprintf(), free(), nb_dsup, nb_dsup_must, nb_dsup_pot_must, prefix, safe_fclose(), safe_fopen(), and strdup().
bool print_icfg_with_control_in_regions | ( | const | string | ) |
string | odule_name |
bool print_icfg_with_control_out_regions | ( | const | string | ) |
string | odule_name |
bool print_icfg_with_control_regions | ( | const | string | ) |
string | odule_name |
bool print_icfg_with_in_regions | ( | const | string | ) |
string | odule_name |
bool print_icfg_with_loops_in_regions | ( | const | string | ) |
string | odule_name |
bool print_icfg_with_loops_out_regions | ( | const | string | ) |
string | odule_name |
bool print_icfg_with_loops_regions | ( | const | string | ) |
string | odule_name |
bool print_icfg_with_out_regions | ( | const | string | ) |
string | odule_name |
bool print_icfg_with_regions | ( | const | string | ) |
string | odule_name |
void print_inout_regions | ( | list | ) |
Referenced by add_alias_lists_callee(), add_classes_for_this_callee(), add_pair_to_existing_list(), add_parameter_aliases_for_this_call_site(), alias_classes(), alias_lists(), alias_pairs(), compare_other_list(), init_convex_inout_prettyprint(), make_class_from_list(), make_classes_from_lists(), match_this_callee_class_elem(), used_before_set(), and verify_used_before_set_statement_flt().
void print_private_regions | ( | list | ) |
void print_proj_op_statistics | ( | char * | mod_name, |
char * | prefix | ||
) |
mod_name | od_name |
prefix | refix |
Definition at line 104 of file old_projection.c.
References concatenate(), db_get_current_workspace_directory(), fprintf(), free(), nb_proj_param, nb_proj_param_hermite, nb_proj_param_hermite_success, nb_proj_param_must, nb_proj_param_ofl, nb_proj_param_pot_must, nb_proj_var, nb_proj_var_must, nb_proj_var_ofl, nb_proj_var_pot_must, prefix, safe_fclose(), safe_fopen(), and strdup().
void print_region | ( | effect | ) |
void print_region_sc | ( | effect | ) |
Referenced by copy_write_statement_with_cumulated_regions().
void print_regions | ( | list | ) |
Referenced by c_convex_effects_on_formal_parameter_backward_translation(), common_region_translation(), comp_regions_of_implied_do(), comp_regions_of_syntax(), compute_regions_union(), current_entity_is_updated_before_p(), current_entity_is_used_later_p(), formal_regions_backward_translation(), generate_starpu_pragma(), internal_compute_distribution_context(), real_regions_forward_translation(), region_inf_difference(), region_intersection(), region_sup_difference(), regions_backward_translation(), and regions_forward_translation().
void print_regions_op_statistics | ( | char * | , |
int | |||
) |
void print_rw_regions | ( | list | ) |
Referenced by init_convex_rw_prettyprint(), and loop_basic_workchunk_to_workchunk().
bool print_source_in_regions | ( | const | string | ) |
string | odule_name |
bool print_source_inv_regions | ( | const | string | ) |
string | odule_name |
bool print_source_out_regions | ( | const | string | ) |
string | odule_name |
bool print_source_proper_regions | ( | const | string | ) |
string | odule_name |
bool print_source_regions | ( | const | string | ) |
string | odule_name |
void print_umay_statistics | ( | char * | mod_name, |
char * | prefix | ||
) |
mod_name | od_name |
prefix | refix |
Definition at line 139 of file binary_operators.c.
References concatenate(), db_get_current_workspace_directory(), fprintf(), free(), nb_umay, nb_umay_must, nb_umay_must_must, prefix, safe_fclose(), safe_fopen(), and strdup().
void print_umust_statistics | ( | char * | mod_name, |
char * | prefix | ||
) |
mod_name | od_name |
prefix | refix |
Definition at line 118 of file binary_operators.c.
References concatenate(), db_get_current_workspace_directory(), fprintf(), free(), nb_umust, nb_umust_must_may, nb_umust_must_may_must, nb_umust_must_must, nb_umust_must_must_must, nb_umust_sc_rn, prefix, safe_fclose(), safe_fopen(), and strdup().
void project_regions_along_loop_index(list l_reg, entity index, l_range) input : a list l_reg of regions, a variable which is a loop index.
output : nothing. modifies : l_reg and the regions it contains. comment : project each region in l_reg along the variable index.
Take care of loops with non-unit increment when must regions are required
l_reg | _reg |
index | ndex |
l_range | _range |
Definition at line 263 of file old_projection.c.
References CONS, debug_off, debug_on, debug_regions_consistency, EFFECT, ENTITY, FOREACH, gen_free_list(), loop_regions_normalize(), must_regions_p(), NIL, region_exact_projection_along_variable(), region_non_exact_projection_along_variables(), and store_effect_p().
Referenced by comp_regions_of_implied_do().
void project_regions_along_parameters(list l_reg, list l_param) input : a list of regions to project, and the list of variables along which the projection will be performed.
output : nothing. modifies : l_reg and the regions it contains. comment : project each region in l_reg along the variables in l_param
l_reg | _reg |
l_param | _param |
Definition at line 337 of file old_projection.c.
References debug_off, debug_on, debug_regions_consistency, EFFECT, FOREACH, must_regions_p(), region_exact_projection_along_parameters(), region_non_exact_projection_along_parameters(), and store_effect_p().
Referenced by comp_regions_of_unstructured(), and regions_transformer_apply().
void project_regions_along_variables(list l_reg, list l_param) input : a list of regions to project, and the list of variables along which the projection will be performed.
output : nothing. modifies : l_reg and the regions it contains. comment : project each region in l_reg along the variables in l_var
l_reg | _reg |
l_var | _var |
Definition at line 307 of file old_projection.c.
References debug_off, debug_on, debug_regions_consistency, EFFECT, MAP, must_regions_p(), region_exact_projection_along_variables(), and region_non_exact_projection_along_variables().
Referenced by convex_cell_reference_preceding_p(), loop_basic_workchunk_to_workchunk(), region_remove_beta_variables(), region_remove_phi_variables(), region_remove_psi_variables(), and region_remove_rho_variables().
void project_regions_with_transformer | ( | list | l_reg, |
transformer | trans, | ||
list | l_var_not_proj | ||
) |
l_reg | _reg |
trans | rans |
l_var_not_proj | _var_not_proj |
Definition at line 364 of file old_projection.c.
References regions_transformer_apply().
void project_regions_with_transformer_inverse | ( | list | l_reg, |
transformer | trans, | ||
list | l_var_not_proj | ||
) |
l_reg | _reg |
trans | rans |
l_var_not_proj | _var_not_proj |
Definition at line 370 of file old_projection.c.
References regions_transformer_apply().
list proper_regions_of_expression | ( | expression | , |
transformer | |||
) |
list proper_regions_of_expressions | ( | list | , |
transformer | |||
) |
Referenced by cell_reference_system_remove_psi_variables(), and region_remove_psi_variables().
void psi_to_phi_region | ( | effect | ) |
unary_operators.c
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
Referenced by real_regions_forward_translation(), region_exact_projection_along_parameters(), region_exact_projection_along_variable(), region_exact_projection_along_variables(), region_non_exact_projection_along_parameters(), region_non_exact_projection_along_variables(), and regions_may_convex_hull().
Referenced by comp_regions_of_implied_do(), and regions_dynamic_elim().
Referenced by c_convex_effects_on_formal_parameter_backward_translation().
Pcontrainte region_constraints_sort | ( | Pcontrainte | , |
Pbase | , | ||
bool | |||
) |
Referenced by add_parameter_aliases_for_this_call_site(), append_all_not_present(), append_reg_if_not_present(), compute_recv_regions(), create_step_regions(), disjunction_to_list_of_regions(), region_entities_intersection(), region_inf_difference(), region_intersection(), region_sup_difference(), region_translation(), regions_dynamic_elim(), regions_may_convex_hull(), regions_must_convex_hull(), restrict_to_phi_constraints(), set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
void region_dynamic_var_elim | ( | effect | ) |
Referenced by do_computation_intensity(), do_group_statement_constant(), do_solve_hardware_constraints_on_volume(), edge_cost(), edge_cost_polynome(), and size_of_regions().
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
void region_exact_projection_along_variables(effect reg, list l_var) input : a region and a list of variables.
output : nothing. modifies : the initial region is projected along the variables in l_param. its approximation is set to may if the projection is not exact. comment : overflow errors are trapped here. if it occurs, an empty region replaces the initial region.
Automatic variables read in a CATCH block need to be declared volatile as specified by the documentation
reg | eg |
l_var | _var |
Definition at line 1032 of file old_projection.c.
References CAR, CATCH, CDR, cell_reference_p, debug(), ENDP, ENTITY, free_effect(), ifdebug, is_approximation_exact, nb_proj_var_ofl, newgen_Psysteme, op_statistics_p(), overflow_error, pips_assert, pips_debug, print_entities(), print_region, reference_whole_region(), region, region_action, region_any_reference, region_approximation_tag, region_cell, region_exact_projection_along_variable(), region_non_exact_projection_along_variables(), region_system, region_system_, sc_empty_p(), sc_rm(), sc_rn_p(), TRY, and UNCATCH.
Referenced by array_must_fully_written_by_regions_p(), and project_regions_along_variables().
void region_free | ( | effect | ) |
Referenced by comp_regions_of_implied_do(), region_intersection(), region_union(), set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
Referenced by region_exact_projection_along_parameters(), and region_exact_projection_along_variable().
expression region_reference_to_expression | ( | reference | ) |
void region_remove_beta_variables | ( | effect | ) |
void region_remove_phi_variables | ( | effect | ) |
void region_remove_psi_variables | ( | effect | ) |
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
void region_remove_rho_variables | ( | effect | ) |
Referenced by append_declaration_sc_if_exact_without_constraints(), convex_cell_reference_preceding_p(), and region_translation().
Referenced by c_convex_effects_on_actual_parameter_forward_translation(), loop_regions_normalize(), region_intersection(), region_translation(), and regions_transformer_apply().
Referenced by cell_reference_sc_exact_projection_along_variable(), region_exact_projection_along_variable(), and region_sc_projection_ofl_along_parameters().
void region_sc_projection_ofl_along_variables(Psysteme *psc, Pvecteur pv) input : a system of constraints, and a vector of variables.
output : a system of contraints, resulting of the successive projection of the initial system along each variable of pv. modifies : *psc. comment : it is very different from sc_projection_with_test_along_variables_ofl_ctrl. sc_empty is returned if the system is not feasible (BC). The base of *psc is updated. assert if one of the variable does not belong to the base. The case ofl_ctrl == OFL_CTRL is not handled, because the user may want an SC_UNDEFINED, or an sc_empty(sc->base) or an sc_rn(sc->base) as a result. It is not homogeneous. special implementation for regions: special choice for redudancy elimination. bc.
In case of big sc, we might consider a better order for the projection. Example: 2 phases of elimination (must-projection):
The non_exact projection: if the projection excat fails, then return the modified sc, without variable in base.
ne devrait plus arriver !
psc | sc |
pv | v |
ofl_ctrl | fl_ctrl |
Definition at line 1727 of file old_projection.c.
References base_copy(), base_rm, sc_base_remove_variable(), sc_empty(), Svecteur::succ, VECTEUR_NUL_P, and vecteur_var.
Referenced by region_sc_projection_ofl_along_parameters(), and sc_projection_ofl_along_list_of_variables().
Referenced by region_inf_difference(), region_intersection(), region_sup_difference(), region_union(), and RegionsMustUnion().
Referenced by region_sup_difference(), and RegionsMayUnion().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
effect region_translation | ( | effect | , |
entity | , | ||
reference | , | ||
entity | , | ||
entity | , | ||
reference | , | ||
Value | , | ||
bool | |||
) |
Referenced by add_parameter_aliases_for_this_call_site(), common_region_translation(), formal_regions_backward_translation(), and real_regions_forward_translation().
void region_translation_init | ( | entity | ent_1, |
reference | rf_1, | ||
entity | ent_2, | ||
reference | rf_2, | ||
Value | offset_1_m_2 | ||
) |
relative sizes of elements
ent_1 | nt_1 |
rf_1 | f_1 |
ent_2 | nt_2 |
rf_2 | f_2 |
offset_1_m_2 | ffset_1_m_2 |
Definition at line 362 of file translation.c.
References array_1, array_2, dim_1, dim_1_assumed, dim_2, dim_2_assumed, dims_1, dims_2, dims_array_init(), entity_type, fprint_string_Value(), fprintf(), ifdebug, int_to_value, mat_dim_stat, NumberOfDimension(), offset, pips_debug, ref_1, ref_2, reference_p, reference_undefined_p, size_elt_1, size_elt_2, SizeOfElements(), statistics_p, type_variable, VALUE_CONST, value_division, value_eq, value_mod, VALUE_ONE, value_zero_p, variable_basic, vect_size_ratio_stat, and zero_offset_stat.
Referenced by region_translation().
void region_translation_statistics_close | ( | const char * | mod_name, |
const char * | prefix | ||
) |
inputs
other ratios
translation
mod_name | od_name |
prefix | refix |
Definition at line 212 of file translation.c.
References Common_Dimension_Stat::all_similar, array_to_array_stat, beta_elimination_stat, common_dimension_stat, concatenate(), db_get_current_workspace_directory(), Linearization_Stat::exact, Remaining_Dimension_Stat::exact, Beta_Elimination_Stat::exact, Phi_Elimination_Stat::exact, Predicate_Translation::exact, Beta_Elimination_Stat::exact_input, Phi_Elimination_Stat::exact_input, Predicate_Translation::exact_input, fprintf(), free(), linearization_stat, mat_dim_stat, Remaining_Dimension_Stat::nb, Common_Dimension_Stat::nb_calls, Linearization_Stat::nb_calls, Beta_Elimination_Stat::nb_calls, Phi_Elimination_Stat::nb_calls, Predicate_Translation::nb_calls, Common_Dimension_Stat::non_linear_decl, Linearization_Stat::non_linear_decl, Remaining_Dimension_Stat::non_linear_decl_or_offset, Linearization_Stat::non_linear_system, Common_Dimension_Stat::not_same_decl, phi_elimination_stat, predicate_translation_stat, prefix, remaining_dimension_stat, safe_fclose(), safe_fopen(), scalar_to_array_stat, scalar_to_scalar_stat, statistics_p, strdup(), vect_size_ratio_stat, and zero_offset_stat.
Referenced by reset_convex_rw_regions().
void region_translation_statistics_init | ( | bool | stat_p | ) |
translation.c
translation.c
stat_p | tat_p |
Definition at line 162 of file translation.c.
References Common_Dimension_Stat::all_similar, array_to_array_stat, beta_elimination_stat, common_dimension_stat, Linearization_Stat::exact, Remaining_Dimension_Stat::exact, Beta_Elimination_Stat::exact, Phi_Elimination_Stat::exact, Predicate_Translation::exact, Beta_Elimination_Stat::exact_input, Phi_Elimination_Stat::exact_input, Predicate_Translation::exact_input, linearization_stat, mat_dim_stat, Remaining_Dimension_Stat::nb, Common_Dimension_Stat::nb_calls, Linearization_Stat::nb_calls, Beta_Elimination_Stat::nb_calls, Phi_Elimination_Stat::nb_calls, Predicate_Translation::nb_calls, Common_Dimension_Stat::non_linear_decl, Linearization_Stat::non_linear_decl, Remaining_Dimension_Stat::non_linear_decl_or_offset, Linearization_Stat::non_linear_system, Common_Dimension_Stat::not_same_decl, phi_elimination_stat, predicate_translation_stat, remaining_dimension_stat, scalar_to_array_stat, scalar_to_scalar_stat, statistics_p, vect_size_ratio_stat, and zero_offset_stat.
Referenced by init_convex_rw_regions().
list regions_add_context | ( | list | , |
transformer | |||
) |
list regions_backward_translation | ( | entity | func, |
list | real_args, | ||
list | func_regions, | ||
transformer | context, | ||
bool | proper | ||
) |
list regions_backward_tranlation(entity func, list real_args, list func_regions, transformer context) input : an external function func, and the list of real arguments used in the calling function.
output : the corresponding list of regions, at call site. modifies : nothing. comment : The effects of "func" are computed into externals effects, ie. ‘translated’. The translation is made in two phases : _ regions on formal parameters _ regions on common parameters
Compute the regions on formal variables.
Compute the regions on common variables (static & global variables).
FI: add local precondition (7 December 1992)
func | unc |
real_args | eal_args |
func_regions | unc_regions |
context | ontext |
proper | roper |
Definition at line 341 of file interprocedural.c.
References common_regions_backward_translation(), effects_same_action_p(), formal_regions_backward_translation(), gen_nconc(), ifdebug, NIL, pips_debug, print_regions(), regions_add_context(), RegionsMustUnion(), reset_arguments_to_eliminate(), reset_translation_context_sc(), set_backward_arguments_to_eliminate(), and set_interprocedural_translation_context_sc().
Referenced by convex_regions_backward_translation(), in_regions_of_external(), and regions_of_external().
l_reg | _reg |
Definition at line 116 of file debug.c.
References EFFECT, MAP, and region_consistent_p().
Referenced by add_alias_lists_callee(), add_unmatched_alias_pairs(), alias_classes(), alias_lists(), allocate_task_to_cluster(), compare_matched_alias_pairs(), compare_unmatched_alias_pairs(), compute_recv_regions(), compute_send_regions(), edge_cost(), edge_cost_polynome(), hierarchical_com(), internal_compute_distribution_context(), MCW(), move_task_to_cluster(), save_callee_class(), test_dependence_using_regions(), top_down_abc_flt(), transfer_cost(), transfer_regions(), unite_lists_containing_same_exact_region(), used_data(), xml_Call(), xml_Chain_Graph(), xml_data(), xml_Loops(), and xml_Task().
list regions_dynamic_elim(list l_reg) input : a list of regions.
output : a list of regions in which regions of dynamic variables are removed, and in which dynamic integer scalar variables are eliminated from the predicate. modifies : nothing; the regions l_reg initially contains are copied if necessary. comment :
If the reference is a common variable (ie. with storage ram but not dynamic) or a formal parameter, the region is not ignored.
| heap_area_p(ram_section(r))
pips_internal_error("bad tag for %s (rom)", entity_name(reg_ent));
Eliminate dynamic variables.
l_reg | _reg |
Definition at line 531 of file old_projection.c.
References anywhere_effect_p(), debug_off, debug_on, debug_regions_consistency, dynamic_area_p(), EFFECT, entity_name, entity_special_area_p(), entity_storage, FOREACH, ifdebug, is_storage_formal, is_storage_ram, is_storage_return, is_storage_rom, NIL, pips_debug, pips_debug_effect, pips_internal_error, ram_section, region, region_add_to_regions(), region_dup(), region_dynamic_var_elim(), region_entity, stack_area_p(), storage_ram, storage_tag, and store_effect_p().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
void regions_end | ( | void | ) |
Referenced by add_alias_pairs_for_this_caller(), formal_array_resizing_bottom_up(), reset_convex_in_out_regions(), reset_convex_rw_regions(), reset_convex_summary_in_out_regions(), reset_convex_summary_rw_regions(), and used_before_set().
list regions_forward_translation | ( | entity | func, |
list | real_args, | ||
list | l_reg, | ||
transformer | context | ||
) |
list regions_forward_translation(entity func, list real_args, l_reg, transformer context input : the called function func, the real arguments of the call, the list of regions to translate, and the context of the call.
output : the translated list of regions : real arguments are translated into formal arguments, and common variables of the caller into common variables of the callee. modifies : nothing. comment :
func | unc |
real_args | eal_args |
l_reg | _reg |
context | ontext |
Definition at line 980 of file interprocedural.c.
References common_regions_forward_translation(), effects_same_action_p(), ifdebug, NIL, pips_debug, print_regions(), real_regions_forward_translation(), RegionsMustUnion(), reset_arguments_to_eliminate(), reset_translation_context_sc(), set_forward_arguments_to_eliminate(), and set_interprocedural_translation_context_sc().
Referenced by convex_regions_forward_translation(), and out_regions_from_call_site_to_callee().
void regions_free | ( | list | ) |
Referenced by real_regions_forward_translation(), xml_data(), and xml_Task().
void regions_init | ( | void | ) |
Referenced by add_alias_pairs_for_this_caller(), formal_array_resizing_bottom_up(), init_convex_in_out_regions(), init_convex_rw_regions(), init_convex_summary_in_out_regions(), init_convex_summary_rw_regions(), used_before_set(), and wp65().
list regions_of_expression | ( | expression | , |
transformer | |||
) |
list regions_of_external | ( | entity | func, |
list | real_args, | ||
transformer | context, | ||
bool | proper | ||
) |
list regions_of_external(entity func, list real_args, transformer context) input : an external function func, and the list of real arguments used in the calling function.
output : the corresponding list of regions, at call site. modifies : nothing. comment : The effects of "func" are computed into externals effects, ie. ‘translated’. The translation is made in two phases : _ regions on formal parameters _ regions on common parameters
Get the regions of "func".
translate them
func | unc |
real_args | eal_args |
context | ontext |
proper | roper |
Definition at line 271 of file interprocedural.c.
References db_get_memory_resource(), effects_to_list(), entity_module_p(), module_local_name(), NIL, pips_debug, pips_internal_error, and regions_backward_translation().
Referenced by do_group_statement_constant(), do_solve_hardware_constraints_on_nb_proc(), do_solve_hardware_constraints_on_volume(), edge_cost(), edge_cost_polynome(), internal_compute_distribution_context(), regions_to_loops(), test_dependence_using_regions(), and used_data().
void regions_remove_phi_variables | ( | list | l_reg | ) |
void regions_remove_phi_variables(list l_reg) input : a list of regions, and an integer, which is the highest rank of phi variables that will be kept.
output : nothing. modifies : project regions in l_reg along the phi variables which rank are higher (>) than phi_max. comment : An assumption is made : the projection is exact and the approximation are thus preserved, except if an overflow error occurs. This function is only used in the case of a forward interprocedural propagation : the assumption is then always true.
l_reg | _reg |
Definition at line 508 of file old_projection.c.
References debug_off, debug_on, debug_regions_consistency, EFFECT, FOREACH, and region_remove_phi_variables().
void regions_transformer_apply | ( | list | l_reg, |
transformer | trans, | ||
list | l_var_not_proj, | ||
bool | backward_p | ||
) |
void regions_transformer_apply(l_reg, trans, l_var_not_proj) input : a list of regions, the transformer corresponding to the current statement, and a list of variables along which the regions must not be projected (typically a loop index).
output : nothing. modifies : l_reg and the regions it contains comment : project each region in l_reg along the variables in the arguments of trans which are not in l_var_not_proj, using the algorithm described in document E/185/CRI.
addition of the predicate of the transformer to the predicate of the regions and elimination of redundances; then, projection of regions along initial variables, and renaming of old variables corresponding to the eliminated variables into new variables.
first we store the names of the old and int variables
addition of the predicate of the transformer, and elimination of redundances
projection along intermediate variables
remove potential old values that may be found in transformer
no memory leaks
l_reg | _reg |
trans | rans |
l_var_not_proj | _var_not_proj |
backward_p | ackward_p |
Definition at line 386 of file old_projection.c.
References arguments_difference(), BASE_NULLE_P, CONS, debug_off, debug_on, debug_region_consistency, debug_regions_consistency, EFFECT, ENDP, ENTITY, entity_local_name(), FOREACH, fprintf(), gen_free_list(), ifdebug, local_old_value_entity_p(), must_regions_p(), NIL, pips_debug, pips_debug_effect, pips_debug_effects, predicate_system, print_entities(), project_regions_along_parameters(), region_exact_projection_along_parameters(), region_sc_append_and_normalize(), region_system, sc_dup(), sc_empty_p(), sc_list_variables_rename(), sc_print(), sc_rm(), sc_rn_p(), store_effect_p(), transformer_arguments, transformer_relation, variables_to_int_variables(), variables_to_old_variables(), vecteur_succ, and vecteur_var.
Referenced by project_regions_with_transformer(), and project_regions_with_transformer_inverse().
Referenced by compute_directive_regions(), do_group_statement_constant(), do_solve_hardware_constraints_on_nb_proc(), do_solve_hardware_constraints_on_volume(), edge_cost(), edge_cost_polynome(), internal_compute_distribution_context(), regions_to_loops(), test_dependence_using_regions(), and used_data().
list RegionsEntitiesInfDifference | ( | list | l1, |
list | l2, | ||
bool(*)(effect, effect) | difference_combinable_p | ||
) |
list RegionsEntitiesInfDifference(list l1, l2) input : two lists of regions output : a list of regions, such that: if there is a region R concerning entity A in l1 and in l2, then R is removed from the result; if there is a region R concerning array A in l1, but not in l2, then it is kept in l1, and in the result.
modifies : the regions of l2 may be freed. comment : we keep the regions of l1 that are not combinable with those of l2, but we don't keep the regions of l2 that are not combinable with those of l_reg1.
l_res = list_of_effects_generic_binary_op(l1, l2, difference_combinable_p, regions_to_nil_list, region_to_list, region_to_nil_list);
l1 | 1 |
l2 | 2 |
Definition at line 366 of file binary_operators.c.
References debug(), list_of_effects_generic_cells_inf_difference_op(), NIL, and regions_to_nil_list().
Referenced by internal_compute_distribution_context().
list RegionsEntitiesIntersection | ( | list | l1, |
list | l2, | ||
bool(*)(effect, effect) | intersection_combinable_p | ||
) |
list RegionsEntitiesIntersection(list l1,l2, bool (*intersection_combinable_p)(effect, effect)) input : two lists of regions output : a list of regions containing all the regions of l1 that have a corresponding region (i.e.
same entity) in l2. modifies : l1 and l2. comment :
l_res = list_of_effects_generic_binary_op(l1, l2, intersection_combinable_p, region_entities_intersection, region_to_nil_list, region_to_nil_list);
l1 | 1 |
l2 | 2 |
Definition at line 275 of file binary_operators.c.
References list_of_effects_generic_cells_intersection_op(), NIL, pips_debug, and region_entities_intersection().
list RegionsInfDifference(list l1, l2) input : two lists of regions output : a list of region, representing the inf_difference of the initial regions.
modifies : the regions of l2 may be freed. comment : we keep the regions of l1 that are not combinable with those of l2, but we don't keep the regions of l2 that are not combinable with those of l_reg1.
l_res = list_of_effects_generic_binary_op(l1, l2, difference_combinable_p, region_inf_difference, region_to_list, region_to_nil_list);
l1 | 1 |
l2 | 2 |
Definition at line 334 of file binary_operators.c.
References debug(), list_of_effects_generic_inf_difference_op(), NIL, and region_inf_difference().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
list RegionsIntersection(list l1,l2, bool (*intersection_combinable_p)(effect, effect)) input : output : modifies : comment :
l1 | 1 |
l2 | 2 |
Definition at line 250 of file binary_operators.c.
References debug(), list_of_effects_generic_intersection_op(), NIL, and region_intersection().
Referenced by compute_send_regions(), edge_cost(), edge_cost_polynome(), real_regions_forward_translation(), set_methods_for_convex_effects(), set_methods_for_convex_rw_pointer_effects(), test_dependence_using_regions(), and transfer_regions().
list RegionsMayUnion(list l1, list l2, union_combinable_p) input : two lists of regions output : a list of regions, may union of the two initial lists modifies : l1 and l2 and their regions.
Regions that are not reused in the output list of regions are freed.nothing (no sharing introduced).
l1 | 1 |
l2 | 2 |
Definition at line 207 of file binary_operators.c.
References debug(), list_of_effects_generic_union_op(), region_may_union(), and region_to_may_region_list().
Referenced by set_methods_for_convex_effects(), set_methods_for_convex_rw_pointer_effects(), and update_out_summary_regions_list().
list RegionsMustUnion(list l1, list l2, union_combinable_p) input : two lists of regions output : a list of regions, must union of the two initial lists modifies : l1 and l2 and their regions.
Regions that are not reused in the output list of regions are freed.
l1 | 1 |
l2 | 2 |
Definition at line 228 of file binary_operators.c.
References debug(), list_of_effects_generic_union_op(), region_must_union(), and region_to_list().
Referenced by allocate_task_to_cluster(), c_convex_effects_on_actual_parameter_forward_translation(), common_region_translation(), common_regions_backward_translation(), common_regions_forward_translation(), compute_recv_regions(), MCW(), move_task_to_cluster(), real_regions_forward_translation(), regions_backward_translation(), regions_forward_translation(), set_methods_for_convex_effects(), set_methods_for_convex_rw_pointer_effects(), and used_data().
list RegionsSupDifference(list l1, l2) input : two lists of regions output : a list of region, representing the sup_difference of the initial regions.
modifies : the regions of l2 may be freed. comment : we keep the regions of l1 that are not combinable with those of l2, but we don't keep the regions of l2 that are not combinable with those of l_reg1.
l_res = list_of_effects_generic_binary_op(l1, l2, difference_combinable_p, region_sup_difference, region_to_list, region_to_nil_list);
l1 | 1 |
l2 | 2 |
Definition at line 305 of file binary_operators.c.
References debug(), list_of_effects_generic_sup_difference_op(), NIL, and region_sup_difference().
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
void reset_arguments_to_eliminate | ( | void | ) |
Referenced by add_alias_pairs_for_this_call_site(), convex_regions_translation_end(), regions_backward_translation(), and regions_forward_translation().
void reset_binary_op_statistics | ( | void | ) |
binary_operators.c
Definition at line 93 of file binary_operators.c.
References nb_dinf, nb_dinf_must, nb_dinf_pot_must, nb_dsup, nb_dsup_must, nb_dsup_pot_must, nb_umay, nb_umay_must, nb_umay_must_must, nb_umust, nb_umust_must_may, nb_umust_must_may_must, nb_umust_must_must, nb_umust_must_must_must, and nb_umust_sc_rn.
void reset_convex_in_out_regions | ( | const char * | ) |
void reset_convex_prettyprint | ( | const char * | ) |
void reset_convex_rw_regions | ( | const char * | module_name | ) |
module_name | odule_name |
Definition at line 560 of file methods.c.
References free_value_mappings(), module_name(), region_translation_statistics_close(), regions_end(), reset_cumulated_rw_effects(), reset_precondition_map(), and reset_transformer_map().
Referenced by set_methods_for_convex_rw_effects(), set_methods_for_convex_rw_pointer_effects(), and step_analyse().
void reset_convex_summary_in_out_regions | ( | const char * | ) |
void reset_convex_summary_rw_regions | ( | const char * | ) |
void reset_op_statistics | ( | void | ) |
void reset_out_summary_regions_list | ( | void | ) |
Definition at line 121 of file interprocedural.c.
References l_sum_out_reg, and list_undefined.
Referenced by regions_to_loops().
void reset_proj_op_statistics | ( | void | ) |
Definition at line 88 of file old_projection.c.
References nb_proj_param, nb_proj_param_hermite, nb_proj_param_hermite_success, nb_proj_param_must, nb_proj_param_ofl, nb_proj_param_pot_must, nb_proj_var, nb_proj_var_must, nb_proj_var_ofl, and nb_proj_var_pot_must.
void reset_region_interprocedural_translation | ( | void | ) |
void reset_translation_context_sc | ( | void | ) |
Referenced by add_alias_pairs_for_this_call_site(), convex_regions_translation_end(), regions_backward_translation(), and regions_forward_translation().
Referenced by cell_reference_system_remove_rho_variables(), and region_remove_rho_variables().
Referenced by c_convex_effects_on_actual_parameter_forward_translation(), do_isolate_statement_preconditions_satisified_p(), entity_assumed_declaration_sc(), and top_down_abc_dimension().
ordered_sc | rdered_sc |
ordered_base | rdered_base |
variable_names | ariable_names |
Definition at line 307 of file sc_enumerate.c.
References any_exception_error, assert, base_dimension, CATCH, Ssysteme::dimension, evalue_to_polynome(), make_polynome(), MAX_NB_RAYS, my_Matrix_Free(), my_Polyhedron_Free(), Ssysteme::nb_eq, Ssysteme::nb_ineq, RETHROW, sc_to_matrix(), TCST, TRY, and UNCATCH.
Referenced by regions_transformer_apply(), replace_indices_region(), and replace_indices_region_com().
MISC
converts the list into a Pvecteur
ps = sc_projection_ofl_along_variables(ps, pv_var);
ps | s |
l_var | _var |
Definition at line 1693 of file old_projection.c.
References Ssysteme::base, base_contains_variable_p(), ENTITY, FWD_OFL_CTRL, MAP, region_sc_projection_along_variables_ofl_ctrl(), VALUE_ONE, vect_add_elem(), and vect_rm().
Referenced by cell_reference_system_remove_psi_variables(), cell_reference_system_remove_rho_variables(), region_exact_projection_along_parameters(), region_non_exact_projection_along_parameters(), and region_non_exact_projection_along_variables().
void set_arguments_to_eliminate | ( | list | ) |
void set_backward_arguments_to_eliminate | ( | entity | ) |
Referenced by add_alias_pairs_for_this_call_site(), convex_regions_translation_init(), and regions_backward_translation().
void set_forward_arguments_to_eliminate | ( | void | ) |
Referenced by convex_regions_translation_init(), and regions_forward_translation().
Referenced by add_alias_pairs_for_this_call_site(), convex_regions_translation_init(), regions_backward_translation(), and regions_forward_translation().
void set_methods_for_convex_effects | ( | void | ) |
methods.c
Definition at line 235 of file methods.c.
References c_convex_effects_on_actual_parameter_forward_translation(), c_convex_effects_on_formal_parameter_backward_translation(), c_effects_on_actual_parameter_forward_translation_func, c_effects_on_formal_parameter_backward_translation_func, convex_effect_to_constant_path_effects_with_pointer_values(), convex_effect_to_constant_path_effects_with_points_to(), convex_effects_descriptor_normalize(), convex_in_effect_loop_range_fix(), convex_region_add_expression_dimension(), convex_region_change_ith_dimension_expression(), convex_region_descriptor_translation(), convex_regions_backward_translation(), convex_regions_descriptor_variable_rename(), convex_regions_forward_translation(), convex_regions_inverse_transformer_compose(), convex_regions_loop_normalize(), convex_regions_precondition_compose(), convex_regions_transformer_compose(), convex_regions_translation_end(), convex_regions_translation_init(), convex_regions_union_over_range(), db_get_cumulated_in_effects_func, db_get_in_effects_func, db_get_invariant_in_effects_func, db_get_invariant_rw_effects_func, db_get_out_effects_func, db_get_proper_rw_effects_func, db_get_rw_effects_func, db_get_summary_in_effects_func, db_get_summary_out_effects_func, db_get_summary_rw_effects_func, db_get_useful_variables_effects_func, db_put_cumulated_in_effects_func, db_put_in_effects_func, db_put_invariant_in_effects_func, db_put_invariant_rw_effects_func, db_put_out_effects_func, db_put_proper_rw_effects_func, db_put_rw_effects_func, db_put_summary_in_effects_func, db_put_summary_out_effects_func, db_put_summary_rw_effects_func, db_put_useful_variables_effects_func, effect_add_expression_dimension_func, effect_change_ith_dimension_expression_func, effect_consistent_p_func, effect_descriptor_interprocedural_translation_op, effect_dup_func, effect_free_func, effect_nop(), effect_to_constant_path_effects_func, effect_to_constant_path_effects_with_no_pointer_information(), effect_to_store_independent_effect_list_func, effect_union_op, effects_descriptor_normalize_func, effects_descriptors_variable_change_func, effects_inf_difference_op, effects_intersection_op, effects_local_to_global_translation_op, effects_loop_normalize_func, effects_precondition_composition_op, effects_sup_difference_op, effects_test_union_op, effects_transformer_composition_op, effects_transformer_inverse_composition_op, effects_translation_end_func, effects_translation_init_func, effects_union_op, effects_union_over_range_op, empty_context_test, empty_convex_context_p(), eval_cell_with_points_to_func, eval_convex_cell_with_points_to(), fortran_effects_backward_translation_op, fortran_effects_forward_translation_op, get_constant_paths_p(), get_pointer_info_kind(), load_completed_statement_transformer(), load_completed_transformer_func, load_context_func, load_statement_precondition(), load_statement_transformer(), load_transformer_func, loop_convex_descriptor_make(), loop_descriptor_make_func, loop_range_in_effect_func, pips_internal_error, proper_to_summary_effect_func, reference_to_convex_region(), reference_to_effect_func, region_consistent_p(), region_dup(), region_free(), region_to_store_independent_region_list(), regions_dynamic_elim(), regions_must_convex_hull(), RegionsInfDifference(), RegionsIntersection(), RegionsMayUnion(), RegionsMustUnion(), RegionsSupDifference(), set_contracted_proper_effects(), set_descriptor_range_p(), statement_strongly_feasible_p(), stmt_strongly_feasible_p_func, vector_to_convex_descriptor(), vector_to_descriptor_func, with_no_pointer_info, with_pointer_values, and with_points_to.
Referenced by bdsc_code_instrumentation(), dsc_code_parallelization(), hbdsc_parallelization(), pragma_outliner(), regions_to_loops(), sequence_dependence_graph(), set_methods_for_convex_in_out_effects(), set_methods_for_convex_rw_effects(), spire_distributed_unstructured_to_structured(), and step_analyse().
void set_methods_for_convex_in_out_effects | ( | void | ) |
Definition at line 469 of file methods.c.
References effects_computation_init_func, effects_computation_reset_func, init_convex_in_out_regions(), reset_convex_in_out_regions(), and set_methods_for_convex_effects().
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
void set_methods_for_convex_rw_effects | ( | void | ) |
Definition at line 358 of file methods.c.
References effects_computation_init_func, effects_computation_reset_func, init_convex_rw_regions(), reset_convex_rw_regions(), and set_methods_for_convex_effects().
Referenced by c_convex_effects_on_actual_parameter_forward_translation().
void set_methods_for_convex_rw_pointer_effects | ( | void | ) |
Definition at line 365 of file methods.c.
References c_convex_effects_on_actual_parameter_forward_translation(), c_convex_effects_on_formal_parameter_backward_translation(), c_effects_on_actual_parameter_forward_translation_func, c_effects_on_formal_parameter_backward_translation_func, convex_effects_descriptor_normalize(), convex_in_effect_loop_range_fix(), convex_region_add_expression_dimension(), convex_region_change_ith_dimension_expression(), convex_region_descriptor_translation(), convex_regions_backward_translation(), convex_regions_descriptor_variable_rename(), convex_regions_forward_translation(), convex_regions_inverse_transformer_compose(), convex_regions_loop_normalize(), convex_regions_precondition_compose(), convex_regions_transformer_compose(), convex_regions_translation_end(), convex_regions_translation_init(), convex_regions_union_over_range(), db_get_cumulated_in_effects_func, db_get_in_effects_func, db_get_invariant_in_effects_func, db_get_invariant_rw_effects_func, db_get_out_effects_func, db_get_proper_rw_effects_func, db_get_rw_effects_func, db_get_summary_in_effects_func, db_get_summary_out_effects_func, db_get_summary_rw_effects_func, db_get_useful_variables_effects_func, db_put_cumulated_in_effects_func, db_put_in_effects_func, db_put_invariant_in_effects_func, db_put_invariant_rw_effects_func, db_put_out_effects_func, db_put_proper_rw_effects_func, db_put_rw_effects_func, db_put_summary_in_effects_func, db_put_summary_out_effects_func, db_put_summary_rw_effects_func, db_put_useful_variables_effects_func, effect_add_expression_dimension_func, effect_change_ith_dimension_expression_func, effect_consistent_p_func, effect_descriptor_interprocedural_translation_op, effect_dup_func, effect_free_func, effect_nop(), effect_to_store_independent_effect_list_func, effect_union_op, effects_computation_init_func, effects_computation_reset_func, effects_descriptor_normalize_func, effects_descriptors_variable_change_func, effects_inf_difference_op, effects_intersection_op, effects_local_to_global_translation_op, effects_loop_normalize_func, effects_precondition_composition_op, effects_sup_difference_op, effects_test_union_op, effects_transformer_composition_op, effects_transformer_inverse_composition_op, effects_translation_end_func, effects_translation_init_func, effects_union_op, effects_union_over_range_op, empty_context_test, empty_convex_context_p(), fortran_effects_backward_translation_op, fortran_effects_forward_translation_op, init_convex_rw_regions(), load_completed_statement_transformer(), load_completed_transformer_func, load_context_func, load_statement_precondition(), load_statement_transformer(), load_transformer_func, loop_convex_descriptor_make(), loop_descriptor_make_func, loop_range_in_effect_func, proper_to_summary_effect_func, reference_to_convex_region(), reference_to_effect_func, region_consistent_p(), region_dup(), region_free(), region_to_store_independent_region_list(), regions_dynamic_elim(), regions_must_convex_hull(), RegionsInfDifference(), RegionsIntersection(), RegionsMayUnion(), RegionsMustUnion(), RegionsSupDifference(), reset_convex_rw_regions(), set_contracted_proper_effects(), set_descriptor_range_p(), statement_strongly_feasible_p(), stmt_strongly_feasible_p_func, vector_to_convex_descriptor(), and vector_to_descriptor_func.
void set_region_interprocedural_translation | ( | void | ) |
void set_translation_context_sc | ( | Psysteme | ) |
void simple_cell_to_convex_cell_conversion | ( | cell | input_cell, |
cell * | output_cell, | ||
descriptor * | output_desc | ||
) |
input_cell | nput_cell |
output_cell | utput_cell |
output_desc | utput_desc |
Definition at line 234 of file eval.c.
References cell_any_reference(), make_cell_reference(), reference_undefined, and simple_reference_to_convex_reference_conversion().
Referenced by convex_effect_find_aliased_paths_with_pointer_values().
void simple_reference_to_convex_reference_conversion | ( | reference | ref, |
reference * | output_ref, | ||
descriptor * | output_desc | ||
) |
ref | ef |
output_ref | utput_ref |
output_desc | utput_desc |
Definition at line 205 of file eval.c.
References cell_reference, convex_region_add_expression_dimension(), descriptor_undefined, effect_add_field_dimension(), effect_any_reference, effect_cell, effect_descriptor, entity_field_p(), exp, EXPRESSION, expression_reference(), expression_reference_p(), FOREACH, free_effect(), make_action_write_memory(), make_approximation_exact(), make_cell_reference(), make_descriptor_convex(), make_effect(), make_reference(), NIL, pips_debug_effect, ref, reference_indices, reference_undefined, reference_variable, and sc_new().
Referenced by eval_convex_cell_with_points_to(), and simple_cell_to_convex_cell_conversion().
bool summary_pointer_regions | ( | const | string | ) |
cproto-generated files
interface.c
string | odule_name |
bool summary_regions | ( | const | string | ) |
string | odule_name |
Referenced by do_check_isolate_statement_preconditions_on_call().
Referenced by concerned_entity_p(), step_compute_CHAINS_DG_remove_summary_regions(), and text_all_comp_regions().
Referenced by debug_print_effects_list(), init_convex_rw_prettyprint(), region_to_statement(), step_print_directives_regions(), and step_translate_and_map().
void update_out_summary_regions_list | ( | list | l_out | ) |
l_out | _out |
Definition at line 126 of file interprocedural.c.
References effects_same_action_p(), l_sum_out_reg, list_undefined_p, and RegionsMayUnion().
Referenced by out_regions_from_call_site_to_callee().
descriptor vector_to_convex_descriptor | ( | Pvecteur | ) |
Referenced by set_methods_for_convex_effects(), and set_methods_for_convex_rw_pointer_effects().
|
extern |
Referenced by convex_in_effect_loop_range_fix().