FreeBSD/contrib/gcc/cp/parser.c
/**
 declare_block_prologue_local_byref_vars - utility routine to do the actual
 declaration and initialization for each __block referenced block variable.
 */
utility routine to do the actual
declaration and initialization for each __block referenced block variable.
utility routine to do the actual declaration and initialization for each __block referenced block variable .
static void
declare_block_prologue_local_byref_vars (tree self_parm, tree component,
					  tree stmt)
{
  tree decl, block_component;
  tree_stmt_iterator i;
  tree decl_stmt;
  decl = component;
  block_component = build_component_ref (build_indirect_ref (self_parm, "->"),
					  DECL_NAME (component));
  gcc_assert (block_component);
  DECL_EXTERNAL (decl) = 0;
  TREE_STATIC (decl) = 0;
  TREE_USED (decl) = 1;
  DECL_CONTEXT (decl) = current_function_decl;
  DECL_ARTIFICIAL (decl) = 1;
  DECL_INITIAL (decl) = block_component;
  i = tsi_start (stmt);
  decl_stmt = build_stmt (DECL_EXPR, decl);
  SET_EXPR_LOCATION (decl_stmt, DECL_SOURCE_LOCATION (decl));
  EXPR_LINENO (decl_stmt) =  DECL_SOURCE_LINE (decl) - 1;
  decl_stmt = build3 (BIND_EXPR, void_type_node, decl, decl_stmt, NULL);
  TREE_SIDE_EFFECTS (decl_stmt) = 1;
  tsi_link_before (&i, decl_stmt, TSI_SAME_STMT);  
}
static void declare_block_prologue_local_byref_vars ( tree self_parm , tree component , tree stmt ) { tree decl , block_component ; tree_stmt_iterator i ; tree decl_stmt ; decl = component ; block_component = build_component_ref ( build_indirect_ref ( self_parm , " " ) , DECL_NAME ( component ) ) ; gcc_assert ( block_component ) ; DECL_EXTERNAL ( decl ) = 0 ; TREE_STATIC ( decl ) = 0 ; TREE_USED ( decl ) = 1 ; DECL_CONTEXT ( decl ) = current_function_decl ; DECL_ARTIFICIAL ( decl ) = 1 ; DECL_INITIAL ( decl ) = block_component ; i = tsi_start ( stmt ) ; decl_stmt = build_stmt ( DECL_EXPR , decl ) ; SET_EXPR_LOCATION ( decl_stmt , DECL_SOURCE_LOCATION ( decl ) ) ; EXPR_LINENO ( decl_stmt ) = DECL_SOURCE_LINE ( decl ) - 1 ; decl_stmt = build3 ( BIND_EXPR , void_type_node , decl , decl_stmt , NULL ) ; TREE_SIDE_EFFECTS ( decl_stmt ) = 1 ; tsi_link_before ( & i , decl_stmt , TSI_SAME_STMT ) ; }
declare_block_prologue_local_byref_vars - utility routine to do the actual
declaration and initialization for each __block referenced block variable.
declare_block_prologue_local_byref_vars - utility routine to do the actual declaration and initialization for each __block referenced block variable .
/* Prepend a DECL_EXPR statement to the statement list. */ /* APPLE LOCAL begin radar 6163705, Blocks prologues  */ /* Give the prologue statements a line number of one before the beginning of
     the function, to make them easily identifiable later.  */ /* APPLE LOCAL end radar 6163705, Blocks prologues  */