On Tue, Dec 4, 2012 at 8:09 PM, Timur Iskhodzhanov <[email protected]> wrote:
>>> d) The complete/deleting dtor logic will change when we support MSVC
>>> dtor types, but not now
>>>    [shouldn't matter now that we still don't support virtual inheritance]
>>
>> You're thinking about complete vs. base destructors.  Complete vs. deleting
>> destructors isn't about virtual inheritance;  it's about whether the 
>> destructor
>> calls operator delete.
> Yeah, now I see it... [see below]
>
>> (This is important because the 'delete' operator uses
>> the operator delete from the most-derived class.)
>>
>> How does MSVC handle the difference between
>>   foo->~Foo(); // virtually dispatched but doesn't call operator delete
>> and
>>   delete foo; // virtually dispatched and calls operator delete
>> ?
> Clang with my patch behaves badly on such code.
> It seems to work fine at least on simple code where you don't use
> virtual destructors.
>
> Actually, the whole idea of base vs complete dtors doesn't apply to
> -cxx-abi microsoft.
> Anyways, had plans to work on ctor and dtor compatibility as a
> separate patch - is that OK?
> I've put a couple of more FIXME into the code for that. (in
> ::AddMethod and ::ComputeMethodVTableIndices).

Attached is the patch which is similar to bug_13231_2 but puts the
complete dtor rather than deleting.
Both are basically broken anyways but at least you can choose what you
think fits better :)
Investigating compatible dtor behavior is definitely on my TODO-soon
list now [as a separate change if this works]

Attachment: bug_13231_3.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to