This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Remove also 2nd argument for unused delete operator (PR tree-optimization/91270).


On Tue, Jul 30, 2019 at 10:07 AM Martin Liška <mliska@suse.cz> wrote:
>
> On 7/30/19 9:46 AM, Martin Liška wrote:
> > Anyway that's not a candidate for DCE. I'm testing following patch.
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> One alternative approach can be to drop DECL_SET_IS_OPERATOR_DELETE in:
> cat -n gcc/cp/decl.c | less
> ...
>   4410          deltype = cp_build_type_attribute_variant (deltype, extvisattr);
>   4411          deltype = build_exception_variant (deltype, empty_except_spec);
>   4412          opdel = push_cp_library_fn (DELETE_EXPR, deltype, ECF_NOTHROW);
>   4413          DECL_SET_IS_OPERATOR_DELETE (opdel, true);
>   4414          opdel = push_cp_library_fn (VEC_DELETE_EXPR, deltype, ECF_NOTHROW);
>   4415          DECL_SET_IS_OPERATOR_DELETE (opdel, true);
>   4416
>   4417          if (flag_sized_deallocation)
>   4418            {
>   4419              /* operator delete (void *, size_t, align_val_t); */
>   4420              deltype = build_function_type_list (void_type_node, ptr_type_node,
>   4421                                                  size_type_node, align_type_node,
>   4422                                                  NULL_TREE);
>   4423              deltype = cp_build_type_attribute_variant (deltype, extvisattr);
>   4424              deltype = build_exception_variant (deltype, empty_except_spec);
>   4425              opdel = push_cp_library_fn (DELETE_EXPR, deltype, ECF_NOTHROW);
>   4426              DECL_SET_IS_OPERATOR_DELETE (opdel, true);
>   4427              opdel = push_cp_library_fn (VEC_DELETE_EXPR, deltype, ECF_NOTHROW);
>   4428              DECL_SET_IS_OPERATOR_DELETE (opdel, true);
>   4429            }
>   4430        }
>
> at lines 4426 and 4428.
>
> Richi what do you prefer?

I don't understand why a "not simple" delete operator isn't fine to be
DCEd?  Does C++
somehow allow mismatching size specifications here?  And what's the semantics
then?

Thus I'd rather go with your earlier patch to mark the op necessary.

Richard.

> Martin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]