[patch] Don't let virtual calls and dynamic casts call MarkVTableUsed()

Reid Kleckner rnk at google.com
Tue Jan 13 11:24:42 PST 2015


On Tue, Jan 13, 2015 at 11:22 AM, Nico Weber <thakis at chromium.org> wrote:

> On Tue, Jan 13, 2015 at 11:11 AM, Reid Kleckner <rnk at google.com> wrote:
>
>> I'm concerned that if you don't mark the vtable used enough, then codegen
>> will crash trying to emit a vtable for a class that it assumed would be
>> marked used because it's compiling a virtual call to a method of such a
>> class. However, it looks like Rafael completely nuked the
>> available_externally vtable emission optimization in r189852, which I
>> forgot about. The vtable code still has lots of rigging to allow
>> available_externally vtable emission, though.
>>
>
> At the moment, the only thing in coding adding to the DeferredVTables
> vector in codegen is getAddrOfVTable(), and that's only called for structor
> body emission (and apple kext vcalls). So I think this should be fine.
>

Right, but we used to call it more, prior to PR13124 and r189852. I'm
reading that bug to see if it's something we want to add back.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150113/24ab7b2c/attachment.html>


More information about the cfe-commits mailing list