Pass vec_perm_indices by reference
authorRichard Sandiford <richard.sandiford@linaro.org>
Tue, 2 Jan 2018 18:25:57 +0000 (18:25 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 2 Jan 2018 18:25:57 +0000 (18:25 +0000)
This patch makes functions take vec_perm_indices by reference rather
than value, since a later patch will turn vec_perm_indices into a class
that would be more expensive to copy.

2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
* optabs-query.c (can_vec_perm_p): Likewise.
* fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
instead of vec_perm_indices.
* tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
(vect_gen_perm_mask_checked): Likewise,
* tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
(vect_gen_perm_mask_checked): Likewise,

From-SVN: r256090

gcc/ChangeLog
gcc/fold-const.c
gcc/optabs-query.c
gcc/optabs-query.h
gcc/tree-vect-stmts.c
gcc/tree-vectorizer.h

index 60bbfbf42535c6f223a703b650aa0d7fea376a8a..be819e2a71cd4eb31b1880edcfa14820cf9e6272 100644 (file)
@@ -1,3 +1,14 @@
+2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * optabs-query.h (can_vec_perm_p): Take a const vec_perm_indices *.
+       * optabs-query.c (can_vec_perm_p): Likewise.
+       * fold-const.c (fold_vec_perm): Take a const vec_perm_indices &
+       instead of vec_perm_indices.
+       * tree-vectorizer.h (vect_gen_perm_mask_any): Likewise,
+       (vect_gen_perm_mask_checked): Likewise,
+       * tree-vect-stmts.c (vect_gen_perm_mask_any): Likewise,
+       (vect_gen_perm_mask_checked): Likewise,
+
 2018-01-02  Richard Sandiford  <richard.sandiford@linaro.org>
 
        * optabs-query.h (qimode_for_vec_perm): Declare.
index e776108c411d41239607783e4ba293046ae642df..224c0854bdd1176be7001086dcef991f0c18cf3e 100644 (file)
@@ -8923,7 +8923,7 @@ vec_cst_ctor_to_array (tree arg, unsigned int nelts, tree *elts)
    NULL_TREE otherwise.  */
 
 static tree
-fold_vec_perm (tree type, tree arg0, tree arg1, vec_perm_indices sel)
+fold_vec_perm (tree type, tree arg0, tree arg1, const vec_perm_indices &sel)
 {
   unsigned int i;
   bool need_ctor = false;
index 02a583fa8a56d7fa703f20d619cff723c8e47c4b..b8e7e314b0fbd65d9abf469e1f0e935edbc394c7 100644 (file)
@@ -369,7 +369,7 @@ qimode_for_vec_perm (machine_mode mode)
    zeroes; this case is not dealt with here.  */
 
 bool
-can_vec_perm_p (machine_mode mode, bool variable, vec_perm_indices *sel)
+can_vec_perm_p (machine_mode mode, bool variable, const vec_perm_indices *sel)
 {
   machine_mode qimode;
 
index ce0c401a9d50c095cb8e925d2789a431027d02a6..392429645cd889207ca8d63bd61bd8e17c1cb6f8 100644 (file)
@@ -175,7 +175,7 @@ enum insn_code can_float_p (machine_mode, machine_mode, int);
 enum insn_code can_fix_p (machine_mode, machine_mode, int, bool *);
 bool can_conditionally_move_p (machine_mode mode);
 opt_machine_mode qimode_for_vec_perm (machine_mode);
-bool can_vec_perm_p (machine_mode, bool, vec_perm_indices *);
+bool can_vec_perm_p (machine_mode, bool, const vec_perm_indices *);
 /* Find a widening optab even if it doesn't widen as much as we want.  */
 #define find_widening_optab_handler(A, B, C) \
   find_widening_optab_handler_and_mode (A, B, C, NULL)
index 0c343d4e7d9ba3758416e3761c31230e31ff9284..b0df11b930fb5c85ef81b4ae38c9f4e2d2f1aa2d 100644 (file)
@@ -6523,7 +6523,7 @@ vectorizable_store (gimple *stmt, gimple_stmt_iterator *gsi, gimple **vec_stmt,
    vect_gen_perm_mask_checked.  */
 
 tree
-vect_gen_perm_mask_any (tree vectype, vec_perm_indices sel)
+vect_gen_perm_mask_any (tree vectype, const vec_perm_indices &sel)
 {
   tree mask_elt_type, mask_type;
 
@@ -6544,7 +6544,7 @@ vect_gen_perm_mask_any (tree vectype, vec_perm_indices sel)
    i.e. that the target supports the pattern _for arbitrary input vectors_.  */
 
 tree
-vect_gen_perm_mask_checked (tree vectype, vec_perm_indices sel)
+vect_gen_perm_mask_checked (tree vectype, const vec_perm_indices &sel)
 {
   gcc_assert (can_vec_perm_p (TYPE_MODE (vectype), false, &sel));
   return vect_gen_perm_mask_any (vectype, sel);
index 8291a71a0574a791a95706f99407f7ae64921804..6b75afc7c11628a94b81163bf6f28387c80d1477 100644 (file)
@@ -1212,8 +1212,8 @@ extern void vect_get_load_cost (struct data_reference *, int, bool,
 extern void vect_get_store_cost (struct data_reference *, int,
                                 unsigned int *, stmt_vector_for_cost *);
 extern bool vect_supportable_shift (enum tree_code, tree);
-extern tree vect_gen_perm_mask_any (tree, vec_perm_indices);
-extern tree vect_gen_perm_mask_checked (tree, vec_perm_indices);
+extern tree vect_gen_perm_mask_any (tree, const vec_perm_indices &);
+extern tree vect_gen_perm_mask_checked (tree, const vec_perm_indices &);
 extern void optimize_mask_stores (struct loop*);
 
 /* In tree-vect-data-refs.c.  */