This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Matthijs van Duin <matthijsvanduin at gmail dot com>
- Cc: Richard Smith <richard at metafoo dot co dot uk>, Michael Matz <matz at suse dot de>, Jonathan Wakely <jwakely dot gcc at gmail dot com>, GCC Development <gcc at gcc dot gnu dot org>, cfe-commits <cfe-commits at lists dot llvm dot org>
- Date: Sat, 20 Feb 2016 11:34:16 -0800
- Subject: Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Authentication-results: sourceware.org; auth=none
- References: <CAMe9rOrsV-zohnj=31_DDYSxUDyRDYL0anTi_NJm5vqogF9URQ at mail dot gmail dot com> <CAMe9rOqQLZgEfMBDudAekW_DUDJbofx+bj-O753Brk4YrREa+w at mail dot gmail dot com> <CAOfiQqnyde8eJPsNi=WhmGexZawD9efzeRKX7xgCN39D39BZtg at mail dot gmail dot com> <CAMe9rOoZa7se3JGFy-LMfQETWYHKUXg_jpvcgGfxNvPw+23Byg at mail dot gmail dot com> <CAOfiQqnwP=7Kitkmjm_Vs-FqrD+ro6rOb=NjVBey3h-xJE+7ww at mail dot gmail dot com> <CAMe9rOr4rr1SRVXnkGoZD0Jf46w0TuQKiAVgHRg9nCd0PkV0hA at mail dot gmail dot com> <CAOfiQqmk-h6X1iC+jz70UCyGOAaXJ6f1nuEK64R9Zqir7B=WOA at mail dot gmail dot com> <CAMe9rOqfoW1hqF=nDKbDb3hPEmhb_3U4KMu8HKqoAmdt6_ofJA at mail dot gmail dot com> <CAOfiQq=MJXKNvWYkFsiO07J2Ovf5L-XPv9mNiV-1rY3uQEQFng at mail dot gmail dot com> <CAMe9rOpnxH2Ccz7L7G6U_GpoMT0UE+E82sRxSfjg-vQP3tTDUA at mail dot gmail dot com> <CAOfiQqmJE=9HZHyTu-n+FXzh9JiP3NBEFd_rKcUBPjNPcF=e_Q at mail dot gmail dot com> <CAMe9rOqvVg7fHzTT8g76-1NSD8F-2Qa1hRN5kV-vNPTTopxWPA at mail dot gmail dot com> <alpine dot LSU dot 2 dot 20 dot 1602181531140 dot 20277 at wotan dot suse dot de> <CAOfiQq=BnUC-uXcgNTNDXuLMfE9aRgNBvQ8zuPJN0WnPkCD8rw at mail dot gmail dot com> <alpine dot LSU dot 2 dot 20 dot 1602191344231 dot 20277 at wotan dot suse dot de> <CAOfiQqmYkZvq93OV14m7-f7pn5j+3o4RTOSuFuLM-s7n9MFwzg at mail dot gmail dot com> <CAMe9rOr7xd+xEOABzg60859zJk8oQC94g8SiMvXr5keh6X-TvQ at mail dot gmail dot com> <CAALWOA8s1HR4_YQ+W02U+_vX9Hqqu7dRpqU+jo0wtLEwGye9Yg at mail dot gmail dot com>
On Sat, Feb 20, 2016 at 10:50 AM, Matthijs van Duin
<matthijsvanduin@gmail.com> wrote:
> On 20 February 2016 at 18:55, H.J. Lu <hjl.tools@gmail.com> wrote:
>> struct dummy0
>> {
>> };
>>
>> struct dummy
>> {
>> dummy0 d[20];
>>
>> dummy0 * foo (int i);
>> };
>>
>> dummy0 *
>> dummy::foo (int i)
>> {
>> return &d[i];
>> }
>>
>> dummy0 *
>> bar (dummy d, int i)
>> {
>> return d.foo (i);
>> }
>
> 1. This has undefined behaviour due to returning a pointer to a local variable
> 2. There's still no need for the reference to the original argument
> since copying it is a nop.
Given:
An empty type is a type where it and all of its subobjects (recursively)
are of class, structure, union, or array type. No memory slot nor register
should be used to pass or return an object of empty type.
Footnote: Array of empty type can only passed by reference in C and C++.
Is there a class, which meets the above definition, with a member function
which can't be passed without a memory slot or a register?
--
H.J.
- References:
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct
- Re: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct