From: Mark Mitchell Date: Mon, 11 Oct 1999 08:32:10 +0000 (+0000) Subject: cplus-dem.c (do_type): Handle pointer to member types whose enclosing classes have... X-Git-Tag: prereleases/libstdc++-2.92~10127 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7c56a6cef7938d2f017efa78300a2bf63956fd2e;p=thirdparty%2Fgcc.git cplus-dem.c (do_type): Handle pointer to member types whose enclosing classes have namespace scope. * cplus-dem.c (do_type): Handle pointer to member types whose enclosing classes have namespace scope. From-SVN: r29901 --- diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index e80098ea208d..05dfb36b937e 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +1999-10-11 Mark Mitchell + + * cplus-dem.c (do_type): Handle pointer to member types whose + enclosing classes have namespace scope. + Sun Oct 10 01:23:50 1999 Marc Espie * config.table: Provide a backup shell for executing move-if-change. diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index ef6c5111dc4e..6a6bc1afa9aa 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -3072,7 +3072,12 @@ do_type (work, mangled, result) (*mangled)++; string_append (&decl, ")"); - string_prepend (&decl, SCOPE_STRING (work)); + + /* We don't need to prepend `::' for a qualified name; + demangle_qualified will do that for us. */ + if (**mangled != 'Q') + string_prepend (&decl, SCOPE_STRING (work)); + if (isdigit ((unsigned char)**mangled)) { n = consume_count (mangled); @@ -3105,6 +3110,14 @@ do_type (work, mangled, result) else break; } + else if (**mangled == 'Q') + { + success = demangle_qualified (work, mangled, &decl, + /*isfuncnam=*/0, + /*append=*/0); + if (!success) + break; + } else { success = 0; diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index ad04d116d8b4..0156d273a295 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -2470,3 +2470,7 @@ _Utf390_1__1_9223372036854775807__9223372036854775 --format=gnu call__H1Z4Test_RX01_t1C2ZX01PMX01FPX01i_vQ2X016output C call(Test &) +# +--format=gnu +fn__FPQ21n1cPMQ21n1cFPQ21n1c_i +fn(n::c *, int (n::c::*)(n::c *))