------- 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