------- Comment #4 from jakub at gcc dot gnu dot org 2010-02-08 12:13 -------
I believe the problem is that cgraph edges aren't updated during
tree_function_versioning's call to delete_unreachable_blocks:
if (gimple_in_ssa_p (cfun))
{
free_dominance_info (CDI_DOMINATORS);
free_dominance_info (CDI_POST_DOMINATORS);
if (!update_clones)
delete_unreachable_blocks (); // <<<< HERE
update_ssa (TODO_update_ssa);
if (!update_clones)
{
fold_cond_expr_cond ();
if (need_ssa_update_p ())
update_ssa (TODO_update_ssa);
}
}
The trunk has delete_unreachable_blocks_update_callgraph, perhaps we want
something like that for the branch as well. As delete_unreachable_blocks is
called here just when !updates_clones, i.e. id.transform_call_graph_edges ==
CB_CGE_MOVE, we can leave handling of that in the function for the branch.
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |jakub at gcc dot gnu dot org
|dot org |
Status|NEW |ASSIGNED
Last reconfirmed|2010-01-28 10:08:57 |2010-02-08 12:13:50
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42890