[cxx-abi-dev] Discuss DFP mangling was(Re: [cxx-abi-dev] C++0x: mangling of char16_t and char32_t)
Dennis Handly
dhandly at cup.hp.com
Sat Sep 27 04:59:37 UTC 2008
>From: PremAnand M Rao <premanand.rao at hp.com>
>but here is the "fine tuned" document that Michael was referring to.
--------------060602000603020001050105
>Towards Common Vendor DFP Mangling
>The C++ Decimal FP TR allows an implementation to implement the C++
>Decimal FP class as a builtin type, provided the user cannot tell the
>difference.
>Calling convention interoperability
>DFP classes are standard layout types, so they are memcpy-able.
>In summary, they are memcpy-able and you can move them around registers.
>This means that if a class is a DFP, or a struct whose only member is a
>DFP type, they can all be passed in GPR and exchange data properly with
>other structs.
Unfortunately this isn't true for _Decimal32.
>C and C++ interoperability
>This is strictly not a C++ ABI issue. ...
>Since C does no mangling, it is not a mangling issue. But we can ask
>that if we have an extern C function with DFP type, then change the ABI
>to match C
>5. C++ class library and native interoperability
>It would seem it is possible for the C++ library to talk to the native
>type as long as there are no special copy constructor/assignment
>operator/destructors.
Due do an unrelated bug in our C99 _Decimal32 implementation, it logically
follows that we are hosed. Unless we special case the C++ version of
_Decimal32.
I.e. the ia64 C++ ABI and the C ABI say that builtin types are passed
right justified in a 64 bit register.
But structs/classes are left justified!!
And this causes problems with _Decimal32 but not _Decimal64 and _Decimal128.
More information about the cxx-abi-dev
mailing list