This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PR c++/20103] failure to gimplify constructors for addressabletypes


Alexandre Oliva wrote:
On Mar 3, 2005, Andrew Pinski <pinskia@physics.uc.edu> 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.)

--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]