ipa-prop.h (ipa_get_controlled_uses): Add hack to avoid ICE when speculation is added.
authorJan Hubicka <hubicka@ucw.cz>
Thu, 2 Oct 2014 07:03:15 +0000 (09:03 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Thu, 2 Oct 2014 07:03:15 +0000 (07:03 +0000)
commit5ce97055e0f4077280146d62394370882f1b13e0
treeb3e82e3cba97dcee5b7ae4802423eec91c41f503
parent9fbbb20da58853217f84a9c4b82c84274c27144f
ipa-prop.h (ipa_get_controlled_uses): Add hack to avoid ICE when speculation is added.

* ipa-prop.h (ipa_get_controlled_uses): Add hack to avoid ICE
when speculation is added.
(ipa_edge_args): Add polymorphic_call_contexts.
(ipa_get_ith_polymorhic_call_context): New accesor.
(ipa_make_edge_direct_to_target): Add SPECULATIVE parameter.
* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Print contexts.
(ipa_compute_jump_functions_for_edge): Compute contexts.
(update_jump_functions_after_inlining): Update contexts.
(ipa_make_edge_direct_to_target): Add SPECULATIVE argument;
update dumping; add speculative edge creation.
(try_make_edge_direct_virtual_call): Add CTX_PTR parameter; handle
context updating.
(update_indirect_edges_after_inlining): Pass down context.
(ipa_edge_duplication_hook): Duplicate contexts.
(ipa_write_node_info): Stream out contexts.
(ipa_read_node_info): Stream in contexts.
* ipa-devirt.c (type_all_derivations_known_p): Avoid ICE on non-ODR
types.
(try_speculative_devirtualization): New function.
* ipa-utils.h (try_speculative_devirtualization): Declare.

From-SVN: r215794
gcc/ChangeLog
gcc/ipa-devirt.c
gcc/ipa-prop.c
gcc/ipa-prop.h
gcc/ipa-utils.h