annotate gcc/tree-ssa-alias.h @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 /* Tree based alias analysis and alias oracle.
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
2 Copyright (C) 2008-2020 Free Software Foundation, Inc.
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 Contributed by Richard Guenther <rguenther@suse.de>
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 This file is part of GCC.
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 GCC is free software; you can redistribute it and/or modify
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 under the terms of the GNU General Public License as published by
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 the Free Software Foundation; either version 3 of the License, or
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 (at your option) any later version.
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 GCC is distributed in the hope that it will be useful,
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 GNU General Public License for more details.
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 along with GCC; see the file COPYING3. If not see
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 <http://www.gnu.org/licenses/>. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 #ifndef TREE_SSA_ALIAS_H
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 #define TREE_SSA_ALIAS_H
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 /* The points-to solution.
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 The points-to solution is a union of pt_vars and the abstract
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 sets specified by the flags. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 struct GTY(()) pt_solution
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 {
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 /* Nonzero if points-to analysis couldn't determine where this pointer
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 is pointing to. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 unsigned int anything : 1;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 /* Nonzero if the points-to set includes any global memory. Note that
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 even if this is zero pt_vars can still include global variables. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 unsigned int nonlocal : 1;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
38 /* Nonzero if the points-to set includes the local escaped solution by
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
39 reference. */
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 unsigned int escaped : 1;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
42 /* Nonzero if the points-to set includes the IPA escaped solution by
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
43 reference. */
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
44 unsigned int ipa_escaped : 1;
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
45
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 /* Nonzero if the points-to set includes 'nothing', the points-to set
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 includes memory at address NULL. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 unsigned int null : 1;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
111
kono
parents: 67
diff changeset
50 /* Nonzero if the vars bitmap includes a variable included in 'nonlocal'. */
kono
parents: 67
diff changeset
51 unsigned int vars_contains_nonlocal : 1;
kono
parents: 67
diff changeset
52 /* Nonzero if the vars bitmap includes a variable included in 'escaped'. */
kono
parents: 67
diff changeset
53 unsigned int vars_contains_escaped : 1;
kono
parents: 67
diff changeset
54 /* Nonzero if the vars bitmap includes a anonymous heap variable that
kono
parents: 67
diff changeset
55 escaped the function and thus became global. */
kono
parents: 67
diff changeset
56 unsigned int vars_contains_escaped_heap : 1;
kono
parents: 67
diff changeset
57 /* Nonzero if the vars bitmap includes a anonymous variable used to
kono
parents: 67
diff changeset
58 represent storage pointed to by a restrict qualified pointer. */
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 unsigned int vars_contains_restrict : 1;
111
kono
parents: 67
diff changeset
60 /* Nonzero if the vars bitmap includes an interposable variable. */
kono
parents: 67
diff changeset
61 unsigned int vars_contains_interposable : 1;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 /* Set of variables that this pointer may point to. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 bitmap vars;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 };
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 /* Simplified and cached information about a memory reference tree.
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 Used by the alias-oracle internally and externally in alternate
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 interfaces. */
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
71 class ao_ref
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 {
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
73 public:
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 /* The original full memory reference tree or NULL_TREE if that is
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 not available. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 tree ref;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 /* The following fields are the decomposed reference as returned
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 by get_ref_base_and_extent. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 /* The base object of the memory reference or NULL_TREE if all of
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 the following fields are not yet computed. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 tree base;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 /* The offset relative to the base. */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
84 poly_int64 offset;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 /* The size of the access. */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
86 poly_int64 size;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 /* The maximum possible extent of the access or -1 if unconstrained. */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
88 poly_int64 max_size;
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 /* The alias set of the access or -1 if not yet computed. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 alias_set_type ref_alias_set;
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 /* The alias set of the base object or -1 if not yet computed. */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 alias_set_type base_alias_set;
111
kono
parents: 67
diff changeset
95
kono
parents: 67
diff changeset
96 /* Whether the memory is considered a volatile access. */
kono
parents: 67
diff changeset
97 bool volatile_p;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
98
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
99 bool max_size_known_p () const;
111
kono
parents: 67
diff changeset
100 };
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
102 /* Return true if the maximum size is known, rather than the special -1
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
103 marker. */
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
104
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
105 inline bool
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
106 ao_ref::max_size_known_p () const
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
107 {
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
108 return known_size_p (max_size);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
109 }
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 /* In tree-ssa-alias.c */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 extern void ao_ref_init (ao_ref *, tree);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 extern void ao_ref_init_from_ptr_and_size (ao_ref *, tree, tree);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 extern tree ao_ref_base (ao_ref *);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 extern alias_set_type ao_ref_alias_set (ao_ref *);
111
kono
parents: 67
diff changeset
116 extern alias_set_type ao_ref_base_alias_set (ao_ref *);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 extern bool ptr_deref_may_alias_global_p (tree);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
118 extern bool ptr_derefs_may_alias_p (tree, tree);
111
kono
parents: 67
diff changeset
119 extern bool ptrs_compare_unequal (tree, tree);
kono
parents: 67
diff changeset
120 extern bool ref_may_alias_global_p (tree);
kono
parents: 67
diff changeset
121 extern bool ref_may_alias_global_p (ao_ref *);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
122 extern bool refs_may_alias_p (tree, tree, bool = true);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 extern bool refs_may_alias_p_1 (ao_ref *, ao_ref *, bool);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 extern bool refs_anti_dependent_p (tree, tree);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 extern bool refs_output_dependent_p (tree, tree);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
126 extern bool ref_maybe_used_by_stmt_p (gimple *, tree, bool = true);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
127 extern bool ref_maybe_used_by_stmt_p (gimple *, ao_ref *, bool = true);
111
kono
parents: 67
diff changeset
128 extern bool stmt_may_clobber_global_p (gimple *);
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
129 extern bool stmt_may_clobber_ref_p (gimple *, tree, bool = true);
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
130 extern bool stmt_may_clobber_ref_p_1 (gimple *, ao_ref *, bool = true);
111
kono
parents: 67
diff changeset
131 extern bool call_may_clobber_ref_p (gcall *, tree);
kono
parents: 67
diff changeset
132 extern bool call_may_clobber_ref_p_1 (gcall *, ao_ref *);
kono
parents: 67
diff changeset
133 extern bool stmt_kills_ref_p (gimple *, tree);
kono
parents: 67
diff changeset
134 extern bool stmt_kills_ref_p (gimple *, ao_ref *);
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
135 enum translate_flags
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
136 { TR_TRANSLATE, TR_VALUEIZE_AND_DISAMBIGUATE, TR_DISAMBIGUATE };
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
137 extern tree get_continuation_for_phi (gimple *, ao_ref *, bool,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
138 unsigned int &, bitmap *, bool,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
139 void *(*)(ao_ref *, tree, void *,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
140 translate_flags *),
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
141 void *, translate_flags
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
142 = TR_VALUEIZE_AND_DISAMBIGUATE);
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
143 extern void *walk_non_aliased_vuses (ao_ref *, tree, bool,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
144 void *(*)(ao_ref *, tree, void *),
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
145 void *(*)(ao_ref *, tree, void *,
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
146 translate_flags *),
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
147 tree (*)(tree), unsigned &, void *);
111
kono
parents: 67
diff changeset
148 extern int walk_aliased_vdefs (ao_ref *, tree,
kono
parents: 67
diff changeset
149 bool (*)(ao_ref *, tree, void *),
kono
parents: 67
diff changeset
150 void *, bitmap *,
kono
parents: 67
diff changeset
151 bool *function_entry_reached = NULL,
kono
parents: 67
diff changeset
152 unsigned int limit = 0);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 extern void dump_alias_info (FILE *);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 extern void debug_alias_info (void);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
155 extern void dump_points_to_solution (FILE *, struct pt_solution *);
111
kono
parents: 67
diff changeset
156 extern void debug (pt_solution &ref);
kono
parents: 67
diff changeset
157 extern void debug (pt_solution *ptr);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 extern void dump_points_to_info_for (FILE *, tree);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 extern void debug_points_to_info_for (tree);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 extern void dump_alias_stats (FILE *);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
162
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
163 /* In tree-ssa-structalias.c */
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 extern unsigned int compute_may_aliases (void);
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
165 extern bool pt_solution_empty_p (const pt_solution *);
111
kono
parents: 67
diff changeset
166 extern bool pt_solution_singleton_or_null_p (struct pt_solution *, unsigned *);
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 extern bool pt_solution_includes_global (struct pt_solution *);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 extern bool pt_solution_includes (struct pt_solution *, const_tree);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 extern bool pt_solutions_intersect (struct pt_solution *, struct pt_solution *);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
170 extern void pt_solution_reset (struct pt_solution *);
111
kono
parents: 67
diff changeset
171 extern void pt_solution_set (struct pt_solution *, bitmap, bool);
67
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
172 extern void pt_solution_set_var (struct pt_solution *, tree);
f6334be47118 update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
parents: 63
diff changeset
173
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 extern void dump_pta_stats (FILE *);
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
175
63
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
176 extern GTY(()) struct pt_solution ipa_escaped_pt;
b7f97abdc517 update gcc from gcc-4.5.0 to gcc-4.6
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents: 55
diff changeset
177
111
kono
parents: 67
diff changeset
178 /* Return true, if the two ranges [POS1, SIZE1] and [POS2, SIZE2]
kono
parents: 67
diff changeset
179 overlap. SIZE1 and/or SIZE2 can be (unsigned)-1 in which case the
kono
parents: 67
diff changeset
180 range is open-ended. Otherwise return false. */
kono
parents: 67
diff changeset
181
kono
parents: 67
diff changeset
182 static inline bool
kono
parents: 67
diff changeset
183 ranges_overlap_p (HOST_WIDE_INT pos1,
kono
parents: 67
diff changeset
184 unsigned HOST_WIDE_INT size1,
kono
parents: 67
diff changeset
185 HOST_WIDE_INT pos2,
kono
parents: 67
diff changeset
186 unsigned HOST_WIDE_INT size2)
kono
parents: 67
diff changeset
187 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
188 if (size1 == 0 || size2 == 0)
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
189 return false;
111
kono
parents: 67
diff changeset
190 if (pos1 >= pos2
kono
parents: 67
diff changeset
191 && (size2 == (unsigned HOST_WIDE_INT)-1
kono
parents: 67
diff changeset
192 || pos1 < (pos2 + (HOST_WIDE_INT) size2)))
kono
parents: 67
diff changeset
193 return true;
kono
parents: 67
diff changeset
194 if (pos2 >= pos1
kono
parents: 67
diff changeset
195 && (size1 == (unsigned HOST_WIDE_INT)-1
kono
parents: 67
diff changeset
196 || pos2 < (pos1 + (HOST_WIDE_INT) size1)))
kono
parents: 67
diff changeset
197 return true;
kono
parents: 67
diff changeset
198
kono
parents: 67
diff changeset
199 return false;
kono
parents: 67
diff changeset
200 }
kono
parents: 67
diff changeset
201
kono
parents: 67
diff changeset
202
55
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203
77e2b8dfacca update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 #endif /* TREE_SSA_ALIAS_H */