[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[Bug c++/42317] [4.5 Regression] Issues with comdat virtual dtors




------- Comment #7 from jakub at gcc dot gnu dot org  2009-12-10 21:59 -------
Subject: Bug 42317

Author: jakub
Date: Thu Dec 10 21:58:49 2009
New Revision: 155143

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155143
Log:
        PR c++/42317
        * cgraph.h (struct cgraph_node): Add same_comdat_group field.
        * cgraph.c (cgraph_remove_node): Unchain node from same_comdat_group
        circular list.
        (cgraph_node_can_be_local_p): Return false for DECL_COMDAT with
        node->same_comdat_group.
        * ipa.c (cgraph_remove_unreachable_nodes): For any reachable node
        mark all its same_comdat_group nodes as also reachable.
        (cgraph_externally_visible_p): Return true even if any of
        same_comdat_group nodes has address taken.
        * lto-cgraph.c (lto_output_node): Stream out same_comdat_group.
        (output_cgraph): Ensure other same_comdat_group nodes are also
        included.
        (input_node): Stream in same_comdat_group.
        (input_cgraph_1): Fix up same_comdat_group fields from references
        to pointers.
        * cgraphunit.c (cgraph_analyze_functions): Mark all other
        same_comdat_group nodes as reachable.
        (cgraph_mark_functions_to_output): For each node->process process
        also other same_comdat_group nodes.
        * ipa-inline.c (cgraph_clone_inlined_nodes): Don't reuse nodes
        with same_comdat_group non-NULL.
        (cgraph_mark_inline_edge): Likewise.

        * decl2.c (cp_write_global_declarations): Clear DECL_EXTERNAL
        also on all other functions in the same comdat group.
        * optimize.c (maybe_clone_body): Also optimize virtual implicit
        dtors.  For virtual comdat dtors tell cgraph that base and deleting
        dtor are in the same comdat group.

        * config/abi/pre/gnu.ver: Don't export certain base dtors that
        weren't previously exported.

        * g++.dg/opt/dtor2.C: New test.
        * g++.dg/opt/dtor2.h: New file.
        * g++.dg/opt/dtor2-aux.cc: New file.

Added:
    trunk/gcc/testsuite/g++.dg/opt/dtor2-aux.cc
    trunk/gcc/testsuite/g++.dg/opt/dtor2.C
    trunk/gcc/testsuite/g++.dg/opt/dtor2.h
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cgraph.c
    trunk/gcc/cgraph.h
    trunk/gcc/cgraphunit.c
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/decl2.c
    trunk/gcc/cp/optimize.c
    trunk/gcc/ipa-inline.c
    trunk/gcc/ipa.c
    trunk/gcc/lto-cgraph.c
    trunk/gcc/testsuite/ChangeLog
    trunk/libstdc++-v3/ChangeLog
    trunk/libstdc++-v3/config/abi/pre/gnu.ver


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42317

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


Reply to: