summaryrefslogtreecommitdiff
path: root/libiberty/cplus-dem.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-10-11 08:32:10 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-10-11 08:32:10 +0000
commit7c56a6cef7938d2f017efa78300a2bf63956fd2e (patch)
tree7bd986ec1965f661fdc33be919399c3bfa49ea65 /libiberty/cplus-dem.c
parentba33cb50d6c78b34d7f79ab3116ae24be8e5f330 (diff)
downloadgcc-7c56a6cef7938d2f017efa78300a2bf63956fd2e.tar.gz
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
Diffstat (limited to 'libiberty/cplus-dem.c')
-rw-r--r--libiberty/cplus-dem.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index ef6c5111dc4..6a6bc1afa9a 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;