------- Comment #6 from hubicka at gcc dot gnu dot org 2007-02-24 22:58 -------
I am testing a fix:
Index: tree-inline.c
===================================================================
*** tree-inline.c (revision 122292)
--- tree-inline.c (working copy)
*************** copy_bb (copy_body_data *id, basic_block
*** 873,879 ****
gcc_assert (lookup_stmt_eh_region_fn (id->src_cfun, orig_stmt)
!= 0);
! if (tree_could_throw_p (stmt))
{
int region = lookup_stmt_eh_region_fn (id->src_cfun,
orig_stmt);
/* Add an entry for the copied tree in the EH hashtable.
--- 873,892 ----
gcc_assert (lookup_stmt_eh_region_fn (id->src_cfun, orig_stmt)
!= 0);
! if (tree_could_throw_p (stmt)
! /* When we are cloning for inlining, we are supposed to
! construct a clone that calls precisely the same functions
! as original. However IPA optimizers might've proved
! earlier some function calls as non-trapping that might
! render some basic blocks dead that might become
! unreachable.
!
! We can't update SSA with unreachable blocks in CFG and
thus
! we prevent the scenario by preserving even the "dead" eh
! edges until the point they are later removed by
! fixup_cfg pass. */
! || (id->transform_call_graph_edges == CB_CGE_MOVE
! && lookup_stmt_eh_region_fn (id->src_cfun, orig_stmt) >
0))
{
int region = lookup_stmt_eh_region_fn (id->src_cfun,
orig_stmt);
/* Add an entry for the copied tree in the EH hashtable.
--
hubicka at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |hubicka at gcc dot gnu dot
|dot org |org
Status|NEW |ASSIGNED
Last reconfirmed|2007-01-22 02:17:10 |2007-02-24 22:58:13
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30509