------- Comment #5 from ebotcazou at gcc dot gnu dot org 2010-02-26 10:19 ------- It looks like only c87b39a still fails as of this writing, but the 3 mentioned tests (c37105a, c46051a, c87b39a) use a common pattern, namely discriminated record types with fixed size and associated subtypes:
TYPE S IS (M, F); TYPE R (D : S) is RECORD NULL; END RECORD; SUBTYPE M1 IS R(M); My change was meant for discriminated record types with variable size, so the former aggressive behavior of aliasing_component_refs_p (i.e. returning false despite same alias set) has been restored with fixed size: P15b_5 = (struct c87b39a__m1 * const) D.1513_3; P15b.8_6 = (struct c87b39a__r &) P15b_5; # .MEM_19 = VDEF <.MEM_16> P15b.8_6->d = 0; # VUSE <.MEM_19> D.1515_7 = P15b_5->d; Deleted dead store 'P15b.8_6->d = 0; We might be able to save the day with the help of TYPE_CANONICAL in this case since the size is fixed. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43096