------- Comment #17 from jason at redhat dot com 2009-06-12 17:30 ------- Subject: Re: optimizer bug (possibly)
On 06/10/2009 05:27 PM, jakub at gcc dot gnu dot org wrote: > Yes, as I said earlier, I think we should handle > D.2249 = baz (); [return slot optimization] > as taking address of D.2249, at least if it has TREE_ADDRESSABLE type. No; it should only do this if 'this' escapes from a constructor for the type, as in this testcase when it's passed to bar. This should be a small subset of TREE_ADDRESSABLE types. Your reduced testcase removes the copy constructor entirely, which makes the program incorrect; my earlier suggestion was to just remove its body, which would produce a link error if it's invoked (as it shouldn't, as we elide the copy) rather than invalid code. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40389