PR middle-end/54219
* fold-const.c (fold_ternary_loc): Do not reverse the mask
when canonicalizing it when folding VEC_PERM_EXPR.
* gcc.dg/torture/vector-shuffle1.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190297
138bc75d-0d04-0410-961f-
82ee72b054a4
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/54219
+ * fold-const.c (fold_ternary_loc): Do not reverse the mask
+ when canonicalizing it when folding VEC_PERM_EXPR.
+
2012-08-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR middle-end/54211
tree *tsel = XALLOCAVEC (tree, nelts);
tree eltype = TREE_TYPE (TREE_TYPE (arg2));
for (i = 0; i < nelts; i++)
- tsel[i] = build_int_cst (eltype, sel[nelts - i - 1]);
+ tsel[i] = build_int_cst (eltype, sel[i]);
t = build_vector (TREE_TYPE (arg2), tsel);
return build3_loc (loc, VEC_PERM_EXPR, type, op0, op1, t);
}
+2012-08-10 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/54219
+ * gcc.dg/torture/vector-shuffle1.c: New testcase.
+
2012-08-10 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
PR middle-end/54211
--- /dev/null
+/* PR54219 */
+/* { dg-do run } */
+
+extern void abort (void);
+
+typedef int v2si __attribute__((vector_size(2*sizeof(int))));
+
+v2si f(v2si x)
+{
+ /* This requires canonicalization of the mask to { 1, 0 }. */
+ return __builtin_shuffle(x,x, (v2si) { 5, 0 });
+}
+
+int main()
+{
+ v2si y = f((v2si) { 1, 2 });
+ if (y[0] != 2 || y[1] != 1)
+ abort ();
+ return 0;
+}