On 06/24/2015 11:12 PM, Aldy Hernandez wrote:
The problem here is that we are trying to call
dwarf2out_late_global_decl() on a static variable in a template which
has a type of TEMPLATE_TYPE_PARM:
template <typename T> class A
{
static __thread T a;
};
We are calling late_global_decl because we are about to remove the
unused static from the symbol table:
The problem here is that 'a' should never have been in the symbol table
in the first place, since it's an uninstantiated template. It's there
because of honza's change to store the TLS model in the symbol table, so
TLS templates end up with varpool entries that, of course, will never be
referenced.
I guess either we need to avoid putting these templates in the symbol
table or we need to mark these fake entries somehow.
Jason