This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
I've made a small revision to this patch to handle recursive invocations of d_expression and d_operator_name, restoring the previous values of is_expression and is_conversion instead of just setting them to 0 upon return. I've also added the long test case that results in a substitution misnumbering in the current demangler. -cary > 2013-11-19 Cary Coutant <ccoutant@google.com> > > 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.
Attachment:
demangle-cv-patch-2.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |