[google/gcc-4_8] Fix demangler to handle conversion operators correctly

Cary Coutant ccoutant@google.com
Thu Feb 20 22:54:00 GMT 2014


I've backported this patch from trunk at r205292. Committed on
google/gcc-4_8 branch as r207971.

Tested with make check in libiberty.

-cary


    2013-11-22  Cary Coutant  <ccoutant@google.com>

    libiberty/
        * 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.



More information about the Gcc-patches mailing list