74 (
int(*)(
const void*,
const void*))
106 (
int(*)(
const void*,
const void*))
192 bool found_p =
false;
193 bool freed_p =
false;
477 bool good_result_p =
true;
479 return (good_result_p);
520 pts_to_set =
set_union(pts_to_set, pts_to_set,
531 (
const void*,
const void*))
536 (DBR_INIT_POINTS_TO_LIST,
module_name, init_pts_to_list);
544 bool good_result_p =
true;
545 return (good_result_p);
625 pips_debug(1,
"considering program \"%s\" with main \"%s\"\n", name,
635 pips_assert(
"some modules in the program", nmodules>0);
637 for(i=0; i<nmodules; i++) {
639 pips_debug(1,
"considering module %s\n", mname);
cell make_cell_reference(reference _field_)
points_to_list make_points_to_list(bool a1, list a2)
bool points_to_list_consistent_p(points_to_list p)
points_to copy_points_to(points_to p)
POINTS_TO.
points_to_list copy_points_to_list(points_to_list p)
POINTS_TO_LIST.
reference make_reference(entity a1, list a2)
bool entity_heap_location_p(entity b)
package abstract location.
#define remove_arc_from_pt_map(a, s)
#define add_arc_to_pt_map(a, s)
#define add_arc_to_simple_pt_map(a, s)
#define pt_map_undefined_p(pt)
#define consistent_pt_map_p(s)
bool stub_entity_of_module_p(entity s, entity m)
size_t gen_array_nitems(const gen_array_t a)
void gen_array_full_free(gen_array_t a)
void * gen_array_item(const gen_array_t a, size_t i)
void GenericCleanEntities(list el, entity function, bool fortran_p)
Useful when the user edit a source file and parse it again or when a program transformation is perfor...
void make_effects_private_current_context_stack(void)
void reset_effects_private_current_context_stack(void)
bool formal_parameter_points_to_cell_p(cell)
bool location_entity_of_module_p(entity, entity)
bool points_to_cell_equal_p(cell, cell)
void store_or_update_pt_to_list(statement, points_to_list)
void init_pt_to_list(void)
void reset_pt_to_list(void)
statement_points_to get_pt_to_list(void)
int points_to_compare_cells(const void *, const void *)
Comparison of two points-to arcs based on their source and sink nodes.
bool stub_points_to_cell_p(cell)
#define approximation_tag(x)
#define approximation_exact_p(x)
#define approximation_may_p(x)
bool compilation_unit_p(const char *module_name)
The names of PIPS entities carry information about their nature.
const char * module_name(const char *s)
Return the module part of an entity name.
bool get_bool_property(const string)
FC 2015-07-20: yuk, moved out to prevent an include cycle dependency include "properties....
void reset_current_module_entity(void)
Reset the current module entity.
void reset_current_module_statement(void)
Reset the current module statement.
statement set_current_module_statement(statement)
Set the current module statement.
statement get_current_module_statement(void)
Get the current module statement.
entity set_current_module_entity(entity)
static.c
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)
void gen_list_and_not(list *a, const list b)
Compute A = A inter non B:
#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
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.
list gen_full_copy_list(list l)
Copy a list structure with element copy.
string db_get_memory_resource(const char *rname, const char *oname, bool pure)
Return the pointer to the resource, whatever it is.
gen_array_t db_get_module_list(void)
Get an array of all the modules (functions, procedures and compilation units) of a workspace.
#define DB_PUT_MEMORY_RESOURCE(res_name, own_name, res_val)
conform to old interface.
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_user_warning
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
#define pips_internal_error
set set_generic_make(set_type, hash_equals_t, hash_rank_t)
what about this replacement? #define SET_MAP(the_item, the_code, the_set) \ { SET_FOREACH(void *,...
bool set_empty_p(const set)
tell whether set s is empty.
set set_assign_list(set, const list)
assigns a list contents to a set all duplicated elements are lost
list set_to_list(const set)
create a list from a set the set is not freed
list set_to_sorted_list(const set, gen_cmp_func_t)
#define SET_FOREACH(type_name, the_item, the_set)
enumerate set elements in their internal order.
set set_clear(set)
Assign the empty set to s s := {}.
set set_union(set, const set, const set)
void points_to_storage(set pts_to_set, statement s, bool store)
Store a sorted copy of the points-to pts_to_set associated to a statement s in the points-to hash-tab...
bool init_points_to_analysis(char *module_name)
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 update_points_to_graph_with_arc(points_to a, pt_map pt)
Instead of simply adding the new arc, make sure the consistency is not broken.
bool initial_points_to(char *name)
Retrieve points-to that are statically initialized, especially in compilation units.
static bool fast_interprocedural_points_to_p
static bool generic_points_to_analysis(char *module_name)
Pass INTRAPROCEDURAL_POINTS_TO_ANALYSIS.
bool interprocedural_points_to_analysis_p()
void init_points_to_context(pt_map init)
void clean_up_points_to_stubs(entity module)
bool intraprocedural_points_to_analysis(char *module_name)
pt_map get_points_to_context()
void reset_points_to_context()
bool fast_interprocedural_points_to_analysis(char *module_name)
bool program_points_to(char *name)
void update_points_to_context_with_arc(points_to pt)
Same as , but be careful about the arc before adding it to the points-to context.
pt_map points_to_to_context_points_to(pt_map in)
Return the subset of "in" that is related to formal parameters and stubs.
void fi_points_to_storage(pt_map ptm, statement s, bool store)
static pt_map points_to_context
bool interprocedural_points_to_analysis(char *module_name)
bool fast_interprocedural_points_to_analysis_p()
static bool interprocedural_points_to_p
string get_main_entity_name(void)
Return the local name of the main module if it is available, or the local name of any module by defau...
void add_arc_to_statement_points_to_context(points_to)
set formal_points_to_parameter(cell)
We want a recursive descent on the type of the formal parameter, once we found a pointer type we begu...
void reset_statement_points_to_context(void)
_uint points_to_rank(const void *, size_t)
create a key which is a concatenation of the source's name, the sink's name and the approximation of ...
void update_statement_points_to_context_with_arc(points_to)
pt_map graph_assign_list(pt_map, list)
FI: I add functions dealing with points_to_graph variable, i.e.
void init_statement_points_to_context(void)
pt_map full_copy_pt_map(pt_map)
pt_map statement_to_points_to(statement, pt_map)
See points_to_statement()
int points_to_equal_p(const void *, const void *)
returns true if two points-to arcs "vpt1" and "vpt2" are equal.
set points_to_function_projection(set)
"pts" is the points-to relation existing at the return point of a function.
#define points_to_approximation(x)
#define points_to_list_undefined
#define points_to_sink(x)
#define points_to_list_list(x)
#define points_to_graph_bottom(x)
#define POINTS_TO(x)
POINTS_TO.
#define points_to_list_bottom(x)
struct _newgen_struct_points_to_list_ * points_to_list
#define points_to_graph_set(x)
#define points_to_source(x)
entity module_name_to_entity(const char *mn)
This is an alias for local_name_to_top_level_entity.
bool entity_main_module_p(entity e)
static int init
Maximal value set for Fortran 77.
const char * module_local_name(entity e)
Returns the module local user name.
bool formal_parameter_p(entity)
void free_statement_global_stack(void)
void make_statement_global_stack(void)
#define type_functional_p(x)
#define instruction_sequence_p(x)
#define value_reference(x)
#define reference_variable(x)
#define code_declarations(x)
#define sequence_statements(x)
#define instruction_sequence(x)
#define statement_instruction(x)
#define entity_initial(x)
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.