summaryrefslogtreecommitdiffstats
path: root/gcc/cp/method.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix copyrightslaw2000-02-261-1/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32185 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (CPTI_VTABLE_INDEX_TYPE): New macro.mmitchel2000-02-221-6/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (CPTI_CLASS_STAR_TYPE): Remove. (vtable_index_type): Likewise. (class_star_type_node): Remove. (TYPE_PTRMEMFUNC_FN_TYPE): Adjust for the new ABI. (build_binary_op_nodefault): Remove. * call.c (build_new_op): Use build_binary_op instead of build_binary_op_nodefault. * decl.c (init_decl_processing): Remove class_star_type_node initialization. Make delta_type_node ptrdiff_type_node under the new ABI. Initialize vtable_index_type. (build_ptrmemfunc_type): Build different structures for the new ABI. (build_enumerator): Use build_binary_op instead of build_binary_op_nodefault. * method.c (build_overload_value): Mangle pointers-to-members appropriately under the new ABI. * typeck.c (build_array_ref): Use build_binary_op instead of build_binary_op_nodefault. (get_member_function_from_ptrfunc): Adjust for the new ABI. (build_binary_op_nodefault): Rename to ... (build_binary_op): ... this. Remove old version. Adjust for pointer-to-member comparisons under the new ABI. (build_ptrmemfunc1): Remove dead code. Adjust for the new ABI. (build_ptrmemfunc): Adjust for the new ABI. (expand_ptrmemfunc_cst): Likewise. (delta2_from_ptrmemfunc): Assert that we're not using the new ABI. (pfn_from_ptrmemfunc): Adjust for the new ABI. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32099 138bc75d-0d04-0410-961f-82ee72b054a4
* Make DECL_CONTEXT mean the class in which a member function wasmmitchel2000-02-161-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | declared, even for a virtual function. * cp-tree.h (DECL_CLASS_CONTEXT): Adjust. (DECL_FRIEND_CONTEXT): New macro. (DECL_REAL_CONTEXT): Remove. (SET_DECL_FRIEND_CONTEXT): Likewise. (DECL_VIRTUAL_CONTEXT): Adjust. (DECL_CLASS_SCOPE_P): Use TYPE_P. (add_friends): Remove. (hack_decl_function_context): Likewise. * call.c (build_new_function_call): Replace DECL_REAL_CONTEXT with CP_DECL_CONTEXT. (build_over_call): Fix indentation. Use DECL_CONTEXT instead of DECL_CLASS_CONTEXT. * class.c (dfs_build_vcall_offset_vtbl_entries): Likewise. (add_method): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT. (strictly_overrides): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. (build_vtbl_or_vbase_field): Don't set DECL_CLASS_CONTEXT. (build_base_field): Likewise. (finish_struct_1): Likewise. (build_self_reference): Likewise. * decl.c (push_class_binding): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT. (pushtag): Use decl_function_context, not hack_decl_function_context. (decls_match): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT. (duplicate_decls): Use DECL_VIRTUAL_CONTEXT. (pushdecl): Remove bogus code. (start_decl): Use DECL_CONTEXT rather than DECL_CLASS_CONTEXT. (cp_finish_decl): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT. (grokfndecl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. Use decl_function_context, nothack_decl_function_context. (grokvardecl): Don't set DECL_CLASS_CONTEXT. (grokdeclarator): Likewise. Use decl_function_context, not hack_decl_function_context. (copy_args_p): Document. Don't use DECL_CLASS_CONTEXT. (start_function): Use DECL_FRIEND_CONTEXT, not DECL_CLASS_CONTEXT. Use decl_function_context, not hack_decl_function_context. (finish_function): Use decl_function_context, not hack_decl_function_context. (maybe_retrofit_in_chrg): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. (grokclassfn): Set DECL_VIRTUAL_CONTEXT, not DECL_CONTEXT. (finish_static_data_member_decl): Don't set DECL_CLASS_CONTEXT. (grokfield): Likewise. (finish_builtin_type): Likewise. (finish_vtable_vardec): Use decl_function_context, not hack_decl_function_context. (import_export_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. (start_static_initialization_or_destruction): Likewise. (finish_static_initialization_or_destruction): Likewise. (mark_used): Adjust logic for deciding when to synthesize methods. * dump.c (dequeue_and_dump): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT. * error.c (dump_function_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. * friend.c (is_friend): Likewise. (add_friends): Remove. (do_friend): Use SET_DECL_FRIEND_CONTEXT. * lex.c (begin_definition_of_inclass_inline): Use decl_function_context, not hack_decl_function_context. (process_next_inline): Likewise. (do_identifier): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT. * method.c (set_mangled_name_for_decl): Use DECL_CONTEXT, not DECL_CLASSS_CONTEXT. (hack_identifier): Likewise. (synthesize_method): Use decl_function_context, not hack_decl_function_context. * pt.c (template_class_depth_real): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT. (is_member_template): Use decl_function_context, not hack_decl_function_context. Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. (build_template_decl): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT. (check_default_tmpl_args): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT. (push_template_decl_real): Likewise. (instantiate_class_template): Don't call add_friends. (tsubst_default_argument): Use DECL_CONTEXT, not DECL_REAL_CONTEXT. (tsubst_decl): Set DECL_VIRTUAL_CONTEXT, not DECL_CLASS_CONTEXT. Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. (set_meangled_name_for_template_decl): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. * repo.c (repo_inline_used): Likewise. * search.c (current_scope): Adjust for new _CONTEXT macros. (context_for_name_lookup): Use CP_DECL_CONTEXT, not DECL_REAL_CONTEXT. (friend_accessible_p): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. (lookup_fnfields_here):Likewise. (check_final_overrider): Likewise. (init_vbase_pointers): Likewise. (virtual_context): Likewise. * semantics.c (finish_member_declaration): Just set DECL_CONTEXT. (expand_body): Use decl_function_context, not hack_decl_function_context. * tree.c (hack_decl_function_context): Remove. * typeck.c (build_x_function_call): Use DECL_CONTEXT, not DECL_CLASS_CONTEXT. * typeck2.c (error_not_base_type): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32018 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (struct saved_scope): Add incomplete field.jason2000-02-071-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (namespace_scope_incomplete): New macro. * decl.c (pushdecl): Use it. (hack_incomplete_structures): Use it. See through artificial binding levels. (mark_saved_scope): Mark it. Implement access control for nested types. * search.c (type_access_control): New fn. (accessible_p): Now we do perform access control for types. * semantics.c (deferred_type_access_control): New fn. (initial_deferred_type_access_control): New fn. (begin_function_definition): Call it. Add lookups parm. * decl.c (struct binding_level): Add this_class field. (pushlevel_class): Set it. (mark_binding_level): Mark it. (lookup_name_real): Use it. Call type_access_control. (mark_saved_scope): Mark lookups field. * cp-tree.h (flagged_type_tree): Add lookups field. (struct saved_scope): Add lookups field. (type_lookups): New macro. * parse.y (declmods): Now <ftype>. (parse_decl): Add lookups parm. Call initial_deferred_type_access_control. (lang_extdef): Clear type_lookups. (typed_declspecs, declmods, typespec): Set lookups field. (initdcl): Call deferred_type_access_control. (fn.def1, fn.def2, typed_declspecs1, initdcl0_innards, nomods_initdcl0, component_decl_1, named_parm): Adjust. * friend.c (is_friend): Nested classes are friends of their enclosing classes. * class.c (currently_open_derived_class): New fn. * method.c (hack_identifier): Use it. * lex.c (do_identifier): Remove obsolete code. * parse.y (typed_typespecs): Propagate new_type_flag properly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31837 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.def (THUNK_DECL): Discuss vcall indices.mmitchel2000-01-291-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | * cp-tree.h (BINFO_VIRTUALS): Update documentation. (BF_DELTA): New macro. (BF_VCALL_INDEX): Likewise. (BF_FN): Likewise. (THUNK_VCALL_OFFSET): Likewise. (make_thunk): Change prototype. * class.c (build_vtable_entry): Integrate build_vtable_entry_for_fn. Handle vcall indices. (build_vtable_entry_for_fn): Remove. (set_rtti_entry): Handle vcall indices. Use BF_DELTA, BF_VCALL_INDEX, BF_FN. (modify_vtable_entry): Integrate common code from modify_one_vtable and dfs_fixup_vtable_deltas. (add_virtual_function): Set BF_VCALL_INDEX. (build_vtbl_initializer): Simplify. Use BF_DELTA, BF_VCALL_INDEX, and BF_FN. (modify_one_vtable): Simplify. (dfs_fixup_vtable_deltas): Likewise. (override_one_vtable): Use BF_DELTA, BF_VCALL_INDEX, BF_FN. * method.c (make_thunk): Handle vcall indices. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31684 138bc75d-0d04-0410-961f-82ee72b054a4
* * call.c: PROTO -> PARAMS.ghazi2000-01-261-31/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * class.c: Likewise. * cp-tree.h: Likewise. * cvt.c: Likewise. * decl.c: Likewise. * decl.h: Likewise. * decl2.c: Likewise. * dump.c: Likewise. * errfn.c: Likewise. * error.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * init.c: Likewise. * input.c: Likewise. * lex.c: Likewise. * lex.h: Likewise. * method.c: Likewise. * optimize.c: Likewise. * parse.y: Likewise. * pt.c: Likewise. * repo.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * semantics.c: Likewise. * spew.c: Likewise. * tree.c: Likewise. * typeck.c: Likewise. * typeck2.c: Likewise. * xref.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31632 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (scratchalloc): Remove.mmitchel2000-01-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (build_scratch_list): Likewise. * call.c (convert_class_to_reference): Replace build_scratch_list and build_expr_list with build_tree_list. (add_candidate): Replace scratchalloc with expralloc. Note memory leak. (build_user_type_conversion_1): Replace build_scratch_list and build_expr_list with build_tree_list. (build_new_op): Likewise. (build_op_delete_call): Likewise. (convert_like): Likewise. * cvt.c (ocp_convert): Likewise. * decl.c (start_decl): Likewise. (start_function): Likewise. (finish_destructor_body): Likewise. (maybe_build_cleanup_1): Likewise. * decl2.c (reparse_decl_as_expr): Likewise. * init.c (perform_member_init): Likewise. (expand_cleanup_for_base): Likewise. (build_builtin_delete_call): Likewise. (build_new_1): Likewise. (build_delete): Likewise. * method.c (do_build_assign_ref): Likewise. * parse.y (already_scoped_stmt): Likewise. (nontrivial_exprlist): Likewise. (net_initializer): Likewise. (initlist): Likewise. * parse.c: Regenerated. * rtti.c (build_x_typeid): Likewise. (build_dynamic_cast_1): Likewise. * typeck.c (build_x_compound_expr): Likewise. (build_static_cast): Likewise. (build_modify_expr): Likewise. * cp-tree.h (DECL_VINDEX): Add documentation. * class.c (build_vtable_entry): Likewise. (start_vtable): Add comment. (add_virtual_function): Replace pending_hard_virtuals with overridden_virtuals and pending_virtuals with new_virtuals. Replace redundant assignments with assertions. (check_for_override): Add comment. (check_bases_and_members): Replace pending_hard_virtuals with overridden_virtuals and pending_virtuals with new_virtuals. (create_vtbl_ptr): Likewise. (layout_class_type): Likewise. (finish_struct_1): Likewise. Add comments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31473 138bc75d-0d04-0410-961f-82ee72b054a4
* * method.c (build_decl_overload_real): Check whether we are in ::loewis2000-01-141-2/+3
| | | | | | | before returning __builtin_new/delete. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31431 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (do_inline_function_hair): Remove.mmitchel1999-12-291-52/+0
| | | | | | | | | | | | | | | * class.c (layout_class_type): New function, split out from finish_struct_1. (fixup_pending_inline): Likewise. (fixup_inline_methods): New function. * method.c (fixup_pending_inline): Remove. (do_inline_function_hair): Likewise. * decl.c (BOOL_TYPE_SIZE): Bools always have size `1' under the new ABI. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31115 138bc75d-0d04-0410-961f-82ee72b054a4
* current_function -> cfuncrux1999-12-201-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@31033 138bc75d-0d04-0410-961f-82ee72b054a4
* 1999-12-16 Mark Mitchell <mark@codesourcery.com>mmitchel1999-12-161-36/+28
| | | | | | | | | | | | | | | | | | | | | | * class.c (check_field_decls): Don't return a value. (avoid_overlap): Moved here from tree.c. (build_base_fields): Likewise. (check_bases): New function, split out from finish_base_struct. (check_bases_and_members): New function, split out from finish_struct_1. (struct base_info): Remove cant_have_default_ctor, cant_have_const_ctor, cant_have_asn_ref. (finish_base_struct): Split semantic analysis into check_bases. (finish_struct_methods): Fix bogus assertion. (check_field_decls): Call finish_struct_anon here. (build_vbase_pointer_fields): Use CLASSTYPE_N_BASECLASSES. (finish_struct_1): Use check_bases_and_members. Reorganize. * cp-tree.h (CLASSTYPE_VBASECLASSES): Improve documentation. (build_base_fields): Don't declare. * tree.c (avoid_overlap): Remove. (build_base_fields): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30983 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (DECL_LOCAL_FUCNTION_P): New macro.mmitchel1999-11-141-6/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30527 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c (push_overloaded_decl_1): Use pushdecl.mmitchel1999-10-251-10/+6
| | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30154 138bc75d-0d04-0410-961f-82ee72b054a4
* * method.c (PARM_CAN_BE_ARRAY_TYPE): Remove.mmitchel1999-10-191-105/+161
| | | | | | | | | | | | | | | | | | | (mangling_flags): New type. (build_overload_int): Change prototype. (build_overload_value): Likewise. (numeric_output_need_bar): Improve comment. (mangle_expression): New function, broken out from ... (build_overload_int): Here. (build_overload_value): Adjust for use of mangling flags. Don't warn about real-valued template parameters here. Do handle complex expressions involving real-valued template parameters. (build_template_parm_names): Encase non-type template parameters in underscores, if necessary. (process_overload_item): Remove conditional on PARM_CAN_BE_ARRAY_TYPE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30090 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (insn-recog.o): Depend on hard-reg-set.h and resource.h.ghazi1999-10-081-0/+1
| | | | | | | | | | | | | | | | * alpha.h (ASM_OUTPUT_MI_THUNK): Pass the correct number of arguments to `current_file_function_operand'. * genrecog.c: Include hard-reg-set.h and resource.h in the generated output file. * real.c: Include tm_p.h. cp: * method.c: Include tm_p.h. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29869 138bc75d-0d04-0410-961f-82ee72b054a4
* * method.c (synthesize_method): Call setup_vtbl_ptr for destructors.mmitchel1999-10-051-1/+1
| | | | | | | | | | * decl.c (start_function): Set current_in_charge_parm for constructors, too, where appropriate. * search.c (fixup_all_virtual_upcast_offsets): New function. (expand_indirect_vtbls_init): Use it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29826 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (struct language_function): Remove static_labelno.mmitchel1999-10-041-0/+2
| | | | | | | | | | | | (static_labelno): Remove macro. * method.c (build_overload_nested_name): Make static_labelno static here. * pt.c (instantiate_decl): Use DECL_SAVED_TREE, not DECL_INITIAL, to decide whether or not a function is defined. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29801 138bc75d-0d04-0410-961f-82ee72b054a4
* 1999-10-04 Mark Mitchell <mark@codesourcery.com>mmitchel1999-10-041-2/+0
| | | | | | | | | | | | | | | | | | | | * call.c (build_over_call): Don't set TREE_SIDE_EFFECTS for situations where make_node will do it automatically. * decl.c (grok_reference_init): Likewise. (expand_static_init): Likewise. (do_static_initialization): Likewise. * init.c (perform_member_init): Likewise. (expand_aggr_init_1): Likewise. (build_new_1): Likewise. * method.c (do_build_copy_constructor): Likewise. (do_build_assign_ref): Likewise. * search.c (expand_upcast_fixups): Likewise. * semantics.c (finish_stmt_expr): Likewise. * typeck.c (build_unary_op): Likewise. (check_return_expr): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29799 138bc75d-0d04-0410-961f-82ee72b054a4
* * method.c (emit_thunk): Don't crash when -fsyntax-only.mmitchel1999-10-011-19/+22
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29748 138bc75d-0d04-0410-961f-82ee72b054a4
* Turn on function-at-a-time processing.mmitchel1999-09-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cp-tree.h (doing_semantic_analysis_p): New macro. (SF_DEFAULT): Define to zero, not SF_EXPAND. (start_handler_parms): Change prototype. (expand_start_catch_block): Likewise. (expand_end_catch_block): Likewise. (expand_start_eh_spec): Likewise. (expand_end_eh_spec): Declare. (finish_handler_parms): Change prototype. (begin_catch_block): Declare. (finish_handler): Change prototype. (do_pushlevel): Declare. (do_poplevel): Likewise. * decl.c (pushlevel): Don't create binding levels when not doing semantic analysis. (poplevel): Don't pop them. (pushdecl): Assert that we are never called when not doing semantic analysis. (pushdecl_top_level): Use push_to_top_level. (make_label_decl): Don't fiddle with obstacks. Make RTL For the label when expanding. (cp_finish_decl): Only inject for-scope variables when doing semantic analysis. Add comments. (start_handler_parms): Return the handler parm. (start_function): Reorganize. Don't clear DECL_INITIAL if it is already set. Reinitialize from saved function data if available. Don't pushlevel when not doing semantic analysis. (store_parm_decls): Only generate RTL when expanding. Only pushdecl when doing semantic analysis. Set current_eh_spec_try_block if appropriate. (finish_function): Simplify. Use do_pushlevel and do_poplevel. Combine common code. Don't poplevel when not doing semantic analysis. (push_cp_function_context): Don't expand functions without an explicit call to expand_body. (mark_lang_function): Make eh_spec_try_block and x_scope_stmt_stack. * except.c (expand_end_eh_spec): Don't declare. (process_start_catch_block): Likewise. (push_eh_cleanup): Use finish_decl_cleanup. (initialize_handler_parm): New function. (expand_start_catch_block): Use it. (expand_end_catch_block): Use tree-generation functions, not RTL-generation functions. (expand_start_eh_spec): Likewise. (expand_end_eh_spec): Likewise. (expand_exception_blocks): Simplify. (start_anon_func): Use do_pushlevel. (end_anon_func): Use do_poplvel. Call expand_body for the function. * expr.c (do_case): Don't call define_case_label. * init.c (create_temporary_var): Set DECL_CONTEXT for local variables. * method.c (emit_thunk): Call expand_body for the thunk. (sythesize_method): Likewise. * parse.y (handler_args): Give it ttype. (eat_saved_input): Call expand_body. (base_init): Use do_pushlevel. (pending_inline): Call expand_body. (handler): Adjust calls to finish_handler_parms and finish_handler. (handler_args): Don't call expand_start_catch_block. Return the catch parameter. * pt.c (tsubst_expr): Adjust HANDLER handling. * parse.c: Regenerated. * rtti.c (synthesize_tinfo_fn): Call finish_function. * semantics.c (do_pushlevel): Give it external linkage. Build SCOPE_STMTs. (do_poplevel): Likewise. (finish_case_label): Call define_case_label when doing semantic analysis. (finish_goto_stmt): Create RTL for labels. (finish_function_try_block): Set in_function_try_handler unconditionally. (finish_function_handler_sequence): Unset it. (finish_handler_parms): Use expand_start_catch_block even when building a statement-tree. (begin_catch_block): New function. (finish_handler): Move a little RTL-generation logic here. (finish_decl_cleanup): Allow cleanups for empty declarations. (finish_named_return_value): Don't pushdecl when not doing semantic analysis. (expand_stmt): Don't do semantic analysis for variable declarations. Handle START_CATCH_STMT. Call expand_label directly for a LABEL_STMT. Tweak handling of GOTO_STMT. Adjust HANDLERs. Handle SCOPE_STMT, CTOR_INITIALIZER, and RETURN_INIT. (expand_body): Let expand_stmt handle CTOR_INITIALIZER, RETURN_INIT and function try blocks. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29490 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (FN_TRY_BLOCK_P): New macro.mmitchel1999-09-101-15/+27
| | | | | | | | | | | | | | | | | | | | | | * init.c (perform_member_init): Remove obstack machinations. (expand_cleanup_for_base): Likewise. (finish_init_stmts): Mark the statement-expression as used. * method.c (emit_thunk): Use tree-generating functions, not RTL. (do_build_copy_constructor): Likewise. (do_build_assign_ref): Likewise. (synthesize_method): Likewise. Keep track of line numbers. * pt.c (tsubst_expr): Handle various kinds of try blocks. * semantics.c (expand_stmts): Remove. (begin_function_try_block): Set FN_TRY_BLOCK_P. (finish_function_try_block): Be careful rechaining function try blocks. (expand_stmt): Loop through all the statements at a given level. (exapnd_body): Be careful with line-numbers here too. Prepare for being called directly from the parser. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29263 138bc75d-0d04-0410-961f-82ee72b054a4
* Reorganize per-function data.mmitchel1999-09-091-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29240 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (scratch_tree_cons): Remove.mmitchel1999-09-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29225 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (tree.o): Depend on ggc.h.mmitchel1999-09-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. * method.c (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. * pt.c (instantiate_decl): Likewise. * rtti.c (syntheisze_tinfo_fn): Likewise. * semantics.c (expand_body): 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29173 138bc75d-0d04-0410-961f-82ee72b054a4
* Get ready for garbage collection.mmitchel1999-09-061-60/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29135 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (CXX_TREE_H): Include function.h.mmitchel1999-09-041-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29096 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (cp_function): Move here, from decl.c.mmitchel1999-09-021-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cp_function_chain): Declare. (dtor_label): New macro, instead of variable. (ctor_label): Likewise. (current_base_init_list): Likewise. (current_member_init_list): Likewise. (base_init_expr): Likewise. (current_class_ptr): Likewise. (current_class_ref): Likewise. (last_tree): Likewise. (last_expr_type): Likewise. (current_function_returns_value): Likewise. (current_function_returns_null): Likewise. (current_function_just_assigned_this): Likewise. (current_function_parms_stored): Likewise. (temp_name_counter): Likewise. (static_labelno): Likewise. (expanding_p): Likewise. (stmts_are_full_exprs_p): Likewise. (in_function_try_handler): Likewise. (lang_type): Remove nested type_flags. All uses changed. * call.c (ctor_label): Remove. (dtor_label): Likewise. * class.c (current_class_ptr): Remove. (current_class_ref): Likewise. * decl.c (static_labelno): Remove. (dtor_label): Likewise. (last_dtor_insn): New macro, instead of variable. (last_parm_cleanup_insn): Likewise. (original_result_rtx): Likewise. (in_function_try_handler): Remove. (named_label_uses): New macro, instead of variable. (named_labels): Likewise. (current_function_returns_value): Remove. (current_function_returns_null): Likewise. (current_function_assigns_this): New macro, instead of variable. (current_function_just_assigned_this): Likewise. (current_binding_level): Likewise. (init_decl_processing): Call push_cp_function_context. (cp_function): Move to cp-tree.h (cp_function_chain): Make it global. (temp_name_counter): Remove. (push_cp_function_context): Simplify. (pop_cp_function_context): Likewise. * decl2.c (temp_name_counter): Remove. * init_c (current_base_init_list): Likewise. (current_member_init_list): Likewise. (base_init_expr): Likewise. * method.c (static_labelno): Likewise. * pt.c (last_tree): Likewise. * semantics.c (expanding_p): Likewise. (stmts_are_full_exprs_p): Likewise. (last_expr_type): Likewise. * typeck.c (dtor_label): Likewise. (ctor_label): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29062 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c (grokdeclarator): Amend comment.mmitchel1999-08-261-1/+7
| | | | | | | | | | * except.c (expand_start_catch_block): Call push_template_decl for catch-block parameters. * method.c (synthesize_method): Build an empty compound statement for the body of a constructor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28888 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.def (SUBOBJECT): New tree node.mmitchel1999-08-251-10/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cp-tree.h (CLEANUP_P): New macro. (SUBOBJECT_CLEANUP): Likewise. (keep_next_level): Add parameter. (get_temp_regvar): Don't declare. (emit_base_init): Remove parameter. (expand_aggr_init): Rename to build_aggr_init. (expand_vec_init): Rename to build_vec_init. (do_pushlevel): Remove. (do_poplevel): Likewise. (finish_cleanup): New function. (finish_subobject): Likewise. (stmts_are_full_exprs_p): New variable. * decl.c (keep_next_level): Add parameter. (cp_finish_decl): Use build_aggr_init, not expand_aggr_init. Use finish_expr_stmt to expand the code. (expand_static_init): Use tree-generating, not RTL-generating, functions to handle the initialization. (start_function): Remove dead code. Always have a momentary obstack inside the function, even before hitting the first curly brace. (cplus_expand_expr_stmt): Move calls to expand_{start,end}_target_temps into semantics.c. (cp_function): Add stmts_are_full_exprs_p. (push_cp_function_context): Save it. (pop_cp_function_context): Restore it. * decl2.c (get_temp_regvar): Move to init.c. (do_static_initialization): Use build_{aggr,vec}_init. (do_static_destruction): Fix typo in comment. * dump.c (dequeue_and_dump): Handle INIT_EXPR. * except.c (expand_throw): Use create_temporary_var. * expr.c (cplus_expand_expr): Use build_{aggr,vec}_init. * init.c (expand_vec_init_try_block): Remove. (expand_vec_init_catch_clause): Likewise. (get_temp_regvar): New function. (begin_init_stmts): Likewise. (finish_init_stmts): Likewise. (perform_member_init): Use build_{aggr,vec}_init. Build up tree structure here. (emit_base_init): Likewise. Remove unused parameter. (expand_virtual_init): Likewise. (expand_cleanup_for_base): Use finish_subobject. (expand_aggr_vbase_init_1): Simplify. (construct_virtual_bases): Use tree-generating functions to build up initialization. (expand_aggr_init): Likewise. Rename to build_aggr_init. (expand_default_init): Likewise. (expand_aggr_init_1): Likewise. (expand_vec_init): Rename to build_vec_init. * method.c (do_build_copy_constructor): Use tree-generating functions. Don't call clear_last_expr. (do_build_assign_ref): Likewise. (synthesize_method): Call clear_last_expr here. * parse.y (base_init): Don't call clear_last_expr here. (nodecls): Likewise. * pt.c (tsubst_expr): Handle a TRY_BLOCK with CLEANUP_P set. * semantics.c (do_pushlevel): Move to here. (do_poplevel): Likewise. (stmts_are_full_exprs_p): New variable. (finish_expr_stmt): Handle logic for temoprary cleanup here. (finish_for_stmt): Use finish_expr_stmt. (finish_cleanup): New function. (finish_function_try_block): Fix indentation. (finish_subobject): New function. (setup_vtbl_ptr): Call keep_next_level here. (finish_stmt_expr): Handle a block with no scope inside the statement-expression. (expand_stmt): Handle a TRY_BLOCK with CLEANUP_P set. Handle SUBOBJECT. * tree.c (search_tree): Handle INIT_EXPR. (mapcar): Likewise. * typeck.c (build_modify_expr): Don't build an RTL_EXPR. * typeck2.c (store_init_value): Change expand_aggr_init to build_aggr_init in comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28878 138bc75d-0d04-0410-961f-82ee72b054a4
* 1999-08-18 Andrew Haley <aph@cygnus.com>aph1999-08-201-6/+4
| | | | | | | | * method.c (process_overload_item): Call build_mangled_C9x_name () for all integer parameter types larger than long long. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28779 138bc75d-0d04-0410-961f-82ee72b054a4
* * extend.texi (C++ Signatures): Remove node.mmitchel1999-08-111-9/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28677 138bc75d-0d04-0410-961f-82ee72b054a4
* Include function.h in most files. Remove most of the global variablescrux1999-08-091-0/+1
| | | | | | | | | duplicated in function.h. Add accessor macros for them which access current_function. Delete INLINE_HEADER rtx and related code, replace with code using struct function to store inlining related data. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28626 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c (count_fields, add_fields_to_vec): Add static prototype.ghazi1999-08-071-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28588 138bc75d-0d04-0410-961f-82ee72b054a4
* * method.c: Remove prototype for largest_union_member.jason1999-07-271-1/+0
| | | | | | | | * pt.c (determine_specialization): Fix uninitialized warning. * lex.c (real_yylex): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28302 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c (warn_extern_redeclared_static): Check DECL_ARTIFICIAL,jason1999-07-211-18/+0
| | | | | | | | | | | | | | | | | | not DECL_BUILT_IN, to determine if a function is internally declared. (duplicate_decls): Likewise. Improve handling of builtins. (push_overloaded_decl): Remove special handling of builtins. * cp-tree.h (ANON_AGGR_TYPE_P): Use CLASS_TYPE_P. * decl.c (grokdeclarator): Pull out decl_constant_value in templates, too. * class.c (finish_struct, finish_struct_1): Remove 'warn_anon' parm. * cp-tree.h, pt.c, semantics.c: Adjust. * method.c (largest_union_member): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28204 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl2.c (import_export_decl): Use same_type_p, rather thanmmitchel1999-06-161-29/+8
| | | | | | | | relying on pointer-equality for types. * method.c (do_build_copy_constructor): Simplify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27555 138bc75d-0d04-0410-961f-82ee72b054a4
* * method.c (is_back_referenceable_type): Back-reference bools whenmmitchel1999-06-061-1/+7
| | | | | | | not squangling. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27382 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c (finish_vtbls): Copy BINFO_VIRTUALs before using it tommitchel1999-05-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | intialize a vtable. * cp-tree.h (NAMESPACE_LEVEL): Reformat. (lang_decl_flags): Document MEMFUNC_POINTER_TO. Save four bytes by combining TEMPLATE_INFO and LEVEL into a single union. (DECL_TEMPLATE_INFO): Reformat. (DECL_SAVED_TREE): Document. (DECL_TEMPLATE_INJECT): Remove. * class.c (finish_struct): Remove code to deal with DECL_TEMPLATE_INJECT. * decl.c (maybe_process_template_type_declaration): Handle all new types in templates uniformly. * method.c (bulid_overload_identifier): Use CP_DECL_CONTEXT, not DECL_CONTEXT. * pt.c (lookup_template_class): Inject template instantiations of forward-declarations. (instantiate_class_template): Remove code processing DECL_TEMPLATE_INJECT. * pt.c (lookup_template_class): Tweak lookup to find member templates. * pt.c (tsubst_expr, case ASM_STMT): Don't tsubst into ASM_CV_QUAL. * semantics.c (finish_asm_stmt): Make strings permanent if they're used in a template. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27144 138bc75d-0d04-0410-961f-82ee72b054a4
* Implement anonymous structs.jason1999-05-191-24/+7
| | | | | | | | | | | | | | | | | * cp-tree.h (ANON_AGGR_TYPE_P): Rename from ANON_UNION_TYPE_P. * class.c, decl.c, decl2.c, init.c, pt.c, search.c, typeck.c: Adjust. * class.c (finish_struct_1): Remove redundant check for anon struct. * decl.c (fixup_anonymous_aggr): Renamed from fixup_anonymous_union. (check_tag_decl): Check for anonymous struct here. * decl2.c (build_anon_union_vars): Catch anon struct at file scope. * init.c (sort_member_init, emit_base_init): Handle getting fields as well as names in current_member_init_list. (perform_member_init): Handle getting an anon aggr. * method.c (do_build_assign_ref): Don't descend into anon aggrs. (do_build_copy_constructor): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27027 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (TREE_NONLOCAL_FLAG): Remove.mmitchel1999-04-161-1/+2
| | | | | | | | | | | | | | | | | (storetags): Declare. * class.c (finish_struct): Don't use TREE_NONLOCAL_FLAG. (pushclass): Likewise. Use storetags to install tag declarations, not pushtag. (invalidate_class_lookup_cache): Don't use TREE_NONLOCAL_FLAG. * decl.c (storetags): Make it global. (push_class_binding): Set INHERITED_VALUE_BINDING_P for an implicit typename declaration. (pushtag): Tidy. Don't use TREE_NONLOCAL_FLAG. * method.c (hack_identifier): Likewise. * search.c (lookup_member): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26491 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c (finish_struct_1): Look at the const-ness of the field'smmitchel1999-04-131-1/+1
| | | | | | | | | | type, not the TREE_READONLY-ness of the declaration. * method.c (synthesize_method): Likewise. * pt.c (tsubst_decl): Call c_apply_type_quals_to_decl when creating new declarations. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26420 138bc75d-0d04-0410-961f-82ee72b054a4
* * friend.c (add_friend): Deal gracefully with error_mark_node.mmitchel1999-04-111-0/+16
| | | | | | | | * method.c (build_overload_value): Handle pointers-to-members as template parameters. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26351 138bc75d-0d04-0410-961f-82ee72b054a4
* 1999-04-02 Mark Mitchell <mark@codesourcery.com>mmitchel1999-04-021-15/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26133 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (TYPE_PTRMEMFUNC_P): Use TYPE_PTRMEMFUNC_FLAG.mmitchel1999-03-231-43/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Document internals of pointer-to-member-functions. (DELTA2_FROM_PTRMEMFUNC): Make it call delta2_from_ptrmemfunc. (PFN_FROM_PTRMEMFUNC): Similarly. (build_type_conversion): Remove unused parameter. (build_ptrmemfunc1): Declare. (expand_ptrmemfunc_cst): New function. (delta2_from_ptrmemfunc): Likewise. (pfn_from_ptrmemfunc): Likewise. * cvt.c (cp_convert_to_pointer): Remove unused parameter to build_type_conversion. Use TYPE_PTRMEM_P for readability. (convert_to_reference): Remove unused parameter to build_type_conversion. (ocp_convert): Likewise. (build_user_type_conversion): Likewise. * error.c (dump_expr): Handle NULL pointer-to-member functions. * expr.c (cplus_expand_expr): Handle PTRMEM_CSTs for functions. * method.c (build_overload_value): Don't go splitting CONSTRUCTORs open when handling pointer-to-member functions. * pt.c (convert_nontype_argument): Clean up error messages. Be more stringent with pointers-to-members. * typeck.c (build_ptrmemfunc1): Don't declare. Make it global. (build_unary_op): Tidy ever-so-slightly. (build_conditional_expr): Remove extra parameter to build_type_conversion. (build_ptrmemfunc): Build PTRMEM_CSTs if we know what function we're using. (expand_ptrmemfunc_cst): Define. (delta2_from_ptrmemfunc): Likewise. (pfn_from_ptrmemfunc): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25913 138bc75d-0d04-0410-961f-82ee72b054a4
* * method.c (old_backref_index): Split out...jason1999-03-161-22/+61
| | | | | | | | (flush_repeats): From here. Rename back from try_old_backref. (build_mangled_name): Put back some old-style repeat handling. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25809 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c (duplicate_decls): Use same_type_p.jason1999-03-141-110/+78
| | | | | | | | | | | | | | | | | | | | * method.c (try_old_backref): Renamed from flush_repeats. Use same_type_p. Don't try to handle repeats. Return success. (is_back_referenceable_type): Return 0 if TYPE_FOR_JAVA. Support calls from old-style code, too. (check_ktype): Use same_type_p. (check_btype): Use same_type_p. Don't pull out TYPE_MAIN_VARIANT. (build_qualified_name): Simplify logic. (build_mangled_name_for_type_with_Gcode): Remove call to type_canonical_variant. (process_overload_item): Strip typedefs and quals at the top. (build_mangled_name): Likewise. Remove support for old-style repeats, which have been disabled since 2.7.2. Don't mess with TREE_USED. (build_decl_overload_real): Don't mess with TREE_USED. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25758 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (flag_access_control): Declare.mmitchel1999-03-091-17/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25661 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c, decl2.c, method.c, pt.c: Add 'static' to make SunOS 4jason1999-03-031-5/+5
| | | | | | | | | cc happy. * decl2.c (import_export_class): Also return if CLASSTYPE_INTERFACE_ONLY is set. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25562 138bc75d-0d04-0410-961f-82ee72b054a4
* * typeck.c (complete_type_or_else): Add VALUE arg, for helpfuljason1999-02-261-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | diagnostics. cp-tree.h (complete_type_or_else): Added VALUE parameter. * init.c (build_new_1): Extra arg to complete_type_or_else. (build_delete): Likewise. * typeck.c (require_complete_type): Likewise. (pointer_int_sum): Likewise. (pointer_diff): Likewise. (build_component_ref): Likewise. * typeck2.c (incomplete_type_error): Always use cp_error. Show declaration of undefined type, if appropriate. Deal with UNKNOWN_TYPE nodes. * typeck.c (require_complete_type): Use TYPE_SIZE as size_zero_node to mean incomplete type. (require_complete_type_in_void): New function. (build_compound_expr): Call complete_type_in_void for LHS. (build_c_cast): Call complete_type_in_void for void cast. * cvt.c (ocp_convert): Call complete_type_in_void for void cast. * decl.c (cplus_expand_expr_stmt): Void expression checks moved to require_complete_type_in_void. Call it. * cp-tree.h (require_complete_type_in_void): Prototype new function. * typeck.c (convert_arguments): Use alternative format for function decls. Don't require_complete_type here. Simplify diagnostic printing. (convert_for_initialization): Don't require_complete_type on RHS yet. * call.c (convert_arg_to_ellipsis): Call require_complete_type. * call.c (build_over_call): Cope with qualified void return type. * semantics.c (finish_call_expr): Likewise * typeck.c (build_function_call_real): Likewise (c_expand_return): Likewise * decl2.c (reparse_absdcl_as_expr): Cope with qualified void type. * call.c (print_z_candidates): Use alternate print format, to be consistant with (pt.c) print_candidates. method.c (hack_identifier): List candidate members. search.c (lookup_field): Build ambiguous list, and show it, if ambiguous. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25474 138bc75d-0d04-0410-961f-82ee72b054a4
* * errfn.c: Change varargs code to look like toplev.c.jason1999-02-231-6/+10
| | | | | | | | * method.c (process_modifiers): Don't prepend 'U' for char or wchar_t. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25386 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud