FreeBSD/contrib/gcc/cp/tree.c
/* Called from break_out_target_exprs via mapcar.  */
Called from break_out_target_exprs via mapcar.
Called from break_out_target_exprs via mapcar .
static tree
bot_manip (tree* tp, int* walk_subtrees, void* data)
{
  splay_tree target_remap = ((splay_tree) data);
  tree t = *tp;
  if (!TYPE_P (t) && TREE_CONSTANT (t))
    {
      *walk_subtrees = 0;
      return NULL_TREE;
    }
  if (TREE_CODE (t) == TARGET_EXPR)
    {
      tree u;
      if (TREE_CODE (TREE_OPERAND (t, 1)) == AGGR_INIT_EXPR)
	u = build_cplus_new
	  (TREE_TYPE (t), break_out_target_exprs (TREE_OPERAND (t, 1)));
      else
	u = build_target_expr_with_type
	  (break_out_target_exprs (TREE_OPERAND (t, 1)), TREE_TYPE (t));
      splay_tree_insert (target_remap,
			 (splay_tree_key) TREE_OPERAND (t, 0),
			 (splay_tree_value) TREE_OPERAND (u, 0));
      *tp = u;
      *walk_subtrees = 0;
      return NULL_TREE;
    }
  return copy_tree_r (tp, walk_subtrees, NULL);
}
static tree bot_manip ( tree * tp , int * walk_subtrees , void * data ) { splay_tree target_remap = ( ( splay_tree ) data ) ; tree t = * tp ; if ( ! TYPE_P ( t ) && TREE_CONSTANT ( t ) ) { * walk_subtrees = 0 ; return NULL_TREE ; } if ( TREE_CODE ( t ) == TARGET_EXPR ) { tree u ; if ( TREE_CODE ( TREE_OPERAND ( t , 1 ) ) == AGGR_INIT_EXPR ) u = build_cplus_new ( TREE_TYPE ( t ) , break_out_target_exprs ( TREE_OPERAND ( t , 1 ) ) ) ; else u = build_target_expr_with_type ( break_out_target_exprs ( TREE_OPERAND ( t , 1 ) ) , TREE_TYPE ( t ) ) ; splay_tree_insert ( target_remap , ( splay_tree_key ) TREE_OPERAND ( t , 0 ) , ( splay_tree_value ) TREE_OPERAND ( u , 0 ) ) ; * tp = u ; * walk_subtrees = 0 ; return NULL_TREE ; } return copy_tree_r ( tp , walk_subtrees , NULL ) ; }
Called from break_out_target_exprs via mapcar.
Called from break_out_target_exprs via mapcar .
/* There can't be any TARGET_EXPRs or their slot variables below
	 this point.  We used to check !TREE_SIDE_EFFECTS, but then we
	 failed to copy an ADDR_EXPR of the slot VAR_DECL.  */ /* Map the old variable to the new one.  */ /* Replace the old expression with the new version.  */ /* We don't have to go below this point; the recursive call to
	 break_out_target_exprs will have handled anything below this
	 point.  */ /* Make a copy of this node.  */