0
|
1 /* General-purpose hooks.
|
|
2 Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008
|
|
3 Free Software Foundation, Inc.
|
|
4
|
|
5 This program is free software; you can redistribute it and/or modify it
|
|
6 under the terms of the GNU General Public License as published by the
|
|
7 Free Software Foundation; either version 3, or (at your option) any
|
|
8 later version.
|
|
9
|
|
10 This program is distributed in the hope that it will be useful,
|
|
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13 GNU General Public License for more details.
|
|
14
|
|
15 You should have received a copy of the GNU General Public License
|
|
16 along with this program; see the file COPYING3. If not see
|
|
17 <http://www.gnu.org/licenses/>.
|
|
18
|
|
19 In other words, you are welcome to use, share and improve this program.
|
|
20 You are forbidden to forbid anyone else to use, share and improve
|
|
21 what you give them. Help stamp out software-hoarding! */
|
|
22
|
|
23 /* This file contains generic hooks that can be used as defaults for
|
|
24 target or language-dependent hook initializers. */
|
|
25
|
|
26 #include "config.h"
|
|
27 #include "system.h"
|
|
28 #include "coretypes.h"
|
|
29 #include "tm.h"
|
|
30 #include "hooks.h"
|
|
31
|
|
32 /* Generic hook that does absolutely zappo. */
|
|
33 void
|
|
34 hook_void_void (void)
|
|
35 {
|
|
36 }
|
|
37
|
|
38 /* Generic hook that takes no arguments and returns false. */
|
|
39 bool
|
|
40 hook_bool_void_false (void)
|
|
41 {
|
|
42 return false;
|
|
43 }
|
|
44
|
|
45 /* Generic hook that takes no arguments and returns true. */
|
|
46 bool
|
|
47 hook_bool_void_true (void)
|
|
48 {
|
|
49 return true;
|
|
50 }
|
|
51
|
|
52 /* Generic hook that takes no arguments and returns NO_REGS. */
|
|
53 int
|
|
54 hook_int_void_no_regs (void)
|
|
55 {
|
|
56 return NO_REGS;
|
|
57 }
|
|
58
|
|
59 /* Generic hook that takes (bool) and returns false. */
|
|
60 bool
|
|
61 hook_bool_bool_false (bool a ATTRIBUTE_UNUSED)
|
|
62 {
|
|
63 return false;
|
|
64 }
|
|
65
|
|
66 /* Generic hook that takes (enum machine_mode) and returns false. */
|
|
67 bool
|
|
68 hook_bool_mode_false (enum machine_mode mode ATTRIBUTE_UNUSED)
|
|
69 {
|
|
70 return false;
|
|
71 }
|
|
72
|
|
73 /* Generic hook that takes (enum machine_mode, rtx) and returns false. */
|
|
74 bool
|
|
75 hook_bool_mode_const_rtx_false (enum machine_mode mode ATTRIBUTE_UNUSED,
|
|
76 const_rtx value ATTRIBUTE_UNUSED)
|
|
77 {
|
|
78 return false;
|
|
79 }
|
|
80
|
|
81 /* Generic hook that takes (enum machine_mode, rtx) and returns true. */
|
|
82 bool
|
|
83 hook_bool_mode_const_rtx_true (enum machine_mode mode ATTRIBUTE_UNUSED,
|
|
84 const_rtx value ATTRIBUTE_UNUSED)
|
|
85 {
|
|
86 return true;
|
|
87 }
|
|
88
|
|
89 /* Generic hook that takes (FILE *, const char *) and does nothing. */
|
|
90 void
|
|
91 hook_void_FILEptr_constcharptr (FILE *a ATTRIBUTE_UNUSED, const char *b ATTRIBUTE_UNUSED)
|
|
92 {
|
|
93 }
|
|
94
|
|
95 /* Used for the TARGET_ASM_CAN_OUTPUT_MI_THUNK hook. */
|
|
96 bool
|
|
97 hook_bool_const_tree_hwi_hwi_const_tree_false (const_tree a ATTRIBUTE_UNUSED,
|
|
98 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
|
|
99 HOST_WIDE_INT c ATTRIBUTE_UNUSED,
|
|
100 const_tree d ATTRIBUTE_UNUSED)
|
|
101 {
|
|
102 return false;
|
|
103 }
|
|
104
|
|
105 bool
|
|
106 hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED,
|
|
107 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
|
|
108 HOST_WIDE_INT c ATTRIBUTE_UNUSED,
|
|
109 const_tree d ATTRIBUTE_UNUSED)
|
|
110 {
|
|
111 return true;
|
|
112 }
|
|
113
|
|
114 bool
|
|
115 hook_bool_constcharptr_size_t_false (const char *a ATTRIBUTE_UNUSED,
|
|
116 size_t b ATTRIBUTE_UNUSED)
|
|
117 {
|
|
118 return false;
|
|
119 }
|
|
120
|
|
121 bool
|
|
122 hook_bool_size_t_constcharptr_int_true (size_t a ATTRIBUTE_UNUSED,
|
|
123 const char *b ATTRIBUTE_UNUSED,
|
|
124 int c ATTRIBUTE_UNUSED)
|
|
125 {
|
|
126 return true;
|
|
127 }
|
|
128
|
|
129 bool
|
|
130 default_can_output_mi_thunk_no_vcall (const_tree a ATTRIBUTE_UNUSED,
|
|
131 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
|
|
132 HOST_WIDE_INT c,
|
|
133 const_tree d ATTRIBUTE_UNUSED)
|
|
134 {
|
|
135 return c == 0;
|
|
136 }
|
|
137
|
|
138 int
|
|
139 hook_int_const_tree_0 (const_tree a ATTRIBUTE_UNUSED)
|
|
140 {
|
|
141 return 0;
|
|
142 }
|
|
143
|
|
144 /* ??? Used for comp_type_attributes, which ought to return bool. */
|
|
145 int
|
|
146 hook_int_const_tree_const_tree_1 (const_tree a ATTRIBUTE_UNUSED, const_tree b ATTRIBUTE_UNUSED)
|
|
147 {
|
|
148 return 1;
|
|
149 }
|
|
150
|
|
151 int
|
|
152 hook_int_rtx_0 (rtx a ATTRIBUTE_UNUSED)
|
|
153 {
|
|
154 return 0;
|
|
155 }
|
|
156
|
|
157 int
|
|
158 hook_int_rtx_bool_0 (rtx a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
|
|
159 {
|
|
160 return 0;
|
|
161 }
|
|
162
|
|
163 int
|
|
164 hook_int_size_t_constcharptr_int_0 (size_t a ATTRIBUTE_UNUSED,
|
|
165 const char *b ATTRIBUTE_UNUSED,
|
|
166 int c ATTRIBUTE_UNUSED)
|
|
167 {
|
|
168 return 0;
|
|
169 }
|
|
170
|
|
171 unsigned int
|
|
172 hook_uint_uint_constcharptrptr_0 (unsigned int a ATTRIBUTE_UNUSED,
|
|
173 const char **b ATTRIBUTE_UNUSED)
|
|
174 {
|
|
175 return 0;
|
|
176 }
|
|
177
|
|
178 void
|
|
179 hook_void_tree (tree a ATTRIBUTE_UNUSED)
|
|
180 {
|
|
181 }
|
|
182
|
|
183 void
|
|
184 hook_void_constcharptr (const char *a ATTRIBUTE_UNUSED)
|
|
185 {
|
|
186 }
|
|
187
|
|
188 void
|
|
189 hook_void_tree_treeptr (tree a ATTRIBUTE_UNUSED, tree *b ATTRIBUTE_UNUSED)
|
|
190 {
|
|
191 }
|
|
192
|
|
193 bool
|
|
194 hook_bool_tree_false (tree a ATTRIBUTE_UNUSED)
|
|
195 {
|
|
196 return false;
|
|
197 }
|
|
198
|
|
199 bool
|
|
200 hook_bool_const_tree_false (const_tree a ATTRIBUTE_UNUSED)
|
|
201 {
|
|
202 return false;
|
|
203 }
|
|
204
|
|
205 bool
|
|
206 hook_bool_tree_true (tree a ATTRIBUTE_UNUSED)
|
|
207 {
|
|
208 return true;
|
|
209 }
|
|
210
|
|
211 bool
|
|
212 hook_bool_const_tree_true (const_tree a ATTRIBUTE_UNUSED)
|
|
213 {
|
|
214 return true;
|
|
215 }
|
|
216
|
|
217 bool
|
|
218 hook_bool_tree_tree_false (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
|
|
219 {
|
|
220 return false;
|
|
221 }
|
|
222
|
|
223 bool
|
|
224 hook_bool_tree_bool_false (tree a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
|
|
225 {
|
|
226 return false;
|
|
227 }
|
|
228
|
|
229 bool
|
|
230 hook_bool_rtx_false (rtx a ATTRIBUTE_UNUSED)
|
|
231 {
|
|
232 return false;
|
|
233 }
|
|
234
|
|
235 bool
|
|
236 hook_bool_uintp_uintp_false (unsigned int *a ATTRIBUTE_UNUSED,
|
|
237 unsigned int *b ATTRIBUTE_UNUSED)
|
|
238 {
|
|
239 return false;
|
|
240 }
|
|
241
|
|
242 bool
|
|
243 hook_bool_rtx_int_int_intp_bool_false (rtx a ATTRIBUTE_UNUSED,
|
|
244 int b ATTRIBUTE_UNUSED,
|
|
245 int c ATTRIBUTE_UNUSED,
|
|
246 int *d ATTRIBUTE_UNUSED,
|
|
247 bool speed_p ATTRIBUTE_UNUSED)
|
|
248 {
|
|
249 return false;
|
|
250 }
|
|
251
|
|
252 /* Generic hook that takes an rtx and returns it. */
|
|
253 rtx
|
|
254 hook_rtx_rtx_identity (rtx x)
|
|
255 {
|
|
256 return x;
|
|
257 }
|
|
258
|
|
259 /* Generic hook that takes an rtx and returns NULL_RTX. */
|
|
260 rtx
|
|
261 hook_rtx_rtx_null (rtx x ATTRIBUTE_UNUSED)
|
|
262 {
|
|
263 return NULL;
|
|
264 }
|
|
265
|
|
266 /* Generic hook that takes a tree and an int and returns NULL_RTX. */
|
|
267 rtx
|
|
268 hook_rtx_tree_int_null (tree a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED)
|
|
269 {
|
|
270 return NULL;
|
|
271 }
|
|
272
|
|
273 /* Generic hook that takes three trees and returns the last one as is. */
|
|
274 tree
|
|
275 hook_tree_tree_tree_tree_3rd_identity (tree a ATTRIBUTE_UNUSED,
|
|
276 tree b ATTRIBUTE_UNUSED, tree c)
|
|
277 {
|
|
278 return c;
|
|
279 }
|
|
280
|
|
281 /* Generic hook that takes a tree and returns a NULL string. */
|
|
282 const char *
|
|
283 hook_constcharptr_const_tree_null (const_tree t ATTRIBUTE_UNUSED)
|
|
284 {
|
|
285 return NULL;
|
|
286 }
|
|
287
|
|
288 tree
|
|
289 hook_tree_tree_tree_bool_null (tree t0 ATTRIBUTE_UNUSED,
|
|
290 tree t1 ATTRIBUTE_UNUSED,
|
|
291 bool ignore ATTRIBUTE_UNUSED)
|
|
292 {
|
|
293 return NULL;
|
|
294 }
|
|
295
|
|
296 tree
|
|
297 hook_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED, tree t1 ATTRIBUTE_UNUSED)
|
|
298 {
|
|
299 return NULL;
|
|
300 }
|
|
301
|
|
302 tree
|
|
303 hook_tree_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED,
|
|
304 tree t1 ATTRIBUTE_UNUSED,
|
|
305 tree t2 ATTRIBUTE_UNUSED)
|
|
306 {
|
|
307 return NULL;
|
|
308 }
|
|
309
|
|
310 /* Generic hook that takes a rtx and returns a NULL string. */
|
|
311 const char *
|
|
312 hook_constcharptr_const_rtx_null (const_rtx r ATTRIBUTE_UNUSED)
|
|
313 {
|
|
314 return NULL;
|
|
315 }
|
|
316
|
|
317 const char *
|
|
318 hook_constcharptr_const_tree_const_tree_null (const_tree t0 ATTRIBUTE_UNUSED,
|
|
319 const_tree t1 ATTRIBUTE_UNUSED)
|
|
320 {
|
|
321 return NULL;
|
|
322 }
|
|
323
|
|
324 const char *
|
|
325 hook_constcharptr_int_const_tree_null (int i ATTRIBUTE_UNUSED,
|
|
326 const_tree t0 ATTRIBUTE_UNUSED)
|
|
327 {
|
|
328 return NULL;
|
|
329 }
|
|
330
|
|
331 const char *
|
|
332 hook_constcharptr_int_const_tree_const_tree_null (int i ATTRIBUTE_UNUSED,
|
|
333 const_tree t0 ATTRIBUTE_UNUSED,
|
|
334 const_tree t1 ATTRIBUTE_UNUSED)
|
|
335 {
|
|
336 return NULL;
|
|
337 }
|