This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[commit/Ada] ada_to_fixed_value should also unwrap_value
- From: Joel Brobecker <brobecker at adacore dot com>
- To: gdb-patches at sourceware dot org
- Cc: Joel Brobecker <brobecker at adacore dot com>
- Date: Wed, 29 Feb 2012 11:31:55 -0800
- Subject: [commit/Ada] ada_to_fixed_value should also unwrap_value
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.
Tested on x86_64-linux. Checked in.
---
gdb/ChangeLog | 8 ++++++++
gdb/ada-lang.c | 14 +++++++-------
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 87567e9..064efa2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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>
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 7c13910..7243ab8 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -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;
}
@@ -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);
}
--
1.7.1