GCC Middle and Back End API Reference
|
Data Fields | |
HOST_WIDE_INT | offset |
HOST_WIDE_INT | size |
tree | base |
tree | expr |
tree | type |
gimple | stmt |
struct access * | next_grp |
struct access * | group_representative |
struct access * | first_child |
struct access * | next_sibling |
struct assign_link * | first_link |
struct assign_link * | last_link |
struct access * | next_queued |
tree | replacement_decl |
unsigned | write: 1 |
unsigned | non_addressable: 1 |
unsigned | grp_queued: 1 |
unsigned | grp_write: 1 |
unsigned | grp_read: 1 |
unsigned | grp_assignment_read: 1 |
unsigned | grp_assignment_write: 1 |
unsigned | grp_scalar_read: 1 |
unsigned | grp_scalar_write: 1 |
unsigned | grp_total_scalarization: 1 |
unsigned | grp_hint: 1 |
unsigned | grp_covered: 1 |
unsigned | grp_unscalarizable_region: 1 |
unsigned | grp_unscalarized_data: 1 |
unsigned | grp_partial_lhs: 1 |
unsigned | grp_to_be_replaced: 1 |
unsigned | grp_to_be_debug_replaced: 1 |
unsigned | grp_no_warning: 1 |
unsigned | grp_maybe_modified: 1 |
unsigned | grp_scalar_ptr: 1 |
unsigned | grp_not_necessarilly_dereferenced: 1 |
ACCESS represents each access to an aggregate variable (as a whole or a part). It can also represent a group of accesses that refer to exactly the same fragment of an aggregate (i.e. those that have exactly the same offset and size). Such representatives for a single aggregate, once determined, are linked in a linked list and have the group fields set. Moreover, when doing intraprocedural SRA, a tree is built from those representatives (by the means of first_child and next_sibling pointers), in which all items in a subtree are "within" the root, i.e. their offset is greater or equal to offset of the root and offset+size is smaller or equal to offset+size of the root. Children of an access are sorted by offset. Note that accesses to parts of vector and complex number types always represented by an access to the whole complex number or a vector. It is a duty of the modifying functions to replace them appropriately.
tree access::base |
Referenced by analyze_access_subtree(), analyze_modified_params(), build_access_from_expr(), build_accesses_from_assign(), create_access(), create_access_1(), create_access_replacement(), create_artificial_child_access(), decide_one_param_reduction(), dump_access(), get_access_for_expr(), handle_unscalarized_data_in_subtree(), load_assign_lhs_subreplacements(), mark_parm_dereference(), propagate_all_subaccesses(), propagate_subaccesses_across_link(), sra_modify_assign(), sra_modify_constructor_assign(), sra_modify_expr(), and turn_representatives_into_adjustments().
tree access::expr |
Referenced by access_precludes_ipa_sra_p(), analyze_access_subtree(), analyze_modified_params(), build_debug_ref_for_model(), build_ref_for_model(), completely_scalarize_record(), completely_scalarize_var(), create_access(), create_access_replacement(), create_artificial_child_access(), dump_access(), generate_subtree_copies(), propagate_subaccesses_across_link(), splice_param_accesses(), sra_modify_expr(), and turn_representatives_into_adjustments().
struct access* access::first_child |
Referenced by access_has_children_p(), access_has_replacements_p(), analyze_access_subtree(), build_access_subtree(), child_would_conflict_in_lacc(), create_artificial_child_access(), dump_access_tree_1(), find_access_in_subtree(), generate_subtree_copies(), handle_unscalarized_data_in_subtree(), init_subtree_with_zero(), load_assign_lhs_subreplacements(), propagate_subaccesses_across_link(), sra_modify_assign(), sra_modify_constructor_assign(), and sra_modify_expr().
struct assign_link* access::first_link |
Referenced by add_link_to_rhs(), propagate_all_subaccesses(), relink_to_new_repr(), and sort_and_splice_var_accesses().
struct access* access::group_representative |
unsigned access::grp_assignment_read |
Referenced by analyze_access_subtree(), build_accesses_from_assign(), dump_access(), and sort_and_splice_var_accesses().
unsigned access::grp_assignment_write |
Referenced by analyze_access_subtree(), build_accesses_from_assign(), dump_access(), and sort_and_splice_var_accesses().
unsigned access::grp_covered |
unsigned access::grp_hint |
unsigned access::grp_maybe_modified |
unsigned access::grp_no_warning |
unsigned access::grp_not_necessarilly_dereferenced |
unsigned access::grp_partial_lhs |
unsigned access::grp_queued |
Referenced by add_access_to_work_queue(), and pop_access_from_work_queue().
unsigned access::grp_read |
unsigned access::grp_scalar_ptr |
Referenced by analyze_all_param_acesses(), and unmodified_by_ref_scalar_representative().
unsigned access::grp_scalar_read |
Referenced by analyze_access_subtree(), dump_access(), and sort_and_splice_var_accesses().
unsigned access::grp_scalar_write |
Referenced by analyze_access_subtree(), dump_access(), and sort_and_splice_var_accesses().
unsigned access::grp_to_be_debug_replaced |
unsigned access::grp_to_be_replaced |
unsigned access::grp_total_scalarization |
unsigned access::grp_unscalarizable_region |
unsigned access::grp_unscalarized_data |
Referenced by analyze_access_subtree(), dump_access(), handle_unscalarized_data_in_subtree(), and sra_modify_assign().
unsigned access::grp_write |
struct assign_link * access::last_link |
Referenced by add_link_to_rhs(), and relink_to_new_repr().
struct access* access::next_grp |
Referenced by analyze_access_trees(), analyze_caller_dereference_legality(), analyze_modified_params(), build_access_subtree(), build_access_trees(), decide_one_param_reduction(), dump_access_tree(), get_var_base_offset_size_access(), initialize_parameter_reductions(), sort_and_splice_var_accesses(), splice_param_accesses(), and turn_representatives_into_adjustments().
struct access* access::next_queued |
Referenced by add_access_to_work_queue(), and pop_access_from_work_queue().
struct access* access::next_sibling |
Referenced by access_has_replacements_p(), analyze_access_subtree(), analyze_modified_params(), build_access_subtree(), child_would_conflict_in_lacc(), create_artificial_child_access(), dump_access_tree_1(), find_access_in_subtree(), generate_subtree_copies(), init_subtree_with_zero(), load_assign_lhs_subreplacements(), propagate_subaccesses_across_link(), splice_param_accesses(), and unmodified_by_ref_scalar_representative().
unsigned access::non_addressable |
Referenced by create_access(), and decide_one_param_reduction().
HOST_WIDE_INT access::offset |
Referenced by analyze_access_subtree(), analyze_caller_dereference_legality(), build_access_subtree(), child_would_conflict_in_lacc(), compare_access_positions(), create_access_1(), create_access_replacement(), create_artificial_child_access(), dump_access(), find_access_in_subtree(), generate_subtree_copies(), get_var_base_offset_size_access(), handle_unscalarized_data_in_subtree(), load_assign_lhs_subreplacements(), propagate_subaccesses_across_link(), sort_and_splice_var_accesses(), splice_param_accesses(), sra_modify_assign(), sra_modify_expr(), and turn_representatives_into_adjustments().
tree access::replacement_decl |
Referenced by analyze_access_subtree(), get_access_replacement(), and get_repl_default_def_ssa_name().
HOST_WIDE_INT access::size |
Referenced by analyze_access_subtree(), analyze_caller_dereference_legality(), build_access_subtree(), build_accesses_from_assign(), child_would_conflict_in_lacc(), compare_access_positions(), completely_scalarize_record(), completely_scalarize_var(), create_access(), create_access_1(), create_access_replacement(), create_artificial_child_access(), decide_one_param_reduction(), dump_access(), find_access_in_subtree(), generate_subtree_copies(), get_access_for_expr(), get_var_base_offset_size_access(), load_assign_lhs_subreplacements(), propagate_subaccesses_across_link(), sort_and_splice_var_accesses(), and splice_param_accesses().
gimple access::stmt |
tree access::type |
Referenced by analyze_access_subtree(), build_accesses_from_assign(), build_debug_ref_for_model(), build_ref_for_model(), compare_access_positions(), completely_scalarize_record(), completely_scalarize_var(), create_access(), create_access_replacement(), create_artificial_child_access(), decide_one_param_reduction(), dump_access(), init_subtree_with_zero(), load_assign_lhs_subreplacements(), propagate_subaccesses_across_link(), sort_and_splice_var_accesses(), splice_param_accesses(), sra_modify_expr(), and turn_representatives_into_adjustments().
unsigned access::write |