------- Additional Comments From mark at codesourcery dot com 2005-03-04 23:29 ------- Subject: Re: [PR c++/20103] failure to gimplify constructors for addressable types
Alexandre Oliva wrote: > On Mar 3, 2005, Andrew Pinski <[EMAIL PROTECTED]> wrote: > > >>I think this is the wrong approach. The front-end and not >>the gimplifier should be creating these temporaries, I mentioned >>this already in the bug. > > > How about this? > > I tried with the TARGET_EXPR by itself, but it failed to be recognized > as an lvalue, so I introduced the compound expr. Introducing a TARGET_EXPR makes sense to me. > Testing on x86_64-linux-gnu. Ok to install if it passes? > + foo ((B){x}); I don't think (B){x} should be an lvalue, C99 notwithstanding. B(3) is not be an lavalue; I don't see why "(B){x}" should be. Conceptually, the compound-literal syntax is just a way of invoking an imaginary constuctor that has an argument corresponding to each non-static data member. Has there been any discussion of this in the ISO committee? Or prior are in other compilers? Including previous versions of G++? (These are not rhetorical questions; I really don't know.) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20103