------- 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