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

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

https://gcc.gnu.org/g:815baade9a07d361b1daa1dcfbbda2a79f3ebb52

commit r11-4538-g815baade9a07d361b1daa1dcfbbda2a79f3ebb52
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Thu Oct 29 16:27:01 2020 +0100

    c++: Diagnose constexpr delete [] new int; and delete new int[N]; [PR95808]

    This patch diagnoses delete [] new int; and delete new int[1]; in constexpr
    contexts by remembering
    IDENTIFIER_OVL_OP_FLAGS (DECL_NAME (fun)) & OVL_OP_FLAG_VEC
    from the operator new and checking it at operator delete time.

    2020-10-29  Jakub Jelinek  <ja...@redhat.com>

            PR c++/95808
            * cp-tree.h (enum cp_tree_index): Add
CPTI_HEAP_VEC_UNINIT_IDENTIFIER
            and CPTI_HEAP_VEC_IDENTIFIER.
            (heap_vec_uninit_identifier, heap_vec_identifier): Define.
            * decl.c (initialize_predefined_identifiers): Initialize those
            identifiers.
            * constexpr.c (cxx_eval_call_expression): Reject array allocations
            deallocated with non-array deallocation or non-array allocations
            deallocated with array deallocation.
            (non_const_var_error): Handle heap_vec_uninit_identifier and
            heap_vec_identifier too.
            (cxx_eval_constant_expression): Handle also
heap_vec_uninit_identifier
            and in that case during initialization replace it with
            heap_vec_identifier.
            (find_heap_var_refs): Handle heap_vec_uninit_identifier and
            heap_vec_identifier too.

            * g++.dg/cpp2a/constexpr-new15.C: New test.

Reply via email to