Commit Graph

434 Commits

Author SHA1 Message Date
Mark Mitchell
58010b57a6 class.c (handle_using_decl): Get TYPE_FIELDS and TYPE_METHODS out of the class...
* class.c (handle_using_decl): Get TYPE_FIELDS and TYPE_METHODS
	out of the class, rather than taking them as parameters.
	(build_vbase_pointer_fields): Move here from tree.c.
	(build_vtbl_or_vbase_field): New function.
	(check_methods): Likewise.
	(remove_zero_width_bitfields): Likewise.
	(add_virtual_function): Use tree_cons instead of temp_tree_cons.
	(delete_duplicate_fields_1): Tidy.  Don't delete duplicate
	USING_DECLs here.
	(finish_struct_methods): Handle the case where there are no
	methods here.
	(get_basefndecls): Use tree_cons instead of temp_tree_cons.
	(check_field_decls): Call delete_duplicate_fields here.
	(finish_struct_1): Tidy.  Use check_methods and
	remove_zero_width_bitfields.
	* cp-tree.h (build_vbase_pointer_fields): Remove.
	* decl.c (grokdeclarator): Use tree_cons instead of
	temp_tree_cons.
	* decl2.c (qualified_lookup_using_namespace): Use tree_cons
	instead of temp_tree_cons.
	* lex.c (cons_up_default_function): Remove dead code.
	* method.c (fixup_pending_inline): New function, split out from	...
	(do_inline_function_hair): ... here.
	* tree.c (build_vbase_pointer_fields): Remove.

From-SVN: r30966
1999-12-16 03:10:12 +00:00
Richard Henderson
33848bb028 cp-tree.h (make_aggr_type): Declare.
* cp-tree.h (make_aggr_type): Declare.
        * lex.c (cp_make_lang_type): Don't SET_IS_AGGR_TYPE.
        (make_aggr_type): New.

        * decl.c (build_typename_type, init_decl_processing): Use it.
        (build_ptrmemfunc_type, xref_tag): Likewise.
        * except.c (call_eh_info): Likewise.
        * init.c (init_init_processing): Likewise.
        * pt.c (process_template_parm, lookup_template_class): Likewise.
        * rtti.c (expand_class_desc): Likewise.
        * semantics.c (begin_class_definition, finish_typeof): Likewise.
        * tree.c (copy_template_template_parm): Likewise.

From-SVN: r30951
1999-12-15 01:51:24 -08:00
Mumit Khan
0b807ad843 lex.c (saving_parse_to_obstack): New global.
1999-12-13  Mumit Khan  <khan@xraylith.wisc.edu>

	* lex.c (saving_parse_to_obstack): New global.
	(reinit_parse_for_block): Use.
	(reinit_parse_for_expr): Use.
	(check_newline): Use.

From-SVN: r30896
1999-12-14 05:33:22 +00:00
Kaveh R. Ghazi
486837a79c class.c (get_vtable_name): Use a literal format string and VTABLE_NAME_PREFIX macro instead of...
* class.c (get_vtable_name): Use a literal format string and
	VTABLE_NAME_PREFIX macro instead of VTABLE_NAME_FORMAT.
	(prepare_fresh_vtable): Likewise.

	* cp-tree.h (VTABLE_NAME_PREFIX): Define this instead of
	VTABLE_NAME_FORMAT.

	* decl.c (make_rtl_for_local_static): Remove unused variable `type'.

	* init.c (build_vec_init): Initialize variable `try_body'.

	* lex.c (yyerror): Don't call a variadic function with a
	non-literal format string.

	* optimize.c (optimize_function): Call memset, not bzero.

	* pt.c (for_each_template_parm_r): Add static prototype.

From-SVN: r30868
1999-12-11 19:02:10 +00:00
Mark Mitchell
a09ba2e041 cp-tree.h (min_tree_cons): Remove.
* cp-tree.h (min_tree_cons): Remove.
	(scratch_ovl_cons): Likewise.
	* decl.c (saveable_obstack): Don't declare.
	(duplicate_decls): Tweak error-message.
	(initialize_local_var): Explicitly mark the definition as static.
	(finish_function): Call permanent_allocation, just so
	that the middle-end sees the obstacks it expects.
	(mark_cp_function_context): Likewise.
	* init.c (build_new): Don't use min_tree_cons.
	* lex.c (permanent_obstack): Don't declare.
	(current_obstack, saveable_obstack): Likewise.
	* spew.c (current_obstack, saveable_obstack): Likewise.
	* tree.c (current_obstack, saveable_obstack): Likewise.
	(scratch_ovl_cons): Remove.
	(build_min_nt): Don't mess with obstacks.
	(build_min): Likewise.
	(min_tree_cons): Remove
	* typeck.c (build_component_ref): Don't use scratch_ovl_cons.
	(build_x_function_call): Likewise.
	(build_c_cast): Don't use min_tree_cons.

From-SVN: r30743
1999-12-01 18:09:09 +00:00
Mark Mitchell
46e8c075d0 Make-lang.in (CXX_SRCS): Add optimize.c.
1999-11-25  Mark Mitchell  <mark@codesourcery.com>

	* Make-lang.in (CXX_SRCS): Add optimize.c.
	* Makefile.in (CXX_OBJS): Add optimize.o.
	(CXX_TREE_H): Add splay-tree.h, system.h, and $(CONFIG_H).
	(spew.o, lex.o, decl.o, decl2.o, typeck2.o, typeck.o): Adjust.
	(class.o, call.o, friend.o, init.o, method.o, cvt.o): Likewise.
	(search.o, tree.o, ptree.o, rtti.o, except.o, expr.o): Likewise.
	(xref.o, pt.o, error.o, errfn.o, repo.o, semantics.o): Likewise.
	(dump.o): Likewise.
	(optimize.o): New target.
	* class.c: Don't include splay-tree.h.
	* cp-tree.def (CTOR_COMPLETE): Rename to CTOR_STMT.
	* cp-tree.h: Include splay-tree.h.
	(DECL_UNINLINABLE): New macro.
	(CTOR_BEGIN_P, CTOR_END_P): New macros.
	(flag_inline_trees): New variable.
	(local_variable_p): New function.
	(nonstatic_local_decl_p): Likewise.
	(optimize_function): Likewise.
	(cplus_unsave_expr_now): Remove.
	(copy_tree_r): Declare.
	(remap_save_expr): Likewise.
	* decl.c (local_variable_p): Don't
	make it static.
	(local_variable_p_walkfn): New function.
	(make_rtl_for_local_static): Remove code to try to avoid writing
	out static constants.
	(emit_local_var): Fix indentation.
	(nonstatic_local_decl_p): New function.
	(check_default_argument): Use local_variable_p_walkfn, not
	local_variable_p, when walking the tree.
	(start_function): Set the DECL_CONTEXT for automatically generated
	labels.
	(finish_constructor_body): Use CTOR_STMT to mark the end of a
	constructor.
	* decl2.c: Don't include splay-tree.h.
	(flag_inline_trees): Define.
	* dump.c: Don't include
	splay-tree.h.
	* except.c (expand_end_catch_block): Fix comment formatting.
	(expand_end_eh_spec): Set DECL_CONTEXT on temporary variables.
	(expand_throw): Tidy comment.
	* init.c (build_vec_delete_1): Use create_temporary_var.
	* lex.c (cplus_tree_code_type): Make it static.
	(cplus_tree_code_length): Likewise.
	(cplus_tree_code_name): Likewise.
	* optimize.c: New file.
	* semantics.c (finish_goto_stmt): Set DECL_UNLINABLE for functions
	with computed gotos.
	(setup_vtbl_ptr): Mark the beginnings of constructors with
	CTOR_STMT.
	(expand_stmt): Handle CTOR_STMT, not CTOR_COMPLETE.
	(expand_body): Call optimize_function.  Save bodies if we're doing
	inlining on trees.
	* tree.c: Don't include splay-tree.h.  Include insn-config.h and
	integrate.h.
	(copy_tree_r): Make it public.
	(statement_code_p): New function.
	(mark_local_for_remap_r): Likewise.
	(cp_usave_r): Likewise.
	(cp_unsave): Likewise.
	(build_cplus_new): Set DECL_CONTEXT for temporary variables.
	(walk_tree): Walk into `s' class nodes.  Walk statement chains.
	(copy_tree_r): Handle 's' class nodes.  Restore chains for
	statements.  Nullify scopes.  Don't copy types.
	(init_tree): Set lang_unsave to cp_unsave.
	(remap_save_expr): Define.
	* ir.texi: Document CTOR_STMT.

From-SVN: r30669
1999-11-25 20:32:04 +00:00
Kaveh R. Ghazi
b9d1251954 decl.c (pushdecl, [...]): Don't call a variadic function with a non-literal format string.
* decl.c (pushdecl, grokdeclarator): Don't call a variadic
        function with a non-literal format string.

        * lex.c (do_identifier): Likewise.

        * typeck.c (build_unary_op): Likewise.

From-SVN: r30641
1999-11-23 16:17:52 +00:00
Mark Mitchell
cd9f6678b3 cp-tree.h (DECL_LOCAL_FUCNTION_P): New macro.
* cp-tree.h (DECL_LOCAL_FUCNTION_P): New macro.
	* call.c (equal_functions): Use DECL_LOCAL_FUCNTION_P, not
	TREE_PERMANENT.
	* decl.c (pushdecl): Set DECL_LOCAL_FUNCTION_P.
	* decl2.c (lookup_arg_dependent): Use it.

	* cp-tree.h (cp_finish_decl): Change prototype.
	(finish_static_data_member_decl): Likewise.
	(push_permanent_obstack): Remove declaration.
	(push_expression_obstack): Likewise.
	(push_scratch_obstack): Likewise.
	(DECL_TEMPLATE_PARM_P): Robustify.
	(SET_DECL_TEMPLATE_PARM_P): New macro.
	* class.c (add_method): Don't manipulate obstacks.
	(finish_vtbls): Likewise.
	* cvt.c (build_up_reference): Adjust calls to cp_finish_decl.
	* decl.c (binding_for_name): Don't manipulate obstacks.
	(maybe_push_to_top_level): Likewise.
	(pop_from_top_level): Likewise.
	(duplicate_decls): Likewise.
	(pushdecl): Likewise.
	(implicitly_declare): Likewise.
	(build_typename_type): Likewise.
	(start_decl): Likewise.
	(cp_finish_decl): Likewise.
	(finish_decl): Likewise.
	(destroy_local_static): Likewise.
	(expand_static_init): Likewise.
	(complete_array_type): Likewise.
	(grokvardecl): Likewise.
	(build_ptrmemfnc_type): Likewise.
	(grokdeclarator): Likewise.
	(xref_tag): Likewise.
	(xref_basetypes): Likewise.
	(start_enum): Likewise.
	(finish_enum): Likewise.
	(start_function): Likewise.
	(finish_function): Likewise.
	(start_method): Adjust call to cp_finish_decl.
	* decl2.c (finish_static_data_member_decl): Don't manipulate
	obstacks.
	(grokfield): Likewise.
	(grokbitfield): Likewise.
	(get_temp_name): Likewise.
	(get_sentry): Likewise.
	(fnish_file): Likewise.
	(lookup_arg_dependent): Likewise.
	* except.c (call_eh_info): Likewise.
	(push_eh_info): Likewise.
	(do_pop_exception): Likewise.
	(initialize_handler_parm): Likewise.
	(expand_end_eh_spec): Likewise.
	(alloc_eh_object): Likewise.
	(expand_throw): Likewise.
	* expr.c (extract_scalar_init): Likewise.
	* init.c (build_java_class_ref): Likewise.
	* lex.c (get_time_identifier): Likewise.
	(snarf_defarg): Likewise.
	(add_defarg_fn): Likewise.
	(is_global): Simplify.
	(do_identifier): Don't check TREE_PERMANENT.
	* method.c (emit_thunk): Don't manipulate obstacks.
	* parse.y (condition): Adjust call to cp_finish_decl.
	(primary): Likewise.
	(initdcl): Likewise.
	(initdcl0_innards): Likewise.
	(nomods_initdcl0): Likewise.
	* pt.c (push_inline_template_parms_recursive): Use
	SET_DECL_TEMPLATE_PARM_P.
	(process_template_parm): Likewise.
	(lookup_template_class): Don't manipulate obstacks.
	(instantiate_class_template): Adjust call to
	finish_static_data_member_decl.
	(tsubst_decl): Don't manipulate obstacks.
	(tsubst_expr): Likewise.
	(instantiate_template): Likewise.
	(instantiate_decl): Adjust calls to cp_finish_decl.
	* rtti.c (call_void_fn): Don't manipulate obstacks.
	(get_tinfo_var): Likewise.
	(get_tinfo_fn_unused): Likewise.
	(build_dynamic_cast_1): Likewise.
	(expand_si_desc): Likewise.
	(expand_class_desc): Likewise.
	(expand_ptr_desc): Likewise.
	(expand_attr_desc): Likewise.
	(expand_generic_desc): Likewise.
	(synthesize_tinfo_fn): Likewise.
	* search.c (expand_upcast_fixups): Likewise.
	* semantics.c (finish_asm_stmt): Likewise.
	(finish_named_return_value): Likewise.
	(begin_class_definition): Likewise.
	(finish_class_definition): Likewise.
	(finish_typeof): Likewise.
	* tree.c (build_cplus_method_type): Likewise.
	(reverse_path): Likewise.
	(copy_template_template_parm): Likewise.
	(build_expr_ptr_wrapper): Likewise.
	(push_expression_obstack): Remove.
	(push_permanent_obstack): Likewise.
	* typeck.c (mark_addressable): Likewise.

From-SVN: r30527
1999-11-14 20:29:06 +00:00
Stephen L Moshier
5630b4635d * lex.c (yylex): Accept 'f' in mantissa of hex float constant.
From-SVN: r30285
1999-10-30 22:44:09 -06:00
Mark Mitchell
f9c4f105d5 decl.c (push_overloaded_decl_1): Use pushdecl.
* decl.c (push_overloaded_decl_1): Use pushdecl.

	* decl.c (auto_function): Replace #ifdef'd __inline with just
	plain inline.
	* lex.c (my_get_run_time): Likeise.
	(yyprint): Likewise.
	(identifier_type): Likewise.
	* method.c (start_squangling): Likewise.
	(end_squangling): Likewise.
	(icat): Likewise.
	(old_backref_index): Likewise.
	(flush_repeats): Likewise.
	(issue_ktype): Likewise.
	* parse.y (empty_parms): Likewise.
	* parse.c: Regenerated.

From-SVN: r30154
1999-10-25 06:38:42 +00:00
Greg McGary
9329983a8f lex.c (lang_init_options): Set flag_bounds_check as "unspecified".
* lex.c (lang_init_options): Set flag_bounds_check as "unspecified".
(lang_init): Set default for flag_bounds_check if still "unspecified".

From-SVN: r30038
1999-10-16 01:27:32 +00:00
Franz Sirl
266f2faa84 cp-tree.h (cp_make_lake_type): Renamed from make_lang_type.
* cp-tree.h (cp_make_lake_type): Renamed from make_lang_type.
        * lex.c (cp_make_lake_type): Likewise.
        * tree.c (init_tree): Init make_lang_type_fn.

From-SVN: r29865
1999-10-08 05:50:44 +00:00
Mark Mitchell
807625cf45 tree.c (lvalue_p_1): Use DECL_C_BIT_FIELD to check for bitfields, rather than DECL_BIT_FIELD.
* tree.c (lvalue_p_1): Use DECL_C_BIT_FIELD to check for
	bitfields, rather than DECL_BIT_FIELD.
	* ir.texi: Document how to tell whether or not a field is a
	bitfield.

	* lex.c (make_lang_type): Fix typo in comment.

From-SVN: r29781
1999-10-03 16:04:30 +00:00
Kaveh R. Ghazi
f0305a2b79 combine.c (gen_rtx_combine): Add missing call to va_end().
* combine.c (gen_rtx_combine): Add missing call to va_end().

	* final.c (asm_fprintf): Likewise.

	* genattrtab.c (attr_rtx): Likewise.

cp:
	* lex.c (compiler_error): Add missing call to va_end().

From-SVN: r29667
1999-09-26 11:40:53 +00:00
Mark Mitchell
b3ab27f3c3 cp-tree.h (CPTI_CLEANUP_TYPE): New macro.
* cp-tree.h (CPTI_CLEANUP_TYPE): New macro.
	(cleanup_type): Likewise.
	(search_tree): Change prototype.
	* decl.c (local_variable_p): Adjust for new interface to
	search_tree.
	(check_default_argument): Likewise.
	* error.c (dump_expr): Handle INIT_EXPR.
	* except.c (expand_throw): Don't make cleanup_type a local static.
	* expr.c (cplus_expand_expr): Don't handle NEW_EXPR.
	* init.c (build_new): Call build_new_1 directly, rather than
	building a NEW_EXPR.
	(build_new_1): Tidy.  Don't build a VEC_INIT_EXPR except when
	processing file-scope initializers.
	* lex.c (init_parse): Add an opname_tab entry for INIT_EXPR.
	* tree.c: Include splay-tree.h
	(no_linkage_helper): Adjust for new interface to search_tree.
	(search_tree): Pass around pointers to tree nodes, rather than the
	nodes themselves.  Handle VEC_INIT_EXPR.
	(no_linkage_check): Adjust for new interface to search_tree.
	(mapcar): Handle VEC_INIT_EXPR.
	(target_remap): New variable.
	(bot_manip): Use it.
	(bot_replace): New function.
	(break_out_target_exprs): Use it to remap all variables used in a
	default argument expression.
	* typeck.c (build_modify_expr): Don't crash when outside a
	function and presented with an INIT_EXPR assignment
	* Makefile.in (tree.o): Depend on splay-tree.h.

From-SVN: r29659
1999-09-24 20:54:08 +00:00
Jason Merrill
5096c664f7 lex.c: Get WCHAR_TYPE_SIZE from wchar_type_node.
* lex.c: Get WCHAR_TYPE_SIZE from wchar_type_node.
	* lang-specs.h: If -fshort-wchar, override __WCHAR_TYPE__.
	* decl2.c (lang_f_options): Add -fshort-wchar.
	* cp-tree.h: Declare flag_short_wchar.
	* decl.c (init_decl_processing): If -fshort-wchar, use 'short unsigned
	int' for wchar_t.

From-SVN: r29639
1999-09-23 17:04:10 -04:00
Alex Samuel
f3cdb9c694 Replace string const "<internal>" with dynamic allocation.
* lex.c (internal_filename): New variable.
	(INTERNAL_FILENAME): New macro.
	(init_parse): Allocate internal_filename and mark as root.  Use it
	instead of a string constant.

From-SVN: r29553
1999-09-21 18:14:26 +00:00
Mark Mitchell
59026e7963 cp-tree.def (CLEANUP_STMT): Fix spelling in dumps.
* cp-tree.def (CLEANUP_STMT): Fix spelling in dumps.
	(TRY_BLOCK): Likewise.
	(HANDLER): Likewise.
	(START_CATCH_STMT): New tree node.
	(SCOPE_STMT): Likewise.
	* cp-tree.h (SCOPE_BEGIN_P): New macro.
	(SCOPE_NULLIFIED_P): Likewise.
	(struct lang_decl_flags): Add pending_inline_p.  Adjust dummy.
	(struct lang_decl): Add saved_language_function.
	(DECL_PENDING_INLINE_INFO): Adjust documentation.
	(DECL_PENDING_INLINE_P): New macro.
	(TYPE_TI_ARGS): Fix typo in comment.
	(DECL_SAVED_TREE): Add to documentation.
	(DECL_SAVED_FUNCTION_DATA): New macro.
	(START_CATCH_TYPE): Likewise.
	(SCOPE_END_P): New macro.
	(declare_parm_level): Don't declare.
	* decl.c (mark_lang_function): New function, split out from
	mark_cp_function_context.
	(save_function_data): New function.
	(declare_parm_level): Remove.
	(finish_function): Use save_function_data to squirrel away
	important stuff for later use.
	(mark_cp_function_context): Use mark_function_data.
	(lang_mark_tree): Likewise.
	* lex.c (begin_definition_of_inclass_inline): Set
	DECL_PENDING_INLINE_P.
	(store_pending_inline): Clear it.
	* pt.c (tsubst_decl): Likewise.

From-SVN: r29488
1999-09-17 23:14:49 +00:00
Kaveh R. Ghazi
fffeac96e0 lex.c (init_cpp_parse): Call xcalloc, not malloc/bzero.
* lex.c (init_cpp_parse): Call xcalloc, not malloc/bzero.

	* xref.c (SALLOC): Call xstrdup, not xmalloc/strcpy.

From-SVN: r29464
1999-09-16 22:33:10 +00:00
Jason Merrill
777ffbda17 lex.c (cp_pragma_implementation): Allow #pragma implementation in header files.
* lex.c (cp_pragma_implementation): Allow #pragma implementation
	in header files.

From-SVN: r29444
1999-09-15 20:02:09 -04:00
Richard Henderson
01fba8d9ba * lex.c (mark_impl_file_chain): Follow the next chain.
From-SVN: r29442
1999-09-15 16:08:16 -07:00
Alexandre Oliva
354f0b0403 lex.c (cp_pragma_interface, [...]): Copy filenames with ggc_alloc_string.
* lex.c (cp_pragma_interface, cp_pragma_implementation): Copy
	filenames with ggc_alloc_string.

From-SVN: r29427
1999-09-15 06:11:48 +00:00
Mark Mitchell
5868eb4e0a decl.c (add_decl_to_level): Remove TREE_PERMANENT assertion.
* decl.c (add_decl_to_level): Remove TREE_PERMANENT assertion.
	(init_decl_processing): Don't set TREE_PERMANENT for the
	error_mark_node.
	(start_decl): Don't rebuild non-permanent ARRAY_TYPEs.
	(grokdeclarator): Likewise.
	(grokparms): Don't check TREE_PERMANENT when building up lists.
	* decl2.c (grokfield): Don't assert TREE_PERMANENT.
	(mark_inline_for_output): Likewise.
	* expr.c (cplus_expand_expr): Don't check TREE_PERMANENT.
	* init.c (build_offset_ref): Don't check TREE_PERMANENT.
	* lex.c (check_newline): Don't check ggc_p; it is always one.
	* pt.c (process_template_parm): Don't check TREE_PERMANENT.
	* spew.c (yylex): Don't copy_node or probe_obstacks for
	non-permanent CONSTANTs and STRINGs.
	* tree.c (build_cplus_array_type_1): Don't fuss with
	TREE_PERMANENT on ARRAY_TYPEs.

From-SVN: r29350
1999-09-12 02:45:30 +00:00
Mark Mitchell
c27db0df86 decl.c (lang_mark_tree): Mark TYPE_LANG_SPECIFIC.
* decl.c (lang_mark_tree): Mark TYPE_LANG_SPECIFIC.
	(lang_cleanup_tree): Remove.
	* lex.c (make_lang_type): Use ggc_alloc to allocate
	TYPE_LANG_SPECIFIC.

From-SVN: r29244
1999-09-09 21:47:28 +00:00
Mark Mitchell
a8f73d4b36 Reorganize per-function data.
* cp-tree.h (saved_scope): Add function_decl, bindings.
	(language_function): Rename binding_level to bindings.
	(cp_function_chain): Use the current_function, not the
	outer_function_chain.
	(current_class_ptr): Make it work, even when there's no
	current function.
	(current_class_ref): Likewise.
	(SF_DEFAULT, SF_PRE_PARSED, SF_INCLASS_INLINE, SF_EXPAND): New
	macros.
	(clear_temp_name): Remove.
	* decl.c (check_function_type): New function, broken out from
	start_function.
	(current_binding_level): Adjust definition.
	(pushlevel): Simplify.
	(poplevel): Don't use named_label_uses when we're outside
	a function scope.
	(mark_saved_scope): Mark function_decl and bindings.
	(maybe_push_to_top_level): Don't unconditionally push a new
	function context.  Save bindings and the current_function_decl.
	Don't clear named_labels.
	(pop_from_top_level): Pop function context if appropriate.
	(init_decl_processing): Set init_lang_status and free_lang_status,
	rather than save_lang_status and restore_lang_status.
	(start_function): Take SF_* flags.  Don't clear per-function data.
	Reorder and simplify to use new per-function data code.  Add
	asserts.
	(store_parm_decls): Don't call init_function_start here.
	(finish_function): Adjust for new handling of per-function data.
	(push_cp_function_context): Simplify.
	(mark_cp_function_context): Change binding_level to bindings.
	* decl2.c (clear_temp_name): Remove.
	(start_objects): Use SF flags to start_function.
	(start_static_storage_duration_function): Likewise.
	* except.c (start_anon_func): Remove redundant calls to
	push_function_context_to.  Use SF flags to start function.
	(end_anon_func): Remove redundant call to pop_function_context
	from.
	* lex.c (reinit_parse_for_function): Don't initialize per-function
	data.
	* method.c (emit_thunk): Clear current_function after calling
	assemble_end_function.  Use SF flags for start_function.
	(synthesize_method): Use SF flags for start_function.
	* parse.c: Regenerated.
	* parse.y (fn.defpen): Likewise.
	(pending_inline): Clear current_function, even if something goes
	wrong.
	* pt.c (instantiate_decl): Use SF flags to start_function.
	Don't save and restore expanding_p.
	(add_tree): Handle the case where we are outside any function.
	(end_tree): Likewise.
	* rtti.c (sythesize_tinfo_fn): Use SF flags to start_function.
	* semantics.c (begin_function_definition): Likewise.
	(expand_body): Likewise.

From-SVN: r29240
1999-09-09 19:02:39 +00:00
Mark Mitchell
e1b3e07d15 cp-tree.h (scratch_tree_cons): Remove.
* cp-tree.h (scratch_tree_cons): Remove.
	* call.c: Replace all uses of expr_tree_cons, saveable_tree_cons,
	and perm_tree_cons with plain tree_cons.
	* class.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* init.c: Likewise.
	* lex.c: Likewise.
	* method.c: Likewise.
	* parse.y: Likewise.
	* pt.c: Likewise.
	* repo.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* typeck.c: Likewise.
	* parse.c: Regenerated.
	* tree.c (build_srcloc): Simplify.

From-SVN: r29225
1999-09-09 06:17:13 +00:00
Mark Mitchell
d60f72aec5 cp-tree.h (lang_decl_flags): Remove permanent_attr.
* cp-tree.h (lang_decl_flags): Remove permanent_attr.
	Remove next.
	(LANG_DECL_PERMANENT): Remove.
	* decl.c (duplicate_decls): Don't mess about with obstacks trying
	to free memory.
	(lang_mark_tree): Mark DECL_LANG_SPECIFIC.
	* lex.c (free_lang_decl_chain): Remove.
	(build_lang_decl): Don't use obstacks.
	(retrofit_lang_decl): Likewise.
	(copy_lang_decl): Likewise.

From-SVN: r29223
1999-09-09 03:31:23 +00:00
Mark Mitchell
87e3dbc92a Makefile.in (tree.o): Depend on ggc.h.
* Makefile.in (tree.o): Depend on ggc.h.
	* class.c (make_method_vec): Remove.
	(free_method_vec): Likewise.
	(free_method_vecs): Remove.
	(add_method): Don't use them.
	* cp-tree.def (PTRMEM_CST): Make it longer.
	(TEMPLATE_PARM_INDEX): Make it shorter.
	* cp-tree.h (BINDING_HAS_LEVEL_P): New macro.
	(template_parm_index): Remove RTL field.
	(ptrmem_cst): Add RTL field.
	(finish_function): Removed parameter.
	(process_next_inline): Change prototype.
	(init_cplus_unsave): Rename to init_tree.
	(binding_init): Remove.
	* decl.c (free_binding_nodes): Remove.
	(push_binding): Don't use them.  Set BINDING_HAS_LEVEL_P.
	(pop_binding): Don't use free_binding_nodes.
	(free_binding_vecs): Remove.
	(store_bindings): Don't use them.
	(pop_from_top_level): Likewise.
	(lookup_namespace_name): Simplify.
	(build_typename_type): Don't use obstack_free.
	(unqualified_namespace_lookup): Simplify.
	(lookup_name_real): Simplify.
	(start_function): Remove comment about leaks.
	(finish_function): Removed nested parameter.  Call
	expand_end_bindings even when building_stmt_tree.
	Call ggc_push_context and ggc_pop_context around
	rest_of_compilation, if necessary.
	(mark_cp_function_context): Handle a NULL language-context.
	(lang_mark_false_label_stack): Fix typo.
	(lang_mark_tree): Handle CPLUS_BINDING, OVERLOAD,
	TEMPLATE_PARM_INDEX.  Handle the funny TYPE_LANG_SPECIFIC on
	pointer to method types.
	(lang_cleanup_tree): Use free to free TYPE_LANG_SPECIFIC.
	* decl2.c (finish_objects): Adjust call to finish_function.
	(finish_static_store_duration_function): Likewise.
	(do_nonmember_using_decl): Remove call to binding_init.
	* except.c (end_anon_func): Adjust call to finish_function.
	* lex.c (mark_impl_file_chain): New function.
	(init_parse): Call init_tree, not init_cplus_unsave.
	Add GC roots.
	(cp_pramga_interface): Use xmalloc, not permalloc.
	(cp_pragma_implementation): Likewise.
	(begin_definition_of_inclass_inline): Simplify.
	(process_next_inline): Adjust prototype.
	(do_scoped_id): Don't call binding_init.
	(make_lang_type): Allocate TYPE_LANG_SPECIFIC with xmalloc.
	(emit_thunk): Adjust call to finish_function.
	(synthesize_method): Likewise.
	* parse.y (%union): Add a new `pi' variant.
	(PRE_PARSED_FUNCTION_DECL): Use it.
	(fn.defpen): Likewise.
	(fndef): Adjust call to finish_function.
	(instantiate_decl): Likewise.
	(rtti.c): Likewise.
	(semantics.c): Likewise.
	* tree.c: Include ggc.h.
	(mark_list_hash): New function.
	(binding_init): Remove.
	(init_cplus_unsave): Rename to ...
	(init_tree): This.  Add GC roots.

From-SVN: r29172
1999-09-07 16:07:42 +00:00
Mark Mitchell
9cd64686e8 Get ready for garbage collection.
* Makefile.in (CXX_TREE_H): Add varray.h
	(lex.o): Depend on ggc.h.
	(decl.o): Likewise.
	(decl2.o): Likewise.
	(method.o): Likewise.
	(search.o): Likewise.
	(pt.o): Likewise.
	(repo.o): Likewise.
	* class.c: Include ggc.h.
	(current_class_name): Remove.
	(current_class_type): Likewise.
	(current_access_specifier): Likewise.
	(previous_class_type): Likewise.
	(previous_class_values): Likewise.
	(class_cache_firstobj): Likewise.
	(current_lang_base): Likewise.
	(current_lang_stack): Likewise.
	(current_lang_stacksize): Likewise.
	(lang_name_c): Likewise.
	(lang_name_cplusplus): Likewise.
	(lang_name_java): Likewise.
	(current_lang_name): Likewise.
	(base_layout_decl): Likewise.
	(access_default_node): Likewise.
	(access_public_node): Likewise.
	(access_protected_node): Likewise.
	(access_private_node): Likewise.
	(access_default_virtual_node): Likewise.
	(access_public_virtual_node): Likewise.
	(access_protected_virtual_node): Likewise.
	(access_private_virtual_node): Likewise.
	(signed_zero_node): Likewise.
	(init_class_processing): Don't build base_layout_decl.
	(push_lang_context): Adjust now that current_lang_base is a varray.
	(pop_lang_context): Likewise.
	* cp-tree.h: Include varray.h.
	(cp_global_trees): Add access_default, access_public,
	access_protected, access_private, access_default_virtual,
	access_public_virtual, access_protected_virtual,
	access_private_virtual, ctor_identifier, delta2_identifier,
	delta_identifier, dtor_identifier, in_charge_identifier,
	index_identifier, nelts_identifier, this_identifier,
	pfn_identifier, pfn_or_delta2_identifier, vptr_identifier,
	lang_name_c, lang_name_cplusplus, lang_name_java,
	empty_except_spec, null, jclass, minus_one, terminate.
	(saved_scope): Move here from decl.c.  Define globals in terms of
	saved_scope: current_namespace, current_class_name,
	current_class_type, current_access_specifier, current_lang_stack,
	current_lang_base, current_lang_name, current_function_parms,
	current_template_parms, processing_template_decl,
	processing_specialization, processing_explicit_instantiation,
	previous_class_type, previous_class_values, class_cache_firstobj.
	(scope_chain): New variable.
	(init_pt): New function.
	* decl.c (current_namespace): Remove.
	(this_identifier, in_charge_identifier, ctor_identifier): Likewise.
	(dtor_identifier, pfn_identifier, index_identifier): Likewise.
	(delta_identifier, delta2_identifier): Likewise.
	(pfn_or_delta2_identifier, tag_identifier): Likewise
	(vt_off_identifier, empty_except_spec, null_node): Likewise.
	(current_function_parms, current_lang_base): Remove.
	(current_lang_stack, previous_class_values): Remove.
	(class_binding_level): Macroize.
	(saved_scope): Remove.
	(current_saved_scope): Rename to scope_chain.
	(mark_saved_scope): Adjust for new scope structure.
	(maybe_push_to_top_level): Likewise.
	(pop_from_top_level): Likewise.
	(duplicate_decls): Adjust now that current_lang_base is a varray.
	(build_typename_type): Call ggc_add_tree_hash_table_root.
	(init_decl_processing): Call init_pt.  Call push_to_top_level to
	set up globals.  Add GC roots.
	(xref_basetypes): Adjust now that current_lang_base is a varray.
	* decl.h (this_identifier): Remove.
	(in_charge_identifier): Likewise.
	* decl2.c: Don't include varray.h.
	(current_namespace): Remove.
	(init_decl2): Add GC roots.
	* except.c (Terminate): Remove.
	(init_exception_processing): Use terminate_node instead.
	(build_terminate_handler): Likewise.
	* init.c (nc_nelts_field_id): Remove.
	(minus_one): Likewise.
	(init_init_processing): Use minus_one_node and nelts_identifier
	instead.  Add GC roots.
	(jclass_node): Remove.
	(build_new_1): Use nelts_identifier.
	(build_vec_init): Likewise.
	(build_vec_delete): Likewise.
	* lex.c: Include ggc.h.
	(defarg_fn): Move declaration early.
	(defarg_parms): Likewise.
	(init_parse): Add GC roots.
	(handle_cp_pragma): Remove redundant declaration of
	pending_vtables.
	* method.c: Include ggc.h.
	(btypelist): Make it a varray.  All uses changed.
	(ktypelist): Likewise.
	(init_method): Add GC roots.
	* pt.c: Don't include varray.h.  Include ggc.h.
	(current_template_parms): Remove.
	(processing_template_decl): Likewise.
	(processing_specialization): Likewise.
	(processing_explicit_instantiation): Likewise.
	(init_pt): New function.
	* repo.c: Include ggc.h.
	(init_repo): Add GC roots.
	* search.c: Don't include varray.h.
	(_vptr_name): Remove.
	(lookup_field_1): Use vtpr_identifier instead.
	(expand_indirect_vtbls_init): Remove redundant declaration of
	in_charge_identifier.
	(init_search_processing): Use vptr_identifier.

From-SVN: r29135
1999-09-06 02:43:09 +00:00
Mark Mitchell
99dccabc3c Makefile.in (CXX_TREE_H): Include function.h.
* Makefile.in (CXX_TREE_H): Include function.h.
	(decl.o): Don't depend on function.h.
	(decl2.o): Likewise.
	(typeck.o): Likewise.
	(init.o): Likewise.
	(method.o): Likewise.
	* cp-tree.h: Include function.h.
	(cp_function): Rename to language_function.  Remove next.
	(cp_function_chain): Make it a macro, not a variable.
	(push_cp_function_context): Don't declare.
	(pop_cp_function_context): Likewise.
	* decl.c: Don't include function.h.
	(push_cp_function_context): Make it static.  Make it suitable for
	a save_lang_status callback.
	(pop_cp_function_context): Likewise.
	(maybe_push_to_top_level): Call push_function_context_to, not
	push_cp_function_context.
	(pop_from_top_level): Call pop_function_context_from, not
	pop_cp_function_context.
	(init_decl_processing):  Set save_lang_status and
	restore_lang_status.  Call push_function_context_to, not
	push_cp_function_context.
	(cp_function_chain): Remove.
	* decl2.c: Don't include function.h.
	* except.c: Don't include function.h.
	(start_anon_func): Call push_function_context_to, not
	push_cp_function_context.
	(end_anon_func):  Call pop_function_context_from, not
	pop_cp_function_context.
	* init.c: Don't include function.h.
	* lex.c (begin_definition_of_inclass_inline): Call
	push_function_context_to, not push_cp_function_context.
	(process_next_inline):  Call pop_function_context_from, not
	pop_cp_function_context.
	* method.c: Don't include function.h.
	(synthesize_method): Call push_function_context_to, not
	push_cp_function_context.  Call pop_function_context_from, not
	pop_cp_function_context.
	* typeck.c: Don't include function.h.

From-SVN: r29096
1999-09-04 02:19:29 +00:00
Kaveh R. Ghazi
f5984164b7 gxx.gperf (hash, [...]): Add prototypes.
* gxx.gperf (hash, is_reserved_word): Add prototypes.

	* init.c (build_vec_init): Initialize variable `try_block'.

	* lex.c (init_parse): Call memcpy, not bcopy, to avoid casts.
	Likewise for bzero/memset.
	(token_getch, token_put_back): Add static prototypes.  Remove
	`inline' from the definitions.
	(retrofit_lang_decl): Call memset, not bzero, to avoid casts.

From-SVN: r29042
1999-09-02 03:13:16 +00:00
Mark Mitchell
4ce3d53730 cp-tree.h (build_lang_field_decl): Remove.
* cp-tree.h (build_lang_field_decl): Remove.
	* class.c (build_vtable): Replace calls to build_lang_field_decl
	with build_lang_decl.
	(prepare_fresh_vtable): Likewise.
	(finish_struct_1): Likewise.
	(init_class_processing): Likewise.
	* decl.c (push_using_decl): Likewise.
	(init_decl_processsing): Likewise.
	(grokvardecl): Likewise.
	(build_ptrmemfunc_type): Likewise.
	(grokdeclarator): Likewise.
	(build_enumerator): Likewise.
	* decl2.c (grok_x_components): Likewise.
	(do_class_using_decl): Likewise.
	* except.c (call_eh_info): Likewise.
	* init.c (init_init_processing): Likewise.
	* rtti.c (expand_class_decl): Likewise.
	* tree.c (build_base_fields): Likewise.
	(build_vbase_pointer_fields): Likewise.
	* lex.c (build_lang_decl): Build declarations on the permanent
	obstack if we're building statmeent trees.
	(retrofit_lang_decl): Handle both the full lang_decl and also the
	smaller lang_decl_flags here.
	(build_lang_field_decl): Remove.
	* pt.c (push_template_decl_real): Issue errors for variable
	declarations that are not static members.

From-SVN: r28755
1999-08-18 20:44:14 +00:00
Mark Mitchell
43f887f9f6 cp-tree.h (CALL_DECLARATOR_PARMS): New macro.
* cp-tree.h (CALL_DECLARATOR_PARMS): New macro.
	(CALL_DECLARATOR_QUALS): Likewise.
	(CALL_DECARATOR_EXCEPTION_SPEC): Likewise.
	* decl.c (grokdeclarator): Adjust to use them.
	* decl2.c (grokfield): Likewise.
	(reparse_absdcl_as_casts): Likewise.
	* lex.c (make_call_declarator): Likewise.
	(set_quals_and_spec): Likewise.
	* pt.c (tsubst): Likewise.
	* tree.c (mapcar): Remove special hack to handle third operand of
	a CALL_EXPR.

From-SVN: r28733
1999-08-17 07:20:23 +00:00
Mark Mitchell
b0d065155d cp-tree.h (CAN_HAVE_FULL_LANG_DECL_P): New macro.
* cp-tree.h (CAN_HAVE_FULL_LANG_DECL_P): New macro.
	* class.c (build_vtable): Use build_lang_field_decl to build the
	VAR_DECLs for vtables.
	(prepare_fresh_vtable): Likewise.
	* decl.c (duplicate_decls): Only copy DECL_SAVED_TREE if
	CAN_HAVE_FULL_LANG_DECL_P.
	(push_using_decl): Use build_lang_decl to build USING_DECLs.
	(grokdeclarator): Use build_lang_decl to build TYPE_DECLs.
	* lex.c (retrofit_lang_decl): Check CAN_HAVE_FULL_LANG_DECL_P.
	(build_lang_field_decl): Likewise.
	(copy_lang_decl): Use CAN_HAVE_FULLLANG_DECL_P to decide how much
	to copy.

From-SVN: r28731
1999-08-16 22:08:42 +00:00
Jason Merrill
2c169babb6 Speed up Koenig lookup.
* decl.c (unqualified_namespace_lookup): Nonstatic.  Add spacep parm
	to return namespaces we've looked at.
	* decl2.c (lookup_using_namespace): Likewise.
	(add_function): Don't call ovl_member.
	(lookup_arg_dependent): Initialize k.namespaces to the list of
	namespaces seen in unqualified lookup.
	* call.c (equal_functions): Move here from tree.c.
	(joust): Use it to handle duplicate candidates.
	* tree.c (ovl_member): Use ==.

From-SVN: r28710
1999-08-14 07:08:53 -04:00
Mark Mitchell
9188c36364 cp-tree.def (DECL_STMT): Make it smaller.
* cp-tree.def (DECL_STMT): Make it smaller.
	* cp-tree.h (lang_decl_flags): Move saved_tree to ...
	(lang_decl): ... here.  Add next.
	(DECL_SAVED_TREE): Adjust accordingly.
	(DECL_IMPLICIT_TYPEDEF_P): New macro.
	(SET_DECL_IMPLICIT_TYPEDEF_P): Likewise.
	(DECL_STMT_DECL): Likewise.
	(create_implicit_typedef): New function.
	(maybe_push_decl): Likewise.
	(tsubst_default_argument): New function.
	(at_function_scope_p): Likewise.
	(add_decl_stmt): Likewise.
	(push_permanent_obstack): Likewise.
	* call.c (convert_default_arg): Use tsubst_default_argument.
	* class.c (add_method): Use push_permanent_obstack.
	(build_self_reference): Create a TEMPLATE_DECL for the
	self-reference, if necessary.
	* decl.c (pseudo_global_level_p): Only look at the current binding
	level.
	(push_binding): Use push_permanent_obstack.
	(create_implicit_typedef): New function.
	(pushtag): Use it.
	(duplicate_decls): Use push_permanent_obstack.
	(maybe_push_decl): New function.
	(start_decl): Use it.  Remove dead code.  Use add_decl_stmt.
	(start_decl_1): Remove dead code.
	(cp_finish_decl): Remove DECL_STMT handling here.  Don't use
	pseudo_global_level_p.
	(grokvardecl): Create DECL_LANG_SPECIFIC for a VAR_DECL in a
	template.
	(grokdeclarator): Likewise, for TYPE_DECLs.  Don't use
	pseudo_global_level_p.
	* decl2.c (grokfield): Call push_template_decl for a TYPE_DECL in
	a template.
	(get_sentry): Use push_permanent_obstack.
	* dump.c (dequeue_and_dump): Enable DECL_STMT.
	* except.c (call_eh_info): Use push_permanent_obstack.
	(build_eh_type_ref): Likewise.
	(do_pop_exception): Likewise.
	(expand_eh_spec): Likewise.
	(alloc_eh_object): Likewise.
	(expand_throw): Likewise.
	* init.c (build_java_class_ref): Likewise.
	* lex.c (get_time_identifier): Likewise.
	(free_lang_decl_chain): Correct type.
	(retrofit_lang_decl): Adjust accordingly.
	(build_lang_field_decl): Likewise.
	* lex.h (free_lang_decl_chain): Likewise.
	* parse.y (lang_extdef): Don't use pseudo_global_level_p.
	* parse.c: Regenerated.
	* pt.c (tsubst_default_arguments): New function.
	(retrieve_local_specialization): Likewise.
	(register_local_specialization): Likewise.
	(push_template_decl_real): Use DECL_IMPLICIT_TYPEDEF_P.  Just use
	pseudo_global_level_p to determine whether or not a template is
	primary.
	(lookup_template_class): Likewise.  Use create_implicit_typedef.
	(instantiate_class_template): Call tsubst_default_arguments for
	member functions, if appropriate.
	(tsubst_default_argument): New function.
	(tsubst_decl): Use it.  Change TYPE_DECL handling to match VAR_DECLs.
	* search.c (at_function_scope_p): New function.
	* semantics.c (finish_asm_stmt): Use push_permanent_obstack.
	(finish_label_stmt): Likewise.
	(add_decl_stmt): New function.
	(begin_class_definition): Likewise.
	(finish_typeof): Likewise.
	* tree.c (copy_template_template_parm): Likewise.
	(copy_to_permanent): Likewise.
	(push_permanent_obstack): Define.
	(mark_addressable): Use it.
	* typeck.c (mark_addressable): Likewise.

From-SVN: r28709
1999-08-14 09:23:49 +00:00
Gavin Romig-Koch
0a818f84ce For gcc:
tree.c (lang_unsave_expr_now) : New.
	(unsave_expr_now): Call lang_unsave_expr_now.
	tree.h (lang_unsave_expr_now) : New.

For gcc/cp:
	cp-tree.h (init_cplus_unsave): New.
	(cplus_unsave_expr_now): New.
	lex.c (init_parse): Call init_cplus_unsave.
	tree.c (init_cplus_unsave): New.
	(cplus_unsave_expr_now): New.

From-SVN: r28705
1999-08-13 18:22:59 +00:00
Mark Mitchell
6eabb2412f extend.texi (C++ Signatures): Remove node.
* extend.texi (C++ Signatures): Remove node.
	* invoke.texi: Remove discussion of -fhandle-signatures,
	signature, sigof, __signature__, and __sigof__.

	* Make-lang.in (CXX_SRCS): Remove sig.c.
	* Makefile.in (CXX_OBJS): Remove sig.o.
	(sig.o): Remove.
	* cp-tree.h (CPTI_OPAQUE_TYPE): Remove.
	(CPTI_SIGNATURE_TYPE): Likewise.
	(CPTI_SIGTABLE_ENTRY_TYPE): Likewise.
	(opaque_type_node): Likewise.
	(signature_type_node): Likewise.
	(sigtable_entry_type): Likewise.
	(flag_handle_signatures): Likewise.
	(lang_type): Remove is_signature, is_signature_pointer,
	is_signature_reference, has_opaque_typedecls,
	sigtables_has_been_generated.  Adjust dummy.  Remove signature,
	signature_pointer_to, signature_reference_to.
	(IS_SIGNATURE): Remove.
	(SET_SIGNATURE): Remove.
	(CLEAR_SIGNATURE): Remove.
	(IS_SIGNATURE_POINTER): Remove.
	(IS_SIGNATURE_REFERENCE): Remove.
	(SIGNATURE_HAS_OPAQUE_TYPEDECLS): Remove.
	(SIGTABLE_HAS_BEEN_GENERATED): Remove.
	(CLASSTYPE_SIGNATURE): Remove.
	(SIGNATURE_TYPE): Remove.
	(SIGNATURE_METHOD_VEC): Remove.
	(SIGNATURE_POINTER_TO): Remove.
	(SIGNATURE_REFERENCE_TO): Remove.
	(lang_decl_flags): Remove is_default_implementation.  Rename
	memfunc_pointer_to to saved_tree.
	(IS_DEFAULT_IMPLEMENTATION): Remove.
	(DECL_MEMFUNC_POINTER_TO): Remove.
	(DECL_MEMFUNC_POINTING_TO): Remove.
	(DECL_SAVED_TREE): Adjust definition.
	(tag_types): Remove signature_type_node.
	(SIGNATURE_FIELD_NAME): Remove.
	(SIGNATURE_FIELD_NAME_FORMAT): Likewise.
	(SIGNATURE_OPTR_NAME): Likewise.
	(SIGNATURE_SPTR_NAME): Likewise.
	(SIGNATURE_POINTER_NAME): Likewise.
	(SIGNATURE_POINTER_NAME_FORMAT): Likewise.
	(SIGNATURE_REFERENCE_NAME): Likewise.
	(SIGNATURE_REFERNECE_NAME_FORMAT): Likewise.
	(SIGTABLE_PTR_TYPE): Likewise.
	(SIGTABLE_NAME_FORMAT): Likewise.
	(SIGTABLE_NAME_FORMAT_LONG): Likewise.
	(SIGTABLE_TAG_NAME): Likewise.
	(SIGTABLE_VB_OFF_NAME): Likewise.
	(SIGTABLE_VT_OFF_NAME): Likewise.
	(finish_base_specifiers): Change prototype.
	(build_signature_pointer_type): Remove.
	(build_signature_reference_type): Remove.
	(build_signature_pointer_constructor): Remove.
	(build_signature_method_call): Remove.
	(build_optr_ref): Likewise.
	(append_signature_fields): Likewise.
	(signature_error): Likewise.
	* call.c (build_this): Remove signature support.
	(build_over_call): Likewise.
	(build_new_method_call): Likewise.
	* class.c (add_implicitly_declared_members): Likewise.
	(finish_struct_1): Likewise.
	(finish_struct): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_pointer_force): Likewise.
	(ocp_convert): Likewise.
	* decl.c (sigtable_decl_p): Remove.
	(init_decl_processing): Remove support for signatures.
	(cp_finish_decl): Likewise.
	(grokdeclarator): Likewise.
	(grokparms): Likewise.
	(xref_tag): Likewise.
	(start_function): Likewise.
	(start_method): Likewise.
	* decl2.c (finish_sigtable_vardecl): Remove.
	(flag_handle_signatures): Remove.
	(lang_f_options): Remove handle-signatures.
	(grokfield): Remove support for signatures.
	(grokbitfield): Likewise.
	(finish_file): Likewise.
	(reparse_absdcl_as_casts): Likewise.
	* error.c (dump_type_real): Likewise.
	(dump_function_decl): Likewise.
	* friend.c (make_friend_class): Likewise.
	* gxx.gperf: Remove __signature__, signature, __sigof__, sigof.
	* hash.h: Regenerated.
	* init.c (build_new_1): Remove support for signatures.
	* lang-options.h: Remove -fhandle-signatures,
	-fno-handle-signatures.
	* lex.c (init_parse): Remove support for signatures.
	(yyprint): Likewise.
	* lex.h (rid): Remove RID_SIGNATURE.
	* method.c (build_decl_overload_real): Remove support for
	signatures.
	(hack_identifier): Likewise.
	* parse.y (base_class): Likewise.
	(base_class.1): Likewise.
	(access_specifier): Likewise.
	* search.c (lookup_member): Likewise.
	* semantics.c (finish_qualified_object_call_expr): Likewise.
	(finish_template_type_parm): Likewise.
	(begin_class_definition): Likewise.
	(finish_base_specifier): Likewise.
	* sig.c: Remove.
	* tree.c (build_cplus_method_type): Remove support for signatures.
	* typeck.c (require_complete_type): Likewise.
	(c_sizeof): Likewise.
	(c_alignof): Likewise.
	(build_object_ref): Likewise.
	(build_component_ref): Likewise.
	(build_indirect_ref): Likewise.
	(build_c_cast): Likewise.
	(build_modify_expr): Likewise.
	(convert_for_initialization): Likewise.
	* typeck2.c (signature_error): Remove.
	(store_init_value): Remove support for signatures.
	(digest_init): Likewise.
	(build_x_arrow): Likewise.
	(build_functional_cast): Likewise.
	* xref.c (GNU_xref_decl): Likewise.

From-SVN: r28677
1999-08-11 20:22:41 +00:00
Martin v. Loewis
155d38c0e7 * lex.c (do_identifier): Remove unnecessary lookup of class field.
From-SVN: r28671
1999-08-11 18:28:36 +00:00
Kaveh R. Ghazi
8df4696de9 decl.c: Remove redundant prototype for `print_error_function'.
* decl.c: Remove redundant prototype for `print_error_function'.
        (lang_print_error_function): Constify a char*.

        * lex.c (lang_identify): Likewise.

From-SVN: r28633
1999-08-09 23:44:03 +00:00
Kaveh R. Ghazi
9c0758dde6 class.c (count_fields, [...]): Add static prototype.
* class.c (count_fields, add_fields_to_vec): Add static prototype.

	* cp-tree.h (opname_tab, assignop_tab, operator_name_string,
	get_id_2, composite_pointer_type, dump_node_to_file): Constify a
	char*.

	* decl.c (named_label_list, cp_finish_decl, grokdeclarator):
	Constify a char*.

	* decl2.c (finish_static_data_member_decl, grokfield): Constify a
	char*.

	* dump.c (queue_and_dump_index, dump_int, dump_string,
	dump_string_field, dequeue_and_dump, dump_node_to_file): Constify
	a char*.
	(dump_stmt): Add static prototype.

	* errfn.c (cp_thing): Constify a char*.

	* error.c (dump_unary_op, dump_binary_op, aggr_variety,
	dump_aggr_type, dump_global_iord, dump_decl, dump_function_name,
	dump_expr): Constify a char*.

	* lex.c (extend_token_buffer_to, pragma_getc, pragma_ungetc,
	read_line_number): Add static prototype.
	(opname_tab, assignop_tab, operator_name_string): Constify a char*.
	(real_yylex): Move label `letter' into the scope where it is used.

	* method.c (build_mangled_template_parm_index, build_overload_int,
	build_decl_overload_real, get_id_2): Constify a char*.

	* search.c (check_final_overrider): Make static.

	* typeck.c (composite_pointer_type): Constify a char*.

From-SVN: r28588
1999-08-07 22:28:52 +00:00
Jason Merrill
6ad073329c decl.c (lookup_name_real): Set the complain flag if we're looking for a namespace member.
* decl.c (lookup_name_real): Set the complain flag if we're
	looking for a namespace member.

	* lex.c (real_yylex): We can have a number with no digits.

	* cvt.c (cp_convert_to_pointer): Don't force pmf conversions.

	* search.c (binfo_from_vbase): New fn.
	* cp-tree.h: Declare it.
	* cvt.c (cp_convert_to_pointer): Use it to diagnose conversion
	from pointer to member of virtual base.
	* typeck.c (get_delta_difference): Likewise.

From-SVN: r28560
1999-08-06 21:01:54 -04:00
Mark Mitchell
2adeacc9b5 error.c (dump_expr): Handle EXACT_DIV_EXPR.
* error.c (dump_expr): Handle EXACT_DIV_EXPR.
	(dump_binary_op): Bulletproof.
	* lex.c (init_parse): Set opname_tab[EXACT_DIV_EXPR].
	* tree.c (search_tree): Don't enumerate all the nodes of classes
	`1', `2', and `<'; handle them generically.  Don't be sorry about
	"unrecognized tree codes"; just abort.
	(no_linkage_check): Don't do linkage checks for templates.

	* tree.c (cp_build_qualified_type_real): Handle
	pointer-to-member-function types correctly.

From-SVN: r28550
1999-08-06 18:20:27 +00:00
Jason Merrill
074917ba5c lex.c (yyprint): Handle PFUNCNAME.
* lex.c (yyprint): Handle PFUNCNAME.

	* decl2.c (build_expr_from_tree, case METHOD_CALL_EXPR): Only
	build_expr_from_tree on the args of a TEMPLATE_ID_EXPR.

From-SVN: r28467
1999-08-03 06:18:13 -04:00
Mark Mitchell
d4c285454f lex.c (errorcount, sorrycount): Don't declare.
* lex.c (errorcount, sorrycount): Don't declare.
	* repo.c (errorcount, sorrycount): Likewise.
	* typeck2.c (errorcount, sorrycount): Likewise.

From-SVN: r28427
1999-08-03 00:13:45 +00:00
Jason Merrill
9dfce8fded method.c: Remove prototype for largest_union_member.
* method.c: Remove prototype for largest_union_member.
	* pt.c (determine_specialization): Fix uninitialized warning.
	* lex.c (real_yylex): Likewise.

From-SVN: r28302
1999-07-27 18:58:38 -04:00
Jason Merrill
1946537baa input.c (feed_input): Add file, line parms.
* input.c (feed_input): Add file, line parms.
	* lex.c (begin_definition_of_inclass_inline, feed_defarg): Adjust.
	(real_yylex): Check linemode before input_redirected().

	* typeck.c (c_expand_return): Downgrade pedwarn about returning NULL
	from op new to warning.

From-SVN: r28276
1999-07-26 18:24:00 -04:00
Jason Merrill
1ceb5ff350 lex.c: Sync with C frontend.
* lex.c: Sync with C frontend.
	(whitespace_cr): New fn.
	(skip_white_space): Use it.
	(init_parse): Reorder.
	(yyprint): Support CONSTANT.
	(pragma_getc, pragma_ungetc): Bring back.
	(read_line_number): Change in_system_header directly.
	(handle_generic_pragma, handle_cp_pragma, yyerror): Move up in file.
	(parse_float): Update to C version.
	(yylex): Handle '$' under the letter case.
	Remove looking_for_typename handling.
	Support hex floating point constants.
	Follow C's lead for choosing type of integer constants.
	Rearrange stuff to match C frontend.
	(yyungetc, reinit_parse_for_block, yylex): Support indent_level.
	* spew.c (yylex): Clear looking_for_typename if we see a TYPESPEC.

From-SVN: r28230
1999-07-23 20:45:51 -04:00
Gavin Romig-Koch
cc14465562 For gcc:
* c-lex.c (yylex) : Correct the test for overflow when lexing
	integer literals.

For gcc/cp:
	* lex.c (real_yylex) : Correct the test for overflow when lexing
	integer literals.

From-SVN: r28206
1999-07-21 12:48:13 +00:00
Jason Merrill
66a6250faa lang-specs.h (c++-cpp-output): Pass -fpreprocessed.
* lang-specs.h (c++-cpp-output): Pass -fpreprocessed.

	* lex.c (token_getch, token_put_back): New fns.
	(real_yylex): Use them.

	* lex.c (lang_init): Generalize.
	(lang_init_options): Tell cpplib this is C++.
	(nextchar): Remove.  Replace uses with put_back.
	(skip_white_space): Handle linemode here.  Optimize for cpplib.
	(extend_token_buffer_to): New fn.
	(extend_token_buffer): Use it.
	(read_line_number, check_newline): Just deal with tokens.
	(real_yylex): More cpplib optimizations.  Simplify.  Don't produce
	EXTERN_LANG_STRING, LEFT_RIGHT or PAREN_STAR_PAREN here.
	* spew.c (yylex): Produce LEFT_RIGHT and EXTERN_LANG_STRING.
	* parse.y (PAREN_STAR_PAREN): Remove.
	* input.c: Don't use the putback machinery with cpplib.
	(sub_getch): Fold back into getch.
	(getch): Don't handle linemode here.
	(feed_input): Unget any text in the token buffer.

	* lex.c	(set_typedecl_interface_info, set_vardecl_interface_info,
	nextyychar, nextyylval): Remove.

	* lex.c (indent_level): New variable.
	(init_parse): Set cpp_token to CPP_DIRECTIVE.
	(consume_string): Make this smart about USE_CPPLIB.
	(yyungetc): Use put_back function.
	(pragma_getc, pragma_ungetc): Functions deleted.
	(check_newline): Rewrite to be intelligent about USE_CPPLIB.
	Also, call HANDLE_PRAGMA with getch, yyungetc, not pragma_getc and
	pragma_ungetc.
	(real_yylex): Rewrite to be intelligent about USE_CPPLIB.
	Also, clean up cases where we redundantly set token_buffer[0].
	(read_line_number): New fn.
	* input.c (feed_input): Use integrated cpplib if USE_CPPLIB.
	(end_input): Call cpp_pop_buffer if USE_CPPLIB.
	(sub_getch): Conditionalize out code that's not appropriate if
	USE_CPPLIB.
	(put_back): Rewrite in case USE_CPPLIB is defined.
	(input_redirected): Ditto.

From-SVN: r28193
1999-07-20 15:53:38 -04:00
Bernd Schmidt
7f4edbcba6 c-common.h: New file.
* c-common.h: New file.
	* c-common.c (permanent_obstack): Delete unused declaration.
	(c_global_trees): New array.
	(c_common_nodes_and_builtins): New function; split off common code
	from init_decl_processing in both c-decl.c and cp/decl.c.
	* c-tree.h: Delete lots of declarations of tree nodes; replaced by
	c_global_trees and accessor macros defined in c-common.h.
	Include c-common.h.
	* c-decl.c: Delete definitions for tree nodes that were replaced by
	c_global_trees.
	(init_decl_processing): Build void_list_node.
	Call c_common_nodes_and_builtins; delete code to generate the common
	builtins here.

	* objc/objc-act.c (build_module_descriptor): Rename variable
	void_list_node to avoid clash with c-common.h.

	* cp/cp-tree.h: Delete lots of declarations of tree nodes; replaced by
	c_global_trees and accessor macros defined in c-common.h.
	(cp_tree_index): New enumeration.
	(cp_global_trees): Declare new array.  Add accessor macros for it, and
	delete declarations of tree nodes replaced by it.
	(builtin_function): Delete macro, add declaration for new function.
	Include c-common.h.
	* cp/decl.c: Delete definitions for tree nodes that were replaced by
	cp_global_trees and c_global_trees.
	(init_decl_processing): Call c_common_nodes_and_builtins; delete code
	to generate the common builtins here.
	(builtin_function): New function.
	* cp/decl2.c (abort_fndecl): Delete declaration.
	* cp/except.c (expand_builtin_return_address): Delete declaration.
	(builtin_return_address_fndecl): Delete variable.
	(const_ptr_type_node): Delete declaration.
	* cp/lex.c (cons_up_default_function): Delete declaration of
	void_list_node.
	* cp/parse.y (void_list_node): Delete declaration.
	* cp/rtti.c (type_info_type_node, tinfo_fn_id, tinfo_fn_type):
	Delete variables.
	(const_string_type_node): Delete declaration.
	* cp/search.c (abort_fndecl): Delete declaration.

	* Makefile.in: Update dependencies.
	* objc/Make-lang.in: Likewise.
	* cp/Makefile.in: Likewise.

From-SVN: r28188
1999-07-20 10:41:10 +00:00
Jason Merrill
1d02ac8371 decl2.c (reparse_absdcl_as_casts): Don't warn about old-style casts in system headers or extern "C" blocks.
* decl2.c (reparse_absdcl_as_casts): Don't warn about old-style
	casts in system headers or extern "C" blocks.
	* decl2.c (write_virtuals): Deleted declaration.
	* cp-tree.h (write_virtuals): Deleted extern declaration.
	* class.c (finish_struct_1): Removed #if 0'd code that mentions
	write_virtuals.
	* semantics.c (begin_class_definition): Rewrite code to not depend
	on write_virtuals.
	* lex.c (cp_pragma_interface): New function.
	(cp_pragma_implementation): Likewise.
	(handle_cp_pragma): Call them.

From-SVN: r28045
1999-07-09 08:44:37 -04:00
Dave Brolley
1b87232aed lex.c (errorcount): Declare it.
1999-07-05  Dave Brolley  <brolley@cygnus.com>
	* lex.c (errorcount): Declare it.
	(finish_parse): Update errorcount for when using CPPLIB.

From-SVN: r27955
1999-07-06 06:08:25 -04:00
Gavin Romig-Koch
835f9b4dad For gcc:
* c-decl.c (widest_integer_literal_type_node,
	widest_unsigned_literal_type) : New.
	(init_decl_processing): Handle/use the two new types.
	* c-common.c (type_for_size,type_for_mode) : Same.
	* c-lex.c (yylex) : Same.
	* c-typeck.c (unsigned_type,signed_type,signed_or_unsigned_type) :
	Same.
	* c-tree.h (widest_integer_literal_type_node,
	widest_unsigned_literal_type) : New.
For gcc/cp:
	* cp-tree.h (widest_integer_literal_type_node,
	widest_unsigned_literal_type) : New.
	* decl.c (widest_integer_literal_type_node,
	widest_unsigned_literal_type) : New.
	(init_decl_processing): Handle/use the two new types.
	* lex.c (real_yylex): Same.
	* typeck.c (unsigned_type,signed_type,signed_or_unsigned_type) :
	Same.

From-SVN: r27923
1999-07-02 10:30:01 +00:00
Gavin Romig-Koch
611495e21b lex.c (real_yylex): Change integer literal overflow handling to be like c-lex.c.
* lex.c (real_yylex) : Change integer literal overflow handling to
	be like c-lex.c.

From-SVN: r27879
1999-07-01 11:22:17 +00:00
Gavin Romig-Koch
ed534bdd37 For gcc:
* c-lex.c (yylex): Improve 'integer constant out of range' messages.
For gcc/cp:
	* lex.c (real_yylex): Improve 'integer constant out of range' messages.

From-SVN: r27873
1999-07-01 08:08:42 +00:00
Dave Brolley
cd28936cf0 lex.c (real_yylex): Replace unused bytes from bad multibyte char.
1999-06-07  Dave Brolley  <brolley@cygnus.com>
	* lex.c (real_yylex): Replace unused bytes from bad multibyte char.
	* input.c (putback_buffer): New structure type.
	(putback): Replaces putback_char member.
	(putback): Replaces putback_char static variable.
	(feed_input): Use putback.
	(end_input): Use putback.
	(sub_getch): Use putback.
	(put_back): Use putback.

From-SVN: r27392
1999-06-07 07:10:29 -04:00
Mark Mitchell
f6a7cfd28d lex.c (make_lang_type): Create TYPE_BINFO for TEMPLATE_TYPE_PARMs just like for non-template types.
* lex.c (make_lang_type): Create TYPE_BINFO for
	TEMPLATE_TYPE_PARMs just like for non-template types.

From-SVN: r27259
1999-05-30 21:50:51 +00:00
Mark Mitchell
8bcc97de27 decl.c (lookup_tag): Remove code no longer needed after name-lookup improvements.
* decl.c (lookup_tag): Remove code no longer needed after
	name-lookup improvements.
	* decl2.c (handle_class_head): Make error-recovery more robust.
	* friend.c (make_friend_class): Reject templated typename types.
	* lex.c (is_global): A template parameter isn't global.
	* parse.y (class_head): Robustify.
	* parse.c: Regenerated.

From-SVN: r27117
1999-05-24 00:47:01 +00:00
Mark Mitchell
0aafb128c0 cp-tree.h (lang_decl_flags): Remove returns_first_arg and preserves_first_arg.
* cp-tree.h (lang_decl_flags): Remove returns_first_arg and
	preserves_first_arg.  Enlarge dummy accordingly.
	(DECL_TINFO_FN_P): New macro.
	(SET_DECL_TINO_FN_P): Likeiwse.
	(DECL_RETURNS_FIRST_ARG): Remove.
	(DECL_PRESERVES_THIS): Likewise.
	(DECL_INIT_PRIORITY): New macro.
	(finish_struct_1): Change prototype.
	(cat_namespace_levels): Remove prototype.
	(vtable_decl_p): New prototype.
	(vtype_decl_p): Likewise.
	(sigtable_decl_p): Likewise.
	(walk_globals_pred): New typedef.
	(walk_globals_fn): Likewise.
	(walk_globals): New prototype.
	(walk_namespaces_fn): New typedef.
	(walk_namespaces): New prototype.
	(wrapup_globals_for_namespace): Likewise.
	(walk_vtables): Remove prototype.
	(walk_sigtables): Likewise.
	(instantiate_pending_templates): New prototype.
	* class.c (finish_struct_1): Don't return a value.
	* decl.h (pending_statics): Remove declaration.
	* decl.c (walk_namespaces_r): New function.
	(walk_globals_r): Likewise.
	(vtable_decl_p): Likewise.
	(vtype_decl_p): Likewise.
	(sigtable_decl_p): Likewise.
	(walk_namespaces): Likewise.
	(walk_globals_data): New type.
	(walk_globals): New function.
	(wrapup_globals_for_namespace): Likewise.
	(expand_static_init): Remove assertion.  Remove redundancy in
	conditional.  Don't put static data members in static_aggregates
	Tidy.
	(finish_function): Remove redundancy in conditional.  Don't set
	DECL_RETURNS_FIRST_ARG.
	(cat_namespace_levels): Remove.
	* decl2.c: Include splay-tree.h and varray.h.
	(priority_info_s): New structure.
	(finish_vtable_vardecl): Change prototype.  Adjust for new calling
	conventions.
	(prune_vtable_vardecl): Likewise.
	(finish_sigtable_vardecl): Likewise.
	(setup_initp): Remove.
	(do_dtors): Remove.
	(do_ctors): Remove.
	(start_static_storage_duration_function): New function.
	(generate_inits_for_priority): Likewise.
	(finish_static_storage_duration_function): Likewise.
	(get_priority_info): Likewise.
	(do_static_initialization): Likewise.
	(do_static_destruction): Likewise.
	(do_static_initialization_and_destruction): Likewise.
	(generate_ctor_or_dtor_function): Likewise.
	(generate_ctor_and_dtor_functions_for_priority): Likewise.
	(pending_statics): Make it a varray.
	(pending_statics_used): New variable.
	(saved_inlines): Make it a varray.
	(saved_inlines_used): New variable.
	(finish_static_data_member): Change method of updating
	pending_statics.
	(mark_inline_for_output): Remove #if 0'd code.  Change method of
	updating saved_inlines.
	(walk_vtables): Remove.
	(walk_sigtables): Likewise.
	(import_export_decl): Use DECL_TINFO_FN_P.
	(pending_templates): Remove declaration.
	(maybe_templates): Likewise.
	(static_aggregates_initp): Likewise.
	(setup_initp): Likewise.
	(finish_objects): Simplify.
	(INITIALIZE_P_IDENTIFIER): New macro.
	(PRIORITY_IDENTIFIER): New macro.
	(SSDF_IDENTIFIER): New macro.
	(initialize_p_decl): New variable.
	(priority_decl): Likewise.
	(ssdf_decl): Likewise.
	(priority_info_map): Likewise.
	(finish_file): Recode output of static intializers and other
	file-scope finalization tasks.
	* error.c (OB_END_TEMPLATE_ID): New macro.
	(dump_type_real): Use it.
	(dump_decl): Likewise.
	(dump_function_name): Likewise.
	* lex.c (set_typedecl_interface_info): Adjust for new walk_globals
	interface.
	(check_newline): Use walk_globals, not walk_vtables.
	* pt.c (pending_tempalte_expansions): Remove.
	(set_vardecl_interface_info): Likewise.
	(pending_templates): Make static.
	(maybe_templates): Likewise.
	(instantiate_class_template): Adjust call to finish_struct_1.
	(instantiate_pending_templates): New function.
	* rtti.c (get_tinfo_fn): Use SET_DECL_TINFO_FN_P.
	* tree.c (static_aggregates_initp): Remove.
	(cp_valid_lang_attribute): Don't use it; use DECL_INIT_PRIORITY
	instead.
	* Makefile.in (decl2.o): Depend on varray.h and splay-tree.h.

From-SVN: r26594
1999-04-22 23:13:12 +00:00
Mark Mitchell
3dcaad8b2d gxx.gperf (RETURN): Rename to RETURN_KEYWORD to avoid clashes with the RTL code RETURN.
* gxx.gperf (RETURN): Rename to RETURN_KEYWORD to avoid clashes
	with the RTL code RETURN.
	* hash.h: Regenerated.
	* lex.c (reinit_parse_for_block): Use RETURN_KEYWORD.
	* parse.y: Replace RETURN with RETURN_KEYWORD throughout.
	* parse.c: Regenerated.
	* pt.c: Include varray.h.  Include rtl.h since varray.h requires
	it.
	(inline_parm_levels): New variable.
	(inline_parm_levels_used): Likewise.
	(maybe_begin_member_template_processing): Update them.
	(maybe_end_member_template_processing): Use them, rather than
	guessing how many levels to pop.

From-SVN: r26587
1999-04-22 17:37:02 +00:00
Jason Merrill
4d1bb6125f tweak spelling
From-SVN: r26506
1999-04-16 14:04:47 -04:00
Mark Mitchell
b74a056019 cp-tree.h (popclass): Change declaration.
* cp-tree.h (popclass): Change declaration.
	(pop_nested_class): Likewise.
	(poplevel_class): Remove declaration.
	* call.c (convert_default_argument): Pass no arguments to
	popclass.
	* class.c (finish_struct_1): Likewise.
	(finish_struct): Likewise.
	(popclass): Remove argument.  Simplify code accordingly.
	(pop_nested_class): Likewise.
	* decl.c (poplevel_class): Declare it here, and make it static.
	(poplevel): Handle class scopes.
	(pop_level_class): Don't take an rgument.  Simplify.
	(pop_everything): Pass no arguments to pop_nested_class.
	(cp_finish_decl): Pass no arguments to popclass.
	(grokdeclarator): Pass no arguments to pop_nested_class.
	(finish_function): Likewise.
	* decl2.c (grokfield): Likewise.
	(pop_scope): Pass no arguments to popclass.
	* lex.c (do_pending_defargs): Pass no arguments to pop_nested_class.
	* pt.c (instantiate_class_template): Move call to pushclass, and
	document.  Pass no arguments to popclass.
	(regenerate_decl_from_template): Likewise.

From-SVN: r26454
1999-04-14 13:20:19 +00:00
Mark Mitchell
8f0327178b tinfo.h (__class_type_info): Fix illegal declaration.
1999-04-02  Mark Mitchell  <mark@codesourcery.com>
	* tinfo.h (__class_type_info): Fix illegal declaration.
	* cp-tree.def (TEMPLATE_ID_EXPR): Update comment.
	* cp-tree.h (INHERITED_VALUE_BINDING_P): New macro.
	(IDENTIFIER_CLASS_VALUE): Improve documentation.
	(is_properly_derived_from): Declare.
	(invalidate_class_lookup_cache): Likewise.
	(maybe_maybe_note_name_used_in_class): Likewise.
	(note_name_declared_in_class): Likewise.
	(push_using_decl): Remove duplicate declaration.
	(id_in_current_class): Remove declaration.
	(push_class_binding): Change prototype.
	(clear_identitifer_class_values): Declare.
	* call.c (is_properly_derived_from): Make it global.
	(build_new_function_call): Be careful about updating candidates.
	(build_new_method_call): Handle COMPONENT_REFs.  Don't crash when
	asked to make illegal calls.
	* class.c: Include splay-tree.h.
	(class_stack_node): Add names_used slot.
	(check_member_decl_is_same_in_complete_scope): Remove.
	(add_method): Fix comment.  Push the declaration into class
	scope.
	(finish_struct_1): When popping the class, pop the bindings too.
	Remove check for data member/function member conflict.
	(finish_struct): Remove calls to
	check_member_decl_is_same_in_complete_scope.  Change calls to
	popclass.
	(pushclass): Clear names_used in the class stack entry.
	Use invalidate_class_lookup_cache to remove cached entries, rather
	than magic values with popclass.  Clear IDENTIFIER_CLASS_VALUE
	before entering a new class.  Remove dead code.  Don't mess with
	current_function_decl when pushing declarations.
	(invalidate_class_lookup_cache): New function, split out from ...
	(popclass): Here.  Clean up names_used on our way out.
	(instantiate_type): Adjust.
	(build_self_reference): Don't push the declaration here.
	(maybe_note_name_used_in_class): New function.
	(note_name_declared_in_class): Likewise.
	* decl.c (add_binding): Change prototype.
	(find_class_binding_level): New function.
	(innermost_nonclass_level): Likewise.
	(current_binding_level): Update documentation.
	(inner_binding_level): Remove.  Replace with current_binding_level
	throughout.
	(push_binding_level): Remove special handling of
	class_binding_level.
	(pop_binding_level): Likewise.  Use find_class_binding_level.
	(suspend_binding_level): Likewise.
	(global_bindings_p): Use innermost_nonclass_level.
	(toplevel_bindings_p): Likewise.
	(namespace_bindings_p): Likewise.
	(pseudo_global_level_p): Likewise.
	(push_binding): Clear INHERITED_VALUE_BINDING_P.
	(add_binding): Check for illegal multiple declarations.  Return a
	value indicating whether or not the new binding was legal.
	(push_local_binding): Skip over class binding levels.  Check
	return value from add_binding.
	(push_class_binding): Set INHERITED_VALUE_BINDING_P.  Call
	note_name_declared_in_class.
	(pushlevel_class): Remove "fake out the rest of the compiler"
	code.
	(poplevel_class): Reset IDENTIFIER_CLASS_VALUEs.
	(clear_identifier_class_values): New function.
	(pop_from_top_level): Use it.
	(pop_everything): Tweak.
	(maybe_process_template_type_declaration): Don't push the
	declaration for the template here.
	(pushtag): Don't push tag declarations into class scope here.
	(pushdecl): Apply DeMorgan's law for readability.
	(pushdecl_class_level): Remove special-case code for
	TYPE_BEING_DEFINED.  Handle OVERLOADs and anonymous unions.
	(push_class_level_bindng): Deal with inherited bindings.
	(lookup_name_real): Remove special-case code for
	TYPE_BEING_DEFINED, and some implicit typename magic.
	(grokdeclarator): Handle COMPONENT_REF for a template function.
	(build_enumerator): Don't call pushdecl_class_level here.
	(id_in_current_class): Remove.
	* decl2.c (grokfield): Don't call pushdecl_class_level or
	check_template_shadow.
	* errfn.c (cp_file_of): Don't declare.
	(cp_line_of): Likewise.
	* error.c (dump_decl): Handle an OVERLOAD.
	(cp_file_of): Likewise.
	(cp_line_of): Likewise.
	* init.c (build_member_call): Handle a COMPONENT_REF.
	* lex.c (do_identifier): Call maybe_note_name_used_in_class, not
	pushdecl_class_level.
	* method.c (hack_identifier): Build COMPONENT_REFs for references
	to member templates as well as member functions.  Remove dead
	code.
	* parse.y (left_curly): Remove.
	(nonnested_type): Call maybe_note_name_used_in_class, not
	pushdecl_class_level.
	* parse.c: Regenerated.
	(nested_name_specifier_1): Likewise.
	* pt.c (check_explicit_specialization): Adjust, for robustness.
	(check_template_shadow): Handle OVERLOADs.
	(build_template_decl): Set DECL_CONSTRUCTOR_P on the
	TEMPLATE_DECL, if appropriate.
	* search.c (envelope_add_decl): Remove.
	(dfs_pushdecls): Likewise.
	(dfs_compress_decls): Likewise.
	(dfs_push_decls): New function.
	(dfs_push_type_decls): Likewise.
	(setup_class_bindings): Likewise.
	(template_self_reference_p): Likewise.
	(lookup_field_r): Use it.
	(looup_member): Remove old comment.  Deal with ambiguity.
	(push_class_decls): Use dfs_push_decls and dfs_push_type_decls,
	and remove envelope processing.
	* semantics.c (begin_class_definition): Let pushclass push
	declarations for base classes.
	(finish_member_declaration): Push declarations into class scope.
	* typeck.c (build_component_ref): Just put an OVERLOAD into the
	COMPONENT_REF, not a TREE_LIST of an OVERLOAD.
	(build_x_function_call): Deal with OVERLOAD.  Handle template-ids.
	* Makefile.in (class.o): Depend on splay-tree.h.

From-SVN: r26133
1999-04-02 15:36:57 +00:00
Jason Merrill
9e0781b581 cp-tree.h (IDENTIFIER_AS_DESC, [...]): Remove cruft.
* cp-tree.h (IDENTIFIER_AS_DESC, IDENTIFIER_AS_LIST,
	CLASSTYPE_BASELINK_VEC, CLASSTYPE_N_SUPERCLASSES,
	CLASSTYPE_N_BASECLASSES, CLASSTYPE_MAX_DEPTH,
	CLASSTYPE_BASE_INIT_LIST, CLASSTYPE_AS_LIST, CLASSTYPE_ID_AS_LIST,
	CLASSTYPE_BINFO_AS_LIST): Remove cruft.
	* class.c, lex.c, parse.y, ptree.c, search.c, semantics.c,
	tree.c: Adjust.

From-SVN: r26071
1999-03-30 18:30:32 -05:00
Kaveh R. Ghazi
d8e178a02b Warning fixes:
* call.c (op_error): Const-ify a char*.
        (add_candidate, source_type, add_warning): Add static prototype.
        (print_z_candidates): Const-ify a char*.
        * class.c (resolve_address_of_overloaded_function,
        fixed_type_or_null, build_vtable_entry_ref): Add static prototype.
        (get_vtable_name, finish_struct_1): Const-ify a char*.
        * cvt.c (convert_to_reference): Likewise.
        * decl.c (redeclaration_error_message, record_builtin_type,
        record_unknown_type, member_function_or_else, bad_specifiers):
        Likewise.
        (find_binding, select_decl, unqualified_namespace_lookup,
        lookup_flags, qualify_lookup, record_builtin_java_type, tag_name):
        Add static prototype.
        (warn_extern_redeclared_static, duplicate_decls, pushdecl,
        implicitly_declare, record_builtin_java_type, define_function,
        grok_op_properties, tag_name): Const-ify a char*.
        * cp-tree.h (FORMAT_VBASE_NAME): Allow parameter `BUF' to be const.
        (define_function, finish_builtin_type): Const-ify a char*.
        (cp_error, cp_error_at, cp_warning, cp_warning_at, cp_pedwarn,
        cp_pedwarn_at, cp_compiler_error, cp_sprintf): Add prototype args.
        (file_name_nondirectory): Const-ify a char*.
        (init_filename_times): Don't prototype.
        (compiler_error): Prototype.
        (yyerror, init_repo): Const-ify a char*.
        (build_srcloc): Don't prototype.
        (build_x_indirect_ref, build_indirect_ref, build_component_addr):
        Const-ify a char*.
        (warn_for_assignment): Don't prototype.
        (convert_for_initialization, readonly_error, check_for_new_type,
        GNU_xref_begin, GNU_xref_file, GNU_xref_ref, GNU_xref_call):
        Const-ify a char*.
        * decl2.c (acceptable_java_type, output_vtable_inherit,
        setup_initp, start_objects, finish_objects, do_dtors, do_ctors,
        merge_functions, decl_namespace, validate_nonmember_using_decl,
        do_nonmember_using_decl): Add static prototype.
        (lang_f_options): Const-ify a char*.
        (finish_builtin_type): Likewise.
        (add_function, arg_assoc_namespace, arg_assoc_class): Add static
        prototype.
        * errfn.c: Include cp-tree.h.
        (cp_thing): Add static prototype.
        (compiler_error): Don't protoptype.
        (cp_compiler_error): Cast `compiler_error' to `errorfn' before
        passing it to `cp_thing'.
        * error.c (interesting_scope_p): Add static prototype.
        * except.c (build_eh_type_type, build_eh_type_type_ref): Const-ify
        a char*.
        * init.c (compiler_error): Don't prototype.
        (member_init_ok_or_else): Const-ify a char*.
        (build_java_class_ref): Add static prototype.
        * lex.c (compiler_error): Don't prototype.
        (get_time_identifier, interface_strcmp, extend_token_buffer,
        handle_cp_pragma): Const-ify a char*.
        (is_global, init_filename_times): Add static prototype.
        (file_name_nondirectory, cplus_tree_code_name): Const-ify a char*.
        (compiler_error): Change from fixed args to variable args.
        (yyerror): Const-ify a char*.
        * parse.y (cond_stmt_keyword): Const-ify a char*.
        (parse_decl): Add static prototype.
        * pt.c (template_args_equal, print_template_context): Likewise.
        (print_candidates, check_default_tmpl_args): Const-ify a char*.
        (instantiate_class_template): Likewise.
        * repo.c (get_base_filename, open_repo_file, init_repo): Likewise.
        * rtti.c (call_void_fn, expand_generic_desc, expand_si_desc,
        expand_class_desc, expand_ptr_desc, expand_attr_desc): Likewise.
        * search.c (lookup_field_info, lookup_member): Likewise.
        (lookup_member): Cast the first argument of `bzero' to a PTR.
        * sig.c (compiler_error): Don't prototype.
        (build_signature_pointer_or_reference_nam): Const-ify a char*.
        (get_sigtable_name, build_member_function_pointer): Likewise.
        * tree.c (compiler_error): Don't prototype.
        (no_linkage_helper, build_srcloc): Add static prototype.
        (build_vbase_pointer_fields): Const-ify a char*.
        (__eprintf): Don't unnecessarily handle `const' when !__STDC__.
        * typeck.c (compiler_error): Don't prototype.
        (convert_for_assignment): Const-ify a char*.
        (comp_cv_target_types): Add static prototype.
        (build_x_indirect_ref, build_indirect_ref, convert_arguments,
        build_component_addr, build_unary_op, convert_for_initialization):
        Const-ify a char*.
        * typeck2.c (ack): Add static prototype and change from fixed args
        to variable args.
        (readonly_error, check_for_new_type): Const-ify a char*.
        * xref.c (_XREF_FILE, find_file, filename, fctname, declname,
        fixname, open_xref_file, classname, GNU_xref_begin): Likewise.
        (GNU_xref_file): Likewise.  Also use `xmalloc' instead of `malloc'.
        (GNU_xref_end_scope, GNU_xref_ref, GNU_xref_decl, GNU_xref_call,
        gen_assign, GNU_xref_member): Const-ify a char*.

From-SVN: r25994
1999-03-26 07:45:00 +00:00
Jason Merrill
5b163de408 typeck.c (common_type): Handle cv-qual unification for pointers to members.
* typeck.c (common_type): Handle cv-qual unification for pointers
	to members.
	* decl.c (unqualified_namespace_lookup): Return error_mark_node
	on error.
	(lookup_name_real): Set LOOKUP_COMPLAIN when *not* parsing.
	* lex.c (do_identifier): If we got error_mark_node, call
	lookup_name again.

From-SVN: r25967
1999-03-24 22:06:16 -05:00
Kaveh R. Ghazi
9b2bf201fc lex.c: Don't include setjmp.h.
* lex.c: Don't include setjmp.h.
        (parse_float): New static function.
        (pf_args): New struct.
        (real_yylex): Use them in call to `do_float_handler'.

From-SVN: r25794
1999-03-15 19:07:25 +00:00
Mark Mitchell
8084bf81c7 lex.c (do_identifier): Correct call to enforce_access.
* lex.c (do_identifier): Correct call to enforce_access.
	* search.c (accessible_p): Tweak comment.
	* decl2.c (validate_nonmember_using_decl): Issue sensible
	error-messages on bogus qualifiers.

From-SVN: r25732
1999-03-12 17:16:53 +00:00
Mark Mitchell
d6479fe772 cp-tree.h (flag_access_control): Declare.
* cp-tree.h (flag_access_control): Declare.
	(TREE_VIA_PPUBLIC): Document.
	(DECL_NONSTATIC_MEMBER_P): New macro.
	(enforce_access): Return an indication of whether or not access
	was permitted.
	(build_self_reference): Change prototype.
	(compute_access): Replace with ...
	(accessible_p): New function.
	(dfs_walk): Change prototype.
	(dfs_unmark): Likewise.
	(markedp): Likewise.
	* call.c (enforce_access): Use accessible_p.
	* class.c (build_self_reference): Insert the declaration into the
	list of members for this type, and make it public.
	* decl.c (xref_basetypes): Avoid ill-timed recursion.
	* init.c (build_offset_ref): Use lookup_member, not three separate
	name-lookups.  Call enforce_access rather than checking for
	illegal accesses here.
	(resolve_offset_ref): Likewise.
	* lex.c (do_identifier): Likewise.
	* method.c (hack_identifier): Likewise.
	* parse.y (self_reference): Remove.
	(opt_component_decl_list): Don't use it.
	* parse.c: Regenerated.
	* pt.c (print_candidates): Generalize to handle lists of
	overloaded functions.
	(instantiate_class_template): Don't rely on TREE_VIA_PRIVATE; it's
	not set.
	(get_template_base): Use new calling convention for dfs_walk.
	* search.c: Include varray.h.  Add prototypes.
	(dfs_walk): Accept a data pointer to pass to the work functions.
	All callers changed.  All work functions changed.
	(breadth_first_search): Rename to bfs_walk, and make consistent
	with dfs_walk.
	(dfs_walk_real): New function.
	(canonical_binfo): New function.
	(context_for_name_lookup): Likewise.
	(shared_marked_p): Likewise.
	(shared_unmarked_p): Likewise.
	(lokup_field_queue_p): Likewise.
	(lookup_field_r): Generalize to handle both functions and fields.
	(lookup_field): Just call lookup_member.
	(lookup_fnfields): Likewise.
	(lookup_member): Move body of lookup_field here and generalize.
	(dfs_accessible_queue_p): Likewise.
	(dfs_accessible_p): Likewise.
	(dfs_access_in_type): Likewise.
	(access_in_type): Likewise.
	(compute_access): Remove, and replace with ...
	(accessible_p): New function.
	(vbase_types): Remove.
	(vbase_decl_ptr_intermediate): Likewise.
	(vbase_decl_ptr): Likewise.
	(vbase_init_result): Likewise.
	(closed_envelopes): Likewise.
	(bvtable): Likewise.

From-SVN: r25661
1999-03-09 23:02:42 +00:00
Jason Merrill
fcfcdfc897 pt.c (unify): Call coerce_template_parms with the COMPLAIN flag turned off.
* pt.c (unify): Call coerce_template_parms with the COMPLAIN flag
	turned off.
	* lex.c (retrofit_lang_decl): Split out...
	(build_lang_decl): From here.
	* decl.c (pushdecl): Call it for functions generated by the middle
	end that don't have DECL_LANG_SPECIFIC.
	* decl2.c: Remove flag_init_priority.  Always enable initp stuff.
	(start_objects, finish_objects): Only use special
	init_priority code if the user specified a priority.
	(do_ctors, do_dtors): Use DEFAULT_INIT_PRIORITY for the non-initp
	objects.

From-SVN: r25036
1999-02-04 21:42:48 -05:00
Jason Merrill
ad236eab58 re PR other/18132 (Problem compiling gcc 3.4.2)
* semantics.c (finish_asm_stmt): Don't warn about redundant volatile.
PR 18132
	* decl2.c (import_export_class): MULTIPLE_SYMBOL_SPACES only means
	that we don't suppress the other copies.
	* lex.c (handle_cp_pragma): Likewise.
PR 18627

From-SVN: r24662
1999-01-14 05:42:12 -05:00
Mark Mitchell
4c57111494 cp-tree.h (IDENTIFIER_TYPENAME_P): Use OPERATOR_TYPENAME_FORMAT here.
* cp-tree.h (IDENTIFIER_TYPENAME_P): Use OPERATOR_TYPENAME_FORMAT
	here.
	(lang_type): Add is_partial_instantiation.  Decrease width of
	dummy.
	(PARTIAL_INSTANTIATION_P): New macro.
	(OPERATOR_TYPENAME_P): Remove.
	* decl.c (unary_op_p): Use IDENTIFIER_TYPENAME_P, not
	OPERATOR_TYPENAME_P.
	(grok_op_properties): Likewise.
	* friend.c (do_friend): Handle friends that are member functions
	correctly.
	* lex.c (init_parse): Use OPERATOR_TYPENAME_FORMAT.
	* pt.c (instantiate_class_template): Rework for clarity.  Avoid
	leaving TYPE_BEING_DEFINED set in obscure cases.  Don't do
	any more partial instantiation than is absolutely necessary for
	implicit typename.  Set PARTIAL_INSTANTIATION_P.
	(tsubst_decl): Use IDENTIFIER_TYPENAME_P.
	* semantics.c (begin_class_definition): Handle partial
	specializations of a type that was previously partially
	instantiated.

From-SVN: r24548
1999-01-06 23:38:05 +00:00
Kaveh R. Ghazi
e833cb112c Warning fixes:
* Makefile.in (cvt.o): Depend on toplev.h.
        * cp-tree.h (check_template_shadow, pod_type_p): Add prototypes.
        * cvt.c: Include toplev.h.
        * except.c (get_eh_caught, get_eh_handlers): Hide prototypes and
        definitions.
        * init.c (expand_vec_init): Initialize variable `itype'.
        * lex.c (yyerror): Cast the argument passed to a ctype function to
        an unsigned char.
        * method.c (build_mangled_C9x_name): Wrap prototype and definition
        in "HOST_BITS_PER_WIDE_INT >= 64".
        * typeck.c (build_binary_op): Mark parameter `convert_p' with
        ATTRIBUTE_UNUSED.

From-SVN: r24395
1998-12-22 12:18:17 +00:00
Mark Mitchell
50714e797c class.c (resolve_address_of_overloaded_function): Do conversion to correct type here, rather than ...
* class.c (resolve_address_of_overloaded_function): Do conversion
	to correct type here, rather than ...
	(instantiate_type): Here.
	* cp-tree.h (DECL_TEMPLATE_PARM_P): New macro.
	(DECL_TEMPLATE_TEMPLATE_PARM_P): Use it.
	(decl_template_parm_p): Remove.
	* decl.c (pushdecl): Don't set DECL_CONTEXT for a template
	paramter.
	* lex.c (do_identifier): Use DECL_TEMPLATE_PARM_P.
	(push_inline_template_parms_recursive): Set it.
	(decl_template_parm_p): Remove.
	(check_template_shadow): Use DECL_TEMPLATE_PARM_P.
	(process_template_parm): Set it.

From-SVN: r24344
1998-12-16 15:51:21 +00:00
Mark Mitchell
f181d4aea0 cp-tree.def (CPLUS_BINDING): Update documentation.
* cp-tree.def (CPLUS_BINDING): Update documentation.
	* cp-tree.h (LOCAL_BINDING_P): New macro.
	(lang_identifier): Rename local_value to bindings.
	(tree_binding): Make `scope' of type `void*', not `tree'.
	(BINDING_SCOPE): Update documentation.
	(IDENTIFIER_LOCAL_VALUE): Remove.
	(IDENTIFIER_CLASS_VALUE): Document.
	(IDENTIFIER_BINDING): New macro.
	(IDENTIFIER_VALUE): Likewise.
	(TIME_IDENTIFIER_TIME): Likewise.
	(TIME_IDENTIFIER_FILEINFO): Likewise.
	(IMPLICIT_TYPENAME_P): Likewise.
	(set_identifier_local_value): Remove.
	(push_local_binding): New function.
	(push_class_binding): Likewise.
	* class.c (pushclass): Update comments; use push_class_binding.
	* decl.c (set_identifier_local_value_with_scope): Remove.
	(set_identifier_local_value): Likewise.
	(push_binding): New function.
	(pop_binding): Likewise.
	(binding_level): Update documentation.  Remove shadowed.
	(BINDING_LEVEL): New macro.
	(free_binding_nodes): New variable.
	(poplevel): Adjust for new name-lookup scheme.  Don't mess up
	BLOCK_VARs when doing for-scope extension.  Remove effectively
	dead code.
	(pushlevel_class): Tweak formatting.
	(poplevel_class): Adjust for new name-lookup scheme.
	(print_binding_level): Likewise.
	(store_bindings): Likewise.
	(pushdecl): Likewise.
	(pushdecl_class_level): Likewise.
	(push_class_level_binding): Likewise.
	(push_overloaded_decl): Update comments.  Adjust for new
	name-lookup scheme.
	(lookup_name_real): Likewise.
	(lookup_name_current_level): Likewise.
	(cp_finish_decl): Likewise.
	(require_complete_types_for_parms): Likewise.  Remove misleading
	#if 0'd code.
	(grok_parms): Likewise.  Don't call
	require_complete_types_for_parms here.
	(grok_ctor_properties): Don't treat templates as copy
	constructors.
	(grop_op_properties): Or as assignment operators.
	(start_function): Document.  Adjust for new name-lookup scheme.
	(finish_function): Likewise.
	* decl2.c (do_local_using_decl): Use push_local_binding.
	* lex.c (begin_definition_of_inclass_inline): New function, split
	out from ...
	(do_pending_inlines): Here, and ...
	(process_next_inline): Here.
	(get_time_identifier): Use TIME_IDENTIFIER_* macros.
	(init_filename_times): Likewise.
	(extract_interface_info): Likewise.
	(ste_typedecl_interface_info): Likewise.
	(check_newline): Likewise.
	(dump_time_statistics): Likewise.
	(handle_cp_pragma): Likewise.
	(do_identifier): Adjust for new name-lookup scheme.
	* parse.y (function_try_block): Return ctor_initializer_opt value.
	(fndef): Use it.
	(fn.defpen): Pass appropriate values to start_function.
	(pending_inline): Use functor_try_block value, and pass
	appropriate values to finish_function.
	* pt.c (is_member_template): Update documentation; remove handling
	of FUNCTION_DECLs.  As per name, this function should deal only in
	TEMPLATE_DECLs.
	(decl_template_parm_p): Change name of olddecl parameter to decl.
	(check_template_shadow): Adjust for new name-lookup scheme.
	(lookup_template_class): Likewise.
	(tsubst_decl): Tweak so as not to confuse member templates with
	copy constructors and assignment operators.
	(unify): Handle UNION_TYPEs.
	* ptree.c (print_lang_identifier): Adjust for new name-lookup scheme.
	(lang_print_xnode): Adjust for new name-lookup scheme.
	* typeck.c (mark_addressable): Likewise.
	(c_expand_return): Likewise.

From-SVN: r24296
1998-12-13 14:46:07 +00:00
Jason Merrill
4d7614e9f1 decl.c (grokdeclarator): Allow field with same name as class in extern "C".
* decl.c (grokdeclarator): Allow field with same name as class
	in extern "C".
	* decl.c (lookup_name_real): Don't limit field lookup to types.
	* class.c (check_member_decl_is_same_in_complete_scope): No error
	if icv and x are the same.
	* lex.c (do_identifier): Tweak error message.

From-SVN: r24269
1998-12-12 11:41:15 -05:00
Dave Brolley
dfb0fb1d90 lex.c (lang_init_options): Initialize cpplib.
Wed Dec  9 15:33:01 1998  Dave Brolley  <brolley@cygnus.com>
	* lex.c (lang_init_options): Initialize cpplib.
	* decl2.c (parse_options,cpp_initialized): Removed.
	(lang_decode_option): Move initialization of cpplib to
	lang_init_options.

From-SVN: r24221
1998-12-09 07:51:24 -05:00
Mike Stump
069f7cf27a lex.c (check_newline): Add support for \ as `natural' characters in file names in #line to be...
Mon Dec  7 17:56:06 1998  Mike Stump  <mrs@wrs.com>
	* lex.c (check_newline): Add support for \ as `natural'
	characters in file names in #line to be consistent with #include
	handling.  We support escape prcessing in the # 1 "..." version of
	the command.

From-SVN: r24157
1998-12-07 10:02:16 -05:00
Jason Merrill
2642b9bfd5 decl.c (build_typename_type): Set DECL_ARTIFICIAL.
* decl.c (build_typename_type): Set DECL_ARTIFICIAL.
	* error.c (dump_simple_decl): Also print namespace context.
	(dump_function_decl): Likewise.
	* decl2.c (ambiguous_decl): Don't print old value if it's
	error_mark_node.
	* decl.c (lookup_name_real): Fix handling of local types shadowed
	by a non-type decl.  Remove obsolete code.
	* cp-tree.h (DECL_FUNCTION_SCOPE_P): New macro.
Fixes g++.other/lookup6.C
	* lang-options.h: Add -fpermissive.
	* decl2.c: Likewise.
	* cp-tree.h: Add flag_permissive.
	* decl.c (init_decl_processing): If neither -fpermissive or -pedantic
	were specified, set flag_pedantic_errors.
	* call.c (build_over_call): Turn dropped qualifier messages
	back into pedwarns.
	* cvt.c (convert_to_reference): Likewise.
	* typeck.c (convert_for_assignment): Likewise.

From-SVN: r24150
1998-12-07 07:27:47 -05:00
Jason Merrill
053a61cbeb lex.c (handle_cp_pragma): Disable #pragma interface/implementation if MULTIPLE_SYMBOL_SPACES.
* lex.c (handle_cp_pragma): Disable #pragma interface/implementation
	if MULTIPLE_SYMBOL_SPACES.

From-SVN: r24104
1998-12-04 16:39:25 -05:00
Andreas Schwab
32201ce4ea lex.c (make_lang_type): Clear the whole struct lang_type, not only the first multiple of sizeof (int).
* lex.c (make_lang_type): Clear the whole struct lang_type, not
	only the first multiple of sizeof (int).

From-SVN: r23848
1998-11-25 04:06:42 +00:00
Jason Merrill
83f660b758 lex.c (handle_generic_pragma): Use token_buffer.
* lex.c (handle_generic_pragma): Use token_buffer.
	* decl.c (check_tag_decl): Don't complain about null friend decl.
	* Make-lang.in (DEMANGLER_PROG): Move the output argumnts to the
	first position.
	* lex.c (check_newline): Use ISALPHA.
	(readescape): Use ISGRAPH.
	(yyerror): Use ISGRAPH.
	* search.c (get_abstract_virtuals): Do not use initial
	CLASSTYPE_ABSTRACT_VIRTUALS.
	* typeck2.c (abstract_virtuals_error): Show location of abstract
	declaration.
	* call.c (build_new_method_call): Use
	CLASSTYPE_ABSTRACT_VIRTUAL, rather than recalculate.
	* class.c (finish_struct_bits): Don't bother working out whether
	get_abstract_virtuals will do anything, just do it.

From-SVN: r23836
1998-11-24 16:28:47 -05:00
Jason Merrill
161c12b0bf Handle specifying template args to member function templates.
* tree.c (build_overload): Always create an OVERLOAD for a template.
	* search.c (add_conversions): Handle finding an OVERLOAD.
	* decl2.c (check_classfn): Likewise.
	* lex.c (identifier_type): See through a baselink.
	* parse.y (do_id): Don't call do_identifier if we got a baselink.
	* class.c (instantiate_type, case TREE_LIST): Recurse.
	* decl.c (grokdeclarator): Allow a boolean constant for array
	bounds, odd as that sounds.
	* pt.c (unify): Be more strict about non-type parms, except for
	array bounds.
	(UNIFY_ALLOW_INTEGER): New macro.

From-SVN: r23740
1998-11-21 00:42:20 -05:00
Jason Merrill
8ebeee52bc search.c (get_abstract_virtuals): Complain about virtuals with no final overrider.
* search.c (get_abstract_virtuals): Complain about virtuals with
	no final overrider.
	* typeck2.c (abstract_virtuals_error): Remove handling for virtuals
	with no final overrider.
	* class.c (override_one_vtable): Don't set DECL_ABSTRACT_VIRTUAL_P
	on virtuals with no final overrider.
Fixes Sec10/3/E10120.C
	* lex.c (reinit_parse_for_block): Add a space after the initial ':'.
Fixes Sec9/7/R09434.r0
	* class.c (finish_struct_1): Don't remove zero-width bit-fields until
	after layout_type.
Fixes Sec9/6/P09024.C
	* friend.c (do_friend): Don't set_mangled_name_for_decl.
Fixes Sec9/2/P09075.C
	* class.c (finish_struct_anon): Complain about non-fields.
	* decl2.c (build_anon_union_vars): Likewise.
	* decl.c (grokdeclarator): Normal data members can't have the same
	name as the class, either.
	* class.c (finish_struct_anon): Neither can members of an
	anonymous union.
Fixes Sec9/2/C09268.cm

From-SVN: r23691
1998-11-17 21:21:54 -05:00
Mark Mitchell
7ddedda4aa cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses.
* cp-tree.h (TYPE_ALIAS_SET): Document language-dependent uses.
	(TYPE_BINFO): Likewise.
	(IS_AGGR_TYPE): Tweak.
	(SET_IS_AGGR_TYPE): New macro.
	(CLASS_TYPE_P): Tweak.
	(lang_type): Group mark bitfields together.  Remove linenum.
	(CLASSTYPE_SOURCE_LINE): Remove macro.
	(CLASSTYPE_MARKED_N): New macro.
	(SET_CLASSTYPE_MARKED_N): Likewise.
	(CLEAR_CLASSTYPE_MARKED_N): Likewise.
	(CLASS_TYPE_MARKED_*): Use them.
	(SET_CLASSTYPE_MARKED_*): Likewise.
	(CLEAR_CLASSTYPE_MARKED_*): Likewise.
	(TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO): Likewise.
	(TYPE_TEMPLATE_INFO): Handle TEMPLATE_TEMPLATE_PARMs as well.
	(TYPENAME_TYPE_FULLNAME): Use TYPE_BINFO rather than CLASSTYPE_SIZE.
	* class.c (class_cache_obstack): New variable.
	(class_cache_firstobj): Likewise.
	(finish_struct): Don't set CLASSTYPE_SOURCE_LINE.
	(pushclass): Free the cache, when appropriate.
	(popclass): Tidy.
	(maybe_push_cache_obstack): Use class_cache_obstack.
	* decl.c (include hash.h).
	(typename_hash): New function.
	(typename_compare): Likewise.
	(build_typename_type): Check the hash table to avoid creating
	duplicates.
	(build_ptrmemfunc_type): Use SET_IS_AGGR_TYPE.
	(grokdeclarator): Use CLASS_TYPE_P.
	(xref_basetypes): Likewise.
	(start_function): Likewise.  Don't put current_class_ref on the
	permanent obstack.
	* error.c (dump_type_real): Use	TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO
	and TYPE_TI_ARGS.
	* lex.c (note_got_semicolon): Use CLASS_TYPE_P.
	(make_lang_type): Don't create TYPE_LANG_SPECIFIC and associated
	fields for types other than class types.  Do clear TYPE_ALIAS_SET
	for types other than class types, though.
	* method.c (build_overload_identifier): Use CLASS_TYPE_P and
	TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
	* pt.c (process_template_parm): Don't set
	CLASSTYPE_GOT_SEMICOLON.
	(lookup_template_class) Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
	Coerce arguments on the momentary obstack.
	(for_each_template_parm): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_INFO.
	(instantiate_class_template): Calculate template arguments on the
	momentary obstack.  Tidy.
	(tsubst_template_arg_vector): Use make_temp_vec.
	(tsubst_aggr_type): Put template arguments on the momentary
	obstack.
	(tsubst_decl): Likewise.
	(tsubst): Copy the array bounds index to the permanent obstack
	before building index types.  Use new macros.
	(unify): Use new macros.
	(do_type_instantiation): Likewise.
	* search.c (lookup_fnfields_1): Use new macros.
	(dfs_pushdecls): Build envelopes on the cache obstack.
	(dfs_compress_decls): Use new macros.
	(push_class_decls): Build on the cache obstack.
	* semantics.c (finish_typeof): Don't set CLASSTYPE_GOT_SEMICOLON.
	* sign.c (build_signature_pointer_or_reference_type): Use
	SET_IS_AGGR_TYPE.
	* tree.c (make_binfo): Check CLASS_TYPE_P.
	(copy_template_template_parm): Adjust.
	(make_temp_vec): Use push_expresion_obstack.
	* typeck.c (complete_type): Use new macros.
	(comptypes): Likewise.

From-SVN: r23686
1998-11-17 12:51:20 +00:00
Zack Weinberg
7140b0dba6 lex.c: Call check_newline from lang_init always.
1998-10-28  Zack Weinberg  <zack@rabi.phys.columbia.edu>
	* cp/lex.c: Call check_newline from lang_init always.	After
	calling cpp_start_read, set yy_cur and yy_lim to read from the
	cpplib token buffer.

From-SVN: r23425
1998-10-29 06:55:06 -05:00
Jason Merrill
c6882a3561 lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
* lex.c (do_identifier): Also generate LOOKUP_EXPR for RESULT_DECL.
	* method.c (hack_identifier): Also check for using RESULT_DECL
	from outer context.

From-SVN: r23381
1998-10-27 18:47:42 -05:00
Mark Mitchell
91063b5138 cplus-dem.c (work_stuff): Replace const_type and volatile_type with type_quals.
* cplus-dem.c (work_stuff): Replace const_type and volatile_type
	with type_quals.
	(TYPE_UNQUALIFIED): New macro.
	(TYPE_QUAL_CONST): Likewise.
	(TYPE_QUAL_VOLATILE): Likewise.
	(TYPE_QUAL_RESTRICT): Likewise.
	(code_for_qualifier): New function.
	(qualifier_string): Likewise.
	(demangle_qualifier): Likewise.
	(internal_cplus_demangle): Use them.
	(demangle_signature): Likewise.
	(demangle_template_value_parm): Likewise.
	(do_type): Likewise.
	(demangle_fund_type)): Likewise.
	* Makefile.in (hash.h): Run gperf when necessary.
	* cp-tree.h (CP_TYPE_READONLY): Remove.
	(CP_TYPE_VOLATILE): Likewise.
	(CP_TYPE_QUALS): New macro.
	(CP_TYPE_CONST_P): Likewise.
	(CP_TYPE_VOLATILE_P): Likewise.
	(CP_TYPE_RESTRICT_P): Likewise.
	(CP_TYPE_CONST_NON_VOLATILE_P): Likewise.
	(cp_build_type_variant): Rename to ...
	(cp_build_qualified_type): New function.
	(c_apply_type_quals_to_decl): Declare.
	(SIGNATURE_POINTER_NAME_FORMAT): Modify to allow `restrict'.
	(SIGNATURE_REFERENCE_NAME_FORMAT): Likewise.
	(cp_type_qual_from_rid): New function.
	(compparms): Remove unused parameter.  All callers changed.
	(cp_type_quals): New function.
	(at_least_as_qualified_p): Likewise.
	(more_qualified_p): Likewise.
	* call.c (standard_conversion): Replace calls to
	cp_build_type_variant with cp_build_qualified_type.  Use
	CP_TYPE_QUALS to get qualifiers and at_least_as_qualified_p to
	compare them.  Use CP_TYPE_* macros to check qualifiers.
	(reference_binding): Likewise.
	(implicit_conversion): Likewise.
	(add_builtin_candidates): Likewise.
	(build_over_call): Likewise.
	* class.c (overrides): Compare all qualifiers, not just `const',
	on method declarations.
	* cvt.c (convert_to_reference): More CP_TYPE_QUALS conversion, etc.
	(convert_pointer_to_real): Likewise.
	(type_promotes_to): Likewise.
	* decl.c (check_for_uninitialized_const_var): New function.
	(init_decl_processing): More CP_TYPE_QUALS conversion, etc.
	(cp_finish_decl): Use check_for_uninitialized_const_var.
	(grokdeclarator): More CP_TYPE_QUALS conversion, etc.  Update to
	handle `restrict'.
	(grok_ctor_properties): Likewise.
	(grok_op_properties): Likewise.
	(start_function): Likewise.
	(rever_static_member_fn): Likewise.
	* decl2.c (grok_method_quals): Likewise.
	(grokfield): Likewise.
	* error.c (dump_readonly_or_volatile): Rename to ...
	(dump_qualifiers): New function.  Handle `restrict'.
	(dump_type_real): Use it.
	(dump_aggr_type): Likewise.
	(dump_type_prefix): Likewise.
	(dump_type_suffix): Likewise.
	(dump_function_decl): Likewise.
	(cv_as_string): Likewise.
	* gxx.gperf: Add __restrict and __restrict__.
	* gxxint.texi: Document `u' as used for `__restrict', and a few
	other previously undocumented codes.
	* hash.h: Regenerated.
	* init.c (expand_aggr_init): More CP_TYPE_QUALS conversion, etc.
	(build_member_call): Likewise.
	(build_new_1): Likewise.
	* lex.c (init_parse): Add entry for RID_RESTRICT.
	(cons_up_default_function): More CP_TYPE_QUALS conversion, etc.
	(cp_type_qual_from_rid): Define.
	* lex.h (enum rid): Add RID_RESTRICT.
	* method.c (process_modifiers): Deal with `restrict'.
	* parse.y (primary): More CP_TYPE_QUALS conversion, etc.
	* parse.c: Regenerated.
	* pt.c (convert_nontype_argument): More CP_TYPE_QUALS conversion, etc.
	(tsubst_aggr_type): Likewise.
	(tsubst): Likewise.
	(check_cv_quals_for_unify): Likewise.
	(unify): Likewise.
	* rtti.c (init_rtti_processing): Likewise.
	(build_headof): Likewise.
	(get_tinfo_var): Likewise.
	(buidl_dynamic_cast_1): Likewise.  Fix `volatile' handling.
	(expand_class_desc): Likewise.
	(expand_attr_desc): Likewise.
	(synthesize_tinfo_fn): Likewise.
	* search.c (covariant_return_p): Likewise.  Fix `volatile' handling.
	(get_matching_virtual): Likewise.
	(expand_upcast_fixups): Likewise.
	* sig.c (build_signature_pointer_or_reference_name): Take
	type_quals, not constp and volatilep.
	(build_signature_pointer_or_reference_type): Likewise.
	(match_method_types): More CP_TYPE_QUALS conversion, etc.
	(build_signature_pointer_constructor): Likewise.
	(build_signature_method_call): Likewise.
	* tree.c (build_cplus_array_type): Likewise.
	(cp_build_type_variant): Rename to ...
	(cp_build_qualified_type): New function.  Deal with `__restrict'.
	(canonical_type_variant): More CP_TYPE_QUALS conversion, etc.
	(build_exception_variant): Likewise.
	(mapcar): Likewise.
	* typeck.c (qualif_type): Likewise.
	(common_type): Likewise.
	(comptypes): Likewise.
	(comp_cv_target_types): Likewise.
	(at_least_as_qualified_p): Define.
	(more_qualified_p): Likewise.
	(comp_cv_qualification): More CP_TYPE_QUALS conversion, etc.
	(compparms): Likewise.
	(inline_conversion): Likewise.
	(string_conv_p): Likewise.
	(build_component_ref): Likewise.
	(build_indirect_ref): Likewise.
	(build_array_ref): Likewise.
	(build_unary_op): Likewise.
	(build_conditional_expr): Likewise.
	(build_static_cast): Likewise.
	(build_c_cast): Likewise.
	(build_modify_expr): Likewise.
	(convert_For_assignment): Likewise.
	(comp_ptr_ttypes_real): Likewise.
	(cp_type_quals): New function.

From-SVN: r23258
1998-10-23 14:53:28 +00:00
Dave Brolley
cde7b1b066 lex.c (real_yylex): Fix unaligned access of wchar_t.
1998-10-16  Dave Brolley  <brolley@cygnus.com>
        * lex.c (real_yylex): Fix unaligned access of wchar_t.

From-SVN: r23134
1998-10-16 08:42:35 -04:00
Mark Mitchell
01240200ee class.c (current_class_ptr, [...]): Clarify documentation.
* class.c (current_class_ptr, current_class_ref): Clarify
	documentation.
	* cvt.c (ocp_convert): Don't expect fold to remove all trivial
	NOP type conversions.
	* decl.c (decls_match): Use comptypes directly; ignore
	qualifiers on the DECL.
	(duplicate_decls): Remove qualifier checks on DECL.
	(grokdeclarator): Make the type built up include top-level
	qualifiers.
	* decl2.c (do_dtors): Fix spelling error.
	* error.c (dump_simple_decl): Don't look at qualifiers on the decl
	when printing type information.
	* init.c (build_new_1): Add documentation.  Deal with the fact
	that type of allocated memory now contains qualifiers.
	* lex.c (is_global): Improve error-recovery.
	* sig.c (build_member_function_pointer): Don't cast away const
	on fields of sigtable_entry_type.
	* tree.c (lvalue_type): Don't look at top-level qualifiers on
	expressions.
	* typeck.c (decay_conversion): Likewise.
	(build_component_ref): Make sure the type of the COMPONENT_REF
	contains top-level qualifiers, as appropriate.  Improve
	error-handling.
	(build_indirect_ref): Simplify.  Don't strip top-level qualifiers.
	(build_array_ref): Likewise.
	(build_unary_op): Improve error-recovery.
	(unary_complex_lvalue): Make taking the address a bound member
	function an error, not a sorry.
	(build_conditional_expr): Look at the type qualifiers, not the
	qualifiers on the expression itself.

From-SVN: r22802
1998-10-03 23:11:19 +00:00
Nick Clifton
a09a009c45 Replace occurances of HANDLE_SYSV_PRAGMA with HANDLE_GENERIC_PRAGMAS.
From-SVN: r22711
1998-10-01 10:52:36 +00:00
Kaveh R. Ghazi
b370501f72 Warning fixes:
* cp-tree.h (define_case_label): Remove unused parameter.
	(check_java_method): Likewise.
	(grokclassfn): Likewise.
	(expand_aggr_init): Likewise.
	(build_x_delete): Likewise.
	(maybe_end_member_template_processing): Likewise.
	(unshare_base_binfos): Add prototype.
	(string_conv_p): Likewise.
	(my_friendly_abort): Mark with ATTRIBUTE_NORETURN.
	* cvt.c (build_up_reference): Remove unused parameter
 	`checkconst', all callers changed.
	(build_type_conversion): Mark parameter `code' with
	ATTRIBUTE_UNUSED.
	(build_expr_type_conversion): Initialize variable `conv'.
	* decl.c (push_namespace): Initialize variable `d'.
  	(define_case_label): Remove unused parameter `decl', all callers
 	changed.
	* decl2.c (lang_decode_option): If !USE_CPPLIB, mark parameter
 	`argc' with ATTRIBUTE_UNUSED.
	(grokclassfn): Remove unused parameter `cname', all callers
 	changed.
	(check_java_method): Likewise for parameter `ctype'.
	(copy_assignment_arg_p): Mark parameter `virtualp' with
	ATTRIBUTE_UNUSED.
	(finish_prevtable_vardecl): Likewise for parameter `prev'.
	* expr.c (extract_init): Likewise for parameters `decl' and `init'.
	* init.c (expand_aggr_init_1): Remove unused parameter
 	`alias_this', all callers changed.
	(expand_aggr_init): Likewise.
	(expand_default_init): Likewise.
	(build_new_1): Initialize variable `susp'.
	(build_x_delete): Remove unused parameter `type', all callers
	changed.
	* lex.c (set_typedecl_interface_info): Mark parameter `prev' with
	ATTRIBUTE_UNUSED.
	(readescape): Use (unsigned) value in shift.
	(real_yylex): Likewise.  Likewise.  Also cast `sizeof' to int when
	comparing to a signed quantity.
	* pt.c (maybe_end_member_template_processing): Remove unused
 	parameter `decl', all callers changed.
	(check_explicit_specialization): Add braces around empty body in
	an else-statement.
	(current_template_args): Initialize variable `args'.
	(lookup_template_class): Likewise for variable `prev_local_enum'.
	(tsubst_decl): Likewise for variable `r'.
	(set_mangled_name_for_template_decl): Initialize variable
	`context'.
	* spew.c (scan_tokens): Change type of parameter `n' to unsigned.
	Likewise for variable `i'.
	(yylex): Initialize variable `trrr'.
	* typeck.c (compparms): Mark variable `strict' with
	ATTRIBUTE_UNUSED.
	* xref.c (simplify_type): Cast argument of ctype function to
	`unsigned char'.

From-SVN: r22587
1998-09-25 09:00:04 +00:00
Benjamin Kosnik
9a4690080e spew.c (yylex): Give diagnostic.
�
1998-09-24  Benjamin Kosnik  <bkoz@loony.cygnus.com>
	* spew.c (yylex): Give diagnostic.
	* hash.h (is_reserved_word): Add export.
	* gxx.gperf: Ditto.
	* lex.h (rid): Add RID_EXPORT.
	* lex.c (init_parse): Ditto.

From-SVN: r22580
1998-09-24 22:29:31 +00:00
Felix Lee
3e81ad1642 * lex.c (init_lex): Use getenv ("LANG"), not GET_ENVIRONMENT ().
From-SVN: r22512
1998-09-20 18:57:11 -06:00
Jason Merrill
8251199e44 revert error reporting patch
From-SVN: r22310
1998-09-07 10:25:35 -04:00
Mark Mitchell
d41fbd2cb8 cp-error.def: New file.
* cp-error.def: New file.
	* Make-lang.in (cc1plus): Add dependency on it.
	* Makefile.in (CXX_TREE_H): Likewise.
	* cp-tree.h (error_code): New type.
	Include cp-error.def to get error codes.  Make it possible to
	include cp-tree.h in errfn.c.
	(enable_warning): New function.
	(flag_diag_codes): New variable.
	* errfn.c: Include cp-tree.h.
	(cp_err_msg): New type.  Include cp-error.def to define it.
	(err_msgs): New variable.
	(is_warning_enabled): New function.
	(cp_thing): Take an error_code, not a format string.  Output the
	diagnostic code if flag_diag_codes.
	(cp_error, cp_compiler_error, cp_sprintf, cp_error_at): Take
	error_codes, not format strings.
	(cp_warning, cp_pedwarn, cp_warning_at, cp_pedwarn_at): Likewise.
	Call is_warning_enabled.
	* decl2.c (flag_diag_codes): New variable.
	(lang_decode_option): Handle -fdiag-codes and -Wnumber.
	* lang-options.h: Add -fdiag-codes, -fno-diag-codes, and
	-W-number-, and -Wno-number.
	* class.c: Update all calls to error-functions.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* friend.c: Likewise.
	* lex.c: Likewise.
	* parse.y: Likewise.
	* pt.c: Likewise.
	* repo.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* sig.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.
	* xref.c: Likewise.

From-SVN: r22304
1998-09-06 19:45:16 +00:00
Nick Clifton
ae4d12ca9f Change HANDLE_PRAGMA macro so that it will work with USE_CPPLIB
From-SVN: r22166
1998-09-02 10:02:27 +00:00
Jason Merrill
830fcda8e7 decl.c (lookup_name_real): Also do implicit typename thing for artificial TYPE_DECLs.
* decl.c (lookup_name_real): Also do implicit typename thing for
	artificial TYPE_DECLs.
	* search.c (lookup_field): Likewise.
	(lookup_fnfields, lookup_field): Adjust for implicit typename kludge.
	* semantics.c (begin_constructor_declarator): Use enter_scope_of.
	(enter_scope_of): Extract type from implicit typename.
	(begin_class_definition): Likewise.
	* lex.c (identifier_type): Handle implicit typename when checking
	for SELFNAME.
	* cp-tree.h: Declare flag_strict_prototype.
	* lex.c (do_scoped_id, do_identifier): Don't implicitly_declare if
	-fstrict-prototype.
	* decl.c (init_decl_processing): If -f{no,-}strict-prototype wasn't
	specified, set it to the value of pedantic.

From-SVN: r22158
1998-09-01 07:51:41 -04:00
Mark Mitchell
479781c513 * lex.c (do_identifier): Fix thinko in previous change.
From-SVN: r22064
1998-08-28 17:36:09 +00:00
Mark Mitchell
079e1098ab cp-tree.h (build_enumerator): Take the enumeration type as a paramter.
* cp-tree.h (build_enumerator): Take the enumeration type as a
	paramter.
	* decl.c (finish_enum): Don't set the TREE_TYPE for the
	enumeration constant values if we're processing_template_decls.
	Don't set the type for the CONST_DECLs either; that's done in
	build_enumerator. (
	(build_enumerator): Take the enumeration type as a
	paramter.
	* lex.c (do_identifier): Don't resolve enumeration constants while
	processing template declarations, even if they happen to be
	TEMPLATE_PARM_INDEXs.
	* parse.y (current_enum_type): New variable.
	(primary): Don't allow statement-expression in local classes just
	as we don't in global classes.
	(structsp): Use current_enum_type.
	(enum_list): Likewise.
	* pt.c (tsubst_enum): Don't check for NOP_EXPRs introduced by
	finish_enum; they no longer occur.

From-SVN: r22060
1998-08-28 15:43:58 +00:00
Jason Merrill
56ae6d7780 lex.c (handle_cp_pragma): Remove #pragma vtable.
* lex.c (handle_cp_pragma): Remove #pragma vtable.
	* lang-options.h: Remove +e options.
	* decl2.c (lang_decode_option): Likewise.
	(import_export_vtable): Don't check write_virtuals.
	(finish_vtable_vardecl, finish_file): Likewise.
	* search.c (dfs_debug_mark): Likewise.
	* semantics.c (begin_class_definition): Likewise.
	* class.c (build_vtable, finish_vtbls, finish_struct_1): Likewise.
	* call.c (build_over_call): Check flag_elide_constructors.
	* decl2.c: flag_elide_constructors defaults to 1.
	* typeck.c (convert_arguments): Remove return_loc parm.
	(build_function_call_real): Adjust.

From-SVN: r22027
1998-08-27 15:03:59 -04:00
Mark Mitchell
ca107dedc7 class.c (build_vbase_path): Use reverse_path.
* class.c (build_vbase_path): Use reverse_path.
	(finish_base_struct): Move warnings for inaccessible bases to
	layout_basetypes.
	(modify_one_vtable): Remove check of TREE_USED (binfo).
	(fixup_vtable_deltas1): Likewise.
	* cp-tree.h (BINFO_INHERITANCE_CHAIN): Document here.
	(xref_tag): Remove binfos parameter.
	(make_binfo): Remove chain parameter.
	(reverse_path): Add copy parameter.
	* decl.c (init_decl_processing): Change calls to xref_tag.
	(xref_tag): Remove binfos parameter.
	(xref_basetypes): Change calls to make_binfo.
	* decl2.c (grok_x_components): Change calls to xref_tag.
	(handle_class_head): Likewise.
	* friend.c (do_friend): Likewise.
	* lex.c (make_lang_type): Change calls to make_binfo.
	* parse.y (structsp): Change calls to xref_tag.
	(named_complex_class_head_sans_basetype): Likewise.
	(named_class_head): Likewise.
	* rtti.c (init_rtti_processing): Likewise.
	* search.c (compute_access): Change calls to reverse_path.
	(dfs_get_vbase_types): Change calls to make_binfo.
	(get_vbase_types): Remove dead code.
	* tree.c (unshare_base_binfos): Change calls to make_binfo.
	(layout_basetypes): Warn here about inaccessible bases.
	(make_binfo): Remove chain parameter.
	(reverse_path): Add copy parameter.

From-SVN: r22021
1998-08-27 10:17:48 +00:00
Mark Mitchell
c0a483c70a * lex.c (do_identifier): Fix typo in comment.
From-SVN: r22003
1998-08-26 12:45:15 +00:00
Jason Merrill
319285566b lex.c (real_yylex): Don't warn about long long constants if we're allowing long long.
* lex.c (real_yylex): Don't warn about long long constants if
        we're allowing long long.
	* decl.c (pushdecl): Use IDENTIFIER_NAMESPACE_VALUE instead of
	accessing bindings directly.
	* lang-specs.h: Remove __HONOR_STD.
	* inc/exception, inc/new, inc/new.h, inc/typeinfo: Likewise.

From-SVN: r21926
1998-08-23 22:00:27 -04:00
Mark Mitchell
03d0f4af2d iomanip.h: Use __extension__ for `extern' explicit template instantiations.
* iomanip.h: Use __extension__ for `extern' explicit template
	instantiations.
	* sinst.cc: Don't explicitly instantiation string_char_traits<char>.
	* cinst.cc: Likewiwse, for complex<float>, complex<double>,
	complex<long double>.
	* extend.texi: Remove description of extension to explicit
	instantiation that is now endorsed by standard C++.
	* decl2.c (grok_array_decl): Add comment.
	(mark_used): Don't instantiate an explicit instantiation.
	* friend.c (make_friend_class): Remove bogus comment.  Fix check
	for partial specializations.
	* pt.c (check_explicit_specialization): Don't
	SET_DECL_EXPLICIT_INSTANTIATION here.
	(mark_decl_instantiated): Or here.
	(do_decl_instantiation): Do it here, instead.  Add checks for
	duplicate explicit instantiations, etc.  Tidy.
	(do_type_instantiation): Likewise.
	(instantiate_decl): Improve comments.  Complain about explicit
	instantiations where no definition is available.
	* cp-tree.h (ansi_null_node): Remove.
	* call.c (build_over_call): Warn about converting NULL to an
	arithmetic type.
	* cvt.c (build_expr_type_conversion): Likewise.  Use
	null_ptr_cst_p instead of expanding it inline.
	* decl.c (ansi_null_node): Remove.
	(init_decl_processing): Make null_node always have integral type.
	* except.c (build_throw): Warn about converting NULL to an
	arithmetic type.
	* lex.c (init_parse): Remove handling of ansi_null_node.
	* pt.c (type_unification_real): Don't convert NULL to void* type.
	* typeck.c (build_binary_op_nodefault): Fix NULL warnings.
	(convert_for_assignment): Warn about converting NULL to an
	arithmetic type.
	(convert_for_initialization): Likewise.

From-SVN: r21915
1998-08-23 12:47:24 +00:00
Mark Mitchell
898600d5fa cp-tree.h (ansi_null_node): New variable.
* cp-tree.h (ansi_null_node): New variable.
	* decl.c (ansi_null_node): New variable.
	(init_decl_processing): Initialize its type.
	* lex.c (init_parse): Initialize its value.  Use ansi_null_node
	for null_node in non-ANSI mode.
	* typeck.c (build_binary_op_nodefault): Use ansi_null_node in
	place of null_node to avoid spurious errors.

From-SVN: r21858
1998-08-19 15:14:58 +00:00
Jason Merrill
287662c58d init.c (build_offset_ref): Don't mess with error_mark_node.
* init.c (build_offset_ref): Don't mess with error_mark_node.
	* lex.c (do_scoped_id): Use cp_error.
	* rtti.c (get_tinfo_fn): Don't mess with the context for now.

From-SVN: r21792
1998-08-17 12:29:17 -04:00
Mark Mitchell
ed44da020e cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
* cp-tree.h (ENUM_TEMPLATE_INFO): New macro.
	(TYPE_TEMPLATE_INFO): Likewise.
	(SET_TYPE_TEMPLATE_INFO): Likewise.
	(ENUM_TI_TEMPLATE): Likewise.
	(ENUM_TI_ARGS): Likewise.
	(lookup_nested_type_by_name): Remove.
	* decl.c (maybe_process_template_type_declaration): Handle enums.
	(start_enum): Don't check for primary-template enum declarations
	here.
	(finish_enum): Clean up, document.  Make sure template enum
	constants get the correct type.
	(build_enumerator): Copy initializers for template enumerations,
	too.
	(grok_enum_decls): Document.
	* lex.c (do_identifier): Document use of LOOKUP_EXPR a bit
	better.  Build LOOKUP_EXPRs for local variables, even if they are
	TREE_PERMANENT.
	* pt.c (tsubst_enum): Remove field_chain parameter.
	(template_class_depth): Include the depth of surrounding function
	contexts.
	(push_template_decl): Check for primary-template enum declarations
	here.  Deal with enumeration templates.
	(lookup_template_class): Likewise.
	(for_each_template_parm): Likewise.
	(instantiate_class_template): Don't call tsubst_enum directly,
	call tsubst instead, to instantiate enums.  Deal with all
	field_chain issues here, not in tsubst_enum.
	(lookup_nested_type_by_name): Remove.
	(tsubst_aggr_type): Revise handling of enumeration types.
	(tsubst): Likewise.
	(tsubst_copy): Likewise.
	(tsubst_expr): Call tsubst, not tsubst_enum for TAG_DEFNs.

From-SVN: r21622
1998-08-06 16:58:43 +00:00
Mark Mitchell
672476cbdf cp-tree.def (LOOKUP_EXPR): Document.
* cp-tree.def (LOOKUP_EXPR): Document.  Remove second argument.
	* cp-tree.h (DECL_TI_TEMPLATE): Improve documentation.
	* lex.c (do_identifier): Don't use a second argument, or a type,
	when building LOOKUP_EXPRs.
	(do_identifier): Likewise.
	(do_scoped_id): Likewise.
	* method.c (hack_identifier): Improve error message.
	* pt.c (lookup_template_function): Don't needlessly call
	copy_to_permanent or build_min.
	(tsubst_copy): Remove #if 0'd code.  Tsubst into LOOKUP_EXPRs if
	necessary.
	(do_decl_instantiation): Improve error message.
	* tree.c (mapcar, case LOOKUP_EXPR): Don't be sorry; make a copy.
	(build_min): Copy the type to the permanent obstack, too.

From-SVN: r21544
1998-08-02 21:37:23 +00:00
Dave Brolley
ea6c114284 c-lex.c (yylex): Fix boundary conditions in character literal and string literal loops.
1998-07-27  Dave Brolley  <brolley@cygnus.com>
	* c-lex.c (yylex): Fix boundary conditions in character literal and
	string literal loops.

From-SVN: r21412
1998-07-27 08:37:16 -04:00
Dave Brolley
0d3ba7398c lex.c (mbchar.h): #include it.
1998-07-20  Dave Brolley  <brolley@cygnus.com>
	* lex.c (mbchar.h): #include it.
	(GET_ENVIRONMENT): New macro.
	(init_parse): Set character set based on LANG environment variable.
	(real_yylex): Handle multibyte characters in character literals.
	(real_yylex): Handle multibyte characters in string literals.

From-SVN: r21304
1998-07-20 09:36:43 -04:00
Jason Merrill
e13a41239f lex.c (do_identifier): Look for class value even if we don't have a global value.
* lex.c (do_identifier): Look for class value even if we don't
	have a global value.  Do implicit declaration if parsing is 2.
	* semantics.c (finish_call_expr): Pass 2 if we're doing Koenig
	lookup.

From-SVN: r21291
1998-07-19 19:47:18 -04:00
Jason Merrill
52c11ef6a3 decl.c (qualify_lookup): New fn.
* decl.c (qualify_lookup): New fn.
	(lookup_name_real): Use it.
	* decl2.c (add_using_namespace): When directly using a namespace
	that was indirect before, promote it.
	* cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES,
	LOOKUP_PREFER_BOTH, LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY,
	LOOKUP_QUALIFIERS_ONLY, LOOKUP_TEMPLATES_EXPECTED): New macros.
	* decl.c (select_decl): Replace two flag parameters by one.
	(unqualified_namespace_lookup): Likewise, pass flag.
	(lookup_flags): New function.
	(lookup_name_real): Compute flags, pass them.
	(lookup_namespace_name): Call with zero-flag.
	* decl2.c (ambiguous_decl): Add flag parameter, complain only
	according to flags.
	(lookup_using_namespace, qualified_lookup_using_namespace):
	Add flag parameter, pass them through.
	* lex.c (do_scoped_id): Call with zero-flag.

From-SVN: r21218
1998-07-16 12:38:26 -04:00
Jason Merrill
00dc635853 decl2.c (arg_assoc_class): Also look at template arguments, if any.
* decl2.c (arg_assoc_class): Also look at template arguments, if any.
	(arg_assoc): Handle error_mark_node and multiple levels of TREE_LIST.
	* lex.c (looking_for_typename): Don't initialize.
	* decl2.c (ambiguous_decl): Clarify error message.
	* decl.c (push_using_directive): Iterate over namespaces used
	indirectly.

From-SVN: r21205
1998-07-15 20:16:25 -04:00
Martin v. Löwis
a759e627d7 decl2.c (build_expr_from_tree): Change calls of do_identifier.
* decl2.c (build_expr_from_tree): Change calls of do_identifier.
	Do Koenig lookup in CALL_EXPR.
	(arg_assoc): Handle error_mark.
	* lex.c (is_global): New function.
	(do_identifier): Expect arguments for Koenig lookup.
	* parse.y (primary): Add rules for calls of unqualified function calls.
	(do_id): Change call of do_identifier.
	* pt.c (finish_stmt_expr): Likewise.
	* semantics.c (finish_id_expr): Likewise.
	(finish_call_expr): Add integer parameter to indicate
	argument-dependent lookup.

From-SVN: r21091
1998-07-12 12:55:29 -04:00
Jason Merrill
dc8263bc05 decl.c (xref_tag): Handle attributes between 'class' and name.
* decl.c (xref_tag): Handle attributes between 'class' and name.
	* parse.y (aggr): Likewise.
	* semantics.c (finish_class_definition): Likewise.
	* Makefile.in (EXPECTED): Adjust.
	* cp-tree.h: Declare flag_optional_diags and warn_multichar.
	* decl2.c: Define them.
	(lang_decode_option): Handle them.
	* lang-options.h: Add -foptional-diags.
	* class.c (finish_struct): Don't complain about multiple meanings of
	name if -fno-optional-diags.
	* decl.c (pushdecl_class_level): Likewise.
	* lex.c (real_yylex): Check warn_multichar.

From-SVN: r20994
1998-07-07 07:25:01 -04:00
Dave Brolley
297441fd87 Integrate cpplib into the C++ front end.
1998-06-10  Dave Brolley  <brolley@cygnus.com>
	* decl2.c (lang_decode_option): New argc/argv interface.
	* cp-tree.h (lang_decode_option): New argc/argv interface.
	* lang-specs.h (default_compilers): Only call cpp if -E, -M or -MM is
	specified for cpplib-enabled compilers.
	* lex.c (lang_init): Don't check_newline for cpplib.
	(init_parse): Don't initialize cpplib here.

From-SVN: r20408
1998-06-10 06:16:45 -04:00
Kaveh R. Ghazi
bcb8072947 Warning fixes:
* Makefile.in (decl2.o): Depend on dwarf2out.h and dwarfout.h.
        * cp-tree.h: Add prototype for `maybe_print_template_context' and
        `maybe_make_one_only'.
        * decl.c (auto_function): Remove unused variable `decl'.
        * decl2.c: Include dwarf2out.h and dwarfout.h.
        * lex.c: Remove redundant declarations of `set_float_handler' and
        `asm_out_file'.

From-SVN: r20349
1998-06-08 17:52:39 +00:00
Richard Henderson
9116eca2f8 lex.c (lang_init_options): New function.
* lex.c (lang_init_options): New function.
        (lang_init): Remove flag_exceptions == 2 hack.

From-SVN: r20275
1998-06-07 07:07:25 -07:00
Jason Merrill
b7698cf042 decl.c (start_decl): Always pedwarn about vacuously redeclaring a member.
* decl.c (start_decl): Always pedwarn about vacuously redeclaring
	a member.
	(start_function): Call check_default_args.
	* decl2.c (grokfield): Don't call check_default_args.
	(check_default_args): Use cp_error_at.
	* lex.c (do_pending_defargs): Call check_default_args.
	* call.c (build_scoped_method_call): Make sure get_type_value returns
	something before we try to use its TYPE_MAIN_VARIANT.

From-SVN: r20113
1998-05-27 21:44:29 -04:00
Dave Brolley
276ca6eaf8 lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
1998-05-26  Dave Brolley  <brolley@cygnus.com>
	* lex.c (parse_options,yy_cur,yy_lim): Add for cpplib.
	(init_parse): Initialize cpplib interface.
	* Makefile.in (CXX_OBJS): Make sure dependencies nenver end with an
	empty continuation.

From-SVN: r20059
1998-05-26 06:47:58 -04:00
Dave Brolley
d4dfe7d66c lex.c: (handle_sysv_pragma): FILE* parameter not used.
Thu May 21 11:54:44 1998  Dave Brolley  <brolley@cygnus.com>
	* lex.c: (handle_sysv_pragma): FILE* parameter not used.
	(cpp_reader,parse_in): Add for cpplib.
	(check_newline): Call handle_sysv_pragma with new interface.
	(check_newline): Call GET_DIRECTIVE_LINE, not get_directive_line.
	* input.c: (yy_cur,yy_lim,yy_get_token,GETC): Add for cpplib.
	(sub_getch): Call GETC for cpplib.
	* cp-tree.h: (get_directive_line): Different prototype for cpplib.
	(GET_DIRECTIVE_LINE): Macro wrapper for get_directive_line.
	* Makefile.in (CXX_OBJS): add @extra_cxx_objs@ for cpplib.

From-SVN: r19927
1998-05-21 04:56:16 -04:00
Kaveh R. Ghazi
7dee3f36c6 Warning patches:
* Makefile.in (lex.o): Depend on output.h.
        * call.c (add_function_candidate): Remove unused variable `cand'.
        (add_conv_candidate): Likewise.
        (build_builtin_candidate): Likewise.
        * cp-tree.h: Add prototype for `types_overlap_p'.
        * decl.c (signal_catch): Mark parameter `sig' with ATTRIBUTE_UNUSED.
        * decl2.c (merge_functions): Remove unused variables `tmp' and
        `tempn'.
        * error.c (expr_as_string): Mark parameter `v' with ATTRIBUTE_UNUSED.
        (code_as_string): Likewise.
        (language_as_string): Likewise.
        (parm_as_string): Likewise.
        (op_as_string): Likewise.
        (assop_as_string): Likewise.
        (cv_as_string): Likewise.
        * lex.c: Include output.h.
        * pt.c (type_unification): Cast first argument of `bzero' to a char*.
        * search.c (dfs_no_overlap_yet): Mark parameter `t' with
        ATTRIBUTE_UNUSED.
        * tinfo.cc (__class_type_info::dcast): Change the type of variable
        `i' from int to size_t.
        * typeck.c (language_lvalue_valid): Mark parameter `exp' with
        ATTRIBUTE_UNUSED.

From-SVN: r19707
1998-05-13 10:00:46 +00:00
Mark Mitchell
89ad74a33f lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
Mon May 11 07:16:30 1998  Mark Mitchell  <mmitchell@usa.net>
	* lex.c (yyprint): Remove TYPENAME_ELLIPSIS.
	* parse.h: Regenerated.
	* parse.c: Really regenerated.

From-SVN: r19662
1998-05-11 07:18:46 +00:00
Martin v. Löwis
2c73f9f57a massive namespace patch
From-SVN: r19631
1998-05-07 22:06:26 -04:00
Kaveh R. Ghazi
faa25e97f1 error.c: Convert to using ctype macros defined in system.h.
* error.c: Convert to using ctype macros defined in system.h.
        * method.c: Likewise.
        * xref.c: Likewise.
        * lex.c: Likewise.  Also remove redundant system header stuff.

From-SVN: r19577
1998-05-06 11:41:58 +00:00
Robert Lipe
54f92bfbb1 call.c, [...]: Add include of toplev.h.
Wed May  6 06:36:41 1998  Robert Lipe  <robertl@dgii.com>
        * cp/call.c, cp/class.c, cp/decl.c, cp/decl2.c,
        cp/errfn.c, cp/error.c, cp/except.c, cp/expr.c,
        cp/friend.c, cp/init.c, cp/lex.c, cp/method.c,
        cp/pt.c, cp/repo.c, cp/rtti.c, cp/search.c,
        cp/semantics.c, cp/sig.c, cp/tree.c, cp/typeck.c,
        cp/typeck2.c, cp/xref.c: Add include of toplev.h.

From-SVN: r19565
1998-05-06 05:01:35 +00:00
Jeffrey A Law
69ac77ce5e tree.c (avoid_overlap): Add prototype.
* tree.c (avoid_overlap): Add prototype.
        * spew.c (num_tokens): Add prototype.
        (nth_noken, add_token, consume_token, debug_yychar): Likewise.
        * search.c (dfs_check_overlap): Add prototype.
        (dfs_no_overlap_yet): Likewise.
        * pt.c (original_template): Add prototype.
        (inline_needs_template_parms): Likewise.
        (push_inline_template_parms_recursive): Likewise.
        (retrieve_specialization, register_specialization): Likewise.
        (print_candidates, reduce_template_parm_level): Likewise.
        (build_template_decl, mark_template_parm): Likewise.
        (tsubst_friend_function, get_bindings_real): Likewise.
        * method.c (start_squangling): Add prototype.
        (end_squangling, check_ktype, issue_ktype): Likewise.
        (build_overloaded_scope_ref, check_btype): Likewise.
        (build_mangled_template_parm_index): Likewise.
        * lex.c (init_cpp_parse): Add prototype.
        (handle_cp_pragma, handle_sysv_pragma): Likewise.
        (reduce_cmp, token_cmp): Likewise.
        * except.c (call_eh_info): Add prototype.
        (push_eh_info, get_eh_info, get_eh_value, get_eh_type): Likewise.
        (get_eh_caught, get_eh_handlers, do_pop_exception): Likewise.
        * decl2.c (is_namespace_ancestor): Add prototype.
        (namespace_ancestor, add_using_namespace): Likewise.
        (ambiguous_decl): Likewise.
        * decl.c (indent): Add prototype.
        * call.c (add_template_candidate_real): Add prototype.

From-SVN: r19259
1998-04-17 02:05:26 -06:00
Dave Brolley
a755ad1c04 lex.c (init_parse): Now returns char* containing the filename.
Wed Apr 15 15:34:44 1998  Dave Brolley  <brolley@cygnus.com>
	* lex.c (init_parse): Now returns char* containing the filename.

From-SVN: r19228
1998-04-15 08:35:16 -04:00
Benjamin Kosnik
a177473334 cp-tree.h (start_decl): Update prototype.
d
Thu Apr  9 22:16:57 1998  Per Bothner  <bothner@cygnus.com>
        * cp-tree.h (start_decl):  Update prototype.
        * decl.c (start_decl):  Like the C version, new parameters
        for the attributes.  Call cplus_decl_attributes here,
        (pushdecl):  Like C version, do build_type_copy if TYPE_DECL,
        (grokdeclarator):  Pass NULL for new start_decl arguments.
        * pt.c (tsubst_expr):  Likewise.
        * parse.y:  Merge cplus_decl_attribute calls into start_decl calls.
	* typeck.c (common_type): Check TYPE_MAIN_VARIANT.
	* lex.c (build_lang_decl): Add lang_name_java.
	* class.c (push_lang_context): Add lang_name_java.
	* method.c (build_mangled_name): Check for is_java_type.
Thu Apr  9 22:16:57 1998  Benjamin Kosnik  <bkoz@loony.cygnus.com>
	* decl.c (grokdeclarator): Check TYPE_MAIN_VARIANT.
	* call.c (build_scoped_method_call): Check for TREE_CODE for
	VOID_TYPE instead of type ==  void_type_node.
	(build_method_call): Ditto.
	* decl.c (lookup_name_real): Ditto.
	(grokdeclarator): Ditto.
	(start_decl): Ditto.
	(grokparms): Ditto.
	(start_function): Ditto.
	(finish_function): Ditto.
	(start_method): Ditto.
also fixes g++/15415

From-SVN: r19071
1998-04-09 20:36:47 +00:00
Dave Brolley
2b2a353188 lex.c (finput): New variable.
* lex.c (finput): New variable.
        (init_cpp_parse):  Renamed from init_parse.
        (init_parse): Handle !USE_CPPLIB.  Call init_cpp_parse when finished.
        (finish_parse): New function.
        * cp-tree.h (init_lex, init_parse): Remove declarations.

From-SVN: r19065
1998-04-08 17:30:28 -06:00
Jason Merrill
0b41abe668 cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
* cp-tree.h: Lose CLASSTYPE_VBASE_SIZE, some unused stuff.
	* decl.c, decl2.c, pt.c, ptree.c, lex.c: Likewise.
	* class.c (duplicate_tag_error): Likewise.
	(finish_struct_1): Set CLASSTYPE_SIZE, CLASSTYPE_MODE, CLASSTYPE_ALIGN.
	* tree.c (layout_vbasetypes): Update from layout_record, remove
	var_size support, use CLASSTYPE_SIZE instead of CLASSTYPE_VBASE_SIZE.
	(layout_basetypes): Likewise.

From-SVN: r18965
1998-04-02 12:05:40 -05:00
Jeffrey A Law
8d052bc70c call.c: Include system.h.
* call.c: Include system.h.  Remove includes, declarations and
        defines provided by system.h.
        * class.c, cvt.c, decl.c, decl2.c, errfn.c error.c: Likewise.
        * except.c, expr.c friend.c, g++spec.c, init.c, input.c: Likewise.
        * lex.c, parse.y, pt.c, ptree.c repo.c rtti.c, search.c: Likewise.
        * semantics.c, sig.c, spew.c, tree.c, typeck.c: Likewise.
        * typeck2.c, xref.c: Likewise.
        * Makefile.in: Dependencies updated as appropriate.
        * Make-lang.in: Likewise.
system.h cutover from the cp subdir

From-SVN: r18917
1998-03-31 06:25:46 -07:00
Jeffrey A Law
6d83a9775d * lex.c (yynextch): Delete dead function.
From-SVN: r18900
1998-03-29 05:37:18 -07:00
Jeffrey A Law
430bb96baa class.c (alter_access): Remove unused label.
* class.c (alter_access): Remove unused label.  Add braces
        around empty else clause.
        * lex.c (yyprint): Fix argument to printf.

From-SVN: r18887
1998-03-28 16:49:35 -07:00
Mark Mitchell
ff29fd003b Commit files missed with last commit.
From-SVN: r18796
1998-03-24 10:34:35 +00:00
Jason Merrill
22531e51c3 class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
* class.c (pushclass): Only use the mi_matrix stuff #ifdef MI_MATRIX.
	* search.c: Likewise.
	* lex.c (do_pending_defargs): Only call
	maybe_{begin,end}_member_template_processing for FUNCTION_DECLs.
	* parse.y (initdcl0_innards): Move maybeasm back into initdcl0 et al.

From-SVN: r18637
1998-03-16 19:03:43 -05:00
Jason Merrill
cae40af6ef cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
* cp-tree.h (TEMPLATE_PARMS_FOR_INLINE): New macro.
	* pt.c (inline_needs_template_parms): New fn.
	(original_template): New fn.
	(push_inline_template_parms_recursive): New fn.
	(maybe_begin_member_template_processing): Use them.
	(maybe_end_member_template_processing): Likewise.
	(is_member_or_friend_template): Rename to is_member_template.
	Member functions of local classes are never member templates.
	* lex.c (do_identifier): Handle TEMPLATE_DECL that was
	added in the class scope to catch redefinition error.
	* pt.c (reduce_template_parm_level): Also copy
	the DECL_TEMPLATE_PARMS field.

From-SVN: r18595
1998-03-15 14:53:08 -05:00
Andreas Schwab
68ff1582a9 lex.c (do_scoped_id): Fix parenthesizing.
8
        * lex.c (do_scoped_id): Fix parenthesizing.

From-SVN: r18408
1998-03-04 14:24:06 -07:00
Michael Tiemann
5427d758dd rtti.c (get_tinfo_fn_dynamic): If this function is called an FLAG_RTTI is unset...
* rtti.c (get_tinfo_fn_dynamic): If this function is called an
	FLAG_RTTI is unset, initialize type info machinery and continue
	with FLAG_RTTI enabled.
	(get_typeid): Ditto.

From-SVN: r18401
1998-03-04 07:13:02 -05:00
Jason Merrill
277294d73b call.c, [...]: Remove support for -fno-ansi-overloading and overloading METHOD_CALL_EXPR.
* call.c, class.c, cp-tree.h, cvt.c, decl.c, init.c, lex.c,
	method.c, pt.c, ptree.c, typeck.c: Remove support for
	-fno-ansi-overloading and overloading METHOD_CALL_EXPR.
	* class.h: Remove.
	* Makefile.in: Adjust.

From-SVN: r18384
1998-03-02 22:24:44 -05:00
Jason Merrill
11686454d6 parse.y (nested_name_specifier): Use explicit_template_type.
* parse.y (nested_name_specifier): Use explicit_template_type.
	(typename_sub): Allow a template_type, an explicit_template_type,
	or an implicit template type at the end.
	* lex.c (yyprint): Handle a PTYPENAME being a TEMPLATE_DECL.
	* decl.c (make_typename_type): Handle template-id where the name
	is a TEMPLATE_DECL.
	* call.c (build_scoped_method_call): Handle member template
	destructor call.
	* pt.c (tsubst_copy, METHOD_CALL_EXPR): Don't assume a member
	destructor is represented by the type.

From-SVN: r18303
1998-02-28 10:32:02 -05:00
Jason Merrill
30394414d9 Partial implementation of namespaces.
* decl.c (push_namespace): Handle redeclaration error.
	* cp-tree.h (IDENTIFIER_NAMESPACE_VALUE): New macro.
	(IDENTIFIER_NAMESPACE_BINDINGS): New macro.
	(NAMESPACE_BINDING): New macro.
	(IDENTIFIER_GLOBAL_VALUE): Use NAMESPACE_BINDING.
	* *.c: Use them.
	* pt.c (push_template_decl): Use innermost_args.
	* decl.c (get_unique_name): Tweak from earlier in the name.
	* cp-tree.def: Add CPLUS_BINDING node.
	* cp-tree.h (tree_binding): new struct
	(BINDING_SCOPE, BINDING_VALUE): new macros
	(current_namespace, global_namespace): declare extern
	(struct lang_decl_flags): new field in_namespace
	(DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): new macros
	(DECL_NAMESPACE, SET_DECL_NAMESPACE): new macros
	(TREE_INDIRECT_USING): new macro
	* decl2.c (current_namespace, global_namespace): Declare.  The
	value is a NAMESPACE_DECL now, not a TREE_LIST.
	(is_namespace_ancestor, namespace_ancestor):new static functions.
	(add_using_namespace, ambiguous_decl): likewise.
	(lookup_using_namespace): new support function for lookup_name.
	(qualified_lookup_using_namespace): new support function for
	do_scoped_id and lookup_namespace_name
	(get_namespace_id): mark as obsolete.
	(current_namespace_id): Likewise.
	(do_namespace_alias): Implement.
	(do_using_directive): Implement as call to add_using_namespace.
	* decl.c (binding_for_name): new function.
	(push_namespace, pop_namespace): implement.
	(push_decl): don't install a FUNCTION_DECL in the global branch.
	(lookup_namespace_name): implement using qualified lookup.
	(lookup_name_real): For global scoping, lookup in
	global_namespace. For namespace scoping, lookup in given
	namespace. For unscoped lookup, iterate over namespace,
	considering using directives.
	(init_decl_processing): initialize global_namespace.
	(grokvardecl): Build assembler name as static name for globals.
	(grokdeclarator): Remove old namespace mangling.
	(xref_tag): When installing a global binding for the
	tag, make sure we have an identifier.
	* method.c (build_overload_nested_name): mangle namespaces.
	(build_qualified_name): Likewise.
	(build_decl_overload_real): Likewise.
	* lex.c (build_lang_decl): set namespace for new declaration to
	current_namespace.
	(do_scoped_id): find global names in global or current
	namespace, or using qualified namespace lookup, depending on
	context.
	* init.c (build_member_call): When scope is namespace, use
	build_x_function_call instead.
	(build_offset_ref): When scope is namespace, collapse processing
	to lookup_namespace_name instead.
	* error.c (dump_decl): Support NAMESPACE_DECL.
	* decl.c (pushdecl): Bind globals to current namespace.
	(push_overloaded_decl): Likewise.
	(lookup_tag): Likewise.
	(lookup_name_current_level): Likewise.
	(xref_tag): Likewise.
	(start_function): Likewise.
	* lex.c (do_identifier): Likewise.
	(identifier_typedecl_value): Likewise.
	(real_yylex): Likewise.
	* method.c (do_inline_function_hair): Likewise.
	* parse.y (unscoped): Likewise.
	* pt.c (check_explicit_specialization): Likewise.
	(lookup_template_class): Likewise.
	* rtti.c (call_void_fn): Likewise.
	* sig.c (build_sigtable): Likewise.
	* ptree.c (lang_print_xnode): New function.

From-SVN: r18227
1998-02-24 19:49:51 -05:00
Jason Merrill
f84b4be9a7 Support for friend templates.
* typeck.c (build_x_function_call): Handle static member function
	templates like non-templates.  Handle friend templates like normal
	function templates.
	* pt.c (tsubst, *_PARM): Don't use orig_level.
	(get_bindings): Don't call add_to_template_args.
	(instantiate_template): Likewise.
	(tsubst, FUNCTION_DECL): Call add_to_template_args as appropriate.
	* ptree.c (print_lang_type): Print index/level for template parms.
	* Make-lang.in (cc1plus): Note that cc1plus depends on
	cp/cp-tree.h and cp/cp-tree.def.
	* cp-tree.def (TEMPLATE_CONST_PARM): Remove.
	(TEMPLATE_PARM_INDEX): New tree code, used to indicate a
	position in a template parameter list.
	* cp-tree.h (template_parm_index): New structure, used as the tree
	structure for a TEMPLATE_PARM_INDEX.
	(TEMPLATE_PARM_IDX): New macro.
	(TEMPLATE_PARM_LEVEL): Likewise.
	(TEMPLATE_PARM_DESCENDANTS): Likewise.
	(TEMPLATE_PARM_ORIG_LEVEL): Likewise.
	(TEMPLATE_PARM_DECL): Likewise.
	(TEMPLATE_TYPE_PARM_INDEX): Likewise.
	(TEMPLATE_TYPE_ORIG_LEVEL): Likewise.
	(TEMPLATE_TYPE_DECL): Likewise.
	(TEMPLATE_CONST_IDX): Remove.
	(TEMPLATE_CONST_LEVEL): Likewise.
	(TEMPLATE_CONST_SET_INFO): Likewise.
	(TEMPLATE_TYPE_SET_INFO): Likewise.
	(TEMPLATE_TYPE_IDX): Redefine in terms of TEMPLATE_PARM_INDEX
	node.
	(TEMPLATE_TYPE_LEVEL): Likewise.
	* decl.c (decls_match): Call comp_template_parms, rather than
	expanding it inline.
	(duplicate_decls): If two template declarations are being merged,
	then their TEMPLATE_INFOs should be merged as well.
	(grokfndecl): Save template-id information when declaring a friend
	with explicit template arguments.  Pass arguments to
	check_explicit_specialization via correct convention; at some
	point check_explicit_specialization changed, but these call-sites
	did not.
	(grokdeclarator): Tidy up slightly.
	* decl2.c (check_classfn): Tidy up slightly.  Don't assume that
	two template functions with the same DECL_ASSEMBLER_NAME the same,
	since the names are not yet mangled.
	* error.c (dump_decl): Use TEMPLATE_PARM_INDEX instead of
	TEMPLATE_CONST_PARM.
	(dump_expr): Likewise.  Use the TEMPLATE_PARM_DECL to get at the
	decl for a non-type parameter, rather than printing `<tparm ...>'.
	* friend.c (is_friend): Handle TEMPLATE_DECL friends.
	(do_friend): Deal with template friends.
	* lex.c (do_pending_inlines): Call
	maybe_begin_member_template_processing, rather than
	conditionally calling begin_member_template_processing.
	(process_next_inline): Likewise.  Call
	maybe_end_member_template_processing, rather than
	conditionally calling end_member_template_processing.
	(do_pending_defargs): Likewise.
	(do_identifier): Use TEMPLATE_PARM_INDEX instead of
	TEMPLATE_CONST_PARM.
	* method.c (build_mangled_template_parm_index): New function.
	(build_overload_value): Use it.
	(build_overload_name): Likewise.
	* pt.c (finish_member_template_decl): Allow friend declarations.
	(template_class_depth): New function.
	(is_member_template): Rename, and modify, to become...
	(is_member_or_friend_template): New function.
	(end_member_template_processing): Rename, and modify, to become...
	(maybe_end_member_template_processing).
	(build_template_parm_index): New function.
	(reduce_template_parm_level): New function.
	(process_template_parm): Modify to use build_template_parm_index.
	(current_template_args): Change name to current_template_parms.
	(push_template_decl): Deal with friend templates.
	(uses_template_parms): Use TEMPLATE_PARM_INDEX instead of
	TEMPLATE_CONST_PARM.
	(tsubst_friend_function): New function.
	(instantiate_class_template): Generate the DECL_FRIENDLIST
	for a new instantiation by using tsubst_friend_function rather
	than just tsubst.
	(tsubst): Don't tsubst into a type which is a TEMPLATE_DECL.
	Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM, and the
	appropriate new macros.  Use reduce_template_parm_level to
	generate lower-level template parameters.  Handle tsubst'ing into
	TEMPLATE_DECLS that declare TEMPLATE_TEMPLATE_PARMS.  Don't forget
	to tsubst the DECL_CONTEXT and DECL_CLASS_CONTEXT of newly created
	templates.  Similarly for the template parameters for a new
	template.
	(tsubst_copy): Tidy up slightly.  Use TEMPLATE_PARM_INDEX instead
	of TEMPLATE_CONST_PARM.  Handle TYPE_DECLs by tsubsting into them.
	(unify): Use TEMPLATE_PARM_INDEX instead of TEMPLATE_CONST_PARM.
	(get_bindings): Call add_to_template_args if necessary.
	(instantiate_decl): Handle instantiations of friend templates.
	* search.c (lookup_field_1): Don't treat the TYPE_FIELDS of a
	TEMPLATE_TYPE_PARM as a list of fields; it's not!
	* spew.c (yylex): Do a little manual constant propogation to
	clarify the code.

From-SVN: r18198
1998-02-22 22:17:44 -05:00
Mumit Khan
e95d117b78 * lex.c (file_name_nondirectory): Also check for '/'.
From-SVN: r17634
1998-02-03 14:57:57 -05:00
Kaveh R. Ghazi
a703fb388b Various fixes for -Wall problems from Kaveh. See ChangeLog for details.
From-SVN: r17586
1998-02-01 17:04:13 -07:00
Mark Mitchell
e1467ff26b call.c (add_template_candidate_real): New function.
* call.c (add_template_candidate_real): New function.
	(add_template_candidate): Use it.
	(add_template_conv_candidate): Likewise.
	(joust): Pass extra argument to more_specialized.
	* class.c (instantiate_type): Handle a single FUNCTION_DECL.
	(is_local_class): Remove.
	(finish_struct): Check TI_PENDING_SPECIALIZATION_FLAG.
	* cp-tree.h (is_local_class): Remove.
	(perform_array_to_pointer_conversion): Likewise.
	(finish_member_template_decl): Add.
	(check_explicit_specialization): Return a tree, not an int.
	(more_specialized): Take additional argument.
	(get_bindings): Likewise.
	(TI_PENDING_SPECIALIZATION_FLAG): New macro.
	* cvt.c (perform_qualification_conversions): Use comp_ptr_ttypes.
	(perform_array_to_pointer_conversion): Remove.
	* decl.c (saved_scope): Add processing_specialization,
	processing_explicit_instantiation fields.
	(maybe_push_to_top_level): Save them.
	(pop_from_top_level): Restore them.
	(grokfndecl): Use new return value from
	check_explicit_specialization.
	(start_decl): Don't check flag_guiding_decls before pushing
	decls.
	(cp_finish_decl): Remove previous (bogus) change.
	(grok_declarator): Use decl_function_context rather than
	is_local_class.
	* decl2.c (finish_file): Pass extra argument to get_bindings.
	(build_expr_from_tree): Let build_x_component_ref check
	validity of arguments rather than doing it here.
	* lex.c (cons_up_default_function): Remove code fooling with
	processing_specialization, processing_explicit_instantiation
	flags, as that is now done in {maybe_push_top,pop_from}_top_level.
	* method.c (build_overload_identifier): Mangle local classes in
	template functions correctly.
	* parse.y (finish_member_template_decl): Move to pt.c.
	* pt.c (finish_member_template_decl): Moved here from parse.y.
	(print_candidates): New function.
	(determine_specialization): Change interface.  Properly look for
	most specialized versions of template candidates.
	(check_explicit_specialization): Fully process explicit
	instantiations.
	(push_template_decl): Avoid looking at CLASSTYPE fields in
	FUNCTION_DECLS.
	(determine_overloaded_function): Remove.
	(convert_nontype_argument): Change name from
	convert_nontype_parameter.  Use determine_overloaded_function
	instead of instantiate_type.
	(mangle_class_name_for_template): Handle type contexts as well as
	function contexts.
	(classtype_mangled_name): Likewise.
	(lookup_template_class): Likewise.
	(tsubst): Likewise.
	(more_specialized): Take explict template arguments as a
	parameter.
	(most_specialized): Likewise.
	(get_bindings): Likewise.  Check that return types match before
	proclaiming a function a match.
	(do_decl_instantiation): Remove code searching for function to
	instantiate; that is now done in check_explicit_specialization.
	(add_maybe_template): Pass extra argument to get_bindings.
	* tree.c (really_overloaded_fn): Use is_overloaded_fn to simplify
	implementation.
	* typeck.c (build_component_ref): Check for invalid arguments.

From-SVN: r17512
1998-01-27 15:47:56 -05:00
Mumit Khan
ab535daca9 lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
* lex.c (DIR_SEPARATOR): Define to be '/' if not already defined.
	(file_name_nondirectory): Use.

From-SVN: r17461
1998-01-23 13:35:06 -05:00
Mark Mitchell
7565064686 decl.c (start_decl): Don't allow duplicate definitions of static data members.
* decl.c (start_decl): Don't allow duplicate definitions of static
	data members.
	* call.c (build_user_type_conversion_1): Handle user-defined
	template conversion operators correctly.
	* decl2.c (build_expr_from_tree): Issue an error message if the
	object in a COMPONENT_REF is a TEMPLATE_DECL.
	* typeck.c (incomplete_type_error): Handle TEMPLATE_TYPE_PARMs.
	* class.c (is_local_class): New function.
	* cp-tree.h (is_local_class): Declare it.
	(last_tree): Likewise.
	(begin_tree): Likewise.
	(end_tree): Likewise.
	(lookup_template_class): Change prototype.
	* decl.c (cp_finish_decl): Check for NULL where necesary.
	Consider FUNCTION_DECLS to declare objects with top-level binding,
	when calling make_decl_rtl.
	(grokdeclarator): Give members of local classes internal linkage.
	(start_function): Remove declaration of last_tree.
	(finish_function): Set flag_keep_inline_functions around call to
	rest_of_compilation if we are processing a member function in a
	local class.
	(start_method): Call push_template_decl for member functions of
	local classes in template functions.
	* decl2.c (import_export_decl): Don't give external linkage to
	instantiations of templates with internal linkage.
	* parse.y (last_tree): Remove declaration.
	(template_type): Pass extra parameter to lookup_template_class.
	(self_template_type): Likewise.
	(structsp): Move call to reset_specialization into left_curly.
	(left_curly): Call reset_specialization, and begin_tree.
	* pt.c (saved_trees): New variable.
	(mangle_class_name_for_template): Change prototype.  Use
	additional function context to name local classes in templates
	correctly.
	(classtype_mangled_name): Pass the context.
	(push_template_decl): Handle local classes and templates, and
	member functions for such classes.
	(convert_nontype_parameter): Fix handling of pointer-to-member
	constants.
	(lookup_template_class): Handle local classes in templates.
	(tsubst): Likewise.  Don't assume that template instantiations
	have external linkage; pay attention to the template declaration.
	(mark_decl_instantiated): Likewise.
	(begin_tree): New function.
	(end_tree): Likewise.
	* decl.c (xref_basetypes): Don't call complete_type for basetypes
	that involve template parameters; that can lead to infinite
	recursion unnecessarily.
	* pt.c (register_specialization): Do not register specializations
	that aren't ready to be registered yet.
	(check_explicit_specialization): Handle explicit specialization of
	constructors and destructors.
	(build_template_decl): New function.
	(push_template_delc): Handle out-of-class specializations of
	member templates.
        * pt.c (check_explicit_specialization): Set up the template
        information before registering the specialization.
        (coerce_template_parms): Fix thinko.
        (tsubst): Handle specializations of member templates correctly.
	* class.c (finish_struct_methods): Remove calls to
	check_explicit_specialization from here.
	(finish_struct): And insert them here.
	* cp-tree.h (perform_qualification_conversions): New function.
	(perform_array_to_pointer_conversion): Likewise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(determine_specialization): Renamed from
	determine_explicit_specialization.
	(comp_template_parms): New function.
	(processing_explicit_instantiation): New variable.
	* cvt.c (perform_qualification_conversions): New function.
	(perform_array_to_pointer_conversion): Likewise.
	* decl.c (duplicate_decls): Don't consider template functions
	alike unless they have the same parameters.  Refine handling of
	instantiation/specialization mismatches.
	(start_decl): Don't call pushdecl for template specializations,
	since they don't affect overloading.
	(start_function): Likewise
	(grokfndecl): Call check_explicit_specialization a little later.
	Don't call duplicate_decls for memberm template specializations.
	(grokdeclarator): Don't update template_count for classes that are
	themselves specializations.  Remove use of `2' as parameter to
	grokfndecl since that value isn't used.
	* lex.c (cons_up_default_function): Save and restore
	processing_explicit_instantiation around calls to grokfield.
	* parse.y (finish_member_template_decl): New function.
	(component_decl_1): Use it.
	(fn.def2): Likewise.
	(template_arg_list_opt): New nonterminal.
	(template_type): Use it.
	(self_template_type): Likewise.
	(template_id): Likewise.
	(object_template_id): Likewise.
	(notype_template_declarator): Likwise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(explicit_instantiation): Use them.
	* pt.c (coerce_template_parms): Add parameters.
	(processing_explicit_instantiation): New variable.
	(convert_nontype_parameter): New function.
	(determine_overloaded_function): Likewise.
	(begin_explicit_instantiation): Likewise.
	(end_explicit_instantiation): Likewise.
	(retrieve_specialization): Likewise.
	(register_specialization): Likewise.
	(processing_explicit_specialization): Removed.
	(determine_specialization): Handle specializations of member
	functions of template class instantiations.
	(check_explicit_specialization): Refine to conform to standard.
	(comp_template_parms): New function.
	(coerce_template_parms): Call convert_nontype_parameter.
	(tsubst): Refine handling of member templates.  Use
	register_specialization.
	(instantiate_template): Use retrieve_specialization.
	(do_decl_instantiation): Likewise.
	(instantiate_decl): Likewise.
	(type_unification): Improve handling of explict template
	arguments.
	* tree.c (mapcar): Return error_mark_node, rather than aborting,
	on VAR_DECLS, FUNCTION_DECLS, and CONST_DECLS.
	* typeck.c (build_unary_op): Call determine_specialization, rather
	than determine_explicit_specialization.

From-SVN: r17426
1998-01-19 17:41:40 -05:00
John F. Carr
0a6969ad7c tree.c, tree.h: Change tree_code_type, tree_code_length, and tree_code_name from pointers to arrays.
* tree.c, tree.h: Change tree_code_type, tree_code_length, and
        tree_code_name from pointers to arrays.
        * tree.c: Remove standard_tree_code_* variables, no longer used.
        * print-tree.c: Remove declaration of tree_code_name.

        * cp/lex.c (init_lex): Update for tree_code_* changes.
        * objc/objc-act.c (init_objc): Likewise.

        * tree.def, cp/cp-tree.def, objc/objc-tree.def: Update for tree_code
        changes.

From-SVN: r17061
1997-12-11 23:49:29 -07:00
Jeff Law
956d69504d Merge from gcc-2.8
From-SVN: r16987
1997-12-06 17:31:01 -07:00
Doug Evans
30c317f5da lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
* lex.c (MULTIBYTE_CHARS): #undef if cross compiling.
	(real_yylex): Record wide strings using target endianness, not host.

From-SVN: r16316
1997-11-04 21:57:40 +00:00
Brendan Kehoe
b2bb2710f3 lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
* lex.c (FILE_NAME_NONDIRECTORY): Delete macro.
        (file_name_nondirectory): New function, doing the same as the macro.
        (set_typedecl_interface_info): Use it instead of the macro.
        (check_newline): Likewise.
        (handle_cp_pragma): Likewise.

        * repo.c (get_base_filename): Cast result of rindex to char*.
        (open_repo_file): Likewise.
        * xref.c (open_xref_file): Likewise.
        * error.c (dump_char): Make its arg int, not char.

bring over the changes that went in yesterday to fix irix6 native cc
build problems

From-SVN: r16261
1997-11-01 14:50:18 -05:00
Jeffrey A Law
56bf1fd97a toplev.c (flag_exceptions): Default value is 2.
* toplev.c (flag_exceptions): Default value is 2.
        (compile_file): If flag_exceptions still has the value 2, then
        set it to 0.

        * lex.c (lang_init): Enable flag_exceptions by default if no
        command line switch was specified.
Gross hacks to allow front-ends to override -fexceptions.

From-SVN: r16152
1997-10-22 19:29:14 -06:00
Mark Mitchell
92eca6404c decl.c (duplicate_decls): Handle template specializations correctly.
Mon Oct 20 11:44:20 1997  Mark Mitchell  <mmitchell@usa.net>

	* decl.c (duplicate_decls): Handle template specializations
	correctly.
	* error.c (dump_function_name): Fix printing of specializations of
	member functions that are not member templates.
	* cp-tree.h (processing_specialization): Make global.
	* pt.c (processing_specialization): Likewise.
	* lex.c (cons_up_default_function): Save and restore
	processing_specialization to avoid confusion.

From-SVN: r16101
1997-10-20 14:46:24 -04:00
Jason Merrill
e66d884e7b cp-tree.h (scratchalloc, [...]): Define as macros for now.
* cp-tree.h (scratchalloc, build_scratch_list, make_scratch_vec,
	scratch_tree_cons): Define as macros for now.
	* call.c, class.c, cvt.c, decl.c, decl2.c, except.c, expr.c, init.c,
	lex.c, method.c, parse.y, pt.c, rtti.c, search.c, tree.c, typeck.c,
	typeck2.c: Use them and the expression_obstack variants.

From-SVN: r15900
1997-10-14 14:59:03 -04:00
Brendan Kehoe
a3f44a1337 lex.c (real_yylex): Clean up the code to fully behave the way the c-lex.c parser does for complex...
* lex.c (real_yylex): Clean up the code to fully behave the way
	the c-lex.c parser does for complex and real numbers.

From-SVN: r15826
1997-10-01 12:56:13 -04:00
Paul Eggert
4f6140be61 lex.c (real_yylex): Treat $' just like _'...
1997-09-29  Paul Eggert  <eggert@twinsun.com>

	* lex.c (real_yylex): Treat `$' just like `_', except issue a
	diagnostic if !dollars_in_ident or if pedantic.

	* lang-specs.h (@c++): -ansi no longer implies -$.

	* decl2.c (lang_decode_option):
	-traditional and -ansi now do not mess with
	dollars_in_ident.

From-SVN: r15802
1997-09-30 01:32:19 -04:00
Jason Merrill
386b8a85a6 [multiple changes]
Sat Sep 27 16:22:48 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* friend.c (do_friend): Disable injection for all template-derived
 	decls.
	* decl2.c (lang_decode_option): Handle -fguiding-decls.
	* parse.y (notype_template_declarator): New nonterminal.
	(direct_notype_declarator): Use it.
	(complex_direct_notype_declarator): Likewise.
	(object_template_id): Accept any kind of identifier after TEMPLATE.
	(notype_qualified_id): Don't add template declarators here.

Sat Sep 27 16:21:58 1997  Mark Mitchell  <mmitchell@usa.net>

        * call.c (add_template_candidate): Add explicit_targs parameter.
        (build_scoped_method_call): Use it.
        (build_overload_call_real): Likewise.
        (build_user_type_conversion_1): Likewise.
        (build_new_function_call): Likewise.
        (build_object_call): Likewise.
        (build_new_op): Likewise.
        (build_new_method_call): Likewise.
        (build_new_function_call): Handle TEMPLATE_ID_EXPR.
        (build_new_method_call): Likewise.

        * class.c (finish_struct_methods): Add specialization pass to
        determine which methods were specializing which other methods.
        (instantiate_type): Handle TEMPLATE_ID_EXPR.

        * cp-tree.def (TEMPLATE_ID_EXPR): New tree code.

        * cp-tree.h (name_mangling_version): New variable.
	(flag_guiding_decls): Likewise.
        (build_template_decl_overload): New function.
        (begin_specialization): Likewise.
        (reset_specialization): Likewise.
        (end_specialization): Likewise.
        (determine_explicit_specialization): Likewise.
        (check_explicit_specialization): Likewise.
        (lookup_template_function): Likewise.
        (fn_type_unification): Add explicit_targs parameter.
        (type_unification): Likewise.

        * decl.c (duplicate_decls): Add smarts for explicit
        specializations.
        (grokdeclarator): Handle TEMPLATE_ID_EXPR, and function
        specializations.
        (grokfndecl): Call check_explicit_specialization.

        * decl2.c (lang_decode_option): Handle -fname-mangling-version.
        (build_expr_from_tree): Handle TEMPLATE_ID_EXPR.
        (check_classfn): Handle specializations.

        * error.c (dump_function_name): Print specialization arguments.

	* friend.c (do_friend): Don't call pushdecl for template
        instantiations.

        * init.c (build_member_call): Handle TEMPLATE_ID_EXPR.

        * lang-options.h: Add -fname-mangling-version, -fguiding-decls,
	and -fno-guiding-decls.

        * lex.c (identifier_type): Return PFUNCNAME for template function
        names.

        * method.c (build_decl_overload_real): New function.
        (build_template_parm_names): New function.
        (build_overload_identifier): Use it.
        (build_underscore_int): New function.
        (build_overload_int): Use it.  Add levels for template
        parameters.
        (build_overload_name): Likewise.  Also, handle TYPENAME_TYPEs.
        (build_overload_nested_names): Handle template type parameters.
        (build_template_decl_overload): New function.

        * parse.y (YYSTYPE): New ntype member.
        (nested_name_specifier): Use it.
        (nested_name_specifier_1): Likewise.
        (PFUNCNAME): New token.
        (template_id, object_template_id): New non-terminals.
        (template_parm_list): Note specializations.
        (template_def): Likewise.
        (structsp): Likewise.
        (fn.def2): Handle member template specializations.
        (component_decl_1): Likewise.
        (direct_notype_declarator): Handle template-ids.
        (component_decl_1): Likewise.
        (direct_notype_declarator): Handle template-ids.
        (primary): Handle TEMPLATE_ID_EXPR, and template-ids.

        * pt.c (processing_specializations): New variable.
        (template_header_count): Likewise.
        (type_unification_real): New function.
        (processing_explicit_specialization): Likewise.
        (note_template_header): Likewise.
        (is_member_template): Handle specializations.
        (end_template_decl): Call reset_specialization.
        (push_template_decl): Handle member template specializations.
        (tsubst): Likewise.
        (tsubst_copy): Handle TEMPLATE_ID_EXPR.
        (instantiate_template): Handle specializations.
        (instantiate_decl): Likewise.
        (fn_type_unification): Handle explicit_targs.
        (type_unification): Likewise.  Allow incomplete unification
        without an error message, if allow_incomplete.
        (get_bindings): Use new calling sequence for fn_type_unification.

        * spew.c (yylex): Handle PFUNCNAME.

        * tree.c (is_overloaded_fn): Handle TEMPLATE_ID_EXPR.
        (really_overloaded_fn): Likewise.
        (get_first_fn): Handle function templates.

        * typeck.c (build_x_function_call): Use really_overloaded_fn.
        Handle TEMPLATE_ID_EXPR.
        (build_x_unary_op): Likewise.
        (build_unary_op): Likewise.
        (mark_addressable): Templates whose address is taken are marked
        as used.

From-SVN: r15774
1997-09-28 15:16:59 -04:00
Mark Mitchell
786b524596 pt.c (begin_member_template_processing): Take a function as argument, not a set of template arguments.
Mon Sep  8 01:21:43 1997  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (begin_member_template_processing): Take a function as
	argument, not a set of template arguments.  Use the template
	parameters, rather than the arguments.  Handle non-type parameters
	correctly.  Push a binding level for the parameters so that multiple
	member templates using the same parameter names can be declared.
	(end_member_template_processing): Pop the binding level.
	(push_template_decl): Mark member templates as static when
	appropriate.

	* lex.c (do_pending_inlines): Pass the function, not its template
	arguments, to begin_member_template_processing.
	(process_next_inline): Likewise.
	(do_pending_defargs): Likewise.

	* error.c (dump_expr): Obtain the correct declaration for a
	TEMPLATE_CONST_PARM.

	* call.c (add_template_conv_candidate): New function.
	(build_object_call): Handle member templates, as done in the other
	build_ functions.

From-SVN: r15155
1997-09-08 05:28:51 -04:00
Mark Mitchell
aa5f3bad3a decl.c (replace_defag): Undo previous change.
Sat Sep  6 10:20:27 1997  Mark Mitchell  <mmitchell@usa.net>

	* decl.c (replace_defag): Undo previous change.
	* lex.c (do_pending_defargs): Deal with member templates.

	* pt.c (is_member_template): Avoid crashing when passed a
	non-function argument.

From-SVN: r15131
1997-09-06 16:10:05 -04:00
Jason Merrill
98c1c66880 class.c (grow_method): Remove check for redeclaration.
* class.c (grow_method): Remove check for redeclaration.

Fri Sep  5 01:37:17 1997  Mark Mitchell  <mmitchell@usa.net>

	* cp-tree.h (INNERMOST_TEMPLATE_PARMS): New macro.
	(DECL_INNERMOST_TEMPLATE_PARMS): Likewise.
	(PRIMARY_TEMPLATE_P): Use it.
	* call.c (build_overload_call_real): Use it.
	* class.c (instantiate_type): Likewise.
	* decl.c (decls_match): Likewise.
	* method.c (build_overload_identifier): Likewise.
	* pt.c (push_template_decl): Likewise.
	(classtype_mangled_name): Likewise.
	(lookup_template_class): Likewise.

	* cp-tree.h (DECL_NTPARMS): Change name from DECL_NT_PARMS to
	DECL_NTPARMS to conform to usage elsewhere.
	* call.c (add_template_candidate): Likewise.
	* class.c (instantiate_type): Likewise.
	* pt.c (instantiate_template): Likewise.
	(get_bindings): Likewise.

	* class.c (grow_method): Use DECL_FUNCTION_TEMPLATE_P instead of
	is_member_template.

	* pt.c (unify): Undo changes to allow multiple levels of template
	parameters.
	(type_unification): Likewise.
	(fn_type_unification): Likewise.
	(get_class_bindings): Likewise.
	* cp-tree.h (Likewise).

	* decl.c (replace_defarg): Check that the type of the default
	parameter does not invlove a template type before complaining
	about the initialization.

	* error.c (dump_expr): Deal with template constant parameters in
	member templates correctly.

	* pt.c (is_member_template): Deal with class specializations
	correctly.
	(tsubst): Handle "partial instantiation" of member templates
	correctly.

Wed Sep  3 12:30:24 1997  Mark Mitchell  <mmitchell@usa.net>

	* pt.c (type_unification): Change calling squence to allow for
	multiple levels of template parameters.
	(tsubst_expr): Likewise.
	(tsubst): Likewise.
	(tsubst_copy): Likewise.
	(instantiate_template): Likewise.
	(unify): Likewise.
	* call.c (build_overload_call_real): Use it.
	(add_builtin_candidate): Use it.
	(build_new_method_call): Use it.
	* class.c (instantiate_type): Use it.
	* decl.c (grokdeclarator): Use it.
	* decl2.c (finish_file): Use it.
	* method.c (build_overload_identifier): Use it.

	* call.c (add_template_candidate):  Add additional parameter for
	the function return type.  Call fn_type_unification istead of
	type_unification.
	(build_user_type_conversion_1): Handle member templates.
	(build_new_function_call): Likewise.
	(build_new_op): Likewise.
	(build_new_method_call): Likewise.

	* class.c (grow_method): Don't give an error message indicating
 	that two member templates with the same name are ambiguous.
	(finish_struct): Treat member template functions just like member
 	functions.

	* cp-tree.h (check_member_template): Add declaration.
	(begin_member_template_processing): Likewise.
	(end_member_template_processing): Likewise.
	(fn_type_unification): Likewise.
	(is_member_template): Likewise.
	(tsubst): Change prototype.
	(tsubst_expr): Likewise.
	(tsubst_copy): Likewise.
	(instantiate_template): Likewise.
	(get_bindings): Likewise.

	* decl.c (decls_match): Handle multiple levels of template
	parameters.
	(pushdecl): Handle template type params just like other type
	declarations.
	(push_class_level_binding): Return immediately if the
	class_binding_level is NULL.
	(grokfndecl): If check_classfn() returns a member_template, use
	the result of the template, not the template itself.

	* decl2.c (check_member_template): New function.  Check to see
	that the entity declared to be a member template can be one.
	(check_classfn): Allow redeclaration of member template functions
	with different types; the new functions can be specializations or
	explicit instantiations.

	* error.c (dump_decl): Handle multiple levels of template
	parameters.
	(dump_function_decl): Update to handle function	templates.

	* lex.c (do_pending_inlines): Set up template parameter context
	for member templates.
	(process_next_inline): Likewise.

	* method. (build_overload_identifier): Adjust for multiple levels
	of template parameters.

	* parse.y (fn.def2): Add member templates.
	(component_decl_1): Likewise.

	* pt.c (begin_member_template_processing): New function.
	(end_member_template_processing): Likewise.
	(is_member_template): Likewise.
	(fn_type_unification): Likewise.
	(current_template_parms): Return a vector of all the template
	parms, not just the innermost level of parms.
	(push_template_decl): Deal with the possibility of member
	templates.
	(lookup_template_class): Likewise.
	(uses_template_parms): Likewise.
	(tsubst): Modify processing to TEMPLATE_TYPE_PARM and
	TEMPLATE_CONST_PARM to deal with multiple levels of template
	arguments.   Add processing of TEMPLATE_DECL to produce new
	TEMPLATE_DECLs from old ones.
	(do_decl_instantiation): Handle member templates.

	* search.c (lookup_fnfields_1): Handle member template conversion
	operators.

	* tree.c (cp_tree_equal): Check the levels, as well as the
	indices, of TEMPLATE_CONST_PARMs.

	* typeck.c (comptypes): Check the levels, as well as the indices,
	fo TEMPLATE_TYPE_PARMs.
	(build_x_function_call): Treat member templates like member
	functions.

Member templates.

From-SVN: r15130
1997-09-06 04:10:07 -04:00
Jason Merrill
056c014d34 typeck.c (convert_arguments): Don't arbitrarily choose the first of a set of overloaded functions.
* typeck.c (convert_arguments): Don't arbitrarily choose the first
        of a set of overloaded functions.

        * lex.c (real_yylex): Don't elide __FUNCTION__.

From-SVN: r15055
1997-09-03 04:26:52 -04:00
Jason Merrill
8eeda2ecd5 lex.c (real_yylex): Refer to __complex instead of complex.
* lex.c (real_yylex): Refer to __complex instead of complex.

-Wed Jul 16 15:57:42 1997  Benjamin Kosnik  <bkoz@rhino.cygnus.com>
-
-       * parse.y (empty_parms): Only use VOID_LIST_NODE for the PARMS if
-       we're in a C++ struct/class, not if we're doing xtern "C"'.
-

and regenerate parse.c.

From-SVN: r14885
1997-08-21 21:52:56 -04:00
J"orn Rennecke
8975416cfb lex.c (real_yylex): Don't use getc directly.
Thu Aug 21 22:25:46 1997  J"orn Rennecke <amylaar@cygnus.co.uk>

	* lex.c (real_yylex): Don't use getc directly.

From-SVN: r14876
1997-08-21 18:34:19 -04:00
Jason Merrill
49c249e1c8 [multiple changes]
Wed Aug 20 17:25:08 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* call.c (is_subseq): Don't try to be clever.

Wed Aug 20 03:13:36 1997  H.J. Lu  (hjl@gnu.ai.mit.edu)

	* parse.y, pt.c: Include "except.h".
	* call.c, class.c, class.h, cp-tree.h, cvt.c, decl.c, decl2.c,
 	error.c, except.c, expr.c, friend.c, g++spec.c, init.c, input.c,
 	lex.c, lex.h, method.c, parse.y, pt.c, repo.c, rtti.c, search.c,
 	sig.c, spew.c, tree.c, typeck.c, typeck2.c, xref.c: Finish
 	prototyping.

Wed Aug 20 01:34:40 1997  Jason Merrill  <jason@yorick.cygnus.com>

	* decl2.c (mark_vtable_entries): Instead of replacing pure
	virtuals with a reference to __pure_virtual, copy the decl and
	change the RTL.

From-SVN: r14868
1997-08-20 20:50:39 -04:00
Jason Merrill
da20811c09 merge
From-SVN: r14852
1997-08-19 18:37:19 -04:00
Brendan Kehoe
42976354a6 92th Cygnus<->FSF quick merge
From-SVN: r14524
1997-07-24 17:09:25 -04:00
Mike Stump
b88c08b663 91th Cygnus<->FSF quick merge
From-SVN: r14266
1997-06-20 18:49:00 +00:00
Mike Stump
6633d6367f 91th Cygnus<->FSF quick merge
From-SVN: r14253
1997-06-18 02:25:37 +00:00
Mike Stump
37c46b43db 91th Cygnus<->FSF quick merge
From-SVN: r14134
1997-05-28 23:20:02 +00:00
Mike Stump
bd6dd8453c 90th Cygnus<->FSF quick merge
From-SVN: r13831
1997-04-02 03:58:33 +00:00
Mike Stump
824b9a4c45 90th Cygnus<->FSF quick merge
From-SVN: r13604
1997-02-04 02:31:49 +00:00
Mike Stump
d2e5ee5c70 90th Cygnus<->FSF quick merge
From-SVN: r13321
1996-12-18 02:46:25 +00:00
Mike Stump
faf5394a1b 90th Cygnus<->FSF quick merge
From-SVN: r13319
1996-12-18 01:44:21 +00:00
Mike Stump
d22c85969b 89th Cygnus<->FSF quick merge
From-SVN: r12953
1996-10-11 20:19:33 +00:00
Mike Stump
5156628f9f 89th Cygnus<->FSF quick merge
From-SVN: r12883
1996-09-30 21:34:04 +00:00
Mike Stump
c11b6f21eb merging
From-SVN: r12700
1996-09-12 19:19:15 +00:00
Mike Stump
d11ad92ebe 88 Cygnus<->FSF merge
From-SVN: r12674
1996-08-26 20:32:48 +00:00
Mike Stump
c73964b2fb 87th Cygnus<->FSF quick merge
From-SVN: r12606
1996-08-08 22:54:56 +00:00
Mike Stump
6467930b06 *** empty log message ***
From-SVN: r12602
1996-08-08 22:08:30 +00:00
Mike Stump
e92cc02916 87 Cygnus<->FSF merge
From-SVN: r12424
1996-07-11 01:13:25 +00:00
Mike Stump
e349ee739e 86th Cygnus<->FSF quick merge
From-SVN: r12126
1996-05-30 19:11:58 +00:00
Jason Merrill
809c8c30be 86th Cygnus<->FSF quick merge
From-SVN: r11914
1996-05-02 16:31:04 +00:00
Mike Stump
46b02c6d61 86th Cygnus<->FSF quick merge
From-SVN: r11905
1996-04-30 18:29:47 +00:00
Mike Stump
a80e41955a 86th Cygnus<->FSF quick merge
From-SVN: r11850
1996-04-19 00:48:03 +00:00
Brendan Kehoe
a82e1b5569 (handle_cp_pragma): New function, with decl, doing the cc1plus pragmas.
(handle_cp_pragma): New function, with decl, doing the cc1plus
pragmas.
(check_newline): Put the vtable/unit/implementation/interface pragma
code into handle_cp_pragma, replacing it with a call.
(handle_sysv_pragma): Give int return type, and take FINPUT and TOKEN
args.  Get the next token after handling the pragma token.

From-SVN: r11842
1996-04-17 12:18:01 -07:00
Mike Stump
6b5fbb552b 86th Cygnus<->FSF quick merge
From-SVN: r11710
1996-04-12 23:55:07 +00:00
Mike Stump
fc37869868 85th Cygnus<->FSF quick merge
From-SVN: r11587
1996-03-21 19:46:11 +00:00
Mike Stump
357a4089d9 85th Cygnus<->FSF quick merge
From-SVN: r11506
1996-03-09 20:23:30 +00:00
Mike Stump
e76a26469d 85th Cygnus<->FSF merge
From-SVN: r11497
1996-03-08 00:38:10 +00:00
Mike Stump
5566b478bd 83rd Cygnus<->FSF merge
From-SVN: r11362
1996-02-28 22:01:56 +00:00
Mike Stump
2ee887f272 81st Cygnus<->FSF merge
From-SVN: r11187
1996-02-09 22:43:25 +00:00
Mike Stump
9e9ff70986 80th Cygnus<->FSF merge
From-SVN: r11150
1996-02-01 19:32:00 +00:00
Mike Stump
be99da7733 78th Cygnus<->FSF merge
From-SVN: r11039
1996-01-17 18:57:55 +00:00
Mike Stump
72b7eeff72 76th Cygnus<->FSF merge
From-SVN: r10815
1995-12-19 06:51:14 +00:00
Mike Stump
f30432d726 75th Cygnus<->FSF merge
From-SVN: r10438
1995-10-12 02:33:51 +00:00
Per Bothner
b1c8f01ae9 (do_identifier): Use global binding in preference of dead for local
variable.

From-SVN: r10352
1995-09-14 17:06:54 -04:00
Brendan Kehoe
f3c90fd6f0 (handle_sysv_pragma): Deal with getting a comma from yylex.
From-SVN: r10350
1995-09-14 16:46:14 -04:00
Per Bothner
f3be9e3c33 (do_identifier): Handle old (non-ANSI) for scoping, and warn if
conflicts.

From-SVN: r10275
1995-08-25 19:06:45 -04:00
Richard Kenner
8ecb1d9245 Rename called function.
From-SVN: r10050
1995-06-22 22:51:13 -04:00
Richard Kenner
e9fa0c7c6f Update FSF address.
From-SVN: r9966
1995-06-15 08:29:51 -04:00
Mike Stump
a9aedbc26d 71st Cygnus<->FSF merge
From-SVN: r9719
1995-05-16 21:10:32 +00:00
Richard Kenner
ddd5a7c180 Fix typos in comments.
From-SVN: r9711
1995-05-16 08:14:26 -04:00
Mike Stump
a58942422c 68th Cygnus<->FSF merge
From-SVN: r9555
1995-05-01 21:36:30 +00:00
Mike Stump
e8abc66f60 67th Cygnus<->FSF merge
From-SVN: r9433
1995-04-24 17:27:46 +00:00
Michael Meissner
3d6f7931f9 Move pragma interface support to c-pragma.h
From-SVN: r9410
1995-04-18 18:16:51 +00:00
Mike Stump
79ff2c6c8b 64th Cygnus<->FSF merge
From-SVN: r9341
1995-04-09 11:41:24 +00:00
Mike Stump
faae18abc2 62nd Cygnus<->FSF merge
From-SVN: r9298
1995-04-03 19:28:01 +00:00
Mike Stump
28cbf42c14 59th Cygnus<->FSF merge
From-SVN: r9225
1995-03-23 00:44:31 +00:00
Mike Stump
b7484fbe2b 58th Cygnus<->FSF merge
From-SVN: r9186
1995-03-15 23:03:59 +00:00
Mike Stump
8ccc31eb61 56th Cygnus<->FSF merge
From-SVN: r8957
1995-02-16 15:24:37 +00:00
Mike Stump
d18c083e31 54th Cygnus<->FSF merge
From-SVN: r8844
1995-01-31 22:18:02 +00:00
Mike Stump
e1cd6e56ad 53rd Cygnus<->FSF merge
From-SVN: r8794
1995-01-24 08:19:58 +00:00
Mike Stump
6060a79633 50th Cygnus<->FSF merge
From-SVN: r8657
1994-12-16 02:07:31 +00:00
Mike Stump
db5ae43ff2 49th Cygnus<->FSF merge
From-SVN: r8570
1994-11-29 00:59:16 +00:00
Jason Merrill
c6a29b1f9d (real_yylex): Use HOST_BITS_PER_WIDE_INT to determine the
bitmask for lexing character constants.

From-SVN: r8278
1994-10-15 00:32:58 +00:00
Jason Merrill
3536cd7e04 (cons_up_default_function): Mark methods in a template class as template instances.
(cons_up_default_function): Mark methods in a template class
        as template instances.  Store the values of interface_unknown and
        interface_only for do_pending_inlines.
        (do_pending_inlines): Use them.

From-SVN: r8251
1994-10-11 18:39:14 +00:00
Mike Stump
eac293a1a8 48th Cygnus<->FSF merge
From-SVN: r8177
1994-09-30 00:51:03 +00:00
Mike Stump
f376e137d4 47th Cygnus<->FSF merge
From-SVN: r8129
1994-09-26 20:15:18 +00:00
Mike Stump
0059501924 46 Cygnus<->FSF merge
From-SVN: r7943
1994-08-18 20:50:43 +00:00
Mike Stump
a292b002ee 45th Cygnus<->FSF merge
From-SVN: r7862
1994-08-05 20:25:20 +00:00
Mike Stump
f0e01782d7 40th Cygnus<->FSF merge
From-SVN: r7493
1994-06-15 18:30:58 +00:00
Mike Stump
a0a339271a 39th Cygnus<->FSF merge
From-SVN: r7439
1994-06-03 21:42:31 +00:00
Mike Stump
2986ae008b 38th Cygnus<->FSF merge
From-SVN: r7337
1994-05-19 20:19:03 +00:00
Mike Stump
a4443a0855 37th Cygnus<->FSF merge
From-SVN: r7290
1994-05-13 02:46:07 +00:00
Mike Stump
8d2733caec 36th Cygnus<->FSF merge
From-SVN: r7221
1994-05-06 09:27:46 +00:00
Mike Stump
700f8a8792 35th Cygnus<->FSF merge
From-SVN: r7217
1994-05-05 22:19:26 +00:00
Mike Stump
7177d104dd 33rd Cygnus<->FSF merge
From-SVN: r7134
1994-04-21 23:30:18 +00:00
Mike Stump
a28e3c7f21 32nd Cygnus<->FSF merge
From-SVN: r7047
1994-04-15 01:44:15 +00:00
Mike Stump
8926095fe7 31th Cygnus<->FSF merge.
From-SVN: r6996
1994-04-08 06:08:43 +00:00
Mike Stump
51c184be09 30th Cygnus<->FSF merge.
From-SVN: r6859
1994-03-23 23:33:53 +00:00
Mike Stump
8d08fdba59 Initial revision
From-SVN: r6613
1994-02-24 01:02:37 +00:00