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

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

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

commit r11-8495-gee3edeb01eca1cc8d7ebe777b4adb333f0c1118a
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