25 #include "pips_config.h"
60 (sccflags_mark(dg_vertex_label_sccflags((dg_vertex_label) \
61 vertex_vertex_label(v))) = OLD_MARK)
63 (sccflags_mark(dg_vertex_label_sccflags((dg_vertex_label) \
64 vertex_vertex_label(v))) = NEW_MARK)
65 #define MARKED_NEW_P(v) \
66 (sccflags_mark(dg_vertex_label_sccflags((dg_vertex_label) \
67 vertex_vertex_label(v))) == NEW_MARK)
141 pips_debug(7,
"successor before is %zd (%zd %zd %zd)\n",
147 pips_debug(7,
"successor after is %zd (%zd %zd %zd)\n",
236 pips_debug(3,
"Strongly connected components:\n");
269 while(no_ins !=
NIL) {
274 no_ins =
CDR(no_ins);
289 no_ins =
CONS(
SCC, ss, no_ins);
297 fprintf(stderr,
"[TopSortSccs] topological order:\n");
347 fprintf(stderr,
"Scc's statements : ");
357 fprintf(stderr,
"Strongly connected components:\n");
361 fprintf(stderr,
"Empty list of scc\n");
float a2sf[2] __attribute__((aligned(16)))
USER generates a user error (i.e., non fatal) by printing the given MSG according to the FMT.
sccflags make_sccflags(scc a1, intptr_t a2, intptr_t a3, intptr_t a4)
scc make_scc(list a1, intptr_t a2)
void const char const char const int
#define MIN(x, y)
minimum and maximum if they are defined somewhere else, they are very likely to be defined the same w...
#define sccflags_undefined
#define dg_vertex_label_statement(x)
#define sccflags_lowlink(x)
#define sccflags_enclosing_scc(x)
#define dg_vertex_label_sccflags(x)
#define sccflags_dfnumber(x)
struct _newgen_struct_dg_vertex_label_ * dg_vertex_label
struct _newgen_struct_vertex_ * vertex
#define region
simulation of the type region
#define successor_vertex(x)
#define vertex_vertex_label(x)
#define vertex_successors(x)
struct _newgen_struct_successor_ * successor
#define SUCCESSOR(x)
SUCCESSOR.
#define graph_vertices(x)
#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.
#define MAPL(_map_list_cp, _code, _l)
Apply some code on the addresses of all the elements of a list.
statement vertex_to_statement(vertex v)
Vertex_to_statement looks for the statement that is pointed to by vertex v.
#define pips_debug
these macros use the GNU extensions that allow variadic macros, including with an empty list.
#define pips_assert(what, predicate)
common macros, two flavors depending on NDEBUG
int bool
we cannot use an enum or stdbool because we need to be compatible with newgen, thus boolean need to h...
statement ordering_to_statement(int o)
Get the statement associated to a given ordering.
#define statement_number(x)
#define statement_undefined
#define VERTEX_ENCLOSING_SCC(v)
macros
#define INSERT_AT_END(bl, el, c)
a macro to insert an element at the end of a list.
void prettyprint_dependence_graph(FILE *, statement, graph)
Print all edges and arcs.
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
void ComputeInDegree(graph g, set region, int l)
list FindAndTopSortSccs(graph g, set region, int l)
sccs FindSccs(graph g, set region, int level)
FindSccs is the interface function to compute the SCCs of a graph.
list TopSortSccs(graph __attribute__((unused)) g, set region, int l, sccs Components)
void reset_sccs_drivers()
int IsInStack(vertex v)
this function checks if vertex v is in the stack
void set_sccs_drivers(bool *ignore_this_vertex_fun, bool *ignore_this_successor_fun)
void LowlinkCompute(graph g, set region, vertex v, int level, sccs Components)
static bool(* ignore_this_successor_drv)(vertex, set, successor, int)=0
static int Count
a set of variables shared by the functions of this package.
static bool(* ignore_this_vertex_drv)(set, vertex)=0
#define NEW_MARK
a set of macros to mark a vertex as 'not visited' or 'visited' and to check if a node has already bee...
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.