------- Comment #35 from jakub at gcc dot gnu dot org  2009-11-18 09:54 -------
Subject: Bug 3187

Author: jakub
Date: Wed Nov 18 09:53:52 2009
New Revision: 154284

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154284
Log:
        PR c++/3187
        * cgraph.h (struct cgraph_node): Add same_body and same_body_alias
        fields.
        (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
        prototypes.
        * cgraphunit.c (cgraph_expand_function, cgraph_emit_thunks,
        cgraph_materialize_all_clones): Handle same_body aliases.
        * cgraph.c (cgraph_allocate_node): New function.
        (cgraph_create_node): Use it.
        (cgraph_node_for_decl, cgraph_node, cgraph_get_node,
        cgraph_node_for_asm, cgraph_remove_node): Handle same_body aliases.
        (cgraph_same_body_alias, cgraph_remove_same_body_alias): New
        functions.
        * lto-cgraph.c (lto_output_node): Stream out same_body aliases.
        (input_node): Stream in same_body aliases.
        * lto-symtab.c (lto_cgraph_replace_node): Clear node pointers
        for same_body aliases.
        (lto_symtab_merge_cgraph_nodes_1): Handle same_body aliases.

        * cp-tree.h (expand_or_defer_fn_1): New prototype.
        * decl2.c (cp_write_global_declarations): Mark as !DECL_EXTERNAL
        also all same_body aliases.
        * semantics.c (expand_or_defer_fn): Move most of the function
        except registering with cgraph to ...
        (expand_or_defer_fn_1): ... here.  New function.
        * optimize.c: Include cgraph.h.
        (maybe_clone_body): If in charge parm is not used and both base
        and complete clones are created and are not comdat, tell cgraph
        they have the same body.
        * Make-lang.in (cp/optimize.o): Depend on $(CGRAPH_H).

        * g++.dg/abi/mangle26.C: Also match *C2* definition.
        * g++.dg/abi/mangle27.C: Likewise.
        * g++.dg/abi/mangle28.C: Likewise.
        * g++.dg/abi/mangle29.C: Likewise.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cgraph.c
    trunk/gcc/cgraph.h
    trunk/gcc/cgraphunit.c
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/Make-lang.in
    trunk/gcc/cp/cp-tree.h
    trunk/gcc/cp/decl2.c
    trunk/gcc/cp/optimize.c
    trunk/gcc/cp/semantics.c
    trunk/gcc/lto-cgraph.c
    trunk/gcc/lto-symtab.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/g++.dg/abi/mangle26.C
    trunk/gcc/testsuite/g++.dg/abi/mangle27.C
    trunk/gcc/testsuite/g++.dg/abi/mangle28.C
    trunk/gcc/testsuite/g++.dg/abi/mangle29.C


-- 


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

Reply via email to