diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-05-08 09:27:29 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2008-05-08 09:27:29 +0000 |
commit | 2afb4be3f459389193b437bb0b0413700f93655a (patch) | |
tree | e452b11cd2f2f07a867f70870559e7b21b003d58 /gcc/tree-flow-inline.h | |
parent | 6cbd9ceb866a4f181dcfcd2d28f01acea5e15e00 (diff) | |
download | gcc-2afb4be3f459389193b437bb0b0413700f93655a.tar.gz |
2008-05-08 Richard Guenther <rguenther@suse.de>
* tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
* tree-data-ref.h (struct dr_alias): Remove subvars field.
(DR_SUBVARS): Remove.
* tree-dfa.c (dump_subvars_for): Remove.
(debug_subvars_for): Likewise.
(dump_variable): Do not dump subvars.
(remove_referenced_var): Do not remove subvars.
* tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
(lookup_subvars_for_var): Remove.
(get_subvars_for_var): Likewise.
(get_subvars_at): Likewise.
(get_first_overlapping_subvar): Likewise.
(overlap_subvar): Likewise.
* tree-flow.h (subvar_t): Remove.
(struct var_ann_d): Remove subvars field.
* tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
argument. Remove special handling of SFTs.
(compute_tag_properties): Likewise.
(set_initial_properties): Likewise.
(compute_call_clobbered): Likewise.
(count_mem_refs): Likewise.
(compute_memory_partitions): Likewise.
(compute_flow_insensitive_aliasing): Likewise.
(setup_pointers_and_addressables): Likewise.
(new_type_alias): Likewise.
(struct used_part): Remove.
(used_portions): Likewise.
(struct used_part_map): Likewise.
(used_part_map_eq): Likewise.
(used_part_map_hash): Likewise.
(free_used_part_map): Likewise.
(up_lookup): Likewise.
(up_insert): Likewise.
(get_or_create_used_part_for): Likewise.
(create_sft): Likewise.
(create_overlap_variables_for): Likewise.
(find_used_portions): Likewise.
(create_structure_vars): Likewise.
* tree.def (STRUCT_FIELD_TAG): Remove.
* tree.h (MTAG_P): Adjust.
(struct tree_memory_tag): Remove base_for_components and
unpartitionable flags.
(struct tree_struct_field_tag): Remove.
(SFT_PARENT_VAR): Likewise.
(SFT_OFFSET): Likewise.
(SFT_SIZE): Likewise.
(SFT_NONADDRESSABLE_P): Likewise.
(SFT_ALIAS_SET): Likewise.
(SFT_UNPARTITIONABLE_P): Likewise.
(SFT_BASE_FOR_COMPONENTS_P): Likewise.
(union tree_node): Remove sft field.
* alias.c (get_alias_set): Remove special handling of SFTs.
* print-tree.c (print_node): Remove handling of SFTs.
* tree-dump.c (dequeue_and_dump): Likewise.
* tree-into-ssa.c (mark_sym_for_renaming): Likewise.
* tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
* tree-predcom.c (set_alias_info): Do not set subvars.
* tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
* tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
* tree-ssa-operands.c (access_can_touch_variable): Likewise.
(add_vars_for_offset): Remove.
(add_virtual_operand): Remove special handling of SFTs.
(add_call_clobber_ops): Likewise.
(add_call_read_ops): Likewise.
(get_asm_expr_operands): Likewise.
(get_modify_stmt_operands): Likewise.
(get_expr_operands): Likewise.
(add_to_addressable_set): Likewise.
* tree-ssa.c (verify_ssa_name): Do not handle SFTs.
* tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
* tree-vect-transform.c (vect_create_data_ref_ptr): Do not
set subvars.
* tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
(tree_code_size): Remove STRUCT_FIELD_TAG handling.
(tree_node_structure): Likewise.
* tree-ssa-structalias.c (set_uids_in_ptset): Remove special
handling of SFTs.
(find_what_p_points_to): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135077 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-flow-inline.h')
-rw-r--r-- | gcc/tree-flow-inline.h | 164 |
1 files changed, 1 insertions, 163 deletions
diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index d8593bd19d3..7b82ba34090 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -883,7 +883,7 @@ clear_call_clobbered (tree var) { var_ann_t ann = var_ann (var); ann->escape_mask = 0; - if (MTAG_P (var) && TREE_CODE (var) != STRUCT_FIELD_TAG) + if (MTAG_P (var)) MTAG_GLOBAL (var) = 0; if (!MTAG_P (var)) var_ann (var)->call_clobbered = false; @@ -1581,121 +1581,6 @@ ref_contains_array_ref (const_tree ref) return false; } -/* Given a variable VAR, lookup and return a pointer to the list of - subvariables for it. */ - -static inline subvar_t * -lookup_subvars_for_var (const_tree var) -{ - var_ann_t ann = var_ann (var); - gcc_assert (ann); - return &ann->subvars; -} - -/* Given a variable VAR, return a linked list of subvariables for VAR, or - NULL, if there are no subvariables. */ - -static inline subvar_t -get_subvars_for_var (tree var) -{ - subvar_t subvars; - - gcc_assert (SSA_VAR_P (var)); - - if (TREE_CODE (var) == SSA_NAME) - subvars = *(lookup_subvars_for_var (SSA_NAME_VAR (var))); - else - subvars = *(lookup_subvars_for_var (var)); - return subvars; -} - -/* Return the subvariable of VAR at offset OFFSET. */ - -static inline tree -get_subvar_at (tree var, unsigned HOST_WIDE_INT offset) -{ - subvar_t sv = get_subvars_for_var (var); - int low, high; - - low = 0; - high = VEC_length (tree, sv) - 1; - while (low <= high) - { - int mid = (low + high) / 2; - tree subvar = VEC_index (tree, sv, mid); - if (SFT_OFFSET (subvar) == offset) - return subvar; - else if (SFT_OFFSET (subvar) < offset) - low = mid + 1; - else - high = mid - 1; - } - - return NULL_TREE; -} - - -/* Return the first subvariable in SV that overlaps [offset, offset + size[. - NULL_TREE is returned, if there is no overlapping subvariable, else *I - is set to the index in the SV vector of the first overlap. */ - -static inline tree -get_first_overlapping_subvar (subvar_t sv, unsigned HOST_WIDE_INT offset, - unsigned HOST_WIDE_INT size, unsigned int *i) -{ - int low = 0; - int high = VEC_length (tree, sv) - 1; - int mid; - tree subvar; - - if (low > high) - return NULL_TREE; - - /* Binary search for offset. */ - do - { - mid = (low + high) / 2; - subvar = VEC_index (tree, sv, mid); - if (SFT_OFFSET (subvar) == offset) - { - *i = mid; - return subvar; - } - else if (SFT_OFFSET (subvar) < offset) - low = mid + 1; - else - high = mid - 1; - } - while (low <= high); - - /* As we didn't find a subvar with offset, adjust to return the - first overlapping one. */ - if (SFT_OFFSET (subvar) < offset - && SFT_OFFSET (subvar) + SFT_SIZE (subvar) <= offset) - { - mid += 1; - if ((unsigned)mid >= VEC_length (tree, sv)) - return NULL_TREE; - subvar = VEC_index (tree, sv, mid); - } - else if (SFT_OFFSET (subvar) > offset - && size <= SFT_OFFSET (subvar) - offset) - { - mid -= 1; - if (mid < 0) - return NULL_TREE; - subvar = VEC_index (tree, sv, mid); - } - - if (overlap_subvar (offset, size, subvar, NULL)) - { - *i = mid; - return subvar; - } - - return NULL_TREE; -} - /* Return true if V is a tree that we can have subvars for. Normally, this is any aggregate type. Also complex @@ -1748,53 +1633,6 @@ ranges_overlap_p (unsigned HOST_WIDE_INT pos1, return false; } - -/* Return true if OFFSET and SIZE define a range that overlaps with some - portion of the range of SV, a subvar. If there was an exact overlap, - *EXACT will be set to true upon return. */ - -static inline bool -overlap_subvar (unsigned HOST_WIDE_INT offset, unsigned HOST_WIDE_INT size, - const_tree sv, bool *exact) -{ - /* There are three possible cases of overlap. - 1. We can have an exact overlap, like so: - |offset, offset + size | - |sv->offset, sv->offset + sv->size | - - 2. We can have offset starting after sv->offset, like so: - - |offset, offset + size | - |sv->offset, sv->offset + sv->size | - - 3. We can have offset starting before sv->offset, like so: - - |offset, offset + size | - |sv->offset, sv->offset + sv->size| - */ - - if (exact) - *exact = false; - if (offset == SFT_OFFSET (sv) && size == SFT_SIZE (sv)) - { - if (exact) - *exact = true; - return true; - } - else if (offset >= SFT_OFFSET (sv) - && offset < (SFT_OFFSET (sv) + SFT_SIZE (sv))) - { - return true; - } - else if (offset < SFT_OFFSET (sv) - && (size > SFT_OFFSET (sv) - offset)) - { - return true; - } - return false; - -} - /* Return the memory tag associated with symbol SYM. */ static inline tree |