196263Sobrien/* General-purpose hooks.
2169689Skan   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
396263Sobrien
496263SobrienThis program is free software; you can redistribute it and/or modify it
596263Sobrienunder the terms of the GNU General Public License as published by the
696263SobrienFree Software Foundation; either version 2, or (at your option) any
796263Sobrienlater version.
896263Sobrien
996263SobrienThis program is distributed in the hope that it will be useful,
1096263Sobrienbut WITHOUT ANY WARRANTY; without even the implied warranty of
1196263SobrienMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1296263SobrienGNU General Public License for more details.
1396263Sobrien
1496263SobrienYou should have received a copy of the GNU General Public License
1596263Sobrienalong with this program; if not, write to the Free Software
16169689SkanFoundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1796263Sobrien
1896263Sobrien In other words, you are welcome to use, share and improve this program.
1996263Sobrien You are forbidden to forbid anyone else to use, share and improve
2096263Sobrien what you give them.   Help stamp out software-hoarding!  */
2196263Sobrien
2296263Sobrien/* This file contains generic hooks that can be used as defaults for
2396263Sobrien   target or language-dependent hook initializers.  */
2496263Sobrien
2596263Sobrien#include "config.h"
2696263Sobrien#include "system.h"
27132718Skan#include "coretypes.h"
28132718Skan#include "tm.h"
2996263Sobrien#include "hooks.h"
3096263Sobrien
31102780Skan/* Generic hook that does absolutely zappo.  */
32102780Skanvoid
33132718Skanhook_void_void (void)
34102780Skan{
35102780Skan}
36102780Skan
3796263Sobrien/* Generic hook that takes no arguments and returns false.  */
3896263Sobrienbool
39132718Skanhook_bool_void_false (void)
4096263Sobrien{
4196263Sobrien  return false;
4296263Sobrien}
43107590Sobrien
44169689Skan/* Generic hook that takes no arguments and returns true.  */
45169689Skanbool
46169689Skanhook_bool_void_true (void)
47169689Skan{
48169689Skan  return true;
49169689Skan}
50169689Skan
51169689Skan/* Generic hook that takes no arguments and returns NO_REGS.  */
52132718Skanint
53132718Skanhook_int_void_no_regs (void)
54132718Skan{
55132718Skan  return NO_REGS;
56132718Skan}
57132718Skan
58132718Skan/* Generic hook that takes (bool) and returns false.  */
59132718Skanbool
60132718Skanhook_bool_bool_false (bool a ATTRIBUTE_UNUSED)
61132718Skan{
62132718Skan  return false;
63132718Skan}
64132718Skan
65169689Skan/* Generic hook that takes (enum machine_mode) and returns false.  */
66169689Skanbool
67169689Skanhook_bool_mode_false (enum machine_mode mode ATTRIBUTE_UNUSED)
68169689Skan{
69169689Skan  return false;
70169689Skan}
71132718Skan
72169689Skan/* Generic hook that takes (enum machine_mode, rtx) and returns false.  */
73169689Skanbool
74169689Skanhook_bool_mode_rtx_false (enum machine_mode mode ATTRIBUTE_UNUSED,
75169689Skan			  rtx value ATTRIBUTE_UNUSED)
76117395Skan{
77169689Skan  return false;
78117395Skan}
79117395Skan
80169689Skan/* Generic hook that takes (enum machine_mode, rtx) and returns true.  */
81169689Skanbool
82169689Skanhook_bool_mode_rtx_true (enum machine_mode mode ATTRIBUTE_UNUSED,
83169689Skan			 rtx value ATTRIBUTE_UNUSED)
84117395Skan{
85169689Skan  return true;
86117395Skan}
87117395Skan
88169689Skan/* Generic hook that takes (FILE *, const char *) and does nothing.  */
89132718Skanvoid
90169689Skanhook_void_FILEptr_constcharptr (FILE *a ATTRIBUTE_UNUSED, const char *b ATTRIBUTE_UNUSED)
91132718Skan{
92132718Skan}
93132718Skan
94117395Skan/* Used for the TARGET_ASM_CAN_OUTPUT_MI_THUNK hook.  */
95107590Sobrienbool
96132718Skanhook_bool_tree_hwi_hwi_tree_false (tree a ATTRIBUTE_UNUSED,
97132718Skan				   HOST_WIDE_INT b ATTRIBUTE_UNUSED,
98132718Skan				   HOST_WIDE_INT c ATTRIBUTE_UNUSED,
99132718Skan				   tree d ATTRIBUTE_UNUSED)
100107590Sobrien{
101107590Sobrien  return false;
102107590Sobrien}
103117395Skan
104117395Skanbool
105132718Skanhook_bool_tree_hwi_hwi_tree_true (tree a ATTRIBUTE_UNUSED,
106132718Skan				  HOST_WIDE_INT b ATTRIBUTE_UNUSED,
107132718Skan				  HOST_WIDE_INT c ATTRIBUTE_UNUSED,
108132718Skan				  tree d ATTRIBUTE_UNUSED)
109117395Skan{
110117395Skan  return true;
111117395Skan}
112117395Skan
113117395Skanbool
114132718Skanhook_bool_constcharptr_size_t_false (const char *a ATTRIBUTE_UNUSED,
115132718Skan				     size_t b ATTRIBUTE_UNUSED)
116117395Skan{
117132718Skan  return false;
118132718Skan}
119132718Skan
120132718Skanbool
121169689Skanhook_bool_size_t_constcharptr_int_true (size_t a ATTRIBUTE_UNUSED,
122169689Skan					const char *b ATTRIBUTE_UNUSED,
123169689Skan					int c ATTRIBUTE_UNUSED)
124169689Skan{
125169689Skan  return true;
126169689Skan}
127169689Skan
128169689Skanbool
129132718Skandefault_can_output_mi_thunk_no_vcall (tree a ATTRIBUTE_UNUSED,
130132718Skan				      HOST_WIDE_INT b ATTRIBUTE_UNUSED,
131132718Skan				      HOST_WIDE_INT c,
132132718Skan				      tree d ATTRIBUTE_UNUSED)
133132718Skan{
134117395Skan  return c == 0;
135117395Skan}
136117395Skan
137169689Skanint
138169689Skanhook_int_tree_0 (tree a ATTRIBUTE_UNUSED)
139169689Skan{
140169689Skan  return 0;
141169689Skan}
142169689Skan
143117395Skan/* ??? Used for comp_type_attributes, which ought to return bool.  */
144117395Skanint
145132718Skanhook_int_tree_tree_1 (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
146117395Skan{
147117395Skan  return 1;
148117395Skan}
149117395Skan
150132718Skanint
151132718Skanhook_int_rtx_0 (rtx a ATTRIBUTE_UNUSED)
152132718Skan{
153132718Skan  return 0;
154132718Skan}
155132718Skan
156132718Skanint
157132718Skanhook_int_size_t_constcharptr_int_0 (size_t a ATTRIBUTE_UNUSED,
158132718Skan				    const char *b ATTRIBUTE_UNUSED,
159132718Skan				    int c ATTRIBUTE_UNUSED)
160132718Skan{
161132718Skan  return 0;
162132718Skan}
163132718Skan
164132718Skanunsigned int
165132718Skanhook_uint_uint_constcharptrptr_0 (unsigned int a ATTRIBUTE_UNUSED,
166132718Skan				  const char **b ATTRIBUTE_UNUSED)
167132718Skan{
168132718Skan  return 0;
169132718Skan}
170132718Skan
171117395Skanvoid
172132718Skanhook_void_tree (tree a ATTRIBUTE_UNUSED)
173117395Skan{
174117395Skan}
175117395Skan
176117395Skanvoid
177169689Skanhook_void_constcharptr (const char *a ATTRIBUTE_UNUSED)
178169689Skan{
179169689Skan}
180169689Skan
181169689Skanvoid
182132718Skanhook_void_tree_treeptr (tree a ATTRIBUTE_UNUSED, tree *b ATTRIBUTE_UNUSED)
183117395Skan{
184117395Skan}
185117395Skan
186117395Skanbool
187132718Skanhook_bool_tree_false (tree a ATTRIBUTE_UNUSED)
188117395Skan{
189117395Skan  return false;
190117395Skan}
191117395Skan
192117395Skanbool
193132718Skanhook_bool_tree_true (tree a ATTRIBUTE_UNUSED)
194117395Skan{
195132718Skan  return true;
196132718Skan}
197132718Skan
198132718Skanbool
199132718Skanhook_bool_tree_tree_false (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
200132718Skan{
201117395Skan  return false;
202117395Skan}
203132718Skan
204132718Skanbool
205169689Skanhook_bool_tree_bool_false (tree a ATTRIBUTE_UNUSED, bool b ATTRIBUTE_UNUSED)
206169689Skan{
207169689Skan  return false;
208169689Skan}
209169689Skan
210169689Skanbool
211132718Skanhook_bool_rtx_false (rtx a ATTRIBUTE_UNUSED)
212132718Skan{
213132718Skan  return false;
214132718Skan}
215132718Skan
216132718Skanbool
217132718Skanhook_bool_uintp_uintp_false (unsigned int *a ATTRIBUTE_UNUSED,
218132718Skan			     unsigned int *b ATTRIBUTE_UNUSED)
219132718Skan{
220132718Skan  return false;
221132718Skan}
222132718Skan
223132718Skanbool
224132718Skanhook_bool_rtx_int_int_intp_false (rtx a ATTRIBUTE_UNUSED,
225132718Skan				  int b ATTRIBUTE_UNUSED,
226132718Skan				  int c ATTRIBUTE_UNUSED,
227132718Skan				  int *d ATTRIBUTE_UNUSED)
228132718Skan{
229132718Skan  return false;
230132718Skan}
231132718Skan
232132718Skan/* Generic hook that takes an rtx and returns it.  */
233132718Skanrtx
234132718Skanhook_rtx_rtx_identity (rtx x)
235132718Skan{
236132718Skan  return x;
237132718Skan}
238132718Skan
239132718Skan/* Generic hook that takes an rtx and returns NULL_RTX.  */
240132718Skanrtx
241132718Skanhook_rtx_rtx_null (rtx x ATTRIBUTE_UNUSED)
242132718Skan{
243132718Skan  return NULL;
244132718Skan}
245132718Skan
246132718Skan/* Generic hook that takes a tree and an int and returns NULL_RTX.  */
247132718Skanrtx
248132718Skanhook_rtx_tree_int_null (tree a ATTRIBUTE_UNUSED, int b ATTRIBUTE_UNUSED)
249132718Skan{
250132718Skan  return NULL;
251132718Skan}
252132718Skan
253169689Skan/* Generic hook that takes three trees and returns the last one as is.  */
254169689Skantree
255169689Skanhook_tree_tree_tree_tree_3rd_identity (tree a ATTRIBUTE_UNUSED,
256169689Skan				       tree b ATTRIBUTE_UNUSED, tree c)
257169689Skan{
258169689Skan  return c;
259169689Skan}
260169689Skan
261146895Skan/* Generic hook that takes a tree and returns a NULL string.  */
262146895Skanconst char *
263146895Skanhook_constcharptr_tree_null (tree t ATTRIBUTE_UNUSED)
264146895Skan{
265146895Skan  return NULL;
266146895Skan}
267169689Skan
268169689Skantree
269169689Skanhook_tree_tree_tree_bool_null (tree t0 ATTRIBUTE_UNUSED, tree t1 ATTRIBUTE_UNUSED,
270169689Skan			       bool ignore ATTRIBUTE_UNUSED)
271169689Skan{
272169689Skan  return NULL;
273169689Skan}
274169689Skan
275169689Skantree
276169689Skanhook_tree_tree_tree_null (tree t0 ATTRIBUTE_UNUSED, tree t1 ATTRIBUTE_UNUSED)
277169689Skan{
278169689Skan  return NULL;
279169689Skan}
280169689Skan
281169689Skan/* Generic hook that takes a rtx and returns a NULL string.  */
282169689Skanconst char *
283169689Skanhook_constcharptr_rtx_null (rtx r ATTRIBUTE_UNUSED)
284169689Skan{
285169689Skan  return NULL;
286169689Skan}
287169689Skan
288169689Skanconst char *
289169689Skanhook_constcharptr_tree_tree_null (tree t0 ATTRIBUTE_UNUSED,
290169689Skan				  tree t1 ATTRIBUTE_UNUSED)
291169689Skan{
292169689Skan  return NULL;
293169689Skan}
294169689Skan
295169689Skanconst char *
296169689Skanhook_constcharptr_int_tree_null (int i ATTRIBUTE_UNUSED,
297169689Skan				 tree t0 ATTRIBUTE_UNUSED)
298169689Skan{
299169689Skan  return NULL;
300169689Skan}
301169689Skan
302169689Skanconst char *
303169689Skanhook_constcharptr_int_tree_tree_null (int i ATTRIBUTE_UNUSED,
304169689Skan				      tree t0 ATTRIBUTE_UNUSED,
305169689Skan				      tree t1 ATTRIBUTE_UNUSED)
306169689Skan{
307169689Skan  return NULL;
308169689Skan}
309