FreeBSD/contrib/gcc/c-decl.c
/* Store the parameter declarations into the current function declaration.
   This is called after parsing the parameter declarations, before
   digesting the body of the function.

   For an old-style definition, construct a prototype out of the old-style
   parameter declarations and inject it into the function's type.  */
Store the parameter declarations into the current function declaration.
This is called after parsing the parameter declarations, before
digesting the body of the function.

For an old-style definition, construct a prototype out of the old-style
parameter declarations and inject it into the function's type.
Store the parameter declarations into the current function declaration . This is called after parsing the parameter declarations before digesting the body of the function . For an old - style definition construct a prototype out of the old - style parameter declarations and inject it into the function ' s type .
void
store_parm_decls (void)
{
  tree fndecl = current_function_decl;
  bool proto;
  struct c_arg_info *arg_info = current_function_arg_info;
  current_function_arg_info = 0;
  proto = arg_info->types != 0;
  if (proto)
    store_parm_decls_newstyle (fndecl, arg_info);
  else
    store_parm_decls_oldstyle (fndecl, arg_info);
  next_is_function_body = true;
  gen_aux_info_record (fndecl, 1, 0, proto);
  allocate_struct_function (fndecl);
  DECL_SAVED_TREE (fndecl) = push_stmt_list ();
  {
    tree t;
    for (t = nreverse (get_pending_sizes ()); t ; t = TREE_CHAIN (t))
      add_stmt (TREE_VALUE (t));
  }
  cfun->x_dont_save_pending_sizes_p = 1;
}
void store_parm_decls ( void ) { tree fndecl = current_function_decl ; bool proto ; struct c_arg_info * arg_info = current_function_arg_info ; current_function_arg_info = 0 ; proto = arg_info -> types != 0 ; if ( proto ) store_parm_decls_newstyle ( fndecl , arg_info ) ; else store_parm_decls_oldstyle ( fndecl , arg_info ) ; next_is_function_body = true ; gen_aux_info_record ( fndecl , 1 , 0 , proto ) ; allocate_struct_function ( fndecl ) ; DECL_SAVED_TREE ( fndecl ) = push_stmt_list ( ) ; { tree t ; for ( t = nreverse ( get_pending_sizes ( ) ) ; t ; t = TREE_CHAIN ( t ) ) add_stmt ( TREE_VALUE ( t ) ) ; } cfun -> x_dont_save_pending_sizes_p = 1 ; }
Store the parameter declarations into the current function declaration.
Store the parameter declarations into the current function declaration .
/* The argument information block for FNDECL.  */ /* True if this definition is written with a prototype.  Note:
     despite C99 6.7.5.3p14, we can *not* treat an empty argument
     list in a function definition as equivalent to (void) -- an
     empty argument list specifies the function has no parameters,
     but only (void) sets up a prototype for future calls.  */ /* The next call to push_scope will be a function body.  */ /* Write a record describing this function definition to the prototypes
     file (if requested).  */ /* Initialize the RTL code for the function.  */ /* Begin the statement tree for this function.  */ /* ??? Insert the contents of the pending sizes list into the function
     to be evaluated.  The only reason left to have this is
	void foo(int n, int array[n++])
     because we throw away the array type in favor of a pointer type, and
     thus won't naturally see the SAVE_EXPR containing the increment.  All
     other pending sizes would be handled by gimplify_parameters.  */ /* Even though we're inside a function body, we still don't want to
     call expand_expr to calculate the size of a variable-sized array.
     We haven't necessarily assigned RTL to all variables yet, so it's
     not safe to try to expand expressions involving them.  */