FreeBSD/contrib/gcc/cp/tree.c
/* Like stabilize_expr, but for a call whose arguments we want to
   pre-evaluate.  CALL is modified in place to use the pre-evaluated
   arguments, while, upon return, *INITP contains an expression to
   compute the arguments.  */
Like stabilize_expr, but for a call whose arguments we want to
pre-evaluate.  CALL is modified in place to use the pre-evaluated
arguments, while, upon return, *INITP contains an expression to
compute the arguments.
Like stabilize_expr but for a call whose arguments we want to pre - evaluate . CALL is modified in place to use the pre - evaluated arguments while upon return * INITP contains an expression to compute the arguments .
void
stabilize_call (tree call, tree *initp)
{
  tree inits = NULL_TREE;
  tree t;
  if (call == error_mark_node)
    return;
  gcc_assert (TREE_CODE (call) == CALL_EXPR
	      || TREE_CODE (call) == AGGR_INIT_EXPR);
  for (t = TREE_OPERAND (call, 1); t; t = TREE_CHAIN (t))
    if (TREE_SIDE_EFFECTS (TREE_VALUE (t)))
      {
	tree init;
	TREE_VALUE (t) = stabilize_expr (TREE_VALUE (t), &init);
	inits = add_stmt_to_compound (inits, init);
      }
  *initp = inits;
}
void stabilize_call ( tree call , tree * initp ) { tree inits = NULL_TREE ; tree t ; if ( call == error_mark_node ) return ; gcc_assert ( TREE_CODE ( call ) == CALL_EXPR || TREE_CODE ( call ) == AGGR_INIT_EXPR ) ; for ( t = TREE_OPERAND ( call , 1 ) ; t ; t = TREE_CHAIN ( t ) ) if ( TREE_SIDE_EFFECTS ( TREE_VALUE ( t ) ) ) { tree init ; TREE_VALUE ( t ) = stabilize_expr ( TREE_VALUE ( t ) , & init ) ; inits = add_stmt_to_compound ( inits , init ) ; } * initp = inits ; }
Like stabilize_expr, but for a call whose arguments we want to
pre-evaluate.
Like stabilize_expr but for a call whose arguments we want to pre - evaluate .