tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore if there is no outgoing edge.

* tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
	if there is no outgoing edge.

	* tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
	integral types.

From-SVN: r179165
This commit is contained in:
Eric Botcazou 2011-09-25 14:55:12 +00:00 committed by Eric Botcazou
parent 8e19f5a1b3
commit 1ee0d66040
3 changed files with 18 additions and 3 deletions

View File

@ -1,3 +1,11 @@
2011-09-25 Eric Botcazou <ebotcazou@adacore.com>
* tree-eh.c (cleanup_empty_eh): Allow a call to __builtin_stack_restore
if there is no outgoing edge.
* tree-scalar-evolution.c (simple_iv): Accept all kinds of pointer and
integral types.
2011-09-25 Ira Rosen <ira.rosen@linaro.org>
* tree-vect-slp.c (vect_slp_analyze_bb_1): Split out core part

View File

@ -3863,8 +3863,15 @@ cleanup_empty_eh (eh_landing_pad lp)
return cleanup_empty_eh_unsplit (bb, e_out, lp);
}
/* The block should consist only of a single RESX statement. */
/* The block should consist only of a single RESX statement, modulo a
preceding call to __builtin_stack_restore if there is no outgoing
edge, since the call can be eliminated in this case. */
resx = gsi_stmt (gsi);
if (!e_out && gimple_call_builtin_p (resx, BUILT_IN_STACK_RESTORE))
{
gsi_next (&gsi);
resx = gsi_stmt (gsi);
}
if (!is_gimple_resx (resx))
return false;
gcc_assert (gsi_one_before_end_p (gsi));

View File

@ -3172,8 +3172,8 @@ simple_iv (struct loop *wrto_loop, struct loop *use_loop, tree op,
iv->no_overflow = false;
type = TREE_TYPE (op);
if (TREE_CODE (type) != INTEGER_TYPE
&& TREE_CODE (type) != POINTER_TYPE)
if (!POINTER_TYPE_P (type)
&& !INTEGRAL_TYPE_P (type))
return false;
ev = analyze_scalar_evolution_in_loop (wrto_loop, use_loop, op,