Fix demangler to handle conversion operators correctly.
authorccoutant <ccoutant@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Nov 2013 22:25:49 +0000 (22:25 +0000)
committerccoutant <ccoutant@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Nov 2013 22:25:49 +0000 (22:25 +0000)
commitf89ffc3b24e78dd4c9706bc3502941cf08edd56d
treecf760059b7f5810b1dae01b0b0f0aa1360c3155d
parentf8ff4a27f642c5518c34015952e644dd294d2ff8
Fix demangler to handle conversion operators correctly.

libiberty/
PR other/59195
* cp-demangle.c (struct d_info_checkpoint): New struct.
(struct d_print_info): Add current_template field.
(d_operator_name): Set flag when processing a conversion
operator.
(cplus_demangle_type): When processing <template-args> for
a conversion operator, backtrack if necessary.
(d_expression_1): Renamed from d_expression.
(d_expression): New wrapper around d_expression_1.
(d_checkpoint): New function.
(d_backtrack): New function.
(d_print_init): Initialize current_template.
(d_print_comp): Set current_template.
(d_print_cast): Put current_template in scope for
printing conversion operator name.
(cplus_demangle_init_info): Initialize is_expression and
is_conversion.
* cp-demangle.h (struct d_info): Add is_expression and
is_conversion fields.
* testsuite/demangle-expected: New test cases.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205292 138bc75d-0d04-0410-961f-82ee72b054a4
libiberty/ChangeLog
libiberty/cp-demangle.c
libiberty/cp-demangle.h
libiberty/testsuite/demangle-expected