re PR c++/20212 (attribute unused vs. member function template)

PR c++/20212
	* pt.c (regenerate_decl_from_template): Copy attributes for
	parameters from the pattern to the instantiation.

	PR c++/20212
	* g++.dg/warn/Wunused-11.C: New test.

From-SVN: r97726
This commit is contained in:
Mark Mitchell 2005-04-06 15:55:00 +00:00 committed by Mark Mitchell
parent 20bc438ce9
commit b17bba6d24
4 changed files with 29 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2005-04-06 Mark Mitchell <mark@codesourcery.com>
PR c++/20212
* pt.c (regenerate_decl_from_template): Copy attributes for
parameters from the pattern to the instantiation.
2005-04-05 Mark Mitchell <mark@codesourcery.com>
PR c++/20734

View File

@ -11190,6 +11190,7 @@ regenerate_decl_from_template (tree decl, tree tmpl)
while (decl_parm)
{
tree parm_type;
tree attributes;
if (DECL_NAME (decl_parm) != DECL_NAME (pattern_parm))
DECL_NAME (decl_parm) = DECL_NAME (pattern_parm);
@ -11198,6 +11199,12 @@ regenerate_decl_from_template (tree decl, tree tmpl)
parm_type = type_decays_to (parm_type);
if (!same_type_p (TREE_TYPE (decl_parm), parm_type))
TREE_TYPE (decl_parm) = parm_type;
attributes = DECL_ATTRIBUTES (pattern_parm);
if (DECL_ATTRIBUTES (decl_parm) != attributes)
{
DECL_ATTRIBUTES (decl_parm) = attributes;
cplus_decl_attributes (&decl_parm, attributes, /*flags=*/0);
}
decl_parm = TREE_CHAIN (decl_parm);
pattern_parm = TREE_CHAIN (pattern_parm);
}

View File

@ -1,3 +1,8 @@
2005-04-06 Mark Mitchell <mark@codesourcery.com>
PR c++/20212
* g++.dg/warn/Wunused-11.C: New test.
2005-04-06 Bernd Schmidt <bernd.schmidt@analog.com>
* gcc.c-torture/execute/20020720-1.x: Disable on bfin*-*.

View File

@ -0,0 +1,11 @@
// PR c++/20212
// { dg-options "-O2 -Wunused -Wextra" }
template<int> void f(int);
void g(int i)
{
f<0>(i);
}
template<int> void f(int i __attribute__((unused)) )
{}