]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/graphds.h
[PR89528] reset debug uses of return value when dropping dead RTL call
[thirdparty/gcc.git] / gcc / graphds.h
index bc35479461f1afa78204125dbf70e04c9655712c..68adc4976af98128e398db49df3cc541587c2ce3 100644 (file)
@@ -1,6 +1,5 @@
 /* Graph representation.
-   Copyright (C) 2007, 2008
-   Free Software Foundation, Inc.
+   Copyright (C) 2007-2019 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -18,6 +17,9 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
+#ifndef GCC_GRAPHDS_H
+#define GCC_GRAPHDS_H
+
 /* Structure representing edge of a graph.  */
 
 struct graph_edge
@@ -44,20 +46,23 @@ struct vertex
 
 struct graph
 {
-  int n_vertices;      /* Number of vertices.  */
-  struct vertex *vertices;
-                       /* The vertices.  */
-  htab_t indices;      /* Fast lookup for indices.  */
+  int n_vertices;         /* Number of vertices.  */
+  struct vertex *vertices; /* The vertices.  */
+  struct obstack ob;      /* Obstack for vertex and edge allocation.  */
 };
 
 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, heap) **, 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 */