------- Comment #15 from rguenth at gcc dot gnu dot org 2009-09-26 15:30 ------- On trunk we get
<bb 2>: # .MEM_3 = VDEF <.MEM_2(D)> param.f1 = 0; # .MEM_4 = VDEF <.MEM_3> memcpy (&local, ¶m, 9); # VUSE <.MEM_4> D.1743_1 = local.f1; if (D.1743_1 != 0) goto <bb 3>; else goto <bb 4>; <bb 3>: # .MEM_5 = VDEF <.MEM_4> link_error (); <bb 4>: return; which shows this is an issue of value-numbering not looking through memcpy. SRA obviously does not work here because both vars have their address taken. The issue in the summary should have been fixed by the SRA rewrite. I'm looking at the VN issue. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2006-10-24 12:34:46 |2009-09-26 15:30:16 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13954