diff options
author | Richard Guenther <rguenther@suse.de> | 2008-05-27 13:21:07 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2008-05-27 13:21:07 +0000 |
commit | a46fc136fc682ea3d0429e6ac1084712fe18b612 (patch) | |
tree | 19d39919b6075de840b977d6bd83de0f9444a5ad /gcc/tree-ssa-alias.c | |
parent | 6fe2f65a17ba8ccadca8e944ce11833bfcbcfb48 (diff) | |
download | gcc-a46fc136fc682ea3d0429e6ac1084712fe18b612.zip gcc-a46fc136fc682ea3d0429e6ac1084712fe18b612.tar.gz gcc-a46fc136fc682ea3d0429e6ac1084712fe18b612.tar.bz2 |
re PR tree-optimization/36339 (not call clobbering variable for non common offset)
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.
From-SVN: r136030
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r-- | gcc/tree-ssa-alias.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 7ce016b..983e321 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 |