aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/cvt.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2019-05-13 17:32:14 -0400
committerJason Merrill <jason@gcc.gnu.org>2019-05-13 17:32:14 -0400
commitcd9cf97bbfdc3b810b408a98cf79e629929dd5f6 (patch)
treead29085374ce1ed3f494aa80948476a83beb44b7 /gcc/cp/cvt.c
parent93ee143d1888051fbf3156212accc154af3a667b (diff)
downloadgcc-cd9cf97bbfdc3b810b408a98cf79e629929dd5f6.zip
gcc-cd9cf97bbfdc3b810b408a98cf79e629929dd5f6.tar.gz
gcc-cd9cf97bbfdc3b810b408a98cf79e629929dd5f6.tar.bz2
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
Diffstat (limited to 'gcc/cp/cvt.c')
-rw-r--r--gcc/cp/cvt.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index b63a9ff..3d40927 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -562,10 +562,9 @@ force_rvalue (tree expr, tsubst_flags_t complain)
tree type = TREE_TYPE (expr);
if (MAYBE_CLASS_TYPE_P (type) && TREE_CODE (expr) != TARGET_EXPR)
{
- vec<tree, va_gc> *args = make_tree_vector_single (expr);
+ releasing_vec args (make_tree_vector_single (expr));
expr = build_special_member_call (NULL_TREE, complete_ctor_identifier,
&args, type, LOOKUP_NORMAL, complain);
- release_tree_vector (args);
expr = build_cplus_new (type, expr, complain);
}
else
@@ -925,12 +924,11 @@ ocp_convert (tree type, tree expr, int convtype, int flags,
ctor = build_user_type_conversion (type, ctor, flags, complain);
else
{
- vec<tree, va_gc> *ctor_vec = make_tree_vector_single (ctor);
+ releasing_vec ctor_vec (make_tree_vector_single (ctor));
ctor = build_special_member_call (NULL_TREE,
complete_ctor_identifier,
&ctor_vec,
type, flags, complain);
- release_tree_vector (ctor_vec);
}
if (ctor)
return build_cplus_new (type, ctor, complain);