This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [02/46] Remove dead vectorizable_reduction code


On Tue, Jul 24, 2018 at 11:53 AM Richard Sandiford
<richard.sandiford@arm.com> wrote:
>
> vectorizable_reduction has old code to cope with cases in which the
> given statement belongs to a reduction group but isn't the first statement.
> That can no longer happen, since all statements in the group go into the
> same SLP node, and we only check the first statement in each node.
>
> The point is to remove the only path through vectorizable_reduction
> in which stmt and stmt_info refer to different statements.

OK.

>
> 2018-07-24  Richard Sandiford  <richard.sandiford@arm.com>
>
> gcc/
>         * tree-vect-loop.c (vectorizable_reduction): Assert that the
>         function is not called for second and subsequent members of
>         a reduction group.
>
> Index: gcc/tree-vect-loop.c
> ===================================================================
> --- gcc/tree-vect-loop.c        2018-07-24 10:22:02.965552667 +0100
> +++ gcc/tree-vect-loop.c        2018-07-24 10:22:06.269523330 +0100
> @@ -6162,7 +6162,6 @@ vectorizable_reduction (gimple *stmt, gi
>    auto_vec<gimple *> phis;
>    int vec_num;
>    tree def0, tem;
> -  bool first_p = true;
>    tree cr_index_scalar_type = NULL_TREE, cr_index_vector_type = NULL_TREE;
>    tree cond_reduc_val = NULL_TREE;
>
> @@ -6178,15 +6177,8 @@ vectorizable_reduction (gimple *stmt, gi
>        nested_cycle = true;
>      }
>
> -  /* In case of reduction chain we switch to the first stmt in the chain, but
> -     we don't update STMT_INFO, since only the last stmt is marked as reduction
> -     and has reduction properties.  */
> -  if (REDUC_GROUP_FIRST_ELEMENT (stmt_info)
> -      && REDUC_GROUP_FIRST_ELEMENT (stmt_info) != stmt)
> -    {
> -      stmt = REDUC_GROUP_FIRST_ELEMENT (stmt_info);
> -      first_p = false;
> -    }
> +  if (REDUC_GROUP_FIRST_ELEMENT (stmt_info))
> +    gcc_assert (slp_node && REDUC_GROUP_FIRST_ELEMENT (stmt_info) == stmt);
>
>    if (gimple_code (stmt) == GIMPLE_PHI)
>      {
> @@ -7050,8 +7042,7 @@ vectorizable_reduction (gimple *stmt, gi
>
>    if (!vec_stmt) /* transformation not required.  */
>      {
> -      if (first_p)
> -       vect_model_reduction_cost (stmt_info, reduc_fn, ncopies, cost_vec);
> +      vect_model_reduction_cost (stmt_info, reduc_fn, ncopies, cost_vec);
>        if (loop_vinfo && LOOP_VINFO_CAN_FULLY_MASK_P (loop_vinfo))
>         {
>           if (reduction_type != FOLD_LEFT_REDUCTION


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]