c++: Set CALL_FROM_NEW_OR_DELETE_P on more calls.
authorJason Merrill <jason@redhat.com>
Fri, 2 Oct 2020 07:00:49 +0000 (09:00 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 2 Oct 2020 09:22:20 +0000 (11:22 +0200)
commit4f4ced28826ece7b7b76649522ee2a9601a63b90
tree4fe85bc7a6d70681537bfe2d93b32fbd39ad5a8c
parent0b945f959f03a6185a3130f30bfd524d01d4142c
c++: Set CALL_FROM_NEW_OR_DELETE_P on more calls.

We were failing to set the flag on a delete call in a new expression, in a
deleting destructor, and in a coroutine.  Fixed by setting it in the
function that builds the call.

2020-10-02  Jason Merril  <jason@redhat.com>

gcc/cp/ChangeLog:
* call.c (build_operator_new_call): Set CALL_FROM_NEW_OR_DELETE_P.
(build_op_delete_call): Likewise.
* init.c (build_new_1, build_vec_delete_1, build_delete): Not here.
(build_delete):

gcc/ChangeLog:
* gimple.h (gimple_call_operator_delete_p): Rename from
gimple_call_replaceable_operator_delete_p.
* gimple.c (gimple_call_operator_delete_p): Likewise.
* tree.h (DECL_IS_REPLACEABLE_OPERATOR_DELETE_P): Remove.
* tree-ssa-dce.c (mark_all_reaching_defs_necessary_1): Adjust.
(propagate_necessity): Likewise.
(eliminate_unnecessary_stmts): Likewise.
* tree-ssa-structalias.c (find_func_aliases_for_call): Likewise.

gcc/testsuite/ChangeLog:
* g++.dg/pr94314.C: new/delete no longer omitted.
gcc/cp/call.c
gcc/cp/init.c
gcc/gimple.c
gcc/gimple.h
gcc/testsuite/g++.dg/pr94314.C
gcc/tree-ssa-dce.c
gcc/tree-ssa-structalias.c
gcc/tree.h