14.1 The Global targetm Variable — Variable: struct gcc_target targetm The target .c file must define the global targetm variable which contains pointers to functions and data relating to the target machine. The variable is declared in target.h; target-def.h defines the macro TARGET_INITIALIZER which is used to initialize the variable, and macros for the default initializers for elements of the structure. The .c file should override those macros for which the default definition is inappropriate. For example: #include "target.h" #include "target-def.h" /* Initialize the GCC target structure. */ #undef TARGET_COMP_TYPE_ATTRIBUTES #define TARGET_COMP_TYPE_ATTRIBUTES machine_comp_type_attributes struct gcc_target targetm = TARGET_INITIALIZER; Where a macro should be defined in the .c file in this manner to form part of the targetm structure, it is documented below as a “Target Hook” with a prototype. Many macros will change in future from being defined in the .h file to being part of the targetm structure. 14.2 Controlling the Compilation Driver, gcc - Macro: SWITCH_TAKES_ARG (char) - Macro: WORD_SWITCH_TAKES_ARG (name) - Macro: SWITCH_CURTAILS_COMPILATION (char) - Macro: SWITCHES_NEED_SPACES - Macro: TARGET_OPTION_TRANSLATE_TABLE - Macro: DRIVER_SELF_SPECS - Macro: OPTION_DEFAULT_SPECS - Macro: CPP_SPEC - Macro: CPLUSPLUS_CPP_SPEC - Macro: CC1_SPEC - Macro: CC1PLUS_SPEC - Macro: ASM_SPEC - Macro: ASM_FINAL_SPEC - Macro: AS_NEEDS_DASH_FOR_PIPED_INPUT - Macro: LINK_SPEC - Macro: LIB_SPEC - Macro: LIBGCC_SPEC - Macro: REAL_LIBGCC_SPEC - Macro: USE_LD_AS_NEEDED - Macro: LINK_EH_SPEC - Macro: STARTFILE_SPEC - Macro: ENDFILE_SPEC - Macro: THREAD_MODEL_SPEC - Macro: SYSROOT_SUFFIX_SPEC - Macro: SYSROOT_HEADERS_SUFFIX_SPEC - Macro: EXTRA_SPECS - Macro: LINK_LIBGCC_SPECIAL_1 - Macro: LINK_GCC_C_SEQUENCE_SPEC - Macro: LINK_COMMAND_SPEC - Macro: LINK_ELIMINATE_DUPLICATE_LDIRECTORIES - Macro: MULTILIB_DEFAULTS - Macro: RELATIVE_PREFIX_NOT_LINKDIR - Macro: MD_EXEC_PREFIX - Macro: STANDARD_STARTFILE_PREFIX - Macro: STANDARD_STARTFILE_PREFIX_1 - Macro: STANDARD_STARTFILE_PREFIX_2 - Macro: MD_STARTFILE_PREFIX - Macro: MD_STARTFILE_PREFIX_1 - Macro: INIT_ENVIRONMENT - Macro: LOCAL_INCLUDE_DIR - Macro: MODIFY_TARGET_NAME - Macro: SYSTEM_INCLUDE_DIR - Macro: STANDARD_INCLUDE_DIR - Macro: STANDARD_INCLUDE_COMPONENT - Macro: INCLUDE_DEFAULTS 14.3 Run-time Target Specification - Macro: TARGET_CPU_CPP_BUILTINS () - Macro: TARGET_OS_CPP_BUILTINS () - Macro: TARGET_OBJFMT_CPP_BUILTINS () - Variable: extern int target_flags - Variable: Target Hook int TARGET_DEFAULT_TARGET_FLAGS - Target Hook: bool TARGET_HANDLE_OPTION (size_t code, const char *arg, int value) - Macro: TARGET_VERSION - Macro: OVERRIDE_OPTIONS - Macro: OPTIMIZATION_OPTIONS (level, size) - Macro: CAN_DEBUG_WITHOUT_FP 14.4 Defining data structures for per-function information. - Macro: INIT_EXPANDERS - Variable: void (*)(struct function *) init_machine_status 14.5 Storage Layout - Macro: BITS_BIG_ENDIAN - Macro: BYTES_BIG_ENDIAN - Macro: WORDS_BIG_ENDIAN - Macro: LIBGCC2_WORDS_BIG_ENDIAN - Macro: FLOAT_WORDS_BIG_ENDIAN - Macro: BITS_PER_UNIT - Macro: BITS_PER_WORD - Macro: MAX_BITS_PER_WORD - Macro: UNITS_PER_WORD - Macro: MIN_UNITS_PER_WORD - Macro: UNITS_PER_SIMD_WORD - Macro: POINTER_SIZE - Macro: POINTERS_EXTEND_UNSIGNED - Macro: PROMOTE_MODE (m, unsignedp, type) - Macro: PROMOTE_FUNCTION_MODE - Target Hook: bool TARGET_PROMOTE_FUNCTION_ARGS (tree fntype) - Target Hook: bool TARGET_PROMOTE_FUNCTION_RETURN (tree fntype) - Macro: PARM_BOUNDARY - Macro: STACK_BOUNDARY - Macro: PREFERRED_STACK_BOUNDARY - Macro: FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN - Macro: FUNCTION_BOUNDARY - Macro: BIGGEST_ALIGNMENT - Macro: MINIMUM_ATOMIC_ALIGNMENT - Macro: BIGGEST_FIELD_ALIGNMENT - Macro: ADJUST_FIELD_ALIGN (field, computed) - Macro: MAX_OFILE_ALIGNMENT - Macro: DATA_ALIGNMENT (type, basic-align) - Macro: CONSTANT_ALIGNMENT (constant, basic-align) - Macro: LOCAL_ALIGNMENT (type, basic-align) - Macro: EMPTY_FIELD_BOUNDARY - Macro: STRUCTURE_SIZE_BOUNDARY - Macro: STRICT_ALIGNMENT - Macro: PCC_BITFIELD_TYPE_MATTERS - Macro: BITFIELD_NBYTES_LIMITED - Target Hook: bool TARGET_ALIGN_ANON_BITFIELDS (void) - Macro: MEMBER_TYPE_FORCES_BLK (field, mode) - Macro: ROUND_TYPE_ALIGN (type, computed, specified) - Macro: MAX_FIXED_MODE_SIZE - Macro: STACK_SAVEAREA_MODE (save_level) - Macro: STACK_SIZE_MODE - Macro: TARGET_FLOAT_FORMAT - Macro: MODE_HAS_NANS (mode) - Macro: MODE_HAS_INFINITIES (mode) - Macro: MODE_HAS_SIGNED_ZEROS (mode) - Macro: MODE_HAS_SIGN_DEPENDENT_ROUNDING (mode) - Macro: ROUND_TOWARDS_ZERO - Macro: LARGEST_EXPONENT_IS_NORMAL (size) - Target Hook: bool TARGET_VECTOR_OPAQUE_P (tree type) - Target Hook: bool TARGET_MS_BITFIELD_LAYOUT_P (tree record_type) - Target Hook: const char * TARGET_MANGLE_FUNDAMENTAL_TYPE (tree type) 14.6 Layout of Source Language Data Types Macro: INT_TYPE_SIZE Macro: SHORT_TYPE_SIZE Macro: LONG_TYPE_SIZE Macro: ADA_LONG_TYPE_SIZE Macro: LONG_LONG_TYPE_SIZE Macro: CHAR_TYPE_SIZE Macro: BOOL_TYPE_SIZE Macro: FLOAT_TYPE_SIZE Macro: DOUBLE_TYPE_SIZE Macro: LONG_DOUBLE_TYPE_SIZE Macro: LIBGCC2_LONG_DOUBLE_TYPE_SIZE Macro: LIBGCC2_HAS_DF_MODE Macro: LIBGCC2_HAS_XF_MODE Macro: LIBGCC2_HAS_TF_MODE Macro: TARGET_FLT_EVAL_METHOD Macro: WIDEST_HARDWARE_FP_SIZE Macro: DEFAULT_SIGNED_CHAR Target Hook: bool TARGET_DEFAULT_SHORT_ENUMS (void) Macro: SIZE_TYPE Macro: PTRDIFF_TYPE Macro: WCHAR_TYPE Macro: WCHAR_TYPE_SIZE Macro: WINT_TYPE Macro: INTMAX_TYPE Macro: UINTMAX_TYPE Macro: TARGET_PTRMEMFUNC_VBIT_LOCATION Macro: TARGET_VTABLE_USES_DESCRIPTORS Macro: TARGET_VTABLE_ENTRY_ALIGN Macro: TARGET_VTABLE_DATA_ENTRY_DISTANCE 14.7 Register Usage 14.7.1 Basic Characteristics of Registers Macro: FIRST_PSEUDO_REGISTER Macro: FIXED_REGISTERS Macro: CALL_USED_REGISTERS Macro: CALL_REALLY_USED_REGISTERS Macro: HARD_REGNO_CALL_PART_CLOBBERED (regno, mode) Macro: CONDITIONAL_REGISTER_USAGE Macro: INCOMING_REGNO (out) Macro: OUTGOING_REGNO (in) Macro: LOCAL_REGNO (regno) Macro: PC_REGNUM 14.7.2 Order of Allocation of Registers Macro: REG_ALLOC_ORDER Macro: ORDER_REGS_FOR_LOCAL_ALLOC 14.7.3 How Values Fit in Registers Macro: HARD_REGNO_NREGS (regno, mode) Macro: REGMODE_NATURAL_SIZE (mode) Macro: HARD_REGNO_MODE_OK (regno, mode) Macro: HARD_REGNO_RENAME_OK (from, to) Macro: MODES_TIEABLE_P (mode1, mode2) Macro: AVOID_CCMODE_COPIES 14.7.4 Handling Leaf Functions Macro: LEAF_REGISTERS Macro: LEAF_REG_REMAP (regno) 14.7.5 Registers That Form a Stack - Macro: STACK_REGS - Macro: FIRST_STACK_REG - Macro: LAST_STACK_REG 14.8 Register Classes - Macro: N_REG_CLASSES - Macro: REG_CLASS_NAMES - Macro: REG_CLASS_CONTENTS - Macro: REGNO_REG_CLASS (regno) - Macro: BASE_REG_CLASS - Macro: MODE_BASE_REG_CLASS (mode) - Macro: MODE_BASE_REG_REG_CLASS (mode) - Macro: INDEX_REG_CLASS - Macro: CONSTRAINT_LEN (char, str) - Macro: REG_CLASS_FROM_LETTER (char) - Macro: REG_CLASS_FROM_CONSTRAINT (char, str) - Macro: REGNO_OK_FOR_BASE_P (num) - Macro: REGNO_MODE_OK_FOR_BASE_P (num, mode) - Macro: REGNO_MODE_OK_FOR_REG_BASE_P (num, mode) - Macro: REGNO_OK_FOR_INDEX_P (num) - Macro: PREFERRED_RELOAD_CLASS (x, class) - Macro: PREFERRED_OUTPUT_RELOAD_CLASS (x, class) - Macro: LIMIT_RELOAD_CLASS (mode, class) - Macro: SECONDARY_RELOAD_CLASS (class, mode, x) - Macro: SECONDARY_INPUT_RELOAD_CLASS (class, mode, x) - Macro: SECONDARY_OUTPUT_RELOAD_CLASS (class, mode, x) - Macro: SECONDARY_MEMORY_NEEDED (class1, class2, m) - Macro: SECONDARY_MEMORY_NEEDED_RTX (mode) - Macro: SECONDARY_MEMORY_NEEDED_MODE (mode) - Macro: SMALL_REGISTER_CLASSES - Macro: CLASS_LIKELY_SPILLED_P (class) - Macro: CLASS_MAX_NREGS (class, mode) - Macro: CANNOT_CHANGE_MODE_CLASS (from, to, class) - Macro: CONST_OK_FOR_LETTER_P (value, c) - Macro: CONST_OK_FOR_CONSTRAINT_P (value, c, str) - Macro: CONST_DOUBLE_OK_FOR_LETTER_P (value, c) - Macro: CONST_DOUBLE_OK_FOR_CONSTRAINT_P (value, c, str) - Macro: EXTRA_CONSTRAINT (value, c) - Macro: EXTRA_CONSTRAINT_STR (value, c, str) - Macro: EXTRA_MEMORY_CONSTRAINT (c, str) - Macro: EXTRA_ADDRESS_CONSTRAINT (c, str) 14.9 Stack Layout and Calling Conventions This describes the stack layout and calling conventions. * Frame Layout * Exception Handling * Stack Checking * Frame Registers * Elimination * Stack Arguments * Register Arguments * Scalar Return * Aggregate Return * Caller Saves * Function Entry * Profiling * Tail Calls * Stack Smashing Protection 14.9.1 Basic Stack Layout - Macro: STACK_GROWS_DOWNWARD - Macro: STACK_PUSH_CODE - Macro: FRAME_GROWS_DOWNWARD - Macro: ARGS_GROW_DOWNWARD - Macro: STARTING_FRAME_OFFSET - Macro: STACK_ALIGNMENT_NEEDED - Macro: STACK_POINTER_OFFSET - Macro: FIRST_PARM_OFFSET (fundecl) - Macro: STACK_DYNAMIC_OFFSET (fundecl) - Macro: INITIAL_FRAME_ADDRESS_RTX - Macro: DYNAMIC_CHAIN_ADDRESS (frameaddr) - Macro: SETUP_FRAME_ADDRESSES - Target Hook: bool TARGET_BUILTIN_SETJMP_FRAME_VALUE () - Macro: RETURN_ADDR_RTX (count, frameaddr) - Macro: RETURN_ADDR_IN_PREVIOUS_FRAME - Macro: INCOMING_RETURN_ADDR_RTX - Macro: DWARF_ALT_FRAME_RETURN_COLUMN - Macro: DWARF_ZERO_REG - Target Hook: void TARGET_DWARF_HANDLE_FRAME_UNSPEC (const char *label, rtx pattern, int index) - Macro: INCOMING_FRAME_SP_OFFSET - Macro: ARG_POINTER_CFA_OFFSET (fundecl) 14.9.2 Exception Handling Support - Macro: EH_RETURN_DATA_REGNO (N) - Macro: EH_RETURN_STACKADJ_RTX - Macro: EH_RETURN_HANDLER_RTX - Macro: RETURN_ADDR_OFFSET - Macro: ASM_PREFERRED_EH_DATA_FORMAT (code, global) - Macro: ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (file, encoding, size, addr, done) - Macro: MD_UNWIND_SUPPORT - Macro: MD_FALLBACK_FRAME_STATE_FOR (context, fs) - Macro: MD_HANDLE_UNWABI (context, fs) - Macro: TARGET_USES_WEAK_UNWIND_INFO 14.9.3 Specifying How Stack Checking is Done - Macro: STACK_CHECK_BUILTIN - Macro: STACK_CHECK_PROBE_INTERVAL - Macro: STACK_CHECK_PROBE_LOAD - Macro: STACK_CHECK_PROTECT - Macro: STACK_CHECK_MAX_FRAME_SIZE - Macro: STACK_CHECK_FIXED_FRAME_SIZE - Macro: STACK_CHECK_MAX_VAR_SIZE 14.9.4 Registers That Address the Stack Frame - Macro: STACK_POINTER_REGNUM - Macro: FRAME_POINTER_REGNUM - Macro: HARD_FRAME_POINTER_REGNUM - Macro: ARG_POINTER_REGNUM - Macro: RETURN_ADDRESS_POINTER_REGNUM - Macro: STATIC_CHAIN_REGNUM - Macro: STATIC_CHAIN_INCOMING_REGNUM - Macro: STATIC_CHAIN - Macro: STATIC_CHAIN_INCOMING - Macro: DWARF_FRAME_REGISTERS - Macro: PRE_GCC3_DWARF_FRAME_REGISTERS - Macro: DWARF_REG_TO_UNWIND_COLUMN (regno) - Macro: DWARF_FRAME_REGNUM (regno) - Macro: DWARF2_FRAME_REG_OUT (regno, for_eh) 14.9.5 Eliminating Frame Pointer and Arg Pointer - Macro: FRAME_POINTER_REQUIRED - Macro: INITIAL_FRAME_POINTER_OFFSET (depth-var) - Macro: ELIMINABLE_REGS - Macro: CAN_ELIMINATE (from-reg, to-reg) - Macro: INITIAL_ELIMINATION_OFFSET (from-reg, to-reg, offset-var) 14.9.6 Passing Function Arguments on the Stack - Target Hook: bool TARGET_PROMOTE_PROTOTYPES (tree fntype) - Macro: PUSH_ARGS - Macro: PUSH_ARGS_REVERSED - Macro: PUSH_ROUNDING (npushed) - Macro: ACCUMULATE_OUTGOING_ARGS - Macro: REG_PARM_STACK_SPACE (fndecl) - Macro: OUTGOING_REG_PARM_STACK_SPACE - Macro: STACK_PARMS_IN_REG_PARM_AREA - Macro: RETURN_POPS_ARGS (fundecl, funtype, stack-size) - Macro: CALL_POPS_ARGS (cum) 14.9.7 Passing Arguments in Registers - Macro: FUNCTION_ARG (cum, mode, type, named) - Target Hook: bool TARGET_MUST_PASS_IN_STACK (enum machine_mode mode, tree type) - Macro: FUNCTION_INCOMING_ARG (cum, mode, type, named) - Target Hook: int TARGET_ARG_PARTIAL_BYTES (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, bool named) - Target Hook: bool TARGET_PASS_BY_REFERENCE (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, bool named) - Target Hook: bool TARGET_CALLEE_COPIES (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type, bool named) - Macro: CUMULATIVE_ARGS - Macro: INIT_CUMULATIVE_ARGS (cum, fntype, libname, fndecl, n_named_args) - Macro: INIT_CUMULATIVE_LIBCALL_ARGS (cum, mode, libname) - Macro: INIT_CUMULATIVE_INCOMING_ARGS (cum, fntype, libname) - Macro: FUNCTION_ARG_ADVANCE (cum, mode, type, named) - Macro: FUNCTION_ARG_PADDING (mode, type) - Macro: PAD_VARARGS_DOWN - Macro: BLOCK_REG_PADDING (mode, type, first) - Macro: FUNCTION_ARG_BOUNDARY (mode, type) - Macro: FUNCTION_ARG_REGNO_P (regno) - Target Hook: bool TARGET_SPLIT_COMPLEX_ARG (tree type) - Target Hook: tree TARGET_BUILD_BUILTIN_VA_LIST (void) - Target Hook: tree TARGET_GIMPLIFY_VA_ARG_EXPR (tree valist, tree type, tree *pre_p, tree *post_p) - Target Hook: bool TARGET_VALID_POINTER_MODE (enum machine_mode mode) - Target Hook: bool TARGET_SCALAR_MODE_SUPPORTED_P (enum machine_mode mode) - Target Hook: bool TARGET_VECTOR_MODE_SUPPORTED_P (enum machine_mode mode) 14.9.8 How Scalar Function Values Are Returned - Macro: FUNCTION_VALUE (valtype, func) - Macro: FUNCTION_OUTGOING_VALUE (valtype, func) - Macro: LIBCALL_VALUE (mode) - Macro: FUNCTION_VALUE_REGNO_P (regno) - Macro: APPLY_RESULT_SIZE - Target Hook: bool TARGET_RETURN_IN_MSB (tree type) 14.9.9 How Large Values Are Returned - Target Hook: bool TARGET_RETURN_IN_MEMORY (tree type, tree fntype) - Macro: DEFAULT_PCC_STRUCT_RETURN - Target Hook: rtx TARGET_STRUCT_VALUE_RTX (tree fndecl, int incoming) - Macro: PCC_STATIC_STRUCT_RETURN 14.9.10 Caller-Saves Register Allocation - Macro: CALLER_SAVE_PROFITABLE (refs, calls) - Macro: HARD_REGNO_CALLER_SAVE_MODE (regno, nregs) 14.9.11 Function Entry and Exit - Target Hook: void TARGET_ASM_FUNCTION_PROLOGUE (FILE *file, HOST_WIDE_INT size) - Target Hook: void TARGET_ASM_FUNCTION_END_PROLOGUE (FILE *file) - Target Hook: void TARGET_ASM_FUNCTION_BEGIN_EPILOGUE (FILE *file) - Target Hook: void TARGET_ASM_FUNCTION_EPILOGUE (FILE *file, HOST_WIDE_INT size) - Macro: EXIT_IGNORE_STACK - Macro: EPILOGUE_USES (regno) - Macro: EH_USES (regno) - Macro: DELAY_SLOTS_FOR_EPILOGUE - Macro: ELIGIBLE_FOR_EPILOGUE_DELAY (insn, n) - Target Hook: void TARGET_ASM_OUTPUT_MI_THUNK (FILE *file, tree thunk_fndecl, HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, tree function) - Target Hook: bool TARGET_ASM_CAN_OUTPUT_MI_THUNK (tree thunk_fndecl, HOST_WIDE_INT delta, HOST_WIDE_INT vcall_offset, tree function) 14.9.12 Generating Code for Profiling - Macro: FUNCTION_PROFILER (file, labelno) - Macro: PROFILE_HOOK - Macro: NO_PROFILE_COUNTERS - Macro: PROFILE_BEFORE_PROLOGUE 14.9.13 Permitting tail calls - Target Hook: bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree decl, tree exp) 14.9.14 Stack smashing protection - Target Hook: tree TARGET_STACK_PROTECT_GUARD (void) - Target Hook: tree TARGET_STACK_PROTECT_FAIL (void) 14.10 Implementing the Varargs Macros - Macro: __builtin_saveregs () - Macro: __builtin_args_info (category) - Macro: __builtin_next_arg (lastarg) - Macro: __builtin_classify_type (object) - Target Hook: rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void) - Target Hook: void TARGET_SETUP_INCOMING_VARARGS (CUMULATIVE_ARGS *args_so_far, enum machine_mode mode, tree type, int *pretend_args_size, int second_time) - Target Hook: bool TARGET_STRICT_ARGUMENT_NAMING (CUMULATIVE_ARGS *ca) - Target Hook: bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED 14.11 Trampolines for Nested Functions - Macro: TRAMPOLINE_TEMPLATE (file) - Macro: TRAMPOLINE_SECTION - Macro: TRAMPOLINE_SIZE - Macro: TRAMPOLINE_ALIGNMENT - Macro: INITIALIZE_TRAMPOLINE (addr, fnaddr, static_chain) - Macro: TRAMPOLINE_ADJUST_ADDRESS (addr) - Macro: CLEAR_INSN_CACHE (beg, end) - Macro: ENABLE_EXECUTE_STACK - Macro: TRANSFER_FROM_TRAMPOLINE 14.12 Implicit Calls to Library Routines - Macro: DECLARE_LIBRARY_RENAMES - Target Hook: void TARGET_INIT_LIBFUNCS (void) - Macro: FLOAT_LIB_COMPARE_RETURNS_BOOL (mode, comparison) - Macro: TARGET_LIB_INT_CMP_BIASED - Macro: US_SOFTWARE_GOFAST - Macro: TARGET_EDOM - Macro: GEN_ERRNO_RTX - Macro: TARGET_C99_FUNCTIONS - Macro: NEXT_OBJC_RUNTIME 14.13 Addressing Modes - Macro: HAVE_PRE_INCREMENT - Macro: HAVE_PRE_DECREMENT - Macro: HAVE_POST_INCREMENT - Macro: HAVE_POST_DECREMENT - Macro: HAVE_PRE_MODIFY_DISP - Macro: HAVE_POST_MODIFY_DISP - Macro: HAVE_PRE_MODIFY_REG - Macro: HAVE_POST_MODIFY_REG - Macro: CONSTANT_ADDRESS_P (x) - Macro: CONSTANT_P (x) - Macro: MAX_REGS_PER_ADDRESS - Macro: GO_IF_LEGITIMATE_ADDRESS (mode, x, label) - Macro: REG_OK_FOR_BASE_P (x) - Macro: REG_MODE_OK_FOR_BASE_P (x, mode) - Macro: REG_MODE_OK_FOR_REG_BASE_P (x, mode) - Macro: REG_OK_FOR_INDEX_P (x) - Macro: FIND_BASE_TERM (x) - Macro: LEGITIMIZE_ADDRESS (x, oldx, mode, win) - Macro: LEGITIMIZE_RELOAD_ADDRESS (x, mode, opnum, type, ind_levels, win) - Macro: GO_IF_MODE_DEPENDENT_ADDRESS (addr, label) - Macro: LEGITIMATE_CONSTANT_P (x) - Target Hook: rtx TARGET_DELEGITIMIZE_ADDRESS (rtx x) - Target Hook: bool TARGET_CANNOT_FORCE_CONST_MEM (rtx x) - Target Hook: tree TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD (void) 14.14 Condition Code Status - Macro: CC_STATUS_MDEP - Macro: CC_STATUS_MDEP_INIT - Macro: NOTICE_UPDATE_CC (exp, insn) - Macro: SELECT_CC_MODE (op, x, y) - Macro: CANONICALIZE_COMPARISON (code, op0, op1) - Macro: REVERSIBLE_CC_MODE (mode) - Macro: REVERSE_CONDITION (code, mode) - Macro: REVERSE_CONDEXEC_PREDICATES_P (op1, op2) - Target Hook: bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *, unsigned int *) - Target Hook: enum machine_mode TARGET_CC_MODES_COMPATIBLE (enum machine_mode, enum machine_mode) 14.15 Describing Relative Costs of Operations - Macro: REGISTER_MOVE_COST (mode, from, to) - Macro: MEMORY_MOVE_COST (mode, class, in) - Macro: BRANCH_COST - Macro: SLOW_BYTE_ACCESS - Macro: SLOW_UNALIGNED_ACCESS (mode, alignment) - Macro: MOVE_RATIO - Macro: MOVE_BY_PIECES_P (size, alignment) - Macro: MOVE_MAX_PIECES - Macro: CLEAR_RATIO - Macro: CLEAR_BY_PIECES_P (size, alignment) - Macro: STORE_BY_PIECES_P (size, alignment) - Macro: USE_LOAD_POST_INCREMENT (mode) - Macro: USE_LOAD_POST_DECREMENT (mode) - Macro: USE_LOAD_PRE_INCREMENT (mode) - Macro: USE_LOAD_PRE_DECREMENT (mode) - Macro: USE_STORE_POST_INCREMENT (mode) - Macro: USE_STORE_POST_DECREMENT (mode) - Macro: USE_STORE_PRE_INCREMENT (mode) - Macro: USE_STORE_PRE_DECREMENT (mode) - Macro: NO_FUNCTION_CSE - Macro: RANGE_TEST_NON_SHORT_CIRCUIT - Target Hook: bool TARGET_RTX_COSTS (rtx x, int code, int outer_code, int *total) - Target Hook: int TARGET_ADDRESS_COST (rtx address) 14.16 Adjusting the Instruction Scheduler - Target Hook: int TARGET_SCHED_ISSUE_RATE (void) - Target Hook: int TARGET_SCHED_VARIABLE_ISSUE (FILE *file, int verbose, rtx insn, int more) - Target Hook: int TARGET_SCHED_ADJUST_COST (rtx insn, rtx link, rtx dep_insn, int cost) - Target Hook: int TARGET_SCHED_ADJUST_PRIORITY (rtx insn, int priority) - Target Hook: int TARGET_SCHED_REORDER (FILE *file, int verbose, rtx *ready, int *n_readyp, int clock) - Target Hook: int TARGET_SCHED_REORDER2 (FILE *file, int verbose, rtx *ready, int *n_ready, clock) - Target Hook: void TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK (rtx head, rtx tail) - Target Hook: void TARGET_SCHED_INIT (FILE *file, int verbose, int max_ready) - Target Hook: void TARGET_SCHED_FINISH (FILE *file, int verbose) - Target Hook: void TARGET_SCHED_INIT_GLOBAL (FILE *file, int verbose, int old_max_uid) - Target Hook: void TARGET_SCHED_FINISH_GLOBAL (FILE *file, int verbose) - Target Hook: int TARGET_SCHED_DFA_PRE_CYCLE_INSN (void) - Target Hook: void TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN (void) - Target Hook: int TARGET_SCHED_DFA_POST_CYCLE_INSN (void) - Target Hook: void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void) - Target Hook: int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD (void) - Target Hook: int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx) - Target Hook: int TARGET_SCHED_DFA_NEW_CYCLE (FILE *, int, rtx, int, int, int *) 14.17 Dividing the Output into Sections (Texts, Data, ...) - Macro: TEXT_SECTION_ASM_OP - Macro: HOT_TEXT_SECTION_NAME - Macro: UNLIKELY_EXECUTED_TEXT_SECTION_NAME - Macro: DATA_SECTION_ASM_OP - Macro: READONLY_DATA_SECTION_ASM_OP - Macro: READONLY_DATA_SECTION - Macro: BSS_SECTION_ASM_OP - Macro: INIT_SECTION_ASM_OP - Macro: FINI_SECTION_ASM_OP - Macro: INIT_ARRAY_SECTION_ASM_OP - Macro: FINI_ARRAY_SECTION_ASM_OP - Macro: CRT_CALL_STATIC_FUNCTION (section_op, function) - Macro: FORCE_CODE_SECTION_ALIGN - Macro: EXTRA_SECTIONS - Macro: EXTRA_SECTION_FUNCTIONS - Macro: JUMP_TABLES_IN_TEXT_SECTION - Target Hook: void TARGET_ASM_SELECT_SECTION (tree exp, int reloc, unsigned HOST_WIDE_INT align) - Macro: USE_SELECT_SECTION_FOR_FUNCTIONS - Target Hook: void TARGET_ASM_UNIQUE_SECTION (tree decl, int reloc) - Target Hook: void TARGET_ASM_FUNCTION_RODATA_SECTION (tree decl) - Target Hook: void TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode mode, rtx x, unsigned HOST_WIDE_INT align) - Target Hook: void TARGET_ENCODE_SECTION_INFO (tree decl, rtx rtl, int new_decl_p) - Target Hook: const char *TARGET_STRIP_NAME_ENCODING (const char *name) - Target Hook: bool TARGET_IN_SMALL_DATA_P (tree exp) - Variable: Target Hook bool TARGET_HAVE_SRODATA_SECTION - Target Hook: bool TARGET_BINDS_LOCAL_P (tree exp) - Variable: Target Hook bool TARGET_HAVE_TLS 14.18 Position Independent Code - Macro: PIC_OFFSET_TABLE_REGNUM - Macro: PIC_OFFSET_TABLE_REG_CALL_CLOBBERED - Macro: LEGITIMATE_PIC_OPERAND_P (x) 14.19 Defining the Output Assembler Language This section describes macros whose principal purpose is to describe how to write instructions in assembler language—rather than what the instructions do. - * File Framework: Structural information for the assembler file. - * Data Output: Output of constants (numbers, strings, addresses). - * Uninitialized Data: Output of uninitialized variables. - * Label Output: Output and generation of labels. - * Initialization: General principles of initialization and termination routines. - * Macros for Initialization Specific macros that control the handling of initialization and termination routines. - * Instruction Output: Output of actual instructions. - * Dispatch Tables: Output of jump tables. - * Exception Region Output: Output of exception region code. - * Alignment Output: Pseudo ops for alignment and skipping data. 14.19.1 The Overall Framework of an Assembler File - Target Hook: void TARGET_ASM_FILE_START () - Target Hook: bool TARGET_ASM_FILE_START_APP_OFF - Target Hook: bool TARGET_ASM_FILE_START_FILE_DIRECTIVE - Target Hook: void TARGET_ASM_FILE_END () - Macro: ASM_COMMENT_START - Macro: ASM_APP_ON - Macro: ASM_APP_OFF - Macro: ASM_OUTPUT_SOURCE_FILENAME (stream, name) - Macro: OUTPUT_QUOTED_STRING (stream, string) - Macro: ASM_OUTPUT_IDENT (stream, string) - Target Hook: void TARGET_ASM_NAMED_SECTION (const char *name, unsigned int flags, unsigned int align) - Target Hook: bool TARGET_HAVE_NAMED_SECTIONS - Target Hook: unsigned int TARGET_SECTION_TYPE_FLAGS (tree decl, const char *name, int reloc) 14.19.2 Output of Data - Target Hook: const char * TARGET_ASM_BYTE_OP - Target Hook: const char * TARGET_ASM_ALIGNED_HI_OP - Target Hook: const char * TARGET_ASM_ALIGNED_SI_OP - Target Hook: const char * TARGET_ASM_ALIGNED_DI_OP - Target Hook: const char * TARGET_ASM_ALIGNED_TI_OP - Target Hook: const char * TARGET_ASM_UNALIGNED_HI_OP - Target Hook: const char * TARGET_ASM_UNALIGNED_SI_OP - Target Hook: const char * TARGET_ASM_UNALIGNED_DI_OP - Target Hook: const char * TARGET_ASM_UNALIGNED_TI_OP - Target Hook: bool TARGET_ASM_INTEGER (rtx x, unsigned int size, int aligned_p) - Macro: OUTPUT_ADDR_CONST_EXTRA (stream, x, fail) - Macro: ASM_OUTPUT_ASCII (stream, ptr, len) - Macro: ASM_OUTPUT_FDESC (stream, decl, n) - Macro: CONSTANT_POOL_BEFORE_FUNCTION - Macro: ASM_OUTPUT_POOL_PROLOGUE (file, funname, fundecl, size) - Macro: ASM_OUTPUT_SPECIAL_POOL_ENTRY (file, x, mode, align, labelno, jumpto) - Macro: ASM_OUTPUT_POOL_EPILOGUE (file funname fundecl size) - Macro: IS_ASM_LOGICAL_LINE_SEPARATOR (C) - Target Hook: const char * TARGET_ASM_OPEN_PAREN - Target Hook: const char * TARGET_ASM_CLOSE_PAREN - Macro: REAL_VALUE_TO_TARGET_SINGLE (x, l) - Macro: REAL_VALUE_TO_TARGET_DOUBLE (x, l) - Macro: REAL_VALUE_TO_TARGET_LONG_DOUBLE (x, l) 14.19.3 Output of Uninitialized Variables - Macro: ASM_OUTPUT_COMMON (stream, name, size, rounded) - Macro: ASM_OUTPUT_ALIGNED_COMMON (stream, name, size, alignment) - Macro: ASM_OUTPUT_ALIGNED_DECL_COMMON (stream, decl, name, size, alignment) - Macro: ASM_OUTPUT_SHARED_COMMON (stream, name, size, rounded) - Macro: ASM_OUTPUT_BSS (stream, decl, name, size, rounded) - Macro: ASM_OUTPUT_ALIGNED_BSS (stream, decl, name, size, alignment) - Macro: ASM_OUTPUT_SHARED_BSS (stream, decl, name, size, rounded) - Macro: ASM_OUTPUT_LOCAL (stream, name, size, rounded) - Macro: ASM_OUTPUT_ALIGNED_LOCAL (stream, name, size, alignment) - Macro: ASM_OUTPUT_ALIGNED_DECL_LOCAL (stream, decl, name, size, alignment) - Macro: ASM_OUTPUT_SHARED_LOCAL (stream, name, size, rounded) 14.19.4 Output and Generation of Labels - Macro: ASM_OUTPUT_LABEL (stream, name) - Macro: ASM_OUTPUT_INTERNAL_LABEL (stream, name) - Macro: SIZE_ASM_OP - Macro: ASM_OUTPUT_SIZE_DIRECTIVE (stream, name, size) - Macro: ASM_OUTPUT_MEASURED_SIZE (stream, name) - Macro: TYPE_ASM_OP - Macro: TYPE_OPERAND_FMT - Macro: ASM_OUTPUT_TYPE_DIRECTIVE (stream, type) - Macro: ASM_DECLARE_FUNCTION_NAME (stream, name, decl) - Macro: ASM_DECLARE_FUNCTION_SIZE (stream, name, decl) - Macro: ASM_DECLARE_OBJECT_NAME (stream, name, decl) - Macro: ASM_DECLARE_CONSTANT_NAME (stream, name, exp, size) - Macro: ASM_DECLARE_REGISTER_GLOBAL (stream, decl, regno, name) - Macro: ASM_FINISH_DECLARE_OBJECT (stream, decl, toplevel, atend) - Target Hook: void TARGET_ASM_GLOBALIZE_LABEL (FILE *stream, const char *name) - Macro: ASM_WEAKEN_LABEL (stream, name) - Macro: ASM_WEAKEN_DECL (stream, decl, name, value) - Macro: SUPPORTS_WEAK - Macro: MAKE_DECL_ONE_ONLY (decl) - Macro: SUPPORTS_ONE_ONLY - Target Hook: void TARGET_ASM_ASSEMBLE_VISIBILITY (tree decl, const char *visibility) - Macro: TARGET_WEAK_NOT_IN_ARCHIVE_TOC - Macro: ASM_OUTPUT_EXTERNAL (stream, decl, name) - Target Hook: void TARGET_ASM_EXTERNAL_LIBCALL (rtx symref) - Target Hook: void TARGET_ASM_MARK_DECL_PRESERVED (tree decl) - Macro: ASM_OUTPUT_LABELREF (stream, name) - Macro: ASM_OUTPUT_SYMBOL_REF (stream, sym) - Macro: ASM_OUTPUT_LABEL_REF (stream, buf) - Target Hook: void TARGET_ASM_INTERNAL_LABEL (FILE *stream, const char *prefix, unsigned long labelno) - Macro: ASM_OUTPUT_DEBUG_LABEL (stream, prefix, num) - Macro: ASM_GENERATE_INTERNAL_LABEL (string, prefix, num) - Macro: ASM_FORMAT_PRIVATE_NAME (outvar, name, number) - Macro: ASM_OUTPUT_DEF (stream, name, value) - Macro: ASM_OUTPUT_DEF_FROM_DECLS (stream, decl_of_name, decl_of_value) - Macro: TARGET_DEFERRED_OUTPUT_DEFS (decl_of_name, decl_of_value) - Macro: ASM_OUTPUT_WEAK_ALIAS (stream, name, value) - Macro: OBJC_GEN_METHOD_LABEL (buf, is_inst, class_name, cat_name, sel_name) - Macro: ASM_DECLARE_CLASS_REFERENCE (stream, name) - Macro: ASM_DECLARE_UNRESOLVED_REFERENCE (stream, name) 14.19.5 How Initialization Functions Are Handled 14.19.6 Macros Controlling Initialization Routines - Macro: INIT_SECTION_ASM_OP - Macro: HAS_INIT_SECTION - Macro: LD_INIT_SWITCH - Macro: LD_FINI_SWITCH - Macro: COLLECT_SHARED_INIT_FUNC (stream, func) - Macro: COLLECT_SHARED_FINI_FUNC (stream, func) - Macro: INVOKE__main - Macro: SUPPORTS_INIT_PRIORITY - Target Hook: bool TARGET_HAVE_CTORS_DTORS - Target Hook: void TARGET_ASM_CONSTRUCTOR (rtx symbol, int priority) - Target Hook: void TARGET_ASM_DESTRUCTOR (rtx symbol, int priority) - Macro: OBJECT_FORMAT_COFF - Macro: REAL_NM_FILE_NAME - Macro: LDD_SUFFIX - Macro: PARSE_LDD_OUTPUT (ptr) 14.19.7 Output of Assembler Instructions - Macro: REGISTER_NAMES - Macro: ADDITIONAL_REGISTER_NAMES - Macro: ASM_OUTPUT_OPCODE (stream, ptr) - Macro: FINAL_PRESCAN_INSN (insn, opvec, noperands) - Macro: PRINT_OPERAND (stream, x, code) - Macro: PRINT_OPERAND_PUNCT_VALID_P (code) - Macro: PRINT_OPERAND_ADDRESS (stream, x) - Macro: DBR_OUTPUT_SEQEND (file) - Macro: REGISTER_PREFIX - Macro: LOCAL_LABEL_PREFIX - Macro: USER_LABEL_PREFIX - Macro: IMMEDIATE_PREFIX - Macro: ASM_FPRINTF_EXTENSIONS (file, argptr, format) - Macro: ASSEMBLER_DIALECT - Macro: ASM_OUTPUT_REG_PUSH (stream, regno) - Macro: ASM_OUTPUT_REG_POP (stream, regno) 14.19.8 Output of Dispatch Tables - Macro: ASM_OUTPUT_ADDR_DIFF_ELT (stream, body, value, rel) - Macro: ASM_OUTPUT_ADDR_VEC_ELT (stream, value) - Macro: ASM_OUTPUT_CASE_LABEL (stream, prefix, num, table) - Macro: ASM_OUTPUT_CASE_END (stream, num, table) - Target Hook: void TARGET_ASM_EMIT_UNWIND_LABEL (stream, decl, for_eh, empty) - Taget Hook: void TARGET_UNWIND_EMIT (FILE * stream, rtx insn) 14.19.9 Assembler Commands for Exception Regions - Macro: EH_FRAME_SECTION_NAME - Macro: EH_FRAME_IN_DATA_SECTION - Macro: EH_TABLES_CAN_BE_READ_ONLY - Macro: MASK_RETURN_ADDR - Macro: DWARF2_UNWIND_INFO - Macro: TARGET_UNWIND_INFO - Variable: Target Hook bool TARGET_UNWID_TABLES_DEFAULT - Macro: MUST_USE_SJLJ_EXCEPTIONS - Macro: DWARF_CIE_DATA_ALIGNMENT - Target Hook: void TARGET_ASM_EXCEPTION_SECTION () - Target Hook: void TARGET_ASM_EH_FRAME_SECTION () - Variable: Target Hook bool TARGET_TERMINATE_DW2_EH_FRAME_INFO - Target Hook: rtx TARGET_DWARF_REGISTER_SPAN (rtx reg) - Target Hook: bool TARGET_ASM_TTYPE (rtx sym) - Target Hook: bool TARGET_ARM_EABI_UNWINDER 14.19.10 Assembler Commands for Alignment - Macro: JUMP_ALIGN (label) - Macro: LABEL_ALIGN_AFTER_BARRIER (label) - Macro: LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP - Macro: LOOP_ALIGN (label) - Macro: LOOP_ALIGN_MAX_SKIP - Macro: LABEL_ALIGN (label) - Macro: LABEL_ALIGN_MAX_SKIP - Macro: ASM_OUTPUT_SKIP (stream, nbytes) - Macro: ASM_NO_SKIP_IN_TEXT - Macro: ASM_OUTPUT_ALIGN (stream, power) - Macro: ASM_OUTPUT_ALIGN_WITH_NOP (stream, power) - Macro: ASM_OUTPUT_MAX_SKIP_ALIGN (stream, power, max_skip) 14.20 Controlling Debugging Information Format This describes how to specify debugging information. - * All Debuggers: Macros that affect all debugging formats uniformly. - * DBX Options: Macros enabling specific options in DBX format. - * DBX Hooks: Hook macros for varying DBX format. - * File Names and DBX: Macros controlling output of file names in DBX format. - * SDB and DWARF: Macros for SDB (COFF) and DWARF formats. - * VMS Debug: Macros for VMS debug format. 14.20.1 Macros Affecting All Debugging Formats - Macro: DBX_REGISTER_NUMBER (regno) - Macro: DEBUGGER_AUTO_OFFSET (x) - Macro: DEBUGGER_ARG_OFFSET (offset, x) - Macro: PREFERRED_DEBUGGING_TYPE 14.20.2 Specific Options for DBX Output - Macro: DBX_DEBUGGING_INFO - Macro: XCOFF_DEBUGGING_INFO - Macro: DEFAULT_GDB_EXTENSIONS - Macro: DEBUG_SYMS_TEXT - Macro: ASM_STABS_OP - Macro: ASM_STABD_OP - Macro: ASM_STABN_OP - Macro: DBX_NO_XREFS - Macro: DBX_CONTIN_LENGTH - Macro: DBX_CONTIN_CHAR - Macro: DBX_STATIC_STAB_DATA_SECTION - Macro: DBX_TYPE_DECL_STABS_CODE - Macro: DBX_STATIC_CONST_VAR_CODE - Macro: DBX_REGPARM_STABS_CODE - Macro: DBX_REGPARM_STABS_LETTER - Macro: DBX_FUNCTION_FIRST - Macro: DBX_BLOCKS_FUNCTION_RELATIVE - Macro: DBX_LINES_FUNCTION_RELATIVE - Macro: DBX_USE_BINCL 14.20.3 Open-Ended Hooks for DBX Format - Macro: DBX_OUTPUT_LBRAC (stream, name) - Macro: DBX_OUTPUT_RBRAC (stream, name) - Macro: DBX_OUTPUT_NFUN (stream, lscope_label, decl) - Macro: DBX_OUTPUT_SOURCE_LINE (stream, line, counter) - Macro: NO_DBX_FUNCTION_END - Macro: NO_DBX_BNSYM_ENSYM 14.20.4 File Names in DBX Format - Macro: DBX_OUTPUT_MAIN_SOURCE_FILENAME (stream, name) - Macro: NO_DBX_MAIN_SOURCE_DIRECTORY - Macro: NO_DBX_GCC_MARKER - Macro: DBX_OUTPUT_MAIN_SOURCE_FILE_END (stream, name) - Macro: DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END 14.20.5 Macros for SDB and DWARF Output - Macro: SDB_DEBUGGING_INFO - Macro: DWARF2_DEBUGGING_INFO - Target Hook: int TARGET_DWARF_CALLING_CONVENTION (tree function) - Macro: DWARF2_FRAME_INFO - Macro: DWARF2_ASM_LINE_DEBUG_INFO - Macro: ASM_OUTPUT_DWARF_DELTA (stream, size, label1, label2) - Macro: ASM_OUTPUT_DWARF_OFFSET (stream, size, label) - Macro: ASM_OUTPUT_DWARF_PCREL (stream, size, label) - Target Hook: void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *FILE, int size, rtx x) - Macro: PUT_SDB_... - Macro: SDB_DELIM - Macro: SDB_ALLOW_UNKNOWN_REFERENCES - Macro: SDB_ALLOW_FORWARD_REFERENCES - Macro: SDB_OUTPUT_SOURCE_LINE (stream, line) 14.20.6 Macros for VMS Debug Format - Macro: VMS_DEBUGGING_INFO 14.21 Cross Compilation and Floating Point - Macro: REAL_VALUE_TYPE - Macro: int REAL_VALUES_EQUAL (REAL_VALUE_TYPE x, REAL_VALUE_TYPE y) - Macro: int REAL_VALUES_LESS (REAL_VALUE_TYPE x, REAL_VALUE_TYPE y) - Macro: HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE x) - Macro: unsigned HOST_WIDE_INT REAL_VALUE_UNSIGNED_FIX (REAL_VALUE_TYPE x) - Macro: REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *string, enum machine_mode mode) - Macro: int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE x) - Macro: int REAL_VALUE_ISINF (REAL_VALUE_TYPE x) - Macro: int REAL_VALUE_ISNAN (REAL_VALUE_TYPE x) - Macro: void REAL_ARITHMETIC (REAL_VALUE_TYPE output, enum tree_code code, REAL_VALUE_TYPE x, REAL_VALUE_TYPE y) - Macro: REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE x) - Macro: REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE x) - Macro: REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE mode, enum machine_mode x) - Macro: void REAL_VALUE_TO_INT (HOST_WIDE_INT low, HOST_WIDE_INT high, REAL_VALUE_TYPE x) - Macro: void REAL_VALUE_FROM_INT (REAL_VALUE_TYPE x, HOST_WIDE_INT low, HOST_WIDE_INT high, enum machine_mode mode) 14.22 Mode Switching Instructions - Macro: OPTIMIZE_MODE_SWITCHING (entity) - Macro: NUM_MODES_FOR_MODE_SWITCHING - Macro: MODE_NEEDED (entity, insn) - Macro: MODE_AFTER (mode, insn) - Macro: MODE_ENTRY (entity) - Macro: MODE_EXIT (entity) - Macro: MODE_PRIORITY_TO_MODE (entity, n) - Macro: EMIT_MODE_SET (entity, mode, hard_regs_live) 14.23 Defining target-specific uses of __attribute__ - Target Hook: const struct attribute_spec * TARGET_ATTRIBUTE_TABLE - Target Hook: int TARGET_COMP_TYPE_ATTRIBUTES (tree type1, tree type2) - Target Hook: void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree type) - Target Hook: tree TARGET_MERGE_TYPE_ATTRIBUTES (tree type1, tree type2) - Target Hook: tree TARGET_MERGE_DECL_ATTRIBUTES (tree olddecl, tree newdecl) - Macro: TARGET_DECLSPEC - Target Hook: void TARGET_INSERT_ATTRIBUTES (tree node, tree *attr_ptr) - Target Hook: bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (tree fndecl) 14.24 Defining coprocessor specifics for MIPS targets. - Macro: ALL_COP_ADDITIONAL_REGISTER_NAMES 14.25 Parameters for Precompiled Header Validity Checking - Target Hook: void *TARGET_GET_PCH_VALIDITY (size_t *sz) - Target Hook: const char *TARGET_PCH_VALID_P (const void *data, size_t sz) - Target Hook: const char *TARGET_CHECK_PCH_TARGET_FLAGS (int pch_flags) 14.26 C++ ABI parameters - Target Hook: tree TARGET_CXX_GUARD_TYPE (void) - Target Hook: bool TARGET_CXX_GUARD_MASK_BIT (void) - Target Hook: tree TARGET_CXX_GET_COOKIE_SIZE (tree type) - Target Hook: bool TARGET_CXX_COOKIE_HAS_SIZE (void) - Target Hook: int TARGET_CXX_IMPORT_EXPORT_CLASS (tree type, int import_export) - Target Hook: bool TARGET_CXX_CDTOR_RETURNS_THIS (void) - Target Hook: bool TARGET_CXX_KEY_METHOD_MAY_BE_INLINE (void) - Target Hook: void TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY (tree decl) - Target Hook: bool TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT (void) - Target Hook: bool TARGET_CXX_USE_AEABI_ATEXIT (void) 14.27 Miscellaneous Parameters - Macro: HAS_LONG_COND_BRANCH - Macro: HAS_LONG_UNCOND_BRANCH - Macro: CASE_VECTOR_MODE - Macro: CASE_VECTOR_SHORTEN_MODE (min_offset, max_offset, body) - Macro: CASE_VECTOR_PC_RELATIVE - Macro: CASE_VALUES_THRESHOLD - Macro: CASE_USE_BIT_TESTS - Macro: WORD_REGISTER_OPERATIONS - Macro: LOAD_EXTEND_OP (mem_mode) - Macro: SHORT_IMMEDIATES_SIGN_EXTEND - Macro: FIXUNS_TRUNC_LIKE_FIX_TRUNC - Macro: MOVE_MAX - Macro: MAX_MOVE_MAX - Macro: SHIFT_COUNT_TRUNCATED - Target Hook: int TARGET_SHIFT_TRUNCATION_MASK (enum machine_mode mode) - Macro: TRULY_NOOP_TRUNCATION (outprec, inprec) - Macro: STORE_FLAG_VALUE - Macro: FLOAT_STORE_FLAG_VALUE (mode) - Macro: VECTOR_STORE_FLAG_VALUE (mode) - Macro: CLZ_DEFINED_VALUE_AT_ZERO (mode, value) - Macro: CTZ_DEFINED_VALUE_AT_ZERO (mode, value) - Macro: Pmode - Macro: FUNCTION_MODE - Macro: STDC_0_IN_SYSTEM_HEADERS - Macro: NO_IMPLICIT_EXTERN_C - Macro: REGISTER_TARGET_PRAGMAS () - Macro: HANDLE_SYSV_PRAGMA - Macro: HANDLE_PRAGMA_PACK_PUSH_POP - Macro: HANDLE_PRAGMA_PACK_WITH_EXPANSION - Macro: TARGET_DEFAULT_PACK_STRUCT - Macro: DOLLARS_IN_IDENTIFIERS - Macro: NO_DOLLAR_IN_LABEL - Macro: NO_DOT_IN_LABEL - Macro: INSN_SETS_ARE_DELAYED (insn) - Macro: INSN_REFERENCES_ARE_DELAYED (insn) - Macro: MULTIPLE_SYMBOL_SPACES - Target Hook: tree TARGET_MD_ASM_CLOBBERS (tree outputs, tree inputs, tree clobbers) - Macro: MATH_LIBRARY - Macro: LIBRARY_PATH_ENV - Macro: TARGET_POSIX_IO - Macro: MAX_CONDITIONAL_EXECUTE - Macro: IFCVT_MODIFY_TESTS (ce_info, true_expr, false_expr) - Macro: IFCVT_MODIFY_MULTIPLE_TESTS (ce_info, bb, true_expr, false_expr) - Macro: IFCVT_MODIFY_INSN (ce_info, pattern, insn) - Macro: IFCVT_MODIFY_FINAL (ce_info) - Macro: IFCVT_MODIFY_CANCEL (ce_info) - Macro: IFCVT_INIT_EXTRA_FIELDS (ce_info) - Macro: IFCVT_EXTRA_FIELDS - Target Hook: void TARGET_MACHINE_DEPENDENT_REORG () - Target Hook: void TARGET_INIT_BUILTINS () - Target Hook: rtx TARGET_EXPAND_BUILTIN (tree exp, rtx target, rtx subtarget, enum machine_mode mode, int ignore) - Target Hook: tree TARGET_RESOLVE_OVERLOADED_BUILTIN (tree fndecl, tree arglist) - Target Hook: tree TARGET_FOLD_BUILTIN (tree fndecl, tree arglist, bool ignore) - Target Hook: const char * TARGET_INVALID_WITHIN_DOLOOP (rtx insn) - Macro: MD_CAN_REDIRECT_BRANCH (branch1, branch2) - Target Hook: bool TARGET_COMMUTATIVE_P (rtx x, outer_code) - Target Hook: rtx TARGET_ALLOCATE_INITIAL_VALUE (rtx hard_reg) - Macro: TARGET_OBJECT_SUFFIX - Macro: TARGET_EXECUTABLE_SUFFIX - Macro: COLLECT_EXPORT_LIST - Macro: MODIFY_JNI_METHOD_CALL (mdecl) - Target Hook: bool TARGET_CANNOT_MODIFY_JUMPS_P (void) - Target Hook: int TARGET_BRANCH_TARGET_REGISTER_CLASS (void) - Target Hook: bool TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED (bool after_prologue_epilogue_gen) - Macro: POWI_MAX_MULTS - Macro: void TARGET_EXTRA_INCLUDES (const char *sysroot, const char *iprefix, int stdinc) - Macro: void TARGET_EXTRA_PRE_INCLUDES (const char *sysroot, const char *iprefix, int stdinc) - Macro: void TARGET_OPTF (char *path) - Target Hook: bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree fndecl) - Macro: TARGET_FORMAT_TYPES - Macro: TARGET_N_FORMAT_TYPES - Target Hook: bool TARGET_RELAXED_ORDERING - Target Hook: const char *TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN (tree typelist, tree funcdecl, tree val) - Target Hook: const char * TARGET_INVALID_CONVERSION (tree fromtype, tree totype) - Target Hook: const char * TARGET_INVALID_UNARY_OP (int op, tree type) - Target Hook: const char * TARGET_INVALID_BINARY_OP (int op, tree type1, tree type2) - Macro: TARGET_USE_JCR_SECTION