This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Drop old intraprocedural ipa-prop devirtualization code
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: gcc-patches at gcc dot gnu dot org, mjambor at suse dot de
- Date: Fri, 26 Sep 2014 03:50:57 +0200
- Subject: Drop old intraprocedural ipa-prop devirtualization code
- Authentication-results: sourceware.org; auth=none
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));
}
}