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

--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> 2010-10-26 
16:40:33 UTC ---
Author: hubicka
Date: Tue Oct 26 16:40:16 2010
New Revision: 165972

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=165972
Log:

    PR middle-end/45736
    * cgraph.c (cgraph_set_readonly_flag): Rename to...
    (cgraph_set_const_flags) ... this one; get also looping argument;
    clear constructor/destructor flags.
    (cgraph_set_pure_flag): Likewise.
    (cgraph_set_looping_const_or_pure_flag): Remove.
    (cgraph_can_remove_if_no_direct_calls_and_refs): Do not try
    to optimize away static ctors/dtors; it does not work on inline clones;
    external functions can always be rmeoved.
    (cgraph_will_be_removed_from_program_if_no_direct_calls): Assert on inline
    clones; in LTO external functions always can go.
    (cgraph_used_from_object_file_p): Handle EXTERNAL functions correctly.
    (cgraph_mark_address_taken_node): Assert that we are not taking address of
    inline clone.
    (cgraph_can_remove_if_no_direct_calls_p): We always eventually remove
    external functions.
    * ipa-cp.c (ipcp_cloning_candidate_p): Do not clone functions with address
taken.
    (ipcp_initialize_node_lattices): Only local functions can be handled
without cloning.
    * cgraph.h (cgraph_set_readonly_flag,
    cgraph_set_looping_const_or_pure_flag): Remove.
    (cgraph_set_const_flag): Declare.
    (cgraph_set_pure_flag): Update.
    * ipa-pure-const (propagate_pure_const, local_pure_const): Update
    flags setting code.
    * ipa.c (cgraph_remove_unreachable_nodes): Fix formating; do not look at
inline
    clones; fix handling of external definitions.
    (cgraph_postorder): Do not look at inline clones in the first pass.
    (function_and_variable_visibility): Drop constructors/destructor
    flags at pure and const functions.
    * tree-profile.c (tree_profiling): Update.
    * ipa-inline.c (cgraph_clone_inlined_nodes): Always clone functions with
    address taken; external functions do not account to whole program size.
    (cgraph_decide_inlining): Likewise; do not try to inline functions already
    inlined.
    * testsuite/gcc.dg/lto/pr45736_0.c: New function.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cgraph.c
    trunk/gcc/cgraph.h
    trunk/gcc/ipa-cp.c
    trunk/gcc/ipa-inline.c
    trunk/gcc/ipa-pure-const.c
    trunk/gcc/ipa.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-profile.c

Reply via email to