summaryrefslogtreecommitdiffstats
path: root/gcc/c-parse.in
diff options
context:
space:
mode:
authorzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>2003-07-29 23:58:08 +0000
committerzack <zack@138bc75d-0d04-0410-961f-82ee72b054a4>2003-07-29 23:58:08 +0000
commitf74be9a1ecc06aa54a1c165b151ba307d8d86452 (patch)
treefc99c4938074bab89837359b94d5e2bac42be0ed /gcc/c-parse.in
parentddf4604f819bef7998a0849d258f0084775d7339 (diff)
downloadppe42-gcc-f74be9a1ecc06aa54a1c165b151ba307d8d86452.tar.gz
ppe42-gcc-f74be9a1ecc06aa54a1c165b151ba307d8d86452.zip
* c-decl.c (last_function_parm_vars, current_function_parm_vars):
New static variables. (struct c_scope): Add parms and warned_forward_parm_decls fields; remove parm_order. (storedecls, storetags): Delete. (poplevel): Also clear bindings on the parms chain. (pushdecl): Handle forward declarations of parameters, and chain PARM_DECLs on the parms list, not the names list. (lookup_name_current_level): Check for PARM_DECLs on the parms list too. (push_parm_decl): Don't update parm_order. (clear_parm_order): Rename mark_forward_parm_decls. Issue the warning, only once per parameter list, and set TREE_ASM_WRITTEN on the decls here. Then move the forward decls to the names list. (grokparms): Set last_function_parm_vars. (get_parm_info): Don't use gettags or getdecls. No need to extract non-parms from the parms list, or reorganize the parms list. Feed nonparms back in the TREE_TYPE of the list node returned. Issue only one error per parameter list for "void" appearing more than once in said parameter list. Collapse parmlist_tags_warning into this function to avoid double scan of tags list. (start_function): Set current_function_parm_vars. (store_parm_decls_newstyle): Bypass pushdecl, manipulate scope directly. Get non-parms from current_function_parm_vars; no need to extract them from the parms chain. Properly bind tags in the new scope. (store_parm_decls_oldstyle): No need to extract non-parameters from the parms chain, nor to store them back afterward. Move declaration to top of function, restructure code reordering DECL_ARGUMENTS. (store_parm_decls): No need to save and restore warn_shadow. * c-parse.in: Don't call parmlist_tags_warning nor clear_parm_order. Call mark_forward_parm_decls when forward parm decls are encountered. * c-tree.h: Prototype mark_forward_parm_decls; not clear_parm_order or parmlist_tags_warning. testsuite: * gcc.dg/struct-in-proto-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69945 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-parse.in')
-rw-r--r--gcc/c-parse.in12
1 files changed, 1 insertions, 11 deletions
diff --git a/gcc/c-parse.in b/gcc/c-parse.in
index 22b1531afa1..dfdd9abd22b 100644
--- a/gcc/c-parse.in
+++ b/gcc/c-parse.in
@@ -2478,24 +2478,16 @@ asm_clobbers:
parmlist:
maybe_attribute
{ pushlevel (0);
- clear_parm_order ();
declare_parm_level (); }
parmlist_1
{ $$ = $3;
- parmlist_tags_warning ();
poplevel (0, 0, 0); }
;
parmlist_1:
parmlist_2 ')'
| parms ';'
- { tree parm;
- if (pedantic)
- pedwarn ("ISO C forbids forward parameter declarations");
- /* Mark the forward decls as such. */
- for (parm = getdecls (); parm; parm = TREE_CHAIN (parm))
- TREE_ASM_WRITTEN (parm) = 1;
- clear_parm_order (); }
+ { mark_forward_parm_decls (); }
maybe_attribute
{ /* Dummy action so attributes are in known place
on parser stack. */ }
@@ -2600,11 +2592,9 @@ setspecs_fp:
parmlist_or_identifiers:
maybe_attribute
{ pushlevel (0);
- clear_parm_order ();
declare_parm_level (); }
parmlist_or_identifiers_1
{ $$ = $3;
- parmlist_tags_warning ();
poplevel (0, 0, 0); }
;
OpenPOWER on IntegriCloud