gdb
authorTom Tromey <tromey@redhat.com>
Mon, 18 Jan 2010 20:54:35 +0000 (20:54 +0000)
committerTom Tromey <tromey@redhat.com>
Mon, 18 Jan 2010 20:54:35 +0000 (20:54 +0000)
commit4e8f195d9dd0be6a5caf9349883db5a531aabd5f
tree4135b82af0d720a7a7e9786de58cf7cfc9486885
parentd9c57d9ff1bf3533ddb272717afe2b18f61dd017
gdb
PR c++/9680:
* c-exp.y (REINTERPRET_CAST, DYNAMIC_CAST, STATIC_CAST)
(CONST_CAST): New tokens.
(exp): Add new productions.
(ident_tokens): Add const_cast, dynamic_cast, static_cast, and
reinterpret_cast.
(is_cast_operator): New function.
(yylex): Handle cast operators specially.
* eval.c (evaluate_subexp_standard) <UNOP_DYNAMIC_CAST,
UNOP_REINTERPRET_CAST>: New cases.
* expprint.c (print_subexp_standard): Likewise.
(op_name_standard): Likewise.
(dump_subexp_body_standard): Likewise.
* parse.c (operator_length_standard): Likewise.
* expression.h (enum exp_opcode): New constants UNOP_DYNAMIC_CAST,
UNOP_REINTERPRET_CAST.
* gdbtypes.c (class_types_same_p): New function.
(is_ancestor): Use it.
(is_public_ancestor): New function.
(is_unique_ancestor_worker): Likewise.
(is_unique_ancestor): Likewise.
* gdbtypes.h (class_types_same_p, is_public_ancestor)
(is_unique_ancestor): Declare.
* valops.c (value_reinterpret_cast): New function.
(dynamic_cast_check_1): Likewise.
(dynamic_cast_check_2): Likewise.
(value_dynamic_cast): Likewise.
* value.h (value_reinterpret_cast, value_dynamic_cast): Declare.
gdb/testsuite
PR c++/9680:
* gdb.cp/casts.cc: Add new classes and variables.
* gdb.cp/casts.exp: Test new operators.
13 files changed:
gdb/ChangeLog
gdb/c-exp.y
gdb/eval.c
gdb/expprint.c
gdb/expression.h
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/parse.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.cp/casts.cc
gdb/testsuite/gdb.cp/casts.exp
gdb/valops.c
gdb/value.h