merge from gcc

This commit is contained in:
DJ Delorie 2003-12-16 00:58:45 +00:00
parent ab4f2b471a
commit d35d0cd43c
3 changed files with 57 additions and 32 deletions

View File

@ -1,3 +1,14 @@
2003-12-15 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_print_function_type): Print the function
parameters with no modifiers.
* testsuite/demangle-expected: Add test case.
* cp-demangle.c (d_demangle): If DMGL_PARAMS is not set, don't
expect that we've read the entire string.
(is_ctor_or_dtor): Don't expect that we've read the entire
string--reverse patch of 2003-11-29.
2003-12-15 Brendan Kehoe <brendan@zen.org> 2003-12-15 Brendan Kehoe <brendan@zen.org>
* libiberty/Makefile.in (floatformat.o): Add dependency on * libiberty/Makefile.in (floatformat.o): Add dependency on

View File

@ -3396,7 +3396,14 @@ d_print_function_type (dpi, dc, mods)
d_append_char (dpi, '('); d_append_char (dpi, '(');
if (d_right (dc) != NULL) if (d_right (dc) != NULL)
d_print_comp (dpi, d_right (dc)); {
struct d_print_mod *hold_modifiers;
hold_modifiers = dpi->modifiers;
dpi->modifiers = NULL;
d_print_comp (dpi, d_right (dc));
dpi->modifiers = hold_modifiers;
}
d_append_char (dpi, ')'); d_append_char (dpi, ')');
@ -3622,9 +3629,11 @@ d_demangle (mangled, options, palc)
else else
dc = d_type (&di); dc = d_type (&di);
/* If we didn't consume the entire mangled string, then we didn't /* If DMGL_PARAMS is set, then if we didn't consume the entire
successfully demangle it. */ mangled string, then we didn't successfully demangle it. If
if (d_peek_char (&di) != '\0') DMGL_PARAMS is not set, we didn't look at the trailing
parameters. */
if (((options & DMGL_PARAMS) != 0) && d_peek_char (&di) != '\0')
dc = NULL; dc = NULL;
#ifdef CP_DEMANGLE_DEBUG #ifdef CP_DEMANGLE_DEBUG
@ -3829,37 +3838,37 @@ is_ctor_or_dtor (mangled, ctor_kind, dtor_kind)
dc = d_mangled_name (&di, 1); dc = d_mangled_name (&di, 1);
/* Note that because we did not pass DMGL_PARAMS, we don't expect to
demangle the entire string. */
ret = 0; ret = 0;
if (d_peek_char (&di) == '\0') while (dc != NULL)
{ {
while (dc != NULL) switch (dc->type)
{ {
switch (dc->type) default:
{ dc = NULL;
default: break;
dc = NULL; case D_COMP_TYPED_NAME:
break; case D_COMP_TEMPLATE:
case D_COMP_TYPED_NAME: case D_COMP_RESTRICT_THIS:
case D_COMP_TEMPLATE: case D_COMP_VOLATILE_THIS:
case D_COMP_RESTRICT_THIS: case D_COMP_CONST_THIS:
case D_COMP_VOLATILE_THIS: dc = d_left (dc);
case D_COMP_CONST_THIS: break;
dc = d_left (dc); case D_COMP_QUAL_NAME:
break; dc = d_right (dc);
case D_COMP_QUAL_NAME: break;
dc = d_right (dc); case D_COMP_CTOR:
break; *ctor_kind = dc->u.s_ctor.kind;
case D_COMP_CTOR: ret = 1;
*ctor_kind = dc->u.s_ctor.kind; dc = NULL;
ret = 1; break;
dc = NULL; case D_COMP_DTOR:
break; *dtor_kind = dc->u.s_dtor.kind;
case D_COMP_DTOR: ret = 1;
*dtor_kind = dc->u.s_dtor.kind; dc = NULL;
ret = 1; break;
dc = NULL;
break;
}
} }
} }

View File

@ -2916,6 +2916,11 @@ void f<-1>()
_ZNSdD0Ev _ZNSdD0Ev
std::basic_iostream<char, std::char_traits<char> >::~basic_iostream() std::basic_iostream<char, std::char_traits<char> >::~basic_iostream()
# #
# Another case where we got member function qualifiers wrong.
--format=gnu-v3
_ZNK15nsBaseHashtableI15nsUint32HashKey8nsCOMPtrI4IFooEPS2_E13EnumerateReadEPF15PLDHashOperatorRKjS4_PvES9_
nsBaseHashtable<nsUint32HashKey, nsCOMPtr<IFoo>, IFoo*>::EnumerateRead(PLDHashOperator (*)(unsigned int const&, IFoo*, void*), void*) const
#
# This caused an infinite loop. # This caused an infinite loop.
# #
# This is generated by an EDG compiler (kcc 4.0). To demangle it # This is generated by an EDG compiler (kcc 4.0). To demangle it