2015-11-02 Alexandre Oliva <aoliva@redhat.com>
+ * tree-ssa-ifcombine.c (tree_ssa_ifcombine_bb_1): Factor out
+ bb_no_side_effects_p tests...
+ (tree_ssa_ifcombine_bb): ... here.
+
PR tree-optimization/68083
* tree-ssa-ifcombine.c: Include tree-ssa.h.
(bb_no_side_effects_p): Test for undefined uses too.
the inner cond_bb having no side-effects. */
if (phi_pred_bb != else_bb
&& recognize_if_then_else (outer_cond_bb, &inner_cond_bb, &else_bb)
- && same_phi_args_p (outer_cond_bb, phi_pred_bb, else_bb)
- && bb_no_side_effects_p (inner_cond_bb))
+ && same_phi_args_p (outer_cond_bb, phi_pred_bb, else_bb))
{
/* We have
<outer_cond_bb>
/* And a version where the outer condition is negated. */
if (phi_pred_bb != else_bb
&& recognize_if_then_else (outer_cond_bb, &else_bb, &inner_cond_bb)
- && same_phi_args_p (outer_cond_bb, phi_pred_bb, else_bb)
- && bb_no_side_effects_p (inner_cond_bb))
+ && same_phi_args_p (outer_cond_bb, phi_pred_bb, else_bb))
{
/* We have
<outer_cond_bb>
having no side-effects. */
if (phi_pred_bb != then_bb
&& recognize_if_then_else (outer_cond_bb, &then_bb, &inner_cond_bb)
- && same_phi_args_p (outer_cond_bb, phi_pred_bb, then_bb)
- && bb_no_side_effects_p (inner_cond_bb))
+ && same_phi_args_p (outer_cond_bb, phi_pred_bb, then_bb))
{
/* We have
<outer_cond_bb>
/* And a version where the outer condition is negated. */
if (phi_pred_bb != then_bb
&& recognize_if_then_else (outer_cond_bb, &inner_cond_bb, &then_bb)
- && same_phi_args_p (outer_cond_bb, phi_pred_bb, then_bb)
- && bb_no_side_effects_p (inner_cond_bb))
+ && same_phi_args_p (outer_cond_bb, phi_pred_bb, then_bb))
{
/* We have
<outer_cond_bb>
if (a && b)
;
This requires a single predecessor of the inner cond_bb. */
- if (single_pred_p (inner_cond_bb))
+ if (single_pred_p (inner_cond_bb)
+ && bb_no_side_effects_p (inner_cond_bb))
{
basic_block outer_cond_bb = single_pred (inner_cond_bb);