[LLVMdev] anchoring explicit template instantiations

Chris Lattner clattner at apple.com
Mon Dec 19 17:40:28 PST 2011

On Dec 10, 2011, at 5:20 PM, David Blaikie wrote:
>>> Thanks Chris, committed as r145578. I don't suppose you'll mind some
>>> similar commits as I encounter them?
>> Yep, please feel free.
> While you said this - given that I've now gone & fixed /every/
> violation of -Wweak-vtables across LLVM & Clang (apart from some llvm
> target tblgen problems - not sure how practical they are to fix. And
> gtest also fires this warning) I thought I should probably get at
> least a '*nod*' before I check this in.

Looks fine to me, please do.

> (also, I implemented this by adding private anchors, like my original
> version - this does actually have a difference at runtime, of course -
> since now each of these types has another entry in their vtable.

I think that's a perfectly fine cost :)

> Alternatively I could've used their destructors (but then they
> wouldn't be inline anymore - but probably most of them are called
> virtually anyway so their inline-ness doesn't matter). Also I had to
> add about 10 source files in total as implementation files for
> header-only cases that needed anchors)

Losing an inlined dtor would be a bigger cost.

> Also - do we have anywhere we could put standard flags that LLVM
> should successfully compile with? At least if clang is being used,
> perhaps? So we could add -Wweak-vtables -Werror for this case & add
> more as we deem it appropriate.

Makefile.rules is the right place, but we don't have great autoconf logic to detect what flags the host compiler supports (at least as far as I know).


More information about the llvm-dev mailing list