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

--- Comment #1 from zhenqiang.chen at linaro dot org ---
ICE from:

commit 3af5e0b77894f5348512dfd60c034da9e859ef11
Author: hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Tue Nov 19 10:05:54 2013 +0000

        * cgraph.c (cgraph_create_indirect_edge): Use
get_polymorphic_call_info.
        * cgraph.h (cgraph_indirect_call_info): Add outer_type,
maybe_in_construction
        and maybe_derived_type.
        * ipa-utils.h (ipa_polymorphic_call_context): New structure.
        (ipa_dummy_polymorphic_call_context): New global var.
        (possible_polymorphic_call_targets): Add context paramter.
        (dump_possible_polymorphic_call_targets): Likewise; update
        wrappers.
        (possible_polymorphic_call_target_p): Likewise.
        (get_polymorphic_call_info): New function.
        * ipa-devirt.c (ipa_dummy_polymorphic_call_context): New function.
        (add_type_duplicate): Remove forgotten debug output.
        (method_class_type): Add sanity check.
        (maybe_record_node): Add FINALP parameter.
        (record_binfo): Add OUTER_TYPE and OFFSET; walk the inner
        by info by get_binfo_at_offset.
        (possible_polymorphic_call_targets_1): Add OUTER_TYPE/OFFSET
parameters;
        pass them to record-binfo.
        (polymorphic_call_target_d): Add context and FINAL.
        (polymorphic_call_target_hasher::hash): Hash context.
        (polymorphic_call_target_hasher::equal): Compare context.
        (free_polymorphic_call_targets_hash):
        (get_class_context): New function.
        (contains_type_p): New function.
        (get_polymorphic_call_info): New function.
        (walk_bases): New function.
        (possible_polymorphic_call_targets): Add context parameter; honnor it.
        (dump_possible_polymorphic_call_targets): Dump context.
        (possible_polymorphic_call_target_p): Add context.
        (update_type_inheritance_graph): Update comment.s
        (ipa_set_jf_known_type): Assert that compoentn type is known.
        (ipa_note_param_call): Do not tamper with offsets.
        (ipa_analyze_indirect_call_uses): When offset is being changed; clear
        outer type.
        (update_indirect_edges_after_inlining): Likewise.
        (ipa_write_indirect_edge_info): Stream new fields.
        (ipa_read_indirect_edge_info): Stream in new fields.

        * ipa/devirt9.C: Verify that the optimization happens already before.
        whole-program.


    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205019
138bc75d-0d04-0410-961f-82ee72b054a4

Reply via email to