Commit Graph

46 Commits

Author SHA1 Message Date
Jason Merrill
d5f4edddeb merge in cxx0x-lambdas-branch@152308
From-SVN: r152318
2009-09-29 23:01:30 -04:00
Jason Merrill
6afcfe0a80 pt.c (make_fnparm_pack): Split out from...
* gcc/cp/pt.c (make_fnparm_pack): Split out from...
        (instantiate_decl): ...here.
        (tsubst_pack_expansion): Handle being called in a late-specified
        return type.
        * libiberty/cp-demangle.c (d_expression): Handle pack expansion.
        (d_find_pack): Handle DEMANGLE_COMPONENT_FUNCTION_PARAM.
        (d_print_subexpr): Don't wrap function parms in ().
        (d_print_comp) [DEMANGLE_COMPONENT_PACK_EXPANSION]: Handle
        not finding a pack.

From-SVN: r145013
2009-03-23 17:03:01 -04:00
Jason Merrill
448545cb51 decl.c (grokfndecl): Set DECL_CONTEXT on parms.
cp/:
        * decl.c (grokfndecl): Set DECL_CONTEXT on parms.
        (duplicate_decls): Adjust DECL_CONTEXT of newdecl's parms.
        * pt.c (check_explicit_specialization): Likewise.
        (tsubst_copy) [PARM_DECL]: Return a dummy parm if we don't have a
        local specialization.
        * tree.c (cp_tree_equal) [PARM_DECL]: Check type and index, not name.
        * decl2.c (parm_index): New fn.
        * semantics.c (finish_decltype_type): Don't use describable_type.
        * mangle.c (write_expression): Likewise.  Mangle ALIGNOF_EXPR.
        Give a sorry for unsupported codes rather than crash.  Mangle
        conversions with other than 1 operand.  New mangling for PARM_DECL.
        * operators.def (ALIGNOF_EXPR): Mangle as az.
  
        * include/demangle.h (enum demangle_component_type): Add
        DEMANGLE_COMPONENT_FUNCTION_PARAM.
        * libiberty/cp-demangle.c (d_make_function_param): new fn.
        (cplus_demangle_mangled_name): Work around abi v2 bug.
        (d_expr_primary): Likewise.
        (cplus_demangle_operators): Add alignof ops.
        (d_expression): Handle function parameters and conversions
        with other than 1 operand.
        (d_print_comp): Handle function parameters.  Fix bug with
        function used in type of function.

From-SVN: r144924
2009-03-17 19:31:18 -04:00
Jason Merrill
38179091cc PR c++/37376, other mangling issues
gcc/cp/:
        PR c++/37376, other mangling issues
        * mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling.
        (write_member_name): Break out from...
        (write_expression): ...here.  Handle dependent COMPONENT_REF.
        (write_template_arg): Wrap an argument pack in 'I'/'E'.
        (write_builtin_type): Update char16/32_t mangling.
        (write_nested_name, write_prefix): Don't forget template args
        for typename types.
        * operators.def: Add ARROW_EXPR, update COMPONENT_REF and
        EXPR_PACK_EXPANSION.
libstdc++-v3/:
        * config/abi/pre/gnu.ver: Update char16/32_t manglings.
include/:
        * demangle.h (enum demangle_component_type): Add
        DEMANGLE_COMPONENT_PACK_EXPANSION.
libiberty/:
        * cp-demangle.c (struct d_print_info): Add pack_index.
        (d_dump): Add DEMANGLE_COMPONENT_PACK_EXPANSION.
        (d_make_comp): Likewise.  DEMANGLE_COMPONENT_ARGLIST and
        DEMANGLE_COMPONENT_TEMPLATE_ARGLIST can have two null args.
        (cplus_demangle_builtin_types): Add char16/32_t.
        (cplus_demangle_type): Recognize them.
        (d_template_args): Handle empty argument packs.
        (d_template_arg): Handle argument packs.
        (d_expression): Handle dependent name.
        (d_index_template_argument): New fn.
        (d_lookup_template_argument): New fn.
        (d_find_pack, d_pack_length): New fn.
        (d_print_subexpr): Split out...
        (d_print_comp): ...from here.  Use d_*_template_argument.
        Handle empty arg lists.  Support pack expansions.
        * cp-demangle.h (D_BUILTIN_TYPE_COUNT): Increase to 32.

From-SVN: r140916
2008-10-06 18:29:42 -04:00
Jason Merrill
5a3d7e74ca demangle.h (enum demangle_component_type): Add DEMANGLE_COMPONENT_DECLTYPE.
* include/demangle.h (enum demangle_component_type): Add
        DEMANGLE_COMPONENT_DECLTYPE.
        * libiberty/cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_DECLTYPE.
        (d_make_comp): Likewise.
        (cplus_demangle_type): Handle decltype and DFP types.
        (cplus_demangle_operators): Call operator takes 2 args.
        (cplus_demangle_builtin_types): Add DFP types.
        (d_exprlist): New fn.
        (d_expression): Handle parm placeholders, T() and calls.
        (d_print_comp): Handle decltype, T() and calls.
        * libiberty/testsuite/demangle-expected: Test the above.

From-SVN: r140162
2008-09-09 13:38:10 -04:00
Kris Van Hees
b6baa67d79 cpp-id-data.h (UC): Was U, conflicts with U...
libcpp/ChangeLog:
2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>

* include/cpp-id-data.h (UC): Was U, conflicts with U... literal.
* include/cpplib.h (CHAR16, CHAR32, STRING16, STRING32): New tokens.
(struct cpp_options): Added uliterals.
(cpp_interpret_string): Update prototype.
(cpp_interpret_string_notranslate): Idem.
* charset.c (init_iconv_desc): New width member in cset_converter.
(cpp_init_iconv): Add support for char{16,32}_cset_desc.
(convert_ucn): Idem.
(emit_numeric_escape): Idem.
(convert_hex): Idem.
(convert_oct): Idem.
(convert_escape): Idem.
(converter_for_type): New function.
(cpp_interpret_string): Use converter_for_type, support u and U prefix.
(cpp_interpret_string_notranslate): Match changed prototype.
(wide_str_to_charconst): Use converter_for_type.
(cpp_interpret_charconst): Add support for CPP_CHAR{16,32}.
* directives.c (linemarker_dir): Macro U changed to UC.
(parse_include): Idem.
(register_pragma_1): Idem.
(restore_registered_pragmas): Idem.
(get__Pragma_string): Support CPP_STRING{16,32}.
* expr.c (eval_token): Support CPP_CHAR{16,32}.
* init.c (struct lang_flags): Added uliterals.
(lang_defaults): Idem.
* internal.h (struct cset_converter) <width>: New field.
(struct cpp_reader) <char16_cset_desc>: Idem.
(struct cpp_reader) <char32_cset_desc>: Idem.
* lex.c (digraph_spellings): Macro U changed to UC.
(OP, TK): Idem.
(lex_string): Add support for u'...', U'...', u... and U....
(_cpp_lex_direct): Idem.
* macro.c (_cpp_builtin_macro_text): Macro U changed to UC.
(stringify_arg): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.

gcc/ChangeLog:
2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>
  
* c-common.c (CHAR16_TYPE, CHAR32_TYPE): New macros.
(fname_as_string): Match updated cpp_interpret_string prototype.
(fix_string_type): Support char16_t* and char32_t*.
(c_common_nodes_and_builtins): Add char16_t and char32_t (and
derivative) nodes.  Register as builtin if C++0x.
(c_parse_error): Support CPP_CHAR{16,32}.
* c-common.h (RID_CHAR16, RID_CHAR32): New elements. 
(enum c_tree_index) <CTI_CHAR16_TYPE, CTI_SIGNED_CHAR16_TYPE,
CTI_UNSIGNED_CHAR16_TYPE, CTI_CHAR32_TYPE, CTI_SIGNED_CHAR32_TYPE,
CTI_UNSIGNED_CHAR32_TYPE, CTI_CHAR16_ARRAY_TYPE,
CTI_CHAR32_ARRAY_TYPE>: New elements.
(char16_type_node, signed_char16_type_node, unsigned_char16_type_node,
char32_type_node, signed_char32_type_node, char16_array_type_node,
char32_array_type_node): New defines.
* c-lex.c (cb_ident): Match updated cpp_interpret_string prototype.
(c_lex_with_flags): Support CPP_CHAR{16,32} and CPP_STRING{16,32}.
(lex_string): Support CPP_STRING{16,32}, match updated
cpp_interpret_string and cpp_interpret_string_notranslate prototypes.
(lex_charconst): Support CPP_CHAR{16,32}.
* c-parser.c (c_parser_postfix_expression): Support CPP_CHAR{16,32}
and CPP_STRING{16,32}.

gcc/cp/ChangeLog:
2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>

* cvt.c (type_promotes_to): Support char16_t and char32_t.
* decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
char16_t and char32_t.
* lex.c (reswords): Add char16_t and char32_t (for c++0x).
* mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
extended builtin type u8char32_t.
* parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
RID_CHAR{16,32}.
(cp_lexer_print_token): Support CPP_STRING{16,32}.
(cp_parser_is_string_literal): Idem.
(cp_parser_string_literal): Idem.
(cp_parser_primary_expression): Support CPP_CHAR{16,32} and
CPP_STRING{16,32}.
(cp_parser_simple_type_specifier): Support RID_CHAR{16,32}. 
* tree.c (char_type_p): Support char16_t and char32_t as char types.
* typeck.c (string_conv_p): Support char16_t and char32_t.

gcc/testsuite/ChangeLog:
2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>

Tests for char16_t and char32_t support.
* g++.dg/ext/utf-cvt.C: New
* g++.dg/ext/utf-cxx0x.C: New
* g++.dg/ext/utf-cxx98.C: New
* g++.dg/ext/utf-dflt.C: New
* g++.dg/ext/utf-gnuxx0x.C: New
* g++.dg/ext/utf-gnuxx98.C: New
* g++.dg/ext/utf-mangle.C: New
* g++.dg/ext/utf-typedef-cxx0x.C: New
* g++.dg/ext/utf-typedef-
* g++.dg/ext/utf-typespec.C: New
* g++.dg/ext/utf16-1.C: New
* g++.dg/ext/utf16-2.C: New
* g++.dg/ext/utf16-3.C: New
* g++.dg/ext/utf16-4.C: New
* g++.dg/ext/utf32-1.C: New
* g++.dg/ext/utf32-2.C: New
* g++.dg/ext/utf32-3.C: New
* g++.dg/ext/utf32-4.C: New
* gcc.dg/utf-cvt.c: New
* gcc.dg/utf-dflt.c: New
* gcc.dg/utf16-1.c: New
* gcc.dg/utf16-2.c: New
* gcc.dg/utf16-3.c: New
* gcc.dg/utf16-4.c: New
* gcc.dg/utf32-1.c: New
* gcc.dg/utf32-2.c: New
* gcc.dg/utf32-3.c: New
* gcc.dg/utf32-4.c: New

libiberty/ChangeLog:
2008-04-14  Kris Van Hees <kris.van.hees@oracle.com>

* testsuite/demangle-expected: Added tests for char16_t and char32_t.

From-SVN: r134438
2008-04-18 09:58:08 -04:00
David Daney
e5df4fb1fa demangle.h (demangle_component_type): Add DEMANGLE_COMPONENT_JAVA_RESOURCE...
include/
2008-01-26  David Daney  <ddaney@avtrex.com>

	* demangle.h (demangle_component_type):  Add
	DEMANGLE_COMPONENT_JAVA_RESOURCE,
	DEMANGLE_COMPONENT_COMPOUND_NAME, and
	DEMANGLE_COMPONENT_CHARACTER as new enum values.
	(demangle_component): Add struct s_character to union u.

libiberty/
2008-01-26  David Daney  <ddaney@avtrex.com>

	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE,
	DEMANGLE_COMPONENT_COMPOUND_NAME, and
	DEMANGLE_COMPONENT_CHARACTER cases.
	(d_make_comp): Handle DEMANGLE_COMPONENT_COMPOUND_NAME and
	DEMANGLE_COMPONENT_JAVA_RESOURCE cases.
	(d_make_character): New function.
	(d_java_resource): Same.
	(d_special_name): Handle "Gr" case.
	(d_print_comp): Handle DEMANGLE_COMPONENT_JAVA_RESOURCE,
	DEMANGLE_COMPONENT_COMPOUND_NAME, and
	DEMANGLE_COMPONENT_CHARACTER cases.
	* testsuite/demangle-expected: Add test for java resource name
	mangling.

From-SVN: r131883
2008-01-27 06:01:00 +00:00
Geoffrey Keating
a2aa65f063 Index: libiberty/ChangeLog
2007-05-04  Geoffrey Keating  <geoffk@apple.com>

	* cp-demangle.c (d_name): Detect local-source-name.
	(d_prefix): Likewise.
	(d_unqualified_name): Implement local-source-name.

Index: gcc/cp/ChangeLog
2007-05-04  Geoffrey Keating  <geoffk@apple.com>

	PR 31775
	* mangle.c (write_mangled_name): Mangle static variable names.
	(write_unqualified_name): Use local-source-name for
	namespace-scope static variables.

Index: gcc/testsuite/ChangeLog
2007-05-04  Geoffrey Keating  <geoffk@apple.com>

	PR 31775
	* g++.dg/other/nested-extern.cc: New.
	* g++.dg/other/nested-extern-1.C: New.
	* g++.dg/other/nested-extern-2.C: New.

From-SVN: r124467
2007-05-06 00:01:36 +00:00
Geoffrey Keating
771904f1e6 cp-demangle.c (d_encoding): Exit early on error.
* cp-demangle.c (d_encoding): Exit early on error.
	(d_pointer_to_member_type): Exit early if cplus_demangle_type
	returns NULL.
	(cplus_demangle_type): Likewise.
	* testsuite/demangle-expected: New testcase.

From-SVN: r122972
2007-03-16 01:07:52 +00:00
Geoffrey Keating
5165f1258b cp-demangle.h: Add comment explaining what to do to avoid overrunning string.
* cp-demangle.h: Add comment explaining what to do to avoid
	overrunning string.
	(d_check_char): New.
	(d_next_char): Don't advance past trailing '\0'.
	* cp-demangle.c (cplus_demangle_mangled_name): Use d_check_char.
	(d_nested_name): Likewise.
	(d_special_name): Likewise.
	(d_call_offset): Likewise.
	(d_function_type): Likewise.
	(d_array_type): Likewise.
	(d_pointer_to_member_type): Likewise.
	(d_template_param): Likewise.
	(d_template_args): Likewise.
	(d_template_arg): Likewise.
	(d_expr_primary): Likewise.
	(d_local_name): Likewise.
	(d_substitution): Likewise.
	(d_ctor_dtor_name): Use d_advance rather than d_next_char.
	* testsuite/test-demangle.c: Include sys/mman.h.
	(MAP_ANONYMOUS): Define.
	(protect_end): New.
	(main): Use protect_end.
	* testsuite/demangle-expected: Add testcases for overrunning
	the end of the string.

From-SVN: r120097
2006-12-21 01:29:27 +00:00
Ian Lance Taylor
53e3e587a9 re PR other/29176 (Seg fault in demangler)
PR other/29176
	* cp-demangle.c (d_substitution): Check for overflow when
	computing substitution index.

From-SVN: r117144
2006-09-22 13:52:29 +00:00
Ian Lance Taylor
022d41663d re PR other/28797 (Problems with demangling (__cxa_demangle()))
PR other/28797
	* cp-demangle.c (d_pointer_to_member_type): Do add a substitution
	for a qualified member which is not a function.
	* testsuite/demangle-expected: Add test case.

From-SVN: r116493
2006-08-27 21:42:55 +00:00
Terry Laurenzo
92aed1cbf4 Fixes java/PR9861
From-SVN: r108374
2005-12-11 01:34:02 +00:00
Ian Lance Taylor
8c7262afc3 re PR other/22268 (libiberty demanger crashes on (invalid) mangled name)
PR other/22268
	* cp-demangle.c (d_expr_primary): Don't run off the end of the
	string while looking for the end of a literal value.
	* testsuite/demangle-expected: Add test case.

From-SVN: r101506
2005-07-01 16:39:36 +00:00
Richard Henderson
15da280693 demangle.h (DEMANGLE_COMPONENT_HIDDEN_ALIAS): New.
include/
	* demangle.h (DEMANGLE_COMPONENT_HIDDEN_ALIAS): New.
libiberty/
	* cp-demangle.c (d_dump): Handle DEMANGLE_COMPONENT_HIDDEN_ALIAS.
	(d_make_comp, d_print_comp): Likewise.
	(d_special_name): Generate one.
	* testsuite/demangle-expected: Add a hidden alias test.

From-SVN: r100174
2005-05-25 16:29:54 -07:00
Ian Lance Taylor
5cd2906234 * testsuite/demangle-expected: Add test case.
From-SVN: r83799
2004-06-28 17:36:27 +00:00
Ian Lance Taylor
31058ee354 cp-demangle.h (enum d_builtin_type_print): Add D_PRINT_UNSIGNED...
* 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.

From-SVN: r78421
2004-02-25 04:51:39 +00:00
Ian Lance Taylor
93f20626db cp-demangle.c (d_print_comp): Don't emit extra parentheses around a cast.
* 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.

From-SVN: r78416
2004-02-25 01:45:49 +00:00
Ian Lance Taylor
80a19ac825 cp-demangle.c (d_print_comp): Don't push more than one of the same CV-qualifier on the top of the stack.
* 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.

From-SVN: r78354
2004-02-24 06:32:16 +00:00
Ian Lance Taylor
e4796f1c88 cp-demangle.c (d_encoding): When DMGL_PARAMS is not set...
* 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.

From-SVN: r75336
2004-01-02 20:33:55 +00:00
Ian Lance Taylor
2307e075c1 cp-demangle.c (d_identifier): In Java mode, skip an optional '$' after the identifier.
* cp-demangle.c (d_identifier): In Java mode, skip an optional '$'
	after the identifier.
	* testsuite/demangle-expected: Add test case.

From-SVN: r74885
2003-12-20 15:53:06 +00:00
Ian Lance Taylor
a91d1af087 re PR c++/13447 (Another demangler problem with method cv-qualifiers)
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.

From-SVN: r74850
2003-12-19 21:14:35 +00:00
Ian Lance Taylor
cbc278f440 cp-demangle.c (d_print_function_type): Print the function parameters with no modifiers.
* cp-demangle.c (d_print_function_type): Print the function
	parameters with no modifiers.
	* testsuite/demangle-expected: Add test case.

From-SVN: r74652
2003-12-15 23:29:31 +00:00
Ian Lance Taylor
374caa503b 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.

From-SVN: r74632
2003-12-15 14:37:25 +00:00
Ian Lance Taylor
a51753e47f re PR other/13304 (demangler bad output, "operator<<" insteads of "operator< <")
* 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.

From-SVN: r74290
2003-12-04 19:48:44 +00:00
Ian Lance Taylor
be571b7758 demangle-expected: Revert one part of 2003-06-26 patch to restore expected result of EDG test case...
* testsuite/demangle-expected: Revert one part of 2003-06-26 patch
	to restore expected result of EDG test case to original expected
	result.

From-SVN: r74128
2003-12-01 22:03:16 +00:00
Ian Lance Taylor
81dc098b39 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
2003-11-26 23:33:05 +00:00
Ian Lance Taylor
0ba5c8a2be cp-demangle.c (has_return_type): Skip qualifiers when checking whether we have a template.
* cp-demangle.c (has_return_type): Skip qualifiers when checking
	whether we have a template.
	* testsuite/demangle-expected: Add four new tests.

From-SVN: r73819
2003-11-21 21:34:55 +00:00
Ian Lance Taylor
9cca376f2d demangle-expected: Minor changes to match output of new demangler...
* testsuite/demangle-expected: Minor changes to match output of
	new demangler: adjust whitespace in four tests, and change order
	of qualifiers in one test.

From-SVN: r73813
2003-11-21 20:12:22 +00:00
J. Brobecker
08c5b96d1b cplus-dem.c (demangle_template): Register a new Btype only when needed.
* cplus-dem.c (demangle_template): Register a new Btype only
        when needed.
        * testsuite/demangle-expected: Add a new test.

From-SVN: r72729
2003-10-20 23:21:30 +00:00
H.J. Lu
968e3f935b demangle-expected: Update the expected output of _GLOBAL__I__Z2fnv.
2003-10-16  H.J. Lu  <hongjiu.lu@intel.com>

	* testsuite/demangle-expected: Update the expected output of
	_GLOBAL__I__Z2fnv.

From-SVN: r72552
2003-10-16 08:23:11 -07:00
H.J. Lu
6f8507b13f demangle-expected: Add more GNU V3 testcases.
2003-06-26  H.J. Lu <hongjiu.lu@intel.com>

	* testsuite/demangle-expected: Add more GNU V3 testcases.

From-SVN: r68540
2003-06-26 12:09:56 -07:00
Zack Weinberg
3fd9d606f3 Makefile.in: Remove all references to s-under and underscore.c.
gcc:
	* Makefile.in: Remove all references to s-under and underscore.c.
	* collect2.c, tlink.c: Change all uses of prepends_underscore
	to look directly at USER_LABEL_PREFIX.

gcc/cp:
	* Make-lang.in: Build cp/cxxfilt.o from $(srcdir)/cp/cxxfilt.c,
	and c++filt from cxxfilt.o + version.o + $(LIBDEPS).
	* cxxfilt.c: New file: split from libiberty/cplus-dem.c, with
	minor adjustments (use version_string, eliminate yet another
	duplicate of xmalloc)

libiberty:
	* cplus-dem.c: Code code under #ifdef MAIN moved to gcc/cp/cxxfilt.c.
	* testsuite/Makefile.in: Adjust for test-demangle.
	* testsuite/regress-demangle: Deleted.
	* testsuite/test-demangle.c: New file.
	* testsuite/demangle-expected: Change \$ to $ throughout, now that
	this file is not being read by a shell script.

From-SVN: r57037
2002-09-11 19:58:02 +00:00
Jason Merrill
28a34ec177 cp-demangle.c (demangle_identifier): Support extended Unicode characters.
* cp-demangle.c (demangle_identifier): Support extended Unicode
        characters.

From-SVN: r55354
2002-07-09 19:57:09 -04:00
Scott Snyder
b1c1a22fb2 demangle-expected: Add test case for infinite loop in demangler.
* testsuite/demangle-expected: Add test case for infinite loop in
demangler.
* cplus-dem.c (demangle_arm_hp_template): Stop trying to demangle
if do_type() doesn't make any progress --- prevents an infinite
loop.

From-SVN: r49875
2002-02-19 15:02:16 -05:00
Carlo Wood
336669e7b0 re PR other/5390 ([3.3 only?] Libiberty fails to demangle multi-digit template parameters.)
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.

From-SVN: r49851
2002-02-18 22:41:45 +00:00
Phil Edwards
46ab74b1fd cp-demangle.c (cp_demangle_type): Do not protect with IN_LIBGCC2.
2002-01-30  Phil Edwards  <pme@gcc.gnu.org>

	* cp-demangle.c (cp_demangle_type):  Do not protect with IN_LIBGCC2.
	(cplus_demangle_v3):  Mimic __cxa_demangle and fall back on
	cp_demangle_type.
	* testsuite/demangle-expected:  New gnu-v3 test.

From-SVN: r49353
2002-01-31 01:03:05 +00:00
Craig Rodrigues
63de15a4b4 re PR other/2719 (demangler crash)
2001-12-12  Craig Rodrigues  <rodrigc@gcc.gnu.org>

        PR other/2719
        * cplus-dem.c (consume_count): Treat negative count as an error.
        * testsuite/demangle-expected: Added testcase.

From-SVN: r47952
2001-12-12 23:08:07 +00:00
Bryce McKinlay
3b60dd8e10 Add support for Java demangling under the v3 ABI:
* cp-demangle.c (NAMESPACE_SEPARATOR): New define.
	(struct demangling_def): Add `style' field.
	(demangling_new): New parameter `style'. Set it in demangling_t.
	(demangle_prefix): Use NAMESPACE_SEPARATOR.
	(demangle_type_ptr): Don't emit pointer symbol if doing Java output.
	(cp_demangle): New parameter `style'. Pass it to demangling_new().
	(main): Call cp_demangle with extra parameter.
	(java_demangle_v3): New function.
	(java_builtin_type_names): New. Table of primitive type names used
	for Java demangling.
	(demangle_builtin_type): Look up in java_builtin_type_names if doing
	Java output.
	* cplus-dem.c (cplus_demangle): Use java_demangle_v3 to do Java
	demangling.
	(long_options): Remove obsolete `java' option.
	(main): Remove explicit handling of `java' option. Instead, pass style
	parameter in cplus_demangle flags as gdb does.
	* testsuite/demangle.expected: Add some Java test cases.

From-SVN: r39399
2001-02-02 00:27:39 +00:00
Hans-Peter Nilsson
2979107801 demangle-expected: Add two tests for anonymous namespaces.
* testsuite/demangle-expected: Add two tests for anonymous
	namespaces.
	* cplus-dem.c (gnu_special): Handle anonymous namespaces.

From-SVN: r36398
2000-09-13 23:09:30 +00:00
Hans-Peter Nilsson
bb22da4b6d demangle-expected: Add four tests for type_info mangling.
* testsuite/demangle-expected: Add four tests for type_info
	mangling.

	* cplus-dem.c (gnu_special): Use do_type, not demangle_fund_type,
	for a non-template non-qualified type_info function or node.

From-SVN: r36301
2000-09-10 19:35:16 +00:00
Hans-Peter Nilsson
ccbc3eb78e Add testcases and missing changelogs:
2000-08-31  Hans-Peter Nilsson  <hp@axis.com>

	* testsuite/demangle-expected: Add nine tests for
	underscore-after-number followed by five tests for name-signature
	delimiter.

2000-07-24  Hans-Peter Nilsson  <hp@axis.com>

	* cplus-dem.c (work_stuff_copy_to_from): New.
	(delete_non_B_K_work_stuff): New.
	(delete_work_stuff): New.
	(mop_up): Break out work_stuff destruction to delete_work_stuff.
	(iterate_demangle_function): New.
	(demangle_prefix): Call iterate_demangle_function instead of
	demangle_function_name.  Leave handling of name-signature
	__-delimiters to iterate_demangle_function.

	* cplus-dem.c (demangle_integral_value): Strip an optional
	following underscore cautiously.  Handle negative numbers.

From-SVN: r36086
2000-08-31 21:44:25 +00:00
Mark Mitchell
b60fe4a75b cplus-dem.c (INTBUF_SIZE): New macro.
* cplus-dem.c (INTBUF_SIZE): New macro.
	(string_append_template_idx): New function.
	(demangle_expression): Likewise.
	(demangle_integral_value): Use it.
	(demangle_real_value): New function, split out from ...
	(demangle_template_value_parm): ... here.  Use
	string_append_template_idx.  Use demangle_real_value.
	(demangle_template): Use string_append_template_idx.
	(demangle_qualified): Use consume_count_with_underscores.
	(get_count): Tweak formatting.
	(do_type): Use string_append_template_idx.

From-SVN: r30091
1999-10-19 17:52:52 +00:00
Mark Mitchell
7c56a6cef7 cplus-dem.c (do_type): Handle pointer to member types whose enclosing classes have namespace scope.
* cplus-dem.c (do_type): Handle pointer to member types whose
	enclosing classes have namespace scope.

From-SVN: r29901
1999-10-11 08:32:10 +00:00
Mark Mitchell
391cdef056 cplus-dem.c (demangle_template_value_parm): Handle pointers-to-members.
* cplus-dem.c (demangle_template_value_parm): Handle
	pointers-to-members.
	(do_type): Handle template parameters as qualifiers.

From-SVN: r26350
1999-04-11 18:46:52 +00:00
Tom Tromey
7c72138aa2 regress-demangle: New file.
* testsuite/regress-demangle: New file.
	* testsuite/demangle-expected: New file.
	* Makefile.in (all, check, installcheck, info, install-info,
	clean-info, dvi, install, etags, tags, mostlyclean, clean,
	distclean, maintainer-clean, realclean): Depend on corresponding
	`-subdir' target.
	(all-subdir check-subdir installcheck-subdir info-subdir
	install-info-subdir clean-info-subdir dvi-subdir
	install-info-subdir etags-subdir mostlyclean-subdir clean-subdir
	distclean-subdir maintainer-clean-subdir): New target.
	* testsuite/Makefile.in: New file.
	* configure: Rebuilt.
	* configure.in: Create testsuite/Makefile.

From-SVN: r26205
1999-04-05 14:28:59 +00:00