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; }