We had:

              tree t = fold_vec_perm (type, arg1, arg2,
                                      vec_perm_indices (sel, 2, nelts));

where fold_vec_perm takes a const vec_perm_indices &.  GCC 4.1 apparently
required a public copy constructor:

gcc/vec-perm-indices.h:85: error: 'vec_perm_indices::vec_perm_indices(const 
vec_perm_indices&)' is private
gcc/fold-const.c:11410: error: within this context

even though no copy should be made here.  This patch tries to work
around that by constructing the vec_perm_indices separately.

Tested on aarch64-linux-gnu.  OK to install?

Richard


2018-01-16  Richard Sandiford  <richard.sandif...@linaro.org>

gcc/
        * fold-const.c (fold_ternary_loc): Construct the vec_perm_indices
        in a separate statement.

Index: gcc/fold-const.c
===================================================================
--- gcc/fold-const.c    2018-01-15 12:38:28.967896418 +0000
+++ gcc/fold-const.c    2018-01-16 12:08:10.082222501 +0000
@@ -11406,8 +11406,8 @@ fold_ternary_loc (location_t loc, enum t
                  else /* Currently unreachable.  */
                    return NULL_TREE;
                }
-             tree t = fold_vec_perm (type, arg1, arg2,
-                                     vec_perm_indices (sel, 2, nelts));
+             vec_perm_indices indices (sel, 2, nelts);
+             tree t = fold_vec_perm (type, arg1, arg2, indices);
              if (t != NULL_TREE)
                return t;
            }

Reply via email to