summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-alias.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-27 13:21:07 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2008-05-27 13:21:07 +0000
commitc728795311a7ed5b829ecc69a43a393e7c8cef15 (patch)
tree19d39919b6075de840b977d6bd83de0f9444a5ad /gcc/tree-ssa-alias.c
parent36f0904bae8a3cffd401a43a765fb1e2e6e2af47 (diff)
downloadgcc-c728795311a7ed5b829ecc69a43a393e7c8cef15.tar.gz
2008-05-27 Richard Guenther <rguenther@suse.de>
PR tree-optimization/36339 * tree-ssa-alias.c (set_initial_properties): Escaped pt_anything pointers cause all addressable variables to be call clobbered. * gcc.c-torture/execute/pr36339.c: New testcase. * gcc.dg/tree-ssa/loadpre8.c: XFAIL. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@136030 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r--gcc/tree-ssa-alias.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index 7ce016b9096..983e321521d 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -571,6 +571,22 @@ set_initial_properties (struct alias_info *ai)
mark_call_clobbered (alias, pi->escape_mask);
}
}
+ else if (pi->pt_anything)
+ {
+ bitmap_iterator bi;
+ unsigned int j;
+
+ /* If we do not have the points-to set filled out we
+ still need to honor that this escaped pointer points
+ to anything. */
+ EXECUTE_IF_SET_IN_BITMAP (gimple_addressable_vars (cfun),
+ 0, j, bi)
+ {
+ tree var = referenced_var (j);
+ if (!unmodifiable_var_p (var))
+ mark_call_clobbered (var, pi->escape_mask);
+ }
+ }
}
/* If the name tag is call clobbered, so is the symbol tag