diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1998-08-01 02:36:54 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1998-07-31 22:36:54 -0400 |
commit | c787dd82d51b209f13b9ef4bfdb7fecc3007bdf7 (patch) | |
tree | a82170761c8550b0a4bd292476ddead8538dbde4 /gcc/cp | |
parent | acb26b31f9c80f163ab3b377fb25c1bf83eeac5b (diff) | |
download | gcc-c787dd82d51b209f13b9ef4bfdb7fecc3007bdf7.zip gcc-c787dd82d51b209f13b9ef4bfdb7fecc3007bdf7.tar.gz gcc-c787dd82d51b209f13b9ef4bfdb7fecc3007bdf7.tar.bz2 |
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
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/init.c | 41 |
2 files changed, 18 insertions, 30 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3feeaac..4b80666 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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. diff --git a/gcc/cp/init.c b/gcc/cp/init.c index 931d033..5975320 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -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 |