Hi, ipa_intraprocedural_devirtualization was for few weeks used only to check that new get_dynamic_type code can handle all cases old detect_type_change did. Since all reported issues are fixed now, I removed the code.
lto-profiledbootstrapped/regtested x86_64-linux * ipa-prop.c (ipa_intraprocedural_devirtualization): Remove. * ipa-prop.h (ipa_intraprocedural_devirtualization): Remove. * tree-ssa-prop.c (eliminate_dom_walker::before_dom_children): Remove. Index: ipa-prop.c =================================================================== --- ipa-prop.c (revision 215614) +++ ipa-prop.c (working copy) @@ -2566,36 +2566,6 @@ ipa_analyze_node (struct cgraph_node *no pop_cfun (); } -/* Given a statement CALL which must be a GIMPLE_CALL calling an OBJ_TYPE_REF - attempt a type-based devirtualization. If successful, return the - target function declaration, otherwise return NULL. */ - -tree -ipa_intraprocedural_devirtualization (gimple call) -{ - tree binfo, token, fndecl; - struct ipa_jump_func jfunc; - tree otr = gimple_call_fn (call); - - jfunc.type = IPA_JF_UNKNOWN; - compute_known_type_jump_func (OBJ_TYPE_REF_OBJECT (otr), &jfunc, - call, obj_type_ref_class (otr)); - if (jfunc.type != IPA_JF_KNOWN_TYPE) - return NULL_TREE; - binfo = ipa_binfo_from_known_type_jfunc (&jfunc); - if (!binfo) - return NULL_TREE; - token = OBJ_TYPE_REF_TOKEN (otr); - fndecl = gimple_get_virt_method_for_binfo (tree_to_uhwi (token), - binfo); -#ifdef ENABLE_CHECKING - if (fndecl) - gcc_assert (possible_polymorphic_call_target_p - (otr, call, cgraph_node::get (fndecl))); -#endif - return fndecl; -} - /* Update the jump function DST when the call graph edge corresponding to SRC is is being inlined, knowing that DST is of type ancestor and src of known type. */ Index: ipa-prop.h =================================================================== --- ipa-prop.h (revision 215614) +++ ipa-prop.h (working copy) @@ -587,7 +587,6 @@ tree ipa_get_indirect_edge_target (struc vec<ipa_agg_jump_function_p> ); struct cgraph_edge *ipa_make_edge_direct_to_target (struct cgraph_edge *, tree); tree ipa_binfo_from_known_type_jfunc (struct ipa_jump_func *); -tree ipa_intraprocedural_devirtualization (gimple); tree ipa_impossible_devirt_target (struct cgraph_edge *, tree); /* Functions related to both. */ Index: tree-ssa-pre.c =================================================================== --- tree-ssa-pre.c (revision 215614) +++ tree-ssa-pre.c (working copy) @@ -4314,8 +4314,6 @@ eliminate_dom_walker::before_dom_childre gimple_call_set_fndecl (stmt, fn); gimple_set_modified (stmt, true); } - else - gcc_assert (!ipa_intraprocedural_devirtualization (stmt)); } }