From: Mark Mitchell Date: Tue, 14 Oct 1997 19:12:27 +0000 (+0000) Subject: cplus-dem.c (demangle_signature): Don't look for return types on constructors. X-Git-Tag: releases/egcs-1.0.0~339 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=041c97f2fb4da3813758f9b05b225df8fc8f2a49;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 51f65b0cc655..0e8a1efd6255 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Oct 14 12:01:00 1997 Mark Mitchell + + * cplus-dem.c (demangle_signature): Don't look for return types on + constructors. Handle member template constructors. + Tue Oct 14 11:30:29 1997 Jason Merrill * tree.c (expr_tree_cons, build_expr_list, expralloc): New fns. diff --git a/gcc/cplus-dem.c b/gcc/cplus-dem.c index 055ab0818e5d..58f37688b6bd 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 __ @@ -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;