Skip to content

Update psABI to match Itanium C++ ABI fixes for passing class objects indirectly #6

@zygoloid

Description

@zygoloid

The Itanium C++ ABI was recently fixed to properly determine whether to pass objects of class type in registers in C++11 onwards, taking move constructors into account:

itanium-cxx-abi/cxx-abi@05fc233

Section 3.2.3 of the x86 psABI should be updated to take this into account. Or better, it should simply defer to the Itanium C++ ABI to determine how to pass C++ classes rather than trying to duplicate the specification.

Eg, something like:

If a C++ object has either a non-trivial copy constructor or a non-trivial destructor [Footnote] is non-trivial for the purpose of calls, as specified in the Itanium C++ ABI, it is passed by invisible reference (the object is replaced in the parameter list by a pointer that has class INTEGER)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions