From: Joseph Myers Date: Mon, 31 Jul 2000 13:11:39 +0000 (-0600) Subject: c-decl.c (get_parm_info): Don't treat 'const void'... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bbe65572cd946b16ba8c429ade291c1feb13b9f2;p=gcc.git c-decl.c (get_parm_info): Don't treat 'const void'... * c-decl.c (get_parm_info): Don't treat 'const void', 'volatile void' or 'register void' as being the special case of 'void' alone in a parameter list. From-SVN: r35377 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a26fc32986d..38d73d9ab17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2000-07-31 Joseph S. Myers + * c-decl.c (get_parm_info): Don't treat 'const void', 'volatile + void' or 'register void' as being the special case of 'void' alone + in a parameter list. + * c-typeck.c (build_c_cast): Change -Wcast-qual pedwarn for discarding qualifiers into a plain warning. diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 5f69e36136f..34a8f4207a1 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -4985,10 +4985,18 @@ get_parm_info (void_at_end) tree new_parms = 0; tree order = current_binding_level->parm_order; - /* Just `void' (and no ellipsis) is special. There are really no parms. */ + /* Just `void' (and no ellipsis) is special. There are really no parms. + But if the `void' is qualified (by `const' or `volatile') or has a + storage class specifier (`register'), then the behavior is undefined; + by not counting it as the special case of `void' we will cause an + error later. Typedefs for `void' are OK (see DR#157). + */ if (void_at_end && parms != 0 && TREE_CHAIN (parms) == 0 && VOID_TYPE_P (TREE_TYPE (parms)) + && ! TREE_THIS_VOLATILE (parms) + && ! TREE_READONLY (parms) + && ! DECL_REGISTER (parms) && DECL_NAME (parms) == 0) { parms = NULL_TREE;