------- Comment #5 from rguenth at gcc dot gnu dot org  2010-03-17 14:57 -------
This is points-to information being computed wrongly.  A lot was fixed for
GCC 4.4.x in this area.

The constraints are already wrong:

arr = &a
arr.32 = &b
arr.64 = &c
arr.96 = &d
D.2332_12 = arr

With 4.4 and 4.5 we do not create subvars for array elements and so end
up with the valid

arr = &a
arr = &b
arr = &c
arr = &d
D.2407_14 = arr

Fixed as part of

2008-05-08  Richard Guenther  <rguent...@suse.de>

        * tree-flow-inline.h (var_can_have_subvars): Move ...
        * tree-ssa-structalias.c (var_can_have_subvars): ... here.
        * tree-flow.h (var_can_have_subvars): Remove.
        (push_fields_onto_fieldstack): Remove.
        (sort_fieldstack): Likewise.
        (struct fieldoff): Move ...
        * tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
        alias_set and base_for_components fields.
        (sort_fieldstack): Make static.
        (push_fields_onto_fieldstack): Likewise.  Remove code that
        handles anything but RECORD_TYPEs.  Remove alias_set and
        base_for_components handling.
        (create_variable_info_for): Adjust.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
          Component|c                           |tree-optimization
     Ever Confirmed|0                           |1
      Known to work|                            |4.4.0
   Last reconfirmed|0000-00-00 00:00:00         |2010-03-17 14:57:33
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43401

Reply via email to