From fbfd63c0a6ed1f8192020ab09b1edc4496aff91a Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Tue, 10 Jan 2012 18:15:34 +0000 Subject: [PATCH] merge from gcc --- libiberty/ChangeLog | 5 +++++ libiberty/cp-demangle.c | 13 ++++++++----- libiberty/testsuite/demangle-expected | 3 +++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 8587ee2eab..e6060a7630 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +2012-01-10 Jason Merrill + + * cp-demangle.c (d_print_comp) [DEMANGLE_COMPONENT_OPERATOR]: + Omit a trailing space in the operator name. + 2012-01-06 Jason Merrill PR c++/6057 diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 2dfd67ceb7..18b84a126e 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -4357,14 +4357,17 @@ d_print_comp (struct d_print_info *dpi, int options, case DEMANGLE_COMPONENT_OPERATOR: { - char c; + const struct demangle_operator_info *op = dc->u.s_operator.op; + int len = op->len; d_append_string (dpi, "operator"); - c = dc->u.s_operator.op->name[0]; - if (IS_LOWER (c)) + /* Add a space before new/delete. */ + if (IS_LOWER (op->name[0])) d_append_char (dpi, ' '); - d_append_buffer (dpi, dc->u.s_operator.op->name, - dc->u.s_operator.op->len); + /* Omit a trailing space. */ + if (op->name[len-1] == ' ') + --len; + d_append_buffer (dpi, op->name, len); return; } diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index 3f3960a409..408c4f4779 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -4058,6 +4058,9 @@ decltype ((::delete {parm#1}),(+{parm#1})) f(int*) _Z1fIiEDTcmdafp_psfp_EPT_ decltype ((delete[] {parm#1}),(+{parm#1})) f(int*) --format=gnu-v3 +_ZN1AdlEPv +A::operator delete(void*) +--format=gnu-v3 _Z2f1IiEDTppfp_ET_ decltype ({parm#1}++) f1(int) --format=gnu-v3