]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/hooks.c
re PR target/47025 (Dead stores in variadic functions not eliminated)
[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
RH
134
135/* Used for the TARGET_ASM_CAN_OUTPUT_MI_THUNK hook. */
136bool
3101faab
KG
137hook_bool_const_tree_hwi_hwi_const_tree_false (const_tree a ATTRIBUTE_UNUSED,
138 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
139 HOST_WIDE_INT c ATTRIBUTE_UNUSED,
140 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
141{
142 return false;
143}
144
145bool
3101faab
KG
146hook_bool_const_tree_hwi_hwi_const_tree_true (const_tree a ATTRIBUTE_UNUSED,
147 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
148 HOST_WIDE_INT c ATTRIBUTE_UNUSED,
149 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
150{
151 return true;
152}
153
154bool
3101faab 155default_can_output_mi_thunk_no_vcall (const_tree a ATTRIBUTE_UNUSED,
1d088dee
AJ
156 HOST_WIDE_INT b ATTRIBUTE_UNUSED,
157 HOST_WIDE_INT c,
3101faab 158 const_tree d ATTRIBUTE_UNUSED)
3961e8fe
RH
159{
160 return c == 0;
161}
7b1bd3c5 162
a1c496cb 163int
3101faab 164hook_int_const_tree_0 (const_tree a ATTRIBUTE_UNUSED)
a1c496cb
EC
165{
166 return 0;
167}
168
7b1bd3c5
RH
169/* ??? Used for comp_type_attributes, which ought to return bool. */
170int
3101faab 171hook_int_const_tree_const_tree_1 (const_tree a ATTRIBUTE_UNUSED, const_tree b ATTRIBUTE_UNUSED)
7b1bd3c5
RH
172{
173 return 1;
174}
175
dcefdf67 176int
1d088dee 177hook_int_rtx_0 (rtx a ATTRIBUTE_UNUSED)
dcefdf67
RH
178{
179 return 0;
180}
181
f40751dd
JH
182int
183hook_int_rtx_bool_0 (rtx a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
184{
185 return 0;
186}
187
b86f6cd9 188unsigned int
7a9bf9a4 189hook_uint_void_0 (void)
b86f6cd9
NB
190{
191 return 0;
192}
193
7b1bd3c5 194void
1d088dee 195hook_void_tree (tree a ATTRIBUTE_UNUSED)
7b1bd3c5
RH
196{
197}
198
94d1613b 199void
8e3e233b 200hook_void_constcharptr (const char *a ATTRIBUTE_UNUSED)
94d1613b
MS
201{
202}
203
7b1bd3c5 204void
1d088dee 205hook_void_tree_treeptr (tree a ATTRIBUTE_UNUSED, tree *b ATTRIBUTE_UNUSED)
7b1bd3c5
RH
206{
207}
208
fac0f722
JM
209void
210hook_void_int_int (int a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED)
211{
212}
213
7b1bd3c5 214bool
1d088dee 215hook_bool_tree_false (tree a ATTRIBUTE_UNUSED)
7b1bd3c5
RH
216{
217 return false;
218}
3a04ff64 219
ac7d7749
KG
220bool
221hook_bool_const_tree_false (const_tree a ATTRIBUTE_UNUSED)
222{
223 return false;
224}
225
c6e8c921
GK
226bool
227hook_bool_tree_true (tree a ATTRIBUTE_UNUSED)
228{
229 return true;
230}
231
586de218
KG
232bool
233hook_bool_const_tree_true (const_tree a ATTRIBUTE_UNUSED)
234{
235 return true;
236}
237
4977bab6 238bool
1d088dee 239hook_bool_tree_tree_false (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
4977bab6
ZW
240{
241 return false;
242}
243
faf63e39
RH
244bool
245hook_bool_tree_tree_true (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
246{
247 return true;
248}
249
953ff289
DN
250bool
251hook_bool_tree_bool_false (tree a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
252{
253 return false;
254}
255
3a04ff64 256bool
1d088dee 257hook_bool_rtx_false (rtx a ATTRIBUTE_UNUSED)
3a04ff64
RH
258{
259 return false;
260}
3c50106f 261
e129d93a
ILT
262bool
263hook_bool_uintp_uintp_false (unsigned int *a ATTRIBUTE_UNUSED,
264 unsigned int *b ATTRIBUTE_UNUSED)
265{
266 return false;
267}
268
3c50106f 269bool
68f932c4
RS
270hook_bool_rtx_int_int_int_intp_bool_false (rtx a ATTRIBUTE_UNUSED,
271 int b ATTRIBUTE_UNUSED,
272 int c ATTRIBUTE_UNUSED,
273 int d ATTRIBUTE_UNUSED,
274 int *e ATTRIBUTE_UNUSED,
275 bool speed_p ATTRIBUTE_UNUSED)
3c50106f
RH
276{
277 return false;
278}
279
7daebb7a
RS
280/* Generic hook that takes an rtx and returns it. */
281rtx
1d088dee 282hook_rtx_rtx_identity (rtx x)
7daebb7a
RS
283{
284 return x;
285}
286
96714395
AH
287/* Generic hook that takes an rtx and returns NULL_RTX. */
288rtx
1d088dee 289hook_rtx_rtx_null (rtx x ATTRIBUTE_UNUSED)
96714395 290{
c6e8c921
GK
291 return NULL;
292}
293
294/* Generic hook that takes a tree and an int and returns NULL_RTX. */
295rtx
296hook_rtx_tree_int_null (tree a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED)
297{
298 return NULL;
96714395 299}
18c81520 300
61158923 301/* Generic hook that takes three trees and returns the last one as is. */
67dfe110 302tree
61158923
HPN
303hook_tree_tree_tree_tree_3rd_identity (tree a ATTRIBUTE_UNUSED,
304 tree b ATTRIBUTE_UNUSED, tree c)
67dfe110 305{
61158923 306 return c;
67dfe110 307}
f18eca82
ZL
308
309/* Generic hook that takes a tree and returns a NULL string. */
310const char *
3101faab 311hook_constcharptr_const_tree_null (const_tree t ATTRIBUTE_UNUSED)
f18eca82
ZL
312{
313 return NULL;
314}
55e74277 315
6b889d89 316tree
f311c3b4
NF
317hook_tree_tree_int_treep_bool_null (tree t0 ATTRIBUTE_UNUSED,
318 int i ATTRIBUTE_UNUSED,
319 tree *p ATTRIBUTE_UNUSED,
320 bool ignore ATTRIBUTE_UNUSED)
55e74277
PB
321{
322 return NULL;
323}
e7e64a25 324
953ff289
DN
325tree
326hook_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED, tree t1 ATTRIBUTE_UNUSED)
327{
328 return NULL;
329}
330
a68ab351
JJ
331tree
332hook_tree_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED,
333 tree t1 ATTRIBUTE_UNUSED,
334 tree t2 ATTRIBUTE_UNUSED)
335{
336 return NULL;
337}
338
e7e64a25
AS
339/* Generic hook that takes a rtx and returns a NULL string. */
340const char *
3101faab 341hook_constcharptr_const_rtx_null (const_rtx r ATTRIBUTE_UNUSED)
e7e64a25
AS
342{
343 return NULL;
344}
4de67c26
JM
345
346const char *
3101faab
KG
347hook_constcharptr_const_tree_const_tree_null (const_tree t0 ATTRIBUTE_UNUSED,
348 const_tree t1 ATTRIBUTE_UNUSED)
4de67c26
JM
349{
350 return NULL;
351}
352
353const char *
3101faab
KG
354hook_constcharptr_int_const_tree_null (int i ATTRIBUTE_UNUSED,
355 const_tree t0 ATTRIBUTE_UNUSED)
4de67c26
JM
356{
357 return NULL;
358}
359
360const char *
3101faab
KG
361hook_constcharptr_int_const_tree_const_tree_null (int i ATTRIBUTE_UNUSED,
362 const_tree t0 ATTRIBUTE_UNUSED,
363 const_tree t1 ATTRIBUTE_UNUSED)
4de67c26
JM
364{
365 return NULL;
366}
40449a90
SL
367
368/* Generic hook that takes a const_tree and returns NULL_TREE. */
369tree
370hook_tree_const_tree_null (const_tree t ATTRIBUTE_UNUSED)
371{
372 return NULL;
373}
7942e47e
RY
374
375/* Generic hook that takes a rtx and an int and returns a bool. */
376
377bool
378hook_bool_rtx_int_false (rtx insn ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED)
379{
380 return false;
381}
382
383/* Generic hook that takes a rtx and an int and returns void. */
384
385void
386hook_void_rtx_int (rtx insn ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED)
387{
388}
7e4aae92
JM
389
390/* Generic hook that takes a struct gcc_options * and returns void. */
391
392void
393hook_void_gcc_optionsp (struct gcc_options *opts ATTRIBUTE_UNUSED)
394{
395}