From: Jason Merrill Date: Thu, 19 Sep 1996 00:47:43 +0000 (+0000) Subject: (demangle_template): Fix handling of address args. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c486ed79fd864ca0bf86a453206bd14ceae00992;p=gcc.git (demangle_template): Fix handling of address args. (gnu_special): Handle type_info stuff. From-SVN: r12746 --- diff --git a/gcc/cplus-dem.c b/gcc/cplus-dem.c index 3ac16808931..90969a9faed 100644 --- a/gcc/cplus-dem.c +++ b/gcc/cplus-dem.c @@ -1055,7 +1055,8 @@ demangle_template (work, mangled, tname, trawname) } else if (is_pointer) { - if (!get_count (mangled, &symbol_len)) + symbol_len = consume_count (mangled); + if (symbol_len == 0) { success = 0; break; @@ -1596,6 +1597,29 @@ gnu_special (work, mangled, declp) success = 0; } } + else if (strncmp (*mangled, "__t", 3) == 0 + && ((*mangled)[3] == 'i' || (*mangled)[3] == 'f')) + { + p = (*mangled)[3] == 'i' ? " type_info node" : " type_info function"; + (*mangled) += 4; + switch (**mangled) + { + case 'Q': + success = demangle_qualified (work, mangled, declp, 0, 1); + break; + case 't': + success = demangle_template (work, mangled, declp, 0); + break; + default: + n = consume_count (mangled); + string_appendn (declp, *mangled, n); + (*mangled) += n; + } + if (success && **mangled != '\0') + success = 0; + if (success) + string_append (declp, p); + } else { success = 0;