m3-sys/m3cc/gcc-4.5/gcc/c-common.c
/* Finish up the current bindings, adding them into the current function's
   statement tree.  This must be done _before_ finish_stmt_tree is called.
   If there is no current function, we must be at file scope and no statements
   are involved. Pop the previous bindings.  */
Finish up the current bindings, adding them into the current function's
statement tree.  This must be done _before_ finish_stmt_tree is called.
If there is no current function, we must be at file scope and no statements
are involved. Pop the previous bindings.
Finish up the current bindings adding them into the current function ' s statement tree . This must be done _before_ finish_stmt_tree is called . If there is no current function we must be at file scope and no statements are involved . Pop the previous bindings .
void
finish_fname_decls (void)
{
  unsigned ix;
  tree stmts = NULL_TREE;
  tree stack = saved_function_name_decls;
  for (; stack && TREE_VALUE (stack); stack = TREE_CHAIN (stack))
    append_to_statement_list (TREE_VALUE (stack), &stmts);
  if (stmts)
    {
      tree *bodyp = &DECL_SAVED_TREE (current_function_decl);
      if (TREE_CODE (*bodyp) == BIND_EXPR)
	bodyp = &BIND_EXPR_BODY (*bodyp);
      append_to_statement_list_force (*bodyp, &stmts);
      *bodyp = stmts;
    }
  for (ix = 0; fname_vars[ix].decl; ix++)
    *fname_vars[ix].decl = NULL_TREE;
  if (stack)
    {
      tree saved;
      for (saved = TREE_PURPOSE (stack); saved; saved = TREE_CHAIN (saved))
	{
	  tree decl = TREE_PURPOSE (saved);
	  unsigned ix = TREE_INT_CST_LOW (TREE_VALUE (saved));
	  *fname_vars[ix].decl = decl;
	}
      stack = TREE_CHAIN (stack);
    }
  saved_function_name_decls = stack;
}
void finish_fname_decls ( void ) { unsigned ix ; tree stmts = NULL_TREE ; tree stack = saved_function_name_decls ; for ( ; stack && TREE_VALUE ( stack ) ; stack = TREE_CHAIN ( stack ) ) append_to_statement_list ( TREE_VALUE ( stack ) , & stmts ) ; if ( stmts ) { tree * bodyp = & DECL_SAVED_TREE ( current_function_decl ) ; if ( TREE_CODE ( * bodyp ) == BIND_EXPR ) bodyp = & BIND_EXPR_BODY ( * bodyp ) ; append_to_statement_list_force ( * bodyp , & stmts ) ; * bodyp = stmts ; } for ( ix = 0 ; fname_vars [ ix ] . decl ; ix ++ ) * fname_vars [ ix ] . decl = NULL_TREE ; if ( stack ) { tree saved ; for ( saved = TREE_PURPOSE ( stack ) ; saved ; saved = TREE_CHAIN ( saved ) ) { tree decl = TREE_PURPOSE ( saved ) ; unsigned ix = TREE_INT_CST_LOW ( TREE_VALUE ( saved ) ) ; * fname_vars [ ix ] . decl = decl ; } stack = TREE_CHAIN ( stack ) ; } saved_function_name_decls = stack ; }
Finish up the current bindings, adding them into the current function's
statement tree.
Finish up the current bindings adding them into the current function ' s statement tree .
/* We had saved values, restore them.  */