[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