On Sun, Apr 23, 2023 at 12:11 AM Andrew Pinski via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> This moves the check to make sure on the diamond shaped form bbs that
> the the two middle bbs are only for that diamond shaped form earlier
> in the shared code.
> Also remove the redundant check for single_succ_p since that was already
> done before hand.
> The next patch will simplify the code even further and remove redundant
> checks.

OK.

> gcc/ChangeLog:
>
>         * tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Move the
>         diamond form check from ...
>         (minmax_replacement): Here.
> ---
>  gcc/tree-ssa-phiopt.cc | 14 ++++++++------
>  1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc
> index d886c88215b..296ba646e62 100644
> --- a/gcc/tree-ssa-phiopt.cc
> +++ b/gcc/tree-ssa-phiopt.cc
> @@ -220,6 +220,14 @@ tree_ssa_phiopt_worker (bool do_store_elim, bool 
> do_hoist_loads, bool early_p)
>           continue;
>         }
>
> +      if (diamond_p)
> +       {
> +         if (!single_pred_p (bb1)
> +             || !single_pred_p (bb2)
> +             || !single_succ_p (bb2))
> +           continue;
> +       }
> +
>        if (do_store_elim && !diamond_p)
>         {
>           /* Also make sure that bb1 only have one predecessor and that it
> @@ -2032,12 +2040,6 @@ minmax_replacement (basic_block cond_bb, basic_block 
> middle_bb, basic_block alt_
>        tree alt_lhs, alt_op0, alt_op1;
>        bool invert = false;
>
> -      if (!single_pred_p (middle_bb)
> -         || !single_pred_p (alt_middle_bb)
> -         || !single_succ_p (middle_bb)
> -         || !single_succ_p (alt_middle_bb))
> -       return false;
> -
>        /* When THREEWAY_P then e1 will point to the edge of the final 
> transition
>          from middle-bb to end.  */
>        if (true_edge == e0)
> --
> 2.39.1
>

Reply via email to