summaryrefslogtreecommitdiff
path: root/gdb/value.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2008-10-30 21:44:14 +0000
committerTom Tromey <tromey@redhat.com>2008-10-30 21:44:14 +0000
commit0a82c8f116e07825ffe642a39a151f4afb8461b9 (patch)
tree67b6088e1f34306af35d8c98116e4d6d87964a6c /gdb/value.c
parent8c2c39f7fcb89b215195a281dbeb6ded9f15eb21 (diff)
downloadgdb-0a82c8f116e07825ffe642a39a151f4afb8461b9.tar.gz
gdb
* value.c (coerce_array): Use check_typedef. gdb/testsuite * gdb.base/pointers.exp: Add test. * gdb.base/pointers.c (k, S): New typedefs. (instance): New global.
Diffstat (limited to 'gdb/value.c')
-rw-r--r--gdb/value.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/gdb/value.c b/gdb/value.c
index 1fa376d6555..695aa334390 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -1728,12 +1728,21 @@ coerce_ref (struct value *arg)
struct value *
coerce_array (struct value *arg)
{
+ struct type *type;
+
arg = coerce_ref (arg);
- if (current_language->c_style_arrays
- && TYPE_CODE (value_type (arg)) == TYPE_CODE_ARRAY)
- arg = value_coerce_array (arg);
- if (TYPE_CODE (value_type (arg)) == TYPE_CODE_FUNC)
- arg = value_coerce_function (arg);
+ type = check_typedef (value_type (arg));
+
+ switch (TYPE_CODE (type))
+ {
+ case TYPE_CODE_ARRAY:
+ if (current_language->c_style_arrays)
+ arg = value_coerce_array (arg);
+ break;
+ case TYPE_CODE_FUNC:
+ arg = value_coerce_function (arg);
+ break;
+ }
return arg;
}