aboutsummaryrefslogtreecommitdiff
path: root/libiberty/testsuite
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@wasabisystems.com>2003-11-26 23:33:05 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2003-11-26 23:33:05 +0000
commit81dc098b39484b986261b8f239d455c9d0b62642 (patch)
tree95205da54408be1cfef383f01ef800b7b65396ed /libiberty/testsuite
parent48f499cf81387cc10cc5045519b1bab9ccf40d83 (diff)
downloadgcc-81dc098b39484b986261b8f239d455c9d0b62642.zip
gcc-81dc098b39484b986261b8f239d455c9d0b62642.tar.gz
gcc-81dc098b39484b986261b8f239d455c9d0b62642.tar.bz2
cp-demangle.c (struct d_print_mod): Add templates field.
* 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. From-SVN: r73970
Diffstat (limited to 'libiberty/testsuite')
-rw-r--r--libiberty/testsuite/demangle-expected8
1 files changed, 8 insertions, 0 deletions
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index c73ea30..bfe9253 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -2879,6 +2879,14 @@ void f<1>(A<(1) + (((int)(-((float)3f800000))))>)
_ZNK11__gnu_debug16_Error_formatter14_M_format_wordImEEvPciPKcT_
void __gnu_debug::_Error_formatter::_M_format_word<unsigned long>(char*, int, char const*, unsigned long) const
#
+# The new demangler used to core dump on this.
+--format=gnu-v3
+_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPSt4pairISsPFbP6sqlitePPcEESt6vectorIS9_SaIS9_EEEESE_ET0_T_SG_SF_
+__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > > std::uninitialized_copy<__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > > >(__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >)
+# The new demangler used to fail on this.
+--format=gnu-v3
+_Z1fP1cIPFiiEE
+f(c<int (*)(int)>*)
#
# This caused an infinite loop.
# We still don't demangle this correctly, but at least we don't hang.