aboutsummaryrefslogtreecommitdiff
path: root/gcc/cplus-dem.c
diff options
context:
space:
mode:
authorMark Mitchell <mmitchell@usa.net>1997-10-14 19:12:27 +0000
committerJason Merrill <jason@gcc.gnu.org>1997-10-14 15:12:27 -0400
commit041c97f2fb4da3813758f9b05b225df8fc8f2a49 (patch)
tree7fc98bff906fa8d1ec29983d7524357a2468f84c /gcc/cplus-dem.c
parent438998a93de67adbc22bfa1cd6bba6a7d8a62789 (diff)
downloadgcc-041c97f2fb4da3813758f9b05b225df8fc8f2a49.zip
gcc-041c97f2fb4da3813758f9b05b225df8fc8f2a49.tar.gz
gcc-041c97f2fb4da3813758f9b05b225df8fc8f2a49.tar.bz2
cplus-dem.c (demangle_signature): Don't look for return types on constructors.
* cplus-dem.c (demangle_signature): Don't look for return types on constructors. Handle member template constructors. From-SVN: r15903
Diffstat (limited to 'gcc/cplus-dem.c')
-rw-r--r--gcc/cplus-dem.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/cplus-dem.c b/gcc/cplus-dem.c
index 055ab08..58f3768 100644
--- a/gcc/cplus-dem.c
+++ b/gcc/cplus-dem.c
@@ -831,7 +831,8 @@ demangle_signature (work, mangled, declp)
{
/* A G++ template function. Read the template arguments. */
success = demangle_template (work, mangled, declp, 0, 0);
- expect_return_type = 1;
+ if (!(work->constructor & 1))
+ expect_return_type = 1;
(*mangled)++;
break;
}
@@ -1534,7 +1535,8 @@ demangle_prefix (work, mangled, declp)
}
}
else if ((scan == *mangled)
- && (isdigit (scan[2]) || (scan[2] == 'Q') || (scan[2] == 't')))
+ && (isdigit (scan[2]) || (scan[2] == 'Q') || (scan[2] == 't')
+ || (scan[2] == 'H')))
{
/* The ARM says nothing about the mangling of local variables.
But cfront mangles local variables by prepending __<nesting_level>
@@ -1551,7 +1553,8 @@ demangle_prefix (work, mangled, declp)
{
/* A GNU style constructor starts with __[0-9Qt]. But cfront uses
names like __Q2_3foo3bar for nested type names. So don't accept
- this style of constructor for cfront demangling. */
+ this style of constructor for cfront demangling. A GNU
+ style member-template constructor starts with 'H'. */
if (!(LUCID_DEMANGLING || ARM_DEMANGLING))
work -> constructor += 1;
*mangled = scan + 2;