25 #include "pips_config.h"
54 #include "resources.h"
62 DB_GETPUT_SE(convex_proper_rw_pointer_regions, PROPER_POINTER_REGIONS)
64 DB_GETPUT_SE(convex_invariant_rw_pointer_regions, INV_POINTER_REGIONS)
65 DB_GETPUT_LS(convex_summary_rw_pointer_regions, SUMMARY_POINTER_REGIONS)
66 DB_GETPUT_EE(convex_useful_variables_pointer_regions, USEFUL_VARIABLES_POINTER_REGIONS)
73 DB_GETPUT_EE(convex_useful_variables_regions, USEFUL_VARIABLES_REGIONS)
76 DB_GETPUT_SE(convex_invariant_in_regions, INV_IN_REGIONS)
77 DB_GETPUT_SE(convex_cumulated_in_regions, CUMULATED_IN_REGIONS)
78 DB_GETPUT_LS(convex_summary_in_regions, IN_SUMMARY_REGIONS)
80 DB_GETPUT_LS(convex_summary_out_regions, OUT_SUMMARY_REGIONS)
89 list global_in = *gin, global_write = *gw;
105 bool saved_add_precondition_to_scalar_convex_regions =
129 range_descriptor = (*loop_descriptor_make_func)(l);
143 (*effects_loop_normalize_func)(global_write, i, r,
144 &new_i, range_descriptor,
true);
149 (*effects_loop_normalize_func)(global_in, i, r,
150 &new_i, range_descriptor,
false);
172 (*effects_descriptors_variable_change_func)(global_write, i, i_prime);
177 (*effects_prettyprint_func)(global_write);
200 global_write = (*effects_union_over_range_op)(
201 global_write, i_prime, r, range_descriptor);
211 global_in = (*effects_sup_difference_op)(global_in, global_write,
220 global_in = (*effects_union_over_range_op)(global_in, i,
range_undefined,
223 saved_add_precondition_to_scalar_convex_regions;
float a2sf[2] __attribute__((aligned(16)))
USER generates a user error (i.e., non fatal) by printing the given MSG according to the FMT.
void free_descriptor(descriptor p)
transformer load_completed_statement_transformer(statement s)
three mappings used throughout semantics analysis:
struct _newgen_struct_effect_ * effect
list RegionsSupDifference(list l1, list l2, bool(*difference_combinable_p)(effect, effect))
list RegionsSupDifference(list l1, l2) input : two lists of regions output : a list of region,...
effect regions_must_convex_hull(region f1, region f2)
1- Union :
list RegionsMustUnion(list l1, list l2, bool(*union_combinable_p)(effect, effect))
list RegionsMustUnion(list l1, list l2, union_combinable_p) input : two lists of regions output : a l...
list RegionsMayUnion(list l1, list l2, bool(*union_combinable_p)(effect, effect))
list RegionsMayUnion(list l1, list l2, union_combinable_p) input : two lists of regions output : a li...
list RegionsInfDifference(list l1, list l2, bool(*difference_combinable_p)(effect, effect))
list RegionsInfDifference(list l1, l2) input : two lists of regions output : a list of region,...
list RegionsIntersection(list l1, list l2, bool(*intersection_combinable_p)(effect, effect))
list RegionsIntersection(list l1,l2, bool (*intersection_combinable_p)(effect, effect)) input : outpu...
bool region_consistent_p(region reg)
void reset_convex_rw_regions(const char *module_name)
void set_methods_for_convex_rw_effects()
void init_convex_inout_prettyprint(const char *__attribute__((unused)) module_name)
void set_methods_for_convex_in_out_effects()
void init_convex_rw_regions(const char *module_name)
void init_convex_summary_rw_regions(const char *module_name)
void reset_convex_summary_in_out_regions(const char *__attribute__((unused)) module_name)
void reset_convex_in_out_regions(const char *__attribute__((unused)) module_name)
static void convex_in_effect_loop_range_fix(loop l, list *gin, list *gw, bool(*r_w_combinable_p)(effect, effect), entity *index, range r)
void set_methods_for_convex_rw_pointer_effects()
void reset_convex_prettyprint(const char *__attribute__((unused)) module_name)
void init_convex_rw_prettyprint(const char *__attribute__((unused)) module_name)
void init_convex_summary_in_out_regions(const char *module_name)
void init_convex_in_out_regions(const char *module_name)
void reset_convex_summary_rw_regions(const char *__attribute__((unused)) module_name)
void set_methods_for_convex_effects()
methods.c
list eval_convex_cell_with_points_to(cell, descriptor, list, bool *, transformer)
void convex_region_change_ith_dimension_expression(effect, expression, int)
void convex_region_descriptor_translation(effect)
descriptor loop_convex_descriptor_make(loop)
list convex_regions_descriptor_variable_rename(list, entity, entity)
void get_in_out_regions_properties(void)
list convex_effect_to_constant_path_effects_with_pointer_values(effect)
effect reference_to_convex_region(reference, action, bool)
unary_operators.c
bool empty_convex_context_p(transformer)
list convex_effect_to_constant_path_effects_with_points_to(effect)
void convex_regions_translation_init(entity, list, bool)
interprocedural.c
void print_rw_regions(list)
bool add_precondition_to_scalar_convex_regions
list region_to_store_independent_region_list(effect, bool)
list c_convex_effects_on_formal_parameter_backward_translation(list, expression, transformer)
text text_rw_array_regions(list)
list c_convex_effects_on_actual_parameter_forward_translation(entity, expression, entity, list, transformer)
void get_regions_properties(void)
void convex_effects_descriptor_normalize(list)
list convex_regions_backward_translation(entity, list, list, transformer)
of effects
text text_inout_array_regions(list)
void region_translation_statistics_init(bool)
translation.c
descriptor vector_to_convex_descriptor(Pvecteur)
effect region_dup(effect)
void convex_regions_translation_end(void)
list scalar_regions_sc_append(list, Psysteme, bool)
list convex_regions_loop_normalize(list, entity, range, entity *, descriptor, bool)
void region_translation_statistics_close(const char *, const char *)
list convex_regions_forward_translation(entity, list, list, transformer)
of effects
void convex_region_add_expression_dimension(effect, expression)
list convex_regions_precondition_compose(list, transformer, bool)
void print_inout_regions(list)
list regions_dynamic_elim(list)
list regions_dynamic_elim(list l_reg) input : a list of regions.
list convex_regions_union_over_range(list, entity, range, descriptor)
list convex_regions_transformer_compose(list, transformer)
compose.c
list convex_regions_inverse_transformer_compose(list, transformer)
#define DB_GETPUT_LS(name, NAME)
#define pips_debug_effects(level, message, l_eff)
#define DB_GETPUT_EE(name, NAME)
void(* generic_prettyprint_function)(list)
#define DB_GETPUT_SE(name, NAME)
text(* generic_text_function)(list)
prettyprint function types:
transformer(* load_transformer_func)(statement)
effect(* effect_union_op)(effect, effect)
list(* effects_sup_difference_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
void(* db_put_invariant_in_effects_func)(const char *, statement_effects)
list(* fortran_effects_backward_translation_op)(entity, list, list, transformer)
statement_effects(* db_get_invariant_in_effects_func)(const char *)
void(* db_put_summary_in_effects_func)(const char *, list)
void(* db_put_in_effects_func)(const char *, statement_effects)
void effects_to_may_effects(list)
list(* effect_to_constant_path_effects_func)(effect)
bool(* empty_context_test)(transformer)
list(* effects_intersection_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
transformer(* load_completed_transformer_func)(statement)
effect effect_nop(effect)
list(* c_effects_on_formal_parameter_backward_translation_func)(list, expression, transformer)
transformer(* load_context_func)(statement)
effect(* proper_to_summary_effect_func)(effect)
list(* effects_union_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
void(* db_put_rw_effects_func)(const char *, statement_effects)
void(* effect_descriptor_interprocedural_translation_op)(effect)
void(* db_put_useful_variables_effects_func)(const char *, entity_effects)
void(* effects_translation_end_func)(void)
void(* effects_descriptor_normalize_func)(list)
pointer_info_val get_pointer_info_kind(void)
list(* effects_transformer_composition_op)(list, transformer)
void(* db_put_invariant_rw_effects_func)(const char *, statement_effects)
statement_effects(* db_get_invariant_rw_effects_func)(const char *)
list(* effect_to_store_independent_effect_list_func)(effect, bool)
bool(* effect_consistent_p_func)(effect)
list effect_to_constant_path_effects_with_no_pointer_information(effect)
void(* loop_range_in_effect_func)(loop, list *, list *, bool(*)(effect, effect), entity *, range)
void reset_action_interpretation(void)
descriptor(* loop_descriptor_make_func)(loop)
void(* effect_free_func)(effect eff)
bool w_r_combinable_p(effect, effect)
list(* effects_local_to_global_translation_op)(list)
list(* db_get_summary_in_effects_func)(const char *)
effect(* reference_to_effect_func)(reference, action, bool)
statement_effects(* db_get_out_effects_func)(const char *)
void(* db_put_out_effects_func)(const char *, statement_effects)
bool get_descriptor_range_p(void)
void set_descriptor_range_p(bool)
void reset_proper_rw_effects(void)
void(* effects_computation_init_func)(const char *)
void set_proper_rw_effects(statement_effects)
text(* effects_to_text_func)(list)
list(* db_get_summary_out_effects_func)(const char *)
bool normalizable_and_linear_loop_p(entity, range)
entity_effects(* db_get_useful_variables_effects_func)(const char *)
descriptor descriptor_inequality_add(descriptor, Pvecteur)
statement_effects(* db_get_cumulated_in_effects_func)(const char *)
list(* effects_test_union_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
void set_cumulated_rw_effects(statement_effects)
void(* effects_translation_init_func)(entity, list, bool)
void set_action_interpretation(string, string)
prettyprint.c
list(* effects_loop_normalize_func)(list, entity, range, entity *, descriptor, bool)
list effects_entities_intersection(list, list, bool(*)(effect, effect))
void(* effect_prettyprint_func)(effect)
void set_contracted_proper_effects(bool)
end of effects-generic-local.h
bool get_constant_paths_p(void)
void(* db_put_summary_out_effects_func)(const char *, list)
list(* effects_descriptors_variable_change_func)(list, entity, entity)
descriptor(* vector_to_descriptor_func)(Pvecteur)
void(* db_put_summary_rw_effects_func)(const char *, list)
void(* effect_add_expression_dimension_func)(effect eff, expression exp)
void(* effects_computation_reset_func)(const char *)
void(* db_put_cumulated_in_effects_func)(const char *, statement_effects)
list(* effects_inf_difference_op)(list, list, bool(*eff1_eff2_combinable_p)(effect, effect))
effect(* effect_dup_func)(effect eff)
statement_effects(* db_get_in_effects_func)(const char *)
list(* fortran_effects_forward_translation_op)(entity, list, list, transformer)
void(* effect_change_ith_dimension_expression_func)(effect eff, expression exp, int i)
void(* db_put_proper_rw_effects_func)(const char *, statement_effects)
bool r_w_combinable_p(effect, effect)
list(* eval_cell_with_points_to_func)(cell, descriptor, list, bool *, transformer)
void(* effects_prettyprint_func)(list)
statement_effects(* db_get_proper_rw_effects_func)(const char *)
list(* effects_union_over_range_op)(list, entity, range, descriptor)
void reset_cumulated_rw_effects(void)
list(* effects_transformer_inverse_composition_op)(list, transformer)
list(* db_get_summary_rw_effects_func)(const char *)
bool(* stmt_strongly_feasible_p_func)(statement)
list(* effects_precondition_composition_op)(list, transformer, bool)
statement_effects(* db_get_rw_effects_func)(const char *)
list(* c_effects_on_actual_parameter_forward_translation_func)(entity, expression, entity, list, transformer)
#define descriptor_undefined
#define descriptor_convex(x)
const char * module_name(const char *s)
Return the module part of an entity name.
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
string db_get_memory_resource(const char *rname, const char *oname, bool pure)
Return the pointer to the resource, whatever it is.
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_internal_error
void set_bool_property(const char *, bool)
#define NORMALIZE_EXPRESSION(e)
bool same_entity_p(entity e1, entity e2)
predicates on entities
entity module_name_to_entity(const char *mn)
This is an alias for local_name_to_top_level_entity.
#define range_increment(x)
#define entity_undefined_p(x)
#define normalized_linear(x)
void module_to_value_mappings(entity m)
void module_to_value_mappings(entity m): build hash tables between variables and values (old,...
bool statement_strongly_feasible_p(statement)
Return true if statement s is reachable according to its precondition.
transformer load_statement_precondition(statement)
void set_transformer_map(statement_mapping)
transformer load_statement_transformer(statement)
void reset_precondition_map(void)
void set_precondition_map(statement_mapping)
void reset_transformer_map(void)
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.
#define TCST
VARIABLE REPRESENTANT LE TERME CONSTANT.
#define VECTEUR_NUL
DEFINITION DU VECTEUR NUL.
#define VECTEUR_UNDEFINED
void * Variable
arithmetique is a requirement for vecteur, but I do not want to inforce it in all pips files....
Pvecteur vect_make(Pvecteur v, Variable var, Value val,...)
Pvecteur vect_make(v, [var, val,]* 0, val) Pvecteur v; // may be NULL, use assigne anyway Variable va...
Value vect_coeff(Variable var, Pvecteur vect)
Variable vect_coeff(Variable var, Pvecteur vect): coefficient de coordonnee var du vecteur vect —> So...