On Fri, Jun 2, 2017 at 1:51 PM, Bin Cheng <bin.ch...@arm.com> wrote: > Hi, > This patch extends graph data structure in two ways: > 1) Passes private data to callback function of for_each_edge. > 2) Adds new callback function to graph traversing functions like > graphds_scc and graphds_dfs. > The callback function acts as a supplement constraint for edges on top > of subgraph constraint. > With this change, the traversing function not only skips vertices/edges > not belong to subgraph, > but also skips edges when the callback function returns true on it. As > a result, pass like loop > distribution can traverse dependence graph with some dependence edges > skipped. > > Bootstrap and test at O2/O3 on x86_64 and AArch64. is it OK?
Ok. Richard. > Thanks, > bin > 2017-05-31 Bin Cheng <bin.ch...@arm.com> > > * graphds.c (add_edge): Intitialize edge's attached data. > (foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function > pointer parameter. Call pointed function on each edge during > graph traversing. Skip traversing the edge when the function > returns true. > (graphds_dfs, graphds_scc): Ditto. > (for_each_edge): New parameter. Pass the new parameter to callback > function. > * graphds.h (skip_edge_callback): New function pointer type. > (graphds_dfs, graphds_scc): New function pointer parameter. > (graphds_edge_callback, for_each_edge): New parameter.