25 #include "pips_config.h"
84 if (filter(eff)) l_new =
CONS(
EFFECT, pure_apply(eff), l_new),
128 bool write_once_p =
false;
267 pips_debug(7,
"Effect on variable %s removed\n",
287 for(ec = l_eff; !
ENDP(ec);
POP(ec)) {
317 (*effect_free_func)(eff);
327 {(*effect_free_func)(eff);},
491 pips_debug(5,
"getting nothing for %s\n", name);
535 pips_debug(8,
"heap or concrete location \n");
540 (*effect_add_expression_dimension_func)(eff, deref_exp);
619 field_entity_to_expression(field),
653 pips_debug(8,
"dealing with entity : %s with type %s\n",
737 l_res_tmp = (*c_effects_on_formal_parameter_backward_translation_func)(
756 l_res = (*effects_union_op)(
809 bool finished =
false;
850 if (nb_phi_tmp_eff == 0)
865 for(
int nphi = nb_phi_tmp_eff; nphi <= nb_phi_init; nphi++)
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_)
bool effects_consistent_p(effects p)
effects make_effects(list a)
approximation copy_approximation(approximation p)
APPROXIMATION.
effect make_effect(cell a1, action a2, approximation a3, descriptor a4)
void free_effects(effects p)
descriptor copy_descriptor(descriptor p)
DESCRIPTOR.
effect copy_effect(effect p)
EFFECT.
descriptor make_descriptor_none(void)
normalized make_normalized(enum normalized_utype tag, void *val)
expression make_expression(syntax a1, normalized a2)
type copy_type(type p)
TYPE.
expression copy_expression(expression p)
EXPRESSION.
reference make_reference(entity a1, list a2)
void free_expression(expression p)
reference copy_reference(reference p)
REFERENCE.
syntax make_syntax(enum syntax_utype tag, void *val)
bool entity_flow_or_context_sentitive_heap_location_p(entity e)
bool entity_heap_location_p(entity b)
package abstract location.
static list ref_inds
Current list of transformations.
static reference ref
Current stmt (an integer)
bool entity_abstract_location_p(entity al)
entity entity_all_locations()
eturn ANY_MODULE:ANYWHERE (the top of the lattice)
void const char const char const int
void set_translation_context_sc(Psysteme)
void convex_region_descriptor_remove_ith_dimension(effect, int)
list c_convex_effects_on_formal_parameter_backward_translation(list, expression, transformer)
void reset_translation_context_sc(void)
#define pips_debug_effect(level, message, eff)
for debug
list effects_undefined_composition_with_preconditions(list, transformer)
void effects_to_write_effects(list)
list effects_to_effects_map(list, effect(*)(effect))
list effects_store_effects(list)
list effect_to_may_effect_list(effect)
void effect_to_must_effect(effect)
descriptor effects_undefined_vector_to_descriptor(Pvecteur)
list effects_undefined_union_over_range(list, entity, range, descriptor)
void effects_to_may_effects(list)
list effects_read_effects_dup(list)
effect make_anywhere_effect(action)
list effects_descriptors_variable_change_nop(list, entity, entity)
effect effect_nop(effect)
list(* c_effects_on_formal_parameter_backward_translation_func)(list, expression, transformer)
void effect_add_dereferencing_dimension(effect)
void effect_to_write_effect(effect)
list effects_composition_with_preconditions_nop(list, transformer, bool)
list effects_undefined_descriptors_variable_change(list, entity, entity)
list db_get_empty_list(string)
list effects_to_effects_filter_map(list, bool(*)(effect), effect(*)(effect))
list effects_add_effect(list, effect)
bool effects_write_at_least_once_p(list)
list effects_read_effects(list)
void array_effects_to_may_effects(list)
list effects_write_effects_dup(list)
void effects_filter_map(list, bool(*)(effect), void(*)(effect))
list effects_composition_with_transformer_nop(list, transformer)
list effects_union_over_range_nop(list, entity, range, descriptor)
void effects_map(list, void(*)(effect))
unary_operators.c
descriptor loop_undefined_descriptor_make(loop)
list effect_to_nil_list_and_free(effect)
list clean_anywhere_effects(list)
list effect_to_nil_list(effect)
void effects_to_must_effects(list)
void effect_to_may_effect(effect)
list filter_effects_with_declaration(list, entity)
list effect_intermediary_pointer_paths_effect(effect)
bool get_constant_paths_p(void)
list effects_undefined_loop_normalize(list, entity, range, entity *, descriptor, bool)
list effects_undefined_composition_with_transformer(list, transformer)
list effects_to_written_scalar_entities(list)
list effects_write_effects(list)
void effect_to_read_effect(effect)
list effects_loop_normalize_nop(list, entity, range, entity *, descriptor, bool)
effect(* effect_dup_func)(effect eff)
void effects_to_read_effects(list)
list effects_dup_without_variables(list, list)
list effect_to_list(effect)
void effect_add_field_dimension(effect, entity)
list effects_to_nil_list(effect, effect)
bool effects_same_action_p(effect, effect)
#define effect_any_reference(e)
FI: cannot be used as a left hand side.
#define effect_approximation_tag(eff)
#define effect_write_p(eff)
#define effect_read_p(eff)
#define effect_scalar_p(eff) entity_scalar_p(effect_entity(eff))
#define effect_action_tag(eff)
bool undefined_pointer_value_cell_p(cell)
bool effect_abstract_location_p(effect)
bool effect_reference_dereferencing_p(reference, bool *)
entity effect_entity(effect)
cproto-generated files
bool store_effect_p(effect)
bool effect_scalar_p(effect)
bool FILE_star_effect_reference_p(reference)
bool anywhere_effect_p(effect)
Is it an anywhere effect? ANYMMODULE:ANYWHERE
bool null_pointer_value_cell_p(cell)
#define cell_reference(x)
#define cell_preference(x)
#define descriptor_convex_p(x)
#define effect_descriptor(x)
#define effects_effects(x)
#define descriptor_undefined
#define cell_preference_p(x)
#define descriptor_none_p(x)
#define effect_approximation(x)
void gen_full_free_list(list l)
#define ENDP(l)
Test if a list is empty.
list gen_nreverse(list cp)
reverse a list in place
#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.
void * gen_find_eq(const void *item, const list seq)
#define list_undefined
Undefined list definition :-)
#define MAP(_map_CASTER, _map_item, _map_code, _map_list)
Apply/map an instruction block on all the elements of a list (old fashioned)
static expression s_init
must take care not to substitute in an inserted expression
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
string string_of_type(const type)
void apply(char *phasename, char *target)
apply a transformation on a module
bool static_area_p(entity aire)
const char * entity_local_name(entity e)
entity_local_name modified so that it does not core when used in vect_fprint, since someone thought t...
expression int_to_expression(_int i)
transform an int into an expression and generate the corresponding entity if necessary; it is not cle...
entity expression_to_entity(expression e)
just returns the entity of an expression, or entity_undefined
type entity_basic_concrete_type(entity)
retrieves or computes and then returns the basic concrete type of an entity
#define transformer_undefined
#define reference_variable(x)
#define basic_pointer_p(x)
#define basic_derived_p(x)
#define entity_storage(x)
#define EXPRESSION(x)
EXPRESSION.
#define cast_expression(x)
#define entity_undefined_p(x)
#define expression_undefined
#define reference_indices(x)
#define preference_reference(x)
#define expression_undefined_p(x)
#define variable_dimensions(x)
#define value_expression_p(x)
#define expression_syntax(x)
#define type_variable_p(x)
#define value_expression(x)
#define variable_basic(x)
#define entity_initial(x)
void sc_creer_base(Psysteme ps)
void sc_creer_base(Psysteme ps): initialisation des parametres dimension et base d'un systeme lineair...
Psysteme sc_new(void)
Psysteme sc_new(): alloue un systeme vide, initialise tous les champs avec des valeurs nulles,...
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
The structure used to build lists in NewGen.