https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91859

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jason Merrill <ja...@gcc.gnu.org>:

https://gcc.gnu.org/g:cf2b7020ee8e9745ede527b0a3b2e0ffbafd492b

commit r12-1145-gcf2b7020ee8e9745ede527b0a3b2e0ffbafd492b
Author: Jason Merrill <ja...@redhat.com>
Date:   Fri May 28 17:05:23 2021 -0400

    c++: no clobber for C++20 destroying delete [PR91859]

    Before C++20 added destroying operator delete, by the time we called
    operator delete for a pointer, the object would already be gone.  But that
    isn't true for destroying delete.  Since the optimizers' assumptions about
    operator delete are based on either DECL_IS_REPLACEABLE_OPERATOR (which
    already is not set) or CALL_FROM_NEW_OR_DELETE_P, let's avoid setting the
    latter flag in this case.

            PR c++/91859

    gcc/ChangeLog:

            * tree.h (CALL_FROM_NEW_OR_DELETE_P): Adjust comment.

    gcc/cp/ChangeLog:

            * call.c (build_op_delete_call): Don't set
CALL_FROM_NEW_OR_DELETE_P
            for destroying delete.
            * init.c (build_delete): Don't clobber before destroying delete.

    gcc/testsuite/ChangeLog:

            * g++.dg/cpp2a/destroying-delete5.C: New test.

Reply via email to