GCC Middle and Back End API Reference
Main Page
Namespaces
Data Structures
Files
File List
Globals
ipa-ref-inline.h
Go to the documentation of this file.
1
/* IPA reference lists.
2
Copyright (C) 2010-2013 Free Software Foundation, Inc.
3
Contributed by Jan Hubicka
4
5
This file is part of GCC.
6
7
GCC is free software; you can redistribute it and/or modify it under
8
the terms of the GNU General Public License as published by the Free
9
Software Foundation; either version 3, or (at your option) any later
10
version.
11
12
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13
WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15
for more details.
16
17
You should have received a copy of the GNU General Public License
18
along with GCC; see the file COPYING3. If not see
19
<http://www.gnu.org/licenses/>. */
20
21
/* Return callgraph node REF is referring. */
22
static
inline
struct
cgraph_node
*
23
ipa_ref_node
(
struct
ipa_ref
*ref)
24
{
25
return
cgraph
(ref->
referred
);
26
}
27
28
/* Return varpool node REF is referring. */
29
30
static
inline
struct
varpool_node
*
31
ipa_ref_varpool_node
(
struct
ipa_ref
*ref)
32
{
33
return
varpool
(ref->
referred
);
34
}
35
36
/* Return cgraph node REF is in. */
37
38
static
inline
struct
cgraph_node
*
39
ipa_ref_referring_node
(
struct
ipa_ref
*ref)
40
{
41
return
cgraph
(ref->
referring
);
42
}
43
44
/* Return varpool node REF is in. */
45
46
static
inline
struct
varpool_node
*
47
ipa_ref_referring_varpool_node
(
struct
ipa_ref
*ref)
48
{
49
return
varpool
(ref->
referring
);
50
}
51
52
/* Return reference list REF is in. */
53
54
static
inline
struct
ipa_ref_list
*
55
ipa_ref_referring_ref_list
(
struct
ipa_ref
*ref)
56
{
57
return
&ref->
referring
->
ref_list
;
58
}
59
60
/* Return reference list REF is in. */
61
62
static
inline
struct
ipa_ref_list
*
63
ipa_ref_referred_ref_list
(
struct
ipa_ref
*ref)
64
{
65
return
&ref->
referred
->
ref_list
;
66
}
67
68
/* Return first reference in LIST or NULL if empty. */
69
70
static
inline
struct
ipa_ref
*
71
ipa_ref_list_first_reference
(
struct
ipa_ref_list
*list)
72
{
73
if
(!
vec_safe_length
(list->
references
))
74
return
NULL
;
75
return
&(*list->
references
)[0];
76
}
77
78
/* Return first referring ref in LIST or NULL if empty. */
79
80
static
inline
struct
ipa_ref
*
81
ipa_ref_list_first_referring
(
struct
ipa_ref_list
*list)
82
{
83
if
(!list->
referring
.length ())
84
return
NULL
;
85
return
list->
referring
[0];
86
}
87
88
/* Clear reference list. */
89
90
static
inline
void
91
ipa_empty_ref_list
(
struct
ipa_ref_list
*list)
92
{
93
list->
referring
.create (0);
94
list->
references
=
NULL
;
95
}
96
97
/* Clear reference list. */
98
99
static
inline
unsigned
int
100
ipa_ref_list_nreferences
(
struct
ipa_ref_list
*list)
101
{
102
return
vec_safe_length
(list->
references
);
103
}
104
105
#define ipa_ref_list_reference_iterate(L,I,P) \
106
vec_safe_iterate ((L)->references, (I), &(P))
107
#define ipa_ref_list_referring_iterate(L,I,P) \
108
(L)->referring.iterate ((I), &(P))
gcc
ipa-ref-inline.h
Generated by
1.8.1.1