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
_______________________________________________
cxx-abi-dev mailing list
[email protected]
http://sourcerytools.com/cgi-bin/mailman/listinfo/cxx-abi-dev

Reply via email to