190075Sobrien/* Default initializers for a generic GCC target.
2169689Skan   Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
3169689Skan   Free Software Foundation, Inc.
490075Sobrien
590075SobrienThis program is free software; you can redistribute it and/or modify it
690075Sobrienunder the terms of the GNU General Public License as published by the
790075SobrienFree Software Foundation; either version 2, or (at your option) any
890075Sobrienlater version.
990075Sobrien
1090075SobrienThis program is distributed in the hope that it will be useful,
1190075Sobrienbut WITHOUT ANY WARRANTY; without even the implied warranty of
1290075SobrienMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1390075SobrienGNU General Public License for more details.
1490075Sobrien
1590075SobrienYou should have received a copy of the GNU General Public License
1690075Sobrienalong with this program; if not, write to the Free Software
17169689SkanFoundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
1890075Sobrien
1990075Sobrien In other words, you are welcome to use, share and improve this program.
2090075Sobrien You are forbidden to forbid anyone else to use, share and improve
2190075Sobrien what you give them.   Help stamp out software-hoarding!  */
2290075Sobrien
2390075Sobrien/* See target.h for a description of what this file contains and how to
2490075Sobrien   use it.
2590075Sobrien
2690075Sobrien   We want to have non-NULL default definitions of all hook functions,
2790075Sobrien   even if they do nothing.  */
2890075Sobrien
2990075Sobrien/* Note that if one of these macros must be defined in an OS .h file
3090075Sobrien   rather than the .c file, then we need to wrap the default
3190075Sobrien   definition in a #ifndef, since files include tm.h before this one.  */
3290075Sobrien
3390075Sobrien/* Assembler output.  */
34169689Skan#ifndef TARGET_ASM_OPEN_PAREN
3590075Sobrien#define TARGET_ASM_OPEN_PAREN "("
36169689Skan#endif
37169689Skan#ifndef TARGET_ASM_CLOSE_PAREN
3890075Sobrien#define TARGET_ASM_CLOSE_PAREN ")"
39169689Skan#endif
40169689Skan
4190075Sobrien#define TARGET_ASM_BYTE_OP "\t.byte\t"
4290075Sobrien
4390075Sobrien#define TARGET_ASM_ALIGNED_HI_OP "\t.short\t"
4490075Sobrien#define TARGET_ASM_ALIGNED_SI_OP "\t.long\t"
4590075Sobrien#define TARGET_ASM_ALIGNED_DI_OP NULL
4690075Sobrien#define TARGET_ASM_ALIGNED_TI_OP NULL
4790075Sobrien
4890075Sobrien/* GAS and SYSV4 assemblers accept these.  */
49132718Skan#if defined (OBJECT_FORMAT_ELF)
5090075Sobrien#define TARGET_ASM_UNALIGNED_HI_OP "\t.2byte\t"
5190075Sobrien#define TARGET_ASM_UNALIGNED_SI_OP "\t.4byte\t"
5290075Sobrien#define TARGET_ASM_UNALIGNED_DI_OP "\t.8byte\t"
5390075Sobrien#define TARGET_ASM_UNALIGNED_TI_OP NULL
5490075Sobrien#else
5590075Sobrien#define TARGET_ASM_UNALIGNED_HI_OP NULL
5690075Sobrien#define TARGET_ASM_UNALIGNED_SI_OP NULL
5790075Sobrien#define TARGET_ASM_UNALIGNED_DI_OP NULL
5890075Sobrien#define TARGET_ASM_UNALIGNED_TI_OP NULL
59132718Skan#endif /* OBJECT_FORMAT_ELF */
6090075Sobrien
6190075Sobrien#define TARGET_ASM_INTEGER default_assemble_integer
6290075Sobrien
63117395Skan#ifndef TARGET_ASM_GLOBALIZE_LABEL
64117395Skan#define TARGET_ASM_GLOBALIZE_LABEL default_globalize_label
65117395Skan#endif
66169689Skan
67169689Skan#ifndef TARGET_ASM_EMIT_UNWIND_LABEL
68169689Skan#define TARGET_ASM_EMIT_UNWIND_LABEL default_emit_unwind_label
69169689Skan#endif
70169689Skan
71169689Skan#ifndef TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL
72169689Skan#define TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL default_emit_except_table_label
73169689Skan#endif
74169689Skan
75169689Skan#ifndef TARGET_UNWIND_EMIT
76169689Skan#define TARGET_UNWIND_EMIT default_unwind_emit
77169689Skan#endif
78169689Skan
79132718Skan#ifndef TARGET_ASM_INTERNAL_LABEL
80132718Skan#define TARGET_ASM_INTERNAL_LABEL default_internal_label
81132718Skan#endif
82117395Skan
83169689Skan#ifndef TARGET_ARM_TTYPE
84169689Skan#define TARGET_ASM_TTYPE hook_bool_rtx_false
85169689Skan#endif
86169689Skan
87117395Skan#ifndef TARGET_ASM_ASSEMBLE_VISIBILITY
88117395Skan#define TARGET_ASM_ASSEMBLE_VISIBILITY default_assemble_visibility
89117395Skan#endif
90117395Skan
9190075Sobrien#define TARGET_ASM_FUNCTION_PROLOGUE default_function_pro_epilogue
9290075Sobrien#define TARGET_ASM_FUNCTION_EPILOGUE default_function_pro_epilogue
9390075Sobrien#define TARGET_ASM_FUNCTION_END_PROLOGUE no_asm_to_stream
9490075Sobrien#define TARGET_ASM_FUNCTION_BEGIN_EPILOGUE no_asm_to_stream
9590075Sobrien
96169689Skan#ifndef TARGET_ASM_RELOC_RW_MASK
97169689Skan#define TARGET_ASM_RELOC_RW_MASK default_reloc_rw_mask
98169689Skan#endif
99169689Skan
100117395Skan#ifndef TARGET_ASM_SELECT_SECTION
101117395Skan#define TARGET_ASM_SELECT_SECTION default_select_section
102117395Skan#endif
103117395Skan
104117395Skan#ifndef TARGET_ASM_UNIQUE_SECTION
105117395Skan#define TARGET_ASM_UNIQUE_SECTION default_unique_section
106117395Skan#endif
107117395Skan
108169689Skan#ifndef TARGET_ASM_FUNCTION_RODATA_SECTION
109169689Skan#define TARGET_ASM_FUNCTION_RODATA_SECTION default_function_rodata_section
110169689Skan#endif
111169689Skan
112117395Skan#ifndef TARGET_ASM_SELECT_RTX_SECTION
113117395Skan#define TARGET_ASM_SELECT_RTX_SECTION default_select_rtx_section
114117395Skan#endif
115117395Skan
11690075Sobrien#if !defined(TARGET_ASM_CONSTRUCTOR) && !defined(USE_COLLECT2)
11790075Sobrien# ifdef CTORS_SECTION_ASM_OP
11890075Sobrien#  define TARGET_ASM_CONSTRUCTOR default_ctor_section_asm_out_constructor
11990075Sobrien# else
12090075Sobrien#  ifdef TARGET_ASM_NAMED_SECTION
12190075Sobrien#   define TARGET_ASM_CONSTRUCTOR default_named_section_asm_out_constructor
12290075Sobrien#  else
12390075Sobrien#   define TARGET_ASM_CONSTRUCTOR default_stabs_asm_out_constructor
12490075Sobrien#  endif
12590075Sobrien# endif
12690075Sobrien#endif
12790075Sobrien
12890075Sobrien#if !defined(TARGET_ASM_DESTRUCTOR) && !defined(USE_COLLECT2)
12990075Sobrien# ifdef DTORS_SECTION_ASM_OP
13090075Sobrien#  define TARGET_ASM_DESTRUCTOR default_dtor_section_asm_out_destructor
13190075Sobrien# else
13290075Sobrien#  ifdef TARGET_ASM_NAMED_SECTION
13390075Sobrien#   define TARGET_ASM_DESTRUCTOR default_named_section_asm_out_destructor
13490075Sobrien#  else
13590075Sobrien#   define TARGET_ASM_DESTRUCTOR default_stabs_asm_out_destructor
13690075Sobrien#  endif
13790075Sobrien# endif
13890075Sobrien#endif
13990075Sobrien
140117395Skan#define TARGET_ASM_OUTPUT_MI_THUNK NULL
141117395Skan#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_tree_hwi_hwi_tree_false
142117395Skan
143169689Skan#if !defined(TARGET_HAVE_CTORS_DTORS)
144169689Skan# if defined(TARGET_ASM_CONSTRUCTOR) && defined(TARGET_ASM_DESTRUCTOR)
145169689Skan# define TARGET_HAVE_CTORS_DTORS true
146169689Skan# else
147169689Skan# define TARGET_HAVE_CTORS_DTORS false
148169689Skan# define TARGET_ASM_CONSTRUCTOR NULL
149169689Skan# define TARGET_ASM_DESTRUCTOR NULL
150169689Skan# endif
15190075Sobrien#endif
15290075Sobrien
153169689Skan#ifndef TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
154169689Skan#define TARGET_HAVE_SWITCHABLE_BSS_SECTIONS false
155169689Skan#endif
156169689Skan
157169689Skan#ifndef TARGET_ASM_INIT_SECTIONS
158169689Skan#define TARGET_ASM_INIT_SECTIONS hook_void_void
159169689Skan#endif
160169689Skan
16190075Sobrien#ifdef TARGET_ASM_NAMED_SECTION
16290075Sobrien#define TARGET_HAVE_NAMED_SECTIONS true
16390075Sobrien#else
16490075Sobrien#define TARGET_ASM_NAMED_SECTION default_no_named_section
16590075Sobrien#define TARGET_HAVE_NAMED_SECTIONS false
16690075Sobrien#endif
16790075Sobrien
168169689Skan#ifndef TARGET_INVALID_WITHIN_DOLOOP
169169689Skan#define TARGET_INVALID_WITHIN_DOLOOP default_invalid_within_doloop
170169689Skan#endif
171169689Skan
172169689Skan#ifndef TARGET_VALID_DLLIMPORT_ATTRIBUTE_P
173169689Skan#define TARGET_VALID_DLLIMPORT_ATTRIBUTE_P hook_bool_tree_true
174169689Skan#endif
175169689Skan
176117395Skan#ifndef TARGET_HAVE_TLS
177117395Skan#define TARGET_HAVE_TLS false
178117395Skan#endif
179117395Skan
180117395Skan#ifndef TARGET_HAVE_SRODATA_SECTION
181117395Skan#define TARGET_HAVE_SRODATA_SECTION false
182117395Skan#endif
183117395Skan
184117395Skan#ifndef TARGET_TERMINATE_DW2_EH_FRAME_INFO
185117395Skan#ifdef EH_FRAME_SECTION_NAME
186117395Skan#define TARGET_TERMINATE_DW2_EH_FRAME_INFO false
187117395Skan#else
188117395Skan#define TARGET_TERMINATE_DW2_EH_FRAME_INFO true
189117395Skan#endif
190117395Skan#endif
191117395Skan
192132718Skan#define TARGET_DWARF_REGISTER_SPAN hook_rtx_rtx_null
193132718Skan
194132718Skan#ifndef TARGET_ASM_FILE_START
195132718Skan#define TARGET_ASM_FILE_START default_file_start
196132718Skan#endif
197132718Skan
198132718Skan#ifndef TARGET_ASM_FILE_END
199132718Skan#define TARGET_ASM_FILE_END hook_void_void
200132718Skan#endif
201132718Skan
202169689Skan#ifndef TARGET_EXTRA_LIVE_ON_ENTRY
203169689Skan#define TARGET_EXTRA_LIVE_ON_ENTRY hook_void_bitmap
204169689Skan#endif
205169689Skan
206132718Skan#ifndef TARGET_ASM_FILE_START_APP_OFF
207132718Skan#define TARGET_ASM_FILE_START_APP_OFF false
208132718Skan#endif
209132718Skan
210132718Skan#ifndef TARGET_ASM_FILE_START_FILE_DIRECTIVE
211132718Skan#define TARGET_ASM_FILE_START_FILE_DIRECTIVE false
212132718Skan#endif
213132718Skan
214132718Skan#ifndef TARGET_ASM_EXTERNAL_LIBCALL
215132718Skan#define TARGET_ASM_EXTERNAL_LIBCALL default_external_libcall
216132718Skan#endif
217132718Skan
218169689Skan#ifndef TARGET_ASM_MARK_DECL_PRESERVED
219169689Skan#define TARGET_ASM_MARK_DECL_PRESERVED hook_void_constcharptr
220169689Skan#endif
221169689Skan
222169689Skan#ifndef TARGET_ASM_OUTPUT_ANCHOR
223169689Skan#ifdef ASM_OUTPUT_DEF
224169689Skan#define TARGET_ASM_OUTPUT_ANCHOR default_asm_output_anchor
225169689Skan#else
226169689Skan#define TARGET_ASM_OUTPUT_ANCHOR NULL
227169689Skan#endif
228169689Skan#endif
229169689Skan
230169689Skan#ifndef TARGET_ASM_OUTPUT_DWARF_DTPREL
231169689Skan#define TARGET_ASM_OUTPUT_DWARF_DTPREL NULL
232169689Skan#endif
233169689Skan
23490075Sobrien#define TARGET_ASM_ALIGNED_INT_OP				\
23590075Sobrien		       {TARGET_ASM_ALIGNED_HI_OP,		\
23690075Sobrien			TARGET_ASM_ALIGNED_SI_OP,		\
23790075Sobrien			TARGET_ASM_ALIGNED_DI_OP,		\
23890075Sobrien			TARGET_ASM_ALIGNED_TI_OP}
23990075Sobrien
24090075Sobrien#define TARGET_ASM_UNALIGNED_INT_OP				\
24190075Sobrien		       {TARGET_ASM_UNALIGNED_HI_OP,		\
24290075Sobrien			TARGET_ASM_UNALIGNED_SI_OP,		\
24390075Sobrien			TARGET_ASM_UNALIGNED_DI_OP,		\
24490075Sobrien			TARGET_ASM_UNALIGNED_TI_OP}
24590075Sobrien
24690075Sobrien#define TARGET_ASM_OUT {TARGET_ASM_OPEN_PAREN,			\
24790075Sobrien			TARGET_ASM_CLOSE_PAREN,			\
24890075Sobrien			TARGET_ASM_BYTE_OP,			\
24990075Sobrien			TARGET_ASM_ALIGNED_INT_OP,		\
25090075Sobrien			TARGET_ASM_UNALIGNED_INT_OP,		\
25190075Sobrien			TARGET_ASM_INTEGER,			\
252117395Skan			TARGET_ASM_GLOBALIZE_LABEL,		\
253169689Skan                        TARGET_ASM_EMIT_UNWIND_LABEL,           \
254169689Skan			TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL,	\
255169689Skan			TARGET_UNWIND_EMIT,			\
256132718Skan			TARGET_ASM_INTERNAL_LABEL,		\
257169689Skan			TARGET_ASM_TTYPE,			\
258117395Skan			TARGET_ASM_ASSEMBLE_VISIBILITY,		\
25990075Sobrien			TARGET_ASM_FUNCTION_PROLOGUE,		\
26090075Sobrien			TARGET_ASM_FUNCTION_END_PROLOGUE,	\
26190075Sobrien			TARGET_ASM_FUNCTION_BEGIN_EPILOGUE,	\
26290075Sobrien			TARGET_ASM_FUNCTION_EPILOGUE,		\
263169689Skan			TARGET_ASM_INIT_SECTIONS,		\
26490075Sobrien			TARGET_ASM_NAMED_SECTION,		\
265169689Skan			TARGET_ASM_RELOC_RW_MASK,		\
266117395Skan			TARGET_ASM_SELECT_SECTION,		\
267117395Skan			TARGET_ASM_SELECT_RTX_SECTION,		\
268117395Skan			TARGET_ASM_UNIQUE_SECTION,		\
269169689Skan			TARGET_ASM_FUNCTION_RODATA_SECTION,	\
27090075Sobrien			TARGET_ASM_CONSTRUCTOR,			\
271117395Skan			TARGET_ASM_DESTRUCTOR,                  \
272117395Skan                        TARGET_ASM_OUTPUT_MI_THUNK,             \
273132718Skan                        TARGET_ASM_CAN_OUTPUT_MI_THUNK,         \
274132718Skan                        TARGET_ASM_FILE_START,                  \
275132718Skan                        TARGET_ASM_FILE_END,			\
276169689Skan			TARGET_ASM_EXTERNAL_LIBCALL,            \
277169689Skan                        TARGET_ASM_MARK_DECL_PRESERVED,		\
278169689Skan			TARGET_ASM_OUTPUT_ANCHOR,		\
279169689Skan			TARGET_ASM_OUTPUT_DWARF_DTPREL}
28090075Sobrien
28190075Sobrien/* Scheduler hooks.  All of these default to null pointers, which
28290075Sobrien   haifa-sched.c looks for and handles.  */
28390075Sobrien#define TARGET_SCHED_ADJUST_COST 0
28490075Sobrien#define TARGET_SCHED_ADJUST_PRIORITY 0
28590075Sobrien#define TARGET_SCHED_ISSUE_RATE 0
28690075Sobrien#define TARGET_SCHED_VARIABLE_ISSUE 0
28790075Sobrien#define TARGET_SCHED_INIT 0
28890075Sobrien#define TARGET_SCHED_FINISH 0
289169689Skan#define TARGET_SCHED_INIT_GLOBAL 0
290169689Skan#define TARGET_SCHED_FINISH_GLOBAL 0
29190075Sobrien#define TARGET_SCHED_REORDER 0
29290075Sobrien#define TARGET_SCHED_REORDER2 0
293132718Skan#define TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK 0
294117395Skan#define TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN 0
295117395Skan#define TARGET_SCHED_DFA_PRE_CYCLE_INSN 0
296117395Skan#define TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN 0
297117395Skan#define TARGET_SCHED_DFA_POST_CYCLE_INSN 0
298117395Skan#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD 0
299132718Skan#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD 0
300132718Skan#define TARGET_SCHED_DFA_NEW_CYCLE 0
301132718Skan#define TARGET_SCHED_IS_COSTLY_DEPENDENCE 0
302169689Skan#define TARGET_SCHED_ADJUST_COST_2 0
303169689Skan#define TARGET_SCHED_H_I_D_EXTENDED 0
304169689Skan#define TARGET_SCHED_SPECULATE_INSN 0
305169689Skan#define TARGET_SCHED_NEEDS_BLOCK_P 0
306169689Skan#define TARGET_SCHED_GEN_CHECK 0
307169689Skan#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC 0
308169689Skan#define TARGET_SCHED_SET_SCHED_FLAGS 0
30990075Sobrien
310169689Skan
311117395Skan#define TARGET_SCHED						\
312117395Skan  {TARGET_SCHED_ADJUST_COST,					\
313117395Skan   TARGET_SCHED_ADJUST_PRIORITY,				\
314117395Skan   TARGET_SCHED_ISSUE_RATE,					\
315117395Skan   TARGET_SCHED_VARIABLE_ISSUE,					\
316117395Skan   TARGET_SCHED_INIT,						\
317117395Skan   TARGET_SCHED_FINISH,						\
318169689Skan   TARGET_SCHED_INIT_GLOBAL,					\
319169689Skan   TARGET_SCHED_FINISH_GLOBAL,					\
320117395Skan   TARGET_SCHED_REORDER,					\
321117395Skan   TARGET_SCHED_REORDER2,					\
322132718Skan   TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK,			\
323117395Skan   TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN,			\
324117395Skan   TARGET_SCHED_DFA_PRE_CYCLE_INSN,				\
325117395Skan   TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN,			\
326117395Skan   TARGET_SCHED_DFA_POST_CYCLE_INSN,				\
327117395Skan   TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD,		\
328132718Skan   TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD,	\
329132718Skan   TARGET_SCHED_DFA_NEW_CYCLE,					\
330169689Skan   TARGET_SCHED_IS_COSTLY_DEPENDENCE,                           \
331169689Skan   TARGET_SCHED_ADJUST_COST_2,                                  \
332169689Skan   TARGET_SCHED_H_I_D_EXTENDED,					\
333169689Skan   TARGET_SCHED_SPECULATE_INSN,                                 \
334169689Skan   TARGET_SCHED_NEEDS_BLOCK_P,                                  \
335169689Skan   TARGET_SCHED_GEN_CHECK,                                      \
336169689Skan   TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC, \
337169689Skan   TARGET_SCHED_SET_SCHED_FLAGS}
33890075Sobrien
339169689Skan#define TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD 0
340220150Smm#define TARGET_VECTOR_ALIGNMENT_REACHABLE \
341220150Smm  default_builtin_vector_alignment_reachable
342169689Skan
343169689Skan#define TARGET_VECTORIZE                                                \
344220150Smm  {TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD,				\
345220150Smm   TARGET_VECTOR_ALIGNMENT_REACHABLE}
346169689Skan
347169689Skan#define TARGET_DEFAULT_TARGET_FLAGS 0
348169689Skan
349169689Skan#define TARGET_HANDLE_OPTION hook_bool_size_t_constcharptr_int_true
350169689Skan
351169689Skan/* In except.c */
352169689Skan#define TARGET_EH_RETURN_FILTER_MODE  default_eh_return_filter_mode
353169689Skan
354132718Skan/* In tree.c.  */
35590075Sobrien#define TARGET_MERGE_DECL_ATTRIBUTES merge_decl_attributes
35690075Sobrien#define TARGET_MERGE_TYPE_ATTRIBUTES merge_type_attributes
357117395Skan#define TARGET_ATTRIBUTE_TABLE NULL
35890075Sobrien
359132718Skan/* In cse.c.  */
360132718Skan#define TARGET_ADDRESS_COST default_address_cost
361132718Skan
36290075Sobrien/* In builtins.c.  */
363132718Skan#define TARGET_INIT_BUILTINS hook_void_void
36490075Sobrien#define TARGET_EXPAND_BUILTIN default_expand_builtin
365169689Skan#define TARGET_RESOLVE_OVERLOADED_BUILTIN NULL
366169689Skan#define TARGET_FOLD_BUILTIN hook_tree_tree_tree_bool_null
36790075Sobrien
36890075Sobrien/* In varasm.c.  */
36990075Sobrien#ifndef TARGET_SECTION_TYPE_FLAGS
37090075Sobrien#define TARGET_SECTION_TYPE_FLAGS default_section_type_flags
37190075Sobrien#endif
37290075Sobrien
373117395Skan#ifndef TARGET_STRIP_NAME_ENCODING
374117395Skan#define TARGET_STRIP_NAME_ENCODING default_strip_name_encoding
375117395Skan#endif
376117395Skan
377117395Skan#ifndef TARGET_BINDS_LOCAL_P
378117395Skan#define TARGET_BINDS_LOCAL_P default_binds_local_p
379117395Skan#endif
380117395Skan
381169689Skan#ifndef TARGET_SHIFT_TRUNCATION_MASK
382169689Skan#define TARGET_SHIFT_TRUNCATION_MASK default_shift_truncation_mask
383169689Skan#endif
384169689Skan
385169689Skan#ifndef TARGET_MIN_DIVISIONS_FOR_RECIP_MUL
386169689Skan#define TARGET_MIN_DIVISIONS_FOR_RECIP_MUL default_min_divisions_for_recip_mul
387169689Skan#endif
388169689Skan
389169689Skan#ifndef TARGET_MODE_REP_EXTENDED
390169689Skan#define TARGET_MODE_REP_EXTENDED default_mode_rep_extended
391169689Skan#endif
392169689Skan
393132718Skan#ifndef TARGET_VALID_POINTER_MODE
394132718Skan#define TARGET_VALID_POINTER_MODE default_valid_pointer_mode
395132718Skan#endif
396132718Skan
397169689Skan#ifndef TARGET_SCALAR_MODE_SUPPORTED_P
398169689Skan#define TARGET_SCALAR_MODE_SUPPORTED_P default_scalar_mode_supported_p
399169689Skan#endif
400169689Skan
401169689Skan#ifndef TARGET_DECIMAL_FLOAT_SUPPORTED_P
402169689Skan#define TARGET_DECIMAL_FLOAT_SUPPORTED_P default_decimal_float_supported_p
403169689Skan#endif
404169689Skan
405169689Skan#ifndef TARGET_VECTOR_MODE_SUPPORTED_P
406169689Skan#define TARGET_VECTOR_MODE_SUPPORTED_P hook_bool_mode_false
407169689Skan#endif
408169689Skan
409132718Skan#ifndef TARGET_VECTOR_OPAQUE_P
410132718Skan#define TARGET_VECTOR_OPAQUE_P hook_bool_tree_false
411132718Skan#endif
412132718Skan
413169689Skan/* In hooks.c.  */
414117395Skan#define TARGET_CANNOT_MODIFY_JUMPS_P hook_bool_void_false
415132718Skan#define TARGET_BRANCH_TARGET_REGISTER_CLASS hook_int_void_no_regs
416132718Skan#define TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED hook_bool_bool_false
417117395Skan#define TARGET_CANNOT_FORCE_CONST_MEM hook_bool_rtx_false
418132718Skan#define TARGET_CANNOT_COPY_INSN_P NULL
419169689Skan#define TARGET_COMMUTATIVE_P hook_bool_rtx_commutative_p
420132718Skan#define TARGET_DELEGITIMIZE_ADDRESS hook_rtx_rtx_identity
421169689Skan#define TARGET_USE_BLOCKS_FOR_CONSTANT_P hook_bool_mode_rtx_false
422169689Skan#define TARGET_MIN_ANCHOR_OFFSET 0
423169689Skan#define TARGET_MAX_ANCHOR_OFFSET 0
424169689Skan#define TARGET_USE_ANCHORS_FOR_SYMBOL_P default_use_anchors_for_symbol_p
425132718Skan#define TARGET_FUNCTION_OK_FOR_SIBCALL hook_bool_tree_tree_false
426117395Skan#define TARGET_COMP_TYPE_ATTRIBUTES hook_int_tree_tree_1
427169689Skan#ifndef TARGET_SET_DEFAULT_TYPE_ATTRIBUTES
428117395Skan#define TARGET_SET_DEFAULT_TYPE_ATTRIBUTES hook_void_tree
429169689Skan#endif
430117395Skan#define TARGET_INSERT_ATTRIBUTES hook_void_tree_treeptr
431117395Skan#define TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P hook_bool_tree_false
432117395Skan#define TARGET_MS_BITFIELD_LAYOUT_P hook_bool_tree_false
433169689Skan#define TARGET_ALIGN_ANON_BITFIELD hook_bool_void_false
434169689Skan#define TARGET_NARROW_VOLATILE_BITFIELD hook_bool_void_false
435132718Skan#define TARGET_RTX_COSTS hook_bool_rtx_int_int_intp_false
436146895Skan#define TARGET_MANGLE_FUNDAMENTAL_TYPE hook_constcharptr_tree_null
437169689Skan#define TARGET_ALLOCATE_INITIAL_VALUE NULL
43896263Sobrien
439132718Skan#ifndef TARGET_INIT_LIBFUNCS
440132718Skan#define TARGET_INIT_LIBFUNCS hook_void_void
441132718Skan#endif
442132718Skan
443117395Skan#ifndef TARGET_IN_SMALL_DATA_P
444117395Skan#define TARGET_IN_SMALL_DATA_P hook_bool_tree_false
445117395Skan#endif
446117395Skan
447117395Skan#ifndef TARGET_ENCODE_SECTION_INFO
448132718Skan#define TARGET_ENCODE_SECTION_INFO default_encode_section_info
449117395Skan#endif
450117395Skan
451169689Skan#ifndef TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN
452169689Skan#define TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN hook_invalid_arg_for_unprototyped_fn
453169689Skan#endif
454169689Skan
455169689Skan#define TARGET_INVALID_CONVERSION hook_constcharptr_tree_tree_null
456169689Skan#define TARGET_INVALID_UNARY_OP hook_constcharptr_int_tree_null
457169689Skan#define TARGET_INVALID_BINARY_OP hook_constcharptr_int_tree_tree_null
458169689Skan
459132718Skan#define TARGET_FIXED_CONDITION_CODE_REGS hook_bool_uintp_uintp_false
460132718Skan
461132718Skan#define TARGET_CC_MODES_COMPATIBLE default_cc_modes_compatible
462132718Skan
463132718Skan#define TARGET_MACHINE_DEPENDENT_REORG 0
464132718Skan
465132718Skan#define TARGET_BUILD_BUILTIN_VA_LIST std_build_builtin_va_list
466132718Skan
467132718Skan#define TARGET_GET_PCH_VALIDITY default_get_pch_validity
468132718Skan#define TARGET_PCH_VALID_P default_pch_valid_p
469169689Skan#define TARGET_CHECK_PCH_TARGET_FLAGS NULL
470132718Skan
471169689Skan#define TARGET_DEFAULT_SHORT_ENUMS hook_bool_void_false
472132718Skan
473169689Skan#define TARGET_BUILTIN_SETJMP_FRAME_VALUE default_builtin_setjmp_frame_value
474169689Skan
475169689Skan#define TARGET_MD_ASM_CLOBBERS hook_tree_tree_tree_tree_3rd_identity
476169689Skan
477169689Skan#define TARGET_DWARF_CALLING_CONVENTION hook_int_tree_0
478169689Skan
479169689Skan#define TARGET_DWARF_HANDLE_FRAME_UNSPEC 0
480169689Skan
481169689Skan#define TARGET_STDARG_OPTIMIZE_HOOK 0
482169689Skan
483169689Skan#define TARGET_STACK_PROTECT_GUARD  default_stack_protect_guard
484169689Skan#define TARGET_STACK_PROTECT_FAIL   default_external_stack_protect_fail
485169689Skan
486169689Skan#define TARGET_ARM_EABI_UNWINDER false
487169689Skan
488169689Skan#define TARGET_PROMOTE_FUNCTION_ARGS hook_bool_tree_false
489169689Skan#define TARGET_PROMOTE_FUNCTION_RETURN hook_bool_tree_false
490169689Skan#define TARGET_PROMOTE_PROTOTYPES hook_bool_tree_false
491169689Skan
492169689Skan#define TARGET_STRUCT_VALUE_RTX hook_rtx_tree_int_null
493132718Skan#define TARGET_RETURN_IN_MEMORY default_return_in_memory
494132718Skan#define TARGET_RETURN_IN_MSB hook_bool_tree_false
495132718Skan
496132718Skan#define TARGET_EXPAND_BUILTIN_SAVEREGS default_expand_builtin_saveregs
497132718Skan#define TARGET_SETUP_INCOMING_VARARGS default_setup_incoming_varargs
498169689Skan#define TARGET_STRICT_ARGUMENT_NAMING hook_bool_CUMULATIVE_ARGS_false
499132718Skan#define TARGET_PRETEND_OUTGOING_VARARGS_NAMED \
500132718Skan  default_pretend_outgoing_varargs_named
501132718Skan#define TARGET_SPLIT_COMPLEX_ARG NULL
502132718Skan
503169689Skan#define TARGET_GIMPLIFY_VA_ARG_EXPR std_gimplify_va_arg_expr
504169689Skan#define TARGET_PASS_BY_REFERENCE hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false
505169689Skan
506169689Skan#define TARGET_RELAXED_ORDERING false
507169689Skan
508169689Skan#define TARGET_MUST_PASS_IN_STACK must_pass_in_stack_var_size_or_pad
509169689Skan#define TARGET_CALLEE_COPIES hook_bool_CUMULATIVE_ARGS_mode_tree_bool_false
510169689Skan#define TARGET_ARG_PARTIAL_BYTES hook_int_CUMULATIVE_ARGS_mode_tree_bool_0
511169689Skan
512169689Skan#define TARGET_FUNCTION_VALUE default_function_value
513169689Skan#define TARGET_INTERNAL_ARG_POINTER default_internal_arg_pointer
514169689Skan
515132718Skan#define TARGET_CALLS {						\
516132718Skan   TARGET_PROMOTE_FUNCTION_ARGS,				\
517132718Skan   TARGET_PROMOTE_FUNCTION_RETURN,				\
518132718Skan   TARGET_PROMOTE_PROTOTYPES,					\
519132718Skan   TARGET_STRUCT_VALUE_RTX,					\
520132718Skan   TARGET_RETURN_IN_MEMORY,					\
521132718Skan   TARGET_RETURN_IN_MSB,					\
522169689Skan   TARGET_PASS_BY_REFERENCE,					\
523132718Skan   TARGET_EXPAND_BUILTIN_SAVEREGS,				\
524132718Skan   TARGET_SETUP_INCOMING_VARARGS,				\
525132718Skan   TARGET_STRICT_ARGUMENT_NAMING,				\
526132718Skan   TARGET_PRETEND_OUTGOING_VARARGS_NAMED,			\
527132718Skan   TARGET_SPLIT_COMPLEX_ARG,					\
528169689Skan   TARGET_MUST_PASS_IN_STACK,					\
529169689Skan   TARGET_CALLEE_COPIES,					\
530169689Skan   TARGET_ARG_PARTIAL_BYTES,					\
531169689Skan   TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN,			\
532169689Skan   TARGET_FUNCTION_VALUE,					\
533169689Skan   TARGET_INTERNAL_ARG_POINTER					\
534132718Skan   }
535132718Skan
536169689Skan#ifndef TARGET_UNWIND_TABLES_DEFAULT
537169689Skan#define TARGET_UNWIND_TABLES_DEFAULT false
538169689Skan#endif
539169689Skan
540169689Skan#ifndef TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME
541169689Skan#define TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME 0
542169689Skan#endif
543169689Skan
544169689Skan#ifndef TARGET_HANDLE_PRAGMA_EXTERN_PREFIX
545169689Skan#define TARGET_HANDLE_PRAGMA_EXTERN_PREFIX 0
546169689Skan#endif
547169689Skan
548169689Skan#ifndef TARGET_SECONDARY_RELOAD
549169689Skan#define TARGET_SECONDARY_RELOAD default_secondary_reload
550169689Skan#endif
551169689Skan
552169689Skan
553169689Skan/* C++ specific.  */
554169689Skan#ifndef TARGET_CXX_GUARD_TYPE
555169689Skan#define TARGET_CXX_GUARD_TYPE default_cxx_guard_type
556169689Skan#endif
557169689Skan
558169689Skan#ifndef TARGET_CXX_GUARD_MASK_BIT
559169689Skan#define TARGET_CXX_GUARD_MASK_BIT hook_bool_void_false
560169689Skan#endif
561169689Skan
562169689Skan#ifndef TARGET_CXX_GET_COOKIE_SIZE
563169689Skan#define TARGET_CXX_GET_COOKIE_SIZE default_cxx_get_cookie_size
564169689Skan#endif
565169689Skan
566169689Skan#ifndef TARGET_CXX_COOKIE_HAS_SIZE
567169689Skan#define TARGET_CXX_COOKIE_HAS_SIZE hook_bool_void_false
568169689Skan#endif
569169689Skan
570169689Skan#ifndef TARGET_CXX_IMPORT_EXPORT_CLASS
571169689Skan#define TARGET_CXX_IMPORT_EXPORT_CLASS NULL
572169689Skan#endif
573169689Skan
574169689Skan#ifndef TARGET_CXX_CDTOR_RETURNS_THIS
575169689Skan#define TARGET_CXX_CDTOR_RETURNS_THIS hook_bool_void_false
576169689Skan#endif
577169689Skan
578169689Skan#ifndef TARGET_CXX_KEY_METHOD_MAY_BE_INLINE
579169689Skan#define TARGET_CXX_KEY_METHOD_MAY_BE_INLINE hook_bool_void_true
580169689Skan#endif
581169689Skan
582169689Skan#ifndef TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY
583169689Skan#define TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY hook_void_tree
584169689Skan#endif
585169689Skan
586169689Skan#ifndef TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT
587169689Skan#define TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT hook_bool_void_true
588169689Skan#endif
589169689Skan
590259948Spfg#ifndef TARGET_CXX_LIBRARY_RTTI_COMDAT
591259948Spfg#define TARGET_CXX_LIBRARY_RTTI_COMDAT hook_bool_void_true
592259948Spfg#endif
593259948Spfg
594169689Skan#ifndef TARGET_CXX_USE_AEABI_ATEXIT
595169689Skan#define TARGET_CXX_USE_AEABI_ATEXIT hook_bool_void_false
596169689Skan#endif
597169689Skan
598169689Skan#ifndef TARGET_CXX_ADJUST_CLASS_AT_DEFINITION
599169689Skan#define TARGET_CXX_ADJUST_CLASS_AT_DEFINITION hook_void_tree
600169689Skan#endif
601169689Skan
602169689Skan#define TARGET_CXX				\
603169689Skan  {						\
604169689Skan    TARGET_CXX_GUARD_TYPE,			\
605169689Skan    TARGET_CXX_GUARD_MASK_BIT,			\
606169689Skan    TARGET_CXX_GET_COOKIE_SIZE,			\
607169689Skan    TARGET_CXX_COOKIE_HAS_SIZE,			\
608169689Skan    TARGET_CXX_IMPORT_EXPORT_CLASS,		\
609169689Skan    TARGET_CXX_CDTOR_RETURNS_THIS,		\
610169689Skan    TARGET_CXX_KEY_METHOD_MAY_BE_INLINE,	\
611169689Skan    TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY,	\
612169689Skan    TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT,        \
613259948Spfg    TARGET_CXX_LIBRARY_RTTI_COMDAT,	        \
614169689Skan    TARGET_CXX_USE_AEABI_ATEXIT,		\
615169689Skan    TARGET_CXX_ADJUST_CLASS_AT_DEFINITION	\
616169689Skan  }
617169689Skan
61890075Sobrien/* The whole shebang.  */
61990075Sobrien#define TARGET_INITIALIZER			\
62090075Sobrien{						\
62190075Sobrien  TARGET_ASM_OUT,				\
62290075Sobrien  TARGET_SCHED,					\
623169689Skan  TARGET_VECTORIZE,				\
624169689Skan  TARGET_DEFAULT_TARGET_FLAGS,			\
625169689Skan  TARGET_HANDLE_OPTION,				\
626169689Skan  TARGET_EH_RETURN_FILTER_MODE,			\
62790075Sobrien  TARGET_MERGE_DECL_ATTRIBUTES,			\
62890075Sobrien  TARGET_MERGE_TYPE_ATTRIBUTES,			\
62990075Sobrien  TARGET_ATTRIBUTE_TABLE,			\
63090075Sobrien  TARGET_COMP_TYPE_ATTRIBUTES,			\
63190075Sobrien  TARGET_SET_DEFAULT_TYPE_ATTRIBUTES,		\
63290075Sobrien  TARGET_INSERT_ATTRIBUTES,			\
63390075Sobrien  TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P,	\
63496263Sobrien  TARGET_MS_BITFIELD_LAYOUT_P,			\
635169689Skan  TARGET_DECIMAL_FLOAT_SUPPORTED_P,		\
636169689Skan  TARGET_ALIGN_ANON_BITFIELD,			\
637169689Skan  TARGET_NARROW_VOLATILE_BITFIELD,		\
63890075Sobrien  TARGET_INIT_BUILTINS,				\
63990075Sobrien  TARGET_EXPAND_BUILTIN,			\
640169689Skan  TARGET_RESOLVE_OVERLOADED_BUILTIN,		\
641169689Skan  TARGET_FOLD_BUILTIN,				\
642146895Skan  TARGET_MANGLE_FUNDAMENTAL_TYPE,		\
643132718Skan  TARGET_INIT_LIBFUNCS,				\
64490075Sobrien  TARGET_SECTION_TYPE_FLAGS,			\
645117395Skan  TARGET_CANNOT_MODIFY_JUMPS_P,			\
646132718Skan  TARGET_BRANCH_TARGET_REGISTER_CLASS,		\
647132718Skan  TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED,	\
648117395Skan  TARGET_CANNOT_FORCE_CONST_MEM,		\
649132718Skan  TARGET_CANNOT_COPY_INSN_P,			\
650169689Skan  TARGET_COMMUTATIVE_P,				\
651132718Skan  TARGET_DELEGITIMIZE_ADDRESS,			\
652169689Skan  TARGET_USE_BLOCKS_FOR_CONSTANT_P,		\
653169689Skan  TARGET_MIN_ANCHOR_OFFSET,			\
654169689Skan  TARGET_MAX_ANCHOR_OFFSET,			\
655169689Skan  TARGET_USE_ANCHORS_FOR_SYMBOL_P,		\
656132718Skan  TARGET_FUNCTION_OK_FOR_SIBCALL,		\
657117395Skan  TARGET_IN_SMALL_DATA_P,			\
658117395Skan  TARGET_BINDS_LOCAL_P,				\
659117395Skan  TARGET_ENCODE_SECTION_INFO,			\
660117395Skan  TARGET_STRIP_NAME_ENCODING,			\
661169689Skan  TARGET_SHIFT_TRUNCATION_MASK,			\
662169689Skan  TARGET_MIN_DIVISIONS_FOR_RECIP_MUL,		\
663169689Skan  TARGET_MODE_REP_EXTENDED,			\
664132718Skan  TARGET_VALID_POINTER_MODE,                    \
665169689Skan  TARGET_SCALAR_MODE_SUPPORTED_P,		\
666169689Skan  TARGET_VECTOR_MODE_SUPPORTED_P,               \
667132718Skan  TARGET_VECTOR_OPAQUE_P,			\
668132718Skan  TARGET_RTX_COSTS,				\
669132718Skan  TARGET_ADDRESS_COST,				\
670169689Skan  TARGET_ALLOCATE_INITIAL_VALUE,		\
671132718Skan  TARGET_DWARF_REGISTER_SPAN,                   \
672132718Skan  TARGET_FIXED_CONDITION_CODE_REGS,		\
673132718Skan  TARGET_CC_MODES_COMPATIBLE,			\
674132718Skan  TARGET_MACHINE_DEPENDENT_REORG,		\
675132718Skan  TARGET_BUILD_BUILTIN_VA_LIST,			\
676169689Skan  TARGET_GIMPLIFY_VA_ARG_EXPR,			\
677132718Skan  TARGET_GET_PCH_VALIDITY,			\
678132718Skan  TARGET_PCH_VALID_P,				\
679169689Skan  TARGET_CHECK_PCH_TARGET_FLAGS,		\
680169689Skan  TARGET_DEFAULT_SHORT_ENUMS,			\
681169689Skan  TARGET_BUILTIN_SETJMP_FRAME_VALUE,		\
682169689Skan  TARGET_MD_ASM_CLOBBERS,			\
683169689Skan  TARGET_DWARF_CALLING_CONVENTION,              \
684169689Skan  TARGET_DWARF_HANDLE_FRAME_UNSPEC,		\
685169689Skan  TARGET_STDARG_OPTIMIZE_HOOK,			\
686169689Skan  TARGET_STACK_PROTECT_GUARD,			\
687169689Skan  TARGET_STACK_PROTECT_FAIL,			\
688169689Skan  TARGET_INVALID_WITHIN_DOLOOP,			\
689169689Skan  TARGET_VALID_DLLIMPORT_ATTRIBUTE_P,		\
690132718Skan  TARGET_CALLS,					\
691169689Skan  TARGET_INVALID_CONVERSION,			\
692169689Skan  TARGET_INVALID_UNARY_OP,			\
693169689Skan  TARGET_INVALID_BINARY_OP,			\
694169689Skan  TARGET_SECONDARY_RELOAD,			\
695169689Skan  TARGET_CXX,					\
696169689Skan  TARGET_EXTRA_LIVE_ON_ENTRY,                    \
697169689Skan  TARGET_UNWIND_TABLES_DEFAULT,			\
69890075Sobrien  TARGET_HAVE_NAMED_SECTIONS,			\
699169689Skan  TARGET_HAVE_SWITCHABLE_BSS_SECTIONS,		\
70096263Sobrien  TARGET_HAVE_CTORS_DTORS,			\
701117395Skan  TARGET_HAVE_TLS,				\
702117395Skan  TARGET_HAVE_SRODATA_SECTION,			\
703132718Skan  TARGET_TERMINATE_DW2_EH_FRAME_INFO,		\
704132718Skan  TARGET_ASM_FILE_START_APP_OFF,		\
705132718Skan  TARGET_ASM_FILE_START_FILE_DIRECTIVE,		\
706169689Skan  TARGET_HANDLE_PRAGMA_REDEFINE_EXTNAME,	\
707169689Skan  TARGET_HANDLE_PRAGMA_EXTERN_PREFIX,		\
708169689Skan  TARGET_RELAXED_ORDERING,			\
709169689Skan  TARGET_ARM_EABI_UNWINDER			\
71090075Sobrien}
71196263Sobrien
71296263Sobrien#include "hooks.h"
713132718Skan#include "targhooks.h"
714