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!