]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-ssa-forwprop.cc: Adjust res_type when operands have differing vector lengths.
authorPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Tue, 6 Sep 2022 09:48:04 +0000 (15:18 +0530)
committerPrathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
Tue, 6 Sep 2022 09:48:22 +0000 (15:18 +0530)
gcc/
* tree-ssa-forwprop.cc (simplify_permutation): Set res_type to a vector
type with same element type as arg0, and length as op2.

gcc/tree-ssa-forwprop.cc

index fdc4bc8909d2763876550e53277ff2b3dcca796a..4b693ef095c514ce303472a7e92123ba80ca71bf 100644 (file)
@@ -2661,7 +2661,9 @@ simplify_permutation (gimple_stmt_iterator *gsi)
 
       /* Shuffle of a constructor.  */
       bool ret = false;
-      tree res_type = TREE_TYPE (arg0);
+      tree res_type
+       = build_vector_type (TREE_TYPE (TREE_TYPE (arg0)),
+                            TYPE_VECTOR_SUBPARTS (TREE_TYPE (op2)));
       tree opt = fold_ternary (VEC_PERM_EXPR, res_type, arg0, arg1, op2);
       if (!opt
          || (TREE_CODE (opt) != CONSTRUCTOR && TREE_CODE (opt) != VECTOR_CST))