From: Volker Reichelt Date: Fri, 25 Nov 2005 14:59:09 +0000 (+0000) Subject: re PR c++/9278 (Illegal use of typedef to "void") X-Git-Tag: releases/gcc-4.2.0~5753 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7e531924324c744fd5bce4aef999ad99fbc8f61;p=thirdparty%2Fgcc.git re PR c++/9278 (Illegal use of typedef to "void") PR c++/9278 * decl.c (grokparms): Do not allow typedef-names in a '(void)' parmlist. * g++.dg/other/void1.C: New test. From-SVN: r107508 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d97fe45359ec..5e5df9b45726 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2005-11-25 Volker Reichelt + + PR c++/9278 + * decl.c (grokparms): Do not allow typedef-names in a '(void)' + parmlist. + 2005-11-25 Volker Reichelt * typeck2.c (process_init_constructor_union): Remove check for diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index d87983c1cb9f..dec134a1fde5 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8598,6 +8598,7 @@ grokparms (cp_parameter_declarator *first_parm, tree *parms) if (VOID_TYPE_P (type)) { if (same_type_p (type, void_type_node) + && DECL_SELF_REFERENCE_P (type) && !DECL_NAME (decl) && !result && !parm->next && !ellipsis) /* this is a parmlist of `(void)', which is ok. */ break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 10263032a91e..35d0b51b3bd8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-11-25 Volker Reichelt + + PR c++/9278 + * g++.dg/other/void1.C: New test. + 2005-11-25 Joseph S. Myers PR middle-end/24998 diff --git a/gcc/testsuite/g++.dg/other/void1.C b/gcc/testsuite/g++.dg/other/void1.C new file mode 100644 index 000000000000..691e6f7824e9 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/void1.C @@ -0,0 +1,16 @@ +// PR c++/9278 +// { dg-do compile } + +typedef void VOID; + +int foo(void); +int bar(VOID); // { dg-error "type|invalid use" } + +template int foo(void); +template int bar(VOID); // { dg-error "type|invalid use" } + +struct A +{ + int foo(void); + int bar(VOID); // { dg-error "type|invalid use" } +};