aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/parse.c
AgeCommit message (Collapse)AuthorFilesLines
2000-07-12gcc_update (files_and_dependencies): Remove generated YACC files.Mark Mitchell1-8709/+0
* gcc_update (files_and_dependencies): Remove generated YACC files. * c-parse.c: Remove. * c-parse.h: Likewise. * c-parse.y: Likewise. * objc/objc-parse.c: Likewise. * objc/objc-pasre.y: Likewise. * Makefile.in ($(PARSE_H)): Depend directly on parse.y. * parse.c: Remove. * parse.h: Likewise. * parse-scan.c: Remove. From-SVN: r34982
2000-07-10init.c (build_new_1): Bail early if the call to new fails.Jason Merrill1-1601/+1599
* init.c (build_new_1): Bail early if the call to new fails. * decl.c (compute_array_index_type): Check specifically for an INTEGER_CST, not just TREE_CONSTANT. * decl.c (duplicate_decls): Don't call duplicate_decls on the DECL_TEMPLATE_RESULT. (decls_match): Return 0 if the DECL_TEMPLATE_RESULTs have different codes. * error.c (dump_template_bindings): Don't crash if we had an invalid argument list. * typeck.c (c_expand_start_case): Do narrowing here. * semantics.c (finish_switch_cond): Not here. * parse.y (asm_clobbers): Do string concatenation. From-SVN: r34938
2000-07-04repo.c (repo_get_id): Handle the case where a class with virtual bases has a ↵Jason Merrill1-709/+706
null TYPE_BINFO_VTABLE. * repo.c (repo_get_id): Handle the case where a class with virtual bases has a null TYPE_BINFO_VTABLE. * parse.y (member_init): Just pass in the type. * init.c (expand_member_init): Handle getting a type. * decl.c (finish_function): Warn if a function has no return statement. Suggested by Andrew Koenig. * typeck.c (check_return_expr): Do set current_function_returns_value if we got an error_mark_node. From-SVN: r34863
2000-06-30Makefile.in (c-common.o): Don't depend on c-tree.h or c-lex.h.Mark Mitchell1-1/+1
* Makefile.in (c-common.o): Don't depend on c-tree.h or c-lex.h. * c-common.c (ridpointers): Declare. * c-common.h (enum rid): Declare. (NORID): Likewise. (ridpointers): Likewise. * c-lex.c (ridpointers): Don't declare. (init_lex): Initialize ridpointers. * c-lex.h (enum rid): Don't declare. (NORID): Likewise. (RID_FIRST_MODIFIER): Likewise. (ridpointers): Likewise. * cp-tree.h (ridpointers): Don't declare. * decl.c (record_builtin_type): Use CP_RID_MAX instead of RID_MAX. (record_builtin_java_type): Likewise. (init_decl_processing): Likewise. * lex.c: Move inclusion of lex.h. (ridpointers): Don't define. (init_parse): Initialize ripdointers. Use CP_RID_MAX instead of RID_MAX. * lex.h (enum rid): Rename to ... (enum cp_rid): ... this. (ridpointers): Don't declare. * parse.y: Move inclusion of lex.h. * parse.c: Regenerated. * spew.c: Move inclusion of lex.h. * cp-tree.h (struct language_function): Remove temp_name_counter. (temp_name_counter): Remove. (get_temp_name): Change prototype. (get_guard): New function. (get_guard_cond): Likewise. (set_guard): Likewise. * cvt.c (build_up_reference): Adjust call to get_temp_name. * decl.c (expand_static_init): Use get_guard and friends to implement guard variables. * decl2.c (get_temp_name): Assume that the variables created are always static. (get_sentry): Rename to ... (get_guard): ... this. Implement new ABI guard variables. (get_guard_bits): New function. (get_guard_cond): Likewise. (set_guard): Likewise. (start_static_initialization_or_destruction): Use them. (do_static_initialization): Replace sentry with guard throughout. (do_static_destruction): Likewise. * init.c (create_temporary_var): Add comment. From-SVN: r34815
2000-06-30parse.y (expr_no_comma_rangle): New non-terminal.Nathan Sidwell1-4328/+4514
* parse.y (expr_no_comma_rangle): New non-terminal. (template_parm): Use it for default parameter case. (template_arg): Use it. (expr_no_commas): Remove commented out undefined extensions. * Makefile.in (CONFLICTS): Adjust to 33 s/r & 48 r/r. * parse.h, parse.c: Rebuilt. From-SVN: r34806
2000-06-24decl.c (pushdecl): Don't set DECL_CONTEXT from current_namespace.Jason Merrill1-3281/+3308
* decl.c (pushdecl): Don't set DECL_CONTEXT from current_namespace. (push_namespace): Set DECL_CONTEXT for a new NAMESPACE_DECL. * parse.y (complex_direct_notype_declarator): Support global_scope. * Makefile.in: Adjust conflict count. From-SVN: r34686
2000-06-23parse.y (template_arg): Convert TEMPLATE_DECL that is a template template ↵Kriang Lerdsuwanakij1-649/+653
paramter to... * parse.y (template_arg): Convert TEMPLATE_DECL that is a template template paramter to TEMPLATE_TEMPLATE_PARM here. * cp-tree.def (TEMPLATE_TEMPLATE_PARM): Adjust comment. * cp-tree.h (TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL): New macro. (copy_template_template_parm): Adjust prototype. * decl.c (grokdeclarator): Remove dead code. * pt.c (process_template_parm): Tidy. (lookup_template_class): Construct nodes in copy_template_template_parm. (tsubst): Pass TEMPLATE_DECL rather than IDENTIFIER_NODE to lookup_template_class. Use TYPE_TI_TEMPLATE. * tree.c (copy_template_template_parm): Add NEWARGS parameter. (mapcar): Adjust call to copy_template_template_parm. * typeck.c (comptypes): Use TEMPLATE_TEMPLATE_PARM_TEMPLATE_DECL. * method.c (build_template_template_parm_names): Change error code to avoid compilation warning. * gxxint.texi: Document template template parameter name mangling. From-SVN: r34659
2000-06-21parse.y (program): Always call finish_translation_unit.Nathan Sidwell1-807/+811
* parse.y (program): Always call finish_translation_unit. * parse.c, parse.h: Rebuilt. From-SVN: r34629
2000-06-19c-common.h (IF_COND): Added documentation.Ben Chelf1-2/+2
* c-common.h (IF_COND): Added documentation. (THEN_CLAUSE): Likewise. (ELSE_CLAUSE): Likewise. (WHILE_COND): Likewise. (WHILE_BODY): Likewise. (DO_COND): Likewise. (DO_BODY): Likewise. (RETURN_EXPR): Likewise. (EXPR_STMT_EXPR): Likewise. (FOR_INIT_STMT): Likewise. (FOR_COND): Likewise. (FOR_EXPR): Likewise. (FOR_BODY): Likewise. (SWITCH_COND): Likewise. (SWITCH_BODY): Likewise. (CASE_LOW): Likewise. (CASE_HIGH): Likewise. (GOTO_DESTINATION): Likewise. (COMPOUND_BODY): Likewise. (ASM_CV_QUAL): Likewise. (ASM_STRING): Likewise. (ASM_OUTPUTS): Likewise. (ASM_INPUTS): Likewise. (ASM_CLOBBERS): Likewise. (DECL_STMT_DECL): Likewise. (STMT_EXPR_STMT): Likewise. (LABEL_STMT_LABEL): Likewise. * c-common.def: Added documenetion for SRCLOC, EXPR_STMT, COMPOUND_STMT, DECL_STMT, IF_STMT, FOR_STMT, WHILE_STMT, DO_STMT, RETURN_STMT, BREAK_STMT, CONTINUE_STMT, SWITCH_STMT, GOTO_STMT, LABEL_STMT, ASM_STMT, SCOPE_STMT, CASE_LABEL, STMT_EXPR. * cp/cp-tree.h (genrtl_try_block): Declare function. (genrtl_handler): Likewise. (genrtl_catch_block): Likewise. (genrtl_ctor_stmt): Likewise. (genrtl_subobject): Likewise. (genrtl_decl_cleanup): Likewise. (genrtl_do_poplevel): Likewise. (genrtl_do_pushlevel): Likewise. (genrtl_clear_out_block): Likewise. (genrtl_goto_stmt): Likewise. (genrtl_expr_stmt): Likewise. (genrtl_decl_stmt): Likewise. (genrtl_if_stmt): Likewise. (genrtl_while_stmt): Likewise. (genrtl_do_stmt): Likewise. (genrtl_return_stmt): Likewise. (genrtl_for_stmt): Likewise. (genrtl_break_stmt): Likewise. (genrtl_continue_stmt): Likewise. (genrtl_scope_stmt): Likewise. (genrtl_switch_stmt): Likewise. (genrtl_case_label): Likewise. (genrtl_begin_compound_stmt): Likewise. (genrtl_finish_compound_stmt): Likewise. (genrtl_compound_stmt): Likewise. (genrtl_asm_stmt): Likewise. (genrtl_named_return_value): Likewise. (genrtl_begin_stmt_expr): Likewise. (genrtl_finish_stmt_expr): Likewise. (finish_for_stmt): Removed first argument. (finish_switch_stmt): Likewise. * cp/semantics.c (genrtl_try_block): Define function. (genrtl_handler): Likewise. (genrtl_catch_block): Likewise. (genrtl_ctor_stmt): Likewise. (genrtl_subobject): Likewise. (genrtl_decl_cleanup): Likewise. (genrtl_do_poplevel): Likewise. (genrtl_do_pushlevel): Likewise. (genrtl_clear_out_block): Likewise. (genrtl_goto_stmt): Likewise. (genrtl_expr_stmt): Likewise. (genrtl_decl_stmt): Likewise. (genrtl_if_stmt): Likewise. (genrtl_while_stmt): Likewise. (genrtl_do_stmt): Likewise. (genrtl_return_stmt): Likewise. (genrtl_for_stmt): Likewise. (genrtl_break_stmt): Likewise. (genrtl_continue_stmt): Likewise. (genrtl_scope_stmt): Likewise. (genrtl_switch_stmt): Likewise. (genrtl_case_label): Likewise. (genrtl_begin_compound_stmt): Likewise. (genrtl_finish_compound_stmt): Likewise. (genrtl_compound_stmt): Likewise. (genrtl_asm_stmt): Likewise. (genrtl_named_return_value): Likewise. (genrtl_begin_stmt_expr): Likewise. (genrtl_finish_stmt_expr): Likewise. (finish_for_stmt): Removed first argument and generate rtl specific code. (finish_switch_stmt): Likewise. (do_poplevel): Removed generate rtl specific code. (do_pushlevel): Likewise. (add_tree): Likewise. (finish_goto_stmt): Likewise. (finish_expr_stmt): Likewise. (begin_if_stmt): Likewise. (finish_if_stmt_cond): Likewise. (finish_then_clause): Likewise. (begin_else_clause): Likewise. (finish_else_clause): Likewise. (finish_if_stmt): Likewise. (clear_out_block): Likewise. (begin_while_stmt): Likewise. (finish_while_stmt_cond): Likewise. (finish_while_stmt): Likewise. (begin_do_stmt): Likewise. (finish_do_body): Likewise. (finish_do_stmt): Likewise. (finish_return_stmt): Likewise. (begin_for_stmt): Likewise. (finish_for_init_stmt): Likewise. (finish_for_cond): Likewise. (finish_for_expr): Likewise. (finish_break_stmt): Likewise. (finish_continue_stmt): Likewise. (begin_switch_stmt): Likewise. (finish_switch_cond): Likewise. (finish_case_label): Likewise. (begin_try_block): Likewise. (begin_function_try_block): Likewise. (finish_try_block): Likewise. (finish_cleanup_try_block): Likewise. (finish_cleanup): Likewise. (finish_function_try_block): Likewise. (finish_handler_sequence): Likewise. (finish_function_handler_sequence): Likewise. (begin_handler): Likewise. (finish_handler_parms): Likewise. (begin_catch_block): Likewise. (finish_handler): Likewise. (begin_compound_stmt): Likewise. (finish_compound_stmt): Likewise. (finish_asm_stmt): Likewise. (finish_label_stmt): Likewise. (finish_label_decl): Likewise. (finish_subobject): Likewise. (finish_decl_cleanup): Likewise. (finish_named_return_value): Likewise. (begin_stmt_expr): Likewise. (finish_stmt_expr): Likewise. * cp/decl.c (initialize_local_var): Changed call to finish_expr_stmt to call genrtl_expr_stmt when appropriate. * cp/init.c (begin_init_stmts): Changed calls to begin_stmt_expr and begin_compound_expr to call genrtl_begin_stmt_expr and genrtl_begin_compound_expr when appropriate. (finish_init_stmts): Changed calls to finish_compound_expr and finish_stmt_expr to call genrtl_finish_compound_expr and genrtl_finish_stmt_expr when appropriate. (expand_default_init): Changed call to finish_expr_stmt to call genrtl_expr_stmt when appropriate. (build_vec_init): Likewise. * cp/parse.y (simple_stmt): Removed first argument from call to finish_for_stmt. Removed first argument from call to finish_switch_stmt. * cp/parse.c: Regenerated. * cp/pt.c (tsubst_expr): Removed first argument from call to finish_for_stmt. Removed first argument from call to finish_switch_stmt. From-SVN: r34597
2000-06-16cp-tree.h (finish_mem_initializers): Declare.Mark Mitchell1-719/+689
* cp-tree.h (finish_mem_initializers): Declare. (count_trees): Likewise. * parse.y (base_init): Use finish_mem_initializers. * semantics.c (finish_mem_initializers): New function. * tree.c (count_trees_r): Prototype. Use DATA parameter to store the number of trees. (n_trees): Remove. (count_trees): Don't use it. From-SVN: r34574
2000-06-16cp-tree.h (struct language_function): Remove x_base_init_list and ↵Mark Mitchell1-824/+883
x_member_init_list. * cp-tree.h (struct language_function): Remove x_base_init_list and x_member_init_list. (current_base_init_list): Remove. (current_member_init_list): Likewise. (setup_vtbl_ptr): Change prototype. (emit_base_init): Likewise. (expand_member_init): Likewise. (reinit_parse_for_function): Remove. * decl.c (save_function_data): Don't clear x_base_init_list and x_member_init_list. (mark_language_function): Don't mark them. * init.c (perform_member_init): Tweak comment. (sort_member_init): Take the list of initializers as an argument. (sort_base_init): Likewise. (emit_base_init): Likewise. (expand_member_init): Return the initializer. Don't use global variables. * lex.c (reinit_parse_for_function): Remove. * method.c (build_template_parm_names): Correct substitution. (do_build_copy_constructor): Don't use current_member_init_list and current_base_init_list. (synthesize_method): Likewise. * parse.y (base_init): Split mem-initializers into base-initializers and field-initializers. (member_init_list): Build up the list here. (member_init): Return the initializer. (fn.depfn): Don't use reinit_parse_for_function. * parse.c: Regenerated. * pt.c (convert_nontype_argument): Don't make an ADDR_EXPR of the ERROR_MARK. (tsubst_expr): Don't use current_member_init_list and current_base_init_list. (tsubst_expr_values): Rename to ... (tsubst_initializer_list): ... this. Use convert_from_reference. * semantics.c (setup_vtbl_ptr): Don't use current_member_init_list and current_base_init_list. (begin_function_definition): Don't call reinit_parse_for_function. * dump.c (dequeue_and_dump): Use TREE_VEC_LENGTH with vectors. * error.c (dump_expr): Handle ADDR_EXPRs with REFERENCE_TYPE correctly. From-SVN: r34571
2000-05-28cp-tree.h (ansi_opname): Make it a macro.Alex Samuel1-34/+34
2000-05-27 Alex Samuel <samuel@codesourcery.com> Mark Mitchell <mark@codesourcery.com> * cp-tree.h (ansi_opname): Make it a macro. (ansi_assopname): Likewise. (struct lang_decl_flags): Add assignment_operator_p. (struct lang_decl): Add operator_code. (DECL_VTT_PARM): Adjust. (DECL_OVERLOADED_OPERATOR_P): Return the operator_code for an overloaded operator. (SET_OVERLOADED_OPERATOR_CODE): New macro. (DECL_ASSIGNMENT_OPERATOR_P): New macro. (DECL_ARRAY_DELETE_OPERATOR_P): Adjust. (opname_tab): Remove. (assignop_tab): Likewise. (operator_name_info_t): New type. (operator_name_info): New variable. (assignment_operator_name_info): Likewise. (build_cp_library_fn): Remove declaration. (push_cp_library_fn): Likewise. (operator_name_string): Likewise. (build_decl_overload): Likewise. * call.c (print_z_candidates): Simplify. (build_object_call): Adjust usage of ansi_opname. Use DECL_OVERLOADED_OPERATOR_P. (op_error): Adjust operator name lookup. (build_conditional_expr): Adjust usage of ansi_opname. (build_new_op): Likewise. (build_op_delete_call): Likewise. (build_over_call): Likewise. (joust): Use DECL_OVERLOADED_OPERATOR_P. * decl.c (duplicate_decls): Copy operator_code. (init_decl_processing): Adjust parameters to push_cp_library_fn. (builtin_function): Adjust parameters to build_library_fn_1. (build_library_fn_1): Accept an overloaded operator code. (build_library_fn): Pass ERROR_MARK. (build_cp_library_fn): Accept an overloaded operator code. (push_cp_library_fn): Likewise. (grokfndecl): Tweak. (grokdeclarator): Simplify code to compute names of overloaded operators. Adjust use of ansi_opname. (ambi_op_p): Work on tree_codes, not identifiers. (unary_op_p): Likewise. (grok_op_properties): Likewise. (start_function): Use DECL_OVERLOADED_OPERATOR_P. (lang_mark_tree): Don't try to mark the operator_code. * decl2.c (grok_function_init): Use DECL_OVERLOADED_OPERATOR_P. * error.c (dump_decl): Remove special handling for operator names. (dump_function_name): Likewise. (dump_expr): Adjust name lookup of operators. (op_to_string): Simplify. (assop_to_string): Likewise. * init.c (build_new_1): Adjust use of ansi_opname. * lex.c (opname_tab): Remove. (assignop_tab): Likewise. (ansi_opname): Likewise. (ansi_assopname): Likewise. (operator_name_string): Likewise. (reinit_lang_specific): Likewise. (operator_name_info): New variable. (assignment_operator_name_info): Likewise. (init_operators): New function. (init_parse): Use it. (do_identifier): Adjust use of ansi_opname. * method.c (mangle_expression): Don't use ansi_opname for mangling. (build_decl_overload_real): Use DECL_OVERLOADED_OPERATOR_P. (build_decl_overload): Remove. (build_typename_overload): Use OPERATOR_TYPENAME_FORMAT directly. (do_build_assign_ref): Adjust use of ansi_opname. (synthesize_method): Likewise. (implicitly_declare_fn): Likewise. * operators.def: New file. * parse.y (operator): Adjust use of ansi_opname. * pt.c (tsubst_decl): Use IDENTIFIER_OPNAME_P. (set_mangled_name_for_template_decl): Don't play games with current_namespace. (special_function_p): Adjust use of ansi_opname. * typeck.c (check_return_expr): Likewise. * Make-lang.in (cc1plus): Depend on operators.def. * Makefile.in (lex.o): Likewise. (decl.o): Likewise. Co-Authored-By: Mark Mitchell <mark@codesourcery.com> From-SVN: r34223
2000-04-11cp-tre.h (finish_function): Change prototype.Mark Mitchell1-5/+5
* cp-tre.h (finish_function): Change prototype. * decl.c (end_cleanup_fn): Adjust caller. (finish_function): Take only one parameter. * decl2.c (finish_objects): Adjust caller. (finish_static_storage_duration_function): Likewise. * method.c (emit_thunk): Likewise. * parse.y: Likewise. * parse.c: Regenerated. * pt.c (instantiate_decl): Likewise. * rtti.c (synthesize_tinfo_fn): Likewise. * semantics.c (expand_body): Likewise. * cp-tree.h (copy_decl): New function. * class.c (finish_struct_1): Use it. * lex.c (copy_decl): Define it. * pt.c (tsubst_decl): Likewise. * tree.c (copy_template_template_parm): Likewise. From-SVN: r33079
2000-04-10class.c (instantiate_type): Handle object-relative template-id.Jason Merrill1-709/+710
* class.c (instantiate_type): Handle object-relative template-id. * semantics.c (finish_expr_stmt): Call convert_to_void here. * decl.c (cplus_expand_expr_stmt): Not here. * rtti.c (build_dynamic_cast_1): Call non_lvalue. Initialize exprtype earlier. * parse.y (fn.def1): Check for defining types in return types. * decl.c (check_tag_decl): Notice extra fundamental types. Diagnose empty decls in classes, too. * decl.c (grokdeclarator): Don't override an anonymous name if no declarator was given. * cvt.c (convert_to_void): Call resolve_offset_ref. * typeck.c (build_x_function_call): Abort if we get an OFFSET_REF. * decl2.c (decl_namespace): Handle getting a type. * typeck.c (build_c_cast): Re-enable warning for cast between pointer and integer of different size. From-SVN: r33066
2000-03-23builtin.c (get_pointer_alignment): Use DECL_P and TYPE_P macros.Theodore Papadopoulo1-2/+2
* builtin.c (get_pointer_alignment): Use DECL_P and TYPE_P macros. * c-common.c (decl_attributes,check_format_info,truthvalue_conversion, c_get_alias_set): Likewise. * c-decl.c (duplicate_decls): Likewise. * c-typeck.c (default_conversion,build_unary_op): Likewise. * calls.c (initialize_argument_information): Likewise. * dwarf2out.c (decl_class_context,add_abstract_origin_attribute): Likewise. * dwarfout.c (decl_class_context,output_type): Likewise. * expr.c (get_inner_reference): Likewise. * fold-const.c (simple_operand_p,fold): Likewise. * function.c (aggregate_value_p): Likewise. * stmt.c (expand_asm_operands): Likewise. * varasm.c (named_section): Likewise. * call.c (check_dtor_name,build_new_method_call): Likewise. * decl.c (push_class_binding,poplevel,pushtag,lookup_namespace_name, make_typename_type,check_initializer,cp_finish_decl,xref_tag): Likewise. * decl2.c (grokfield,build_expr_from_tree,build_expr_from_tree, decl_namespace,arg_assoc_template_arg,arg_assoc, validate_nonmember_using_decl,do_class_using_decl): Likewise. * error.c (dump_template_argument,dump_expr,cp_file_of,cp_line_of, args_to_string): Likewise. * friend.c (is_friend): Likewise. * lex.c (note_got_semicolon,note_list_got_semicolon,is_global): Likewise. * method.c (build_overload_nested_name,build_overload_value, build_qualified_name,build_qualified_name,hack_identifier): Likewise. * parse.y (typename_sub,typename_sub1): Likewise. * pt.c (push_inline_template_parms_recursive,check_template_shadow, process_partial_specialization,convert_template_argument, template_args_equal,add_pending_template,lookup_template_class, for_each_template_parm_r,maybe_fold_nontype_arg, tsubst,instantiate_template,type_unification_real,unify, instantiate_pending_templates,set_mangled_name_for_template_decl): Likewise. * repo.c (repo_get_id,repo_template_used): Likewise. * search.c (lookup_field_1): Likewise. * tree.c (walk_tree,get_type_decl,cp_tree_equal,member_p): Likewise. * xref.c (classname): Likewise. From-SVN: r32698
2000-03-21tree.h (COMPLETE_TYPE_P): New macro.Nathan Sidwell1-7/+6
gcc * tree.h (COMPLETE_TYPE_P): New macro. (COMPLETE_OR_VOID_TYPE_P): New macro. (COMPLETE_OR_UNBOUND_ARRAY_TYPE_P): New macro. * stor-layout.c (layout_type, case VOID_TYPE): Don't set TYPE_SIZE. * c-aux-info.c (gen_type): Use them. * c-common.c (c_expand_expr_stmt): Likewise. * c-decl.c (poplevel, pushdecl, start_decl, finish_decl, grokdeclarator, grokparms, finish_struct, start_function, store_parm_decls, combine_parm_decls): Likewise. * c-parse.y (cast_expr): Likewise. * c-typeck.c (require_complete_type, c_sizeof, c_sizeof_nowarn, c_size_in_bytes, c_alignof, build_component_ref, build_indirect_ref, build_array_ref, convert_arguments, build_binary_op, pointer_diff, build_unary_op, digest_init: Likewise. * calls.c (initialize_argument_information): Likewise. * convert.c (convert_to_integer): Likewise. * dbxout.c (dbxout_typedefs, dbxout_type, dbxout_symbol): Likewise. * dwarfout.c (location_or_const_value_attribute, output_enumeration_type_die, output_structure_type_die, output_union_type_die, output_type): Likewise. * expr.c (safe_from_p, expand_expr): Likewise. * function.c (assign_parms): Likewise. * sdbout.c (sdbout_symbol, sdbout_one_type): Likewise. * tree.c (build_array_type, build_function_type, build_method_type, build_offset_type, build_complex_type): Likewise. * c-parse.c, c-parse.h: Regenerated. gcc/cp * typeck.c (require_complete_type, complete_type, complete_type_or_else, c_sizeof, c_sizeof_nowarn, build_array_ref, convert_arguments, pointer_diff, build_x_unary_op, build_unary_op, build_c_cast, build_modify_expr): Use COMPLETE_TYPE_P etc. * call.c (is_complete, convert_like_real, build_new_method_call): Likewise. * class.c (build_vbase_pointer_fields, check_bases, build_base_field, finish_struct_1, pushclass): Likewise. * cvt.c (cp_convert_to_pointer, convert_to_void): Likewise. * decl.c (maybe_process_template_type_declaration, pushtag, pushdecl, redeclaration_error_message, start_decl, start_decl_1, layout_var_decl, check_initializer, cp_finish_decl, grokdeclarator, require_complete_types_for_parms, grok_op_properties, xref_tag, xref_basetypes, check_function_type): Likewise. * decl2.c (check_classfn, reparse_absdcl_as_casts): Likewise. * friend.c (do_friend): Likewise. * init.c (build_offset_ref): Likewise. * parse.y (structsp): Likewise. * pt.c (maybe_process_partial_specialization, tsubst_friend_function, instantiate_class_template, tsubst, do_type_instantiation, instantiate_pending_templates): Likewise. * repo.c (repo_get_id): Likewise. * rtti.c (build_typeid, get_typeid, build_dynamic_cast_1, synthesize_tinfo_var, emit_support_tinfos): Likewise. * search.c (lookup_fnfields_1, lookup_conversions): Likewise. * semantics.c (begin_class_definition): Likewise. * tree.c (build_cplus_method_type): Likewise. * typeck2.c (digest_init, build_functional_cast, add_exception_specifier): Likewise. * parse.h, parse.c: Regenerated. From-SVN: r32671
2000-03-18* parse.c: Regenerated.Martin v. Löwis1-7/+8
From-SVN: r32619
2000-03-12Revert previous checkinGabriel Dos Reis1-6/+5
From-SVN: r32495
2000-03-12lex.c (whitespace_cr): Compress consecutive calls to warning().Gabriel Dos Reis1-5/+6
2000-03-11 Gabriel Dos Reis <gdr@codesourcery.com> * lex.c (whitespace_cr): Compress consecutive calls to warning(). (do_identifier): Ditto for error(). * pt.c (convert_nontype_argument): Ditto for cp_error(). (convert_template_argument): Ditto for cp_pedwarn(). From-SVN: r32492
2000-02-28regenJason Merrill1-808/+808
From-SVN: r32236
2000-02-25lex.c (check_newline): Use push_srcloc and pop_srcloc, rather than ↵Mark Mitchell1-98/+93
duplicating functionality here. * lex.c (check_newline): Use push_srcloc and pop_srcloc, rather than duplicating functionality here. * optimize.c: Include input.h. (expand_call_inline): Use push_srcloc and pop_srcloc. * parse.y (maybe_cv_qualifier): Remove calls to emit_line_note. * parse.c: Regenerated. * Makefile.in (lex.o): Depend on input.h. (optimize.o): Likewise. From-SVN: r32142
2000-02-23decl.c (grokdeclarator): Call decl_type_access_control.Jason Merrill1-815/+817
* decl.c (grokdeclarator): Call decl_type_access_control. * parse.y (parse_end_decl): Don't call decl_type_access_control if decl is null. From-SVN: r32123
2000-02-22Refer to the standard as an ISO document, not an ANSI one.Martin v. Löwis1-16/+17
* decl.c (grokdeclarator): Change ANSI to ISO. * lex.c (consume_string, readescape, do_identifier): Likewise. (parse_float, real_yylex): Likewise. * parse.y (paren_expr_or_null, paren_cond_or_null): Likewise. (unary_expr, new_initializer, cast_expr, primary, primary_no_id, new_type_id, maybe_label_decls, simple_stmt, for.init.statement): Likewise. * pt.c (do_decl_instantiation, do_type_instantiation): Likewise. * semantics.c (finish_named_return_value): Likewise. * parse.c: Regenerate. From-SVN: r32100
2000-02-18semantics.c (deferred_type_access_control): Walk the entire type_lookups list.Jason Merrill1-934/+965
* semantics.c (deferred_type_access_control): Walk the entire type_lookups list. (save_type_access_control): Rename from initial_deferred_type_access_control. Just remember the value. (decl_type_access_control): New fn. (begin_function_definition): Use deferred_type_access_control, after we've started the function. Set type_lookups to error_mark_node. * parse.y (frob_specs, fn.def1): Adjust. (parse_decl0, parse_field, parse_field0, parse_bitfield): New fns. (parse_end_decl, parse_bitfield0, parse_method): New fns. (fn.def2, initdcl, initdcl0_innards, nomods_initdcl0): Use them. (after_type_component_declarator0): Likewise. (after_type_component_declarator): Likewise. (notype_component_declarator): Likewise. * cp-tree.h: Adjust. * decl.c (redeclaration_error_message): Allow redeclaration of namespace-scope decls. From-SVN: r32059
2000-02-13parse.y (frob_specs): Split out...Jason Merrill1-829/+826
* parse.y (frob_specs): Split out... (parse_decl): From here. (fn.def2): Call initial_deferred_type_access_control. (after_type_component_declarator0): Call frob_specs. (notype_component_declarator0): Likewise. * search.c (friend_accessible_p): Nested classes are friends of their enclosing classes. From-SVN: r31957
2000-02-07cp-tree.h (struct saved_scope): Add incomplete field.Jason Merrill1-847/+881
* cp-tree.h (struct saved_scope): Add incomplete field. (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. From-SVN: r31837
2000-02-01parse.y (simple_stmt): Allow :: token in asm parameter list.Ulrich Drepper1-2695/+2720
* parse.y (simple_stmt): Allow :: token in asm parameter list. * parse.c: Rebuilt. From-SVN: r31753
2000-01-26call.c: PROTO -> PARAMS.Kaveh R. Ghazi1-4/+4
* call.c: PROTO -> PARAMS. * 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. From-SVN: r31632
2000-01-18cp-tree.h (get_tinfo_fn_dynamic): Remove prototype.Nathan Sidwell1-1/+1
* cp-tree.h (get_tinfo_fn_dynamic): Remove prototype. (build_x_typeid): Likewise. (get_tinfo_fn): Likewise. (get_tinfo_fn_unused): Rename to ... (get_tinfo_decl): ... here. * rtti.c (build_headof): Replace logic error with assertion. (get_tinfo_fn_dynamic): Rename to ... (get_tinfo_decl_dynamic): ... here. Make static. Use complete_type_or_else. (build_x_typeid): Move into ... (build_typeid): ... here. Adjust call to get_tinfo_decl_dynamic. Use tinfo_from_decl. Simplify throw_bad_typeid expression. (get_tinfo_fn_unused): Rename to ... (get_tinfo_decl): ... here. Adjust comment. (get_tinfo_fn): Delete. (tinfo_from_decl): New static function. (get_typeid_1): Call get_tinfo_decl and tinfo_from_decl. (get_typeid): Use complete_type_or_else. (build_dynamic_cast_1): Adjust calls to get_tinfo_decl_dynamic. Simplify throw_bad_cast expression. * parse.y (primary): Adjust call to build_typeid. * except.c (build_eh_type_type_ref): Adjust call to get_tinfo_decl. Mark as used. * class.c (set_rtti_entry): Adjust call to get_tinfo_decl. * decl2.c (build_expr_from_tree): Adjust call to build_typeid. * parse.c: Regenerated. From-SVN: r31485
2000-01-17cp-tree.h (scratchalloc): Remove.Mark Mitchell1-8/+8
* cp-tree.h (scratchalloc): Remove. (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. From-SVN: r31473
2000-01-12call.c (convert_class_to_reference): Fix typos.Mark Mitchell1-370/+376
* call.c (convert_class_to_reference): Fix typos. (build_conditional_expr): Handle errors gracefully. * class.c (push_nested_class): Likewise. * cp-tree.h (VAR_FUNCTION_OR_PARM_DECL_CHECK): New macro. (DECL_THIS_EXTERN): Use it. (DECL_THIS_STATIC): Likewise. * cvt.c (convert_to_void): Handle errors gracefully. (build_expr_type_conversion): Likewise. * decl.c (maybe_push_decl): Likewise. (start_decl_1): Likewise. (require_complete_types_for_parms): Likewise. * parse.y (structsp): Likewise. (base_class): Likewise. * parse.c: Regenerated. * pt.c (finish_member_template_decl): Likewise. From-SVN: r31363
1999-11-16cp-tree.h (build_enumerator): Change prototype.Mark Mitchell1-815/+805
* cp-tree.h (build_enumerator): Change prototype. * decl.c (enum_next_value): Remove. (enum_overflow): Likewise. (init_decl_processing): Don't register enum_next_value as a root. (start_enum): Clear TYPE_VALUES for a redefined enum. (finish_enum): Reset the type of enumeration constants. (build_enumerator): Fix indentation. Don't copy CONST_DECLs when we don't need to. Maintain the TYPE_VALUES list and look there for the previously defined enumeration constant. Let enumeration constants have the type of their values until the enumeration type is complete. * parse.y (enumlist_opt, enumlist, enumerator): Don't return a value. (structsp): Adjust. * parse.c: Regenerated. * pt.c (tsubst_enum): Adjust according to build_enumerator changes. From-SVN: r30544
1999-11-14cp-tree.h (DECL_LOCAL_FUCNTION_P): New macro.Mark Mitchell1-546/+542
* cp-tree.h (DECL_LOCAL_FUCNTION_P): New macro. * call.c (equal_functions): Use DECL_LOCAL_FUCNTION_P, not TREE_PERMANENT. * decl.c (pushdecl): Set DECL_LOCAL_FUNCTION_P. * decl2.c (lookup_arg_dependent): Use it. * cp-tree.h (cp_finish_decl): Change prototype. (finish_static_data_member_decl): Likewise. (push_permanent_obstack): Remove declaration. (push_expression_obstack): Likewise. (push_scratch_obstack): Likewise. (DECL_TEMPLATE_PARM_P): Robustify. (SET_DECL_TEMPLATE_PARM_P): New macro. * class.c (add_method): Don't manipulate obstacks. (finish_vtbls): Likewise. * cvt.c (build_up_reference): Adjust calls to cp_finish_decl. * decl.c (binding_for_name): Don't manipulate obstacks. (maybe_push_to_top_level): Likewise. (pop_from_top_level): Likewise. (duplicate_decls): Likewise. (pushdecl): Likewise. (implicitly_declare): Likewise. (build_typename_type): Likewise. (start_decl): Likewise. (cp_finish_decl): Likewise. (finish_decl): Likewise. (destroy_local_static): Likewise. (expand_static_init): Likewise. (complete_array_type): Likewise. (grokvardecl): Likewise. (build_ptrmemfnc_type): Likewise. (grokdeclarator): Likewise. (xref_tag): Likewise. (xref_basetypes): Likewise. (start_enum): Likewise. (finish_enum): Likewise. (start_function): Likewise. (finish_function): Likewise. (start_method): Adjust call to cp_finish_decl. * decl2.c (finish_static_data_member_decl): Don't manipulate obstacks. (grokfield): Likewise. (grokbitfield): Likewise. (get_temp_name): Likewise. (get_sentry): Likewise. (fnish_file): Likewise. (lookup_arg_dependent): Likewise. * except.c (call_eh_info): Likewise. (push_eh_info): Likewise. (do_pop_exception): Likewise. (initialize_handler_parm): Likewise. (expand_end_eh_spec): Likewise. (alloc_eh_object): Likewise. (expand_throw): Likewise. * expr.c (extract_scalar_init): Likewise. * init.c (build_java_class_ref): Likewise. * lex.c (get_time_identifier): Likewise. (snarf_defarg): Likewise. (add_defarg_fn): Likewise. (is_global): Simplify. (do_identifier): Don't check TREE_PERMANENT. * method.c (emit_thunk): Don't manipulate obstacks. * parse.y (condition): Adjust call to cp_finish_decl. (primary): Likewise. (initdcl): Likewise. (initdcl0_innards): Likewise. (nomods_initdcl0): Likewise. * pt.c (push_inline_template_parms_recursive): Use SET_DECL_TEMPLATE_PARM_P. (process_template_parm): Likewise. (lookup_template_class): Don't manipulate obstacks. (instantiate_class_template): Adjust call to finish_static_data_member_decl. (tsubst_decl): Don't manipulate obstacks. (tsubst_expr): Likewise. (instantiate_template): Likewise. (instantiate_decl): Adjust calls to cp_finish_decl. * rtti.c (call_void_fn): Don't manipulate obstacks. (get_tinfo_var): Likewise. (get_tinfo_fn_unused): Likewise. (build_dynamic_cast_1): Likewise. (expand_si_desc): Likewise. (expand_class_desc): Likewise. (expand_ptr_desc): Likewise. (expand_attr_desc): Likewise. (expand_generic_desc): Likewise. (synthesize_tinfo_fn): Likewise. * search.c (expand_upcast_fixups): Likewise. * semantics.c (finish_asm_stmt): Likewise. (finish_named_return_value): Likewise. (begin_class_definition): Likewise. (finish_class_definition): Likewise. (finish_typeof): Likewise. * tree.c (build_cplus_method_type): Likewise. (reverse_path): Likewise. (copy_template_template_parm): Likewise. (build_expr_ptr_wrapper): Likewise. (push_expression_obstack): Remove. (push_permanent_obstack): Likewise. * typeck.c (mark_addressable): Likewise. From-SVN: r30527
1999-11-07cp-tree.h (begin_new_placement): Remove.Mark Mitchell1-4501/+4502
* cp-tree.h (begin_new_placement): Remove. (finish_new_placement): Likewise. * class.c (finish_struct_1): Don't suspend_momentary or resume_momentary. * decl.c (grokdeclarator): Likewise. (maybe_build_cleanup_1): Likewise. * except.c (push_eh_cleanup): Likewise. (build_terminate_handler): Likewise. * init.c (build_new_1): Likewise. * parse.y (parse_decl): Change prototype. (initdecls, notype_initdecls, initdcl): Don't return int. (initdcl0, notype_initdcl0, initdcl0_innards): Likewise. (.begin_new_placement): Remove. (.finish_new_placement): Likewise. (nonmomentary_expr): Likewise. (suspend_mom): Likewise. (condition): Don't suspend_momentary, resume_momentary, or keep track of need to resume. (unary_expr): Likewise. (new_placement): Likewise. (decl): Likewise. (structsp): Likewise. (new_type_id): Likewise. (maybe_parmlist): Likewise. (direct_after_type_declaration): Likewise. (direct_new_declarator): Likewise. (direct_abstract_declaration): Likewise. * parse.c: Regenerated. * pt.c (tsubst_expr): Don't suspend_momentary or resume_momentary. * semantics.c (begin_new_placement): Remove. (finish_new_placement): Likewise. From-SVN: r30443
1999-10-29cp-tree.h (make_typename_type): Change prototype.Mark Mitchell1-230/+233
* cp-tree.h (make_typename_type): Change prototype. * decl.c (make_typename_type): Only complain if so requested. * parse.y (nested_name_specifier): Adjust calls. (typename_sub0): Likewise. (typename_sub1): Likewise. * parse.c: Regenerated. * pt.c (convert_template_argument): Pass complain to make_typename_type. (tsubst): Likewise. From-SVN: r30254
1999-10-25decl.c (push_overloaded_decl_1): Use pushdecl.Mark Mitchell1-812/+809
* decl.c (push_overloaded_decl_1): Use pushdecl. * decl.c (auto_function): Replace #ifdef'd __inline with just plain inline. * lex.c (my_get_run_time): Likeise. (yyprint): Likewise. (identifier_type): Likewise. * method.c (start_squangling): Likewise. (end_squangling): Likewise. (icat): Likewise. (old_backref_index): Likewise. (flush_repeats): Likewise. (issue_ktype): Likewise. * parse.y (empty_parms): Likewise. * parse.c: Regenerated. From-SVN: r30154
1999-10-22regenJason Merrill1-1/+1
From-SVN: r30136
1999-10-03cp-tree.def (VEC_INIT_EXPR): Remove.Mark Mitchell1-123/+118
* cp-tree.def (VEC_INIT_EXPR): Remove. * cp-tree.h (struct stmt_tree): New type. (struct saved_scope): Remove firstobj. Add x_saved_tree, x_stmt_tree. (class_cache_firstobj): Remove. (struct language_function): Remove stmts_are_full_exprs_p, x_last_tree, and x_last_expr_type. Add x_stmt_tree. (current_stmt_tree): New macro. (last_tree): Adjust. (last_expr_type): Likewise. (doing_semantic_analysis_p): Simplify. (stmts_are_full_exprs_p): Adjust. (begin_tree): Remove prototype. (end_tree): Likewise. (begin_stmt_tree): Change prototype. (finish_stmt_tree): Likewise. (building_stmt_tree): Simplify. * decl.c (mark_stmt_tree): New function. (mark_saved_scope): Use it. (start_function): Rearrange slightly to call begin_stmt_tree earlier. (save_function_data): Tweak. (finish_function): Adjust call to finish_stmt_tree. (mark_lang_function): Use mark_stmt_tree. * expr.c (cplus_expand_expr): Don't handle VEC_INIT_EXPR. * init.c (build_new_1): Remove creation of VEC_INIT_EXPR. (build_vec_init): Remove creation of stand-in intializer. * pt.c (begin_tree): Remove. (end_tree): Likewise. * semantics.c (SET_LAST_STMT): New macro. Use it throughout. (begin_compound_stmt): Handle a compound-statement outside of a function. (begin_stmt_expr): Handle a statement-expression outsidef of a function. (finish_stmt_expr): Likewise. (begin_class_definition): Don't call begin_tree. (finish_inline_definitions): Don't call end_tree. (begin_stmt_tree): Take a pointer to tree, not a function as input. (finish_stmt_tree): Likewise. * tree.c (search_tree): Don't handle VEC_INIT_EXPR. (mapcar): Likewise. * parse.y (simple_stmt): Don't call finish_stmt unnecessarily. * parse.c: Regenerated. * dump.c (dqueue_and_dump): Dump bitfieldness. From-SVN: r29786
1999-09-21cp-tree.h (finish_stmt_expr): Change prototype.Mark Mitchell1-533/+527
* cp-tree.h (finish_stmt_expr): Change prototype. * expr.c (cplus_expand_expr): Adjust call accordingly. * init.c (finish_init_stmts): Likewise. * parse.y (primary): Likewise. * pt.c (tsubst_copy): Likewise. * semantics.c (finish_stmt_expr): Don't take two parameters. Don't remove generated BLOCKs from the block-tree. From-SVN: r29537
1999-09-18Turn on function-at-a-time processing.Mark Mitchell1-702/+698
* 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. From-SVN: r29490
1999-09-17cp-tree.h (poplevel_class): Declare.Mark Mitchell1-4228/+4216
* cp-tree.h (poplevel_class): Declare. * class.c (popclass): Use poplevel_class, not poplevel. * decl.c (poplevel_class): Don't make it static. Don't return a value. (poplevel): Don't call poplevel_class; abort in a class binding level is seen. * semantics.c (finish_translation_unit): Use pop_everything. * parse.y (member_init): Allow errors. (pending_inline): Call finish_function. * parse.c: Regenerated. * Makefile.in (CONFLICTS): Adjust. From-SVN: r29472
1999-09-10RegeneratedMark Mitchell1-1/+1
From-SVN: r29258
1999-09-09cp-tree.h (begin_switch_stmt): Adjust prototype.Mark Mitchell1-2/+2
* cp-tree.h (begin_switch_stmt): Adjust prototype. (finish_switch_cond): Likewise. * parse.y (simple_stmt): Adjust accordingly. * parse.c: Regenerated. * pt.c (tsubst_expr): Adjust accordingly. * semantics.c (expand_cond): New function. (FINISH_COND): New macro. (begin_switch_stmt): Build the SWITCH_STMT here. (finish_switch_stmt_cond): Not here. (expand_stmt): Adjust calls to begin_switch_stmt and finish_switch_cond. Use expand_cond throughout. From-SVN: r29246
1999-09-09Reorganize per-function data.Mark Mitchell1-392/+396
* cp-tree.h (saved_scope): Add function_decl, bindings. (language_function): Rename binding_level to bindings. (cp_function_chain): Use the current_function, not the outer_function_chain. (current_class_ptr): Make it work, even when there's no current function. (current_class_ref): Likewise. (SF_DEFAULT, SF_PRE_PARSED, SF_INCLASS_INLINE, SF_EXPAND): New macros. (clear_temp_name): Remove. * decl.c (check_function_type): New function, broken out from start_function. (current_binding_level): Adjust definition. (pushlevel): Simplify. (poplevel): Don't use named_label_uses when we're outside a function scope. (mark_saved_scope): Mark function_decl and bindings. (maybe_push_to_top_level): Don't unconditionally push a new function context. Save bindings and the current_function_decl. Don't clear named_labels. (pop_from_top_level): Pop function context if appropriate. (init_decl_processing): Set init_lang_status and free_lang_status, rather than save_lang_status and restore_lang_status. (start_function): Take SF_* flags. Don't clear per-function data. Reorder and simplify to use new per-function data code. Add asserts. (store_parm_decls): Don't call init_function_start here. (finish_function): Adjust for new handling of per-function data. (push_cp_function_context): Simplify. (mark_cp_function_context): Change binding_level to bindings. * decl2.c (clear_temp_name): Remove. (start_objects): Use SF flags to start_function. (start_static_storage_duration_function): Likewise. * except.c (start_anon_func): Remove redundant calls to push_function_context_to. Use SF flags to start function. (end_anon_func): Remove redundant call to pop_function_context from. * lex.c (reinit_parse_for_function): Don't initialize per-function data. * method.c (emit_thunk): Clear current_function after calling assemble_end_function. Use SF flags for start_function. (synthesize_method): Use SF flags for start_function. * parse.c: Regenerated. * parse.y (fn.defpen): Likewise. (pending_inline): Clear current_function, even if something goes wrong. * pt.c (instantiate_decl): Use SF flags to start_function. Don't save and restore expanding_p. (add_tree): Handle the case where we are outside any function. (end_tree): Likewise. * rtti.c (sythesize_tinfo_fn): Use SF flags to start_function. * semantics.c (begin_function_definition): Likewise. (expand_body): Likewise. From-SVN: r29240
1999-09-09cp-tree.h (scratch_tree_cons): Remove.Mark Mitchell1-4/+4
* cp-tree.h (scratch_tree_cons): Remove. * call.c: Replace all uses of expr_tree_cons, saveable_tree_cons, and perm_tree_cons with plain tree_cons. * class.c: Likewise. * decl.c: Likewise. * decl2.c: Likewise. * except.c: Likewise. * expr.c: Likewise. * init.c: Likewise. * lex.c: Likewise. * method.c: Likewise. * parse.y: Likewise. * pt.c: Likewise. * repo.c: Likewise. * rtti.c: Likewise. * search.c: Likewise. * typeck.c: Likewise. * parse.c: Regenerated. * tree.c (build_srcloc): Simplify. From-SVN: r29225
1999-09-08cp-tree.h (copy_to_permanent): Remove.Mark Mitchell1-1/+1
* cp-tree.h (copy_to_permanent): Remove. (permanent_p): Likewise. * decl.c (building_typename_type): Don't use copy_to_permanent. (start_decl): Likewise. (grok_reference_init): Likewise. (cp_finish_decl): Likewise. * init.c (build_new_1): Don't use mapcar. (build_vec_delete_1): Don't use copy_to_permanent. (build_vec_init): Likewise. * parse.y (primary): Likewise. * parse.c: Regenerated. * pt.c (push_template_decl_real): Don't use copy_to_permanent. (lookup_template_class): Likewise. (tsubst_friend_function): Likewise. (instantiate_class_template): Likewise. (tsubst_decl): Likewise. (tsubst): Likewise. (instantiate_template): Likewise. (unify): Likewise. * rtti.c (get_tinfo_fn): Likewise. (build_dynamic_cast): Likewise. * semantics.c (finish_if_stmt_cond): Likewise. (finish_while_stmt_cond): Likewise. (finish_do_stmt): Likewise. (finish_for_cond): Likewise. (finish_for_expr): Likewise. (finish_cleanup): Likewise. (add_decl_stmt): Likewise. (finish_named_return_value): Likewise. (finish_qualified_call_expr): Likewise. * tree.c (perm_manip): Remove. (build_exception_variant): Don't use copy_to_permanent. (permanent_p): Remove. (copy_to_permament): Remove. (build_min_nt): Don't use copy_to_permanent. (build_min): Likewise. (min_tree_cons): Likewise. * typeckc.c (build_static_cast): Likewise. (build_reinterpret_cast): Likewise. (build_const_cast): Likewise. From-SVN: r29211
1999-09-07Makefile.in (tree.o): Depend on ggc.h.Mark Mitchell1-1318/+1316
* Makefile.in (tree.o): Depend on ggc.h. * class.c (make_method_vec): Remove. (free_method_vec): Likewise. (free_method_vecs): Remove. (add_method): Don't use them. * cp-tree.def (PTRMEM_CST): Make it longer. (TEMPLATE_PARM_INDEX): Make it shorter. * cp-tree.h (BINDING_HAS_LEVEL_P): New macro. (template_parm_index): Remove RTL field. (ptrmem_cst): Add RTL field. (finish_function): Removed parameter. (process_next_inline): Change prototype. (init_cplus_unsave): Rename to init_tree. (binding_init): Remove. * decl.c (free_binding_nodes): Remove. (push_binding): Don't use them. Set BINDING_HAS_LEVEL_P. (pop_binding): Don't use free_binding_nodes. (free_binding_vecs): Remove. (store_bindings): Don't use them. (pop_from_top_level): Likewise. (lookup_namespace_name): Simplify. (build_typename_type): Don't use obstack_free. (unqualified_namespace_lookup): Simplify. (lookup_name_real): Simplify. (start_function): Remove comment about leaks. (finish_function): Removed nested parameter. Call expand_end_bindings even when building_stmt_tree. Call ggc_push_context and ggc_pop_context around rest_of_compilation, if necessary. (mark_cp_function_context): Handle a NULL language-context. (lang_mark_false_label_stack): Fix typo. (lang_mark_tree): Handle CPLUS_BINDING, OVERLOAD, TEMPLATE_PARM_INDEX. Handle the funny TYPE_LANG_SPECIFIC on pointer to method types. (lang_cleanup_tree): Use free to free TYPE_LANG_SPECIFIC. * decl2.c (finish_objects): Adjust call to finish_function. (finish_static_store_duration_function): Likewise. (do_nonmember_using_decl): Remove call to binding_init. * except.c (end_anon_func): Adjust call to finish_function. * lex.c (mark_impl_file_chain): New function. (init_parse): Call init_tree, not init_cplus_unsave. Add GC roots. (cp_pramga_interface): Use xmalloc, not permalloc. (cp_pragma_implementation): Likewise. (begin_definition_of_inclass_inline): Simplify. (process_next_inline): Adjust prototype. (do_scoped_id): Don't call binding_init. (make_lang_type): Allocate TYPE_LANG_SPECIFIC with xmalloc. (emit_thunk): Adjust call to finish_function. (synthesize_method): Likewise. * parse.y (%union): Add a new `pi' variant. (PRE_PARSED_FUNCTION_DECL): Use it. (fn.defpen): Likewise. (fndef): Adjust call to finish_function. (instantiate_decl): Likewise. (rtti.c): Likewise. (semantics.c): Likewise. * tree.c: Include ggc.h. (mark_list_hash): New function. (binding_init): Remove. (init_cplus_unsave): Rename to ... (init_tree): This. Add GC roots. From-SVN: r29172
1999-09-05Makefile.in (parse.o): Depend on ggc.h.Mark Mitchell1-809/+819
* Makefile.in (parse.o): Depend on ggc.h. (decl2.o): Depend on ggc.h. (init.o): Depend on ggc.h. * cp-tree.h (init_decl2): Declare. (cp_parse_init): Likewise. * decl.c (ggc_p): Define to zero. (mark_saved_scope): New function. (init_decl_processing): Call cp_parse_init, and cp_decl2. Register GC roots. (expand_static_init): Add GC roots. * decl2.c: Include ggc.h. (init_decl2): New function. * init.c: Include ggc.h. (init_init_processing): Add GC roots. * parse.y: Include ggc.h. (cp_parse_init): New function. From-SVN: r29129
1999-08-31c-parse.in (language_string): Constify.Kaveh R. Ghazi1-1/+1
* c-parse.in (language_string): Constify. * dwarf2out.c (language_string): Remove declaration. * dwarfout.c (language_string): Likewise. * toplev.c (language_string, init_parse, finish_parse): Likewise. * tree.h (language_string, init_parse, finish_parse): Declare. * i386/sun386.h (language_string): Remove declaration. * mips.h (language_string): Likewise. * nextstep.h (language_string): Likewise. * nextstep21.h (language_string): Likewise. * rs6000.c (language_string): Likewise. In ch: * parse.c (language_string): Constify. In cp: * parse.y (language_string): Constify. In f: * com.c (language_string): Constify. In java: * lang.c (language_string): Constify. From-SVN: r29000
1999-08-30cp-tree.h (start_handler_parms): New function.Mark Mitchell1-105/+107
* cp-tree.h (start_handler_parms): New function. (expand_start_catch_block): Take only one parameter. (start_handler_parms): New function. * decl.c (start_handler_parms): Define it. * except.c (process_start_catch_block): Take only one parameter. Don't call grokdeclarator here. (expand_start_catch_block): Don't call grokdeclarator here, either. * parse.y (handler_args): Adjust call to expand_start_catch_block. Use start_handler_parms. * pt.c (push_template_decl_real): Make permanent lists have permanent elements. (tsubst_expr): Adjust calls to expand_start_catch_block appropriately. * semantics.c (expand_stmt): Likewise. From-SVN: r28983