GCC Middle and Back End API Reference
|
Go to the source code of this file.
Typedefs | |
typedef TARGET_UNIT | target_unit |
#define ACCUM_TYPE_SIZE (FRACT_TYPE_SIZE * 2) |
Referenced by make_or_reuse_accum_type().
#define ACCUMULATE_OUTGOING_ARGS 0 |
By default, the preprocessor should be invoked the same way in C++ as in C.
Referenced by add_stores(), compute_argument_block_size(), default_push_argument(), distribute_notes(), emit_call_1(), emit_library_call_value_1(), emit_push_insn(), expand_builtin_trap(), expand_call(), find_call_stack_args(), fixup_args_size_notes(), outgoing_edges_match(), precompute_arguments(), prescan_insns_for_dce(), and store_one_arg().
#define ARG_POINTER_CFA_OFFSET | ( | FNDECL | ) |
On most machines, the CFA coincides with the first incoming parm.
Referenced by compute_frame_pointer_to_fb_displacement(), instantiate_virtual_regs(), vt_init_cfa_base(), and vt_initialize().
#define ARGS_GROW_DOWNWARD 0 |
#define ASM_COMMENT_START ";#" |
Definitions of various defaults for tm.h macros. Copyright (C) 1992-2024 Free Software Foundation, Inc. Contributed by Ron Guilmette (rfg@monkeys.com) This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see <http://www.gnu.org/licenses/>.
How to start an assembler comment.
Referenced by asm_show_source(), default_elf_asm_named_section(), dump_basic_block_info(), dw2_asm_output_addr(), dw2_asm_output_addr_rtx(), dw2_asm_output_data(), dw2_asm_output_data_sleb128(), dw2_asm_output_data_uleb128(), dw2_asm_output_delta(), dw2_asm_output_delta_uleb128(), dw2_asm_output_encoded_addr_rtx(), dw2_asm_output_nstring(), dw2_asm_output_offset(), dw2_asm_output_offset(), dw2_asm_output_symname_uleb128(), final_scan_insn_1(), init_asm_output(), output_asm_name(), output_asm_operand_names(), output_cfi_directive(), output_constructor(), and output_die().
#define ASM_FORMAT_PRIVATE_NAME | ( | OUTPUT, | |
NAME, | |||
LABELNO ) |
Referenced by clone_function_name(), create_loop_fn(), create_tmp_var_name(), and lhd_set_decl_assembler_name().
#define ASM_OUTPUT_ASCII | ( | MYFILE, | |
MYSTRING, | |||
MYLENGTH ) |
Choose a reasonable default for ASM_OUTPUT_ASCII.
Referenced by assemble_string(), dw2_asm_output_nstring(), and elf_record_gcc_switches().
#define ASM_OUTPUT_DEBUG_LABEL | ( | FILE, | |
PREFIX, | |||
NUM ) |
Allow target to print debug info labels specially. This is useful for VLIW targets, since debug info labels should go into the middle of instruction bundles instead of breaking them.
Referenced by asan_function_start(), dwarf2out_begin_prologue(), dwarf2out_vms_begin_epilogue(), dwarf2out_vms_end_prologue(), and final_scan_insn_1().
#define ASM_OUTPUT_FUNCTION_LABEL | ( | FILE, | |
NAME, | |||
DECL ) |
This is how to output the definition of a user-level label named NAME, such as the label on a function.
Referenced by assemble_start_function().
#define ASM_OUTPUT_INTERNAL_LABEL | ( | FILE, | |
NAME ) |
Output the definition of a compiler-generated label named NAME.
Referenced by default_internal_label().
#define ASM_OUTPUT_LABEL | ( | FILE, | |
NAME ) |
This is how to output the definition of a user-level label named NAME, such as the label on variable NAME.
Referenced by assemble_end_function(), assemble_function_label_raw(), assemble_label(), assemble_start_function(), assemble_variable_contents(), default_print_patchable_function_entry(), dwarf2out_end_epilogue(), final_scan_insn_1(), find_empty_loc_ranges_at_text_label(), output_alternate_entry_point(), output_btf_header(), output_call_frame_info(), output_comp_unit(), output_ctf_header(), output_fde(), output_line_info(), output_loc_list(), output_one_function_exception_table(), output_ranges(), output_rnglists(), output_skeleton_debug_sections(), and switch_to_eh_frame_section().
#define ASM_OUTPUT_LABELREF | ( | FILE, | |
NAME ) |
This is how to output a reference to a user-level label named NAME.
Referenced by assemble_name_raw().
#define ASM_PN_FORMAT "%s.%lu" |
Store in OUTPUT a string (made with alloca) containing an assembler-name for a local static variable or function named NAME. LABELNO is an integer which is different for each call.
#define ASM_PREFERRED_EH_DATA_FORMAT | ( | CODE, | |
GLOBAL ) |
Select a format to encode pointers in exception handling data. We prefer those that result in fewer dynamic relocations. Assume no special support here and encode direct references.
Referenced by dwarf2out_do_cfi_asm(), dwarf2out_do_cfi_startproc(), output_call_frame_info(), output_cfi(), output_one_function_exception_table(), switch_to_eh_frame_section(), and switch_to_exception_section().
#define ATTRIBUTE_ALIGNED_VALUE BIGGEST_ALIGNMENT |
Alignment value for attribute ((aligned)).
#define BITS_PER_WORD (BITS_PER_UNIT * UNITS_PER_WORD) |
Default sizes for base C types. If the sizes are different for your target, you should override these values by defining the appropriate symbols in your tm.h file.
Referenced by add_standard_iv_candidates(), align_variable(), assign_parm_setup_block(), bit_field_mode_iterator::bit_field_mode_iterator(), can_atomic_load_p(), can_mult_highpart_p(), combine_reaching_defs(), compute_splitting_shift(), constant_alignment_word_strings(), convert_mode_scalar(), copy_blkmode_from_reg(), copy_blkmode_to_reg(), cse_insn(), cselib_record_sets(), default_min_arithmetic_precision(), default_scalar_mode_supported_p(), default_secondary_memory_needed_mode(), divmod_candidate_p(), dump_shift_choices(), dw_sra_loc_expr(), emit_block_cmp_via_loop(), emit_store_flag_1(), expand_absneg_bit(), expand_addsub_overflow(), expand_arith_overflow(), expand_atomic_load(), expand_atomic_store(), expand_binop(), expand_builtin_signbit(), expand_case(), expand_copysign_absneg(), expand_copysign_bit(), expand_divmod(), expand_doubleword_divmod(), expand_doubleword_mod(), expand_doubleword_mult(), expand_doubleword_shift(), expand_expr_real_2(), expand_function_end(), expand_omp_atomic(), expand_sdiv_pow2(), expand_subword_shift(), expand_superword_shift(), expand_unop(), expand_vector_addition(), expmed_mult_highpart(), expmed_mult_highpart_optab(), extract_fixed_bit_field(), extract_integral_bit_field(), extract_split_bit_field(), find_decomposable_shift_zext(), find_shift_sequence(), fold_truth_andor_1(), fold_unary_loc(), gen_int_libfunc(), get_shiftadd_cost(), get_variable_align(), init_derived_machine_modes(), init_eh(), init_emit(), init_optabs(), initializer_constant_valid_p_1(), load_extend_op(), load_register_parameters(), make_compound_operation_int(), make_extraction(), bit_field_mode_iterator::next_mode(), noce_emit_move_insn(), nonzero_bits1(), num_sign_bit_copies1(), offset_int_type_size_in_bits(), operand_for_swap_move_operator(), optimize_bit_field_compare(), optimize_bitfield_assignment_op(), prepare_call_arguments(), read_complex_part(), record_dead_and_set_regs_1(), reload_cse_simplify_set(), resolve_shift_zext(), set_builtin_user_assembler_name(), simple_decl_align_in_bits(), simple_type_align_in_bits(), simple_type_size_in_bits(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_const_binary_operation(), simplify_context::simplify_truncation(), split_double(), store_constructor(), store_field(), store_fixed_bit_field(), store_integral_bit_field(), store_split_bit_field(), store_unaligned_arguments_into_pseudos(), strict_volatile_bitfield_p(), synth_mult(), try_combine(), update_rsp_from_reg_equal(), vect_verify_loop_lens(), verify_gimple_assign_unary(), and write_complex_part().
#define BOOL_TYPE_SIZE CHAR_TYPE_SIZE |
`bool' has size and alignment `1', on almost all platforms.
Referenced by build_common_tree_nodes(), expand_builtin_atomic_clear(), expand_builtin_atomic_test_and_set(), initialize_sanitizer_builtins(), and instrument_builtin_call().
#define CASE_VECTOR_PC_RELATIVE 0 |
Assume that case vectors are not pc-relative.
Referenced by do_tablejump(), emit_case_dispatch_table(), and jumptable_relocatable().
#define CFA_FRAME_BASE_OFFSET | ( | FNDECL | ) |
On most machines, we use the CFA as DW_AT_frame_base.
#define CHAR16_TYPE "short unsigned int" |
#define CHAR32_TYPE "unsigned int" |
#define CHAR8_TYPE "unsigned char" |
If GCC knows the exact uint_least16_t and uint_least32_t types from <stdint.h>, use them for char16_t and char32_t. Otherwise, use these guesses; getting the wrong type of a given width will not affect C++ name mangling because in C++ these are distinct types not typedefs.
#define CHAR_TYPE_SIZE BITS_PER_UNIT |
#define CLZ_DEFINED_VALUE_AT_ZERO | ( | MODE, | |
VALUE ) |
Indicate that CLZ and CTZ are undefined at zero.
Referenced by build_cltz_expr(), clz_loc_descriptor(), cond_removal_in_builtin_zero_pattern(), expand_clrsb_using_clz(), expand_ffs(), fold_builtin_bit_query(), fold_const_call_ss(), nonzero_bits1(), simplify_context::simplify_binary_operation_1(), simplify_context::simplify_cond_clz_ctz(), simplify_const_unary_operation(), vect_recog_ctz_ffs_pattern(), and vect_recog_popcount_clz_ctz_ffs_pattern().
#define COMPARE_MAX_PIECES MOVE_MAX_PIECES |
Likewise for block comparisons.
Referenced by default_use_by_pieces_infrastructure_p().
#define CONSTANT_ADDRESS_P | ( | X | ) |
For most ports anything that evaluates to a constant symbolic or integer value is acceptable as a constant address.
Referenced by break_out_memory_refs(), can_simplify_addr(), find_equiv_reg(), memory_address_addr_space(), offsettable_address_addr_space_p(), output_asm_insn(), and verify_rtx_sharing().
#define CTZ_DEFINED_VALUE_AT_ZERO | ( | MODE, | |
VALUE ) |
Referenced by build_cltz_expr(), clz_loc_descriptor(), cond_removal_in_builtin_zero_pattern(), expand_ffs(), fold_builtin_bit_query(), fold_const_call_ss(), nonzero_bits1(), simplify_context::simplify_cond_clz_ctz(), simplify_const_unary_operation(), simplify_count_trailing_zeroes(), vect_recog_ctz_ffs_pattern(), and vect_recog_popcount_clz_ctz_ffs_pattern().
#define DEBUGGER_REGNO | ( | REGNO | ) |
How to renumber registers for gdb. If not defined, assume no renumbering is necessary.
Referenced by convert_cfa_to_fb_loc_list(), debugger_reg_number(), expand_builtin_eh_return_data_regno(), and multiple_reg_loc_descriptor().
#define DECIMAL128_TYPE_SIZE 128 |
Referenced by build_common_tree_nodes().
#define DECIMAL32_TYPE_SIZE 32 |
Referenced by build_common_tree_nodes().
#define DECIMAL64_TYPE_SIZE 64 |
Referenced by build_common_tree_nodes().
#define DEFAULT_FLAG_PIE 0 |
Default value for flag_pie when flag_pie is initialized to -1: --enable-default-pie: Default flag_pie to -fPIE. --disable-default-pie: Default flag_pie to 0.
Referenced by finish_options().
#define DEFAULT_GDB_EXTENSIONS 1 |
Referenced by common_handle_option().
#define DEFAULT_PCC_STRUCT_RETURN 1 |
Nonzero if structures and unions should be returned in memory. This should only be defined if compatibility with another compiler or with an ABI is needed, because it results in slower code.
#define DEFAULT_USE_CXA_ATEXIT 0 |
Determine whether __cxa_atexit, rather than atexit, is used to register C++ destructors for local statics and global objects.
#define DWARF2_ADDR_SIZE ((POINTER_SIZE + BITS_PER_UNIT - 1) / BITS_PER_UNIT) |
The size of addresses as they appear in the Dwarf 2 data. Some architectures use word addresses to refer to code locations, but Dwarf 2 info always uses byte addresses. On such machines, Dwarf 2 addresses need to be larger than the architecture's pointers.
Referenced by address_of_int_loc_descriptor(), convert_descriptor_to_mode(), dw2_assemble_integer(), dw_addr_op(), dw_loc_list_1(), int_loc_descriptor(), is_handled_procedure_type(), loc_descriptor(), loc_list_for_address_of_addr_expr_of_indirect_ref(), loc_list_from_tree_1(), mem_loc_descriptor(), minmax_loc_descriptor(), output_addr_table(), output_aranges(), output_attr_index_or_value(), output_call_frame_info(), output_cfi(), output_compilation_unit_header(), output_die(), output_fde(), output_line_info(), output_loc_list(), output_loc_operands(), output_one_line_info_table(), output_range_list_offset(), output_ranges(), output_rnglists(), output_skeleton_debug_sections(), prune_unmark_dies(), rotate_loc_descriptor(), scompare_loc_descriptor(), scompare_loc_descriptor_narrow(), size_of_aranges(), size_of_die(), size_of_int_loc_descriptor(), size_of_loc_descr(), ucompare_loc_descriptor(), uint_loc_descriptor(), and value_format().
#define DWARF2_FRAME_REG_OUT | ( | REGNO, | |
FOR_EH ) |
Map register numbers held in the call frame info that gcc has collected using DWARF_FRAME_REGNUM to those that should be output in .debug_frame and .eh_frame.
Referenced by expand_builtin_dwarf_sp_column(), init_one_dwarf_reg_size(), output_call_frame_info(), output_cfa_loc(), output_cfa_loc_raw(), output_cfi(), output_cfi_directive(), output_loc_operands(), output_loc_operands_raw(), output_loc_sequence(), and output_loc_sequence_raw().
#define DWARF_CIE_DATA_ALIGNMENT ((int) UNITS_PER_WORD) |
Offsets recorded in opcodes are a multiple of this alignment factor.
Referenced by div_data_align(), need_data_align_sf_opcode(), and output_call_frame_info().
#define DWARF_FRAME_REGISTERS FIRST_PSEUDO_REGISTER |
Number of hardware registers that go into the DWARF-2 unwind info. If not defined, equals FIRST_PSEUDO_REGISTER
Referenced by init_one_dwarf_reg_size().
#define DWARF_FRAME_REGNUM | ( | REG | ) |
The mapping from gcc register number to DWARF 2 CFA column number. By default, we just provide columns for all registers.
Referenced by based_loc_descr(), build_cfa_aligned_loc(), dwf_regno(), expand_builtin_dwarf_sp_column(), expand_builtin_eh_return_data_regno(), and init_one_dwarf_reg_size().
#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGISTERS |
The DWARF 2 CFA column which tracks the return address. Normally this is the column for PC, or the first column after all of the hard registers.
Referenced by dwarf2out_flush_queued_reg_saves(), dwarf2out_frame_debug_cfa_offset(), dwarf2out_frame_debug_cfa_register(), dwarf2out_frame_debug_expr(), expand_builtin_init_dwarf_reg_sizes(), init_one_dwarf_reg_size(), initial_return_save(), and output_call_frame_info().
#define DWARF_GNAT_ENCODINGS_DEFAULT DWARF_GNAT_ENCODINGS_GDB |
#define DWARF_OFFSET_SIZE 4 |
The size in bytes of a DWARF field indicating an offset or length relative to a debug info section, specified to be 4 bytes in the DWARF-2 specification. The SGI/MIPS ABI defines it to be the same as PTR_SIZE.
#define DWARF_REG_TO_UNWIND_COLUMN | ( | REGNO | ) |
The mapping from dwarf CFA reg number to internal dwarf reg numbers.
Referenced by init_one_dwarf_reg_size().
#define DWARF_TYPE_SIGNATURE_SIZE 8 |
The size in bytes of a DWARF 4 type signature.
Referenced by generate_type_signature(), output_comdat_type_unit(), output_signature(), print_signature(), and size_of_die().
#define DWARF_VERSION_DEFAULT 5 |
When generating dwarf info, the default standard version we'll honor and advertise in absence of -gdwarf-<N> on the command line.
#define DYNAMIC_CHAIN_ADDRESS | ( | x | ) |
Referenced by expand_builtin_return_addr().
#define EH_RETURN_DATA_REGNO | ( | N | ) |
Provide defaults for stuff that may not be defined when using sjlj exceptions.
Referenced by df_bb_refs_collect(), expand_builtin_eh_return_data_regno(), expand_dw2_landing_pad_for_region(), init_reg_sets_1(), process_bb_lives(), and process_bb_node_lives().
#define EH_RETURN_HANDLER_RTX NULL |
Referenced by df_get_exit_block_use_set(), and expand_eh_return().
#define EH_TABLES_CAN_BE_READ_ONLY 0 |
If we have a definition of INCOMING_RETURN_ADDR_RTX, assume that the rest of the DWARF 2 frame unwind support is also provided.
If we have named sections, and we're using crtstuff to run ctors, use them for registering eh frame information.
On many systems, different EH table encodings are used under difference circumstances. Some will require runtime relocations; some will not. For those that do not require runtime relocations, we would like to make the table read-only. However, since the read-only tables may need to be combined with read-write tables that do require runtime relocation, it is not safe to make the tables read-only unless the linker will merge read-only and read-write sections into a single read-write section. If your linker does not have this ability, but your system is such that no encoding used with non-PIC code will ever require a runtime relocation, then you can define EH_TABLES_CAN_BE_READ_ONLY to 1 in your target configuration file.
Referenced by switch_to_eh_frame_section(), and switch_to_exception_section().
#define EPILOGUE_USES | ( | REG | ) |
Referenced by df_epilogue_uses_p().
#define EXIT_IGNORE_STACK 0 |
EXIT_IGNORE_STACK should be nonzero if, when returning from a function, the stack pointer does not matter. The value is tested only in functions that have frame pointers.
Referenced by clear_pending_stack_adjust(), expand_function_end(), init_resource_info(), and ira_setup_eliminable_regset().
#define FLOAT_LIB_COMPARE_RETURNS_BOOL | ( | MODE, | |
COMPARISON ) |
Default to DWARF2_DEBUGGING_INFO. Legacy targets can choose different by defining PREFERRED_DEBUGGING_TYPE.
Referenced by prepare_float_lib_cmp().
#define FLOAT_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN |
If FLOAT_WORDS_BIG_ENDIAN is not defined in the header files, then the word-endianness is the same as for integers.
Referenced by check_reverse_float_storage_order_support(), decode_decimal128(), decode_decimal64(), decode_ieee_double(), decode_ieee_extended_intel_96(), decode_ieee_quad(), decode_vax_d(), decode_vax_g(), encode_decimal128(), encode_decimal64(), encode_ieee_double(), encode_ieee_extended_intel_96(), encode_ieee_quad(), encode_vax_d(), encode_vax_g(), expand_absneg_bit(), expand_builtin_issignaling(), expand_builtin_signbit(), expand_copysign_absneg(), expand_copysign_bit(), and targhook_float_words_big_endian().
#define FRACT_TYPE_SIZE (BITS_PER_UNIT * 2) |
Referenced by make_or_reuse_fract_type().
#define FRAME_ADDR_RTX | ( | x | ) |
Referenced by expand_builtin_return_addr().
#define FRAME_GROWS_DOWNWARD 0 |
Referenced by alloc_stack_frame_space(), assign_stack_local_1(), assign_stack_temp_for_type(), coalesced_pseudo_reg_slot_compare(), expand_stack_vars(), expand_used_vars(), frame_offset_overflow(), get_frame_size(), hwasan_emit_untag_frame(), process_options(), pseudo_reg_slot_compare(), rtx_addr_can_trap_p_1(), and try_fit_stack_local().
#define FUNCTION_ALIGNMENT | ( | ALIGN | ) |
Force minimum alignment to be able to use the least significant bits for distinguishing descriptor addresses from code addresses.
Referenced by get_descriptor_type(), and make_node().
#define HARD_REGNO_NREGS_HAS_PADDING | ( | REGNO, | |
MODE ) |
Referenced by subreg_get_info().
#define HARD_REGNO_NREGS_WITH_PADDING | ( | REGNO, | |
MODE ) |
Referenced by subreg_get_info().
#define HARD_REGNO_RENAME_OK | ( | FROM, | |
TO ) |
Referenced by check_new_reg_p().
#define HAS_LONG_COND_BRANCH 0 |
#define HAS_LONG_UNCOND_BRANCH 0 |
#define HONOR_REG_ALLOC_ORDER 0 |
Referenced by assign_hard_reg().
#define IFUNC_ASM_TYPE "gnu_indirect_function" |
This is how we tell the assembler to equate two values.
Referenced by do_assemble_alias().
#define INCOMING_FRAME_SP_OFFSET 0 |
The offset from the incoming value of %sp to the top of the stack frame for the current function.
Referenced by scan_trace(), vt_initialize(), and vt_stack_adjustments().
#define INCOMING_REGNO | ( | N | ) |
Register mappings for target machines without register windows.
Referenced by dead_or_predicable(), df_get_entry_block_def_set(), expand_builtin_apply_args_1(), expand_builtin_return(), and result_vector().
#define INCOMING_STACK_BOUNDARY PREFERRED_STACK_BOUNDARY |
Set INCOMING_STACK_BOUNDARY to PREFERRED_STACK_BOUNDARY if it is not defined.
Referenced by expand_stack_alignment().
#define INITIAL_FRAME_ADDRESS_RTX NULL |
Referenced by expand_builtin_return_addr().
#define INSN_REFERENCES_ARE_DELAYED | ( | INSN | ) |
Referenced by mark_referenced_resources(), and redundant_insn().
#define INSN_SETS_ARE_DELAYED | ( | INSN | ) |
Referenced by mark_set_resources(), and redundant_insn().
#define INT16_TYPE ((const char *) NULL) |
#define INT32_TYPE ((const char *) NULL) |
#define INT64_TYPE ((const char *) NULL) |
#define INT8_TYPE ((const char *) NULL) |
#define INT_FAST16_TYPE ((const char *) NULL) |
#define INT_FAST32_TYPE ((const char *) NULL) |
#define INT_FAST64_TYPE ((const char *) NULL) |
#define INT_FAST8_TYPE ((const char *) NULL) |
#define INT_LEAST16_TYPE ((const char *) NULL) |
#define INT_LEAST32_TYPE ((const char *) NULL) |
#define INT_LEAST64_TYPE ((const char *) NULL) |
#define INT_LEAST8_TYPE ((const char *) NULL) |
#define INT_TYPE_SIZE BITS_PER_WORD |
#define INTMAX_TYPE |
#define INTPTR_TYPE ((const char *) NULL) |
#define LEGITIMATE_PIC_OPERAND_P | ( | X | ) |
Referenced by find_reloads(), general_constant_p(), general_operand(), immediate_operand(), init_eliminable_invariants(), record_reg_classes(), and setup_reg_equiv().
#define LOAD_EXTEND_OP | ( | M | ) |
Referenced by find_reloads(), load_extend_op(), and push_reload().
#define LOCAL_ALIGNMENT | ( | TYPE, | |
ALIGNMENT ) |
#define LOCAL_DECL_ALIGNMENT | ( | DECL | ) |
Referenced by align_local_variable(), and gimple_can_coalesce_p().
#define LOCAL_REGNO | ( | REGNO | ) |
Referenced by calculate_saved_nregs(), df_get_entry_block_def_set(), df_get_exit_block_use_set(), lra(), and reload().
#define LONG_ACCUM_TYPE_SIZE (LONG_FRACT_TYPE_SIZE * 2) |
Referenced by make_or_reuse_accum_type().
#define LONG_FRACT_TYPE_SIZE (BITS_PER_UNIT * 4) |
Referenced by make_or_reuse_fract_type().
#define LONG_LONG_ACCUM_TYPE_SIZE (LONG_LONG_FRACT_TYPE_SIZE * 2) |
Referenced by make_or_reuse_accum_type().
#define LONG_LONG_FRACT_TYPE_SIZE (BITS_PER_UNIT * 8) |
Referenced by make_or_reuse_fract_type().
#define LONG_LONG_TYPE_SIZE (BITS_PER_WORD * 2) |
#define LONG_TYPE_SIZE BITS_PER_WORD |
#define MALLOC_ABI_ALIGNMENT BITS_PER_WORD |
Default value for the alignment (in bits) a C conformant malloc has to provide. This default is intended to be safe and always correct.
Referenced by allocate_dynamic_stack_space(), evaluate_stmt(), and expand_call().
#define MASK_RETURN_ADDR NULL_RTX |
Referenced by expand_builtin_extract_return_addr().
#define MAX_BITS_PER_WORD BITS_PER_WORD |
Referenced by expand_shift_1(), init_expmed(), init_expmed_one_mode(), and synth_mult().
#define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (DImode) |
Referenced by tree_switch_conversion::switch_conversion::array_value_type(), bitint_precision_kind(), bitwise_mode_for_mode(), bitwise_mode_for_size(), tree_switch_conversion::switch_conversion::build_arrays(), build_call_internal(), eliminate_dom_walker::eliminate_stmt(), expand_expr_real_1(), finish_bitfield_representative(), fold_builtin_bit_query(), gimple_lower_bitint(), initialize_sizetypes(), maybe_optimize_var(), mode_for_size(), bit_field_mode_iterator::next_mode(), ubsan_encode_value(), and ubsan_type_descriptor().
#define MAX_MOVE_MAX MOVE_MAX |
#define MAX_OFILE_ALIGNMENT BIGGEST_ALIGNMENT |
Biggest alignment supported by the object file format of this machine.
Referenced by align_variable(), asan_protect_global(), default_vector_alignment(), get_base_for_alignment(), get_base_for_alignment_1(), symtab_node::increase_alignment(), and vect_can_force_dr_alignment_p().
#define MAX_STACK_ALIGNMENT STACK_BOUNDARY |
MAX_STACK_ALIGNMENT is the maximum stack alignment guaranteed by the backend. MAX_SUPPORTED_STACK_ALIGNMENT is the maximum best effort stack alignment supported by the backend. If the backend supports stack alignment, MAX_SUPPORTED_STACK_ALIGNMENT and MAX_STACK_ALIGNMENT are the same. Otherwise, the incoming stack boundary will limit the maximum guaranteed stack alignment.
Referenced by vect_can_force_dr_alignment_p().
#define MAX_SUPPORTED_STACK_ALIGNMENT PREFERRED_STACK_BOUNDARY |
Referenced by assign_parm_setup_block(), assign_stack_local_1(), defer_stack_allocation(), expand_one_ssa_partition(), expand_one_stack_var_1(), expand_one_var(), expand_stack_vars(), get_dynamic_stack_size(), gimplify_decl_expr(), gimplify_target_expr(), insert_restore(), insert_save(), locate_and_pad_parm(), partition_stack_vars(), round_push(), set_parm_rtl(), shadow_mem_size(), stack_var_cmp(), and std_gimplify_va_arg_expr().
#define MIN_UNITS_PER_WORD UNITS_PER_WORD |
#define MINIMUM_ALIGNMENT | ( | EXP, | |
MODE, | |||
ALIGN ) |
Referenced by assign_parms(), expand_one_ssa_partition(), expand_one_var(), gen_reg_rtx(), gimple_can_coalesce_p(), and set_parm_rtl().
#define MODIFIED_WCHAR_TYPE (flag_short_wchar ? "short unsigned int" : WCHAR_TYPE) |
WCHAR_TYPE gets overridden by -fshort-wchar.
#define MOVE_MAX_PIECES MOVE_MAX |
This macro is used to determine what the largest unit size that move_by_pieces can use is.
MOVE_MAX_PIECES is the number of bytes at a time which we can move efficiently, as opposed to MOVE_MAX which is the maximum number of bytes we can move with a single instruction.
Referenced by by_pieces_ninsns(), default_use_by_pieces_infrastructure_p(), estimate_move_cost(), and op_by_pieces_d::op_by_pieces_d().
#define MULTIPLE_SYMBOL_SPACES 0 |
By default we can assume that all global symbols are in one namespace, across all shared libraries.
#define NEXT_OBJC_RUNTIME 0 |
By default, use the GNU runtime for Objective C.
#define NO_FUNCTION_CSE false |
Referenced by fold_rtx(), prepare_call_address(), and reload_cse_simplify().
#define OUTGOING_REG_PARM_STACK_SPACE | ( | FNTYPE | ) |
Referenced by block_move_libcall_safe_for_call_parm(), compute_argument_block_size(), emit_library_call_value_1(), and expand_call().
#define OUTGOING_REGNO | ( | N | ) |
Referenced by expand_debug_parm_decl(), init_alias_target(), and vt_add_function_parameter().
#define PCC_BITFIELD_TYPE_MATTERS false |
Referenced by field_byte_offset(), layout_decl(), place_field(), and update_alignment_for_field().
#define PIC_OFFSET_TABLE_REG_CALL_CLOBBERED 0 |
Referenced by df_get_exit_block_use_set(), init_reg_sets_1(), rtx_unstable_p(), and rtx_varies_p().
#define PIC_OFFSET_TABLE_REGNUM INVALID_REGNUM |
#define PID_TYPE "int" |
#define POINTER_SIZE BITS_PER_WORD |
Width in bits of a pointer. Mind the value of the macro `Pmode'.
Referenced by assemble_addr_to_section(), build_common_tree_nodes(), default_print_patchable_function_entry(), define_builtin_macros_for_lp64(), define_builtin_macros_for_type_sizes(), detect_type_change_from_memory_writes(), dump_tm_clone_pairs(), dw2_asm_output_encoded_addr_rtx(), dw2_output_indirect_constant_1(), expand_builtin_init_descriptor(), extr_type_from_vtbl_ptr_store(), ipa_polymorphic_call_context::get_dynamic_type(), has_dominating_ubsan_ptr_check(), init_derived_machine_modes(), init_eh(), initializer_constant_valid_p_1(), instrument_pointer_overflow(), layout_type(), lower_omp_target(), maybe_instrument_pointer_overflow(), maybe_optimize_ubsan_ptr_ifn(), omp_shared_to_firstprivate_optimizable_decl_p(), possible_placement_new(), prepare_call_address(), ipa_polymorphic_call_context::restrict_to_inner_class(), ubsan_encode_value(), and vect_gather_scatter_fn_p().
#define POINTER_SIZE_UNITS ((POINTER_SIZE + BITS_PER_UNIT - 1) / BITS_PER_UNIT) |
#define PREFERRED_STACK_BOUNDARY STACK_BOUNDARY |
If PREFERRED_STACK_BOUNDARY is not defined, set it to STACK_BOUNDARY. STACK_BOUNDARY is required.
Referenced by allocate_dynamic_stack_space(), assign_parm_adjust_stack_rtl(), emit_library_call_value_1(), expand_call(), expand_stack_alignment(), expand_stack_vars(), expand_used_vars(), get_dynamic_stack_base(), get_dynamic_stack_size(), rtx_addr_can_trap_p_1(), and try_fit_stack_local().
#define PTRDIFF_TYPE "long int" |
Referenced by build_common_tree_nodes().
#define PUSH_ARGS_REVERSED 0 |
Decide whether a function's arguments should be processed from first to last or from last to first. They should if the stack and args grow in opposite directions, but only if we have push insns.
Referenced by gimplify_call_expr().
#define REG_WORDS_BIG_ENDIAN WORDS_BIG_ENDIAN |
#define RETURN_ADDR_IN_PREVIOUS_FRAME 0 |
Referenced by expand_builtin_return_addr().
#define RETURN_ADDR_OFFSET 0 |
Offset between the eh handler address and entry in eh tables.
Referenced by expand_builtin_extract_return_addr(), and expand_builtin_frob_return_addr().
#define REVERSE_CONDITION | ( | code, | |
mode ) |
Referenced by reversed_comparison_code_parts().
#define REVERSIBLE_CC_MODE | ( | MODE | ) |
Referenced by reversed_comparison_code_parts().
#define SETUP_FRAME_ADDRESSES | ( | ) |
Referenced by expand_builtin_return_addr(), and expand_builtin_unwind_init().
#define SHIFT_COUNT_TRUNCATED 0 |
#define SHORT_ACCUM_TYPE_SIZE (SHORT_FRACT_TYPE_SIZE * 2) |
Referenced by make_or_reuse_accum_type().
#define SHORT_FRACT_TYPE_SIZE BITS_PER_UNIT |
Referenced by make_or_reuse_fract_type().
#define SHORT_IMMEDIATES_SIGN_EXTEND 0 |
Referenced by nonzero_bits1(), reg_nonzero_bits_for_combine(), and update_rsp_from_reg_equal().
#define SHORT_TYPE_SIZE (BITS_PER_UNIT * MIN ((UNITS_PER_WORD + 1) / 2, 2)) |
#define SIG_ATOMIC_TYPE ((const char *) NULL) |
There are no default definitions of these <stdint.h> types.
#define SIZE_TYPE "long unsigned int" |
We let tm.h override the types used here, to handle trivial differences such as the choice of unsigned int or long unsigned int for size_t. When machines start needing nontrivial differences in the size type, it would be best to do something here to figure out automatically from other information what type to use.
Referenced by build_common_tree_nodes().
#define SIZETYPE SIZE_TYPE |
Referenced by initialize_sizetypes().
#define STACK_GROWS_DOWNWARD 0 |
Referenced by adjust_stack_1(), allocate_dynamic_stack_space(), coalesced_pseudo_reg_slot_compare(), combine_stack_adjustments_for_block(), emit_push_insn(), expand_builtin_apply(), expand_builtin_apply_args_1(), expand_call(), fixup_args_size_notes(), maybe_record_trace_start_abnormal(), mem_might_overlap_already_clobbered_arg_p(), notice_args_size(), pieces_addr::pieces_addr(), process_options(), pseudo_reg_slot_compare(), push_block(), push_operand(), resolve_simple_move(), and store_one_arg().
#define STACK_POINTER_OFFSET 0 |
#define STACK_PUSH_CODE PRE_INC |
Referenced by emit_push_insn(), and push_operand().
#define STACK_SLOT_ALIGNMENT | ( | TYPE, | |
MODE, | |||
ALIGN ) |
Referenced by assign_parm_setup_reg(), assign_parm_setup_stack(), assign_parms_unsplit_complex(), get_stack_local_alignment(), sjlj_build_landing_pads(), and spill_slot_alignment().
#define STORE_FLAG_VALUE 1 |
Provide a default value for STORE_FLAG_VALUE.
Referenced by canonicalize_condition(), combine_simplify_rtx(), compare_loc_descriptor(), emit_cstore(), emit_store_flag(), emit_store_flag_1(), emit_store_flag_int(), expand_binop(), expand_compound_operation(), find_comparison_args(), find_split_point(), force_int_to_mode(), gen_exp(), gen_rtx_CONST_INT(), get_mode_bounds(), if_then_else_cond(), init_emit_once(), noce_emit_store_flag(), noce_try_addcc(), noce_try_store_flag(), noce_try_store_flag_constants(), nonzero_bits1(), num_sign_bit_copies1(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_if_then_else(), simplify_context::simplify_relational_operation_1(), simplify_shift_const_1(), simplify_context::simplify_ternary_operation(), simplify_context::simplify_unary_operation_1(), and trunc_int_for_mode().
#define STORE_MAX_PIECES MIN (MOVE_MAX_PIECES, 2 * sizeof (HOST_WIDE_INT)) |
STORE_MAX_PIECES is the number of bytes at a time that we can store efficiently. Due to internal GCC limitations, this is MOVE_MAX_PIECES limited by the number of bytes GCC can represent for an immediate constant.
Referenced by can_store_by_pieces(), default_use_by_pieces_infrastructure_p(), and store_expr().
#define SUPPORTS_DISCRIMINATOR 0 |
This determines whether or not we support the discriminator attribute in the .loc directive.
Referenced by notice_source_line().
#define SUPPORTS_INIT_PRIORITY 1 |
If the target supports init_priority C++ attribute, give SUPPORTS_INIT_PRIORITY a nonzero value.
Referenced by build_gcov_exit_decl(), and build_init_ctor().
#define SUPPORTS_ONE_ONLY 0 |
This determines whether or not we support link-once semantics.
Referenced by make_decl_one_only(), and supports_one_only().
#define SUPPORTS_SHF_GNU_RETAIN 0 |
This determines whether or not we support marking sections with SHF_GNU_RETAIN flag. Also require .init_array/.fini_array section for constructors and destructors.
#define SUPPORTS_STACK_ALIGNMENT (MAX_STACK_ALIGNMENT > STACK_BOUNDARY) |
Referenced by assign_parms(), assign_stack_local_1(), emit_call_1(), emit_stack_restore(), expand_builtin_apply(), expand_builtin_longjmp(), expand_stack_alignment(), gen_reg_rtx(), init_elim_table(), init_elim_table(), ira_setup_eliminable_regset(), locate_and_pad_parm(), record_alignment_for_reg_var(), round_push(), and update_eliminables().
#define SUPPORTS_WEAK 0 |
This is how we tell the assembler that a symbol is weak.
This is how we tell the assembler that a symbol is a weak alias to another symbol that doesn't require the other symbol to be defined. Uses of the former will turn into weak uses of the latter, i.e., uses that, in case the latter is undefined, will not cause errors, and will add it to the symbol table as weak undefined. However, if the latter is referenced directly, a strong reference prevails.
How to emit a .type directive.
How to emit a .size directive.
This determines whether or not we support weak symbols. SUPPORTS_WEAK must be a preprocessor constant.
#define SWITCHABLE_TARGET 0 |
#define TARGET_ATTRIBUTE_WEAK |
If the target supports weak symbols, define TARGET_ATTRIBUTE_WEAK to provide a weak attribute. Else define it to nothing. This would normally belong in ansidecl.h, but SUPPORTS_WEAK is not available at that time. Note, this is only for use by target files which we know are to be compiled by GCC.
#define TARGET_COFF 0 |
#define TARGET_DEC_EVAL_METHOD 2 |
#define TARGET_DECLSPEC 0 |
#define TARGET_DEFAULT_PACK_STRUCT 0 |
#define TARGET_DEFERRED_OUTPUT_DEFS | ( | DECL, | |
TARGET ) |
Decide whether to defer emitting the assembler output for an equate of two values. The default is to not defer output.
#define TARGET_DLLIMPORT_DECL_ATTRIBUTES 0 |
Referenced by cgraph_externally_visible_p(), and varpool_node::externally_visible_p().
#define TARGET_HAS_BIONIC 0 |
Determin whether the target runtime library is Bionic
#define TARGET_HAS_FMV_TARGET_ATTRIBUTE 1 |
Indicate whether the target uses "target" attributes for function multiversioning. This is used to choose between the "target" and "target_version" attributes when expanding a "target_clones" attribute, and determine whether the "target" and "target_clones" attributes are mutually exclusive.
Referenced by expand_target_clones().
#define TARGET_LIB_INT_CMP_BIASED (true) |
True if the targets integer-comparison functions return { 0, 1, 2 } to indicate { <, ==, > }. False if { -1, 0, 1 } is used instead. The libgcc routines are biased.
Referenced by prepare_cmp_insn().
#define TARGET_MEM_CONSTRAINT 'm' |
Referenced by find_reloads().
#define TARGET_PECOFF 0 |
Referenced by switch_to_comdat_section().
#define TARGET_PTRMEMFUNC_VBIT_LOCATION |
By default, the C++ compiler will use the lowest bit of the pointer to function to indicate a pointer-to-member-function points to a virtual member function. However, if FUNCTION_BOUNDARY indicates function addresses aren't always even, the lowest bit of the delta field will be used.
Referenced by get_object_alignment_2(), and ipa_analyze_indirect_call_uses().
#define TARGET_SUPPORTS_ALIASES 0 |
Decide whether target supports aliases.
Referenced by asan_protect_global(), assemble_alias(), can_replace_by_local_alias(), varpool_node::create_extra_name_alias(), cgraph_node::create_same_body_alias(), do_assemble_alias(), function_and_variable_visibility(), symtab_node::noninterposable_alias(), optimize_weakref(), output_constant_pool_contents(), output_shared_constant_pool(), and ipa_icf::sem_item::target_supports_symbol_aliases_p().
#define TARGET_SUPPORTS_WEAK (SUPPORTS_WEAK) |
This determines whether or not we support weak symbols during target code generation. TARGET_SUPPORTS_WEAK can be any valid C expression.
Referenced by assemble_external(), declare_weak(), do_assemble_alias(), make_decl_one_only(), merge_weak(), and supports_one_only().
#define TARGET_SUPPORTS_WIDE_INT 0 |
If the target supports integers that are wider than two HOST_WIDE_INTs on the host compiler, then the target should define TARGET_SUPPORTS_WIDE_INT and make the appropriate fixups. Otherwise the compiler really is not robust.
Referenced by add_const_value_attribute(), add_mode_tests(), const_rtx_hash_1(), cselib_hash_rtx(), const_double_hasher::equal(), const_double_hasher::hash(), hash_rtx(), and make_tree().
#define TARGET_USE_LOCAL_THUNK_ALIAS_P | ( | DECL | ) |
Decide whether it is safe to use a local alias for a virtual function when constructing thunks.
#define TARGET_USES_WEAK_UNWIND_INFO 0 |
This determines whether or not we need linkonce unwind information.
Referenced by fde_needed_for_eh_p(), and output_call_frame_info().
#define TARGET_VTABLE_DATA_ENTRY_DISTANCE 1 |
There are a few non-descriptor entries in the vtable at offsets below zero. If these entries must be padded (say, to preserve the alignment specified by TARGET_VTABLE_ENTRY_ALIGN), set this to the number of words in each data entry.
#define TARGET_VTABLE_ENTRY_ALIGN POINTER_SIZE |
By default, the vtable entries are void pointers, the so the alignment is the same as pointer alignment. The value of this macro specifies the alignment of the vtable entry in bits. It should be defined only when special alignment is necessary.
#define TARGET_WEAK_NOT_IN_ARCHIVE_TOC 0 |
This determines whether weak symbols must be left out of a static archive's table of contents. Defining this macro to be nonzero has the consequence that certain symbols will not be made weak that otherwise would be. The C++ ABI requires this macro to be zero; see the documentation.
#define TLS_COMMON_ASM_OP ".tls_common" |
#define TRAMPOLINE_ALIGNMENT FUNCTION_ALIGNMENT (FUNCTION_BOUNDARY) |
Assume that trampolines need function alignment.
Referenced by assemble_trampoline_template(), expand_builtin_init_trampoline(), get_trampoline_type(), and round_trampoline_addr().
#define UINT16_TYPE ((const char *) NULL) |
#define UINT32_TYPE ((const char *) NULL) |
#define UINT64_TYPE ((const char *) NULL) |
#define UINT8_TYPE ((const char *) NULL) |
#define UINT_FAST16_TYPE ((const char *) NULL) |
#define UINT_FAST32_TYPE ((const char *) NULL) |
#define UINT_FAST64_TYPE ((const char *) NULL) |
#define UINT_FAST8_TYPE ((const char *) NULL) |
#define UINT_LEAST16_TYPE ((const char *) NULL) |
#define UINT_LEAST32_TYPE ((const char *) NULL) |
#define UINT_LEAST64_TYPE ((const char *) NULL) |
#define UINT_LEAST8_TYPE ((const char *) NULL) |
#define UINTMAX_TYPE |
#define UINTPTR_TYPE ((const char *) NULL) |
#define USER_LABEL_PREFIX "" |
By default, there is no prefix on user-defined symbols.
Referenced by process_options().
#define WCHAR_TYPE "int" |
#define WCHAR_TYPE_SIZE INT_TYPE_SIZE |
#define WINT_TYPE "unsigned int" |
#define WORD_REGISTER_OPERATIONS 0 |
Referenced by combine_reaching_defs(), curr_insn_transform(), default_min_arithmetic_precision(), eliminate_regs_1(), find_reloads(), find_reloads_subreg_address(), make_compound_operation_int(), nonzero_bits1(), num_sign_bit_copies1(), push_reload(), record_dead_and_set_regs_1(), replace_read(), simplify_and_const_int_1(), simplify_context::simplify_binary_operation_1(), simplify_comparison(), simplify_operand_subreg(), simplify_set(), simplify_context::simplify_truncation(), and store_constructor().
typedef TARGET_UNIT target_unit |
Done this way to keep gengtype happy.