[cxx-abi-dev] Uncallable constructor variants
Nathan Sidwell
nathan at codesourcery.com
Fri Apr 1 14:47:25 UTC 2016
On 04/01/16 10:36, Jason Merrill wrote:
> On 04/01/2016 10:33 AM, Nathan Sidwell wrote:
>> On 04/01/16 10:15, Jason Merrill wrote:
>>> The base object constructor can never be called for a final class, nor can the
>>> complete object constructor for an abstract one. Does anyone see an ABI problem
>>> with omitting these variants?
>>
>> Presumably the same applies to the corresponding destructors? (With any
>> deleting-dtor behaving the same as the complete-dtor)
>
> Yes, except that virtual complete/deleting destructors always need to be
> emitted, to satisfy vtable references.
They could behave as pure virtual, and have the vtable reference
__cxa_pure_virtual. Though that would be an ABI change, in that the vtable
emission might be in a different TU to the virtual destructor (non)-emitter.
I suppose the destructors could simply be jumps to __cxa_pure_virtual, without
perturbing the ABI. If the destructors are emitted in the same TU as the
vtable, an implementation would be free to reference __cxa_pure_virtual directly.
nathan
--
Nathan Sidwell
More information about the cxx-abi-dev
mailing list