merge from gcc
This commit is contained in:
parent
e7a13aba80
commit
6f84855018
3 changed files with 33 additions and 11 deletions
|
@ -1,3 +1,14 @@
|
|||
2002-02-18 Carlo Wood <carlo@gnu.org>
|
||||
|
||||
PR c++/5390
|
||||
* cplus-dem.c (demangle_integral_value): Accept multi-digit
|
||||
numbers that do not start with an underscore; This is needed
|
||||
for integer template parameters. This doesn't break anything
|
||||
because multi-digit numbers are never followed by a digit.
|
||||
* testsuite/demangle-expected: Corrected all mangled test
|
||||
cases with multi-digit template parameters: g++ 2.95.x does
|
||||
not generate underscores around these parameters.
|
||||
|
||||
2002-02-05 Jason Merrill <jason@redhat.com>
|
||||
|
||||
* cplus-dem.c (flags): Add DMGL_VERBOSE
|
||||
|
|
|
@ -1787,7 +1787,7 @@ demangle_integral_value (work, mangled, s)
|
|||
|
||||
/* By default, we let the number decide whether we shall consume an
|
||||
underscore. */
|
||||
int consume_following_underscore = 0;
|
||||
int multidigit_without_leading_underscore = 0;
|
||||
int leave_following_underscore = 0;
|
||||
|
||||
success = 0;
|
||||
|
@ -1804,23 +1804,34 @@ demangle_integral_value (work, mangled, s)
|
|||
`m'-prefix we must do it here, using consume_count and
|
||||
adjusting underscores: we have to consume the underscore
|
||||
matching the prepended one. */
|
||||
consume_following_underscore = 1;
|
||||
multidigit_without_leading_underscore = 1;
|
||||
string_appendn (s, "-", 1);
|
||||
(*mangled) += 2;
|
||||
}
|
||||
else if (**mangled == '_')
|
||||
{
|
||||
/* Do not consume a following underscore;
|
||||
consume_following_underscore will consume what should be
|
||||
multidigit_without_leading_underscore will consume what should be
|
||||
consumed. */
|
||||
leave_following_underscore = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Since consume_count_with_underscores does not handle
|
||||
multi-digit numbers that do not start with an underscore,
|
||||
and this number can be an integer template parameter,
|
||||
we have to call consume_count. */
|
||||
multidigit_without_leading_underscore = 1;
|
||||
/* These multi-digit numbers never end on an underscore,
|
||||
so if there is one then don't eat it. */
|
||||
leave_following_underscore = 1;
|
||||
}
|
||||
|
||||
/* We must call consume_count if we expect to remove a trailing
|
||||
underscore, since consume_count_with_underscores expects
|
||||
the leading underscore (that we consumed) if it is to handle
|
||||
multi-digit numbers. */
|
||||
if (consume_following_underscore)
|
||||
if (multidigit_without_leading_underscore)
|
||||
value = consume_count (mangled);
|
||||
else
|
||||
value = consume_count_with_underscores (mangled);
|
||||
|
@ -1838,7 +1849,7 @@ demangle_integral_value (work, mangled, s)
|
|||
is wrong. If other (arbitrary) cases are followed by an
|
||||
underscore, we need to do something more radical. */
|
||||
|
||||
if ((value > 9 || consume_following_underscore)
|
||||
if ((value > 9 || multidigit_without_leading_underscore)
|
||||
&& ! leave_following_underscore
|
||||
&& **mangled == '_')
|
||||
(*mangled)++;
|
||||
|
|
|
@ -2476,15 +2476,15 @@ fn__FPQ21n1cPMQ21n1cFPQ21n1c_i
|
|||
fn(n::c *, int (n::c::*)(n::c *))
|
||||
#
|
||||
--format=gnu
|
||||
f__FGt3Bar1i21i
|
||||
f__FGt3Bar1i2G1i
|
||||
f(Bar<2>, i)
|
||||
#
|
||||
--format=gnu
|
||||
f__FGt3Bar1i_21_i
|
||||
f__FGt3Bar1i21i
|
||||
f(Bar<21>, int)
|
||||
#
|
||||
--format=gnu
|
||||
f__FGt3Bar1i24XY_t
|
||||
f__FGt3Bar1i2G4XY_t
|
||||
f(Bar<2>, XY_t)
|
||||
#
|
||||
--format=gnu
|
||||
|
@ -2492,11 +2492,11 @@ foo__H1Zt2TA2ZRCiZt2NA1Ui9_X01_i
|
|||
int foo<TA<int const &, NA<9> > >(TA<int const &, NA<9> >)
|
||||
#
|
||||
--format=gnu
|
||||
foo__H1Zt2TA2ZcZt2NA1Ui_20__X01_i
|
||||
foo__H1Zt2TA2ZcZt2NA1Ui20_X01_i
|
||||
int foo<TA<char, NA<20> > >(TA<char, NA<20> >)
|
||||
#
|
||||
--format=gnu
|
||||
foo__H1Zt2TA2ZiZt8N___A___1Ui_99__X01_i
|
||||
foo__H1Zt2TA2ZiZt8N___A___1Ui99_X01_i
|
||||
int foo<TA<int, N___A___<99> > >(TA<int, N___A___<99> >)
|
||||
#
|
||||
--format=gnu
|
||||
|
@ -2532,7 +2532,7 @@ __opi__t2TA2ZiZt8N___A___1i_m99_
|
|||
TA<int, N___A___<-99> >::operator int(void)
|
||||
#
|
||||
--format=gnu
|
||||
foo___bar__baz_____H1Zt2TA2ZiZt8N___A___1i_99__X01_i
|
||||
foo___bar__baz_____H1Zt2TA2ZiZt8N___A___1i99_X01_i
|
||||
int foo___bar__baz___<TA<int, N___A___<99> > >(TA<int, N___A___<99> >)
|
||||
#
|
||||
--format=gnu
|
||||
|
|
Loading…
Reference in a new issue