[patch] Fix PR22372

Diego Novillo dnovillo@redhat.com
Thu Nov 9 12:24:00 GMT 2006


Ira Rosen wrote on 10/18/06 05:04:

> --- tree-vect-transform.c       (revision 117455)
> +++ tree-vect-transform.c       (working copy)
> @@ -50,11 +50,11 @@ static bool vect_transform_stmt (tree, b
>  static void vect_align_data_ref (tree);
>  static tree vect_create_destination_var (tree, tree);
>  static tree vect_create_data_ref_ptr
> -  (tree, block_stmt_iterator *, tree, tree *, bool);
> +  (tree, block_stmt_iterator *, tree, tree *, bool, tree);
>  static tree vect_create_addr_base_for_vector_ref (tree, tree *, tree);
>  static tree vect_get_new_vect_var (tree, enum vect_var_kind, const char
> *);
>  static tree vect_get_vec_def_for_operand (tree, tree, tree *);
> -static tree vect_init_vector (tree, tree);
> +static tree vect_init_vector (tree, tree, tree);
>  static void vect_finish_stmt_generation
>    (tree stmt, tree vec_stmt, block_stmt_iterator *bsi);
>  static bool vect_is_simple_cond (tree, loop_vec_info);
 >
Since we are back in stage 1, could you remove all the forward 
declarations for static functions?  As a separate patch, because you'll 
be forced to also re-arrange the function bodies and that makes for a 
fairly big patch.

>    /* Arguments are ready. create the new vector stmt.  */
> -  *vec_stmt = build2 (MODIFY_EXPR, vectype, data_ref, vec_oprnd1);
> +  *vec_stmt = build2 (MODIFY_EXPR, TREE_TYPE (vec_oprnd1), data_ref,
> +                      vec_oprnd1);
>    vect_finish_stmt_generation (stmt, *vec_stmt, bsi);
> 
Use void_type_node for assignment statements.

> @@ -1916,10 +1929,12 @@ vectorizable_load (tree stmt, block_stmt
>           /* Create permutation mask, if required, in loop preheader.  */
>           tree builtin_decl;
>           params = build_tree_list (NULL_TREE, init_addr);
> -         vec_dest = vect_create_destination_var (scalar_dest, vectype);
>           builtin_decl = targetm.vectorize.builtin_mask_for_load ();
>           new_stmt = build_function_call_expr (builtin_decl, params);
> -         new_stmt = build2 (MODIFY_EXPR, vectype, vec_dest, new_stmt);
> +         vec_dest = vect_create_destination_var (scalar_dest,
> +                                                 TREE_TYPE (new_stmt));
> +         new_stmt = build2 (MODIFY_EXPR, TREE_TYPE (vec_dest), vec_dest,
> +                            new_stmt);
 >
Likewise.


The rest looks fine.



More information about the Gcc-patches mailing list