aboutsummaryrefslogtreecommitdiff
path: root/gcc/graphds.h
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2017-06-07 11:29:37 +0000
committerBin Cheng <amker@gcc.gnu.org>2017-06-07 11:29:37 +0000
commit04939ee6fd997de2278445a5092f5e1fd20dc486 (patch)
treea6e964f97c27b5d2e834a16f6f0a116e4f7b2ab3 /gcc/graphds.h
parent6355150f585e2d746a62df19ae89df7c93e8c3c7 (diff)
downloadgcc-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.h10
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 */