diff options
author | Bin Cheng <bin.cheng@arm.com> | 2017-06-07 11:29:37 +0000 |
---|---|---|
committer | Bin Cheng <amker@gcc.gnu.org> | 2017-06-07 11:29:37 +0000 |
commit | 04939ee6fd997de2278445a5092f5e1fd20dc486 (patch) | |
tree | a6e964f97c27b5d2e834a16f6f0a116e4f7b2ab3 /gcc/graphds.h | |
parent | 6355150f585e2d746a62df19ae89df7c93e8c3c7 (diff) | |
download | gcc-04939ee6fd997de2278445a5092f5e1fd20dc486.zip gcc-04939ee6fd997de2278445a5092f5e1fd20dc486.tar.gz gcc-04939ee6fd997de2278445a5092f5e1fd20dc486.tar.bz2 |
graphds.c (add_edge): Intitialize edge's attached data.
* 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.
From-SVN: r248964
Diffstat (limited to 'gcc/graphds.h')
-rw-r--r-- | gcc/graphds.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/graphds.h b/gcc/graphds.h index 500ea70..9f9fc10 100644 --- a/gcc/graphds.h +++ b/gcc/graphds.h @@ -55,12 +55,14 @@ struct graph *new_graph (int); void dump_graph (FILE *, struct graph *); struct graph_edge *add_edge (struct graph *, int, int); void identify_vertices (struct graph *, int, int); +typedef bool (*skip_edge_callback) (struct graph_edge *); int graphds_dfs (struct graph *, int *, int, - vec<int> *, bool, bitmap); -int graphds_scc (struct graph *, bitmap); + vec<int> *, bool, bitmap, skip_edge_callback = NULL); +int graphds_scc (struct graph *, bitmap, skip_edge_callback = NULL); void graphds_domtree (struct graph *, int, int *, int *, int *); -typedef void (*graphds_edge_callback) (struct graph *, struct graph_edge *); -void for_each_edge (struct graph *, graphds_edge_callback); +typedef void (*graphds_edge_callback) (struct graph *, + struct graph_edge *, void *); +void for_each_edge (struct graph *, graphds_edge_callback, void *); void free_graph (struct graph *g); #endif /* GCC_GRAPHDS_H */ |