This is the mail archive of the gcc@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: RFC: Update Intel386, x86-64 and IA MCU psABIs for passing/returning empty struct


On Mon, Feb 8, 2016 at 2:55 PM, Richard Smith <richard@metafoo.co.uk> wrote:
> On Mon, Feb 8, 2016 at 2:49 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Mon, Feb 8, 2016 at 2:42 PM, Richard Smith <richard@metafoo.co.uk> wrote:
>>> Do we really need an 'empty type' special case?
>>>
>>> The x86_64 psABI already seems clear that empty types with size <= 16
>>> are not passed at all. Following the algorithm in section 3.2.3, each
>>> eightbyte is classified as NO_CLASS, and thus is not passed. So the
>>> proposed change would only affect the behavior of types larger than 16
>>> bytes that contain no data. It doesn't seem worth breaking ABI to more
>>> efficiently pass those.
>>>
>>
>> Clang isn't consistent between ia32 and x86-64.  GCC isn't compatible
>> with clang.  My proposal will make GCC and clang compatible.  It also
>> makes GCC and clang behave the same on both ia32 and x86-64.
>
> OK, but if the ABI is already saying what we want, and the only
> problem is that GCC and Clang don't conform to the ABI in some cases,
> then we just need to fix the compilers and not the ABI. Which cases do
> we think the existing ABI rule misclassifies?

I want to make it explicit in psABIs to avoid any possible
confusion and x86-64 classification rules don't apply to ia32.


-- 
H.J.


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