On Mon, 28 Oct 2019 14:55:37 +0100 (CET)
Richard Biener <rguent...@suse.de> wrote:

> Index: gcc/tree-vect-loop.c
> ===================================================================
> --- gcc/tree-vect-loop.c      (revision 277517)
> +++ gcc/tree-vect-loop.c      (working copy)

> @@ -2690,6 +2689,20 @@ pop:
>         fail = true;
>         break;
>       }
> +      /* Check there's only a single stmt the op is used on inside
> +         of the loop.  */
> +      imm_use_iterator imm_iter;
> +      gimple *op_use_stmt;
> +      unsigned cnt = 0;
> +      FOR_EACH_IMM_USE_STMT (op_use_stmt, imm_iter, op)
> +     if (!is_gimple_debug (op_use_stmt)
> +         && flow_bb_inside_loop_p (loop, gimple_bb (op_use_stmt)))
> +       cnt++;
> +      if (cnt != 1)
> +     {
> +       fail = true;
> +       break;
> +     }

cosmetics, but it seems you could maybe BREAK_FROM_IMM_USE_STMT.
Maybe even the clumsy
      use_operand_p use_p;
      FOR_EACH_IMM_USE_FAST (use_p, imm_iter, op)
        {
          op_use_stmt = USE_STMT (use_p);
          if (!is_gimple_debug (op_use_stmt)
              && flow_bb_inside_loop_p (loop, gimple_bb (op_use_stmt)))
            fail = true;
            break;
        }
      if (fail)
        break;

btw, it seems there are two typos in the docs. BREAK_FROM_SAFE_IMM_USE
was removed 2006-04-27, and "iter" should be "iterator":

diff --git a/gcc/doc/tree-ssa.texi b/gcc/doc/tree-ssa.texi
index 9baabf99440..97a7b8e0263 100644
--- a/gcc/doc/tree-ssa.texi
+++ b/gcc/doc/tree-ssa.texi
@@ -392,7 +392,7 @@ to do this :
   FOR_EACH_IMM_USE_STMT (stmt, iterator, ssa_var)
     @{
       if (stmt == last_stmt)
-        BREAK_FROM_SAFE_IMM_USE (iter);
+        BREAK_FROM_IMM_USE_STMT (iterator);
 
       FOR_EACH_IMM_USE_ON_STMT (imm_use_p, iterator)
         SET_USE (imm_use_p, ssa_var_2);


>        enum tree_code use_code = gimple_assign_rhs_code (use_stmt);

s/enum tree_code/tree_code/g

>        if (use_code == MINUS_EXPR)
>       {

Reply via email to