]>
Commit | Line | Data |
---|---|---|
e4ec2cac | 1 | /* General-purpose hooks. |
818ab71a | 2 | Copyright (C) 2002-2016 Free Software Foundation, Inc. |
e4ec2cac | 3 | |
9dcd6f09 NC |
4 | This program is free software; you can redistribute it and/or modify it |
5 | under the terms of the GNU General Public License as published by the | |
6 | Free Software Foundation; either version 3, or (at your option) any | |
7 | later version. | |
e4ec2cac | 8 | |
9dcd6f09 NC |
9 | This program is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | GNU General Public License for more details. | |
e4ec2cac | 13 | |
9dcd6f09 NC |
14 | You should have received a copy of the GNU General Public License |
15 | along with this program; see the file COPYING3. If not see | |
b8698a0f | 16 | <http://www.gnu.org/licenses/>. |
e4ec2cac | 17 | |
9dcd6f09 NC |
18 | In other words, you are welcome to use, share and improve this program. |
19 | You are forbidden to forbid anyone else to use, share and improve | |
20 | what you give them. Help stamp out software-hoarding! */ | |
e4ec2cac AO |
21 | |
22 | /* This file contains generic hooks that can be used as defaults for | |
23 | target or language-dependent hook initializers. */ | |
24 | ||
25 | #include "config.h" | |
26 | #include "system.h" | |
4977bab6 ZW |
27 | #include "coretypes.h" |
28 | #include "tm.h" | |
e4ec2cac AO |
29 | #include "hooks.h" |
30 | ||
e5f3b786 NB |
31 | /* Generic hook that does absolutely zappo. */ |
32 | void | |
1d088dee | 33 | hook_void_void (void) |
e5f3b786 NB |
34 | { |
35 | } | |
36 | ||
e4ec2cac AO |
37 | /* Generic hook that takes no arguments and returns false. */ |
38 | bool | |
1d088dee | 39 | hook_bool_void_false (void) |
ae46c4e0 RH |
40 | { |
41 | return false; | |
42 | } | |
fb49053f | 43 | |
af287697 MM |
44 | /* Generic hook that takes no arguments and returns true. */ |
45 | bool | |
46 | hook_bool_void_true (void) | |
47 | { | |
48 | return true; | |
49 | } | |
50 | ||
fe3ad572 SC |
51 | /* Generic hook that takes (bool) and returns false. */ |
52 | bool | |
53 | hook_bool_bool_false (bool a ATTRIBUTE_UNUSED) | |
54 | { | |
55 | return false; | |
56 | } | |
57 | ||
d5fabb58 JM |
58 | /* Generic hook that takes (bool, struct gcc_options *) and returns false. */ |
59 | bool | |
60 | hook_bool_bool_gcc_optionsp_false (bool a ATTRIBUTE_UNUSED, | |
61 | struct gcc_options *opts ATTRIBUTE_UNUSED) | |
62 | { | |
63 | return false; | |
64 | } | |
65 | ||
7b5cbb57 AS |
66 | /* Generic hook that takes const int, const int) and returns true. */ |
67 | bool hook_bool_const_int_const_int_true (const int a ATTRIBUTE_UNUSED, | |
68 | const int b ATTRIBUTE_UNUSED) | |
69 | { | |
70 | return true; | |
71 | } | |
72 | ||
ef4bddc2 | 73 | /* Generic hook that takes (machine_mode) and returns false. */ |
f676971a | 74 | bool |
ef4bddc2 | 75 | hook_bool_mode_false (machine_mode mode ATTRIBUTE_UNUSED) |
f676971a EC |
76 | { |
77 | return false; | |
78 | } | |
79 | ||
ef4bddc2 | 80 | /* Generic hook that takes (machine_mode) and returns true. */ |
42db504c | 81 | bool |
ef4bddc2 | 82 | hook_bool_mode_true (machine_mode mode ATTRIBUTE_UNUSED) |
42db504c SB |
83 | { |
84 | return true; | |
85 | } | |
86 | ||
ef4bddc2 | 87 | /* Generic hook that takes (machine_mode, const_rtx) and returns false. */ |
aacd3885 | 88 | bool |
ef4bddc2 | 89 | hook_bool_mode_const_rtx_false (machine_mode mode ATTRIBUTE_UNUSED, |
3101faab | 90 | const_rtx value ATTRIBUTE_UNUSED) |
aacd3885 RS |
91 | { |
92 | return false; | |
93 | } | |
94 | ||
ef4bddc2 | 95 | /* Generic hook that takes (machine_mode, const_rtx) and returns true. */ |
1d3dbd99 | 96 | bool |
ef4bddc2 | 97 | hook_bool_mode_const_rtx_true (machine_mode mode ATTRIBUTE_UNUSED, |
3101faab | 98 | const_rtx value ATTRIBUTE_UNUSED) |
1d3dbd99 RS |
99 | { |
100 | return true; | |
101 | } | |
102 | ||
ef4bddc2 | 103 | /* Generic hook that takes (machine_mode, rtx) and returns false. */ |
fbbf66e7 | 104 | bool |
ef4bddc2 | 105 | hook_bool_mode_rtx_false (machine_mode mode ATTRIBUTE_UNUSED, |
fbbf66e7 RS |
106 | rtx value ATTRIBUTE_UNUSED) |
107 | { | |
108 | return false; | |
109 | } | |
110 | ||
ef4bddc2 | 111 | /* Generic hook that takes (machine_mode, rtx) and returns true. */ |
1a627b35 | 112 | bool |
ef4bddc2 | 113 | hook_bool_mode_rtx_true (machine_mode mode ATTRIBUTE_UNUSED, |
1a627b35 RS |
114 | rtx value ATTRIBUTE_UNUSED) |
115 | { | |
116 | return true; | |
117 | } | |
118 | ||
c1ce59ab | 119 | /* Generic hook that takes (const rtx_insn *, const rtx_insn *) and returns true. */ |
4b4de898 | 120 | bool |
c1ce59ab DM |
121 | hook_bool_const_rtx_insn_const_rtx_insn_true (const rtx_insn *follower ATTRIBUTE_UNUSED, |
122 | const rtx_insn *followee ATTRIBUTE_UNUSED) | |
4b4de898 JR |
123 | { |
124 | return true; | |
125 | } | |
126 | ||
ef4bddc2 | 127 | /* Generic hook that takes (machine_mode, unsigned HOST_WIDE_INT) |
0f6d54f7 RS |
128 | and returns false. */ |
129 | bool | |
ef4bddc2 | 130 | hook_bool_mode_uhwi_false (machine_mode mode ATTRIBUTE_UNUSED, |
0f6d54f7 RS |
131 | unsigned HOST_WIDE_INT value ATTRIBUTE_UNUSED) |
132 | { | |
133 | return false; | |
134 | } | |
135 | ||
5eb99654 KG |
136 | /* Generic hook that takes (FILE *, const char *) and does nothing. */ |
137 | void | |
1d088dee | 138 | hook_void_FILEptr_constcharptr (FILE *a ATTRIBUTE_UNUSED, const char *b ATTRIBUTE_UNUSED) |
5eb99654 KG |
139 | { |
140 | } | |
3961e8fe | 141 | |
0d4b5b86 BS |
142 | /* Generic hook that takes (FILE *, const char *, constr_tree *) and does |
143 | nothing. */ | |
144 | void | |
145 | hook_void_FILEptr_constcharptr_const_tree (FILE *, const char *, const_tree) | |
146 | { | |
147 | } | |
148 | ||
e1267133 AS |
149 | /* Generic hook that takes (FILE *, rtx) and returns false. */ |
150 | bool | |
151 | hook_bool_FILEptr_rtx_false (FILE *a ATTRIBUTE_UNUSED, | |
152 | rtx b ATTRIBUTE_UNUSED) | |
153 | { | |
154 | return false; | |
155 | } | |
156 | ||
ea679d55 JG |
157 | /* Generic hook that takes (gimple_stmt_iterator *) and returns |
158 | false. */ | |
159 | bool | |
160 | hook_bool_gsiptr_false (gimple_stmt_iterator *a ATTRIBUTE_UNUSED) | |
161 | { | |
162 | return false; | |
163 | } | |
164 | ||
3961e8fe RH |
165 | /* Used for the TARGET_ASM_CAN_OUTPUT_MI_THUNK hook. */ |
166 | bool | |
3101faab KG |
167 | hook_bool_const_tree_hwi_hwi_const_tree_false (const_tree a ATTRIBUTE_UNUSED, |
168 | HOST_WIDE_INT b ATTRIBUTE_UNUSED, | |
169 | HOST_WIDE_INT c ATTRIBUTE_UNUSED, | |
170 | const_tree d ATTRIBUTE_UNUSED) | |
3961e8fe RH |
171 | { |
172 | return false; | |
173 | } | |
174 | ||
175 | bool | |
3101faab KG |
176 | hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED, |
177 | HOST_WIDE_INT b ATTRIBUTE_UNUSED, | |
178 | HOST_WIDE_INT c ATTRIBUTE_UNUSED, | |
179 | const_tree d ATTRIBUTE_UNUSED) | |
3961e8fe RH |
180 | { |
181 | return true; | |
182 | } | |
183 | ||
184 | bool | |
3101faab | 185 | default_can_output_mi_thunk_no_vcall (const_tree a ATTRIBUTE_UNUSED, |
1d088dee AJ |
186 | HOST_WIDE_INT b ATTRIBUTE_UNUSED, |
187 | HOST_WIDE_INT c, | |
3101faab | 188 | const_tree d ATTRIBUTE_UNUSED) |
3961e8fe RH |
189 | { |
190 | return c == 0; | |
191 | } | |
7b1bd3c5 | 192 | |
df7b0cc4 EI |
193 | int |
194 | hook_int_uint_mode_1 (unsigned int a ATTRIBUTE_UNUSED, | |
ef4bddc2 | 195 | machine_mode b ATTRIBUTE_UNUSED) |
df7b0cc4 EI |
196 | { |
197 | return 1; | |
198 | } | |
199 | ||
a1c496cb | 200 | int |
3101faab | 201 | hook_int_const_tree_0 (const_tree a ATTRIBUTE_UNUSED) |
a1c496cb EC |
202 | { |
203 | return 0; | |
204 | } | |
205 | ||
7b1bd3c5 RH |
206 | /* ??? Used for comp_type_attributes, which ought to return bool. */ |
207 | int | |
3101faab | 208 | hook_int_const_tree_const_tree_1 (const_tree a ATTRIBUTE_UNUSED, const_tree b ATTRIBUTE_UNUSED) |
7b1bd3c5 RH |
209 | { |
210 | return 1; | |
211 | } | |
212 | ||
dcefdf67 | 213 | int |
1d088dee | 214 | hook_int_rtx_0 (rtx a ATTRIBUTE_UNUSED) |
dcefdf67 RH |
215 | { |
216 | return 0; | |
217 | } | |
218 | ||
d327457f JR |
219 | int |
220 | hook_int_rtx_1 (rtx) | |
221 | { | |
222 | return 1; | |
223 | } | |
224 | ||
225 | int | |
84034c69 | 226 | hook_int_rtx_insn_unreachable (rtx_insn *) |
d327457f JR |
227 | { |
228 | gcc_unreachable (); | |
229 | } | |
230 | ||
f40751dd JH |
231 | int |
232 | hook_int_rtx_bool_0 (rtx a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED) | |
233 | { | |
234 | return 0; | |
235 | } | |
236 | ||
b413068c | 237 | int |
ef4bddc2 | 238 | hook_int_rtx_mode_as_bool_0 (rtx, machine_mode, addr_space_t, bool) |
b413068c OE |
239 | { |
240 | return 0; | |
241 | } | |
242 | ||
b86f6cd9 | 243 | unsigned int |
7a9bf9a4 | 244 | hook_uint_void_0 (void) |
b86f6cd9 NB |
245 | { |
246 | return 0; | |
247 | } | |
248 | ||
7b1bd3c5 | 249 | void |
1d088dee | 250 | hook_void_tree (tree a ATTRIBUTE_UNUSED) |
7b1bd3c5 RH |
251 | { |
252 | } | |
253 | ||
2f21e1ba BS |
254 | void |
255 | hook_void_rtx_tree (rtx, tree) | |
256 | { | |
257 | } | |
258 | ||
94d1613b | 259 | void |
8e3e233b | 260 | hook_void_constcharptr (const char *a ATTRIBUTE_UNUSED) |
94d1613b MS |
261 | { |
262 | } | |
263 | ||
7b1bd3c5 | 264 | void |
1d088dee | 265 | hook_void_tree_treeptr (tree a ATTRIBUTE_UNUSED, tree *b ATTRIBUTE_UNUSED) |
7b1bd3c5 RH |
266 | { |
267 | } | |
268 | ||
fac0f722 JM |
269 | void |
270 | hook_void_int_int (int a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED) | |
271 | { | |
272 | } | |
273 | ||
7b1bd3c5 | 274 | bool |
1d088dee | 275 | hook_bool_tree_false (tree a ATTRIBUTE_UNUSED) |
7b1bd3c5 RH |
276 | { |
277 | return false; | |
278 | } | |
3a04ff64 | 279 | |
ac7d7749 KG |
280 | bool |
281 | hook_bool_const_tree_false (const_tree a ATTRIBUTE_UNUSED) | |
282 | { | |
283 | return false; | |
284 | } | |
285 | ||
c6e8c921 GK |
286 | bool |
287 | hook_bool_tree_true (tree a ATTRIBUTE_UNUSED) | |
288 | { | |
289 | return true; | |
290 | } | |
291 | ||
586de218 KG |
292 | bool |
293 | hook_bool_const_tree_true (const_tree a ATTRIBUTE_UNUSED) | |
294 | { | |
295 | return true; | |
296 | } | |
297 | ||
4977bab6 | 298 | bool |
1d088dee | 299 | hook_bool_tree_tree_false (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED) |
4977bab6 ZW |
300 | { |
301 | return false; | |
302 | } | |
303 | ||
faf63e39 RH |
304 | bool |
305 | hook_bool_tree_tree_true (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED) | |
306 | { | |
307 | return true; | |
308 | } | |
309 | ||
953ff289 DN |
310 | bool |
311 | hook_bool_tree_bool_false (tree a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED) | |
312 | { | |
313 | return false; | |
314 | } | |
315 | ||
78e4f1ad | 316 | bool |
ac44248e | 317 | hook_bool_rtx_insn_true (rtx_insn *insn ATTRIBUTE_UNUSED) |
78e4f1ad UB |
318 | { |
319 | return true; | |
320 | } | |
321 | ||
3a04ff64 | 322 | bool |
1d088dee | 323 | hook_bool_rtx_false (rtx a ATTRIBUTE_UNUSED) |
3a04ff64 RH |
324 | { |
325 | return false; | |
326 | } | |
3c50106f | 327 | |
e129d93a ILT |
328 | bool |
329 | hook_bool_uintp_uintp_false (unsigned int *a ATTRIBUTE_UNUSED, | |
330 | unsigned int *b ATTRIBUTE_UNUSED) | |
331 | { | |
332 | return false; | |
333 | } | |
334 | ||
3c50106f | 335 | bool |
e548c9df AM |
336 | hook_bool_rtx_mode_int_int_intp_bool_false (rtx a ATTRIBUTE_UNUSED, |
337 | machine_mode b ATTRIBUTE_UNUSED, | |
338 | int c ATTRIBUTE_UNUSED, | |
339 | int d ATTRIBUTE_UNUSED, | |
340 | int *e ATTRIBUTE_UNUSED, | |
341 | bool speed_p ATTRIBUTE_UNUSED) | |
3c50106f RH |
342 | { |
343 | return false; | |
344 | } | |
345 | ||
1d0216c8 | 346 | bool |
807e902e KZ |
347 | hook_bool_wint_wint_uint_bool_true (const widest_int &, const widest_int &, |
348 | unsigned int, bool) | |
1d0216c8 RS |
349 | { |
350 | return true; | |
351 | } | |
352 | ||
7daebb7a RS |
353 | /* Generic hook that takes an rtx and returns it. */ |
354 | rtx | |
1d088dee | 355 | hook_rtx_rtx_identity (rtx x) |
7daebb7a RS |
356 | { |
357 | return x; | |
358 | } | |
359 | ||
96714395 AH |
360 | /* Generic hook that takes an rtx and returns NULL_RTX. */ |
361 | rtx | |
1d088dee | 362 | hook_rtx_rtx_null (rtx x ATTRIBUTE_UNUSED) |
96714395 | 363 | { |
c6e8c921 GK |
364 | return NULL; |
365 | } | |
366 | ||
367 | /* Generic hook that takes a tree and an int and returns NULL_RTX. */ | |
368 | rtx | |
369 | hook_rtx_tree_int_null (tree a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED) | |
370 | { | |
371 | return NULL; | |
96714395 | 372 | } |
18c81520 | 373 | |
fceec4d3 AM |
374 | /* Generic hook that takes a machine mode and returns an unsigned int 0. */ |
375 | unsigned int | |
ef4bddc2 | 376 | hook_uint_mode_0 (machine_mode m ATTRIBUTE_UNUSED) |
fceec4d3 AM |
377 | { |
378 | return 0; | |
379 | } | |
380 | ||
c713ddc0 | 381 | /* Generic hook that takes no arguments and returns a NULL const string. */ |
1efcb8c6 JM |
382 | const char * |
383 | hook_constcharptr_void_null (void) | |
384 | { | |
385 | return NULL; | |
386 | } | |
387 | ||
c713ddc0 BS |
388 | /* Generic hook that takes no arguments and returns a NULL string. */ |
389 | char * | |
390 | hook_charptr_void_null (void) | |
391 | { | |
392 | return NULL; | |
393 | } | |
394 | ||
f18eca82 ZL |
395 | /* Generic hook that takes a tree and returns a NULL string. */ |
396 | const char * | |
3101faab | 397 | hook_constcharptr_const_tree_null (const_tree t ATTRIBUTE_UNUSED) |
f18eca82 ZL |
398 | { |
399 | return NULL; | |
400 | } | |
55e74277 | 401 | |
6b889d89 | 402 | tree |
f311c3b4 NF |
403 | hook_tree_tree_int_treep_bool_null (tree t0 ATTRIBUTE_UNUSED, |
404 | int i ATTRIBUTE_UNUSED, | |
405 | tree *p ATTRIBUTE_UNUSED, | |
406 | bool ignore ATTRIBUTE_UNUSED) | |
55e74277 PB |
407 | { |
408 | return NULL; | |
409 | } | |
e7e64a25 | 410 | |
953ff289 DN |
411 | tree |
412 | hook_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED, tree t1 ATTRIBUTE_UNUSED) | |
413 | { | |
414 | return NULL; | |
415 | } | |
416 | ||
a68ab351 JJ |
417 | tree |
418 | hook_tree_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED, | |
419 | tree t1 ATTRIBUTE_UNUSED, | |
420 | tree t2 ATTRIBUTE_UNUSED) | |
421 | { | |
422 | return NULL; | |
423 | } | |
424 | ||
ac44248e | 425 | /* Generic hook that takes an rtx_insn *and returns a NULL string. */ |
e7e64a25 | 426 | const char * |
ac44248e | 427 | hook_constcharptr_const_rtx_insn_null (const rtx_insn *insn ATTRIBUTE_UNUSED) |
e7e64a25 AS |
428 | { |
429 | return NULL; | |
430 | } | |
4de67c26 JM |
431 | |
432 | const char * | |
3101faab KG |
433 | hook_constcharptr_const_tree_const_tree_null (const_tree t0 ATTRIBUTE_UNUSED, |
434 | const_tree t1 ATTRIBUTE_UNUSED) | |
4de67c26 JM |
435 | { |
436 | return NULL; | |
437 | } | |
438 | ||
439 | const char * | |
3101faab KG |
440 | hook_constcharptr_int_const_tree_null (int i ATTRIBUTE_UNUSED, |
441 | const_tree t0 ATTRIBUTE_UNUSED) | |
4de67c26 JM |
442 | { |
443 | return NULL; | |
444 | } | |
445 | ||
446 | const char * | |
3101faab KG |
447 | hook_constcharptr_int_const_tree_const_tree_null (int i ATTRIBUTE_UNUSED, |
448 | const_tree t0 ATTRIBUTE_UNUSED, | |
449 | const_tree t1 ATTRIBUTE_UNUSED) | |
4de67c26 JM |
450 | { |
451 | return NULL; | |
452 | } | |
40449a90 SL |
453 | |
454 | /* Generic hook that takes a const_tree and returns NULL_TREE. */ | |
455 | tree | |
456 | hook_tree_const_tree_null (const_tree t ATTRIBUTE_UNUSED) | |
457 | { | |
458 | return NULL; | |
459 | } | |
7942e47e | 460 | |
ac44248e | 461 | /* Generic hook that takes a rtx_insn * and an int and returns a bool. */ |
7942e47e RY |
462 | |
463 | bool | |
ac44248e DM |
464 | hook_bool_rtx_insn_int_false (rtx_insn *insn ATTRIBUTE_UNUSED, |
465 | int mode ATTRIBUTE_UNUSED) | |
7942e47e RY |
466 | { |
467 | return false; | |
468 | } | |
469 | ||
ac44248e | 470 | /* Generic hook that takes a rtx_insn * and an int and returns void. */ |
7942e47e RY |
471 | |
472 | void | |
ac44248e DM |
473 | hook_void_rtx_insn_int (rtx_insn *insn ATTRIBUTE_UNUSED, |
474 | int mode ATTRIBUTE_UNUSED) | |
7942e47e RY |
475 | { |
476 | } | |
7e4aae92 JM |
477 | |
478 | /* Generic hook that takes a struct gcc_options * and returns void. */ | |
479 | ||
480 | void | |
481 | hook_void_gcc_optionsp (struct gcc_options *opts ATTRIBUTE_UNUSED) | |
482 | { | |
483 | } |