init.c (init_init_processing): Remove BI* handling.

* init.c (init_init_processing): Remove BI* handling.
	(build_builtin_call): Remove.
	(build_builtin_delete_call): New fn.
	(build_delete): Use it.

From-SVN: r21514
This commit is contained in:
Jason Merrill 1998-08-01 02:36:54 +00:00 committed by Jason Merrill
parent acb26b31f9
commit c787dd82d5
2 changed files with 18 additions and 30 deletions

View file

@ -1,3 +1,10 @@
1998-08-01 Jason Merrill <jason@yorick.cygnus.com>
* init.c (init_init_processing): Remove BI* handling.
(build_builtin_call): Remove.
(build_builtin_delete_call): New fn.
(build_delete): Use it.
1998-07-31 Mark Mitchell <mark@markmitchell.com>
* cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): New macro.

View file

@ -55,7 +55,7 @@ static tree build_vec_delete_1 PROTO((tree, tree, tree, tree, tree,
int));
static void perform_member_init PROTO((tree, tree, tree, int));
static void sort_base_init PROTO((tree, tree *, tree *));
static tree build_builtin_call PROTO((tree, tree, tree));
static tree build_builtin_delete_call PROTO((tree));
static tree build_array_eh_cleanup PROTO((tree, tree, tree));
static int member_init_ok_or_else PROTO((tree, tree, char *));
static void expand_virtual_init PROTO((tree, tree));
@ -63,9 +63,6 @@ static tree sort_member_init PROTO((tree));
static tree build_partial_cleanup_for PROTO((tree));
static tree initializing_context PROTO((tree));
/* Cache _builtin_new and _builtin_delete exprs. */
static tree BIN, BID, BIVN, BIVD;
/* Cache the identifier nodes for the magic field of a new cookie. */
static tree nc_nelts_field_id;
@ -80,15 +77,6 @@ void init_init_processing ()
{
tree fields[1];
/* Define implicit `operator new' and `operator delete' functions. */
BIN = default_conversion (get_first_fn (IDENTIFIER_GLOBAL_VALUE (ansi_opname[(int) NEW_EXPR])));
TREE_USED (TREE_OPERAND (BIN, 0)) = 0;
BID = default_conversion (get_first_fn (IDENTIFIER_GLOBAL_VALUE (ansi_opname[(int) DELETE_EXPR])));
TREE_USED (TREE_OPERAND (BID, 0)) = 0;
BIVN = default_conversion (get_first_fn (IDENTIFIER_GLOBAL_VALUE (ansi_opname[(int) VEC_NEW_EXPR])));
TREE_USED (TREE_OPERAND (BIVN, 0)) = 0;
BIVD = default_conversion (get_first_fn (IDENTIFIER_GLOBAL_VALUE (ansi_opname[(int) VEC_DELETE_EXPR])));
TREE_USED (TREE_OPERAND (BIVD, 0)) = 0;
minus_one = build_int_2 (-1, -1);
/* Define the structure that holds header information for
@ -1929,20 +1917,16 @@ decl_constant_value (decl)
/* Common subroutines of build_new and build_vec_delete. */
/* Common interface for calling "builtin" functions that are not
really builtin. */
/* Call the global __builtin_delete to delete ADDR. */
static tree
build_builtin_call (type, node, arglist)
tree type;
tree node;
tree arglist;
build_builtin_delete_call (addr)
tree addr;
{
tree rval = build (CALL_EXPR, type, node, arglist, NULL_TREE);
TREE_SIDE_EFFECTS (rval) = 1;
assemble_external (TREE_OPERAND (node, 0));
TREE_USED (TREE_OPERAND (node, 0)) = 1;
return rval;
tree BID = get_first_fn
(IDENTIFIER_GLOBAL_VALUE (ansi_opname[(int) DELETE_EXPR]));
return build_call (BID, void_type_node, build_expr_list (NULL_TREE, addr));
}
/* Generate a C++ "new" expression. DECL is either a TREE_LIST
@ -2983,8 +2967,7 @@ build_delete (type, addr, auto_delete, flags, use_global_delete)
if (! IS_AGGR_TYPE (type))
{
/* Call the builtin operator delete. */
return build_builtin_call (void_type_node, BID,
build_expr_list (NULL_TREE, addr));
return build_builtin_delete_call (addr);
}
if (TREE_SIDE_EFFECTS (addr))
addr = save_expr (addr);
@ -3050,8 +3033,7 @@ build_delete (type, addr, auto_delete, flags, use_global_delete)
{
tree cond = fold (build (BIT_AND_EXPR, integer_type_node,
auto_delete, integer_one_node));
tree call = build_builtin_call
(void_type_node, BID, build_expr_list (NULL_TREE, addr));
tree call = build_builtin_delete_call (addr);
cond = fold (build (COND_EXPR, void_type_node, cond,
call, void_zero_node));
@ -3103,8 +3085,7 @@ build_delete (type, addr, auto_delete, flags, use_global_delete)
{
cond = build (COND_EXPR, void_type_node,
build (BIT_AND_EXPR, integer_type_node, auto_delete, integer_one_node),
build_builtin_call (void_type_node, BID,
build_expr_list (NULL_TREE, addr)),
build_builtin_delete_call (addr),
void_zero_node);
}
else