tree-ssa-alias.c (merge_pointed_to_info): Fix comment regarding PT_MALLOC.
authorDiego Novillo <dnovillo@redhat.com>
Wed, 24 Nov 2004 14:46:23 +0000 (14:46 +0000)
committerDiego Novillo <dnovillo@gcc.gnu.org>
Wed, 24 Nov 2004 14:46:23 +0000 (09:46 -0500)
* tree-ssa-alias.c (merge_pointed_to_info): Fix comment
regarding PT_MALLOC.

From-SVN: r91164

gcc/ChangeLog
gcc/tree-ssa-alias.c

index 2823c0e2fcd49bed518b18e9fb2d532557be8138..82a31f1f5943a4a8e57c5a1ccd03dbbca56af7c0 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-24  Diego Novillo  <dnovillo@redhat.com>
+
+       * tree-ssa-alias.c (merge_pointed_to_info): Fix comment
+       regarding PT_MALLOC.
+
 2004-11-24  Joseph Myers  <joseph@codesourcery.com>
 
        * config/i386/i386.c (optimization_options): Use
index 46778fac35fed84bc489a6c1acb317694b4b216c..0e30f126d3045161c898bba8cff69ae8e1293d5b 100644 (file)
@@ -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;