This is the mail archive of the 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]

Re: [patch] PR 59195: C++ demangler handles conversion operator incorrectly

On Thu, Nov 21, 2013 at 1:22 PM, Cary Coutant <> wrote:
> 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  <>
>> 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.

This is OK.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]