88 extern char *
int2a(
int);
105 bool ready_p =
false;
124 if(
Ready_p(p, Processed, Reachable))
252 },
exit, nodes_l_exit) ;
254 nodes_l =
gen_nconc(nodes_l, nodes_l_exit);
float a2sf[2] __attribute__((aligned(16)))
USER generates a user error (i.e., non fatal) by printing the given MSG according to the FMT.
points_to_graph make_points_to_graph(bool a1, set a2)
#define CONTROL_MAP(ctl, code, c, list)
Macro to walk through all the controls reachable from a given control node of an unstructured.
#define FORWARD_CONTROL_MAP(ctl, code, c, list)
Walk through all the controls forward-reachable from a given control node of an unstructured.
#define NIL
The empty list (nil in Lisp)
list gen_copy_seq(list l)
Copy a list structure.
list gen_nconc(list cp1, list cp2)
physically concatenates CP1 and CP2 but do not duplicates the elements
#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.
_uint hash_string_rank(const void *, size_t)
en s'inspirant vaguement de Fast Hashing of Variable-Length Text Strings Peter K.
struct _newgen_struct_control_ * control
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
bool set_intersection_p(const set, const set)
returns whether s1 n s2 <> 0 complexity of the intersection
set set_del_element(set, const set, const void *)
set set_intersection(set, const set, const set)
set set_assign(set, const set)
Assign a set with the content of another set.
set set_difference(set, const set, const set)
#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 := {}.
bool set_belong_p(const set, const void *)
set set_union(set, const set, const set)
set set_make(set_type)
Create an empty set of any type but hash_private.
set set_add_element(set, const set, const void *)
static bool statement_equal_p(statement s1, statement s2)
bool control_equal_p(const void *vc1, const void *vc2)
set ready_to_be_processed_set(control n, set Processed, set Reachable)
A set containing all the successors of n that are ready to be processed.
static pt_map cyclic_graph_to_points_to(set ctrls, pt_map in, bool store __attribute__((unused)))
static pt_map control_to_points_to(control c, pt_map in, __attribute__((__unused__)) bool store)
pt_map new_points_to_unstructured(unstructured uns, pt_map pt_in_g, bool __attribute__((__unused__)) store)
_uint control_rank(const void *vc, size_t size)
create a key which is the statement number
bool control_in_set_p(control c, set s)
test if a control belong to a set
bool Ready_p(control c, set Processed, set Reachable)
A node is ready to be processed if its predecessors are not reachable or processed.
_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 ...
pt_map full_copy_pt_map(pt_map)
pt_map points_to_graph_assign(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.
pt_map merge_points_to_graphs(pt_map, pt_map)
#define points_to_graph_set(x)
list unstructured_to_trail(unstructured u)
#define unstructured_control
After the modification in Newgen: unstructured = entry:control x exit:control we have create a macro ...
#define control_predecessors(x)
#define statement_ordering(x)
#define control_successors(x)
#define unstructured_exit(x)
#define control_statement(x)
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.