Ada: ada_to_fixed_value should also unwrap_value
authorJoel Brobecker <brobecker@gnat.com>
Wed, 29 Feb 2012 19:30:53 +0000 (19:30 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Wed, 29 Feb 2012 19:30:53 +0000 (19:30 +0000)
We should always unwrap a value before trying to "fix" it. It is
therefore logical that ada_to_fixed_value would call unwrap_value
before creating the fixed value.

This simplifies the code in ada-lang.c a bit.

gdb/ChangeLog:

        * ada-lang.c (ada_to_fixed_value): Call unwrap_value before
        creating fixed value.
        (ada_value_ind, ada_coerce_ref, assign_component)
        (ada_evaluate_subexp): Remove call to unwrap_value before
        call to ada_to_fixed_value.

gdb/ChangeLog
gdb/ada-lang.c

index 87567e9..064efa2 100644 (file)
@@ -1,5 +1,13 @@
 2012-02-29  Joel Brobecker  <brobecker@adacore.com>
 
+       * ada-lang.c (ada_to_fixed_value): Call unwrap_value before
+       creating fixed value.
+       (ada_value_ind, ada_coerce_ref, assign_component)
+       (ada_evaluate_subexp): Remove call to unwrap_value before
+       call to ada_to_fixed_value.
+
+2012-02-29  Joel Brobecker  <brobecker@adacore.com>
+
        * ada-lang.c (to_fixed_array_type): Set result's type name.
 
 2012-02-29  Joel Brobecker  <brobecker@adacore.com>
index 7c13910..7243ab8 100644 (file)
@@ -6902,7 +6902,7 @@ ada_which_variant_applies (struct type *var_type, struct type *outer_type,
 struct value *
 ada_value_ind (struct value *val0)
 {
-  struct value *val = unwrap_value (value_ind (val0));
+  struct value *val = value_ind (val0);
 
   return ada_to_fixed_value (val);
 }
@@ -6918,7 +6918,6 @@ ada_coerce_ref (struct value *val0)
       struct value *val = val0;
 
       val = coerce_ref (val);
-      val = unwrap_value (val);
       return ada_to_fixed_value (val);
     }
   else
@@ -8138,9 +8137,11 @@ ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
 struct value *
 ada_to_fixed_value (struct value *val)
 {
-  return ada_to_fixed_value_create (value_type (val),
-                                    value_address (val),
-                                    val);
+  val = unwrap_value (val);
+  val = ada_to_fixed_value_create (value_type (val),
+                                     value_address (val),
+                                     val);
+  return val;
 }
 \f
 
@@ -8702,7 +8703,7 @@ assign_component (struct value *container, struct value *lhs, LONGEST index,
   else
     {
       elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
-      elt = ada_to_fixed_value (unwrap_value (elt));
+      elt = ada_to_fixed_value (elt);
     }
 
   if (exp->elts[*pos].opcode == OP_AGGREGATE)
@@ -9539,7 +9540,6 @@ ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
       else
         {
           arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
-          arg1 = unwrap_value (arg1);
           return ada_to_fixed_value (arg1);
         }