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:
Jason Merrill 2021-09-02 17:42:32 -04:00
parent 943c65c449
commit 5ec4990bc7

View File

@ -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;