http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59678
--- Comment #14 from janus at gcc dot gnu.org --- (In reply to janus from comment #11) > The dump shows that the assignment is translated into: > > { > void * restrict D.2321; > integer(kind=8) D.2320; > integer(kind=8) D.2319; > integer(kind=8) D.2318; > struct t1 D.2317; > > D.2317 = y; > y = x; > y.parts = x.parts; > y.parts.obj = x.parts.obj; Up to here the dump is fine, but it the next line things start to go wrong: > if ((void *) x.parts.obj.vec.data != 0B) We fail to check if obj is allocated.