25 #include "pips_config.h"
45 #include "resources.h"
57 #include "pips-libs.h"
58 #ifdef HAVE_PIPS_points_to_LIBRARY
201 "Check that the caller \"%s\" provides initialized "
208 "Check that the caller \"%s\" provides initialized "
227 " to compute call site effects without points-to "
249 if(
ENDP(n_eff_cells)) {
269 if(
ENDP(n_eff_cells)) {
325 list real_args __attribue__((unused)))
411 e = (*reference_to_effect_func)(r, a,
false);
415 e = (*reference_to_effect_func)(r, a,
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.
approximation copy_approximation(approximation p)
APPROXIMATION.
approximation make_approximation_may(void)
effect make_effect(cell a1, action a2, approximation a3, descriptor a4)
descriptor copy_descriptor(descriptor p)
DESCRIPTOR.
effect copy_effect(effect p)
EFFECT.
void free_approximation(approximation p)
void free_points_to_graph(points_to_graph p)
points_to_graph make_points_to_graph(bool a1, set a2)
call make_call(entity a1, list a2)
reference copy_reference(reference p)
REFERENCE.
bool entity_heap_location_p(entity b)
package abstract location.
entity entity_typed_anywhere_locations(type t)
bool entity_typed_anywhere_locations_p(entity e)
Test if an entity is the bottom of the lattice.
bool adapt_convex_effect_cell_to_backward_translation(effect)
points_to.c
effect substitute_stubs_in_convex_array_region(effect, bool, set)
effect adapt_translation_as_convex_effect(effect, effect)
list effects_lhs_expression_to_sources(expression e)
Returns a list of cells corresponding to the possibles values, i.e.
set safe_user_call_to_points_to_interprocedural_binding_set(entity callee __attribue__((unused)), list real_args __attribue__((unused)))
Interface with points-to library.
list effects_lhs_expression_to_sinks(expression e)
Returns a list of cells corresponding to the value,i.e.
list cells_to_read_effects(list cl)
list cells_to_write_effects(list cl)
static list backward_translation_of_points_to_formal_context_effect(_UNUSED_ entity callee, _UNUSED_ list real_args, _UNUSED_ effect eff _UNUSED_ set binding)
list cells_to_read_or_write_effects(list cl, bool write_p)
list generic_proper_effects_of_complex_address_expression(expression, list *, int)
effect make_anywhere_effect(action)
void effect_backward_translation_error(entity, effect)
pointer_info_val get_pointer_info_kind(void)
list effect_to_constant_path_effects_with_no_pointer_information(effect)
void add_precondition_information_to_effects(list)
void effects_to_proper_approximation(list)
statement effects_private_current_stmt_head(void)
list effects_expression_to_points_to_sinks(expression)
bool get_constant_paths_p(void)
list effects_expression_to_points_to_sources(expression)
points_to.c
string effect_to_string(effect)
cell make_anywhere_points_to_cell(type t)
Function storing points to information attached to a statement.
type points_to_reference_to_concrete_type(reference)
reference cell_any_reference(cell)
API for reference.
bool effect_reference_dereferencing_p(reference, bool *)
action make_action_write_memory(void)
To ease the extension of action with action_kind.
type points_to_cell_to_concrete_type(cell)
type points_to_expression_to_concrete_type(expression)
The type returned is stored in a hash-table.
bool nowhere_cell_p(cell)
Target of an undefined pointer.
bool pt_to_list_undefined_p(void)
points_to.c
action make_action_read_memory(void)
bool cell_abstract_location_p(cell)
bool heap_cell_p(cell)
Any heap cell, more or less abstract or typed.
#define effect_undefined_p(x)
#define approximation_exact_p(x)
#define descriptor_convex_p(x)
#define effect_descriptor(x)
#define approximation_must_p(x)
#define effect_approximation(x)
void gen_full_free_list(list l)
entity get_current_module_entity(void)
Get the entity of the current module.
#define ENDP(l)
Test if a list is empty.
#define list_undefined_p(c)
Return if a list is undefined.
#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 list_undefined
Undefined list definition :-)
#define pips_user_warning
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
#define set_undefined_p(s)
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
void print_points_to_set(string, set)
list points_to_source_to_translations(cell, pt_map, bool)
Use "ptm" as a translation map.
#define points_to_graph_undefined
#define points_to_graph_bottom(x)
#define points_to_graph_set(x)
#define ENTITY_ADDRESS_OF_P(e)
const char * entity_user_name(entity e)
Since entity_local_name may contain PIPS special characters such as prefixes (label,...
list make_unbounded_subscripts(int d)
FI: this piece of code must have been duplicated somewhere else in an effect library.
bool expression_call_p(expression e)
call expression_call(expression e)
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.
statement get_current_statement_from_statement_global_stack(void)
size_t type_depth(type)
Number of steps to access the lowest leave of type t without dereferencing.
#define reference_variable(x)
#define EXPRESSION(x)
EXPRESSION.
#define reference_indices(x)
#define call_arguments(x)
#define semantics_user_warning
points_to_graph get_points_to_graph_from_statement(_UNUSED_ statement st)
Interface with points-to library.
list expression_to_points_to_sinks(_UNUSED_ expression e, _UNUSED_ points_to_graph in)
set user_call_to_points_to_interprocedural_binding_set(call c, pt_map pt_caller)
Compute the binding relations in a complete interprocedural way: be as accurate as possible.
list expression_to_points_to_sources(_UNUSED_ expression e, _UNUSED_ points_to_graph in)
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.