[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