]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/hooks.c
i386.md (*indirect_jump): Macroize using P mode iterator.
[thirdparty/gcc.git] / gcc / hooks.c
CommitLineData
e4ec2cac 1/* General-purpose hooks.
9dcd6f09 2 Copyright (C) 2002, 2003, 2004, 2005, 2007 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
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. */
32void
1d088dee 33hook_void_void (void)
e5f3b786
NB
34{
35}
36
e4ec2cac
AO
37/* Generic hook that takes no arguments and returns false. */
38bool
1d088dee 39hook_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. */
45bool
46hook_bool_void_true (void)
47{
48 return true;
49}
50
8c27b7d4 51/* Generic hook that takes no arguments and returns NO_REGS. */
a3424f5c
RH
52int
53hook_int_void_no_regs (void)
fe3ad572
SC
54{
55 return NO_REGS;
56}
57
58/* Generic hook that takes (bool) and returns false. */
59bool
60hook_bool_bool_false (bool a ATTRIBUTE_UNUSED)
61{
62 return false;
63}
64
f676971a
EC
65/* Generic hook that takes (enum machine_mode) and returns false. */
66bool
67hook_bool_mode_false (enum machine_mode mode ATTRIBUTE_UNUSED)
68{
69 return false;
70}
71
aacd3885
RS
72/* Generic hook that takes (enum machine_mode, rtx) and returns false. */
73bool
3101faab
KG
74hook_bool_mode_const_rtx_false (enum machine_mode mode ATTRIBUTE_UNUSED,
75 const_rtx value ATTRIBUTE_UNUSED)
aacd3885
RS
76{
77 return false;
78}
79
1d3dbd99
RS
80/* Generic hook that takes (enum machine_mode, rtx) and returns true. */
81bool
3101faab
KG
82hook_bool_mode_const_rtx_true (enum machine_mode mode ATTRIBUTE_UNUSED,
83 const_rtx value ATTRIBUTE_UNUSED)
1d3dbd99
RS
84{
85 return true;
86}
87
5eb99654
KG
88/* Generic hook that takes (FILE *, const char *) and does nothing. */
89void
1d088dee 90hook_void_FILEptr_constcharptr (FILE *a ATTRIBUTE_UNUSED, const char *b ATTRIBUTE_UNUSED)
5eb99654
KG
91{
92}
3961e8fe
RH
93
94/* Used for the TARGET_ASM_CAN_OUTPUT_MI_THUNK hook. */
95bool
3101faab
KG
96hook_bool_const_tree_hwi_hwi_const_tree_false (const_tree a ATTRIBUTE_UNUSED,
97 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
98 HOST_WIDE_INT c ATTRIBUTE_UNUSED,
99 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
100{
101 return false;
102}
103
104bool
3101faab
KG
105hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED,
106 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
107 HOST_WIDE_INT c ATTRIBUTE_UNUSED,
108 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
109{
110 return true;
111}
112
cb66e385
NB
113bool
114hook_bool_constcharptr_size_t_false (const char *a ATTRIBUTE_UNUSED,
115 size_t b ATTRIBUTE_UNUSED)
116{
117 return false;
118}
119
75685792
RS
120bool
121hook_bool_size_t_constcharptr_int_true (size_t a ATTRIBUTE_UNUSED,
122 const char *b ATTRIBUTE_UNUSED,
123 int c ATTRIBUTE_UNUSED)
124{
125 return true;
126}
127
3961e8fe 128bool
3101faab 129default_can_output_mi_thunk_no_vcall (const_tree a ATTRIBUTE_UNUSED,
1d088dee
AJ
130 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
131 HOST_WIDE_INT c,
3101faab 132 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
133{
134 return c == 0;
135}
7b1bd3c5 136
a1c496cb 137int
3101faab 138hook_int_const_tree_0 (const_tree a ATTRIBUTE_UNUSED)
a1c496cb
EC
139{
140 return 0;
141}
142
7b1bd3c5
RH
143/* ??? Used for comp_type_attributes, which ought to return bool. */
144int
3101faab 145hook_int_const_tree_const_tree_1 (const_tree a ATTRIBUTE_UNUSED, const_tree b ATTRIBUTE_UNUSED)
7b1bd3c5
RH
146{
147 return 1;
148}
149
dcefdf67 150int
1d088dee 151hook_int_rtx_0 (rtx a ATTRIBUTE_UNUSED)
dcefdf67
RH
152{
153 return 0;
154}
155
7fb26bb0
NB
156int
157hook_int_size_t_constcharptr_int_0 (size_t a ATTRIBUTE_UNUSED,
158 const char *b ATTRIBUTE_UNUSED,
159 int c ATTRIBUTE_UNUSED)
160{
161 return 0;
162}
163
b86f6cd9
NB
164unsigned int
165hook_uint_uint_constcharptrptr_0 (unsigned int a ATTRIBUTE_UNUSED,
166 const char **b ATTRIBUTE_UNUSED)
167{
168 return 0;
169}
170
7b1bd3c5 171void
1d088dee 172hook_void_tree (tree a ATTRIBUTE_UNUSED)
7b1bd3c5
RH
173{
174}
175
94d1613b 176void
8e3e233b 177hook_void_constcharptr (const char *a ATTRIBUTE_UNUSED)
94d1613b
MS
178{
179}
180
7b1bd3c5 181void
1d088dee 182hook_void_tree_treeptr (tree a ATTRIBUTE_UNUSED, tree *b ATTRIBUTE_UNUSED)
7b1bd3c5
RH
183{
184}
185
186bool
1d088dee 187hook_bool_tree_false (tree a ATTRIBUTE_UNUSED)
7b1bd3c5
RH
188{
189 return false;
190}
3a04ff64 191
ac7d7749
KG
192bool
193hook_bool_const_tree_false (const_tree a ATTRIBUTE_UNUSED)
194{
195 return false;
196}
197
c6e8c921
GK
198bool
199hook_bool_tree_true (tree a ATTRIBUTE_UNUSED)
200{
201 return true;
202}
203
586de218
KG
204bool
205hook_bool_const_tree_true (const_tree a ATTRIBUTE_UNUSED)
206{
207 return true;
208}
209
4977bab6 210bool
1d088dee 211hook_bool_tree_tree_false (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
4977bab6
ZW
212{
213 return false;
214}
215
953ff289
DN
216bool
217hook_bool_tree_bool_false (tree a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
218{
219 return false;
220}
221
3a04ff64 222bool
1d088dee 223hook_bool_rtx_false (rtx a ATTRIBUTE_UNUSED)
3a04ff64
RH
224{
225 return false;
226}
3c50106f 227
e129d93a
ILT
228bool
229hook_bool_uintp_uintp_false (unsigned int *a ATTRIBUTE_UNUSED,
230 unsigned int *b ATTRIBUTE_UNUSED)
231{
232 return false;
233}
234
3c50106f 235bool
1d088dee
AJ
236hook_bool_rtx_int_int_intp_false (rtx a ATTRIBUTE_UNUSED,
237 int b ATTRIBUTE_UNUSED,
238 int c ATTRIBUTE_UNUSED,
239 int *d ATTRIBUTE_UNUSED)
3c50106f
RH
240{
241 return false;
242}
243
7daebb7a
RS
244/* Generic hook that takes an rtx and returns it. */
245rtx
1d088dee 246hook_rtx_rtx_identity (rtx x)
7daebb7a
RS
247{
248 return x;
249}
250
96714395
AH
251/* Generic hook that takes an rtx and returns NULL_RTX. */
252rtx
1d088dee 253hook_rtx_rtx_null (rtx x ATTRIBUTE_UNUSED)
96714395 254{
c6e8c921
GK
255 return NULL;
256}
257
258/* Generic hook that takes a tree and an int and returns NULL_RTX. */
259rtx
260hook_rtx_tree_int_null (tree a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED)
261{
262 return NULL;
96714395 263}
18c81520 264
61158923 265/* Generic hook that takes three trees and returns the last one as is. */
67dfe110 266tree
61158923
HPN
267hook_tree_tree_tree_tree_3rd_identity (tree a ATTRIBUTE_UNUSED,
268 tree b ATTRIBUTE_UNUSED, tree c)
67dfe110 269{
61158923 270 return c;
67dfe110 271}
f18eca82
ZL
272
273/* Generic hook that takes a tree and returns a NULL string. */
274const char *
3101faab 275hook_constcharptr_const_tree_null (const_tree t ATTRIBUTE_UNUSED)
f18eca82
ZL
276{
277 return NULL;
278}
55e74277 279
6b889d89
UB
280tree
281hook_tree_tree_tree_bool_null (tree t0 ATTRIBUTE_UNUSED,
282 tree t1 ATTRIBUTE_UNUSED,
a05a80fc 283 bool ignore ATTRIBUTE_UNUSED)
55e74277
PB
284{
285 return NULL;
286}
e7e64a25 287
953ff289
DN
288tree
289hook_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED, tree t1 ATTRIBUTE_UNUSED)
290{
291 return NULL;
292}
293
e7e64a25
AS
294/* Generic hook that takes a rtx and returns a NULL string. */
295const char *
3101faab 296hook_constcharptr_const_rtx_null (const_rtx r ATTRIBUTE_UNUSED)
e7e64a25
AS
297{
298 return NULL;
299}
4de67c26
JM
300
301const char *
3101faab
KG
302hook_constcharptr_const_tree_const_tree_null (const_tree t0 ATTRIBUTE_UNUSED,
303 const_tree t1 ATTRIBUTE_UNUSED)
4de67c26
JM
304{
305 return NULL;
306}
307
308const char *
3101faab
KG
309hook_constcharptr_int_const_tree_null (int i ATTRIBUTE_UNUSED,
310 const_tree t0 ATTRIBUTE_UNUSED)
4de67c26
JM
311{
312 return NULL;
313}
314
315const char *
3101faab
KG
316hook_constcharptr_int_const_tree_const_tree_null (int i ATTRIBUTE_UNUSED,
317 const_tree t0 ATTRIBUTE_UNUSED,
318 const_tree t1 ATTRIBUTE_UNUSED)
4de67c26
JM
319{
320 return NULL;
321}