source: arduino-1-6-7/trunk/fuentes/arduino-ide-amd64/hardware/tools/avr/lib/gcc/avr/4.9.2/plugin/include/ipa-ref-inline.h @ 4837

Last change on this file since 4837 was 4837, checked in by daduve, 2 years ago

Adding new version

File size: 2.6 KB
Line 
1/* IPA reference lists.
2   Copyright (C) 2010-2014 Free Software Foundation, Inc.
3   Contributed by Jan Hubicka
4
5This file is part of GCC.
6
7GCC is free software; you can redistribute it and/or modify it under
8the terms of the GNU General Public License as published by the Free
9Software Foundation; either version 3, or (at your option) any later
10version.
11
12GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or
14FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15for more details.
16
17You should have received a copy of the GNU General Public License
18along with GCC; see the file COPYING3.  If not see
19<http://www.gnu.org/licenses/>.  */
20
21/* Return callgraph node REF is referring.  */
22static inline struct cgraph_node *
23ipa_ref_node (struct ipa_ref *ref)
24{
25  return cgraph (ref->referred);
26}
27
28/* Return varpool node REF is referring.  */
29
30static inline varpool_node *
31ipa_ref_varpool_node (struct ipa_ref *ref)
32{
33  return varpool (ref->referred);
34}
35
36/* Return cgraph node REF is in.  */
37
38static inline struct cgraph_node *
39ipa_ref_referring_node (struct ipa_ref *ref)
40{
41  return cgraph (ref->referring);
42}
43
44/* Return varpool node REF is in.  */
45
46static inline varpool_node *
47ipa_ref_referring_varpool_node (struct ipa_ref *ref)
48{
49  return varpool (ref->referring);
50}
51
52/* Return reference list REF is in.  */
53
54static inline struct ipa_ref_list *
55ipa_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
62static inline struct ipa_ref_list *
63ipa_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
70static inline struct ipa_ref *
71ipa_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
80static inline struct ipa_ref *
81ipa_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
90static inline void
91ipa_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
99static inline unsigned int
100ipa_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))
Note: See TracBrowser for help on using the repository browser.