gdb/ChangeLog:* valops.c (value_assign): Do not call to value_coerce_to_target.(value...
authorKen Werner <ken.werner@de.ibm.com>
Wed, 14 Jul 2010 14:54:58 +0000 (14:54 +0000)
committerKen Werner <ken.werner@de.ibm.com>
Wed, 14 Jul 2010 14:54:58 +0000 (14:54 +0000)
gdb/ChangeLog
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/altivec-abi.exp
gdb/valops.c

index 334e7b040529484fcdf318d556b61ecb63fbca7f..1cfa87db0f6b098b17790b8710b8390d722e4df7 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-14  Ken Werner  <ken.werner@de.ibm.com>
+
+       * valops.c (value_assign): Do not call to value_coerce_to_target.
+       (value_must_coerce_to_target): Return 0 in case of TYPE_VECTOR.
+
 2010-07-14  Ken Werner  <ken.werner@de.ibm.com>
 
        * MAINTAINERS: Add myself for write after approval privileges.
index 6b52dbbf34041f4448e748f2dc074838d932e0b8..e657676d2a85bfe4abcf82ca25ea8d00ff9c3783 100644 (file)
@@ -1,3 +1,7 @@
+2010-07-14  Ken Werner  <ken.werner@de.ibm.com>
+
+       * gdb.arch/altivec-abi.exp: New tests.
+
 2010-07-13  Tom Tromey  <tromey@redhat.com>
 
        * gdb.python/py-prettyprint.c (struct arraystruct): New struct.
index dc9a22cbc04479431cadb957fe74b26cb36bc198..907257a1795564ff3f15d081ff93c6aaab134072 100644 (file)
@@ -98,6 +98,16 @@ proc altivec_abi_tests { extra_flags force_abi } {
     gdb_test "p vec_func(vshort_d,vushort_d,vint_d,vuint_d,vchar_d,vuchar_d,vfloat_d,x_d,y_d,a_d,b_d,c_d,intv_on_stack_d)" \
        ".\[0-9\]+ = .0, 0, 0, 0." "call inferior function with vectors (2)"
 
+    # Attempt to take address of the return value of vec_func.
+    gdb_test "p &vec_func(vshort,vushort,vint,vuint,vchar,vuchar,vfloat,x,y,a,b,c,intv_on_stack)" \
+       "Attempt to take address of value not located in memory." \
+       "Attempt to take address of the return value of vec_func"
+
+    # Attempt to assing a value to the return value of vec_func.
+    gdb_test "set variable vec_func(vshort,vushort,vint,vuint,vchar,vuchar,vfloat,x,y,a,b,c,intv_on_stack) = {0,1,2,3}" \
+       "Left operand of assignment is not an lvalue." \
+       "Attempt to assing a value to the return value of vec_func"
+
     # Let's step into the function, to see if the args are printed correctly.
     gdb_test "step" \
        $pattern1 \
index 7fbad10ce34db9c386e84bdf0b1d87f447be46a6..8150d7ece417aa0da190616ab9561d14d56863a0 100644 (file)
@@ -1079,10 +1079,7 @@ value_assign (struct value *toval, struct value *fromval)
 
   type = value_type (toval);
   if (VALUE_LVAL (toval) != lval_internalvar)
-    {
-      toval = value_coerce_to_target (toval);
-      fromval = value_cast (type, fromval);
-    }
+    fromval = value_cast (type, fromval);
   else
     {
       /* Coerce arrays and functions to pointers, except for arrays
@@ -1427,6 +1424,7 @@ value_must_coerce_to_target (struct value *val)
   switch (TYPE_CODE (valtype))
     {
     case TYPE_CODE_ARRAY:
+      return TYPE_VECTOR (valtype) ? 0 : 1;
     case TYPE_CODE_STRING:
       return 1;
     default: