26 #include "pips_config.h"
81 pips_debug(8,
"input references r1 : %s, r2: %s \n",
87 && ((r1_path_length < r2_path_length)
88 || (!strict_p && r1_path_length == r2_path_length)))
95 pips_debug(8,
"same entities, and r1 path is shorter than r2 path\n");
96 while (res && !
ENDP(ind1))
186 pips_debug(8,
"end : r1 is %s a predecessor of r2 (%s exact)\n", res ?
"":
"not", *exact_p ?
"":
"not");
294 bool exact_p =
false;
307 pips_debug(8,
"no equivalent constant path found -> anywhere effect\n");
355 bool exact_p =
false;
float a2sf[2] __attribute__((aligned(16)))
USER generates a user error (i.e., non fatal) by printing the given MSG according to the FMT.
cell make_cell_reference(reference _field_)
action copy_action(action p)
ACTION.
void free_effect(effect p)
descriptor make_descriptor_convex(Psysteme _field_)
cell make_cell(enum cell_utype tag, void *val)
approximation make_approximation_exact(void)
effect make_effect(cell a1, action a2, approximation a3, descriptor a4)
effect copy_effect(effect p)
EFFECT.
reference make_reference(entity a1, list a2)
static reference ref
Current stmt (an integer)
bool entity_abstract_location_p(entity al)
#define region
simulation of the type region
list region_sup_difference(region reg1, region reg2)
list region_sup_difference(effect reg1, reg2) input : two regions output : a list of regions containi...
bool convex_cells_intersection_p(cell c1, descriptor d1, cell c2, descriptor d2, bool *exact_p)
list region_intersection(region reg1, region reg2)
Intersection :
bool convex_cells_inclusion_p(cell c1, descriptor d1, cell c2, descriptor d2, bool *exact_p)
Inclusion test :
bool convex_cell_preceding_p(cell c1, descriptor d1, cell c2, descriptor d2, transformer current_precondition, bool strict_p, bool *exact_p)
list convex_effect_to_constant_path_effects_with_pointer_values(effect __attribute__((unused)) eff)
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
void simple_reference_to_convex_reference_conversion(reference ref, reference *output_ref, descriptor *output_desc)
void simple_cell_to_convex_cell_conversion(cell input_cell, cell *output_cell, descriptor *output_desc)
list convex_effect_find_aliased_paths_with_pointer_values(effect eff, statement s)
list eval_convex_cell_with_points_to(cell c, descriptor d, list ptl, bool *exact_p, transformer current_precondition)
list convex_effect_to_constant_path_effects_with_points_to(effect eff)
void convex_cell_reference_with_address_of_cell_reference_translation(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *)
list phi_entities_list(int, int)
void convex_cell_with_address_of_cell_translation(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *)
void region_sc_append(effect, Psysteme, bool)
void convex_cell_with_value_of_cell_translation(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *)
void convex_region_add_expression_dimension(effect, expression)
void project_regions_along_variables(list, list)
void project_regions_along_variables(list l_reg, list l_param) input : a list of regions to project,...
#define pips_debug_effects(level, message, l_eff)
#define pips_debug_effect(level, message, eff)
for debug
list generic_effect_find_aliases_with_simple_pointer_values(effect eff, list l_pv, bool *exact_p, transformer current_precondition, bool(*cell_preceding_p_func)(cell, descriptor, cell, descriptor, transformer, bool, bool *), void(*cell_with_address_of_cell_translation_func)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), void(*cell_with_value_of_cell_translation_func)(cell, descriptor, cell, descriptor, int, cell *, descriptor *, bool *), bool(*cells_intersection_p_func)(cell, descriptor, cell, descriptor, bool *), bool(*cells_inclusion_p_func)(cell, descriptor, cell, descriptor, bool *), void(*simple_cell_conversion_func)(cell, cell *, descriptor *))
list generic_eval_cell_with_points_to(cell input_cell, descriptor input_desc, list ptl, bool *exact_p, transformer current_precondition, bool(*cell_reference_preceding_p_func)(reference, descriptor, reference, descriptor, transformer, bool, bool *), void(*cell_reference_with_address_of_cell_reference_translation_func)(reference, descriptor, reference, descriptor, int, reference *, descriptor *, bool *), void(*cell_reference_conversion_func)(reference, reference *, descriptor *))
bool effects_private_current_context_empty_p(void)
effect make_anywhere_effect(action)
transformer effects_private_current_context_head(void)
statement effects_private_current_stmt_head(void)
effect(* effect_dup_func)(effect eff)
void effects_to_read_effects(list)
void effect_add_field_dimension(effect, entity)
#define effect_any_reference(e)
FI: cannot be used as a left hand side.
#define effect_read_p(eff)
#define effect_scalar_p(eff) entity_scalar_p(effect_entity(eff))
reference cell_any_reference(cell)
API for reference.
bool effect_reference_dereferencing_p(reference, bool *)
entity effect_entity(effect)
cproto-generated files
action make_action_write_memory(void)
To ease the extension of action with action_kind.
bool undefined_pointer_value_entity_p(entity)
points_to_list load_pt_to_list(statement)
bool null_pointer_value_entity_p(entity)
#define cell_reference(x)
#define cell_relations_list(x)
#define effect_descriptor(x)
#define descriptor_undefined
void gen_full_free_list(list l)
#define ENDP(l)
Test if a list is empty.
#define POP(l)
Modify a list pointer to point on the next element of the list.
#define NIL
The empty list (nil in Lisp)
size_t gen_length(const list l)
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#define CAR(pcons)
Get the value of the first element of a list.
void gen_free_list(list l)
free the spine of the list
#define FOREACH(_fe_CASTER, _fe_item, _fe_list)
Apply/map an instruction block on all the elements of a list.
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
pv_context make_simple_pv_context(void)
cell_relations load_pv(statement)
void reset_pv_context(pv_context *)
#define points_to_list_list(x)
string reference_to_string(reference r)
bool same_entity_p(entity e1, entity e2)
predicates on entities
bool entity_field_p(entity e)
e is the field of a structure
bool expression_equal_p(expression e1, expression e2)
Syntactic equality e1==e2.
bool expression_reference_p(expression e)
Test if an expression is a reference.
reference expression_reference(expression e)
Short cut, meaningful only if expression_reference_p(e) holds.
#define transformer_undefined
#define transformer_undefined_p(x)
#define reference_undefined
#define reference_variable(x)
#define EXPRESSION(x)
EXPRESSION.
#define transformer_relation(x)
#define reference_indices(x)
#define predicate_system(x)
Psysteme sc_new(void)
Psysteme sc_new(): alloue un systeme vide, initialise tous les champs avec des valeurs nulles,...
static transformer current_precondition
The structure used to build lists in NewGen.
pv_context is a structure holding the methods to use during pointer values analyses
#define exp
Avoid some warnings from "gcc -Wshadow".