From 97bf9a52844ce41627e5afc1e516bd66b51e83fe Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Fri, 21 Nov 2003 22:01:27 +0000 Subject: [PATCH] merge from gcc --- libiberty/ChangeLog | 6 ++++++ libiberty/cp-demangle.c | 5 +++++ libiberty/testsuite/demangle-expected | 21 +++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index c85b73c3e..d1180e954 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,9 @@ +2003-11-21 Ian Lance Taylor + + * 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 * testsuite/demangle-expected: Minor changes to match output of diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 6a2b31133..e44251957 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -908,6 +908,11 @@ has_return_type (dc) return 0; case D_COMP_TEMPLATE: return ! is_ctor_dtor_or_conversion (d_left (dc)); + case D_COMP_RESTRICT: + case D_COMP_VOLATILE: + case D_COMP_CONST: + case D_COMP_VENDOR_TYPE_QUAL: + return has_return_type (d_left (dc)); } } diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index ca8b85858..c73ea305f 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -2858,6 +2858,27 @@ global constructors keyed to _Z2fnv --format=gnu-v3 _Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_ r(int (G::*)(), int (G::*)() const, G, int (H::*)(), int (G::*)(), what, what2, int (G::*)() const) +# +# This is from the gdb testsuite gdb.cp/cplusfuncs.exp. +--format=gnu-v3 +_Z10hairyfunc5PFPFilEPcE +hairyfunc5(int (*(*)(char*))(long)) +# +# This is from gcc PR 8861 +--format=gnu-v3 +_Z1fILi1ELc120EEv1AIXplT_cviLd810000000000000000703DAD7A370C5EEE +void f<1, 120>(A<(1) + (((int)((double)810000000000000000703DAD7A370C5)))>) +# +# This is also from gcc PR 8861 +--format=gnu-v3 +_Z1fILi1EEv1AIXplT_cvingLf3f800000EEE +void f<1>(A<(1) + (((int)(-((float)3f800000))))>) +# +# This is from a libstdc++ debug mode patch. +--format=gnu-v3 +_ZNK11__gnu_debug16_Error_formatter14_M_format_wordImEEvPciPKcT_ +void __gnu_debug::_Error_formatter::_M_format_word(char*, int, char const*, unsigned long) const +# # # This caused an infinite loop. # We still don't demangle this correctly, but at least we don't hang. -- 2.11.4.GIT