+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.
 
 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);
 }
       struct value *val = val0;
 
       val = coerce_ref (val);
-      val = unwrap_value (val);
       return ada_to_fixed_value (val);
     }
   else
 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
 
   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)
       else
         {
           arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
-          arg1 = unwrap_value (arg1);
           return ada_to_fixed_value (arg1);
         }