]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/hooks.c
hooks.c (hook_int_rtx_mode_as_bool_0): New function.
[thirdparty/gcc.git] / gcc / hooks.c
CommitLineData
e4ec2cac 1/* General-purpose hooks.
96e45421 2 Copyright (C) 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
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. */
33void
1d088dee 34hook_void_void (void)
e5f3b786
NB
35{
36}
37
e4ec2cac
AO
38/* Generic hook that takes no arguments and returns false. */
39bool
1d088dee 40hook_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. */
46bool
47hook_bool_void_true (void)
48{
49 return true;
50}
51
fe3ad572
SC
52/* Generic hook that takes (bool) and returns false. */
53bool
54hook_bool_bool_false (bool a ATTRIBUTE_UNUSED)
55{
56 return false;
57}
58
d5fabb58
JM
59/* Generic hook that takes (bool, struct gcc_options *) and returns false. */
60bool
61hook_bool_bool_gcc_optionsp_false (bool a ATTRIBUTE_UNUSED,
62 struct gcc_options *opts ATTRIBUTE_UNUSED)
63{
64 return false;
65}
66
7b5cbb57
AS
67/* Generic hook that takes const int, const int) and returns true. */
68bool hook_bool_const_int_const_int_true (const int a ATTRIBUTE_UNUSED,
69 const int b ATTRIBUTE_UNUSED)
70{
71 return true;
72}
73
f676971a
EC
74/* Generic hook that takes (enum machine_mode) and returns false. */
75bool
76hook_bool_mode_false (enum machine_mode mode ATTRIBUTE_UNUSED)
77{
78 return false;
79}
80
42db504c
SB
81/* Generic hook that takes (enum machine_mode) and returns true. */
82bool
83hook_bool_mode_true (enum machine_mode mode ATTRIBUTE_UNUSED)
84{
85 return true;
86}
87
fbbf66e7 88/* Generic hook that takes (enum machine_mode, const_rtx) and returns false. */
aacd3885 89bool
3101faab
KG
90hook_bool_mode_const_rtx_false (enum machine_mode mode ATTRIBUTE_UNUSED,
91 const_rtx value ATTRIBUTE_UNUSED)
aacd3885
RS
92{
93 return false;
94}
95
fbbf66e7 96/* Generic hook that takes (enum machine_mode, const_rtx) and returns true. */
1d3dbd99 97bool
3101faab
KG
98hook_bool_mode_const_rtx_true (enum machine_mode mode ATTRIBUTE_UNUSED,
99 const_rtx value ATTRIBUTE_UNUSED)
1d3dbd99
RS
100{
101 return true;
102}
103
fbbf66e7
RS
104/* Generic hook that takes (enum machine_mode, rtx) and returns false. */
105bool
106hook_bool_mode_rtx_false (enum machine_mode mode ATTRIBUTE_UNUSED,
107 rtx value ATTRIBUTE_UNUSED)
108{
109 return false;
110}
111
1a627b35
RS
112/* Generic hook that takes (enum machine_mode, rtx) and returns true. */
113bool
114hook_bool_mode_rtx_true (enum machine_mode mode ATTRIBUTE_UNUSED,
115 rtx value ATTRIBUTE_UNUSED)
116{
117 return true;
118}
119
0f6d54f7
RS
120/* Generic hook that takes (enum machine_mode, unsigned HOST_WIDE_INT)
121 and returns false. */
122bool
123hook_bool_mode_uhwi_false (enum machine_mode mode ATTRIBUTE_UNUSED,
124 unsigned HOST_WIDE_INT value ATTRIBUTE_UNUSED)
125{
126 return false;
127}
128
5eb99654
KG
129/* Generic hook that takes (FILE *, const char *) and does nothing. */
130void
1d088dee 131hook_void_FILEptr_constcharptr (FILE *a ATTRIBUTE_UNUSED, const char *b ATTRIBUTE_UNUSED)
5eb99654
KG
132{
133}
3961e8fe 134
e1267133
AS
135/* Generic hook that takes (FILE *, rtx) and returns false. */
136bool
137hook_bool_FILEptr_rtx_false (FILE *a ATTRIBUTE_UNUSED,
138 rtx b ATTRIBUTE_UNUSED)
139{
140 return false;
141}
142
3961e8fe
RH
143/* Used for the TARGET_ASM_CAN_OUTPUT_MI_THUNK hook. */
144bool
3101faab
KG
145hook_bool_const_tree_hwi_hwi_const_tree_false (const_tree a ATTRIBUTE_UNUSED,
146 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
147 HOST_WIDE_INT c ATTRIBUTE_UNUSED,
148 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
149{
150 return false;
151}
152
153bool
3101faab
KG
154hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED,
155 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
156 HOST_WIDE_INT c ATTRIBUTE_UNUSED,
157 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
158{
159 return true;
160}
161
162bool
3101faab 163default_can_output_mi_thunk_no_vcall (const_tree a ATTRIBUTE_UNUSED,
1d088dee
AJ
164 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
165 HOST_WIDE_INT c,
3101faab 166 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
167{
168 return c == 0;
169}
7b1bd3c5 170
df7b0cc4
EI
171int
172hook_int_uint_mode_1 (unsigned int a ATTRIBUTE_UNUSED,
173 enum machine_mode b ATTRIBUTE_UNUSED)
174{
175 return 1;
176}
177
a1c496cb 178int
3101faab 179hook_int_const_tree_0 (const_tree a ATTRIBUTE_UNUSED)
a1c496cb
EC
180{
181 return 0;
182}
183
7b1bd3c5
RH
184/* ??? Used for comp_type_attributes, which ought to return bool. */
185int
3101faab 186hook_int_const_tree_const_tree_1 (const_tree a ATTRIBUTE_UNUSED, const_tree b ATTRIBUTE_UNUSED)
7b1bd3c5
RH
187{
188 return 1;
189}
190
dcefdf67 191int
1d088dee 192hook_int_rtx_0 (rtx a ATTRIBUTE_UNUSED)
dcefdf67
RH
193{
194 return 0;
195}
196
f40751dd
JH
197int
198hook_int_rtx_bool_0 (rtx a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
199{
200 return 0;
201}
202
b413068c
OE
203int
204hook_int_rtx_mode_as_bool_0 (rtx, enum machine_mode, addr_space_t, bool)
205{
206 return 0;
207}
208
b86f6cd9 209unsigned int
7a9bf9a4 210hook_uint_void_0 (void)
b86f6cd9
NB
211{
212 return 0;
213}
214
7b1bd3c5 215void
1d088dee 216hook_void_tree (tree a ATTRIBUTE_UNUSED)
7b1bd3c5
RH
217{
218}
219
94d1613b 220void
8e3e233b 221hook_void_constcharptr (const char *a ATTRIBUTE_UNUSED)
94d1613b
MS
222{
223}
224
7b1bd3c5 225void
1d088dee 226hook_void_tree_treeptr (tree a ATTRIBUTE_UNUSED, tree *b ATTRIBUTE_UNUSED)
7b1bd3c5
RH
227{
228}
229
fac0f722
JM
230void
231hook_void_int_int (int a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED)
232{
233}
234
7b1bd3c5 235bool
1d088dee 236hook_bool_tree_false (tree a ATTRIBUTE_UNUSED)
7b1bd3c5
RH
237{
238 return false;
239}
3a04ff64 240
ac7d7749
KG
241bool
242hook_bool_const_tree_false (const_tree a ATTRIBUTE_UNUSED)
243{
244 return false;
245}
246
c6e8c921
GK
247bool
248hook_bool_tree_true (tree a ATTRIBUTE_UNUSED)
249{
250 return true;
251}
252
586de218
KG
253bool
254hook_bool_const_tree_true (const_tree a ATTRIBUTE_UNUSED)
255{
256 return true;
257}
258
4977bab6 259bool
1d088dee 260hook_bool_tree_tree_false (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
4977bab6
ZW
261{
262 return false;
263}
264
faf63e39
RH
265bool
266hook_bool_tree_tree_true (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
267{
268 return true;
269}
270
953ff289
DN
271bool
272hook_bool_tree_bool_false (tree a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
273{
274 return false;
275}
276
78e4f1ad
UB
277bool
278hook_bool_rtx_true (rtx a ATTRIBUTE_UNUSED)
279{
280 return true;
281}
282
3a04ff64 283bool
1d088dee 284hook_bool_rtx_false (rtx a ATTRIBUTE_UNUSED)
3a04ff64
RH
285{
286 return false;
287}
3c50106f 288
e129d93a
ILT
289bool
290hook_bool_uintp_uintp_false (unsigned int *a ATTRIBUTE_UNUSED,
291 unsigned int *b ATTRIBUTE_UNUSED)
292{
293 return false;
294}
295
3c50106f 296bool
68f932c4
RS
297hook_bool_rtx_int_int_int_intp_bool_false (rtx a ATTRIBUTE_UNUSED,
298 int b ATTRIBUTE_UNUSED,
299 int c ATTRIBUTE_UNUSED,
300 int d ATTRIBUTE_UNUSED,
301 int *e ATTRIBUTE_UNUSED,
302 bool speed_p ATTRIBUTE_UNUSED)
3c50106f
RH
303{
304 return false;
305}
306
7daebb7a
RS
307/* Generic hook that takes an rtx and returns it. */
308rtx
1d088dee 309hook_rtx_rtx_identity (rtx x)
7daebb7a
RS
310{
311 return x;
312}
313
96714395
AH
314/* Generic hook that takes an rtx and returns NULL_RTX. */
315rtx
1d088dee 316hook_rtx_rtx_null (rtx x ATTRIBUTE_UNUSED)
96714395 317{
c6e8c921
GK
318 return NULL;
319}
320
321/* Generic hook that takes a tree and an int and returns NULL_RTX. */
322rtx
323hook_rtx_tree_int_null (tree a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED)
324{
325 return NULL;
96714395 326}
18c81520 327
61158923 328/* Generic hook that takes three trees and returns the last one as is. */
67dfe110 329tree
61158923
HPN
330hook_tree_tree_tree_tree_3rd_identity (tree a ATTRIBUTE_UNUSED,
331 tree b ATTRIBUTE_UNUSED, tree c)
67dfe110 332{
61158923 333 return c;
67dfe110 334}
f18eca82
ZL
335
336/* Generic hook that takes a tree and returns a NULL string. */
337const char *
3101faab 338hook_constcharptr_const_tree_null (const_tree t ATTRIBUTE_UNUSED)
f18eca82
ZL
339{
340 return NULL;
341}
55e74277 342
6b889d89 343tree
f311c3b4
NF
344hook_tree_tree_int_treep_bool_null (tree t0 ATTRIBUTE_UNUSED,
345 int i ATTRIBUTE_UNUSED,
346 tree *p ATTRIBUTE_UNUSED,
347 bool ignore ATTRIBUTE_UNUSED)
55e74277
PB
348{
349 return NULL;
350}
e7e64a25 351
953ff289
DN
352tree
353hook_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED, tree t1 ATTRIBUTE_UNUSED)
354{
355 return NULL;
356}
357
a68ab351
JJ
358tree
359hook_tree_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED,
360 tree t1 ATTRIBUTE_UNUSED,
361 tree t2 ATTRIBUTE_UNUSED)
362{
363 return NULL;
364}
365
e7e64a25
AS
366/* Generic hook that takes a rtx and returns a NULL string. */
367const char *
3101faab 368hook_constcharptr_const_rtx_null (const_rtx r ATTRIBUTE_UNUSED)
e7e64a25
AS
369{
370 return NULL;
371}
4de67c26
JM
372
373const char *
3101faab
KG
374hook_constcharptr_const_tree_const_tree_null (const_tree t0 ATTRIBUTE_UNUSED,
375 const_tree t1 ATTRIBUTE_UNUSED)
4de67c26
JM
376{
377 return NULL;
378}
379
380const char *
3101faab
KG
381hook_constcharptr_int_const_tree_null (int i ATTRIBUTE_UNUSED,
382 const_tree t0 ATTRIBUTE_UNUSED)
4de67c26
JM
383{
384 return NULL;
385}
386
387const char *
3101faab
KG
388hook_constcharptr_int_const_tree_const_tree_null (int i ATTRIBUTE_UNUSED,
389 const_tree t0 ATTRIBUTE_UNUSED,
390 const_tree t1 ATTRIBUTE_UNUSED)
4de67c26
JM
391{
392 return NULL;
393}
40449a90
SL
394
395/* Generic hook that takes a const_tree and returns NULL_TREE. */
396tree
397hook_tree_const_tree_null (const_tree t ATTRIBUTE_UNUSED)
398{
399 return NULL;
400}
7942e47e
RY
401
402/* Generic hook that takes a rtx and an int and returns a bool. */
403
404bool
405hook_bool_rtx_int_false (rtx insn ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED)
406{
407 return false;
408}
409
410/* Generic hook that takes a rtx and an int and returns void. */
411
412void
413hook_void_rtx_int (rtx insn ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED)
414{
415}
7e4aae92
JM
416
417/* Generic hook that takes a struct gcc_options * and returns void. */
418
419void
420hook_void_gcc_optionsp (struct gcc_options *opts ATTRIBUTE_UNUSED)
421{
422}