Commit Graph

43 Commits

Author SHA1 Message Date
Jason Merrill
8e5d8bfa7c fix typo
From-SVN: r49397
2002-02-01 11:06:10 -05:00
Craig Rodrigues
a98facb0de call.c, [...]: Change my_fancy_abort() to abort().
2002-01-23  Craig Rodrigues  <rodrigc@gcc.gnu.org>

        * call.c, class.c, decl.c, decl2.c, error.c, expr.c, friend.c,
        init.c, lex.c, mangle.c, method.c, pt.c, repo.c, rtti.c, search.c,
        semantics.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c:
        Change my_fancy_abort() to abort().

From-SVN: r49139
2002-01-23 14:26:07 +00:00
Graham Stott
ff0b0e4c4e mangle.c (MANGLE_TRACE): Add parenthesis.
* mangle.c (MANGLE_TRACE): Add parenthesis.
        (MANGLE_TRACE_TREE): Likewise.
        (write_signed_number): Likewise.
        (write_unsigned_number): Likewise.

From-SVN: r48638
2002-01-08 10:21:56 +00:00
Bryce McKinlay
89d684bba3 tree-dump.c: Rename from c-dump.c.
* tree-dump.c: Rename from c-dump.c. Include c-tree.h, not c-common.h.
	(lang_type_quals): Declare.
	(dequeue_and_dump): Use lang_hooks.tree_dump.type_quals function to
	retrieve language-specific qualifiers for a type node, instead of
	C_TYPE_QUALS. Likewise for lang_hooks.tree_dump.dump_tree instead of
	lang_dump_tree.
	* tree-dump.h: Rename from c-dump.h.
	* c-common.h (C_TYPE_QUALS): Removed.
	Move declarations for tree-dump.c interface to...
	* tree.h: ... here. Remove lang_dump_tree.
	* langhooks.h (struct lang_hooks_for_tree_dump): New.
	(struct lang_hooks): Add tree_dump hooks.
	* langhooks.c (lhd_tree_dump_dump_tree): New function.
	(lhd_tree_dump_type_quals): New function.
	* langhooks-def.h (lhd_tree_dump_dump_tree, lhd_tree_dump_type_quals):
	Declare.
	(LANG_HOOKS_INITIALIZER): Add tree_dump hooks.
	* Makefile.in: Move tree-dump.o to language-independent back-end.

cp:
	* cp-tree.h (CP_TYPE_QUALS): Removed.
	* decl.c (cxx_init_decl_processing): Don't set lang_dump_tree.
	* cp-lang.c: Set LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN and
	LANG_HOOKS_TREE_DUMP_TYPE_QUALS_FN.
	* dump.c (cp_dump_tree): Use void* dump_info argument to match
	lang-hooks prototype.
	* call.c, cp-tree.h, cvt.c, decl.c, init.c, mangle.c, method.c, pt.c,
	rtti.c, semantics.c, tree.c, typeck.c, typeck2.c: All references to
	CP_TYPE_QUALS changed to cp_type_quals.
	* Make-lang.in: References to c-dump.h changed to tree-dump.h.
	(CXX_C_OBJS): Remove c-dump.o.

From-SVN: r47257
2001-11-22 02:33:02 +00:00
Kriang Lerdsuwanakij
873ff98777 mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.
* mangle.c (write_expression): Handle CAST_EXPR, STATIC_CAST_EXPR,
	CONST_CAST_EXPR.
	* operators.def: Add CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR.

From-SVN: r47135
2001-11-18 06:24:45 +00:00
Kriang Lerdsuwanakij
b8c6534b88 cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
* cp-tree.def (UNBOUND_CLASS_TEMPLATE): New tree node.
	* cp-tree.h (make_unbound_class_template): Prototype new function.
	* decl.c (make_unbound_class_template): New function.
	* decl2.c (arg_assoc_template_arg): Handle UNBOUND_CLASS_TEMPLATE.
	* error.c (dump_type): Likewise.
	* mangle.c (write_type): Likewise.
	* parse.y (template_parm): Likewise.
	(template_argument): Use make_unbound_class_template.
	* pt.c (convert_template_argument): Handle UNBOUND_CLASS_TEMPLATE.
	(tsubst): Likewise.
	(tsubst_copy): Likewise.
	(unify): Likewise.
	* tree.c (walk_tree): Likewise.
	* typeck.c (comptypes): Likewise.

From-SVN: r46430
2001-10-23 09:14:15 +00:00
Kaveh R. Ghazi
cb6edbcb19 collect2.c (main): Const-ification.
* collect2.c (main): Const-ification.
	* gcc.c (translate_options, process_command): Use xstrdup in
	lieu of xmalloc/strcpy.
	(main): Use concat in lieu of xmalloc/strcpy/strcat.
cp:
	* mangle.c (mangle_conv_op_name_for_type): Use concat in lieu of
	xmalloc/strcpy/strcat.

From-SVN: r45631
2001-09-15 14:04:47 +00:00
Jason Merrill
08ac397c04 call.c (joust): Only prefer a non-builtin candidate to a builtin one if...
* call.c (joust): Only prefer a non-builtin candidate to a builtin
        one if they have the same signature.

        * cvt.c (build_up_reference): Take DECL parm.  Check TREE_STATIC on
        it rather than toplevel_bindings_p.  Give it a mangled name if static.
        (convert_to_reference): Adjust.
        * decl2.c (get_temp_name): Lose.
        * mangle.c (mangle_ref_init_variable): New fn.
        (mangle_guard_variable): Strip the ref-init header.
        * cp-tree.h: Adjust.
        * decl.c (cp_finish_decl): Add the DECL_STMT after processing the
        initializer.
        (grok_reference_init): Always use DECL_INITIAL.

From-SVN: r44358
2001-07-25 11:04:32 -04:00
Nathan Sidwell
3461fba7ad Remove old-abi remnants.
Remove old-abi remnants. Remove comments about old abi
	behaviour. Remove refences to 'new-abi' in comments.
	* cp-tree.h: Adjust comments.
	(vbase_offsets_in_vtable_p): Delete.
	(vcall_offsets_in_vtable_p): Delete.
	(vptrs_present_everywhere_p): Delete.
	(all_overridden_vfuns_in_vtables_p): Delete.
	(merge_primary_and_secondary_vtables_p): Delete.
	(TYPE_CONTAINS_VPTR_P): Adjust.
	(VTT_NAME_PREFIX): Remove.
	(CTOR_VTBL_NAME_PREFIX): Remove.
	(init_vbase_pointers): Remove.
	* class.c: Adjust coments.
	(build_vbase_pointer_fields): Delete.
	(build_vbase_pointer): Remove old-abi code.
	(build_secondary_vtable): Likewise.
	(modify_all_vtables): Likewise.
	(create_vtable_ptr): Likewise.
	(layout_class_type): Likewise.
	(finish_struct_1): Likewise.
	(finish_vtbls): Likewise.
	(dfs_finish_vtbls): Delete.
	(build_vbase_offset_vtbl_entries): Remove old-abi code.
	* cvt.c: Adjust comments.
	* decl.c: Adjust comments.
	* decl2.c: Adjust comments.
	* init.c: Adjust comments.
	(construct_virtual_bases): Remove old-abi code.
	* lang-specs.h: Remove -fno-new-abi.
	* mangle.c: Adjust comments.
	* rtti.c: Adjust comments.
	(get_base_offset): Remove old-abi-code.
	* search.c: Adjust comments.
	(dfs_init_vbase_pointers): Remove.
	(dfs_vtable_path_unmark): Remove.
	(init_vbase_pointers): Remove.
	* semantics.c: Adjust comments.
	(emit_associated_thunks): Remove old-abi code.
	* typeck.c: Adjust comments.

From-SVN: r44215
2001-07-21 00:03:21 +00:00
Nathan Sidwell
0576ec1308 mangle.c (write_chars): New macro.
cp:
	* mangle.c (write_chars): New macro.
	(hwint_to_ascii): New function
	(write_number): Use it.
	(write_integer_cst): Deal with really big numbers.
testsuite:
	* g++.old-deja/g++.pt/mangle2.C: New test.

From-SVN: r41584
2001-04-26 08:34:06 +00:00
Mark Mitchell
5d2ed28c27 cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is set.
* cp-tree.h (DECL_LANGUAGE): Don't assume DECL_LANG_SPECIFIC is
	set.
	(SET_DECL_LANGUAGE): New macro.
	* decl.c (duplicate_decls): Use SET_DECL_LANGUAGE.
	(pushdecl): Likewise.
	(build_library_fn_1): Likewise.
	(build_cp_library_fn): Likewise.
	(grokfndecl): Likewise.
	(grokvardecl): Mark `extern "C"' variables as having C linkage.
	* decl2.c (grokclassfn): Use SET_DECL_LANGUAGE.
	* lex.c (retrofit_lang_decl): Likewise.
	* mangle.c (mangle_decl_string): Don't mangle the names of
	variables declared with C language linkage.
	* semantics.c (finish_member_declaration): Use SET_DECL_LANGUAGE.

From-SVN: r41430
2001-04-19 22:49:48 +00:00
Mark Mitchell
24272dc037 cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
* cp-tree.h (TYPE_PTRMEM_CLASS_TYPE): Improve documentation.
	* mangle.c (write_pointer_to_member_type): Fix mangling of
	pointers to cv-qualified member function types.

From-SVN: r41373
2001-04-16 05:51:38 +00:00
Jakub Jelinek
f1a0345cf6 mangle.c (write_discriminator): Use _0' for discriminator 1, not _'.
* mangle.c (write_discriminator): Use `_0' for discriminator 1,
	not `_'.

	* cp-demangle.c (demangle_discriminator): `_0' is discriminator #1,
	`_' not followed by a digit is invalid.

From-SVN: r40795
2001-03-23 23:12:55 +01:00
Jakub Jelinek
8e4ce833ab decl.c (local_names): Define.
* decl.c (local_names): Define.
	(push_local_name): New.
	(grok_reference_init): Return init if initializing static reference
	variable with non-constant instead of emitting it.
	Move expand_static_init call to cp_finish_decl.
	(layout_var_decl): Call push_local_name.
	(maybe_commonize_var): Allow inlining functions even if they have
	static local variables, use comdat_linkage for them if flag_weak.
	(check_initializer): Call obscure_complex_init if
	grok_reference_init returned non-zero.
	(save_function_data): Clear x_local_names.
	(pop_cp_function_context): Free x_local_names.
	(mark_inlined_fns): Remove.
	(mark_lang_function): Mark x_local_names.
	(lang_mark_tree): Don't mark DECL_ACCESS for DECL_DISCRIMINATOR_P.
	Mark inlined_fns as tree, remove call to mark_inlined_fns.
	* class.c (alter_access): Ensure DECL_ACCESS is never set if
	DECL_DISCRIMINATOR_P.
	* cp-tree.h (cp_language_function): Add x_local_names.
	(lang_decl_flags): Add discriminator into u2.
	(lang_decl_inlined_fns): Remove.
	(lang_decl): inlined_fns is now a TREE_VEC.
	(DECL_DISCRIMINATOR_P, DECL_DISCRIMINATOR): Define.
	* optimize.c (inlinable_function_p): DECL_INLINED_FNS is now a
	TREE_VEC, not a custom structure.
	(optimize_function): Likewise.
	* mangle.c (discriminator_for_local_entity): Discriminate among
	VAR_DECL local entities.
	* search.c (dfs_access_in_type): If DECL_DISCRIMINATOR_P, DECL_ACCESS
	is not valid.

	* g++.old-deja/g++.other/mangle3.C: New test.

From-SVN: r40779
2001-03-23 13:04:11 +01:00
Mark Mitchell
1c06710a55 mangle.c (mangle_decl_string): Mangle the names of overloaded operators, even when they have `extern "C"' linkage.
* mangle.c (mangle_decl_string): Mangle the names of overloaded
	operators, even when they have `extern "C"' linkage.

From-SVN: r40690
2001-03-21 17:19:54 +00:00
Mark Mitchell
92643fea93 Compute DECL_ASSEMBLER_NAME lazily.
* tree.h (DECL_ASSEMBLER_NAME): Compute it lazily.
	(DECL_ASSEMBLER_NAME_SET_P): New macro.
	(SET_DECL_ASSEMBLER_NAME): Likewise.
	(COPY_DECL_ASSEMBLER_NAME): Likewise.
	(set_decl_assembler_name): Declare.
	(lang_set_decl_assembler_name): Likewise.
	* tree.c (lang_set_decl_assembler_name): New variab.e
	(set_decl_assembler_name): New function.
	(init_obstacks): Set lang_set_decl_assembler_name.
	(build_decl): Don't set DECL_ASSEMBLER_NAME.
	* c-decl.c (duplicate_decls): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(builtin_function): Likewise.
	(finish_decl): Likewise.
	* dbxout.c (dbxout_type_methods): Likewise.
	* ggc-common.c (ggc_mark_trees): Likewise.
	* profile.c (output_func_start_profiler): Likewise.
	* varasm.c (make_decl_rtl): Likewise.

	* class.c (get_vtable_decl): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(add_method): Remove optimization involving comparison of
	DECL_ASSEMBLER_NAME.
	(build_vtbl_or_vbase_field): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(check_methods): Likewise.
	(build_clone): Likewise.
	(built_vtt): Likewise.
	* cp-tree.h (DECL_NEEDED_P): Likewise.
	* decl.c (pushtag): Likewise.
	(duplicate_decls): Likewise.
	(pushdecl): Likewise.
	(builtin_function): Likewise.
	(build_library_fn_1): Set DECL_LANGUAGE for library functions.
	(build_cp_library_fn): Likewise.
	(maybe_commonize_var): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(make_rtl_for_nonlocal_decl): Likewise.
	(cp_finish_decl): Likewise.
	(grokfndecl): Likewise.
	(grokvardecl): Likewise.
	(grokdeclarator): Likewise.
	(start_function): Likewise.
	(cp_missing_return_ok_p): Likewise.
	* decl2.c (grokclassfn): Likewise.
	(check_classfn): Likewise.
	(finish_static_data_member_decl): Likewise.
	(grokfield): Likewise.
	* error.c (GLOBAL_IORD_P): Remove.
	(dump_global_iord): Improve output.
	(dump_decl): Avoid using DECL_ASSEMBLER_NAME.
	* except.c (nothrow_libfn_p): Summarily reject any function not in
	namespace-scope.
	* init.c (build_java_class_ref): Don't explicitly set
	DECL_ASSEMBLER_NAME after calling mangle_decl.
	* mangle.c (mangle_decl_string): Handle extern "C" functions.
	(mangle_decl): Set the DECL_ASSEMBLER_NAME for the decl.
	* method.c (set_mangled_name_for_decl): Don't explicitly set
	DECL_ASSEMBLER_NAME after calling mangle_decl.
	(make_thunk): Explicitly set the DECL_ASSEMBLER_NAME and
	IDENTIFIER_GLOBAL_VALUE for the thunk.
	* pt.c (set_mangled_name_for_template_decl): Remove.
	(check_explicit_specialization): Don't use it.
	(looup_template_class): Don't set DECL_ASSEMBLER_NAME.
	(tsubst_friend_function): Likewise.
	(tsubst_decl): Likewise.
	(regenerate_decl_from_template): Use COPY_DECL_ASSEMBLER_NAME.
	* rtti.c (get_tinfo_decl): Use SET_DECL_ASSEMBLER_NAME,
	COPY_DECL_ASSEMBLER_NAME, etc.  Don't set DECL_ASSEMBLER_NAME
	where it's not necessary.
	(tinfo_base_init): Likewise.
	(create_real_tinfo_var): Likewise.
	* search.c (looup_field_1): Likewise.
	* semantics.c (finish_named_return_value): Likewise.
	* tree.c (init_tree): Set lang_set_decl_assembler_name.

	* com.c (builtin_function): Use SET_DECL_ASSEMBLER_NAME.

	* class.c (build_class_ref): Use SET_DECL_ASSEMBLER_NAME.
	(layout_class): Likewise.
	(layout_class_method): Likewise.
	(emit_register_classes): Likewise.
	* decl.c (builtin_function): Likewise.
	(give_name_to_locals): Likewise.

From-SVN: r40642
2001-03-19 23:50:04 +00:00
Mark Mitchell
f58c04acd7 mangle.c (write_encoding): Pass write_function_type the FUNCTION_DECL for the function being encoded.
* mangle.c (write_encoding): Pass write_function_type the
	FUNCTION_DECL for the function being encoded.
	(write_function_type): Pass it along to write_bare_function_type.
	(write_bare_function_type): Pass it along to write_method_parms.
	(write_method_parms): Don't mangle the compiler-generated
	parameters to a constructor or destructor.

From-SVN: r39985
2001-02-22 21:46:06 +00:00
Jakub Jelinek
324ffb8c3d mangle.c (write_mangled_name, [...]): Mangle overloaded operators even in "C" linkage.
* mangle.c (write_mangled_name, write_encoding): Mangle overloaded
	operators even in "C" linkage.
	* method.c (set_mangled_name_for_decl): Likewise.
	* decl.c (grokfndecl): Call set_mangled_name_for_decl even for
	overloaded operators in "C" linkage.

	* g++.old-deja/g++.other/mangle2.C: New test.

From-SVN: r39257
2001-01-25 08:35:21 +01:00
Mark Mitchell
792508b58b * mangle.c (write_builtin_type): Fix thinko.
From-SVN: r38894
2001-01-11 03:15:49 +00:00
Alexandre Petit-Bianco
23d4e4cc4a decl2.c (acceptable_java_type): Allow references too.
2001-01-07  Alexandre Petit-Bianco  <apbianco@cygnus.com>

        * decl2.c (acceptable_java_type): Allow references too.
        * init.c (build_java_class_ref): When using the new ABI, search
        `class$' and have it mangled with `mangle_decl.'
        * mangle.c (write_java_integer_type_codes): New function.
        (write_builtin_type): Detect and mangle Java integer and real
        types.

(http://gcc.gnu.org/ml/gcc-patches/2001-01/msg00756.html)

From-SVN: r38875
2001-01-10 11:20:52 -08:00
Jason Merrill
c00996a3ea mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
* mangle.c (write_type): Mangle VECTOR_TYPE with "U8__vector".
        (write_builtin_type): Pass intSI_type_node and the like through
        type_for_mode.
        * method.c (process_overload_item): Mangle VECTOR_TYPEs with 'o'.
        Pass intSI_type_node and the like through type_for_mode.
        * decl2.c (arg_assoc_type): Handle VECTOR_TYPE like COMPLEX_TYPE.
        * pt.c (tsubst, unify): Likewise.
        * tree.c (walk_tree): Likewise.
        * error.c (dump_type): Likewise.
        (dump_type_prefix, dump_type_suffix): Don't bother with VECTOR_TYPE.

        * Make-lang.in: Tweak top comment for emacs.
        (cp/TAGS): Restore.

        * except.c (expand_throw): Use push_throw_library_fn for _Jv_Throw.

        * pt.c (tsubst_decl): Call clone_function_decl here.
        (do_decl_instantiation): Not here.
        * class.c (clone_function_decl): Robustify.

        * decl.c (store_bindings): Only search in the non modified
        old_bindings for duplicates.

From-SVN: r37999
2000-12-04 12:00:04 -05:00
Mark Mitchell
6e1b44bce7 mangle.c (mangle_conv_op_name_for_type): Don't use `__op' prefix.
* mangle.c (mangle_conv_op_name_for_type): Don't use `__op'
	prefix.

From-SVN: r37678
2000-11-22 23:53:03 +00:00
Alex Samuel
beac9b932c mangle.c (write_name): Use <unscoped-name> for names directly in function scope.
* mangle.c (write_name): Use <unscoped-name> for names directly in
	function scope.
	(write_unscoped_name): Accept names directly in function scope.

From-SVN: r37603
2000-11-21 04:38:08 +00:00
Mark Mitchell
04f3dc2b03 decl.c (grokparms): Don't even function types of `void' type, either.
* decl.c (grokparms): Don't even function types of `void' type,
	either.
	* mangle.c (write_type): Don't crash when confronted with the
	error_mark_node.

From-SVN: r37555
2000-11-19 04:56:45 +00:00
Mark Mitchell
43048a06fa mangle.c (write_special_name_constructor): Don't generate assembler junk when confronted with an old-style constructor.
* mangle.c (write_special_name_constructor): Don't generate
	assembler junk when confronted with an old-style constructor.
	(write_special_name_destructor): Likewise.
	(mangle_decl_string): Do it here instead.

From-SVN: r37508
2000-11-16 22:36:20 +00:00
Kriang Lerdsuwanakij
a1281f4503 cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
* cp-tree.def (BOUND_TEMPLATE_TEMPLATE_PARM): New tree code.
        (TEMPLATE_TEMPLATE_PARM): Adjust comment.
        * cp-tree.h (TYPE_BINFO): Adjust comment.
        (TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
        (TEMPLATE_TYPE_PARM_INDEX): Likewise.
        (IS_AGGR_TYPE): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
        (TYPE_TEMPLATE_INFO): Likewise.
        (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): Likewise.
        * class.c (push_nested_class): Likewise.
        * decl.c (lookup_name_real): Likewise.
        (grokdeclarator): Likewise.
        (grok_op_properties): Likewise.
        (xref_tag): Likewise.
        (xref_basetypes): Likewise.
        * decl2.c (constructor_name_full): Likewise.
        (arg_assoc_template_arg): Add TEMPLATE_TEMPLATE_PARM case.
        (arg_assoc_type): Use BOUND_TEMPLATE_TEMPLATE_PARM instead.
        * error.c (dump_type): Split TEMPLATE_TEMPLATE_PARM case.
        (dump_type_prefix): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        (dump_type_suffix): Likewise.
        * init.c (is_aggr_type): Use BOUND_TEMPLATE_TEMPLATE_PARM
        instead.
        (get_aggr_from_typedef): Likewise.
        * mangle.c (write_type): Split TEMPLATE_TEMPLATE_PARM case.
        (write_expression): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        (write_template_parm): Likewise.
        (write_template_template_parm): Check tree code instead of
        using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
        * method.c (build_overload_nested_name): Add
        BOUND_TEMPLATE_TEMPLATE_PARM.
        (process_overload_item): Split TEMPLATE_TEMPLATE_PARM case.
        * parse.y (bad_parm): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        * pt.c (convert_template_argument): Check tree code instead of
        using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
        (for_each_template_parm_r): Split TEMPLATE_TEMPLATE_PARM case.
        (for_each_template_parm): Adjust comment.
        (tsubst): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.
        (tsubst_copy): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        (unify): Add BOUND_TEMPLATE_TEMPLATE_PARM.  Reorganize.  Use
        template_args_equal to compare template template parameter cases.
        * ptree.c (print_lang_type): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        * search.c (lookup_field_1): Use BOUND_TEMPLATE_TEMPLATE_PARM
        instead.
        * tree.c (copy_template_template_parm): Decide whether to create
        a TEMPLATE_TEMPLATE_PARM or BOUND_TEMPLATE_TEMPLATE_PARM node.
        (walk_tree): Add BOUND_TEMPLATE_TEMPLATE_PARM.
        (copy_tree_r): Likewise.
        * typeck.c (comptypes): Likewise.  Check tree code instead of
        using TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.

From-SVN: r36149
2000-09-04 21:01:39 -04:00
Zack Weinberg
63ad61edae top level:
* c-common.c (declare_function_name): Use func_id_node,
	function_id_node, and pretty_function_id_node.  Do not make
	__func__ visible at file scope.
	* c-common.h (c_tree_index): Add CTI_FUNCTION_ID,
	CTI_PRETTY_FUNCTION_ID, and CTI_FUNC_ID.
	(function_id_node, pretty_function_id_node, func_id_node): New
	macros.
	* c-decl.c (init_decl_processing): Initialize function_id_node,
	pretty_function_id_node, and func_id_node.
	(c_make_fname_decl): Correct comment.

	* tree.h (struct tree_identifier): Constify pointer member.

	* c-decl.c (pushdecl, implicit_decl_warning): Constify a char *.
	* c-pragma.h (struct weak_syms): Constify name and value members.
	(add_weak): Constify arguments.

	* calls.c (special_function_p): Constify a char *.
	(expand_call): Remove variable which is initialized and then
	never used.
	* dependence.c (struct def_use, struct induction, struct subscript):
	Constify 'variable' member.
	(get_low_bound, have_induction_variable): Constify char * argument.
	(find_induction_variable): Add braces to avoid dangling else.
	(classify_dependence): Constify char * arrays.
	* profile.c (output_func_start_profiler): Constify a char *.
	* stor-layout.c (finalize_record_size): Constify a char *.
	* tree.c (is_attribute_p): Constify a char *.
	* varasm.c (add_weak, remove_from_pending_weak_list): Constify argument.

	* varasm.c (make_function_rtl, make_decl_rtl): Rearrange code
	for comprehensibility.  Do not call get_identifier if we did
	not change the DECL_ASSEMBLER_NAME of the decl.  Use alloca to
	create temporary string constants, not ggc_alloc_string.  No
	need to copy result of ASM_FORMAT_PRIVATE_NAME.  Use const
	char * to hold IDENTIFIER_POINTERs.
ch:
	* inout.c (add_enum_to_list): Use DECL_NAME directly, don't get
	its IDENTIFIER_POINTER and immediately call get_identifier on it.
	* lex.c (yywrap): Constify a char *.
cp:
	* class.c (build_secondary_vtable): Constify a char *.
	* decl.c (init_decl_processing): Initialize function_id_node,
	pretty_function_id_node, and func_id_node.
	* input.c (struct input_source): Constify 'str'.
	(feed_input): Constify first argument.
	* mangle.c (write_identifier): Constify argument.
	* pt.c (mangle_class_name_for_template): Constify argument.
f:
	* ansify.c: Use #line, not # <number>.
java:
	* jcf-parse.c (set_source_filename): Constify a char *.
	* jcf-write.c (append_innerclasses_attribute,
	make_class_file_name): Constify a char *.  Don't recycle a
	variable for an unrelated purpose.
	* parse.y: (build_alias_initializer_parameter_list): Constify a char *.
	(breakdown_qualified): Do not modify IDENTIFIER_POINTER strings.

From-SVN: r36055
2000-08-29 21:39:49 +00:00
Alex Samuel
f0f338480a mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
* mangle.c (CLASSTYPE_TEMPLATE_ID_P): Remove unexplained voodoo.
	(write_encoding): Pass another argument to write_name.
	(write_name): Add ignore_local_scope parameter.  Fix handling of
	local names.
	(write_nested_name): Use write_unqualified_name.
	(write_prefix): Likewise.  Skip out on FUNCTION_DECLs.
	(write_template_prefix): Use write_unqualified_name.
	(write_component): Remove.
	(write_local_name): Add parameter.  Use direct local entity to
	discriminator calculation.
	(write_class_enum_type): Pass another argument to write_name.
	(write_template_template_arg): Likewise.
	(make_guard_variable): Likewise.

From-SVN: r36013
2000-08-28 05:22:30 +00:00
Mark Mitchell
f22967f31a decl.c (grokfndecl): Require that main' return an int'.
* decl.c (grokfndecl): Require that `main' return an `int'.
	* mangle.c (write_encoding): Don't mangle return types for
	conversion functions.

From-SVN: r35972
2000-08-25 07:28:36 +00:00
Mark Mitchell
94350948fb cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
* cp-tree.h (DECL_CLONED_FUNCTION_P): Check DECL_LANG_SPECIFIC.
	* mangle.c (write_function_type): Change prototype.
	(write_encoding): Don't mangle return types for
	constructors or destructors.
	(write_type): Adjust call to write_function_type.
	* pt.c (instantiate_template): Instantiate alternate entry points
	when instantiating the main function.

From-SVN: r35916
2000-08-23 17:12:23 +00:00
Alex Samuel
722bed0f9c mangle.c (DECL_TEMPLATE_ID_P): Remove.
* mangle.c (DECL_TEMPLATE_ID_P): Remove.
	(CLASSTYEP_TEMPLATE_ID_P): Check template info, and context when
	ascertaining primaryness.
	(G): Remove template_args.
	(decl_is_template_id): New function.
	(write_encoding): Use decl_is_template_id.
	(write_name): Likewise.  Handle type_decls.  Get main variant of
	type decls.
	(write_nested_name): Likewise.
	(write_prefix): Likewise.
	(write_template_prefix): Likewise.
	(write_special_name_constructor): Remove defunct production from
	comment.
	(write_bare_function_type): Remove comment about absent parameter.
	(write_template_template_arg): Add missing grammar production to
	comment.

From-SVN: r35355
2000-07-30 23:37:04 +00:00
Mark Mitchell
bc6e9a0a86 mangle.c (canonicalize_for_substitution): Return the canonical variant of a type.
* mangle.c (canonicalize_for_substitution): Return the canonical
	variant of a type.

From-SVN: r34834
2000-07-02 18:44:52 +00:00
Alex Samuel
bece74bdee in libiberty/ChangeLog:
* cp-demangle.c (demangle_encoding): Accept no substitutions.
	(demangle_name): Handle <substitution> followed by
	<unqualified-template-name>.
	(demangle_type): Follow special substitutions with
	<class-enum-type>
	(demangle_subtitution): Set template_p for special substitutions.
	(main): Fix typos.

in gcc/cp/ChangeLog:

	* mangle.c (find_substitution): Use same_type_p.
	(write_encoding): Don't check for substitutions.

in libio/ChangeLog:

	* libioP.h (VTABLE_LABEL): Update for new vtable mangling.
	* stdstrbufs.cc (filebuf_vtable): Likewise.
	(stdiobuf_vtable): Likewise.

From-SVN: r34811
2000-06-30 15:25:33 +00:00
Mark Mitchell
31f8e4f306 cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
* cp-tree.h (BV_USE_VCALL_INDEX_P): New macro.
	(BV_GENERATE_THUNK_WITH_VTABLE_P): Likewise.
	(lang_decl_flags): Add generate_with_vtable_p.  Make vcall_offset
	a tree, not an int.
	(THUNK_GENERATE_WITH_VTABLE_P): New macro.
	(make_thunk): Change prototype.
	(emit_thunk): Rename to use_thunk.
	(mangle_thunk): Change prototype.
	* class.c (get_derived_offset): Simplify.
	(copy_virtuals): Clear BV_USE_VCALL_INDEX_P and
	BV_GENERATE_THUNK_WITH_VTABLE_P.
	(build_primary_vtable): Simplify.
	(add_virtual_function): Use BV_FN, rather than TREE_VALUE.
	(dfs_find_base): Remove.
	(update_vtable_entry_for_fn): Correct bug in finding the base
	where a virtual function was first declared.  Figure out whether
	or not to emit a vcall-thunk with the vtables in which it appears.
	Correct logic for deciding whether to use an ordinary thunk, or a
	vcall thunk.
	(finish_struct_1): Remove unnecssary code.
	(build_vtbl_initializer): Use ssize_int for the running counter of
	negative indices.
	(build_vtbl_initializer): Only use vcall thunks where necessary.
	Mark thunks as needing to be emitted with their vtables, or not.
	(build_vbase_offset_vtbl_entries): Adjust for use of ssize_int in
	indices.  Use size_binop.
	(dfs_build_vcall_offset_vtbl_entries): Don't rely on
	BINFO_PRIMARY_MARKED_P here.  Use BV_FN consistently.  Use
	size_binop.
	(build_rtti_vtbl_entries): Adjust call to build_vtable_entry.
	(build_vtable_entry): Mark thunks as needing to be emitted with
	their vtables, or not.
	* decl.c (lang_mark_tree): Mark the vcall_offset in a thunk.
	* decl2.c (mark_vtable_entries): Use use_thunk instead of
	emit_thunk.
	* dump.c (dequeue_and_dump): Remove dead code.  Dump new thunk
	information.
	* error.c (dump_expr): Use BV_FN.
	* mangle.c (mangle_thunk): Adjust now that vcall_offset is a tree,
	not an int.
	* method.c (make_thunk): Likewise.
	(emit_thunk): Rename to use_thunk.  Allow callers to decide
	whether or not to actually emit the thunk.  Adjust for changes in
	representation of vcall offsets.
	* search.c (dfs_get_pure_virtuals): Use BV_FN.
	* semantics.c (emit_associated_thunks): New function.
	(expand_body): Use it.
	* ir.texi: Adjust decriptions of thunks.

From-SVN: r34656
2000-06-23 01:14:40 +00:00
Nathan Sidwell
b72801e28a call.c (build_conditional_expr): Use VOID_TYPE_P.
* call.c (build_conditional_expr): Use VOID_TYPE_P.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_void): Likewise.
	* error.c (dump_expr): Likewise.
	* except.c (complete_ptr_ref_or_void_ptr_p): Likewise.
	* init.c (build_delete): Likewise.
	* method.c (emit_thunk): Likewise.
	* optmize.c (declare_return_variable): Likewise.
	* rtti.c (get_tinfo_decl_dynamic): Likewise.
	(get_typeid): Likewise.
	(build_dynamic_cast_1): Likewise.
	* typeck.c (composite_pointer_type): Likewise.
	(common_type): Likewise.
	(build_indirect_ref): Likewise.
	(build_binary_op): Likewise.
	(build_x_compound_expr): Likewise.
	(check_return_expr): Likewise.
	* typeck2.c (add_exception_specifier): Likewise.

	* mangle.c (write_method_parms): Use direct comparison for end
	of parmlist.

From-SVN: r34617
2000-06-20 15:42:55 +00:00
Mark Mitchell
459c43ad00 mangle.c (NESTED_TEMPLATE_MATCH): Fix typo in comment.
* mangle.c (NESTED_TEMPLATE_MATCH): Fix typo in comment.
	(is_std_substitution): Don't check CLASSTYPE_USE_TEMPLATE here.
	(find_substitution): Only use the `Sa' substitution for
	std::allocator, not instantiations of it.
	(write_template_prefix): Move comment.  Only use a TREE_LIST to
	represent substitutions for a member template.
	(write_array_type): Mangle array dimensions correctly.
	* optimize.c (maybe_clone_body): Copy more information from the
	cloned function.
	* pt.c (regenerate_decl_from_template): Preserve DECL_USE_TEMPLATE
	on the regenerated declaration.

From-SVN: r34497
2000-06-12 06:43:27 +00:00
Chip Salzenberg
82a362d0a4 mangle.c (write_number): Take an unsigned HOST_WIDE_INT as an argument.
* mangle.c (write_number): Take an unsigned HOST_WIDE_INT as an
	argument.
	(write_signed_number): New macro.
	(write_unsigned_number): Likewise.
	(write_source_name): Use them.
	(write_number): Handle signed and unsigned values.
	(write_integer_cst): Use tree_int_cst_sgn, and use
	write_unsigned_number or write_signed_number as appropriate.
	(write_discriminator): Use write_unsigned_number or
	write_signed_number as appropriate.
	(write_template_arg_literal): Likewise.
	(write_array_type): Use tree_low_cst.
	(write_template_parm):  Use write_unsigned_number or
	write_signed_number as appropriate.
	(write_substitution): Adjust call to write_number.
	(write_type): Get the TYPE_MAIN_VARIANT before mangling it.
	(write_expression): Handle non-type template arguments of
	reference type correctly.
	(mangle_thunk): Use write_signed_number.

	* mangle.c (find_substition): Don't mangle objects with typename
	substitutions (e.g. "cin" as "Si").

Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r34488
2000-06-11 03:57:18 +00:00
Mark Mitchell
4d8a1dd6c6 Revert last patch
From-SVN: r34474
2000-06-09 16:45:22 +00:00
Mark Mitchell
97a6940904 cp-tree.h (cp_tree_index): Remove Java types.
* cp-tree.h (cp_tree_index): Remove Java types.
	(java_fundamental_type_kind): New enumeration type.
	(java_fundamental_types): New array.
	* class.c (push_lang_context): Use java_fundamental_types.
	* decl.c (java_fundamental_types): Define it.
	(initialize_java_fundamental_types): New function.
	(init_decl_processing): Call it
	* mangle.c (integer_type_codes): Make it const.
	(java_fundamental_type_codes): New variable.
	(write_source_name_from_string): New function.
	(write_identifier): Constify.
	(write_builtin_type): Handle Java types.  Use same_type_p for type
	comparison.

From-SVN: r34472
2000-06-09 16:41:10 +00:00
Jason Merrill
669ec2b4f0 revert mangling patch
From-SVN: r34471
2000-06-09 12:26:24 -04:00
Mark Mitchell
657c130a99 invoke.texi: Remove documentation for -fsquangle and -fname-mangling-version.
* invoke.texi: Remove documentation for -fsquangle and
	-fname-mangling-version.

	Remove old ABI mangling code.
	* cp-tree.h (cp_tree_index): Remove CPTI_TINFO_DECL_ID and
	CPTI_TINFO_VAR_ID.
	(tinfo_decl_id): Remove.
	(tinfo_var_id): Likewise.
	(name_mangling_version): Likewise.
	(flag_do_squangling): Likewise.
	(get_vtt_name): Likewise.
	(init_method): Likewise.
	(build_overload_name): Likewise.
	(build_static_name): Likewise.
	(build_decl_overload_real): Likewise.
	(build_overload_with_type): Likewise.
	(build_destructor_name): Likewise.
	(get_id_2): Likewise.
	(get_ctor_vtbl_name): Likewise.
	(mangle_typeinfo_fn_for_type): New function.
	(mangle_java_reflection_var_for_type): Likewise.
	* call.c (build_new_method_call): Use mangle_vtt_for_type.
	* class.c (get_vtable_name): Remove.
	(get_vtt_name): Remove.
	(get_vtable_decl): Use mangle_vtbl_for_type.
	(build_vtt): Likewise.
	(build_ctor_vtbl_group): Remove old ABI mangling support.
	* decl.c (pushtag): Likewise.
	(maybe_commonize_var): Use set_mangled_name_for_decl.
	(grokfndecl): Remove old ABI mangling support.
	(grokvardecl): Likewise.
	(grokdeclarator): Likewise.
	(grok_op_properties): Adjust use of DEF_OPERATOR.
	* decl2.c (name_mangling_version): Remove.
	(lang_f_options): Remove squangle.
	(unsupported_options): Add squangle.
	(lang_decode_options): Don't set flag_do_squangling.  Issue a
	warning for -fname-mangling-version.
	(grokclassfn): Remove old ABI mangling support.
	(finish_static_data_member_decl): Likewise.
	(grokfield): Likewise.
	(grokoptypename): Likewise.
	(get_sentry): Likewise.
	* init.c (build_java_class_ref): Use
	mangle_java_reflection_var_for_type.
	* lex.c (init_operators): Adjust use of DEF_OPERATOR.
	(init_parse): Call init_mangle, not init_method.
	* mangle.c (write_special_name_constructor): Handle
	maybe-in-charge constructors.
	(write_special_name_destructor): Handle
	maybe-in-charge destructors.
	(write_expression): Tweak code to handle non-type template
	arguments with reference type.
	(mangle_typeinfo_fn_for_type): New function.
	(mangle_java_reflection_var_for_type): Likewise.
	(mangle_conv_op_name_for_type): Don't use a name that the user
	could type.
	* method.c (enum mangling_flags): Remove.
	(mangling_flags): Likewise.
	(obstack_chunk_alloc): Likewise.
	(obstack_chunk_free): Likewise.
	(OB_INIT): Likewise.
	(OB_PUTC): Likewise.
	(OB_PUTC2): Likewise.
	(OB_PUTS): Likewise.
	(OB_PUTID): Likewise.
	(OB_PUTCP): Likewise.
	(OB_FINISH): Likewise.
	(OB_LAST): Likewise.
	(btypelist): Likewise.
	(ktypelist): Likewise.
	(maxbtype): Likewise.
	(maxktype): Likewise.
	(typevec): Likewise.
	(maxtype): Likewise.
	(init_method): Likewise.
	(digit_buffer): Likewise.
	(nofold): Likewise.
	(start_squangling): Likewise.
	(end_squangling): Likewise.
	(icat): Likewise.
	(dicat): Likewise.
	(old_backref_index): Likewise.
	(flush_repeats): Likewise.
	(is_back_referenceable_type): Likewise.
	(issue_nrepeats): Likewise.
	(check_ktype): Likewise.
	(issue_ktype): Likewise.
	(build_overload_nested_name): Likewise.
	(build_underscore_int): Likewise.
	(build_overload_scope_ref): Likewise.
	(mangle_expression): Likewise.
	(build_overload_int): Likewise.
	(mangled_C9x_name): Likewise.
	(build_overload_value): Likewise.
	(build_template_template_parm_names): Likewise.
	(build_template_parm_names): Likewise.
	(build_overload_identifier): Likewise.
	(build_qualified_name): Likewise.
	(build_mangled_name_for_type_with_Gcode): Likewise.
	(build_mangled_name_for_type): Likewise.
	(build_overload_name): Likewise.
	(build_mangled_name): Likewise.
	(process_modifiers): Likewise.
	(check_btype): Likewise.
	(process_overload_item): Likewise.
	(build_static_name): Likewise.
	(build_decl_overload_real): Likewise.
	(set_mangled_name_for_decl): Remove old ABI mangling support.
	(build_typename_overload): Remove.
	(build_overload_with_type): Remove.
	(get_id_2): Remove.
	(get_ctor_vtbl_name): Remove.
	(build_destructor_name): Likewise.
	(set_mangled_name_for_decl): Likewise.
	(make_thunk): Remove old ABI mangling support.
	* operators.def: Likewise.
	* pt.c (check_explicit_specialization): Don't call
	set_mangled_name_for_template_decl.
	(lookup_template_class): Remove old ABI mangling support.
	(tsubst_friend_function): Update comment.
	(tsubst_decl): Remove old ABI mangling support.
	(tsubst_copy): Likewise.
	(set_mangled_name_for_template_decl): Remove.
	* rtti.c (init_rtti_processing): Use std_identifier.  Don't set
	tinfo_decl_id or tinfo_var_id.
	(get_tinfo_var): Use mangle_typeinfo_for_type.
	(tinfo_name): Remove old ABI mangling support.
	(get_tinfo_decl): Likewise.
	(tinfo_base_init): Likewise.
	(create_real_tinfo_var): Use a name that the user can't type.

	* tinfo2.cc (BUILTIN): Adjust to use new mangling.

From-SVN: r34458
2000-06-08 17:34:33 +00:00
Mark Mitchell
0dc09a613b ir.texi: Correct typo.
* ir.texi: Correct typo.
	* mangle.c (write_expression): Handle non-type template arguments
	with reference type.
	* method.c (build_overload_value): Likewise.
	* pt.c (convert_nontype_argument): Explicitly represent conversion
	to a reference with an ADDR_EXPR.
	(unify): Always unify arguments in left-to-right order.

From-SVN: r34396
2000-06-05 01:42:22 +00:00
Alex Samuel
1f6e1acc0f Make-lang.in (CXX_SRCS): Add mangle.c.
* Make-lang.in (CXX_SRCS): Add mangle.c.
	* Makefile.in (CXX_OBJS): Add mangle.o.
	(mangle.o): New rule.

Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r34394
2000-06-04 21:12:27 +00:00