diff options
author | Mark Mitchell <mmitchell@usa.net> | 1997-10-14 19:12:27 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1997-10-14 15:12:27 -0400 |
commit | 041c97f2fb4da3813758f9b05b225df8fc8f2a49 (patch) | |
tree | 7fc98bff906fa8d1ec29983d7524357a2468f84c /gcc/cplus-dem.c | |
parent | 438998a93de67adbc22bfa1cd6bba6a7d8a62789 (diff) | |
download | gcc-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.c | 9 |
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; |