[Bug c++/94314] [10 Regression] Optimizing mismatched new/delete pairs since r10-2106-g6343b6bf3bb83c87

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Apr 8 15:17:42 GMT 2020


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

--- Comment #8 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Martin Liska <marxin@gcc.gnu.org>:

https://gcc.gnu.org/g:70df40cab6f268ba7f05c6d1421928cca0834ee3

commit r10-7628-g70df40cab6f268ba7f05c6d1421928cca0834ee3
Author: Martin Liska <mliska@suse.cz>
Date:   Wed Apr 8 17:16:55 2020 +0200

    Allow new/delete operator deletion only for replaceable.

            PR c++/94314
            * gimple.c (gimple_call_operator_delete_p): Rename to...
            (gimple_call_replaceable_operator_delete_p): ... this.
            Use DECL_IS_REPLACEABLE_OPERATOR_DELETE_P.
            * gimple.h (gimple_call_operator_delete_p): Rename to ...
            (gimple_call_replaceable_operator_delete_p): ... this.
            * tree-core.h (tree_function_decl): Add replaceable_operator
            flag.
            * tree-ssa-dce.c (mark_all_reaching_defs_necessary_1):
            Use DECL_IS_REPLACEABLE_OPERATOR_DELETE_P.
            (propagate_necessity): Use
gimple_call_replaceable_operator_delete_p.
            (eliminate_unnecessary_stmts): Likewise.
            * tree-streamer-in.c (unpack_ts_function_decl_value_fields):
            Pack DECL_IS_REPLACEABLE_OPERATOR.
            * tree-streamer-out.c (pack_ts_function_decl_value_fields):
            Unpack the field here.
            * tree.h (DECL_IS_REPLACEABLE_OPERATOR): New.
            (DECL_IS_REPLACEABLE_OPERATOR_NEW_P): New.
            (DECL_IS_REPLACEABLE_OPERATOR_DELETE_P): New.
            * cgraph.c (cgraph_node::dump): Dump if an operator is replaceable.
            * ipa-icf.c (sem_item::compare_referenced_symbol_properties):
Compare
            replaceable operator flags.
            PR c++/94314
            * decl.c (duplicate_decls): Duplicate also
DECL_IS_REPLACEABLE_OPERATOR.
            (cxx_init_decl_processing): Mark replaceable all implicitly defined
            operators.
            PR c++/94314
            * lto-common.c (compare_tree_sccs_1): Compare also
            DECL_IS_REPLACEABLE_OPERATOR.
            PR c++/94314
            * g++.dg/pr94314-2.C: New test.
            * g++.dg/pr94314-3.C: New test.
            * g++.dg/pr94314.C: New test.


More information about the Gcc-bugs mailing list