re PR c++/24260 (stdcall attribute is ignored at static member template functions)

PR c++/24260
	* parser.c (cp_parser_init_declarator): Pass attributes to
	grokfield.
	PR c++/24260
	* g++.dg/ext/tmplattr1.C: New test.

From-SVN: r105746
This commit is contained in:
Mark Mitchell 2005-10-21 16:03:47 +00:00 committed by Mark Mitchell
parent 8fafe21dc2
commit d08fd9d6a3
4 changed files with 36 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2005-10-21 Mark Mitchell <mark@codesourcery.com>
PR c++/24260
* parser.c (cp_parser_init_declarator): Pass attributes to
grokfield.
2005-10-20 Mark Mitchell <mark@codesourcery.com>
PR c++/22618

View File

@ -10938,7 +10938,7 @@ cp_parser_init_declarator (cp_parser* parser,
}
decl = grokfield (declarator, decl_specifiers,
initializer, /*asmspec=*/NULL_TREE,
/*attributes=*/NULL_TREE);
prefix_attributes);
if (decl && TREE_CODE (decl) == FUNCTION_DECL)
cp_parser_save_default_args (parser, decl);
}

View File

@ -1,3 +1,8 @@
2005-10-21 Mark Mitchell <mark@codesourcery.com>
PR c++/24260
* g++.dg/ext/tmplattr1.C: New test.
2005-10-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24440

View File

@ -0,0 +1,24 @@
// PR c++/24260
// { dg-do compile { target i?86-*-* x86_64-*-* } }
// { dg-require-effective-target ilp32 }
#define stdcall __attribute__((stdcall))
struct T {
template <class S>
static int stdcall func(int arg1, int arg2);
};
template <class S>
int stdcall T::func(int arg1, int arg2)
{
return arg1+arg2;
}
struct dummy {};
void xx()
{
int (stdcall *ptr2)(int,int) = &T::func<dummy>;
}