[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cfe-commits
Subject:    Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
From:       Florian Weimer via cfe-commits <cfe-commits () lists ! llvm ! org>
Date:       2016-02-07 19:31:27
Message-ID: 87d1s8wc4w.fsf () mid ! deneb ! enyo ! de
[Download RAW message or body]

* H. J. Lu:

> I am proposing to update Intel386, x86-64 and IA MCU psABIs to specify
> how to pass/return empty struct:
>
> 1. "collection".  A collection is a structure, union or C++ class.
> 2. "empty collection".  An empty collection is:
>    a. A collection without member.  Or
>    b. A collection with only empty collections.  Or
>    c. An array of empty collections.
> 3. "empty record".  An empty record is Plain Old Data (POD) for the purpose
>    of layout and
>    a. A collection without member.  Or
>    b. A collection with only empty collections.
> 4. No memory slot nor register should be used to pass or return an object of
> empty collection.

"Aggregate" may be the more standard term instead of collection.

I think you mean "empty record" under 4.

Any syntactical array argument (at the C level) is should be passed as
a pointer.  The language appears to change that.

For 2., static members and non-data members do not count.

Does the definition of POD vary between C++ standards?  Then the
calling convention would vary as well, which is probably not what we
want.

How do existing C++ compilers implement empty array members (an
extension)?  Does the type of such members affect whether a class is a
standard-layout class?

Florian
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic