Index: gdb/testsuite/gdb.cp/casts.cc
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/casts.cc,v
retrieving revision 1.1
diff -u -p -r1.1 casts.cc
--- gdb/testsuite/gdb.cp/casts.cc 23 Aug 2003 03:55:59 -0000 1.1
+++ gdb/testsuite/gdb.cp/casts.cc 28 Feb 2008 18:48:29 -0000
@@ -15,6 +15,8 @@ main (int argc, char **argv)
{
A *a = new B(42, 1729);
B *b = (B *) a;
+ A &ar = *b;
+ B &br = (B&)ar;
return 0; /* breakpoint spot: casts.exp: 1 */
}
Index: gdb/testsuite/gdb.cp/casts.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.cp/casts.exp,v
retrieving revision 1.6
diff -u -p -r1.6 casts.exp
--- gdb/testsuite/gdb.cp/casts.exp 1 Jan 2008 22:53:19 -0000 1.6
+++ gdb/testsuite/gdb.cp/casts.exp 28 Feb 2008 18:48:29 -0000
@@ -80,3 +80,20 @@ gdb_test "print * (B *) a" ".* = { =
# the dereference.
gdb_test "print * b" ".* = { = {a = 42}, b = 1729}" \
"let compiler cast base class pointer to derived class pointer"
+
+# Check upcasting (it is trivial but still).
+gdb_test "print * (A *) b" ".* = {a = 42}" \
+ "cast derived class pointer to base class pointer"
+
+# Casting References.
+# Check upcasting.
+gdb_test "print (A &) br" ".* = .A &.* {a = 42}" \
+ "cast derived class reference to base class reference"
+
+# Check downcasting.
+gdb_test "print (B &) ar" ".* = .B.* { = {a = 42}, b = 1729}" \
+ "cast base class reference to derived class reference"
+
+# Check compiler casting
+gdb_test "print br" ".* = .B.* { = {a = 42}, b = 1729}" \
+ "let compiler cast base class reference to derived class reference"