Hi!

Sorry this is all taking so long.

On Mon, Aug 20, 2018 at 04:44:30PM -0500, Will Schmidt wrote:
> 2018-08-20  Will Schmidt  <will_schm...@vnet.ibm.com>
>     
>       * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add support for
>         early gimple folding of vec_splat().

"early" should indent together with the "*" above, not "config".

>       * tree-vect-generic.c: Remove static from tree_vec_extract() definition.
>       * gimple-fold.h:  Add an extern define for tree_vec_extract().

One space after : .

> --- a/gcc/config/rs6000/rs6000.c
> +++ b/gcc/config/rs6000/rs6000.c
> @@ -15768,10 +15768,52 @@ rs6000_gimple_fold_builtin (gimple_stmt_iterator 
> *gsi)
>        tree splat_tree = build_vector_from_val (TREE_TYPE (lhs), splat_value);
>        g = gimple_build_assign (lhs, splat_tree);
>        gimple_set_location (g, gimple_location (stmt));
>        gsi_replace (gsi, g, true);
>        return true;
> +     }

Something is wrong with the indent here (in the original code already).

> +     arg0 = gimple_call_arg (stmt, 0); /* input vector.  */
> +     arg1 = gimple_call_arg (stmt, 1); /* index into arg0.  */
> +     /* Only fold the vec_splat_*() if arg1 is both a constant value, and a 
> valid
> +      index into the arg0 vector.  */

First comment line wraps, please break it a little earlier?

> +     unsigned int n_elts = VECTOR_CST_NELTS (arg0);
> +     if (TREE_CODE (arg1) != INTEGER_CST
> +         || TREE_INT_CST_LOW (arg1) > (n_elts -1))
> +       return false;

I think you should check lower bound 0 as well.  Maybe use IN_RANGE?

The rest looks fine, thanks!  Okay for trunk (with the trivialities fixed).


Segher

Reply via email to