[PATCH] [ms-cxxabi] Elide dtor access checks for pass-by-val objects in callees

Richard Smith richard at metafoo.co.uk
Thu Jan 9 16:10:51 PST 2014


On Wed, Dec 18, 2013 at 7:09 PM, Reid Kleckner <rnk at google.com> wrote:

> I also don't like having to emit LLVM IR for this program:
>
> class A { ~A() {} };
> struct B : A { };
> void foo(B b) { }
>
> Any call to foo would be an error, but if we just turn off the access
> check, we'll generate code for B's deleted dtor, which is really, really
> weird.
>

We're still calling DiagnoseUseOfDecl, so we'll still reject this (in
C++11, where the dtor is deleted).


> On Wed, Dec 18, 2013 at 6:38 PM, David Majnemer <david.majnemer at gmail.com>wrote:
>
>> I don't think we should elide these checks.  This would lead us to behave
>> differently than MSVC inside of SFINAE contexts.
>>
>> Sent from my phone.
>>
>>
>> On Wednesday, December 18, 2013, Hans Wennborg wrote:
>>
>>>
>>>   The problem is that MarkFunctionReferenced does access checks as it
>>> marks functions as referenced. This makes perfect sense, except here when
>>> we want to be able to call the dtor but bypass the access check.
>>>
>>>   Richard: it would be interesting to hear your thoughts on this. Is the
>>> added plumbing of this boolean variable through the various functions an
>>> acceptable approach? Would it be ok to avoid that with some mechanism to
>>> "trap" access check errors (maybe a flag on Sema)? Or is it not worth the
>>> hassle to change this?
>>>
>>> http://llvm-reviews.chandlerc.com/D2409
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140109/c57ba5d3/attachment.html>


More information about the cfe-commits mailing list