201 bool null_dereferencing_p
203 bool nowhere_dereferencing_p
208 if(!nowhere_dereferencing_p && !null_dereferencing_p) {
216 nowhere_dereferencing_p,
217 null_dereferencing_p);
335 bool nowhere_dereferencing_p,
336 bool null_dereferencing_p)
408 bool source_p =
true;
448 if(!evaluated_p || eval_p) {
449 bool null_dereferencing_p
451 bool nowhere_dereferencing_p
470 pips_user_warning(
"No pointed location for variable \"%s\" and reference \"%s\"\n",
476 if(!evaluated_p && eval_p) {
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_)
approximation copy_approximation(approximation p)
APPROXIMATION.
descriptor make_descriptor_none(void)
cell copy_cell(cell p)
CELL.
points_to make_points_to(cell a1, cell a2, approximation a3, descriptor a4)
points_to copy_points_to(points_to p)
POINTS_TO.
void free_expression(expression p)
reference copy_reference(reference p)
REFERENCE.
#define add_arc_to_pt_map(a, s)
#define source_in_pt_map_p(cell, set)
bool cell_typed_anywhere_locations_p(cell c)
test if a cell is the bottom of the lattice
void const char const char const int
pt_map reference_dereferencing_to_points_to(reference r, pt_map in, bool nowhere_dereferencing_p, bool null_dereferencing_p)
Can we execute the reference r in points-to context "in" without segfaulting?
bool expression_to_points_to_cell_p(expression e)
Can expression e be reduced to a reference, without requiring an evaluation?
list dereferencing_to_sinks(expression a, pt_map in, bool eval_p)
Returns "sinks", the list of cells pointed to by expression "a" according to points-to graph "in".
bool pointer_points_to_reference_p(reference r __attribute__((unused)))
see if a points_to_reference includes a pointer dereferencing: this is impossible if the points-to re...
pt_map dereferencing_to_points_to(expression p, pt_map in)
Make sure that expression p can be dereferenced in points-to graph "in".
pt_map dereferencing_subscript_to_points_to(subscript sub, pt_map in)
FI: As usual in dereferencing.c, it is not clear that this piece of code has not been implemented som...
void pointer_reference_dereferencing_to_points_to(reference r, pt_map in)
type points_to_cell_to_type(cell, bool *)
FI: I need more generality than is offered by cell_to_type()
reference cell_any_reference(cell)
API for reference.
bool points_to_cell_equal_p(cell, cell)
bool anywhere_cell_p(cell)
Is it an anywhere cell?
bool nowhere_cell_p(cell)
Target of an undefined pointer.
list merge_points_to_cell_lists(list, list)
Add in "l1" elements of "l2" that are not yet in "l1".
bool adapt_reference_to_type(reference, type, int(*)(void))
FI: a really stupid function...
void complete_points_to_reference_with_zero_subscripts(reference)
string effect_reference_to_string(reference)
#define cell_undefined_p(x)
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
#define ENDP(l)
Test if a list is empty.
#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 CDR(pcons)
Get the list less its first element.
list gen_full_copy_list(list l)
Copy a list structure with element copy.
#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])
void add_arc_to_points_to_context(points_to pt)
FI: it should rather work the other way round, with add_arc_to_statement_points_to_context() calling ...
pt_map call_to_points_to(call c, pt_map pt_in, list el, bool side_effect_p)
Three different kinds of calls are distinguished:
pt_map expressions_to_points_to(list el, pt_map pt_in, bool side_effect_p)
Compute the points-to information pt_out that results from the evaluation of a possibly empty list of...
pt_map expression_to_points_to(expression e, pt_map pt_in, bool side_effect_p)
Update pt_in and pt_out according to expression e.
list pointer_source_to_sinks(cell, pt_map)
Returns the sinks for a source cell "sc" of type pointer according to the points-to relation "in".
list expression_to_points_to_sinks(expression, pt_map)
The returned list contains cells used in "in".
void add_arc_to_statement_points_to_context(points_to)
list expression_to_points_to_sources(expression, pt_map)
expression_to_points_to_sources() does not always work, especially with pointer arithmetic or subscri...
bool statement_points_to_context_defined_p(void)
void remove_points_to_arcs(cell, cell, pt_map)
void remove_impossible_arcs_to_null(list *, pt_map)
You know that null and undefined cells in "*pL" are impossible because of the operation that is going...
int points_to_context_statement_line_number(void)
list source_to_sinks(cell, pt_map, bool)
Return a list of cells, "sinks", that are sink for some arc whose source is "source" or related to "s...
#define points_to_approximation(x)
#define points_to_sink(x)
#define points_to_graph_bottom(x)
#define POINTS_TO(x)
POINTS_TO.
#define points_to_graph_set(x)
#define points_to_source(x)
string reference_to_string(reference r)
#define ENTITY_PLUS_C_P(e)
#define ENTITY_FIELD_P(e)
C data structure and pointer management.
const char * entity_user_name(entity e)
Since entity_local_name may contain PIPS special characters such as prefixes (label,...
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.
expression pointer_reference_to_expression(reference r)
Assume p is a pointer.
list subscript_expressions_to_constant_subscript_expressions(list sl)
make a full copy of the subscript expression list, preserve constant subscripts, replace non-constant...
type expression_to_type(expression)
For an array declared as int a[10][20], the type returned for a[i] is int [20].
bool array_of_pointers_type_p(type)
int variable_dimension_number(variable)
type type_to_pointed_type(type)
returns t if t is not a pointer type, and the pointed type if t is a pointer type.
type entity_basic_concrete_type(entity)
retrieves or computes and then returns the basic concrete type of an entity
bool pointer_type_p(type)
Check for scalar pointers.
bool struct_type_p(type)
Returns true if t is of type derived and if the derived type is a struct.
bool array_of_struct_type_p(type)
#define syntax_reference_p(x)
#define syntax_reference(x)
#define reference_variable(x)
@ is_syntax_sizeofexpression
#define EXPRESSION(x)
EXPRESSION.
#define subscript_indices(x)
#define reference_indices(x)
#define subscript_array(x)
#define syntax_subscript(x)
#define call_arguments(x)
#define expression_syntax(x)
#define semantics_user_warning
The structure used to build lists in NewGen.
string words_to_string(cons *lw)