From cd9cf97bbfdc3b810b408a98cf79e629929dd5f6 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 13 May 2019 17:32:14 -0400 Subject: Use releasing_vec more broadly. * cp-tree.h (struct releasing_vec): Replace get_ref method with operator&. (vec_safe_push, vec_safe_reserve, vec_safe_length, vec_safe_splice): Forwarding functions for releasing_vec. (release_tree_vector): Declare but don't define. * call.c (build_op_delete_call, build_temp, call_copy_ctor) (perform_direct_initialization_if_possible): Use releasing_vec. * constexpr.c (cxx_eval_vec_init_1, cxx_eval_store_expression): Likewise. * cp-gimplify.c (cp_fold): Likewise. * cvt.c (force_rvalue, ocp_convert): Likewise. * decl.c (get_tuple_decomp_init): Likewise. * except.c (build_throw): Likewise. * init.c (perform_member_init, expand_default_init): Likewise. * method.c (do_build_copy_assign, locate_fn_flags): Likewise. * parser.c (cp_parser_userdef_char_literal) (cp_parser_userdef_numeric_literal) (cp_parser_userdef_string_literal) (cp_parser_perform_range_for_lookup) (cp_parser_range_for_member_function, cp_parser_omp_for_loop) (cp_parser_omp_for_loop_init): Likewise. * pt.c (tsubst_copy_and_build, do_class_deduction): Likewise. * semantics.c (calculate_direct_bases, calculate_bases) (finish_omp_barrier, finish_omp_flush, finish_omp_taskwait) (finish_omp_taskyield, finish_omp_cancel) (finish_omp_cancellation_point): Likewise. * tree.c (build_vec_init_elt, strip_typedefs, strip_typedefs_expr) (build_min_non_dep_op_overload): Likewise. * typeck.c (build_function_call_vec, cp_build_function_call_nary) (cp_build_modify_expr): Likewise. * typeck2.c (build_functional_cast): Likewise. From-SVN: r271138 --- gcc/cp/method.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'gcc/cp/method.c') diff --git a/gcc/cp/method.c b/gcc/cp/method.c index 9ebc99e..31737d1 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -790,7 +790,6 @@ do_build_copy_assign (tree fndecl) BINFO_BASE_ITERATE (binfo, i, base_binfo); i++) { tree converted_parm; - vec *parmvec; /* We must convert PARM directly to the base class explicitly since the base class may be ambiguous. */ @@ -799,7 +798,7 @@ do_build_copy_assign (tree fndecl) if (move_p) converted_parm = move (converted_parm); /* Call the base class assignment operator. */ - parmvec = make_tree_vector_single (converted_parm); + releasing_vec parmvec (make_tree_vector_single (converted_parm)); finish_expr_stmt (build_special_member_call (current_class_ref, assign_op_identifier, @@ -807,7 +806,6 @@ do_build_copy_assign (tree fndecl) base_binfo, flags, tf_warning_or_error)); - release_tree_vector (parmvec); } /* Assign to each of the non-static data members. */ @@ -993,7 +991,6 @@ locate_fn_flags (tree type, tree name, tree argtype, int flags, tsubst_flags_t complain) { tree ob, fn, fns, binfo, rval; - vec *args; if (TYPE_P (type)) binfo = TYPE_BINFO (type); @@ -1004,7 +1001,7 @@ locate_fn_flags (tree type, tree name, tree argtype, int flags, } ob = build_stub_object (cp_build_reference_type (type, false)); - args = make_tree_vector (); + releasing_vec args; if (argtype) { if (TREE_CODE (argtype) == TREE_LIST) @@ -1027,7 +1024,6 @@ locate_fn_flags (tree type, tree name, tree argtype, int flags, fns = lookup_fnfields (binfo, name, 0); rval = build_new_method_call (ob, fns, &args, binfo, flags, &fn, complain); - release_tree_vector (args); if (fn && rval == error_mark_node) return rval; else -- cgit v1.1