[LLVMdev] Explicit template instantiations in libc++
Justin Bogner
mail at justinbogner.com
Tue Aug 12 14:17:19 PDT 2014
Most of libc++ doesn't have explicit template instantiations, which
leads to a pretty significant build time and code size cost when using
libc++, since a large number of common templates will be emitted by the
compiler and coalesced by the linker. Notably, in include/__config, we
have:
#ifndef _LIBCPP_EXTERN_TEMPLATE
#define _LIBCPP_EXTERN_TEMPLATE(...)
#endif
whereas before r189601 this was:
#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
This was apparently done to fix http://llvm.org/bugs/show_bug.cgi?id=17027,
but disabling explicit instantiations seems like a pretty big hammer
considering the drawbacks.
I'd like to restore these instantiations. Any thoughts on how to handle
things like pr17027 in a less heavy handed way?
More information about the llvm-dev
mailing list