]>
Commit | Line | Data |
---|---|---|
e4ec2cac | 1 | /* General-purpose hooks. |
81f40b79 | 2 | Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009 |
66647d44 | 3 | Free Software Foundation, Inc. |
e4ec2cac | 4 | |
9dcd6f09 NC |
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. | |
e4ec2cac | 9 | |
9dcd6f09 NC |
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. | |
e4ec2cac | 14 | |
9dcd6f09 NC |
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 | |
b8698a0f | 17 | <http://www.gnu.org/licenses/>. |
e4ec2cac | 18 | |
9dcd6f09 NC |
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! */ | |
e4ec2cac AO |
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" | |
4977bab6 ZW |
28 | #include "coretypes.h" |
29 | #include "tm.h" | |
e4ec2cac AO |
30 | #include "hooks.h" |
31 | ||
e5f3b786 NB |
32 | /* Generic hook that does absolutely zappo. */ |
33 | void | |
1d088dee | 34 | hook_void_void (void) |
e5f3b786 NB |
35 | { |
36 | } | |
37 | ||
e4ec2cac AO |
38 | /* Generic hook that takes no arguments and returns false. */ |
39 | bool | |
1d088dee | 40 | hook_bool_void_false (void) |
ae46c4e0 RH |
41 | { |
42 | return false; | |
43 | } | |
fb49053f | 44 | |
af287697 MM |
45 | /* Generic hook that takes no arguments and returns true. */ |
46 | bool | |
47 | hook_bool_void_true (void) | |
48 | { | |
49 | return true; | |
50 | } | |
51 | ||
fe3ad572 SC |
52 | /* Generic hook that takes (bool) and returns false. */ |
53 | bool | |
54 | hook_bool_bool_false (bool a ATTRIBUTE_UNUSED) | |
55 | { | |
56 | return false; | |
57 | } | |
58 | ||
7b5cbb57 AS |
59 | /* Generic hook that takes const int, const int) and returns true. */ |
60 | bool hook_bool_const_int_const_int_true (const int a ATTRIBUTE_UNUSED, | |
61 | const int b ATTRIBUTE_UNUSED) | |
62 | { | |
63 | return true; | |
64 | } | |
65 | ||
f676971a EC |
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 | ||
aacd3885 RS |
73 | /* Generic hook that takes (enum machine_mode, rtx) and returns false. */ |
74 | bool | |
3101faab KG |
75 | hook_bool_mode_const_rtx_false (enum machine_mode mode ATTRIBUTE_UNUSED, |
76 | const_rtx value ATTRIBUTE_UNUSED) | |
aacd3885 RS |
77 | { |
78 | return false; | |
79 | } | |
80 | ||
1d3dbd99 RS |
81 | /* Generic hook that takes (enum machine_mode, rtx) and returns true. */ |
82 | bool | |
3101faab KG |
83 | hook_bool_mode_const_rtx_true (enum machine_mode mode ATTRIBUTE_UNUSED, |
84 | const_rtx value ATTRIBUTE_UNUSED) | |
1d3dbd99 RS |
85 | { |
86 | return true; | |
87 | } | |
88 | ||
5eb99654 KG |
89 | /* Generic hook that takes (FILE *, const char *) and does nothing. */ |
90 | void | |
1d088dee | 91 | hook_void_FILEptr_constcharptr (FILE *a ATTRIBUTE_UNUSED, const char *b ATTRIBUTE_UNUSED) |
5eb99654 KG |
92 | { |
93 | } | |
3961e8fe RH |
94 | |
95 | /* Used for the TARGET_ASM_CAN_OUTPUT_MI_THUNK hook. */ | |
96 | bool | |
3101faab KG |
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) | |
3961e8fe RH |
101 | { |
102 | return false; | |
103 | } | |
104 | ||
105 | bool | |
3101faab KG |
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) | |
3961e8fe RH |
110 | { |
111 | return true; | |
112 | } | |
113 | ||
cb66e385 NB |
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 | ||
75685792 RS |
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 | ||
3961e8fe | 129 | bool |
3101faab | 130 | default_can_output_mi_thunk_no_vcall (const_tree a ATTRIBUTE_UNUSED, |
1d088dee AJ |
131 | HOST_WIDE_INT b ATTRIBUTE_UNUSED, |
132 | HOST_WIDE_INT c, | |
3101faab | 133 | const_tree d ATTRIBUTE_UNUSED) |
3961e8fe RH |
134 | { |
135 | return c == 0; | |
136 | } | |
7b1bd3c5 | 137 | |
a1c496cb | 138 | int |
3101faab | 139 | hook_int_const_tree_0 (const_tree a ATTRIBUTE_UNUSED) |
a1c496cb EC |
140 | { |
141 | return 0; | |
142 | } | |
143 | ||
7b1bd3c5 RH |
144 | /* ??? Used for comp_type_attributes, which ought to return bool. */ |
145 | int | |
3101faab | 146 | hook_int_const_tree_const_tree_1 (const_tree a ATTRIBUTE_UNUSED, const_tree b ATTRIBUTE_UNUSED) |
7b1bd3c5 RH |
147 | { |
148 | return 1; | |
149 | } | |
150 | ||
dcefdf67 | 151 | int |
1d088dee | 152 | hook_int_rtx_0 (rtx a ATTRIBUTE_UNUSED) |
dcefdf67 RH |
153 | { |
154 | return 0; | |
155 | } | |
156 | ||
f40751dd JH |
157 | int |
158 | hook_int_rtx_bool_0 (rtx a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED) | |
159 | { | |
160 | return 0; | |
161 | } | |
162 | ||
7fb26bb0 NB |
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 | ||
b86f6cd9 NB |
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 | ||
7b1bd3c5 | 178 | void |
1d088dee | 179 | hook_void_tree (tree a ATTRIBUTE_UNUSED) |
7b1bd3c5 RH |
180 | { |
181 | } | |
182 | ||
94d1613b | 183 | void |
8e3e233b | 184 | hook_void_constcharptr (const char *a ATTRIBUTE_UNUSED) |
94d1613b MS |
185 | { |
186 | } | |
187 | ||
7b1bd3c5 | 188 | void |
1d088dee | 189 | hook_void_tree_treeptr (tree a ATTRIBUTE_UNUSED, tree *b ATTRIBUTE_UNUSED) |
7b1bd3c5 RH |
190 | { |
191 | } | |
192 | ||
193 | bool | |
1d088dee | 194 | hook_bool_tree_false (tree a ATTRIBUTE_UNUSED) |
7b1bd3c5 RH |
195 | { |
196 | return false; | |
197 | } | |
3a04ff64 | 198 | |
ac7d7749 KG |
199 | bool |
200 | hook_bool_const_tree_false (const_tree a ATTRIBUTE_UNUSED) | |
201 | { | |
202 | return false; | |
203 | } | |
204 | ||
c6e8c921 GK |
205 | bool |
206 | hook_bool_tree_true (tree a ATTRIBUTE_UNUSED) | |
207 | { | |
208 | return true; | |
209 | } | |
210 | ||
586de218 KG |
211 | bool |
212 | hook_bool_const_tree_true (const_tree a ATTRIBUTE_UNUSED) | |
213 | { | |
214 | return true; | |
215 | } | |
216 | ||
4977bab6 | 217 | bool |
1d088dee | 218 | hook_bool_tree_tree_false (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED) |
4977bab6 ZW |
219 | { |
220 | return false; | |
221 | } | |
222 | ||
953ff289 DN |
223 | bool |
224 | hook_bool_tree_bool_false (tree a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED) | |
225 | { | |
226 | return false; | |
227 | } | |
228 | ||
3a04ff64 | 229 | bool |
1d088dee | 230 | hook_bool_rtx_false (rtx a ATTRIBUTE_UNUSED) |
3a04ff64 RH |
231 | { |
232 | return false; | |
233 | } | |
3c50106f | 234 | |
e129d93a ILT |
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 | ||
3c50106f | 242 | bool |
f40751dd JH |
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) | |
3c50106f RH |
248 | { |
249 | return false; | |
250 | } | |
251 | ||
7daebb7a RS |
252 | /* Generic hook that takes an rtx and returns it. */ |
253 | rtx | |
1d088dee | 254 | hook_rtx_rtx_identity (rtx x) |
7daebb7a RS |
255 | { |
256 | return x; | |
257 | } | |
258 | ||
96714395 AH |
259 | /* Generic hook that takes an rtx and returns NULL_RTX. */ |
260 | rtx | |
1d088dee | 261 | hook_rtx_rtx_null (rtx x ATTRIBUTE_UNUSED) |
96714395 | 262 | { |
c6e8c921 GK |
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; | |
96714395 | 271 | } |
18c81520 | 272 | |
61158923 | 273 | /* Generic hook that takes three trees and returns the last one as is. */ |
67dfe110 | 274 | tree |
61158923 HPN |
275 | hook_tree_tree_tree_tree_3rd_identity (tree a ATTRIBUTE_UNUSED, |
276 | tree b ATTRIBUTE_UNUSED, tree c) | |
67dfe110 | 277 | { |
61158923 | 278 | return c; |
67dfe110 | 279 | } |
f18eca82 ZL |
280 | |
281 | /* Generic hook that takes a tree and returns a NULL string. */ | |
282 | const char * | |
3101faab | 283 | hook_constcharptr_const_tree_null (const_tree t ATTRIBUTE_UNUSED) |
f18eca82 ZL |
284 | { |
285 | return NULL; | |
286 | } | |
55e74277 | 287 | |
6b889d89 UB |
288 | tree |
289 | hook_tree_tree_tree_bool_null (tree t0 ATTRIBUTE_UNUSED, | |
290 | tree t1 ATTRIBUTE_UNUSED, | |
a05a80fc | 291 | bool ignore ATTRIBUTE_UNUSED) |
55e74277 PB |
292 | { |
293 | return NULL; | |
294 | } | |
e7e64a25 | 295 | |
953ff289 DN |
296 | tree |
297 | hook_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED, tree t1 ATTRIBUTE_UNUSED) | |
298 | { | |
299 | return NULL; | |
300 | } | |
301 | ||
a68ab351 JJ |
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 | ||
e7e64a25 AS |
310 | /* Generic hook that takes a rtx and returns a NULL string. */ |
311 | const char * | |
3101faab | 312 | hook_constcharptr_const_rtx_null (const_rtx r ATTRIBUTE_UNUSED) |
e7e64a25 AS |
313 | { |
314 | return NULL; | |
315 | } | |
4de67c26 JM |
316 | |
317 | const char * | |
3101faab KG |
318 | hook_constcharptr_const_tree_const_tree_null (const_tree t0 ATTRIBUTE_UNUSED, |
319 | const_tree t1 ATTRIBUTE_UNUSED) | |
4de67c26 JM |
320 | { |
321 | return NULL; | |
322 | } | |
323 | ||
324 | const char * | |
3101faab KG |
325 | hook_constcharptr_int_const_tree_null (int i ATTRIBUTE_UNUSED, |
326 | const_tree t0 ATTRIBUTE_UNUSED) | |
4de67c26 JM |
327 | { |
328 | return NULL; | |
329 | } | |
330 | ||
331 | const char * | |
3101faab KG |
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) | |
4de67c26 JM |
335 | { |
336 | return NULL; | |
337 | } | |
40449a90 SL |
338 | |
339 | /* Generic hook that takes a const_tree and returns NULL_TREE. */ | |
340 | tree | |
341 | hook_tree_const_tree_null (const_tree t ATTRIBUTE_UNUSED) | |
342 | { | |
343 | return NULL; | |
344 | } |