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