Hello,

this patch was regtested on ppc64le-redhat-linux.

2015-05-15  Marc Glisse  <marc.gli...@inria.fr>

gcc/
        * convert.c (convert_to_integer, convert_to_vector): Include the
        types in the error message.
gcc/testsuite/
        * gcc.dg/simd-1.c: Update to the new message.

--
Marc Glisse
Index: gcc/convert.c
===================================================================
--- gcc/convert.c       (revision 223214)
+++ gcc/convert.c       (working copy)
@@ -913,21 +913,23 @@ convert_to_integer (tree type, tree expr
       return build1 (FIXED_CONVERT_EXPR, type, expr);
 
     case COMPLEX_TYPE:
       return convert (type,
                      fold_build1 (REALPART_EXPR,
                                   TREE_TYPE (TREE_TYPE (expr)), expr));
 
     case VECTOR_TYPE:
       if (!tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (TREE_TYPE (expr))))
        {
-         error ("can%'t convert between vector values of different size");
+         error ("can%'t convert a vector of type %qT"
+                " to type %qT which has different size",
+                TREE_TYPE (expr), type);
          return error_mark_node;
        }
       return build1 (VIEW_CONVERT_EXPR, type, expr);
 
     default:
       error ("aggregate value used where an integer was expected");
       return convert (type, integer_zero_node);
     }
 }
 
@@ -997,21 +999,23 @@ convert_to_complex (tree type, tree expr
 
 tree
 convert_to_vector (tree type, tree expr)
 {
   switch (TREE_CODE (TREE_TYPE (expr)))
     {
     case INTEGER_TYPE:
     case VECTOR_TYPE:
       if (!tree_int_cst_equal (TYPE_SIZE (type), TYPE_SIZE (TREE_TYPE (expr))))
        {
-         error ("can%'t convert between vector values of different size");
+         error ("can%'t convert a value of type %qT"
+                " to vector type %qT which has different size",
+                TREE_TYPE (expr), type);
          return error_mark_node;
        }
       return build1 (VIEW_CONVERT_EXPR, type, expr);
 
     default:
       error ("can%'t convert value to a vector");
       return error_mark_node;
     }
 }
 
Index: gcc/testsuite/gcc.dg/simd-1.c
===================================================================
--- gcc/testsuite/gcc.dg/simd-1.c       (revision 223214)
+++ gcc/testsuite/gcc.dg/simd-1.c       (working copy)
@@ -38,21 +38,21 @@ hanneke ()
   /* Casted different signed SIMD assignment.  */
   f = (uv4si) a;
 
   /* Assignment between scalar and SIMD of different size.  */
   foo = a; /* { dg-error "incompatible types when assigning" } */
 
   /* Casted assignment between scalar and SIMD of same size.  */
   foo = (typeof (foo)) foo2;
 
   /* Casted assignment between scalar and SIMD of different size.  */
-  foo1 = (typeof (foo1)) foo2; /* { dg-error "can't convert between vector 
values of different size" } */
+  foo1 = (typeof (foo1)) foo2; /* { dg-error "can't convert a vector of type" 
} */
 
   /* Operators on compatible SIMD types.  */
   a += b + b;
   a -= b;
   a *= b;
   a /= b;
   a = -b;
 
   /* Operators on incompatible SIMD types.  */
   a = b + c; /* { dg-error "invalid operands to binary +" } */

Reply via email to