aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-alias.c8
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e5a53a2..b46c15e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-06-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-ssa-alias.c (finalize_ref_all_pointers): Clear pt_anything
+ flag on ref-all pointers.
+
2007-06-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/31579
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index cf5dc2b..31911e6 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -2415,8 +2415,14 @@ finalize_ref_all_pointers (struct alias_info *ai)
for (i = 0; i < ai->num_pointers; i++)
{
tree ptr = ai->pointers[i]->var, tag;
+ /* Avoid adding to self and clean up. */
if (PTR_IS_REF_ALL (ptr))
- continue;
+ {
+ struct ptr_info_def *pi = get_ptr_info (ptr);
+ if (pi->is_dereferenced)
+ pi->pt_anything = 0;
+ continue;
+ }
tag = symbol_mem_tag (ptr);
if (is_call_clobbered (tag))
add_may_alias (ai->ref_all_symbol_mem_tag, tag);