#include "config.h"#include "system.h"#include "tree.h"#include "rtl.h"#include "tm_p.h"#include "flags.h"#include "function.h"#include "expr.h"#include "toplev.h"#include "ggc.h"#include "target.h"#include "langhooks.h"#include "gt-stor-layout.h"

Go to the source code of this file.
| #define MAX_FIXED_MODE_SIZE GET_MODE_BITSIZE (DImode) |
Definition at line 211 of file stor-layout.c.
| #define SET_WORD_SIZE BITS_PER_WORD |
Referenced by layout_type().
Definition at line 608 of file stor-layout.c.
Referenced by byte_position(), and rli_size_unit_so_far().
Definition at line 1381 of file stor-layout.c.
Referenced by finish_record_layout(), and finish_struct_1().
| void debug_rli | ( | record_layout_info | rli | ) |
Definition at line 678 of file stor-layout.c.
| static void finalize_record_size | ( | record_layout_info | rli | ) | [static] |
Definition at line 1277 of file stor-layout.c.
References BITS_PER_UNIT, DECL_NAME, IDENTIFIER_POINTER, integer_zerop(), MAX, normalize_rli(), rli_size_so_far(), rli_size_unit_so_far(), ROUND_TYPE_ALIGN, ROUND_TYPE_SIZE, ROUND_TYPE_SIZE_UNIT, round_up(), simple_cst_equal(), size_binop(), size_one_node, STRICT_ALIGNMENT, TREE_CODE, TREE_CONSTANT, TREE_VEC_LENGTH, TYPE_ALIGN, TYPE_BINFO, TYPE_BINFO_SIZE, TYPE_BINFO_SIZE_UNIT, TYPE_NAME, TYPE_PACKED, TYPE_SIZE, TYPE_SIZE_UNIT, warn_packed, warn_padded, and warning.
Referenced by finish_record_layout().
Definition at line 1465 of file stor-layout.c.
References align, BITS_PER_UNIT, bitsize_unit_node, convert(), GET_MODE_ALIGNMENT, mode, ROUND_TYPE_ALIGN, ROUND_TYPE_SIZE, ROUND_TYPE_SIZE_UNIT, round_up(), size, size_binop(), sizetype, STRICT_ALIGNMENT, TREE_CODE, TYPE_ALIGN, TYPE_MAIN_VARIANT, TYPE_MODE, TYPE_NEXT_VARIANT, TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_USER_ALIGN, and variable_size().
Referenced by finish_record_layout(), and layout_type().
| void finish_record_layout | ( | record_layout_info | rli, | |
| int | free_p | |||
| ) |
Definition at line 1555 of file stor-layout.c.
Referenced by layout_class_type(), layout_type(), and layout_virtual_bases().
Definition at line 2049 of file stor-layout.c.
Referenced by build_nonstandard_integer_type(), finish_enum(), make_signed_type(), and set_sizetype().
Definition at line 2087 of file stor-layout.c.
Referenced by build_nonstandard_integer_type(), finish_enum(), java_init_decl_processing(), make_unsigned_type(), and set_sizetype().
| enum machine_mode get_best_mode | ( | int | bitsize, | |
| int | bitpos, | |||
| unsigned int | align, | |||
| enum machine_mode | largest_mode, | |||
| int | volatilep | |||
| ) |
Definition at line 2130 of file stor-layout.c.
Referenced by extract_bit_field(), extract_fixed_bit_field(), fold_truthop(), optimize_bit_field_compare(), optimize_bitfield_assignment_op(), store_bit_field(), and store_fixed_bit_field().
| unsigned int get_mode_alignment | ( | enum machine_mode | mode | ) |
Definition at line 99 of file stor-layout.c.
Referenced by c_cannot_inline_tree_fn(), expand_function_start(), ffecom_sym_transform_(), finish_decl(), get_parm_info(), and store_parm_decls().
| static GTY | ( | () | ) | [static] |
| void initialize_sizetypes | ( | ) |
Definition at line 1936 of file stor-layout.c.
References bitsizetype, build_int_2, copy_node, GET_MODE_ALIGNMENT, GET_MODE_BITSIZE, GET_MODE_SIZE, integer_type_node, make_node, sizetype, TREE_UNSIGNED, TYPE_ALIGN, TYPE_IS_SIZETYPE, TYPE_MAX_VALUE, TYPE_MIN_VALUE, TYPE_MODE, TYPE_PRECISION, TYPE_SIZE, TYPE_SIZE_UNIT, and TYPE_USER_ALIGN.
Referenced by build_common_tree_nodes(), and java_init_decl_processing().
| enum machine_mode int_mode_for_mode | ( | enum machine_mode | mode | ) |
Definition at line 280 of file stor-layout.c.
Referenced by emit_group_load_1(), emit_group_store(), emit_move_via_integer(), expand_absneg_bit(), expand_builtin_signbit(), expand_copysign_absneg(), expand_copysign_bit(), expand_vector_binop(), expand_vector_unop(), extract_bit_field(), gen_lowpart_common(), gen_lowpart_for_combine(), ix86_split_to_parts(), purge_addressof_1(), simplify_subreg(), and store_bit_field().
| int is_pending_size | ( | tree | expr | ) |
Definition at line 373 of file stor-layout.c.
References abort, BITS_PER_UNIT, bitsize_unit_node, compare_tree_int(), convert(), DECL_ALIGN, DECL_BIT_FIELD, DECL_BIT_FIELD_TYPE, DECL_EXTERNAL, DECL_MODE, DECL_NONADDRESSABLE_P, DECL_PACKED, DECL_RTL_IF_SET, DECL_SIZE, DECL_SIZE_UNIT, DECL_USER_ALIGN, error_mark_node, GET_MODE_ALIGNMENT, GET_MODE_CLASS, larger_than_size, MAX, maximum_field_alignment, MIN, mode_for_size_tree(), MODE_INT, NULL_RTX, PUT_MODE, SET_DECL_RTL, set_mem_attributes(), size, size_binop(), sizetype, TREE_CODE, TREE_INT_CST_LOW, TREE_TYPE, TREE_UNSIGNED, TYPE_ALIGN, TYPE_MODE, TYPE_SIZE, TYPE_SIZE_UNIT, variable_size(), void_type_node, and warn_larger_than.
Referenced by assemble_variable(), build_compound_literal(), build_cplus_new(), build_decl(), build_decl_stat(), build_jni_stub(), build_local_temp(), build_target_expr_with_type(), build_utf8_ref(), c_finish_incomplete_decl(), compile_resource_file(), decl_attributes(), duplicate_decls(), expand_expr(), expand_expr_real_1(), expand_load_internal(), finalize_nesting_tree_1(), finish_builtin_struct(), finish_builtin_type(), finish_decl(), finish_record_layout(), finish_struct(), initialize_reference(), java_lang_expand_expr(), layout_class_type(), layout_var_decl(), layout_vtable_decl(), maybe_deduce_size_from_array_init(), merge_decls(), place_field(), push_jvm_slot(), relayout_decl(), require_complete_types_for_parms(), split_complex_args(), store_init_value(), store_parm_decls(), store_parm_decls_oldstyle(), tsubst_decl(), and update_alignment_for_field().
Definition at line 1592 of file stor-layout.c.
Referenced by alpha_build_builtin_va_list(), alpha_build_va_list(), build_array_type(), build_common_tree_nodes_2(), build_complex_type(), build_cplus_method_type(), build_dtable_decl(), build_function_type(), build_java_array_type(), build_method_type(), build_method_type_directly(), build_offset_type(), build_pointer_type(), build_pointer_type_for_mode(), build_reference_type(), build_reference_type_for_mode(), clipper_build_va_list(), complete_array_type(), complete_type(), cp_finish_decl(), cxx_init_decl_processing(), d30v_build_va_list(), duplicate_decls(), end_final(), ffecom_f2c_make_type_(), ffecom_finish_global_(), ffecom_init_0(), ffecom_make_complex_type_(), ffecom_type_namelist_(), ffecom_type_vardesc_(), ffeste_io_cilist_(), ffeste_io_cllist_(), ffeste_io_ialist_(), ffeste_io_icilist_(), ffeste_io_inlist_(), ffeste_io_olist_(), ffeste_R1001(), finalize_nesting_tree_1(), finish_builtin_struct(), finish_builtin_type(), finish_enum(), finish_struct(), finish_vector_type(), fixup_child_record_type(), fixup_signed_type(), fixup_unsigned_type(), grokdeclarator(), GTY(), i860_build_builtin_va_list(), i860_build_va_list(), ia64_init_builtins(), init_eh(), ix86_build_builtin_va_list(), ix86_build_va_list(), ix86_init_mmx_sse_builtins(), java_init_decl_processing(), layout_array_type(), layout_class(), layout_class_methods(), layout_vtable_decl(), m88k_build_va_list(), make_vector_type(), merge_decls(), mf_make_mf_cache_struct_type(), mips_build_builtin_va_list(), mips_build_va_list(), push_promoted_type(), record_builtin_java_type(), rs6000_build_builtin_va_list(), rs6000_build_va_list(), s390_build_builtin_va_list(), s390_build_va_list(), scan_omp_parallel(), scan_omp_single(), set_sizetype(), sh_build_builtin_va_list(), sh_build_va_list(), store_init_value(), synth_module_prologue(), tsubst(), type_hash_lookup(), xstormy16_build_builtin_va_list(), xstormy16_build_va_list(), xtensa_build_builtin_va_list(), and xtensa_build_va_list().
| tree make_signed_type | ( | int | precision | ) |
Definition at line 1907 of file stor-layout.c.
Referenced by alpha_va_arg(), build_common_tree_nodes(), c_common_nodes_and_builtins(), d30v_build_va_list(), ffecom_f2c_make_type_(), ffecom_init_0(), GTY(), handle_mode_attribute(), java_init_decl_processing(), make_or_reuse_type(), record_builtin_java_type(), and set_sizetype().
| tree make_unsigned_type | ( | int | precision | ) |
Definition at line 1921 of file stor-layout.c.
Referenced by build_common_tree_nodes(), c_common_nodes_and_builtins(), c_init_decl_processing(), cxx_init_decl_processing(), end_final(), ffecom_init_0(), GTY(), handle_mode_attribute(), java_init_decl_processing(), make_or_reuse_type(), record_builtin_java_type(), and set_sizetype().
| enum machine_mode mode_for_size | ( | unsigned int | size, | |
| enum mode_class | class, | |||
| int | limit | |||
| ) |
Definition at line 220 of file stor-layout.c.
Referenced by add_subweb_2(), alpha_expand_block_clear(), alpha_expand_block_move(), alter_reg(), arm_function_value(), assemble_integer(), assign_parm_setup_block(), can_store_by_pieces(), combine_instructions(), compute_argument_addresses(), construct_container(), do_jump(), emit_library_call_value_1(), emit_move_insn_1(), expand_builtin_powi(), expand_expr(), expand_expr_real_1(), expand_field_assignment(), expand_vector_parallel(), extract_bit_field(), extract_force_align_mem_bit_field(), function_arg(), function_arg_record_value_3(), function_value(), gen_edge_profiler(), gen_lowpart_common(), get_builtin_sync_mode(), hfa_element_mode(), init_emit_once(), init_integral_libfuncs(), init_optabs(), int_mode_for_mode(), layout_type(), make_extraction(), mips_block_move_straight(), mips_expand_unaligned_store(), mips_function_value(), mode_for_size_tree(), move_block_from_reg(), move_by_pieces(), move_by_pieces_ninsns(), optimize_bit_field(), output_constant(), output_func_start_profiler(), rs6000_darwin64_record_arg_advance_flush(), rs6000_darwin64_record_arg_flush(), rtl_coverage_counter_ref(), rtl_gen_const_delta_profiler(), rtl_gen_interval_profiler(), rtl_gen_one_value_profiler_no_edge_manipulation(), rtl_gen_pow2_profiler(), simplify_comparison(), simplify_shift_const(), simplify_shift_const_1(), simplify_subreg(), store_bit_field(), store_by_pieces_1(), store_constructor(), store_one_arg(), and subreg_offset_representable_p().
| enum machine_mode mode_for_size_tree | ( | tree | size, | |
| enum mode_class | class, | |||
| int | limit | |||
| ) |
Definition at line 242 of file stor-layout.c.
Referenced by compute_record_mode(), expand_anon_union_decl(), layout_decl(), and layout_type().
| void normalize_rli | ( | record_layout_info | rli | ) |
Definition at line 702 of file stor-layout.c.
Referenced by finalize_record_size(), include_empty_classes(), layout_class_type(), layout_nonempty_base_or_field(), and place_field().
| static unsigned int update_alignment_for_field PARAMS | ( | (record_layout_info, tree, unsigned int) | ) | [static] |
| static void place_union_field PARAMS | ( | (record_layout_info, tree) | ) | [static] |
| static void finalize_record_size PARAMS | ( | (record_layout_info) | ) | [static] |
| void place_field | ( | record_layout_info | rli, | |
| tree | field | |||
| ) |
Definition at line 884 of file stor-layout.c.
Referenced by layout_class_type(), layout_nonempty_base_or_field(), and layout_type().
| static void place_union_field | ( | record_layout_info | rli, | |
| tree | field | |||
| ) | [static] |
Definition at line 858 of file stor-layout.c.
References BIGGEST_ALIGNMENT, bitsize_zero_node, build(), DECL_FIELD_BIT_OFFSET, DECL_FIELD_OFFSET, DECL_QUALIFIER, DECL_SIZE_UNIT, fold(), SET_DECL_OFFSET_ALIGN, size_binop(), size_zero_node, sizetype, TREE_CODE, and update_alignment_for_field().
Referenced by place_field().
Definition at line 637 of file stor-layout.c.
Definition at line 618 of file stor-layout.c.
References BITS_PER_UNIT, bitsize_int, bitsize_unit_node, convert(), size_binop(), size_int, and sizetype.
Definition at line 147 of file stor-layout.c.
Referenced by c_cannot_inline_tree_fn(), ffecom_sym_transform_(), and grokdeclarator().
| tree rli_size_so_far | ( | record_layout_info | rli | ) |
Definition at line 720 of file stor-layout.c.
Referenced by finalize_record_size(), and layout_class_type().
| tree rli_size_unit_so_far | ( | record_layout_info | rli | ) |
Definition at line 711 of file stor-layout.c.
Referenced by build_base_field(), finalize_record_size(), include_empty_classes(), and layout_class_type().
Definition at line 350 of file stor-layout.c.
Referenced by floor(), include_empty_classes(), and pad_to_arg_alignment().
Definition at line 338 of file stor-layout.c.
Referenced by build_base_field(), ceil(), compute_argument_block_size(), finalize_record_size(), finalize_type_size(), include_empty_classes(), layout_class_type(), layout_virtual_bases(), locate_and_pad_parm(), pad_below(), pad_to_arg_alignment(), place_field(), std_gimplify_va_arg_expr(), xstormy16_expand_builtin_va_arg(), and xtensa_gimplify_va_arg_expr().
Definition at line 1969 of file stor-layout.c.
Referenced by c_common_nodes_and_builtins(), ffecom_init_0(), GTY(), and java_init_decl_processing().
| enum machine_mode smallest_mode_for_size | ( | unsigned int | size, | |
| enum mode_class | class | |||
| ) |
Definition at line 261 of file stor-layout.c.
Referenced by choose_reload_regs(), convert_move(), expand_twoval_binop_libfunc(), extract_force_align_mem_bit_field(), function_arg_record_value_3(), gen_split_1211(), layout_type(), make_extraction(), s390_expand_insv(), and store_bit_field().
| record_layout_info start_record_layout | ( | tree | t | ) |
| static unsigned int update_alignment_for_field | ( | record_layout_info | rli, | |
| tree | field, | |||
| unsigned int | known_align | |||
| ) | [static] |
Definition at line 732 of file stor-layout.c.
References ADJUST_FIELD_ALIGN, BIGGEST_FIELD_ALIGNMENT, BITS_PER_UNIT, DECL_ALIGN, DECL_BIT_FIELD_TYPE, DECL_NAME, DECL_PACKED, DECL_SIZE, DECL_USER_ALIGN, error_mark_node, integer_zerop(), layout_decl(), MAX, maximum_field_alignment, MIN, gcc_target::ms_bitfield_layout_p, PCC_BITFIELD_TYPE_MATTERS, targetm, TREE_TYPE, TYPE_ALIGN, TYPE_SIZE, TYPE_USER_ALIGN, and warn_packed.
Referenced by place_field(), and place_union_field().
Definition at line 160 of file stor-layout.c.
Referenced by compute_array_index_type(), Create_DST_type_For_Tree(), Create_TY_For_Tree(), Emit_Interface_Scn(), ffecom_char_enhance_arg_(), ffecom_sym_transform_(), ffecom_type_localvar_(), finalize_type_size(), flatten_function_call(), grokdeclarator(), layout_decl(), and store_one_arg().
tree early_type_list [static] |
| unsigned int maximum_field_alignment |
Definition at line 59 of file stor-layout.c.
Referenced by common_handle_option(), layout_decl(), place_field(), pop_field_alignment(), push_field_alignment(), and update_alignment_for_field().
int reference_types_internal = 0 [static] |
| unsigned int set_alignment = 0 |
int sizetype_set [static] |
| tree sizetype_tab[(int) TYPE_KIND_LAST] |
Definition at line 55 of file stor-layout.c.
Referenced by set_sizetype(), size_int_kind(), and size_int_wide().
1.5.6