1. 24 Sep, 1999 6 commits
    • cp-tree.h (CPTI_CLEANUP_TYPE): New macro. · b3ab27f3
      	* cp-tree.h (CPTI_CLEANUP_TYPE): New macro.
      	(cleanup_type): Likewise.
      	(search_tree): Change prototype.
      	* decl.c (local_variable_p): Adjust for new interface to
      	search_tree.
      	(check_default_argument): Likewise.
      	* error.c (dump_expr): Handle INIT_EXPR.
      	* except.c (expand_throw): Don't make cleanup_type a local static.
      	* expr.c (cplus_expand_expr): Don't handle NEW_EXPR.
      	* init.c (build_new): Call build_new_1 directly, rather than
      	building a NEW_EXPR.
      	(build_new_1): Tidy.  Don't build a VEC_INIT_EXPR except when
      	processing file-scope initializers.
      	* lex.c (init_parse): Add an opname_tab entry for INIT_EXPR.
      	* tree.c: Include splay-tree.h
      	(no_linkage_helper): Adjust for new interface to search_tree.
      	(search_tree): Pass around pointers to tree nodes, rather than the
      	nodes themselves.  Handle VEC_INIT_EXPR.
      	(no_linkage_check): Adjust for new interface to search_tree.
      	(mapcar): Handle VEC_INIT_EXPR.
      	(target_remap): New variable.
      	(bot_manip): Use it.
      	(bot_replace): New function.
      	(break_out_target_exprs): Use it to remap all variables used in a
      	default argument expression.
      	* typeck.c (build_modify_expr): Don't crash when outside a
      	function and presented with an INIT_EXPR assignment
      	* Makefile.in (tree.o): Depend on splay-tree.h.
      
      From-SVN: r29659
      Mark Mitchell committed
    • decl.c (pushdecl): Don't make local declarations of extern variables give the variable a... · f39ee884
      	* decl.c (pushdecl): Don't make local declarations of extern
      	variables give the variable a DECL_CONTEXT for the function.
      	(make_rtl_for_nonlocal_decl): Don't fuss with obstacks.  Simplify.
      	Don't accidentally make RTL for local declarations.
      	(emit_local_var): Handle declarations with asm-specifiers here.
      
      From-SVN: r29650
      Mark Mitchell committed
    • ir.texi: Improve documentation for TARGET_EXPRs. · 8d54f0f0
      	* ir.texi: Improve documentation for TARGET_EXPRs.  Discuss
      	STMT_IS_FULL_EXPR_P.
      
      From-SVN: r29647
      Mark Mitchell committed
    • cp-tree.h (language_function): Add cannot_inline. · 914653a2
      	* cp-tree.h (language_function): Add cannot_inline.
      	* decl.c (start_function): Restore current_function_cannot_inline
      	from the saved value.
      	(save_function_data): Save current_function_cannot_inline.
      	* decl2.c (start_objects): Change prototype.  Build the function
      	in function-at-a-time mode.
      	(finish_objects): Likewise.
      	(generate_ctor_or_dtor_function): Adjust accordingly.
      
      From-SVN: r29646
      Mark Mitchell committed
    • cp-tree.h (DECL_ANON_UNION_ELEMS): New macro. · 0fa5e05c
      	* cp-tree.h (DECL_ANON_UNION_ELEMS): New macro.
      	* decl2.c (finish_anon_union): Set DECL_ANON_UNION_ELEMS.
      	Don't call expand_anon_union_decl here
      	* semantics.c (exapnd_stmt): Call it here, instead.
      	* typeck.c (mark_addressable): Addressed variables are implicitly
      	used.
      
      From-SVN: r29645
      Mark Mitchell committed
  2. 23 Sep, 1999 5 commits
  3. 22 Sep, 1999 2 commits
  4. 21 Sep, 1999 8 commits
    • dump.c (dequeue_and_dump): Handle START_CATCH_STMT, CLEANUP_STMT, and SCOPE_STMT. · 9f14fb64
      	* dump.c (dequeue_and_dump): Handle START_CATCH_STMT,
      	CLEANUP_STMT, and SCOPE_STMT.
      
      From-SVN: r29564
      Mark Mitchell committed
    • decl2.c (lang_decode_option): Adjust, in the wake of recent changes to option processing. · 69ca7658
      	* decl2.c (lang_decode_option): Adjust, in the wake of recent
      	changes to option processing.
      
      From-SVN: r29562
      Mark Mitchell committed
    • typeck.c (get_member_function_from_ptrfunc): Allow extraction of function… · 32facac8
      typeck.c (get_member_function_from_ptrfunc): Allow extraction of function pointer from pmfs with no object given.
      
      	* typeck.c (get_member_function_from_ptrfunc): Allow extraction of
      	function pointer from pmfs with no object given.
      	(convert_for_assignment): Do not return error when converting
      	pmfs.
      
      From-SVN: r29559
      Martin v. Löwis committed
    • Replace string const "<internal>" with dynamic allocation. · f3cdb9c6
      	* lex.c (internal_filename): New variable.
      	(INTERNAL_FILENAME): New macro.
      	(init_parse): Allocate internal_filename and mark as root.  Use it
      	instead of a string constant.
      
      From-SVN: r29553
      Alex Samuel committed
    • Reimplement dynamic cast and catch matching. · 4a9e5c67
      	* cp-tree.h (get_dynamic_cast_base_type): Prototype new function
      	* search.c (dynamic_cast_base_recurse): New function.
      	(get_dynamic_cast_base_type): New function for dynamic cast.
      	* rtti.c (build_dynamic_cast_1): Determine source and target
      	class relationship. Call __dynamic_cast_2.
      	* tinfo.h (__user_type_info::upcast): New catch dispatcher.
      	(__user_type_info::dyncast): New dynamic cast dispatcher.
      	(__user_type_info::sub_kind): New nested enumeration.
      	(__user_type_info::contained_p): sub_kind predicate.
      	(__user_type_info::contained_public_p): Likewise.
      	(__user_type_info::contained_nonpublic_p): Likewise.
      	(__user_type_info::contained_nonvirtual_p: Likewise.
      	(__user_type_info::upcast_result): New nested struct.
      	(__user_type_info::dyncast_result): New nested struct.
      	(*::do_upcast): New catch function.
      	(*::do_dyncast): New dynamic cast function.
      	(__user_type_info::find_public_subobj): New dynamic cast
      	helper dispatcher.
      	(*::do_find_public_subobj): New dynamic cast helper function.
      	* tinfo.cc (__user_type_info::upcast): Define catch dispatcher.
      	(__user_type_info::dyncast): Define dynamic cast dispatcher.
      	(*::do_upcast): Define catch function.
      	(*::do_dyncast): Define dynamic cast function.
      	(*::do_find_public_subobj): Define dynamic cast helper function.
      	* tinfo2.cc (__throw_type_match_rtti_2): Use upcast.
      	(__dynamic_cast): Backwards compatibility wrapper. Use dyncast.
      	(__dynamic_cast_2): New dynamic cast runtime.
      
      From-SVN: r29544
      Nathan Sidwell committed
    • Force check-in to ensure that it is up to date. · 9f52c201
      From-SVN: r29539
      Mark Mitchell committed
    • cp-tree.h (finish_stmt_expr): Change prototype. · bce9471e
      	* 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
      Mark Mitchell committed
    • cp-tree.h (finish_stmt_expr): Change prototype. · 5ba57b55
              * 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: r29536
      Alexandre Oliva committed
  5. 20 Sep, 1999 5 commits
    • cp-tree.h (finish_stmt_expr): Change prototype. · 447cfcb9
      	* 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: r29533
      Mark Mitchell committed
    • Remove support for assigning to `this'. · 9bfadf57
      	* NEWS: Note that fact.
      	* class.c (build_vbase_path): Don't check flag_this_is_variable.
      	* cp-tree.h (EXPR_STMT_ASSIGNS_THIS): Remove.
      	(language_function): Remove assigns_this, just_assigned_this, and
      	x_base_init_expr.  Add x_vcalls_possible_p.  Add vtbls_set_up_p.
      	(base_init_expr): Remove.
      	(current_vcalls_possible_p): New macro.
      	(vtbls_set_up_p): Likewise.
      	(emit_base_init): Change prototype.
      	* decl.c (finish_destructor_body): New function, split out from
      	finish_function.
      	(current_function_assigns_this): Remove.
      	(current_function_just_assigned_this): Likewise.
      	(start_function): Don't set them.
      	(finish_function): Don't check them.  Don't emit
      	base-initialization code here.  Generate code for destructors when
      	doing semantic analysis.
      	(finish_stmt): Don't check current_function_just_assigned_this.
      	* decl2.c (lang_f_options): Remove this-is-variable.
      	(lang_decode_option): Likewise.
      	(grokclassfn): Don't check flag_this_is_variable.
      	* init.c (emit_base_init): Return the expression generated.
      	(construct_virtual_bases): Don't push/pop obstacks.  Fix
      	typo.
      	(build_new_1): Don't check flag_this_is_variable.
      	(get_temp_regvar): Don't set DECL_REGISTER.
      	(build_vec_init): Don't call use_variable.
      	* lang-options.h: Remove "-fthis-is-variable" and
      	"-fno-this-is-variable".
      	* pt.c (tsubst_expr): Don't check EXPR_STMT_ASSIGNS_THIS.
      	* search.c (expand_upcast_fixups): Use finish_expr_stmt, not
      	expand_expr_stmt.
      	* semantics.c (finish_expr_stmt_real): Rename to ...
      	(finish_expr_stmt): This.  Remove assigned_this parameter.
      	(begin_if_stmt): Call do_pushlevel before starting the statement.
      	(begin_compound_stmt): Don't declare __FUNCTION__ in scope-less
      	blocks.
      	(setup_vtbl_ptr): Emit initialization code for bases and members
      	at semantic-analysis time.  Emit code to initialize vtables in
      	destructors here.
      	(expand_stmt): Use finish_expr_stmt, not finish_expr_stmt_real.
      	Don't handle CTOR_INITIALIZER any more.
      	* typeck.c (build_modify_expr): Don't check for assignments to
      	this.
      	(c_expand_return): Don't suggest assigning to `this'.
      
      	* Makefile.in (decl.o): Depend on RTL_H.
      	(decl2.o): Likewise.
      	(class.o): Likewise.
      	(call.o): Likewise.
      	(method.o): Likewise.
      	(search.o): Likewise.
      	(tree.o): Likewise.
      	(pt.o): Likewise.
      
      	* decl.c (duplicate_decls): When a builtin function is redeclared
      	as static, make sure it is mangled correctly.
      
      	* ir.texi (CTOR_INITIALIZER): Remove mention.  Fix typo.  Add
      	detail about the statement-tree.
      
      From-SVN: r29531
      Mark Mitchell committed
    • Add comment saying that lang_decode_options should not complain about · 03d32d1a
      unrecognised options.
      
      From-SVN: r29522
      Nick Clifton committed
  6. 19 Sep, 1999 2 commits
  7. 18 Sep, 1999 3 commits
    • decl.c (layout_var_decl): Change prototype. · 57b52417
      	* decl.c (layout_var_decl): Change prototype.  Call layout_decl
      	even when the declaration is external.
      	(cp_finish_decl): Adjust call to layout_var_decl.
      	* pt.c (tsubst_expr): Make sure to initialize stmt before using it.
      
      From-SVN: r29504
      Mark Mitchell committed
    • typeck.c (get_member_function_from_ptrfunc): Always consider virtuality inside member pointer. · 03b256e4
      	* typeck.c (get_member_function_from_ptrfunc): Always consider
      	virtuality inside member pointer.
      
      From-SVN: r29494
      Martin v. Löwis committed
    • Turn on function-at-a-time processing. · b35d4555
      	* 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
      Mark Mitchell committed
  8. 17 Sep, 1999 9 commits
    • cp-tree.h (language_function): Add x_eh_spec_try_block. · 2c146a76
      	* cp-tree.h (language_function): Add x_eh_spec_try_block.  Add
      	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.
      
      From-SVN: r29489
      Mark Mitchell committed
    • cp-tree.def (CLEANUP_STMT): Fix spelling in dumps. · 59026e79
      	* cp-tree.def (CLEANUP_STMT): Fix spelling in dumps.
      	(TRY_BLOCK): Likewise.
      	(HANDLER): Likewise.
      	(START_CATCH_STMT): New tree node.
      	(SCOPE_STMT): Likewise.
      	* cp-tree.h (SCOPE_BEGIN_P): New macro.
      	(SCOPE_NULLIFIED_P): Likewise.
      	(struct lang_decl_flags): Add pending_inline_p.  Adjust dummy.
      	(struct lang_decl): Add saved_language_function.
      	(DECL_PENDING_INLINE_INFO): Adjust documentation.
      	(DECL_PENDING_INLINE_P): New macro.
      	(TYPE_TI_ARGS): Fix typo in comment.
      	(DECL_SAVED_TREE): Add to documentation.
      	(DECL_SAVED_FUNCTION_DATA): New macro.
      	(START_CATCH_TYPE): Likewise.
      	(SCOPE_END_P): New macro.
      	(declare_parm_level): Don't declare.
      	* decl.c (mark_lang_function): New function, split out from
      	mark_cp_function_context.
      	(save_function_data): New function.
      	(declare_parm_level): Remove.
      	(finish_function): Use save_function_data to squirrel away
      	important stuff for later use.
      	(mark_cp_function_context): Use mark_function_data.
      	(lang_mark_tree): Likewise.
      	* lex.c (begin_definition_of_inclass_inline): Set
      	DECL_PENDING_INLINE_P.
      	(store_pending_inline): Clear it.
      	* pt.c (tsubst_decl): Likewise.
      
      From-SVN: r29488
      Mark Mitchell committed
    • Revert call.c 1.173 change, do same effect, but more obviously. · b5534c65
      	* call.c (perform_implicit_conversion): Deal with error_mark_node.
      
      From-SVN: r29478
      Nathan Sidwell committed
    • decl.c (warn_extern_redeclared_static): Don't get confused by static member functions. · 963d5758
      	* decl.c (warn_extern_redeclared_static): Don't get confused by
      	static member functions.
      	(duplicate_decls): Merge DECL_THIS_STATIC.
      
      	* decl.c (expand_static_init): Make sure assignments to local
      	statics actually occur.
      
      From-SVN: r29477
      Mark Mitchell committed
    • cp-tree.h (poplevel_class): Declare. · 273a708f
      	* 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
      Mark Mitchell committed
    • revert · 7c39cdd4
      From-SVN: r29471
      Jason Merrill committed
    • Add missing Changelog entry. · 905d7d33
      From-SVN: r29470
      Gabriel Dos Reis committed
    • error.c: Reduce code duplication. · 5f77d6cc
      1999-09-17  Gabriel Dos Reis  <gdr@codesourcery.com>
      
              * error.c: Reduce code duplication.
              (dump_template_value): New function.
              (dump_type_real): Use it.
              (dump_decl): Likewise.
              (dump_function_name): Likewise.
              (dump_function_decl): Don't be too talkative about function return
              type variety.
      
      From-SVN: r29469
      Gabriel Dos Reis committed