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

Reply via email to