25 #include "pips_config.h"
50 #include "pips-libs.h"
51 #ifdef HAVE_PIPS_points_to_LIBRARY
228 bool relevant_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.
void free_points_to_graph(points_to_graph p)
points_to_graph make_points_to_graph(bool a1, set a2)
void free_transformer(transformer p)
void free_reference(reference p)
reference copy_reference(reference p)
REFERENCE.
bool entity_is_argument_p(entity e, cons *args)
transformer transformer_empty()
Allocate an empty transformer.
bool generic_atomic_points_to_reference_p(reference r, bool strict_p)
Is it a unique concrete memory location?
bool atomic_points_to_reference_p(reference r)
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.
type points_to_expression_to_concrete_type(expression)
The type returned is stored in a hash-table.
bool pt_to_list_undefined_p(void)
points_to.c
entity constant_memory_access_path_to_location_entity(reference)
A constant memory access path may not be considered.
#define approximation_exact_p(x)
#define approximation_must_p(x)
entity get_current_module_entity(void)
Get the entity of the current module.
#define ENDP(l)
Test if a list is empty.
#define NIL
The empty list (nil in Lisp)
#define CONS(_t_, _i_, _l_)
List element cell constructor (insert an element at the beginning of a list)
void gen_free_list(list l)
free the spine of the list
bool gen_in_list_p(const void *vo, const list lx)
tell whether vo belongs to lx
#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_FOREACH(type_name, the_item, the_set)
enumerate set elements in their internal order.
int f(int off1, int off2, int n, float r[n], float a[n], float b[n])
list reference_to_points_to_translations(entity, list, pt_map)
This function is designed to work properly for the translation of effects at call sites.
#define points_to_approximation(x)
#define points_to_sink(x)
#define points_to_graph_undefined
#define points_to_graph_bottom(x)
#define points_to_source(x)
static hash_table pl
properties are stored in this hash table (string -> property) for fast accesses.
const char * entity_user_name(entity e)
Since entity_local_name may contain PIPS special characters such as prefixes (label,...
expression entity_to_expression(entity e)
if v is a constant, returns a constant call.
reference add_subscript_to_reference(reference r, expression s)
Add a last subscript expression s to a reference r.
expression int_to_expression(_int i)
transform an int into an expression and generate the corresponding entity if necessary; it is not cle...
statement get_current_statement_from_statement_global_stack(void)
bool type_equal_p(type, type)
type entity_basic_concrete_type(entity)
retrieves or computes and then returns the basic concrete type of an entity
list struct_type_to_fields(type)
type compute_basic_concrete_type(type)
computes a new type which is the basic concrete type of the input type (this new type is not stored i...
type reference_to_type(reference)
bool type_struct_variable_p(type)
#define value_reference(x)
#define reference_variable(x)
#define entity_undefined_p(x)
#define transformer_arguments(x)
#define reference_indices(x)
#define value_reference_p(x)
#define statement_undefined_p(x)
#define entity_initial(x)
static transformer substitute_stubs_in_transformer_with_translation_binding(transformer tf, pt_map binding_g, bool backward_p)
points_to_graph get_points_to_graph_from_statement(_UNUSED_ statement st)
Interface with points-to library.
list semantics_expression_to_points_to_sinks(expression e)
Returns a list of cells.
transformer substitute_struct_stub_in_transformer(transformer t, reference l, type lt, reference r, type rt __attribute__((unused)), bool backward_p, list *ppl)
list semantics_expression_to_points_to_sources(expression e)
Special wrapping for the semantics analyses.
list expression_to_points_to_sinks(_UNUSED_ expression e, _UNUSED_ points_to_graph in)
transformer substitute_stubs_in_transformer(transformer tf, call c, statement s, bool backward_p)
Exploit the binding map to substitute calles's stubs by actual arguments, which may be stubs of the c...
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.
transformer new_substitute_stubs_in_transformer(transformer tf, call c, statement s, bool backward_p)
transformer substitute_scalar_stub_in_transformer(transformer tf, entity se, entity de, bool backward_p, list *ppl)
If both "se", source entity, and "de", destination entity, are defined, substitute the values of "se"...
list expression_to_points_to_sources(_UNUSED_ expression e, _UNUSED_ points_to_graph in)
static bool relevant_translation_pair_p(points_to pt, list ll)
The sources of the relevant points-to.
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.