summaryrefslogtreecommitdiff
path: root/gcc/cp/search.c
Commit message (Collapse)AuthorAgeFilesLines
* * cp-tree.h (language_function): Add x_eh_spec_try_block. Addmmitchel1999-09-171-1/+1
| | | | | | | | | | | | | | x_scope_stmt_stack. Add x_in_charge_parm. (current_eh_spec_try_block): New macro. (current_scope_stmt_stack): Likewise. (current_in_charge_parm): Likewise. * decl.c (start_function): Initialize current_in_charge_parm. (finish_function): Use current_in_charge_parm rather than looking up __in_chrg. * search.c (expand_indirect_vtbls_init): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29489 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (scratch_tree_cons): Remove.mmitchel1999-09-091-12/+7
| | | | | | | | | | | | | | | | | | | | | | | | * 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
* * search.c (binfo_for_vtable): Use CLASSTYPE_VFIELD_PARENT.jason1999-09-081-44/+17
| | | | | | | (dfs_bfv_queue_p, dfs_bfv_helper, struct bfv_info): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29178 138bc75d-0d04-0410-961f-82ee72b054a4
* Get ready for garbage collection.mmitchel1999-09-061-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* * search.c (setup_class_bindings): Robustify.mmitchel1999-08-181-1/+1
| | | | | | | | * typeck.c (common_type): Use same_type_p, not pointer equality, to compare types. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28756 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.def (DECL_STMT): Make it smaller.mmitchel1999-08-141-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28709 138bc75d-0d04-0410-961f-82ee72b054a4
* * extend.texi (C++ Signatures): Remove node.mmitchel1999-08-111-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* * class.c (count_fields, add_fields_to_vec): Add static prototype.ghazi1999-08-071-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* * decl.c (lookup_name_real): Set the complain flag if we'rejason1999-08-071-0/+14
| | | | | | | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28560 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (empty_except_spec): New global var.nathan1999-08-041-30/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (compexcepttypes): Remove prototype. (comp_except_specs): Prototype new global function. (add_exception_specifier): Prototype new global function. * decl.c (empty_except_spec): Define new global var. (duplicate_decls): Use comp_except_specs, reword error message. (init_decl_processing): Initialize empty_except_spec. Adjust build_exception_variant calls. * parse.y (exception_specification_opt): Use empty_except_spec. (ansi_raise_identifier): Call check_for_new_type. (ansi_raise_identifiers): Use add_exception_specifier. * pt.c (tsubst): Use add_exception_specifier to build exception specifier. * search.c (check_final_overrider): New static function, broken out of get_matching_virtual. Check throw specifiers, reword diagnostics. (get_matching_virtual): Use check_final_overrider. * tree.c (build_exception_variant): Use comp_except_specs. * typeck.c (compexcepttypes): Remove. (comp_except_types): New static function, helper for comp_except_specs. Compare two types as exception specifiers. (comp_except_specs): New global function, compare two exception specifiers. (comptypes): Adjust for comp_except_specs. * typeck2.c (add_exception_specifier): New global function. * class.c (check_for_override): Reword error message. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28494 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (BINFO_VIRTUALS): Document new format.mmitchel1999-07-271-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | * class.c (modify_one_vtable): Change prototype accordingly. (modify_all_vtables): Likewise. (modify_all_direct_vtables): Likewise. (modify_all_indirect_vtables): Likewise. (build_vtable_entry_for_fn): New function. (set_rtti_entry): Simplify for new BINFO_VIRTUALS format. (modify_vtable_entry): Likewise. (add_virtual_function): Likewise. (build_vtbl_initializer): New function. (finish_vtbls): Simplify for new BINFO_VIRTUALS format. (fixup_vtable_deltas1): Likewise. (fixup_vtable_deltas): Likewise. (override_one_vtable): Likewise. (finish_struct_1): Likewise. * error.c (dump_expr): Likewise. * search.c (get_abstract_virtuals_1): Likewise. (get_abstract_virtuals): Likewise. (expand_upcast_fixups): Likewise. * tree.c (debug_binfo): Likewise. * decl2.c (mark_vtable_entries): Don't bash abstract virtuals to __pure_virtual here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28298 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (CP_INTEGRAL_TYPE_P): New macro.mmitchel1999-07-261-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (ARITHMETIC_TYPE_P): Adjust definition for standard conformance. (strip_top_quals): Declare. (ncp_convert): Likewise. (type_after_usual_arithmetic_converions): Likewise. (composite_pointer_type): Likewise. * call.c (strip_top_quals): Don't make it static. (promoted_arithmetic_type_p): New function. (conditional_conversion): Likewise. (null_ptr_cst_p): Allow `false' as a NULL pointer constant. (standard_conversion): Use same_type_p. Don't build BASE_CONVs for converting a type to itself. (reference_binding): Honor LOOKUP_NO_TEMP_BIND. (implicit_conversion): Make sure the from and to types are complete. (add_builtin_candidate): Correct handling of ?: operator. (add_builtin_candidates): Improve documentation. (build_conditional_expr): New function. (can_convert): Implement in terms of can_convert_arg. (ncp_convert): New function. * typeck.c (type_after_usual_arithmetic_conversions): New function, split out from common_type. (composite_pointer_type): New function, split out from build_conditional_expr. (common_type): Use type_after_usual_arithmetic_conversions. Remove redundant attribute merging. (comptypes): Tidy. Handle COMPLEX_TYPE. (build_binary_op_nodefault): Use null_ptr_cst_p. (build_conditional_expr): Remove. (convert_for_assignment): Use new conversion functions. * cp-tree.h (abstract_virtuals_error): Change declaration. * typeck2.c (abstract_virtuals_error): Check to see if an error ocurred, and return a boolean value accordingly. (build_functional_cast): Adjust accordingly. * class.c (finish_struct_1): Likewise. * cvt.c (ocp_convert): Likewise. * decl.c (cp_finish_decl): Likewise. (grokparams): Likewise. (grok_op_properties): Likewise. (start_function): Likewise. * init.c (build_new_1): Likewise. * pt.c (unify): Don't get confused by pointers-to-member functions. * search.c (build_cplus_new): Robustify. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28262 138bc75d-0d04-0410-961f-82ee72b054a4
* * call.c (NEED_TEMPORARY_P): New macro.mmitchel1999-07-231-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (standard_conversion): Set it, for derived-to-base conversions. (reference_related_p): New function. (reference_compatible_p): Likewise. (convert_class_to_reference): Likewise. (direct_reference_binding): Likewise. (reference_binding): Rework for standards-compliance. (convert_like): Adjust accordingly. (maybe_handle_ref_bind): Simplify; the right conversion sequences are now built up in reference_binding. (initialize_reference): New function. * cp-tree.h (ICS_USER_FLAG): Document. (ICS_THIS_FLAG): Likewise. (ICS_BAD_FLAG): Likewise. (NEED_TEMPORARY_P): Likewise. (cp_lvalue_kind): New type. (real_lvalue_p): Return it. * error.c (dump_expr): Provide more accurate representation for AGGR_INIT_EXPRs. * init.c (expand_default_init): Do not try to perform implicit conversions for a brace-enclosed initializer. * search.c (lookup_conversions): Document. * tree.c (lvalue_p_1): Return a cp_lvalue_kind. Calculate appropriately. (real_lvalue_p): Adjust accordingly. (lvalue_p): Likewise. (build_cplus_new): Don't allow the creation of an abstract class. * typeck.c (convert_for_initialization): Use initialize_reference. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28221 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-common.h: New file.crux1999-07-201-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28188 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (struct lang_decl): Added field for storing sortedjason1999-07-091-23/+72
| | | | | | | | | | | | | | | | | | | | | FIELD_DECLs (used in TYPE_DECLs). (DECL_PENDING_INLINE_INFO): Adjusted to use 'u' union. (DECL_SORTED_FIELDS): New macro. * class.c (method_name_cmp): New function. (finish_struct_methods): Modified to support sorting and searching methods. (finish_struct_anon): Changed code in inner loop to use ELT rather than UELT (which required an extra indirection for every reference). (field_decl_cmp): New function to support sorting FIELD_DECLs. (finish_struct_1): Sort fields. * search.c (lookup_field_1): Use DECL_SORTED_FIELDS if we have them. (lookup_fnfields_1): Search sorted methods in METHOD_VEC. Also, switch to using array indexing rather than a changing pointer. * ptree.c (print_lang_decl): Handle TYPE_DECLs that have DECL_SORTED_FIELDS. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28046 138bc75d-0d04-0410-961f-82ee72b054a4
* * pt.c (do_decl_instantiation): Downgrade duplicate instantiationjason1999-07-091-1/+2
| | | | | | | | | | | | | | | | | | | | errors to pedwarn. * typeck.c (comptypes): Simplify C code in look_hard. * xref.c (PALLOC): Use xcalloc, not calloc. (SALLOC): Use xmalloc, not malloc. * rtti.c (synthesize_tinfo_fn): Add missing call to pop_momentary. * search.c (note_debug_info_needed): Don't search if WRITE_SYMBOLS is NO_DEBUG. * decl.c (duplicate_decls): If a redeclaration doesn't match the initial declaration, then don't save the inline info and by all means don't mark the function as a builtin function. * decl.c (lookup_name_real): Set NONCLASS to 1 if CURRENT_CLASS_TYPE is 0. * class.c (duplicate_tag_error): Set TYPE_NONCOPIED_PARTS to NULL_TREE. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28044 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (class_cache_firstobj): Declare.mmitchel1999-06-151-2/+2
| | | | | | | | | | | | | | | | | | | | (maybe_push_cache_obstack): Rename to push_cache_obstack. * class.c (permanent_obstack): Remove declaration. (class_cache_firstobj): Make it global. (add_method): Don't use permanent_obstack directly. (pushclass): Only free the class_cache_obstack if we know how far back to free it. (maybe_push_cache_obstack): Rename to push_cache_obstack. * decl.c: Remove dead comment. (saved_scope): Add class_cache_firstobj. (push_to_top_level): Save it. (pop_from_top_level): Restore it. (push_class_level_binding): Use push_cache_obstack, not maybe_push_cache_obstack. * search.c (push_class_decls): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27534 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (convert_pointer_to_single_level): Reimplement withoutmmitchel1999-06-071-7/+19
| | | | | | | using get_binfo. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27394 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c (finish_struct_1): Still check for ANON_AGGR_TYPE_P.jason1999-05-201-2/+2
| | | | | | | | | | | * class.c (finish_base_struct): Allow non-COM bases for COM classes except at the leftmost position. (modify_one_vtable, fixup_vtable_deltas1, override_one_vtable): Pass the binfo's class, not the most derived, to skip_rtti_stuff. * search.c (get_abstract_virtuals, expand_upcast_fixups): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@27065 138bc75d-0d04-0410-961f-82ee72b054a4
* Implement anonymous structs.jason1999-05-191-4/+4
| | | | | | | | | | | | | | | | | * 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.def (TEMPLATE_ID_EXPR): Update documentation.mmitchel1999-05-171-2/+4
| | | | | | | | | | | | | | | | | * decl.c (grokfndecl): Don't allow inline declarations of friend template specializations, or friend template specializations with default arguments. * pt.c (tsubst): Handle substitution into array types that does not yield a fixed upper bound, even when not processing a template. (tsubst_copy): Deal with the fact that the second operand to a TEMPLATE_ID_EXPR may be NULL_TREE, a TREE_LIST, or a TREE_VEC. * search.c (marked_pushdecls_p): Don't descend into TEMPLATE_TYPE_PARMs and the like. (unmarked_pushdecls_p): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26975 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (lookup_field_r): Set the TREE_TYPE of an ambiguousmmitchel1999-05-031-25/+24
| | | | | | | | | | | | lookup to error_mark_node here. (lookup_member): Revise documentation. Add comments. Don't set the TREE_TYPE to error_mark_node here, and don't build up an extra TREE_LIST for ambiguous lookups. (setup_class_bindings): Adjust accordingly. (push_class_decls): Revise out-of-date comments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26754 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (binfo_for_vtable): Initialize bfvi.var.schwab1999-04-281-0/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26685 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (is_subobject_of_p): Make sure we're looking at themmitchel1999-04-271-1/+5
| | | | | | | right baseclasses. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26669 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (is_subobject_of_p): Handle TEMPLATE_TYPE_PARMs andmmitchel1999-04-231-7/+13
| | | | | | | such as base classes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26601 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (build_binary_op): Remove unneeded parameter.mmitchel1999-04-201-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * class.c (build_vrable_entry_ref): Adjust call to build_binary_op. * decl.c (expand_static_init): Likewise. (grokdeclarator): Likewise. (finish_function): Likewise. * decl2.c (delete_sanity): Likewise. (do_dtors): Likewise. (do_ctors): Likewise. * error.c (dump_type_suffix): Likewise. * expr.c (cplus_expand_expr): Likewise. * init.c (resolve_offset_ref): Likewise. (build_new): Likewise. (build_new_1): Likewise. (build_vec_delete_1): Likewise. (expand_vec_init_catch_clause): Likewise. (build_delete): Likewise. * pt.c (tsubst): Likewise. * rtti.c (synthesize_tinfo_fn): Likewise. * search.c (expand_upcast_fixups): Likewise. (expand_direct_vtbls_init): Likewise. * typeck.c (get_member_function_from_ptrfunc): Likewise. (build_binary_op_nodefault): Likewise. (point_int_sum): Likewise. (pointer_diff): Likewise. (build_unary_op): Likewise. (build_modify_expr): Likewise. (get_delta_difference): Likewise. (build_ptrmemfunc): Likewise. (expand_ptrmemfunc_cst): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26566 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (TREE_NONLOCAL_FLAG): Remove.mmitchel1999-04-161-3/+3
| | | | | | | | | | | | | | | | | (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
* * cp-tree.h (lookup_nested_field): Remove.mmitchel1999-04-151-64/+0
| | | | | | | | | | | | * class.c (push_nested_class): Handle UNION_TYPEs. (pop_nested_class): Likewise. * decl.c (lookup_name_real): Don't call lookup_nested_field. (start_decl): Use push_nested_class, not just pushclass. (cp_finish_decl): Use pop_nested_class, not just popclass. * search.c (lookup_nested_field): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26476 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (struct lang_type): Add com_interface.jason1999-04-131-3/+3
| | | | | | | | | | | | | | | | | (CLASSTYPE_COM_INTERFACE): New macro. * class.c (set_rtti_entry): COM interface classes have no RTTI entries in their vtables; adjust. (add_virtual_function, finish_base_struct, skip_rtti_stuff, modify_one_vtable, fixup_vtable_deltas1, override_one_vtable, finish_struct_1): Likewise. * decl2.c (mark_vtable_entries): Likewise. * rtti.c (build_headof, get_tinfo_fn_dynamic): Likewise. * search.c (get_abstract_virtuals_1, get_abstract_virtuals, expand_upcast_fixups): Likewise. * tree.c (debug_binfo): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26394 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (template_self_reference_p): Tweak.mmitchel1999-04-081-0/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26296 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (BASELINK_P): New macro.mmitchel1999-04-061-40/+40
| | | | | | | | | | | | | | | | (SET_BASELINK_P): Likewise. * init.c (build_member_call): Remove needless assignment in if statement. * search.c (lookup_field_r): Fix handling when we are looking specifically for a type; these are not hidden by functions and variables. (lookup_member): Use SET_BASELINK_P. * tree.c (is_overloaded_fn): Use BASELINK_P. (really_overloaed_fn): Likewise. (get_first_fn): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26219 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c (maybe_fixup_vptrs): Remove declaration.mmitchel1999-04-051-1/+2
| | | | | | | | | | | | (build_class_init_list): Likewise. * decl.c (pushdecl_class_level): Call check_template_shadow here ... (push_class_level_binding): ... not here. * search.c (dfs_push_type_decls): Only avoid template-self-reference TYPE_DECLs if they are from base classes. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26202 138bc75d-0d04-0410-961f-82ee72b054a4
* 1999-04-02 Mark Mitchell <mark@codesourcery.com>mmitchel1999-04-021-333/+159
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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 (IDENTIFIER_AS_DESC, IDENTIFIER_AS_LIST,jason1999-03-301-71/+2
| | | | | | | | | | | | 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26071 138bc75d-0d04-0410-961f-82ee72b054a4
* Warning fixes:ghazi1999-03-261-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25994 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (lang_type): Remove has_assignment andmmitchel1999-03-241-41/+120
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | has_real_assignment. Add befriending_classes. (TYPE_HAS_ASSIGNMENT): Remove. (TYPE_HAS_REAL_ASSIGNMENT): Likewise. (CLASSTYPE_BEFRIENDING_CLASSES): New macro. (lang_decl): Document. (DECL_BEFRIENDING_CLASSES): New macro. (FRIEND_NAME): Move declaration to more obvious location. (FRIEND_DECLS): Likewise. * class.c (finish_struct_1): Don't use TYPE_HAS_REAL_ASSIGNMENT. * decl.c (duplicate_decls): Copy DECL_BEFRIENDING_CLASSES. (fixup_anonymous_union): Don't use TYPE_HAS_ASSIGNMENT. (grok_op_properties): Likewise. * friend.c (is_friend): Use FRIEND_NAME and FRIEND_DECLS. (add_friend): Likewise. Don't do weird things with assignment operators. Update DECL_BEFRIENDING_CLASSES. (add_friends): Don't do weird things with assignment operators. (make_friend_class): Likewise. Update CLASSTYPE_BEFRIENDING_CLASSES. * pt.c (instantiate_class_template): Don't set TYPE_HAS_ASSIGNMENT. (tsubst_copy): Substitute the TREE_TYPE for more unary expressions. * ptree.c (print_lang_type): Don't look at TYPE_HAS_ASSIGNMENT. * search.c (protected_accessible_p): New function. (friend_accessible_p): Likewise. (accessible_p): Use them. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25940 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c (xref_basetypes): Set CLASSTYPE_VBASECLASSES here.mmitchel1999-03-151-37/+2
| | | | | | | | * tree.c (layout_basetypes): Not here. * search.c (dfs_search): Remove; no longer used. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25789 138bc75d-0d04-0410-961f-82ee72b054a4
* * lex.c (do_identifier): Correct call to enforce_access.mmitchel1999-03-121-2/+2
| | | | | | | | | * search.c (accessible_p): Tweak comment. * decl2.c (validate_nonmember_using_decl): Issue sensible error-messages on bogus qualifiers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25732 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (assert_canonical_unmarked): Fix typo in prototype.mmitchel1999-03-101-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25671 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (dfs_canonical_queue): New function.mmitchel1999-03-101-2/+41
| | | | | | | | | | (dfs_assert_unmarked_p): Likewise. (assert_canonical_unmarked): Likewise. (access_in_type): Use it. (accessible_p): Likewise. Walk the whole tree when umarking. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25668 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (flag_access_control): Declare.mmitchel1999-03-091-926/+914
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (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
* * cp-tree.h (struct lang_type): Add anon_union field.jason1999-03-061-4/+8
| | | | | | | | | | | | (ANON_UNION_TYPE_P): Use it instead of examining type. (SET_ANON_UNION_TYPE_P): New macro. * decl.c (check_tag_decl): Use it. * search.c (compute_access): Handle non-type contexts earlier, and handle NULL_TREE. * tree.c (build_exception_variant): Use copy_to_permanent. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25618 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (ANON_UNION_TYPE_P): Robustify.mmitchel1999-03-051-345/+355
| | | | | | | | | | | | | | | | | | * decl.c (make_typename_type): Don't issue an error if an immediate lookup fails; it migt be resolved later. * friend.c (is_friend): Add comment. * search.c (breadth_first_search): Add POSTFN and DATA parameters. Tidy. All callers changed. (lookup_field_queue_p): New function. (lookup_field_r): Likewise. (lookup_field_post): Likewise. (lookup_field): Use them, via breadth_first_search, instead of duplicating logic. (compute_access): Robustify. (lookup_fnfield_info): New structure. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25607 138bc75d-0d04-0410-961f-82ee72b054a4
* * typeck.c (complete_type_or_else): Add VALUE arg, for helpfuljason1999-02-261-5/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* * class.c (check_for_override): Don't stop checking when we findmmitchel1999-02-261-7/+7
| | | | | | | | the first overridden function. Delete #if 0'd code. * search.c (get_matching_virtual): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25457 138bc75d-0d04-0410-961f-82ee72b054a4
* 1999-02-19 Mark Mitchell <mark@markmitchell.com>mmitchel1999-02-211-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cp-tree.h (CLASSTYPE_METHOD_VEC): Adjust comment. (fn_type_unification): Adjust prototype. (lookup_fnfields_1): Declare. * call.c (add_template_candidate_real): Adjust call to fn_type_unification. * class.c (add_method): Don't allow duplicate declarations of constructors or destructors. (resolve_address_of_overloaded_function): Remove unused variable. Adjust call to fn_type_unification. * decl.c (grokfndecl): Be more robust in the face of illegal specializations. * decl2.c (check_classfn): Remove hokey handling of member templates. * pt.c (determine_specialization): Improve comments. Adjust to handle template argument deduction as per the standard. (check_explicit_specialization): Fix comment spacing. Handle type-conversion operators correctly. Improve error-recovery. (fn_type_unification): Remove EXTRA_FN_ARG parameter. (get_bindings_real): Simplify handling of static members. * search.c (lookup_fnfields_1): Make it have external linkage. * typeck.c (compparms): Fix comment. (build_unary_op): Don't try to figure out which template specialization is being referred to when when the address-of operator is used with a template function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25347 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-tree.h (get_template_base): Don't declare.mmitchel1999-02-101-87/+3
| | | | | | | | | | | | | | | | | | | | | (dfs_walk): Declare. (dfs_unmark): Likewise. (markedp): Likewise. * pt.c (unify): Remove duplicate declaration. Pass tparms and targs to get_template_base. (get_template_base_recursive): Move here from search.c. Check to see that the base found can be instantiated to form the desired type. (get_template_base): Likewise. (get_class_bindings): Simplify. * search.c (get_template_base_recursive): Move to pt.c. (get_template_base): Likewise. (markedp): Make it global. (dfs_walk): Likewise. (dfs_unmark): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@25126 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c (handle_using_decl): Fix comment. Don't lookupmmitchel1998-12-031-1/+8
| | | | | | | | | | | | constructors in base classes. (validate_lhs): Fix typo in comment. * search.c (lookup_field_1): Don't return a USING_DECL. * cp-tree.h (DECL_ACCESS): Improve documentation. * decl.c (expand_static_init): Don't set the initialization-done flag until the initialization is done. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24076 138bc75d-0d04-0410-961f-82ee72b054a4
* * lex.c (handle_generic_pragma): Use token_buffer.jason1998-11-241-1/+1
| | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23836 138bc75d-0d04-0410-961f-82ee72b054a4
* * class.c (add_method): Build up OVERLOADs properly for conversion ops.jason1998-11-241-21/+5
| | | | | | | | | | | | | | | | | * search.c (lookup_conversions): Handle getting real OVERLOADs. (add_conversions): Likewise. Revert last change. * call.c (add_conv_candidate): Pass totype to add_candidate instead of fn. Don't add a new candidate if the last one was for the same type. (print_z_candidates): Handle getting a type as a function. (joust): If we got two conversion candidates to the same type, just pick one. (build_object_call): Lose 'templates'. (build_user_type_conversion_1): Handle getting real OVERLOADs. Fixes g++.jason/overload7.C. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23822 138bc75d-0d04-0410-961f-82ee72b054a4