]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/graphds.h
c++: Handle multiple aggregate overloads [PR95319].
[thirdparty/gcc.git] / gcc / graphds.h
index 23f7fb93784dee2d7df7bb862f9f54efcbad3968..6dcfee0a790896cb93fed5b3498749c1168a6eac 100644 (file)
@@ -1,12 +1,11 @@
 /* Graph representation.
-   Copyright (C) 2007
-   Free Software Foundation, Inc.
+   Copyright (C) 2007-2020 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
 GCC is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
+Software Foundation; either version 3, or (at your option) any later
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,9 +14,11 @@ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 for more details.
 
 You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING.  If not, write to the Free
-Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA.  */
+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.  */
 
@@ -45,19 +46,23 @@ struct vertex
 
 struct graph
 {
-  int n_vertices;      /* Number of vertices.  */
-  struct vertex *vertices;
-                       /* The vertices.  */
+  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 */