diff options
author | dnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-24 14:46:23 +0000 |
---|---|---|
committer | dnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-24 14:46:23 +0000 |
commit | 212f7f4c51b42e96cdca67dfa15dd43b5a6a9745 (patch) | |
tree | 01ff430a15b7d8a7738ce4596cf0c4dd0e967fa8 /gcc/tree-ssa-alias.c | |
parent | fe16419530e010e8009ee8a03ec6d2babe90ea78 (diff) | |
download | gcc-212f7f4c51b42e96cdca67dfa15dd43b5a6a9745.tar.gz |
* tree-ssa-alias.c (merge_pointed_to_info): Fix comment
regarding PT_MALLOC.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91164 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-alias.c')
-rw-r--r-- | gcc/tree-ssa-alias.c | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index 46778fac35f..0e30f126d30 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -1714,20 +1714,17 @@ merge_pointed_to_info (struct alias_info *ai, tree dest, tree orig) ... P_j = P_i + X; - P_j would be marked as PT_MALLOC, which is wrong because - PT_MALLOC implies that the pointer may not point to another - variable. - - FIXME 1: Subsequent analysis may determine that P_j - cannot alias anything else, but we are being conservative - here. - - FIXME 2: If the merging comes from a copy assignment, we - ought to merge PT_MALLOC, but then both pointers would end up - getting different name tags because create_name_tags is not - smart enough to determine that the two come from the same - malloc call. Copy propagation before aliasing should cure - this. */ + P_j would be marked as PT_MALLOC, however we currently do not + handle cases of more than one pointer pointing to the same + malloc'd area. + + FIXME: If the merging comes from an expression that preserves + the PT_MALLOC attribute (copy assignment, address + arithmetic), we ought to merge PT_MALLOC, but then both + pointers would end up getting different name tags because + create_name_tags is not smart enough to determine that the + two come from the same malloc call. Copy propagation before + aliasing should cure this. */ gcc_assert (orig_pi != dest_pi); dest_pi->pt_malloc = 0; |