public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/13447] New: Another demangler problem with method cv-qualifiers
@ 2003-12-19 16:32 drow at gcc dot gnu dot org
2003-12-19 16:35 ` [Bug c++/13447] " ian at wasabisystems dot com
` (11 more replies)
0 siblings, 12 replies; 13+ messages in thread
From: drow at gcc dot gnu dot org @ 2003-12-19 16:32 UTC (permalink / raw)
To: gcc-bugs
Try demangling this name:
_ZZN8CryptoPP7NullRNGEvENK7NullRNG13AlgorithmNameEv
The resulting tree looks like:
typed name
qualified name
typed name
qualified name
name 'CryptoPP'
name 'NullRNG'
function type
const this
qualified name
name 'NullRNG'
name 'AlgorithmName'
function type
It seems to me that the const this applies to the AlgorithmName, and should be
printed
after its argument list. Instead it's printed as:
CryptoPP::NullRNG()::NullRNG::AlgorithmName const()
The old demangler did this too. This is presumably caused by the 'odd' qualified
name whose leftmost part is a typed name.
--
Summary: Another demangler problem with method cv-qualifiers
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c++
AssignedTo: ian at airs dot com
ReportedBy: drow at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC host triplet: i386-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
@ 2003-12-19 16:35 ` ian at wasabisystems dot com
2003-12-19 16:37 ` drow at mvista dot com
` (10 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ian at wasabisystems dot com @ 2003-12-19 16:35 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From ian at wasabisystems dot com 2003-12-19 16:10 -------
Subject: Re: New: Another demangler problem with method cv-qualifiers
"drow at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org> writes:
> Try demangling this name:
> _ZZN8CryptoPP7NullRNGEvENK7NullRNG13AlgorithmNameEv
I agree that something seems to be wrong. However, I'm currently
confused by the placement of qualifiers in complex cases, so I'm not
sure how to correctly resolve this.
See
http://gcc.gnu.org/ml/gcc/2003-12/msg00902.html
I have not received any reply to this question.
I note that my demangler, the old libiberty demangler, and the C++
demangler all produce the same result for this mangled name.
It might help if you provided the C++ source code which generates this
mangled name.
Ian
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
2003-12-19 16:35 ` [Bug c++/13447] " ian at wasabisystems dot com
@ 2003-12-19 16:37 ` drow at mvista dot com
2003-12-19 18:41 ` ian at wasabisystems dot com
` (9 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: drow at mvista dot com @ 2003-12-19 16:37 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From drow at mvista dot com 2003-12-19 16:25 -------
Subject: Re: New: Another demangler problem with method cv-qualifiers
On Fri, Dec 19, 2003 at 11:10:25AM -0500, Ian Lance Taylor wrote:
> I agree that something seems to be wrong. However, I'm currently
> confused by the placement of qualifiers in complex cases, so I'm not
> sure how to correctly resolve this.
I am somewhat confused also. I've just made my parser recognize types and
variables nested within functions, which is a common demangler output
and nonsensical C++.
> It might help if you provided the C++ source code which generates this
> mangled name.
It came from Michael Chastain's list of mangled names. Here's another
example which shows the same problem however:
struct Foo { Foo() { } };
template<typename B> void BBd () {
static Foo foo;
struct Fob {
public:
Fob() { }
int Fab() const { }
};
static Fob fob;
fob.Fab();
}
template<typename B> class BB {
public:
BB() { static Foo foo; BBc (); BBd<B> (); }
int BBc() { static Foo foo; }
};
BB<Foo> obj;
The item of interest is:
0000002a t void BBd<Foo>()::Fob::Fab const()
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
2003-12-19 16:35 ` [Bug c++/13447] " ian at wasabisystems dot com
2003-12-19 16:37 ` drow at mvista dot com
@ 2003-12-19 18:41 ` ian at wasabisystems dot com
2003-12-19 18:57 ` drow at mvista dot com
` (8 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ian at wasabisystems dot com @ 2003-12-19 18:41 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From ian at wasabisystems dot com 2003-12-19 18:28 -------
Subject: Re: New: Another demangler problem with method cv-qualifiers
Daniel Jacobowitz <drow@mvista.com> writes:
> It came from Michael Chastain's list of mangled names. Here's another
> example which shows the same problem however:
How do you handle
class C { public: template<typename i> int (*f() const)(); };
int foo(const C c) { return (*c.f<int>())(); }
?
The mangled name is _ZNK1C1fIiEEPFivEv, which currently demangles as
int (*C::f<int>() const)()
That more or less corresponds to the declaration. However, I don't
know whether this is correct C++.
Ian
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (2 preceding siblings ...)
2003-12-19 18:41 ` ian at wasabisystems dot com
@ 2003-12-19 18:57 ` drow at mvista dot com
2003-12-19 19:18 ` ian at wasabisystems dot com
` (7 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: drow at mvista dot com @ 2003-12-19 18:57 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From drow at mvista dot com 2003-12-19 18:36 -------
Subject: Re: New: Another demangler problem with method cv-qualifiers
On Fri, Dec 19, 2003 at 01:28:30PM -0500, Ian Lance Taylor wrote:
> The mangled name is _ZNK1C1fIiEEPFivEv, which currently demangles as
>
> int (*C::f<int>() const)()
>
> That more or less corresponds to the declaration. However, I don't
> know whether this is correct C++.
I believe it's correct C++. At least, it exercises the bits of my
parser most closely based on the standard, and I parse it exactly as
above. The CONST_THIS gets attached to the function_arglist used for
the method itself, not the return type.
Dan
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (3 preceding siblings ...)
2003-12-19 18:57 ` drow at mvista dot com
@ 2003-12-19 19:18 ` ian at wasabisystems dot com
2003-12-19 19:28 ` giovannibajo at libero dot it
` (6 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ian at wasabisystems dot com @ 2003-12-19 19:18 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From ian at wasabisystems dot com 2003-12-19 18:41 -------
Subject: Re: New: Another demangler problem with method cv-qualifiers
Daniel Jacobowitz <drow@mvista.com> writes:
> On Fri, Dec 19, 2003 at 01:28:30PM -0500, Ian Lance Taylor wrote:
> > The mangled name is _ZNK1C1fIiEEPFivEv, which currently demangles as
> >
> > int (*C::f<int>() const)()
> >
> > That more or less corresponds to the declaration. However, I don't
> > know whether this is correct C++.
>
> I believe it's correct C++. At least, it exercises the bits of my
> parser most closely based on the standard, and I parse it exactly as
> above. The CONST_THIS gets attached to the function_arglist used for
> the method itself, not the return type.
What would it mean to attach to CONST_THIS to the return type?
Specifically, this example does not compile:
class C { public: template<typename i> int (*f())() const; };
int foo(const C c) { return (*c.f<int>())(); }
but this one does:
class C { public: template<typename i> int (*f())() const; };
int foo(C c) { return (*c.f<int>())(); }
The only change is that foo's argument is not const.
The mangled name is _ZN1C1fIiEEPFivEv which demangles to
int (*C::f<int>())()
What is the meaning of that trailing const on the first line? What
does it mean to apply a trailing const to a return type?
Ian
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (4 preceding siblings ...)
2003-12-19 19:18 ` ian at wasabisystems dot com
@ 2003-12-19 19:28 ` giovannibajo at libero dot it
2003-12-19 19:29 ` drow at mvista dot com
` (5 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: giovannibajo at libero dot it @ 2003-12-19 19:28 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From giovannibajo at libero dot it 2003-12-19 18:50 -------
Your code is:
class C {
public:
template <typename i>
int (*f())() const;
};
I'm very positive that this is ill-formed. If you want to say that it's a
pointer to a const function, you should say:
int (*f() const)();
If you want to say that the return type is const (which is of course
meaningless), you should say:
const int (*f())();
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (5 preceding siblings ...)
2003-12-19 19:28 ` giovannibajo at libero dot it
@ 2003-12-19 19:29 ` drow at mvista dot com
2003-12-19 21:45 ` cvs-commit at gcc dot gnu dot org
` (4 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: drow at mvista dot com @ 2003-12-19 19:29 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From drow at mvista dot com 2003-12-19 19:18 -------
Subject: Re: Another demangler problem with method cv-qualifiers
On Fri, Dec 19, 2003 at 06:41:19PM -0000, ian at wasabisystems dot com wrote:
> What would it mean to attach to CONST_THIS to the return type?
As you said, not much. A bad choice of words on my part.
Dan
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (6 preceding siblings ...)
2003-12-19 19:29 ` drow at mvista dot com
@ 2003-12-19 21:45 ` cvs-commit at gcc dot gnu dot org
2003-12-20 0:32 ` ian at airs dot com
` (3 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2003-12-19 21:45 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2003-12-19 21:14 -------
Subject: Bug 13447
CVSROOT: /cvs/gcc
Module name: gcc
Changes by: ian@gcc.gnu.org 2003-12-19 21:14:35
Modified files:
libiberty : ChangeLog cp-demangle.c
libiberty/testsuite: demangle-expected
Log message:
Fix for PR c++/13447:
* cp-demangle.c (enum d_comp_type): Add D_COMP_LOCAL_NAME.
(d_dump, d_make_comp): Handle D_COMP_LOCAL_NAME.
(is_ctor_dtor_or_conversion): Handle D_COMP_LOCAL_NAME like
D_COMP_QUAL_NAME.
(is_ctor_or_dtor): Likewise.
(d_local_name): Use D_COMP_LOCAL_NAME rather than
D_COMP_QUAL_NAME.
(d_print_comp) [D_COMP_LOCAL_NAME]: New.
(d_prinT_comp) [D_COMP_TYPED_NAME]: If the left tree is
D_COMP_LOCAL_NAME, pull any qualifiers off its right subtree.
(d_print_mod_list): Handle D_COMP_LOCAL_NAME.
* testsuite/demangle-expected: Add two test cases.
* cp-demangle.c (d_print_function_type): Clear the global modifier
list when printing the modifiers, not just when printing the
function parameters.
* testsuite/demangle-expected: Add two test cases.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/ChangeLog.diff?cvsroot=gcc&r1=1.487&r2=1.488
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/cp-demangle.c.diff?cvsroot=gcc&r1=1.60&r2=1.61
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/testsuite/demangle-expected.diff?cvsroot=gcc&r1=1.24&r2=1.25
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (7 preceding siblings ...)
2003-12-19 21:45 ` cvs-commit at gcc dot gnu dot org
@ 2003-12-20 0:32 ` ian at airs dot com
2003-12-20 1:59 ` dhazeghi at yahoo dot com
` (2 subsequent siblings)
11 siblings, 0 replies; 13+ messages in thread
From: ian at airs dot com @ 2003-12-20 0:32 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From ian at airs dot com 2003-12-19 21:16 -------
I checked in a patch which fixes this problem.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (8 preceding siblings ...)
2003-12-20 0:32 ` ian at airs dot com
@ 2003-12-20 1:59 ` dhazeghi at yahoo dot com
2004-06-28 22:34 ` cvs-commit at gcc dot gnu dot org
2004-07-01 10:59 ` cvs-commit at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: dhazeghi at yahoo dot com @ 2003-12-20 1:59 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From dhazeghi at yahoo dot com 2003-12-20 00:45 -------
Please set "target milestone" appropriately when closing bugs. Thanks.
--
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |3.4.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (9 preceding siblings ...)
2003-12-20 1:59 ` dhazeghi at yahoo dot com
@ 2004-06-28 22:34 ` cvs-commit at gcc dot gnu dot org
2004-07-01 10:59 ` cvs-commit at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-06-28 22:34 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-06-28 22:34 -------
Subject: Bug 13447
CVSROOT: /cvs/gcc
Module name: gcc
Branch: gcc-3_3-rhl-branch
Changes by: jakub@gcc.gnu.org 2004-06-28 22:33:43
Modified files:
include : ChangeLog demangle.h
libiberty : ChangeLog Makefile.in cp-demangle.c
libiberty/testsuite: Makefile.in demangle-expected
test-demangle.c
libstdc++-v3 : ChangeLog
libstdc++-v3/libsupc++: Makefile.am Makefile.in
libstdc++-v3/testsuite: testsuite_hooks.h
Added files:
libiberty : cp-demangle.h cp-demint.c
libstdc++-v3/testsuite/demangle/abi_examples: 01.cc 02.cc 03.cc
04.cc 05.cc 06.cc
07.cc 08.cc 09.cc
10.cc 11.cc 12.cc
13.cc 14.cc 15.cc
16.cc 17.cc 18.cc
19.cc 20.cc 21.cc
22.cc 23.cc 24.cc
25.cc 26.cc
libstdc++-v3/testsuite/demangle/abi_text: 01.cc 02.cc 03.cc
04.cc 05.cc 06.cc
07.cc 08.cc 09.cc
10.cc 11.cc 12.cc
13.cc 14.cc
libstdc++-v3/testsuite/demangle/regression: 3111-1.cc 3111-2.cc
7986-01.cc
7986-02.cc
7986-03.cc
7986-04.cc
7986-05.cc
7986-06.cc
7986-07.cc
7986-08.cc
7986-09.cc
7986-10.cc
7986-11.cc
7986-12.cc 7986.cc
8897.cc cw-01.cc
cw-02.cc cw-03.cc
cw-04.cc cw-05.cc
cw-06.cc cw-07.cc
cw-08.cc cw-09.cc
cw-10.cc cw-11.cc
cw-12.cc cw-13.cc
cw-14.cc cw-15.cc
cw-16.cc old.cc
Log message:
libiberty/
2004-02-24 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.h (enum d_builtin_type_print): Add D_PRINT_UNSIGNED,
D_PRINT_UNSIGNED_LONG, D_PRINT_LONG_LONG,
D_PRINT_UNSIGNED_LONG_LONG, D_PRINT_FLOAT.
* cp-demangle.c (cplus_demangle_builtin_types): Change char and
short types to D_PRINT_DEFAULT. Change other integer types to use
new D_PRINT_* values where appropriate. Change float types to
D_PRINT_FLOAT.
(d_print_comp) [LITERAL, LITERAL_NEG]: Handle new D_PRINT_*
values.
* testsuite/demangle-expected: Adjust two test cases.
* cp-demangle.c (d_print_function_type): Print a space before the
parenthesis around the function type in more cases.
* testsuite/demangle-expected: Adjust one test case.
* cp-demangle.c (d_print_comp) [UNARY]: Don't emit extra
parentheses around a cast.
* testsuite/demangle-expected: Adjust two test cases to match new
output.
* cp-demangle.c (__cxa_demangle): Pass DMGL_PARAMS to d_demangle.
* cp-demangle.c (d_print_comp) [RESTRICT, VOLATILE, CONST]: Don't
push more than one of the same CV-qualifier on the top of the
stack.
(d_print_comp) [ARRAY_TYPE]: If the array itself is CV-qualified,
move the CV-qualifiers to apply to the element type instead.
(d_print_array_type): When checking the modifiers, keep looking
past ones which have been printed already.
* testsuite/demangle-expected: Add three test cases.
2004-02-23 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (__cxa_demangle): Adjust last patch to handle
empty string correctly.
* cp-demangle.c (__cxa_demangle): It is not an error if status is
not NULL. It is an error if the mangled name is the same as a
built-in type name.
(main): If IN_GLIBCPP_V3 is defined, test __cxa_demangle rather
than cplus_demangle_v3.
2004-01-13 Daniel Jacobowitz <drow@mvista.com>
* cp-demangle.c (d_make_comp): DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE
takes two parameters.
* cp-demint.c (cplus_demangle_fill_component): Likewise.
2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c: Include "cp-demangle.h". If IN_GLIBCPP_V3 is
defined, rename some functions which are to become static via
#define.
(CP_STATIC_IF_GLIBCPP_V3): Define.
(struct d_operator_info): Move definition to cp-demangle.h, and
rename to demangle_operator_info. Change all uses.
(enum d_builtin_type_print): Move definition to cp-demangle.h.
(struct d_builtin_type_info): Move definition to cp-demangle.h,
and rename to demangle_builtin_type_info. Change all uses.
(enum d_comp_type): Move definition to include/demangle.h, and
rename to demangle_component_type, and change all enums to start
with DEMANGLE_COMPONENT_ instead of D_. Change all uses.
(struct d_comp): Move definition to include/demangle.h, and rename
to demangle_component. Change all uses.
(struct d_info): Move definition to cp-demangle.h.
(cplus_demangle_fill_name): New function.
(cplus_demangle_fill_extended_operator): New function.
(cplus_demangle_fill_ctor): New function.
(cplus_demangle_fill_dtor): New function.
(d_make_empty): Remove type parameter. Change all callers.
(d_make_name): Use cplus_demangle_fill_name.
(d_make_extended_operator): Use
cplus_demangle_fill_extended_operator.
(d_make_ctor): Use cplus_demangle_fill_ctor.
(d_make_dtor): Use cplus_demangle_fill_dtor.
(cplus_demangle_mangled_name): Rename from d_mangled_name. Make
non-static by default. Change all callers.
(cplus_demangle_operators): Rename from d_operators. Change all
uses. Make non-static by default. Add sentinel at end of array.
(d_operator_name): Adjust initialization of high for new sentinel
in cplus_demangle_operators.
(cplus_demangle_builtin_types): Rename from d_builtin_types.
Change all uses. Make non-static by default. Change initializer
to use D_BUILTIN_TYPE_COUNT instead of magic number 26.
(cplus_demangle_type): Rename from d_type. Make non-static by
default. Change all callers.
(cplus_demangle_init_info): Rename from d_init_info. Make
non-static by default. Change all callers.
* cp-demangle.h: New file.
* cp-demint.c: New file.
* Makefile.in: Rebuild dependencies.
(CFILES): Add cp-demint.c.
(REQUIRED_OFILES): Add cp-demint.o.
2004-01-02 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_encoding): When DMGL_PARAMS is not set, strip
CV-qualifiers from D_COMP_LOCAL_NAME right subtree.
* cplus-dem.c (demangle_arm_hp_template): Set DMGL_PARAMS when
demangling template parameters.
* testsuite/test-demangle.c (fail): New static function.
(main): Support new options in input file: --no-params,
--is-v3-ctor, and --is-v3-dtor.
* testsuite/demangle-expected: Add --no-params to most tests, and
add the correct result when parameters are not demangled. Add
some simple tests for V3 constructor/destructor recognition.
2003-12-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cp-demangle.c (is_ctor_or_dtor): Fix error in last change.
2003-12-22 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (CP_DYNAMIC_ARRAYS): Define if compiler supports
dynamic arrays.
(struct d_operator_info): Add len field.
(struct d_builtin_type_info): Add len and java_len fields.
(struct d_standard_sub_info): Add simple_len, full_len, and
set_last_name_len fields.
(struct d_comp): Add len field to s_string.
(struct d_info): Add send, did_subs, and expansion fields.
(d_append_string_constant): Define.
(d_append_string): Remove. Change all users to use
d_append_string_constant or d_append_buffer instead.
(d_make_sub): Add len parameter. Change all callers.
(d_name): Increase expansion when substituting std::.
(d_unqualified_name): Increase expansion for an operator.
(d_number): Don't use multiplication for negative numbers.
(d_identifier): Make sure there are enough characters in the
string for the specified length. Adjust expansion for an
anonymous namespace.
(d_operators): Initialize len field.
(d_special_name, d_ctor_dtor_name): Increase expansion.
(d_builtin_types): Initialize len and java_len fields.
(d_type): Increase expansion for a builtin type.
(d_cv_qualifiers): Increase expansion for each qualifier.
(d_bare_function_type): Decrease expansion when removing single
void parameter.
(d_template_param): Increment did_subs.
(d_expression): Increase expansion for an operator.
(d_expr_primary): Decrease expansion for a type we will print
specially.
(standard_subs): Initialize new fields.
(d_substitution): Increment did_subs when doing a normal
substitution. Increase expansion for a special substitution.
(d_print): Add estimate parameter. Change all callers.
(d_print_comp) [D_COMP_NAME]: Handle C++ case inline.
(d_print_comp) [D_COMP_BINARY]: Use length to avoid strcmp call.
(d_print_java_identifier): Rename from d_print_identifier. Handle
only Java case. Change caller.
(d_init_info): Change return type to void. Change all callers.
Initialize send, did_subs, and expansion fields. Do not
initialize comps and subs fields.
(d_demangle): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and subs
arrays on stack. Make an estimate of the length of the demangled
name. Ifdef CP_DEMANGLE_DEBUG, print estimation failures.
(is_ctor_or_dtor): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and
subs arrays on stack.
2003-12-20 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_identifier): In Java mode, skip an optional '$'
after the identifier.
* testsuite/demangle-expected: Add test case.
2003-12-19 Ian Lance Taylor <ian@wasabisystems.com>
Fix for PR c++/13447:
* cp-demangle.c (enum d_comp_type): Add D_COMP_LOCAL_NAME.
(d_dump, d_make_comp): Handle D_COMP_LOCAL_NAME.
(is_ctor_dtor_or_conversion): Handle D_COMP_LOCAL_NAME like
D_COMP_QUAL_NAME.
(is_ctor_or_dtor): Likewise.
(d_local_name): Use D_COMP_LOCAL_NAME rather than
D_COMP_QUAL_NAME.
(d_print_comp) [D_COMP_LOCAL_NAME]: New.
(d_prinT_comp) [D_COMP_TYPED_NAME]: If the left tree is
D_COMP_LOCAL_NAME, pull any qualifiers off its right subtree.
(d_print_mod_list): Handle D_COMP_LOCAL_NAME.
* testsuite/demangle-expected: Add two test cases.
* cp-demangle.c (d_print_function_type): Clear the global modifier
list when printing the modifiers, not just when printing the
function parameters.
* testsuite/demangle-expected: Add two test cases.
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 Ian Lance Taylor <ian@wasabisystems.com>
Fix handling of constructor/destructor of standard substitution:
* cp-demangle.c (struct d_standard_sub_info): Define.
(d_substitution): Add prefix argument. Change all callers.
Rework handling of standard substitutions to print full name when
qualifying a constructor/destructor, or when DMGL_VERBOSE is set.
* testsuite/demangle-expected: Add test case.
Fix handling of negative literal constants:
* cp-demangle.c (enum d_comp_type): Add D_COMP_LITERAL_NEG.
(d_dump, d_make_comp): Handle D_COMP_LITERAL_NEG.
(d_expr_primary): Use D_COMP_LITERAL_NEG for a negative number.
(d_print_comp): Handle D_COMP_LITERAL_NEG.
* testsuite/demangle-expected: Add test case.
2003-12-04 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (IS_UPPER, IS_LOWER): Define.
(d_last_char): Define new macro.
(d_make_name): Reject an empty name.
(d_prefix, d_unqualified_name, d_type): Use new IS_* macros.
(d_substitution, d_print_identifier): Likewise.
(d_print_comp) [D_COMP_OPERATOR]: Likewise.
(d_print_comp) [D_COMP_TEMPLATE]: Use new d_last_char macro.
(d_print_mod) Use new d_last_char macro.
(d_print_cast): Use new d_last_char macro.
(is_ctor_or_dtor): Don't leak memory.
Fix handling of member function modifiers:
* cp-demangle.c (enum d_comp_type): Add D_COMP_RESTRICT_THIS,
D_COMP_VOLATILE_THIS, and D_COMP_CONST_THIS.
(d_dump): Dump new d_comp_type values.
(d_make_comp): Accept new d_comp_type values.
(has_return_type): Only accept _THIS variants of qualifiers.
(d_encoding): Without DMGL_PARAMS, only remove _THIS variants of
qualifiers.
(d_cv_qualifiers): Add member_fn parameter. Change all callers.
(d_print_comp) [D_COMP_TYPED_NAME]: Rather than removing
qualifiers and printing them at the end, add _THIS qualifiers to
the modifier list.
(d_print_comp) [D_COMP_*_THIS]: New cases.
(d_print_comp) [D_COMP_PTRMEM_TYPE]: Remove special handling of
qualifiers.
(d_print_mod_list): Add suffix parameter. Change all callers.
Keep walking the list even if the current modifier has been
printed.
(d_print_mod): Handle new _THIS qualifiers.
(d_print_function_type): Handle new _THIS qualifiers when deciding
whether to print a parenthesis. Put a space before the
parenthesis in some cases. Call d_print_mod_list again at the
end, passing suffix as 1.
(is_ctor_or_dtor): Look for new _THIS qualifiers.
* testsuite/demangle-expected: Add test case.
Fix for PR gcc/13304:
* cp-demangle.c (d_print_comp) [D_COMP_TEMPLATE]: If the character
before the '<' is itself a '<', insert a space.
(d_print_cast): Likewise.
* testsuite/demangle-expected: Add test case.
Fix for PR gcc/13244:
* cp-demangle.c (d_print_comp) [D_COMP_BINARY]: Wrap an expression
which uses the '>' operator in an extra layer of parens.
* testsuite/demangle-expected: Add test case.
2003-11-29 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_demangle): Only return success if we consumed
the entire demangled string.
(is_ctor_or_dtor): Likewise.
* testsuite/demangle-expected: Revert one part of 2003-06-26 patch
to restore expected result of EDG test case to original expected
result.
2003-11-26 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (struct d_print_mod): Add templates field.
(d_make_builtin_type): Check for NULL type.
(d_make_extended_operator): Check for NULL name.
(d_make_ctor, d_make_dtor): Likewise.
(d_mangled_name): Add top_level parameter. Change all callers.
(d_encoding): If DMGL_PARAMS is not set, strip off initial
CV-qualifiers.
(d_type): Check some return values we rely on.
(d_bare_function_type, d_array_type): Likewise.
(d_pointer_to_member_type, d_template_args): Likewise.
(d_add_substitution): Fail if argument is NULL.
(d_print_resize): Check whether buf is NULL.
(d_print_comp): Save current templates list with each modifier.
Don't pass the modifier list down when printing a template.
(d_print_cast): Don't pass the modifier list down when printing a
template.
(d_print_mod_list): Temporarily set templates list while printing
a modifier.
(d_print_mod): Check that buf is not NULL before using it.
(d_print_function_type): Print parens if there is no modifier.
(d_init_info): Permit as many substitutions as there are
characters in the mangled name.
* testsuite/demangle-expected: Add two new test cases.
2003-11-25 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (java_demangle_v3): Pass DMGL_PARAMS to
d_demangle.
2003-11-22 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_encoding): Add top_level parameter. Change all
callers.
(print_usage): Display new -p option.
(long_options): Add --no-params.
(main): Accept and handle -p.
2003-11-21 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (has_return_type): Skip qualifiers when checking
whether we have a template.
* testsuite/demangle-expected: Add four new tests.
2003-11-20 Ian Lance Taylor <ian@wasabisystems.com>
* testsuite/demangle-expected: Minor changes to match output of
new demangler: adjust whitespace in four tests, and change order
of qualifiers in one test.
* cp-demangle.c: Complete rewrite.
include/
2004-05-04 Andreas Jaeger <aj@suse.de>
* demangle.h: Do not use C++ reserved keyword typename as
parameter for cplus_demangle_fill_builtin_type.
2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
* demangle.h: Instead of checking ANSI_PROTOTYPES, just include
"libiberty.h".
* demangle.h: If ANSI_PROTOTYPES is defined, include <stddef.h>.
* demangle.h (enum demangle_component_type): Define.
(struct demangle_operator_info): Declare.
(struct demangle_builtin_type_info): Declare.
(struct demangle_component): Define.
(cplus_demangle_fill_component): Declare.
(cplus_demangle_fill_name): Declare.
(cplus_demangle_fill_builtin_type): Declare.
(cplus_demangle_fill_operator): Declare.
(cplus_demangle_fill_extended_operator): Declare.
(cplus_demangle_fill_ctor, cplus_demangle_fill_dtor): Declare.
(cplus_demangle_v3_components): Declare.
(cplus_demangle_print): Declare.
2003-07-06 H.J. Lu <hongjiu.lu@intel.com>
* demangle.h: Support C++.
2002-06-25 Alan Modra <amodra@bigpond.net.au>
* demangle.h: #include "ansidecl.h" rather than #include <ansidecl.h>.
libstdc++-v3/
2004-02-26 Ian Lance Taylor <ian@wasabisystems.com>
* testsuite/demangle/abi_examples/01.cc: Expect error -2.
* testsuite/demangle/abi_examples/02.cc: Likewise.
* testsuite/demangle/regression/cw-11.cc: Likewise.
* testsuite/demangle/regression/cw-16.cc: Change two expected
results to match libiberty demangler output.
2003-12-05 Carlo Wood <carlo@alinoe.com>
PR libstdc++/13045
* testsuite/demangle/regression/cw-16.cc: Updated two
and added three tests.
2003-11-12 Carlo Wood <carlo@alinoe.com>
PR libstdc++/12947
* testsuite/demangle/regression/cw-16.cc: Added tests for the
added functionality.
* testsuite/demangle/regression/3111-2.cc: sizeof now has a space
appended.
2003-11-07 Carlo Wood <carlo@alinoe.com>
PR libstdc++/12736
* testsuite/demangle/abi_text/01.cc: Reordered CV-qualifiers.
* testsuite/demangle/regression/cw-16.cc: New.
2003-10-14 Carlo Wood <carlo@alinoe.com>
PR libstdc++/12600
* testsuite/demangle/regression/cw-15.cc: New.
2003-10-02 Carlo Wood <carlo@alinoe.com>
* testsuite/demangle/regression/cw-13.cc: Adjust for new output.
2003-02-27 Benjamin Kosnik <bkoz@redhat.com>
* testsuite/testsuite_hooks.h
(__gnu_cxx_test::verify_demangle): New.
2003-02-27 Benjamin Kosnik <bkoz@redhat.com>
Carlo Wood <carlo@alinoe.com>
* testsuite/demangle/abi_examples/01.cc: New.
* testsuite/demangle/abi_examples/02.cc: New.
* testsuite/demangle/abi_examples/03.cc: New.
* testsuite/demangle/abi_examples/04.cc: New.
* testsuite/demangle/abi_examples/05.cc: New.
* testsuite/demangle/abi_examples/06.cc: New.
* testsuite/demangle/abi_examples/07.cc: New.
* testsuite/demangle/abi_examples/08.cc: New.
* testsuite/demangle/abi_examples/09.cc: New.
* testsuite/demangle/abi_examples/10.cc: New.
* testsuite/demangle/abi_examples/11.cc: New.
* testsuite/demangle/abi_examples/12.cc: New.
* testsuite/demangle/abi_examples/13.cc: New.
* testsuite/demangle/abi_examples/14.cc: New.
* testsuite/demangle/abi_examples/15.cc: New.
* testsuite/demangle/abi_examples/16.cc: New.
* testsuite/demangle/abi_examples/17.cc: New.
* testsuite/demangle/abi_examples/18.cc: New.
* testsuite/demangle/abi_examples/19.cc: New.
* testsuite/demangle/abi_examples/20.cc: New.
* testsuite/demangle/abi_examples/21.cc: New.
* testsuite/demangle/abi_examples/22.cc: New.
* testsuite/demangle/abi_examples/23.cc: New.
* testsuite/demangle/abi_examples/24.cc: New.
* testsuite/demangle/abi_examples/25.cc: New.
* testsuite/demangle/abi_examples/26.cc: New.
* testsuite/demangle/abi_text/01.cc: New.
* testsuite/demangle/abi_text/02.cc: New.
* testsuite/demangle/abi_text/03.cc: New.
* testsuite/demangle/abi_text/04.cc: New.
* testsuite/demangle/abi_text/05.cc: New.
* testsuite/demangle/abi_text/06.cc: New.
* testsuite/demangle/abi_text/07.cc: New.
* testsuite/demangle/abi_text/08.cc: New.
* testsuite/demangle/abi_text/09.cc: New.
* testsuite/demangle/abi_text/10.cc: New.
* testsuite/demangle/abi_text/11.cc: New.
* testsuite/demangle/abi_text/12.cc: New.
* testsuite/demangle/abi_text/13.cc: New.
* testsuite/demangle/abi_text/14.cc: New.
* testsuite/demangle/regression/3111-1.cc: New.
* testsuite/demangle/regression/3111-2.cc: New.
* testsuite/demangle/regression/7986-01.cc: New.
* testsuite/demangle/regression/7986-02.cc: New.
* testsuite/demangle/regression/7986-03.cc: New.
* testsuite/demangle/regression/7986-04.cc: New.
* testsuite/demangle/regression/7986-05.cc: New.
* testsuite/demangle/regression/7986-06.cc: New.
* testsuite/demangle/regression/7986-07.cc: New.
* testsuite/demangle/regression/7986-08.cc: New.
* testsuite/demangle/regression/7986-09.cc: New.
* testsuite/demangle/regression/7986-10.cc: New.
* testsuite/demangle/regression/7986-11.cc: New.
* testsuite/demangle/regression/7986-12.cc: New.
* testsuite/demangle/regression/7986.cc: New.
* testsuite/demangle/regression/8897.cc: New.
* testsuite/demangle/regression/cw-01.cc: New.
* testsuite/demangle/regression/cw-02.cc: New.
* testsuite/demangle/regression/cw-03.cc: New.
* testsuite/demangle/regression/cw-04.cc: New.
* testsuite/demangle/regression/cw-05.cc: New.
* testsuite/demangle/regression/cw-06.cc: New.
* testsuite/demangle/regression/cw-07.cc: New.
* testsuite/demangle/regression/cw-08.cc: New.
* testsuite/demangle/regression/cw-09.cc: New.
* testsuite/demangle/regression/cw-10.cc: New.
* testsuite/demangle/regression/cw-11.cc: New.
* testsuite/demangle/regression/cw-12.cc: New.
* testsuite/demangle/regression/cw-13.cc: New.
* testsuite/demangle/regression/cw-14.cc: New.
* testsuite/demangle/regression/old.cc: New.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/include/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.124.2.6.2.7&r2=1.124.2.6.2.8
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/include/demangle.h.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.21.22.1&r2=1.21.22.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/cp-demangle.h.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/cp-demint.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.398.2.24.2.8&r2=1.398.2.24.2.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/Makefile.in.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.78.2.7.4.2&r2=1.78.2.7.4.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/cp-demangle.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.46.4.1&r2=1.46.4.1.2.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/testsuite/Makefile.in.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.3&r2=1.3.16.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/testsuite/demangle-expected.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.14&r2=1.14.16.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libiberty/testsuite/test-demangle.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.1.28.1&r2=1.1.28.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.1464.2.109.2.22&r2=1.1464.2.109.2.23
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/libsupc++/Makefile.am.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.36.2.4&r2=1.36.2.4.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/libsupc++/Makefile.in.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.86.2.6&r2=1.86.2.6.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/testsuite_hooks.h.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=1.11.2.1&r2=1.11.2.1.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/01.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/02.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/03.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/04.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/05.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/06.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/07.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/08.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/09.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/10.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.20.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/11.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/12.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/13.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/14.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/15.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/16.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/17.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/18.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/19.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/20.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/21.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/22.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/23.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/24.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/25.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_examples/26.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/01.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.20.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/02.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/03.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/04.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/05.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/06.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/07.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/08.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/09.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/10.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/11.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/12.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/13.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/abi_text/14.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/3111-1.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/3111-2.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.4.20.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-01.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.20.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-02.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-03.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-04.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-05.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-06.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-07.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.20.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-08.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-09.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-10.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-11.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986-12.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/7986.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/8897.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-01.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-02.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-03.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-04.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-05.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-06.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-07.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-08.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-09.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-10.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-11.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.12.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-12.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-13.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.3.26.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-14.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-15.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.32.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/cw-16.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.5.16.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/testsuite/demangle/regression/old.cc.diff?cvsroot=gcc&only_with_tag=gcc-3_3-rhl-branch&r1=NONE&r2=1.2.28.1
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
* [Bug c++/13447] Another demangler problem with method cv-qualifiers
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
` (10 preceding siblings ...)
2004-06-28 22:34 ` cvs-commit at gcc dot gnu dot org
@ 2004-07-01 10:59 ` cvs-commit at gcc dot gnu dot org
11 siblings, 0 replies; 13+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-07-01 10:59 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-07-01 10:58 -------
Subject: Bug 13447
CVSROOT: /cvs/gcc
Module name: gcc
Branch: gcc-3_2-rhl8-branch
Changes by: jakub@gcc.gnu.org 2004-07-01 10:58:26
Modified files:
include : ChangeLog
Log message:
libiberty/
2004-02-24 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.h (enum d_builtin_type_print): Add D_PRINT_UNSIGNED,
D_PRINT_UNSIGNED_LONG, D_PRINT_LONG_LONG,
D_PRINT_UNSIGNED_LONG_LONG, D_PRINT_FLOAT.
* cp-demangle.c (cplus_demangle_builtin_types): Change char and
short types to D_PRINT_DEFAULT. Change other integer types to use
new D_PRINT_* values where appropriate. Change float types to
D_PRINT_FLOAT.
(d_print_comp) [LITERAL, LITERAL_NEG]: Handle new D_PRINT_*
values.
* testsuite/demangle-expected: Adjust two test cases.
* cp-demangle.c (d_print_function_type): Print a space before the
parenthesis around the function type in more cases.
* testsuite/demangle-expected: Adjust one test case.
* cp-demangle.c (d_print_comp) [UNARY]: Don't emit extra
parentheses around a cast.
* testsuite/demangle-expected: Adjust two test cases to match new
output.
* cp-demangle.c (__cxa_demangle): Pass DMGL_PARAMS to d_demangle.
* cp-demangle.c (d_print_comp) [RESTRICT, VOLATILE, CONST]: Don't
push more than one of the same CV-qualifier on the top of the
stack.
(d_print_comp) [ARRAY_TYPE]: If the array itself is CV-qualified,
move the CV-qualifiers to apply to the element type instead.
(d_print_array_type): When checking the modifiers, keep looking
past ones which have been printed already.
* testsuite/demangle-expected: Add three test cases.
2004-02-23 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (__cxa_demangle): Adjust last patch to handle
empty string correctly.
* cp-demangle.c (__cxa_demangle): It is not an error if status is
not NULL. It is an error if the mangled name is the same as a
built-in type name.
(main): If IN_GLIBCPP_V3 is defined, test __cxa_demangle rather
than cplus_demangle_v3.
2004-01-13 Daniel Jacobowitz <drow@mvista.com>
* cp-demangle.c (d_make_comp): DEMANGLE_COMPONENT_CONSTRUCTION_VTABLE
takes two parameters.
* cp-demint.c (cplus_demangle_fill_component): Likewise.
2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c: Include "cp-demangle.h". If IN_GLIBCPP_V3 is
defined, rename some functions which are to become static via
#define.
(CP_STATIC_IF_GLIBCPP_V3): Define.
(struct d_operator_info): Move definition to cp-demangle.h, and
rename to demangle_operator_info. Change all uses.
(enum d_builtin_type_print): Move definition to cp-demangle.h.
(struct d_builtin_type_info): Move definition to cp-demangle.h,
and rename to demangle_builtin_type_info. Change all uses.
(enum d_comp_type): Move definition to include/demangle.h, and
rename to demangle_component_type, and change all enums to start
with DEMANGLE_COMPONENT_ instead of D_. Change all uses.
(struct d_comp): Move definition to include/demangle.h, and rename
to demangle_component. Change all uses.
(struct d_info): Move definition to cp-demangle.h.
(cplus_demangle_fill_name): New function.
(cplus_demangle_fill_extended_operator): New function.
(cplus_demangle_fill_ctor): New function.
(cplus_demangle_fill_dtor): New function.
(d_make_empty): Remove type parameter. Change all callers.
(d_make_name): Use cplus_demangle_fill_name.
(d_make_extended_operator): Use
cplus_demangle_fill_extended_operator.
(d_make_ctor): Use cplus_demangle_fill_ctor.
(d_make_dtor): Use cplus_demangle_fill_dtor.
(cplus_demangle_mangled_name): Rename from d_mangled_name. Make
non-static by default. Change all callers.
(cplus_demangle_operators): Rename from d_operators. Change all
uses. Make non-static by default. Add sentinel at end of array.
(d_operator_name): Adjust initialization of high for new sentinel
in cplus_demangle_operators.
(cplus_demangle_builtin_types): Rename from d_builtin_types.
Change all uses. Make non-static by default. Change initializer
to use D_BUILTIN_TYPE_COUNT instead of magic number 26.
(cplus_demangle_type): Rename from d_type. Make non-static by
default. Change all callers.
(cplus_demangle_init_info): Rename from d_init_info. Make
non-static by default. Change all callers.
* cp-demangle.h: New file.
* cp-demint.c: New file.
* Makefile.in: Rebuild dependencies.
(CFILES): Add cp-demint.c.
(REQUIRED_OFILES): Add cp-demint.o.
2004-01-02 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_encoding): When DMGL_PARAMS is not set, strip
CV-qualifiers from D_COMP_LOCAL_NAME right subtree.
* cplus-dem.c (demangle_arm_hp_template): Set DMGL_PARAMS when
demangling template parameters.
* testsuite/test-demangle.c (fail): New static function.
(main): Support new options in input file: --no-params,
--is-v3-ctor, and --is-v3-dtor.
* testsuite/demangle-expected: Add --no-params to most tests, and
add the correct result when parameters are not demangled. Add
some simple tests for V3 constructor/destructor recognition.
2003-12-25 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cp-demangle.c (is_ctor_or_dtor): Fix error in last change.
2003-12-22 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (CP_DYNAMIC_ARRAYS): Define if compiler supports
dynamic arrays.
(struct d_operator_info): Add len field.
(struct d_builtin_type_info): Add len and java_len fields.
(struct d_standard_sub_info): Add simple_len, full_len, and
set_last_name_len fields.
(struct d_comp): Add len field to s_string.
(struct d_info): Add send, did_subs, and expansion fields.
(d_append_string_constant): Define.
(d_append_string): Remove. Change all users to use
d_append_string_constant or d_append_buffer instead.
(d_make_sub): Add len parameter. Change all callers.
(d_name): Increase expansion when substituting std::.
(d_unqualified_name): Increase expansion for an operator.
(d_number): Don't use multiplication for negative numbers.
(d_identifier): Make sure there are enough characters in the
string for the specified length. Adjust expansion for an
anonymous namespace.
(d_operators): Initialize len field.
(d_special_name, d_ctor_dtor_name): Increase expansion.
(d_builtin_types): Initialize len and java_len fields.
(d_type): Increase expansion for a builtin type.
(d_cv_qualifiers): Increase expansion for each qualifier.
(d_bare_function_type): Decrease expansion when removing single
void parameter.
(d_template_param): Increment did_subs.
(d_expression): Increase expansion for an operator.
(d_expr_primary): Decrease expansion for a type we will print
specially.
(standard_subs): Initialize new fields.
(d_substitution): Increment did_subs when doing a normal
substitution. Increase expansion for a special substitution.
(d_print): Add estimate parameter. Change all callers.
(d_print_comp) [D_COMP_NAME]: Handle C++ case inline.
(d_print_comp) [D_COMP_BINARY]: Use length to avoid strcmp call.
(d_print_java_identifier): Rename from d_print_identifier. Handle
only Java case. Change caller.
(d_init_info): Change return type to void. Change all callers.
Initialize send, did_subs, and expansion fields. Do not
initialize comps and subs fields.
(d_demangle): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and subs
arrays on stack. Make an estimate of the length of the demangled
name. Ifdef CP_DEMANGLE_DEBUG, print estimation failures.
(is_ctor_or_dtor): Ifdef CP_DYNAMIC_ARRAYS, allocate comps and
subs arrays on stack.
2003-12-20 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_identifier): In Java mode, skip an optional '$'
after the identifier.
* testsuite/demangle-expected: Add test case.
2003-12-19 Ian Lance Taylor <ian@wasabisystems.com>
Fix for PR c++/13447:
* cp-demangle.c (enum d_comp_type): Add D_COMP_LOCAL_NAME.
(d_dump, d_make_comp): Handle D_COMP_LOCAL_NAME.
(is_ctor_dtor_or_conversion): Handle D_COMP_LOCAL_NAME like
D_COMP_QUAL_NAME.
(is_ctor_or_dtor): Likewise.
(d_local_name): Use D_COMP_LOCAL_NAME rather than
D_COMP_QUAL_NAME.
(d_print_comp) [D_COMP_LOCAL_NAME]: New.
(d_prinT_comp) [D_COMP_TYPED_NAME]: If the left tree is
D_COMP_LOCAL_NAME, pull any qualifiers off its right subtree.
(d_print_mod_list): Handle D_COMP_LOCAL_NAME.
* testsuite/demangle-expected: Add two test cases.
* cp-demangle.c (d_print_function_type): Clear the global modifier
list when printing the modifiers, not just when printing the
function parameters.
* testsuite/demangle-expected: Add two test cases.
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 Ian Lance Taylor <ian@wasabisystems.com>
Fix handling of constructor/destructor of standard substitution:
* cp-demangle.c (struct d_standard_sub_info): Define.
(d_substitution): Add prefix argument. Change all callers.
Rework handling of standard substitutions to print full name when
qualifying a constructor/destructor, or when DMGL_VERBOSE is set.
* testsuite/demangle-expected: Add test case.
Fix handling of negative literal constants:
* cp-demangle.c (enum d_comp_type): Add D_COMP_LITERAL_NEG.
(d_dump, d_make_comp): Handle D_COMP_LITERAL_NEG.
(d_expr_primary): Use D_COMP_LITERAL_NEG for a negative number.
(d_print_comp): Handle D_COMP_LITERAL_NEG.
* testsuite/demangle-expected: Add test case.
2003-12-04 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (IS_UPPER, IS_LOWER): Define.
(d_last_char): Define new macro.
(d_make_name): Reject an empty name.
(d_prefix, d_unqualified_name, d_type): Use new IS_* macros.
(d_substitution, d_print_identifier): Likewise.
(d_print_comp) [D_COMP_OPERATOR]: Likewise.
(d_print_comp) [D_COMP_TEMPLATE]: Use new d_last_char macro.
(d_print_mod) Use new d_last_char macro.
(d_print_cast): Use new d_last_char macro.
(is_ctor_or_dtor): Don't leak memory.
Fix handling of member function modifiers:
* cp-demangle.c (enum d_comp_type): Add D_COMP_RESTRICT_THIS,
D_COMP_VOLATILE_THIS, and D_COMP_CONST_THIS.
(d_dump): Dump new d_comp_type values.
(d_make_comp): Accept new d_comp_type values.
(has_return_type): Only accept _THIS variants of qualifiers.
(d_encoding): Without DMGL_PARAMS, only remove _THIS variants of
qualifiers.
(d_cv_qualifiers): Add member_fn parameter. Change all callers.
(d_print_comp) [D_COMP_TYPED_NAME]: Rather than removing
qualifiers and printing them at the end, add _THIS qualifiers to
the modifier list.
(d_print_comp) [D_COMP_*_THIS]: New cases.
(d_print_comp) [D_COMP_PTRMEM_TYPE]: Remove special handling of
qualifiers.
(d_print_mod_list): Add suffix parameter. Change all callers.
Keep walking the list even if the current modifier has been
printed.
(d_print_mod): Handle new _THIS qualifiers.
(d_print_function_type): Handle new _THIS qualifiers when deciding
whether to print a parenthesis. Put a space before the
parenthesis in some cases. Call d_print_mod_list again at the
end, passing suffix as 1.
(is_ctor_or_dtor): Look for new _THIS qualifiers.
* testsuite/demangle-expected: Add test case.
Fix for PR gcc/13304:
* cp-demangle.c (d_print_comp) [D_COMP_TEMPLATE]: If the character
before the '<' is itself a '<', insert a space.
(d_print_cast): Likewise.
* testsuite/demangle-expected: Add test case.
Fix for PR gcc/13244:
* cp-demangle.c (d_print_comp) [D_COMP_BINARY]: Wrap an expression
which uses the '>' operator in an extra layer of parens.
* testsuite/demangle-expected: Add test case.
2003-11-29 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_demangle): Only return success if we consumed
the entire demangled string.
(is_ctor_or_dtor): Likewise.
* testsuite/demangle-expected: Revert one part of 2003-06-26 patch
to restore expected result of EDG test case to original expected
result.
2003-11-26 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (struct d_print_mod): Add templates field.
(d_make_builtin_type): Check for NULL type.
(d_make_extended_operator): Check for NULL name.
(d_make_ctor, d_make_dtor): Likewise.
(d_mangled_name): Add top_level parameter. Change all callers.
(d_encoding): If DMGL_PARAMS is not set, strip off initial
CV-qualifiers.
(d_type): Check some return values we rely on.
(d_bare_function_type, d_array_type): Likewise.
(d_pointer_to_member_type, d_template_args): Likewise.
(d_add_substitution): Fail if argument is NULL.
(d_print_resize): Check whether buf is NULL.
(d_print_comp): Save current templates list with each modifier.
Don't pass the modifier list down when printing a template.
(d_print_cast): Don't pass the modifier list down when printing a
template.
(d_print_mod_list): Temporarily set templates list while printing
a modifier.
(d_print_mod): Check that buf is not NULL before using it.
(d_print_function_type): Print parens if there is no modifier.
(d_init_info): Permit as many substitutions as there are
characters in the mangled name.
* testsuite/demangle-expected: Add two new test cases.
2003-11-25 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (java_demangle_v3): Pass DMGL_PARAMS to
d_demangle.
2003-11-22 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_encoding): Add top_level parameter. Change all
callers.
(print_usage): Display new -p option.
(long_options): Add --no-params.
(main): Accept and handle -p.
2003-11-21 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (has_return_type): Skip qualifiers when checking
whether we have a template.
* testsuite/demangle-expected: Add four new tests.
2003-11-20 Ian Lance Taylor <ian@wasabisystems.com>
* testsuite/demangle-expected: Minor changes to match output of
new demangler: adjust whitespace in four tests, and change order
of qualifiers in one test.
* cp-demangle.c: Complete rewrite.
include/
2004-05-04 Andreas Jaeger <aj@suse.de>
* demangle.h: Do not use C++ reserved keyword typename as
parameter for cplus_demangle_fill_builtin_type.
2004-01-12 Ian Lance Taylor <ian@wasabisystems.com>
* demangle.h: Instead of checking ANSI_PROTOTYPES, just include
"libiberty.h".
* demangle.h: If ANSI_PROTOTYPES is defined, include <stddef.h>.
* demangle.h (enum demangle_component_type): Define.
(struct demangle_operator_info): Declare.
(struct demangle_builtin_type_info): Declare.
(struct demangle_component): Define.
(cplus_demangle_fill_component): Declare.
(cplus_demangle_fill_name): Declare.
(cplus_demangle_fill_builtin_type): Declare.
(cplus_demangle_fill_operator): Declare.
(cplus_demangle_fill_extended_operator): Declare.
(cplus_demangle_fill_ctor, cplus_demangle_fill_dtor): Declare.
(cplus_demangle_v3_components): Declare.
(cplus_demangle_print): Declare.
2003-07-06 H.J. Lu <hongjiu.lu@intel.com>
* demangle.h: Support C++.
2002-06-25 Alan Modra <amodra@bigpond.net.au>
* demangle.h: #include "ansidecl.h" rather than #include <ansidecl.h>.
libstdc++-v3/
2004-02-26 Ian Lance Taylor <ian@wasabisystems.com>
* testsuite/demangle/abi_examples/01.cc: Expect error -2.
* testsuite/demangle/abi_examples/02.cc: Likewise.
* testsuite/demangle/regression/cw-11.cc: Likewise.
* testsuite/demangle/regression/cw-16.cc: Change two expected
results to match libiberty demangler output.
2003-12-05 Carlo Wood <carlo@alinoe.com>
PR libstdc++/13045
* testsuite/demangle/regression/cw-16.cc: Updated two
and added three tests.
2003-11-12 Carlo Wood <carlo@alinoe.com>
PR libstdc++/12947
* testsuite/demangle/regression/cw-16.cc: Added tests for the
added functionality.
* testsuite/demangle/regression/3111-2.cc: sizeof now has a space
appended.
2003-11-07 Carlo Wood <carlo@alinoe.com>
PR libstdc++/12736
* testsuite/demangle/abi_text/01.cc: Reordered CV-qualifiers.
* testsuite/demangle/regression/cw-16.cc: New.
2003-10-14 Carlo Wood <carlo@alinoe.com>
PR libstdc++/12600
* testsuite/demangle/regression/cw-15.cc: New.
2003-10-02 Carlo Wood <carlo@alinoe.com>
* testsuite/demangle/regression/cw-13.cc: Adjust for new output.
2003-02-27 Benjamin Kosnik <bkoz@redhat.com>
* testsuite/testsuite_hooks.h
(__gnu_cxx_test::verify_demangle): New.
2003-02-27 Benjamin Kosnik <bkoz@redhat.com>
Carlo Wood <carlo@alinoe.com>
* testsuite/demangle/abi_examples/01.cc: New.
* testsuite/demangle/abi_examples/02.cc: New.
* testsuite/demangle/abi_examples/03.cc: New.
* testsuite/demangle/abi_examples/04.cc: New.
* testsuite/demangle/abi_examples/05.cc: New.
* testsuite/demangle/abi_examples/06.cc: New.
* testsuite/demangle/abi_examples/07.cc: New.
* testsuite/demangle/abi_examples/08.cc: New.
* testsuite/demangle/abi_examples/09.cc: New.
* testsuite/demangle/abi_examples/10.cc: New.
* testsuite/demangle/abi_examples/11.cc: New.
* testsuite/demangle/abi_examples/12.cc: New.
* testsuite/demangle/abi_examples/13.cc: New.
* testsuite/demangle/abi_examples/14.cc: New.
* testsuite/demangle/abi_examples/15.cc: New.
* testsuite/demangle/abi_examples/16.cc: New.
* testsuite/demangle/abi_examples/17.cc: New.
* testsuite/demangle/abi_examples/18.cc: New.
* testsuite/demangle/abi_examples/19.cc: New.
* testsuite/demangle/abi_examples/20.cc: New.
* testsuite/demangle/abi_examples/21.cc: New.
* testsuite/demangle/abi_examples/22.cc: New.
* testsuite/demangle/abi_examples/23.cc: New.
* testsuite/demangle/abi_examples/24.cc: New.
* testsuite/demangle/abi_examples/25.cc: New.
* testsuite/demangle/abi_examples/26.cc: New.
* testsuite/demangle/abi_text/01.cc: New.
* testsuite/demangle/abi_text/02.cc: New.
* testsuite/demangle/abi_text/03.cc: New.
* testsuite/demangle/abi_text/04.cc: New.
* testsuite/demangle/abi_text/05.cc: New.
* testsuite/demangle/abi_text/06.cc: New.
* testsuite/demangle/abi_text/07.cc: New.
* testsuite/demangle/abi_text/08.cc: New.
* testsuite/demangle/abi_text/09.cc: New.
* testsuite/demangle/abi_text/10.cc: New.
* testsuite/demangle/abi_text/11.cc: New.
* testsuite/demangle/abi_text/12.cc: New.
* testsuite/demangle/abi_text/13.cc: New.
* testsuite/demangle/abi_text/14.cc: New.
* testsuite/demangle/regression/3111-1.cc: New.
* testsuite/demangle/regression/3111-2.cc: New.
* testsuite/demangle/regression/7986-01.cc: New.
* testsuite/demangle/regression/7986-02.cc: New.
* testsuite/demangle/regression/7986-03.cc: New.
* testsuite/demangle/regression/7986-04.cc: New.
* testsuite/demangle/regression/7986-05.cc: New.
* testsuite/demangle/regression/7986-06.cc: New.
* testsuite/demangle/regression/7986-07.cc: New.
* testsuite/demangle/regression/7986-08.cc: New.
* testsuite/demangle/regression/7986-09.cc: New.
* testsuite/demangle/regression/7986-10.cc: New.
* testsuite/demangle/regression/7986-11.cc: New.
* testsuite/demangle/regression/7986-12.cc: New.
* testsuite/demangle/regression/7986.cc: New.
* testsuite/demangle/regression/8897.cc: New.
* testsuite/demangle/regression/cw-01.cc: New.
* testsuite/demangle/regression/cw-02.cc: New.
* testsuite/demangle/regression/cw-03.cc: New.
* testsuite/demangle/regression/cw-04.cc: New.
* testsuite/demangle/regression/cw-05.cc: New.
* testsuite/demangle/regression/cw-06.cc: New.
* testsuite/demangle/regression/cw-07.cc: New.
* testsuite/demangle/regression/cw-08.cc: New.
* testsuite/demangle/regression/cw-09.cc: New.
* testsuite/demangle/regression/cw-10.cc: New.
* testsuite/demangle/regression/cw-11.cc: New.
* testsuite/demangle/regression/cw-12.cc: New.
* testsuite/demangle/regression/cw-13.cc: New.
* testsuite/demangle/regression/cw-14.cc: New.
* testsuite/demangle/regression/old.cc: New.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/include/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-rhl8-branch&r1=1.108.2.5.2.1.2.4&r2=1.108.2.5.2.1.2.5
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13447
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2004-07-01 10:59 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-12-19 16:32 [Bug c++/13447] New: Another demangler problem with method cv-qualifiers drow at gcc dot gnu dot org
2003-12-19 16:35 ` [Bug c++/13447] " ian at wasabisystems dot com
2003-12-19 16:37 ` drow at mvista dot com
2003-12-19 18:41 ` ian at wasabisystems dot com
2003-12-19 18:57 ` drow at mvista dot com
2003-12-19 19:18 ` ian at wasabisystems dot com
2003-12-19 19:28 ` giovannibajo at libero dot it
2003-12-19 19:29 ` drow at mvista dot com
2003-12-19 21:45 ` cvs-commit at gcc dot gnu dot org
2003-12-20 0:32 ` ian at airs dot com
2003-12-20 1:59 ` dhazeghi at yahoo dot com
2004-06-28 22:34 ` cvs-commit at gcc dot gnu dot org
2004-07-01 10:59 ` cvs-commit at gcc dot gnu dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).