target-def.h revision 117395
1/* Default initializers for a generic GCC target. 2 Copyright (C) 2001, 2002 Free Software Foundation, Inc. 3 4This program is free software; you can redistribute it and/or modify it 5under the terms of the GNU General Public License as published by the 6Free Software Foundation; either version 2, or (at your option) any 7later version. 8 9This program is distributed in the hope that it will be useful, 10but WITHOUT ANY WARRANTY; without even the implied warranty of 11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12GNU General Public License for more details. 13 14You should have received a copy of the GNU General Public License 15along with this program; if not, write to the Free Software 16Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 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! */ 21 22/* See target.h for a description of what this file contains and how to 23 use it. 24 25 We want to have non-NULL default definitions of all hook functions, 26 even if they do nothing. */ 27 28/* Note that if one of these macros must be defined in an OS .h file 29 rather than the .c file, then we need to wrap the default 30 definition in a #ifndef, since files include tm.h before this one. */ 31 32/* Assembler output. */ 33#define TARGET_ASM_OPEN_PAREN "(" 34#define TARGET_ASM_CLOSE_PAREN ")" 35#define TARGET_ASM_BYTE_OP "\t.byte\t" 36 37#define TARGET_ASM_ALIGNED_HI_OP "\t.short\t" 38#define TARGET_ASM_ALIGNED_SI_OP "\t.long\t" 39#define TARGET_ASM_ALIGNED_DI_OP NULL 40#define TARGET_ASM_ALIGNED_TI_OP NULL 41 42/* GAS and SYSV4 assemblers accept these. */ 43#if defined (OBJECT_FORMAT_ELF) || defined (OBJECT_FORMAT_ROSE) 44#define TARGET_ASM_UNALIGNED_HI_OP "\t.2byte\t" 45#define TARGET_ASM_UNALIGNED_SI_OP "\t.4byte\t" 46#define TARGET_ASM_UNALIGNED_DI_OP "\t.8byte\t" 47#define TARGET_ASM_UNALIGNED_TI_OP NULL 48#else 49#define TARGET_ASM_UNALIGNED_HI_OP NULL 50#define TARGET_ASM_UNALIGNED_SI_OP NULL 51#define TARGET_ASM_UNALIGNED_DI_OP NULL 52#define TARGET_ASM_UNALIGNED_TI_OP NULL 53#endif /* OBJECT_FORMAT_ELF || OBJECT_FORMAT_ROSE */ 54 55#define TARGET_ASM_INTEGER default_assemble_integer 56 57#ifndef TARGET_ASM_GLOBALIZE_LABEL 58#define TARGET_ASM_GLOBALIZE_LABEL default_globalize_label 59#endif 60 61#ifndef TARGET_ASM_ASSEMBLE_VISIBILITY 62#define TARGET_ASM_ASSEMBLE_VISIBILITY default_assemble_visibility 63#endif 64 65#define TARGET_ASM_FUNCTION_PROLOGUE default_function_pro_epilogue 66#define TARGET_ASM_FUNCTION_EPILOGUE default_function_pro_epilogue 67#define TARGET_ASM_FUNCTION_END_PROLOGUE no_asm_to_stream 68#define TARGET_ASM_FUNCTION_BEGIN_EPILOGUE no_asm_to_stream 69 70#ifndef TARGET_ASM_SELECT_SECTION 71#define TARGET_ASM_SELECT_SECTION default_select_section 72#endif 73 74#ifndef TARGET_ASM_UNIQUE_SECTION 75#define TARGET_ASM_UNIQUE_SECTION default_unique_section 76#endif 77 78#ifndef TARGET_ASM_SELECT_RTX_SECTION 79#define TARGET_ASM_SELECT_RTX_SECTION default_select_rtx_section 80#endif 81 82#if !defined(TARGET_ASM_CONSTRUCTOR) && !defined(USE_COLLECT2) 83# ifdef CTORS_SECTION_ASM_OP 84# define TARGET_ASM_CONSTRUCTOR default_ctor_section_asm_out_constructor 85# else 86# ifdef TARGET_ASM_NAMED_SECTION 87# define TARGET_ASM_CONSTRUCTOR default_named_section_asm_out_constructor 88# else 89# define TARGET_ASM_CONSTRUCTOR default_stabs_asm_out_constructor 90# endif 91# endif 92#endif 93 94#if !defined(TARGET_ASM_DESTRUCTOR) && !defined(USE_COLLECT2) 95# ifdef DTORS_SECTION_ASM_OP 96# define TARGET_ASM_DESTRUCTOR default_dtor_section_asm_out_destructor 97# else 98# ifdef TARGET_ASM_NAMED_SECTION 99# define TARGET_ASM_DESTRUCTOR default_named_section_asm_out_destructor 100# else 101# define TARGET_ASM_DESTRUCTOR default_stabs_asm_out_destructor 102# endif 103# endif 104#endif 105 106#define TARGET_ASM_OUTPUT_MI_THUNK NULL 107#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_tree_hwi_hwi_tree_false 108 109#if defined(TARGET_ASM_CONSTRUCTOR) && defined(TARGET_ASM_DESTRUCTOR) 110#define TARGET_HAVE_CTORS_DTORS true 111#else 112#define TARGET_HAVE_CTORS_DTORS false 113#define TARGET_ASM_CONSTRUCTOR NULL 114#define TARGET_ASM_DESTRUCTOR NULL 115#endif 116 117#ifdef TARGET_ASM_NAMED_SECTION 118#define TARGET_HAVE_NAMED_SECTIONS true 119#else 120#define TARGET_ASM_NAMED_SECTION default_no_named_section 121#define TARGET_HAVE_NAMED_SECTIONS false 122#endif 123 124#ifndef TARGET_HAVE_TLS 125#define TARGET_HAVE_TLS false 126#endif 127 128#ifndef TARGET_HAVE_SRODATA_SECTION 129#define TARGET_HAVE_SRODATA_SECTION false 130#endif 131 132#ifndef TARGET_TERMINATE_DW2_EH_FRAME_INFO 133#ifdef EH_FRAME_SECTION_NAME 134#define TARGET_TERMINATE_DW2_EH_FRAME_INFO false 135#else 136#define TARGET_TERMINATE_DW2_EH_FRAME_INFO true 137#endif 138#endif 139 140#ifndef TARGET_ASM_EXCEPTION_SECTION 141#define TARGET_ASM_EXCEPTION_SECTION default_exception_section 142#endif 143 144#ifndef TARGET_ASM_EH_FRAME_SECTION 145#define TARGET_ASM_EH_FRAME_SECTION default_eh_frame_section 146#endif 147 148#define TARGET_ASM_ALIGNED_INT_OP \ 149 {TARGET_ASM_ALIGNED_HI_OP, \ 150 TARGET_ASM_ALIGNED_SI_OP, \ 151 TARGET_ASM_ALIGNED_DI_OP, \ 152 TARGET_ASM_ALIGNED_TI_OP} 153 154#define TARGET_ASM_UNALIGNED_INT_OP \ 155 {TARGET_ASM_UNALIGNED_HI_OP, \ 156 TARGET_ASM_UNALIGNED_SI_OP, \ 157 TARGET_ASM_UNALIGNED_DI_OP, \ 158 TARGET_ASM_UNALIGNED_TI_OP} 159 160#define TARGET_ASM_OUT {TARGET_ASM_OPEN_PAREN, \ 161 TARGET_ASM_CLOSE_PAREN, \ 162 TARGET_ASM_BYTE_OP, \ 163 TARGET_ASM_ALIGNED_INT_OP, \ 164 TARGET_ASM_UNALIGNED_INT_OP, \ 165 TARGET_ASM_INTEGER, \ 166 TARGET_ASM_GLOBALIZE_LABEL, \ 167 TARGET_ASM_ASSEMBLE_VISIBILITY, \ 168 TARGET_ASM_FUNCTION_PROLOGUE, \ 169 TARGET_ASM_FUNCTION_END_PROLOGUE, \ 170 TARGET_ASM_FUNCTION_BEGIN_EPILOGUE, \ 171 TARGET_ASM_FUNCTION_EPILOGUE, \ 172 TARGET_ASM_NAMED_SECTION, \ 173 TARGET_ASM_EXCEPTION_SECTION, \ 174 TARGET_ASM_EH_FRAME_SECTION, \ 175 TARGET_ASM_SELECT_SECTION, \ 176 TARGET_ASM_SELECT_RTX_SECTION, \ 177 TARGET_ASM_UNIQUE_SECTION, \ 178 TARGET_ASM_CONSTRUCTOR, \ 179 TARGET_ASM_DESTRUCTOR, \ 180 TARGET_ASM_OUTPUT_MI_THUNK, \ 181 TARGET_ASM_CAN_OUTPUT_MI_THUNK } 182 183/* Scheduler hooks. All of these default to null pointers, which 184 haifa-sched.c looks for and handles. */ 185#define TARGET_SCHED_ADJUST_COST 0 186#define TARGET_SCHED_ADJUST_PRIORITY 0 187#define TARGET_SCHED_ISSUE_RATE 0 188#define TARGET_SCHED_VARIABLE_ISSUE 0 189#define TARGET_SCHED_INIT 0 190#define TARGET_SCHED_FINISH 0 191#define TARGET_SCHED_REORDER 0 192#define TARGET_SCHED_REORDER2 0 193#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE 0 194#define TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN 0 195#define TARGET_SCHED_DFA_PRE_CYCLE_INSN 0 196#define TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN 0 197#define TARGET_SCHED_DFA_POST_CYCLE_INSN 0 198#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD 0 199#define TARGET_SCHED_INIT_DFA_BUBBLES 0 200#define TARGET_SCHED_DFA_BUBBLE 0 201 202#define TARGET_SCHED \ 203 {TARGET_SCHED_ADJUST_COST, \ 204 TARGET_SCHED_ADJUST_PRIORITY, \ 205 TARGET_SCHED_ISSUE_RATE, \ 206 TARGET_SCHED_VARIABLE_ISSUE, \ 207 TARGET_SCHED_INIT, \ 208 TARGET_SCHED_FINISH, \ 209 TARGET_SCHED_REORDER, \ 210 TARGET_SCHED_REORDER2, \ 211 TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE, \ 212 TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN, \ 213 TARGET_SCHED_DFA_PRE_CYCLE_INSN, \ 214 TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN, \ 215 TARGET_SCHED_DFA_POST_CYCLE_INSN, \ 216 TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD, \ 217 TARGET_SCHED_INIT_DFA_BUBBLES, \ 218 TARGET_SCHED_DFA_BUBBLE} 219 220/* All in tree.c. */ 221#define TARGET_MERGE_DECL_ATTRIBUTES merge_decl_attributes 222#define TARGET_MERGE_TYPE_ATTRIBUTES merge_type_attributes 223#define TARGET_ATTRIBUTE_TABLE NULL 224 225/* In builtins.c. */ 226#define TARGET_INIT_BUILTINS default_init_builtins 227#define TARGET_EXPAND_BUILTIN default_expand_builtin 228 229/* In varasm.c. */ 230#ifndef TARGET_SECTION_TYPE_FLAGS 231#define TARGET_SECTION_TYPE_FLAGS default_section_type_flags 232#endif 233 234#ifndef TARGET_STRIP_NAME_ENCODING 235#define TARGET_STRIP_NAME_ENCODING default_strip_name_encoding 236#endif 237 238#ifndef TARGET_BINDS_LOCAL_P 239#define TARGET_BINDS_LOCAL_P default_binds_local_p 240#endif 241 242/* In hook.c. */ 243#define TARGET_CANNOT_MODIFY_JUMPS_P hook_bool_void_false 244#define TARGET_CANNOT_FORCE_CONST_MEM hook_bool_rtx_false 245#define TARGET_COMP_TYPE_ATTRIBUTES hook_int_tree_tree_1 246#define TARGET_SET_DEFAULT_TYPE_ATTRIBUTES hook_void_tree 247#define TARGET_INSERT_ATTRIBUTES hook_void_tree_treeptr 248#define TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P hook_bool_tree_false 249#define TARGET_MS_BITFIELD_LAYOUT_P hook_bool_tree_false 250 251#ifndef TARGET_IN_SMALL_DATA_P 252#define TARGET_IN_SMALL_DATA_P hook_bool_tree_false 253#endif 254 255#ifndef TARGET_ENCODE_SECTION_INFO 256#define TARGET_ENCODE_SECTION_INFO hook_void_tree_int 257#endif 258 259/* The whole shebang. */ 260#define TARGET_INITIALIZER \ 261{ \ 262 TARGET_ASM_OUT, \ 263 TARGET_SCHED, \ 264 TARGET_MERGE_DECL_ATTRIBUTES, \ 265 TARGET_MERGE_TYPE_ATTRIBUTES, \ 266 TARGET_ATTRIBUTE_TABLE, \ 267 TARGET_COMP_TYPE_ATTRIBUTES, \ 268 TARGET_SET_DEFAULT_TYPE_ATTRIBUTES, \ 269 TARGET_INSERT_ATTRIBUTES, \ 270 TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P, \ 271 TARGET_MS_BITFIELD_LAYOUT_P, \ 272 TARGET_INIT_BUILTINS, \ 273 TARGET_EXPAND_BUILTIN, \ 274 TARGET_SECTION_TYPE_FLAGS, \ 275 TARGET_CANNOT_MODIFY_JUMPS_P, \ 276 TARGET_CANNOT_FORCE_CONST_MEM, \ 277 TARGET_IN_SMALL_DATA_P, \ 278 TARGET_BINDS_LOCAL_P, \ 279 TARGET_ENCODE_SECTION_INFO, \ 280 TARGET_STRIP_NAME_ENCODING, \ 281 TARGET_HAVE_NAMED_SECTIONS, \ 282 TARGET_HAVE_CTORS_DTORS, \ 283 TARGET_HAVE_TLS, \ 284 TARGET_HAVE_SRODATA_SECTION, \ 285 TARGET_TERMINATE_DW2_EH_FRAME_INFO \ 286} 287 288#include "hooks.h" 289