summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2012-12-06 21:41:01 +0000
committerTom Tromey <tromey@redhat.com>2012-12-06 21:41:01 +0000
commite24240d23f4287258138f7ff85d8c4750d4b4745 (patch)
tree014a21e0a0da09bc56321419fd8ade4fbc9e6742
parentc922315294a657e7cd33568b3f7210937abed043 (diff)
downloadgdb-e24240d23f4287258138f7ff85d8c4750d4b4745.tar.gz
2012-12-06 Pedro Alves <palves@redhat.com>
Tom Tromey <tromey@redhat.com> * valops.c (value_cast): Move TYPE_CODE_VOID case earlier. testsuite * gdb.base/exprs.exp: Add tests for cast to void.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.base/exprs.exp4
-rw-r--r--gdb/valops.c8
4 files changed, 18 insertions, 4 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4f89004a953..7f9ca8fe356 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-06 Pedro Alves <palves@redhat.com>
+ Tom Tromey <tromey@redhat.com>
+
+ * valops.c (value_cast): Move TYPE_CODE_VOID case earlier.
+
2012-12-06 Jens Elmenthaler <jens.elmenthaler@advantest.com>
PR mi/14741:
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index f05cd87916a..335ecff6149 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-06 Pedro Alves <palves@redhat.com>
+ Tom Tromey <tromey@redhat.com>
+
+ * gdb.base/exprs.exp: Add tests for cast to void.
+
2012-12-06 Jens Elmenthaler <jens.elmenthaler@advantest.com>
* gdb.python/py-mi.exp: Correct expected results for attribute
diff --git a/gdb/testsuite/gdb.base/exprs.exp b/gdb/testsuite/gdb.base/exprs.exp
index c6a07fa4773..f3de09e1b9b 100644
--- a/gdb/testsuite/gdb.base/exprs.exp
+++ b/gdb/testsuite/gdb.base/exprs.exp
@@ -270,3 +270,7 @@ gdb_test {print v_int_array_init[1]@1} { = \{20\}}
# gdb's {} extension
gdb_test_no_output "set variable v_short_array\[0\] = 42"
gdb_test "print {short} v_short_array" "$decimal = 42"
+
+# Regression tests for cast to void.
+gdb_test "print (void) v_int_pointer" " = void"
+gdb_test "print & (void) v_char" "value not located in memory."
diff --git a/gdb/valops.c b/gdb/valops.c
index 1dd25799bfc..372f1186eeb 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -569,6 +569,10 @@ value_cast (struct type *type, struct value *arg2)
}
return val;
}
+ else if (code1 == TYPE_CODE_VOID)
+ {
+ return value_zero (type, not_lval);
+ }
else if (TYPE_LENGTH (type) == TYPE_LENGTH (type2))
{
if (code1 == TYPE_CODE_PTR && code2 == TYPE_CODE_PTR)
@@ -582,10 +586,6 @@ value_cast (struct type *type, struct value *arg2)
}
else if (VALUE_LVAL (arg2) == lval_memory)
return value_at_lazy (type, value_address (arg2));
- else if (code1 == TYPE_CODE_VOID)
- {
- return value_zero (type, not_lval);
- }
else
{
error (_("Invalid cast."));