GCC Middle and Back End API Reference
Main Page
Namespaces
Data Structures
Files
File List
Globals
graphds.h
Go to the documentation of this file.
1
/* Graph representation.
2
Copyright (C) 2007-2013 Free Software Foundation, Inc.
3
4
This file is part of GCC.
5
6
GCC is free software; you can redistribute it and/or modify it under
7
the terms of the GNU General Public License as published by the Free
8
Software Foundation; either version 3, or (at your option) any later
9
version.
10
11
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12
WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with GCC; see the file COPYING3. If not see
18
<http://www.gnu.org/licenses/>. */
19
20
/* Structure representing edge of a graph. */
21
22
struct
graph_edge
23
{
24
int
src
,
dest
;
/* Source and destination. */
25
struct
graph_edge
*
pred_next
, *
succ_next
;
26
/* Next edge in predecessor and successor lists. */
27
void
*
data
;
/* Data attached to the edge. */
28
};
29
30
/* Structure representing vertex of a graph. */
31
32
struct
vertex
33
{
34
struct
graph_edge
*
pred
, *
succ
;
35
/* Lists of predecessors and successors. */
36
int
component
;
/* Number of dfs restarts before reaching the
37
vertex. */
38
int
post
;
/* Postorder number. */
39
void
*
data
;
/* Data attached to the vertex. */
40
};
41
42
/* Structure representing a graph. */
43
44
struct
graph
45
{
46
int
n_vertices
;
/* Number of vertices. */
47
struct
vertex
*
vertices
;
/* The vertices. */
48
struct
obstack
ob
;
/* Obstack for vertex and edge allocation. */
49
};
50
51
struct
graph
*
new_graph
(
int
);
52
void
dump_graph
(FILE *,
struct
graph
*);
53
struct
graph_edge
*
add_edge
(
struct
graph
*,
int
,
int
);
54
void
identify_vertices
(
struct
graph
*,
int
,
int
);
55
int
graphds_dfs
(
struct
graph
*,
int
*,
int
,
56
vec<int>
*,
bool
,
bitmap
);
57
int
graphds_scc
(
struct
graph
*,
bitmap
);
58
void
graphds_domtree
(
struct
graph
*,
int
,
int
*,
int
*,
int
*);
59
typedef
void (*
graphds_edge_callback
) (
struct
graph
*,
struct
graph_edge
*);
60
void
for_each_edge
(
struct
graph
*,
graphds_edge_callback
);
61
void
free_graph
(
struct
graph
*
g
);
gcc
graphds.h
Generated by
1.8.1.1