From 8f80cbdb26ca754ff3b6fe6c735eca6dd01401fa Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Thu, 31 Mar 2016 16:18:27 +0000 Subject: decl.c (start_preparsed_function): Remove unnecessary bracing. * decl.c (start_preparsed_function): Remove unnecessary bracing. (finish_destructor_body): Don't emit operator delete here. From-SVN: r234640 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/decl.c | 33 +-------------------------------- 2 files changed, 6 insertions(+), 32 deletions(-) (limited to 'gcc') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4a6dc51..d457acc 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,10 @@ 2016-03-31 Nathan Sidwell + * decl.c (start_preparsed_function): Remove unnecessary bracing. + (finish_destructor_body): Don't emit operator delete here. + +2016-03-31 Nathan Sidwell + PR c++/70393 * constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR elements in field order. diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 4730093..a6c5855 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -14170,9 +14170,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags) if (DECL_DESTRUCTOR_P (decl1) || (DECL_CONSTRUCTOR_P (decl1) && targetm.cxx.cdtor_returns_this ())) - { - cdtor_label = create_artificial_label (input_location); - } + cdtor_label = create_artificial_label (input_location); start_fname_decls (); @@ -14428,35 +14426,6 @@ finish_destructor_body (void) and member cleanups will be run when the function returns. */ add_stmt (build_stmt (input_location, LABEL_EXPR, cdtor_label)); - /* In a virtual destructor, we must call delete. */ - if (DECL_VIRTUAL_P (current_function_decl)) - { - tree if_stmt; - tree virtual_size = cxx_sizeof (current_class_type); - - /* [class.dtor] - - At the point of definition of a virtual destructor (including - an implicit definition), non-placement operator delete shall - be looked up in the scope of the destructor's class and if - found shall be accessible and unambiguous. */ - exprstmt = build_op_delete_call (DELETE_EXPR, current_class_ptr, - virtual_size, - /*global_p=*/false, - /*placement=*/NULL_TREE, - /*alloc_fn=*/NULL_TREE, - tf_warning_or_error); - - if_stmt = begin_if_stmt (); - finish_if_stmt_cond (build2 (BIT_AND_EXPR, integer_type_node, - current_in_charge_parm, - integer_one_node), - if_stmt); - finish_expr_stmt (exprstmt); - finish_then_clause (if_stmt); - finish_if_stmt (if_stmt); - } - if (targetm.cxx.cdtor_returns_this ()) { tree val; -- cgit v1.1