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

Reply via email to