c++: Avoid bogus -Wunused with recent change
My change to make limit_bad_template_recursion avoid instantiating members of erroneous classes produced a bogus "used but not defined" warning for 23_containers/unordered_set/instantiation_neg.cc; it's not defined because we decided not to instantiate it. So we need to suppress that warning. gcc/cp/ChangeLog: * pt.c (limit_bad_template_recursion): Suppress -Wunused for decls we decide not to instantiate.
This commit is contained in:
parent
943c65c449
commit
5ec4990bc7
26
gcc/cp/pt.c
26
gcc/cp/pt.c
@ -10890,15 +10890,27 @@ limit_bad_template_recursion (tree decl)
|
||||
return false;
|
||||
|
||||
/* Avoid instantiating members of an ill-formed class. */
|
||||
if (DECL_CLASS_SCOPE_P (decl)
|
||||
&& CLASSTYPE_ERRONEOUS (DECL_CONTEXT (decl)))
|
||||
return true;
|
||||
bool refuse
|
||||
= (DECL_CLASS_SCOPE_P (decl)
|
||||
&& CLASSTYPE_ERRONEOUS (DECL_CONTEXT (decl)));
|
||||
|
||||
for (; lev; lev = lev->next)
|
||||
if (neglectable_inst_p (lev->maybe_get_node ()))
|
||||
break;
|
||||
if (!refuse)
|
||||
{
|
||||
for (; lev; lev = lev->next)
|
||||
if (neglectable_inst_p (lev->maybe_get_node ()))
|
||||
break;
|
||||
refuse = (lev && errs > lev->errors);
|
||||
}
|
||||
|
||||
return (lev && errs > lev->errors);
|
||||
if (refuse)
|
||||
{
|
||||
/* Don't warn about it not being defined. */
|
||||
suppress_warning (decl, OPT_Wunused);
|
||||
tree clone;
|
||||
FOR_EACH_CLONE (clone, decl)
|
||||
suppress_warning (clone, OPT_Wunused);
|
||||
}
|
||||
return refuse;
|
||||
}
|
||||
|
||||
static int tinst_depth;
|
||||
|
Loading…
x
Reference in New Issue
Block a user