Skip to content
Extraits de code Groupes Projets
Valider 9478d86e rédigé par Nicolas MARIE's avatar Nicolas MARIE
Parcourir les fichiers

fixe loop detection system

parent 39519d89
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -77,7 +77,7 @@ public:
void alloc_edge_aux(function *fun);
void free_edge_aux(function *fun);
void mark_edge(function *fun);
void mark_edge(basic_block bb, int mark);
void mark_edge(basic_block bb);
// rank definition
void rank_collective(function *fun);
......
......@@ -64,8 +64,6 @@ unsigned int pass_mpi_collective::execute(function *fun)
alloc_edge_aux(fun);
mark_edge(fun);
reset_bb_mark(fun);
rank_collective(fun);
cfgviz_dump(fun, "_split");
......@@ -401,30 +399,25 @@ void pass_mpi_collective::free_edge_aux(function *fun)
void pass_mpi_collective::mark_edge(function *fun)
{
mark_edge(ENTRY_BLOCK_PTR_FOR_FN(fun), 1);
mark_edge(ENTRY_BLOCK_PTR_FOR_FN(fun));
}
void pass_mpi_collective::mark_edge(basic_block bb, int mark)
void pass_mpi_collective::mark_edge(basic_block bb)
{
edge e;
edge_iterator ei;
basic_block bb_dest;
int dest_mark;
((bb_data *) bb->aux)->mark = mark;
((bb_data *) bb->aux)->mark = 1;
FOR_EACH_EDGE(e, ei, bb->succs)
{
bb_dest = e->dest;
dest_mark = ((bb_data *) bb_dest->aux)->mark;
if (dest_mark > 0 && dest_mark < mark)
if (((bb_data *) e->dest->aux)->mark)
{
((edge_data *) e->aux)->loop = true;
}
if (((bb_data *) bb_dest->aux)->mark == 0)
{
mark_edge(bb_dest, mark + 1);
} else {
mark_edge(e->dest);
}
}
((bb_data *) bb->aux)->mark = 0;
}
void pass_mpi_collective::rank_collective(function *fun)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter