Commit 2a025b54 by Jan Hubicka Committed by Jan Hubicka

re PR middle-end/30509 (ice for legal code with -O3)

	PR middle-end/30509
	* tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.

From-SVN: r122314
parent bd8d4d19
2007-02-24 Jan Hubicka <jh@suse.cz>
PR middle-end/30509
* tree-inline.c (copy_bb): Produce exact copy of EH info when copying for inlining.
2007-02-24 Uros Bizjak <ubizjak@gmail.com>
Jan Hubicka <jh@suse.cz>
......
......@@ -873,7 +873,20 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale, int count_scal
gcc_assert (lookup_stmt_eh_region_fn (id->src_cfun, orig_stmt)
!= 0);
if (tree_could_throw_p (stmt))
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_CLONES
&& 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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment