This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/61082] [x86-64 Itanium ABI] g++ uses wrong return location for class with head padding
- From: "greened at obbligato dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 07 May 2014 17:47:39 +0000
- Subject: [Bug c++/61082] [x86-64 Itanium ABI] g++ uses wrong return location for class with head padding
- Auto-submitted: auto-generated
- References: <bug-61082-4 at http dot gcc dot gnu dot org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61082
--- Comment #12 from David Greene <greened at obbligato dot org> ---
(In reply to H.J. Lu from comment #11)
> That is correct and Y is classified as INTEGER with 2 fields:
> NO_CLASS, INTEGER. The question is how NO_CLASS should be handled.
Since the "Returning of Values" section of 3.2.3 doesn't talk about aggregate
members, I assume that the entire type classification (INTEGER in this case)
should be used. That is the interpretation Intel seems to use.
The example given does talk about members so I can see how either
interpretation could be considered correct.
g++ appears to pass such an object in RDI only so it is at least consistent in
its pass/return processing.
Strangely, icc appears to pass Y in memory!