http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49599
--- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-12-16 09:18:40 UTC --- FRE does not handle removal of redundant aggregate stores, so it does not remove the aggregate assignment *p_1(D) = l; DSE does not handle redundant store removal either, and the store is obviously not dead. I think SRA should remove the aggregate store.