diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-10-11 08:32:10 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-10-11 08:32:10 +0000 |
commit | 7c56a6cef7938d2f017efa78300a2bf63956fd2e (patch) | |
tree | 7bd986ec1965f661fdc33be919399c3bfa49ea65 /libiberty/cplus-dem.c | |
parent | ba33cb50d6c78b34d7f79ab3116ae24be8e5f330 (diff) | |
download | gcc-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.c | 15 |
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; |