6 #ifndef rice_header_included
7 #define rice_header_included
33 #define VERTEX_ENCLOSING_SCC(v) \
34 sccflags_enclosing_scc(dg_vertex_label_sccflags((dg_vertex_label) \
35 vertex_vertex_label(v)))
42 #define INSERT_AT_END(bl, el, c) \
43 { cons *_insert_ = c; if (bl == NIL) bl = _insert_; else CDR(el) = _insert_; el = _insert_; CDR(el) = NIL; }
bool rice_distribute_only
to know if do loop parallelization must be done
sccs FindSccs(graph, set, int)
FindSccs is the interface function to compute the SCCs of a graph.
int statement_imbrication_level(statement)
bool ignore_this_conflict(vertex, vertex, conflict, int)
codegen.c
bool strongly_connected_p(scc, int)
this function returns true if scc s is stronly connected at level l, i.e.
statement IsolatedStatement(scc, int, bool)
If the isolated statement is a CALL and is not a CONTINUE, regenerate the nested loops around it.
int enclosing
This is an horrendous hack.
statement find_level_l_loop_statement(scc, int)
s is a strongly connected component which is analyzed at level l.
bool contains_level_l_dependence(scc, set, int)
s is a strongly connected component for which a DO loop is being produced.
bool rice_all_dependence(string)
void set_sccs_drivers(bool(*)(set, vertex), bool(*)(vertex, set, successor, int))
scc.c
statement MakeNestOfParallelLoops(int, cons *, statement, bool)
this function creates a nest of parallel loops around an isolated statement whose iterations may exec...
statement rice_loop(statement, int, statement(*)(statement, graph, set, int, bool))
Eventually parallelize a do-loop with à la Rice algorithm.
statement ConnectedStatements(graph, scc, int, bool)
BB: ConnectedStatements() is called when s contains more than one vertex or one vertex dependent upon...
statement rice_statement(statement, int, statement(*)(statement, graph, set, int, bool))
void reset_sccs_drivers(void)
void rice_unstructured(unstructured, int, statement(*)(statement, graph, set, int, bool))
void print_list_entities(list)
void dump_sef(statement_effects)
icm.c
statement MakeNestOfStatementList(int, int, list *, list, list *, list *, bool)
list TopSortSccs(graph, set, int, sccs)
void LowlinkCompute(graph, set, vertex, int, sccs)
int IsInStack(vertex)
this function checks if vertex v is in the stack
list FindAndTopSortSccs(graph, set, int)
void ComputeInDegree(graph, set, int)
bool invariant_code_motion(const char *)
Phase that hoists loop invariant code out of loops.
statement MakeLoopAs(statement, tag, statement)
This function creates a new loop whose characteristics (index, bounds, ...) are similar to those of o...
statement CodeGenerate(statement, graph, set, int, bool)
bool do_it(string, bool, string, statement(*)(statement, graph, set, int, bool))
bool rice_data_dependence(string)
graph dg
external variables.
FI: I do not understand why the type is duplicated at the set level.
The structure used to build lists in NewGen.