summaryrefslogtreecommitdiff
path: root/gcc/alias.c
diff options
context:
space:
mode:
authordberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-04 19:07:05 +0000
committerdberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4>2006-12-04 19:07:05 +0000
commit7d1f52b23a4d503ddbb1bb6bd82a2e4a992ad6de (patch)
tree8dbfc56117f5c8e2683fa7f0f2fb59efb7c301b4 /gcc/alias.c
parent729a26ca737cc04301584a808a09866752d192e3 (diff)
downloadgcc-7d1f52b23a4d503ddbb1bb6bd82a2e4a992ad6de.tar.gz
2006-12-04 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (compute_may_aliases): Compute flow sensitive before flow insensitive. (compute_flow_sensitive_aliasing): Don't try to add a symbol memory tag to itself. * alias.h (alias_set_subset_of): New prototype. * alias.c (alias_set_subset_of): New function. * tree-ssa-structalias.c: Update comments. (struct variable_info): Add finished_solution. (new_varinfo): Set finished solution to NULL. (var_escaped_vars): Remove. (escaped_vars_tree): Remove. (escaped_vars_id): Remove. (nonlocal_vars_id): Remove. (constraint_expr_type): Add INCLUDES. (graph_size): Removed. (dump_constraint): Support INCLUDES. (build_constraint_graph): Ditto. (collapse_nodes): Add merge_solutions argument. Don't merge attributes. (process_unification_queue): Just use collapse_nodes. (perform_var_substitution): Update call to collapse_nodes. (get_constraint_exp_from_ssa_var): Use INCLUDES. (process_constraint): Fix non-field sensitive handling Handle includes. (get_constraint_for): Use INCLUDES. (make_constraint_from_anything): Renamed from make_constraint_from_escaped. (make_constraint_to_escaped): Removed. (find_global_initializers): Removed. (create_variable_info_for): Do not make constraints to escaped vars anymore. (dump_solution_for_var): Don't print out the equivalent points-to sets, just use the name of the variable it shares it with. (intra_create_variable_infos): Use INCLUDES. Change nonlocal variable sets to anything sets. (init_base_vars): Remove escaped_vars and nonlocal_var initialization. (find_escape_constraints): Removed. (delete_points_to_sets): Remove dead code. (used_smt_calculated): New variable. (set_used_smts): New function. (merge_smts_into): New function. (find_what_p_points_to): Modify to use SMTs. (create_nonlocal_var): Remove. * tree-ssa-operands.c (access_can_touch_variable): Remove reference to nonlocal_all. * tree-ssa.c (verify_name_tags): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119502 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/alias.c')
-rw-r--r--gcc/alias.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/alias.c b/gcc/alias.c
index 7a36284cb3a..ba7f948c89e 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -293,6 +293,26 @@ insert_subset_children (splay_tree_node node, void *data)
return 0;
}
+/* Return true if the first alias set is a subset of the second. */
+
+bool
+alias_set_subset_of (HOST_WIDE_INT set1, HOST_WIDE_INT set2)
+{
+ alias_set_entry ase;
+
+ /* Everything is a subset of the "aliases everything" set. */
+ if (set2 == 0)
+ return true;
+
+ /* Otherwise, check if set1 is a subset of set2. */
+ ase = get_alias_set_entry (set2);
+ if (ase != 0
+ && (splay_tree_lookup (ase->children,
+ (splay_tree_key) set1)))
+ return true;
+ return false;
+}
+
/* Return 1 if the two specified alias sets may conflict. */
int