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

Martin Jambor <jamborm at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #17 from Martin Jambor <jamborm at gcc dot gnu.org> ---
Author: jamborm
Date: Mon May 13 10:16:09 2013
New Revision: 198821

URL: http://gcc.gnu.org/viewcvs?rev=198821&root=gcc&view=rev
Log:
2013-05-13  Martin Jambor  <mjam...@suse.cz>

    PR middle-end/42371
    * ipa-prop.h (IPA_UNDESCRIBED_USE): New macro.
    (ipa_constant_data): New type.
    (ipa_jump_func): Use ipa_constant_data to hold information about
    constant jump functions.
    (ipa_get_jf_constant): Adjust to jump function type changes.
    (ipa_get_jf_constant_rdesc): New function.
    (ipa_param_descriptor): New field controlled_uses.
    (ipa_get_controlled_uses): New function.
    (ipa_set_controlled_uses): Likewise.
    * ipa-ref.h (ipa_find_reference): Declare.
    * ipa-prop.c (ipa_cst_ref_desc): New type.
    (ipa_print_node_jump_functions_for_edge): Adjust for jump function type
    changes.
    (ipa_set_jf_constant): Likewise.  Also create reference descriptions.
    New parameter cs.  Adjust all callers.
    (ipa_analyze_params_uses): Detect uncontrolled and controlled uses.
    (remove_described_reference): New function.
    (jfunc_rdesc_usable): Likewise.
    (try_make_edge_direct_simple_call): Decrement controlled use count,
    attempt to remove reference if it hits zero.
    (combine_controlled_uses_counters): New function.
    (propagate_controlled_uses): Likewise.
    (ipa_propagate_indirect_call_infos): Call propagate_controlled_uses.
    (ipa_edge_duplication_hook): Duplicate reference descriptions.
    (ipa_print_node_params): Print described use counter.
    (ipa_write_jump_function): Adjust to jump function type changes.
    (ipa_read_jump_function): New parameter CS, pass it to
    ipa_set_jf_constant.  Adjust caller.
    (ipa_write_node_info): Stream controlled use count
    (ipa_read_node_info): Likewise.
    * cgraph.c (cgraph_mark_address_taken_node): Bail out instead of
    asserting.
    * ipa-cp.c (ipcp_discover_new_direct_edges): Decrement controlled use
    count.  Remove cloning-added reference if it reaches zero.
    * ipa-ref.c (ipa_find_reference): New function.

testsuite/
    * gcc.dg/ipa/remref-0.c: New test.
    * gcc.dg/ipa/remref-1a.c: Likewise.
    * gcc.dg/ipa/remref-1b.c: Likewise.
    * gcc.dg/ipa/remref-2a.c: Likewise.
    * gcc.dg/ipa/remref-2b.c: Likewise.


Added:
    trunk/gcc/testsuite/gcc.dg/ipa/remref-0.c
    trunk/gcc/testsuite/gcc.dg/ipa/remref-1a.c
    trunk/gcc/testsuite/gcc.dg/ipa/remref-1b.c
    trunk/gcc/testsuite/gcc.dg/ipa/remref-2a.c
    trunk/gcc/testsuite/gcc.dg/ipa/remref-2b.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cgraph.c
    trunk/gcc/ipa-cp.c
    trunk/gcc/ipa-prop.c
    trunk/gcc/ipa-prop.h
    trunk/gcc/ipa-ref.c
    trunk/gcc/ipa-ref.h
    trunk/gcc/testsuite/ChangeLog

Reply via email to