http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46188
--- Comment #3 from Jens Maurer <jens.maurer at gmx dot net> 2010-10-27 06:14:31 UTC --- Created attachment 22170 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=22170 improved testcase The previous testcase had the problem that the compiler could legitimately assume that Array::operator= actually left the Array empty, and thus omission of the destructor calls for the nested Array was actually fine. I've now added a call to an external function "do_something" at the end of Array::operator= (which could change the state of the Array as it pleases); this ought to kill any ideas the compiler might retain about the state of the Array. The issue remains reproducible; assembler code essentially unchanged from above. Please excuse the confusion.