OSDN Git Service

* decl.c (initialize_local_var): Handle static variables here.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 5819eca..a97890d 100644 (file)
+1999-09-30  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (initialize_local_var): Handle static variables here.
+       (cp_finish_decl): Tweak handling of function-scope static
+       variables.
+       * semantics.c (expand_stmt): Handle DECL_STMTs for static
+       variables.
+
+       * method.c (emit_thunk): Don't crash when -fsyntax-only.
+
+       * cp-tree.h (lang_decl_flags): Add global_ctor_p and
+       global_dtor_p.  Add init_priority.
+       (DECL_ACCESS): Adjust accordingly.
+       (DECL_GLOBAL_CTOR_P, DECL_GLOBAL_DTOR_P): New macros.
+       (GLOBAL_INIT_PRIORITY): Likewise.
+       * decl.c (lang_mark_tree): Adjust accordingly.
+       (start_objects): Set DECL_GLOBAL_CTOR_P, DECL_GLOBAL_DTOR_P, 
+       and GLOBAL_INIT_PRIORITY.
+       * dump.c (dequeue_and_dump): Print them.
+       * ir.texi: Document them.
+
+       * decl2.c (struct priority_info_s): Remove initialization_sequence
+       and destruction_sequence.
+       (start_static_storage_duration_function): Return the body of the
+       function.  Convert for function-at-a-time mode.
+       (generate_inits_for_priority): Remove.
+       (finish_static_storage_duration_function): Change prototype.
+       Adjust for function-at-a-time mode.
+       (do_static_initialization): Likewise.
+       (do_static_destruction): Likewise.
+       (do_static_initialization_and_destruction): Remove.
+       (start_static_initialization_or_destruction): New function.
+       (finish_static_initialization_or_destruction): Likewise.
+       (get_priority_info): Don't manipulation initialization_sequence or
+       destruction_sequence.
+       (prune_vars_needing_no_initialization): New function.
+       (write_out_vars): Likewise.
+       (finish_file): Use the various new functions instead of the old.
+       
+Thu Sep 30 00:13:27 1999  Dirk Zoller  <duz@rtsffm.com>
+
+       * cp-tree.h (warn_float_equal): Declare.
+       * decl2.c (warn_float_equal): Define.
+       (lang_decode_option): Recognize -W[no-]float-equal.
+       * typeck.c (build_binary_op_nodefault): Conditionally warn
+       about equality tests of floating point types.
+
+1999-09-29  Jason Merrill  <jason@yorick.cygnus.com>
+
+       Support normal type_info-based EH mechanisms with -fno-rtti.
+       * except.c (build_eh_type_type): Remove special -fno-rtti handling.
+       (build_eh_type_type_ref): Likewise.
+       (build_eh_type): Remove.
+       (expand_throw): Call build_eh_type_type, not build_eh_type.
+       * decl2.c (import_export_decl): Don't associate the tinfo fn with
+       the vtable if -fno-rtti.
+       * decl.c (init_decl_processing): Always init_rtti_processing.
+
+       * rtti.c (get_typeid): Don't complain about -fno-rtti.
+
+       * class.c (class_cache_obstack, class_obstack): Remove.
+       (init_class_processing): Don't initialize class_obstack.
+       (push_cache_obstack): Remove.
+       (pushclass): Don't call it.
+       * cp-tree.h: Remove prototype for push_cache_obstack.
+       * decl.c (decl_obstack, decl_stack, push_decl_level): Remove.
+       (pushlevel_class): Don't push_decl_level.
+       (poplevel_class): Don't pop_stack_level.
+       (push_class_level_binding): Don't push_cache_obstack.
+       (init_decl_processing): Don't intialize decl_obstack.
+       * search.c (push_class_decls): Don't push_cache_obstack.
+       * tree.c (list_hash_add): Put hash node on permanent_obstack.
+       (hash_tree_cons): Don't mess with obstacks.
+       (print_lang_statistics): Don't print stats for class_obstack and
+       decl_obstack.
+
+1999-09-29  Mark Mitchell  <mark@codesourcery.com>
+
+       * dump.c (dequeue_and_dump): Dump DECL_EXTERNAL.
+       * ir.texi: Document DECL_EXTERNAL.
+
+       * dump.c (dequeue_and_dump): Improve support for dumping THUNK_DECLs.
+       * ir.texi: Document THUNK_DECLs.
+
+       * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Move here from pt.c.
+       (TMPL_ARGS_DEPTH, TMPL_ARGS_LEVEL, SET_TMPL_ARGS_LEVEL): Likewise.
+       (TMPL_ARG, SET_TMPL_ARG, NUM_TMPL_ARGS, TMPL_PARMS_DEPTH): Likewise.
+       * error.c (dump_template_bindings): Remove unused parameter.
+       Handle multiple levels of template parameters.
+       (dump_template_decl): Use `parms', not `args', for template
+       parameters.  Fix thinko.
+       (dump_function_decl): Use DECL_TEMPLATE_INSTANTIATION.  Don't pass
+       flags to dump_template_bindings.
+       * pt.c (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Move to cp-tree.h.
+       (TMPL_ARGS_DEPTH, TMPL_ARGS_LEVEL, SET_TMPL_ARGS_LEVEL): Likewise.
+       (TMPL_ARG, SET_TMPL_ARG, NUM_TMPL_ARGS, TMPL_PARMS_DEPTH): Likewise.
+       (tsubst_copy): Clarify variable name.
+       (most_general_template): Robustify.
+       
+1999-09-29  Nathan Sidwell  <nathan@acm.org>
+
+       * error.c (dump_template_parms): Don't use TS_PEDANTIC_NAME
+       to change primary template rendering.
+
+1999-09-29  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (UPT_TEMPLATE): Remove.
+       (UPT_PARMS): Likewise.
+       (DECL_NEEDED_P): New macro.
+       * decl2.c (finish_vtable_vardecl): Use it.
+       (finish_objects): Don't crash with -fsyntax-only.
+       (finish_file): Use DECL_NEEDED_P.  Don't prune vtables when
+       -fsyntax-only.
+       * pt.c (tsubst_friend_function): Remove FIXME that talks about
+       obstacks.
+       (tsubst_expr): Correct handling of function try-blocks.
+       * semantics.c: Include flags.h.
+       (expand_body): Don't do RTL generation if -fsyntax-only.
+       * Makefile.in (semantics.o): Depends on flags.h.
+       
+1999-09-28  Gabriel Dos Reis  <gdr@codesourcery.com>
+
+        * pt.c (most_general_template): Adjust declaration.
+
+        * cp-tree.h: (most_general_template): Declare.
+
+        * error.c (dump_template_value): Rename to ...
+        (dump_template_argument): This.
+        (dump_template_argument_list): New function.
+        (dump_type): Use it.
+        (dump_template_parameter): New function.
+        (dump_template_decl): Use it.
+        (dump_template_bindings): New function.
+        (dump_function_decl): Use it. Pretty print function template
+        instantiations.
+
+1999-09-28  Nathan Sidwell  <nathan@acm.org>
+
+       * decl.c (grokdeclarator): Distinguish parameter context for
+       diagnostics. Tidy up missing type diagnostic.
+       Diagnose `explicit' in one place. Diagnose `mutable' in one place.
+
+1999-09-28  Mark Mitchell  <mark@codesourcery.com>
+
+       * ir.texi: Improve documentation for TARGET_EXPR.
+
+1999-09-27  Nathan Sidwell  <nathan@acm.org>
+
+       Augment stringification of trees.
+       * cp-tree.h (tree_string_flags): New error stringifying enumeration.
+       (fndecl_as_string, type_as_string_real, args_as_string,
+       code_as_string, language_as_string, parm_as_string,
+       op_as_string, assop_as_string, cv_as_string): Remove.
+       (type_as_string, decl_as_string, expr_as_string): Adjust prototype.
+       (context_as_string): Declare new function.
+       * error.c (cp_printers): Move definition.
+       (OB_UNPUT): Remove.
+       (OB_END_TEMPLATE_ID): Adjust.
+       (interesting_scope_p): Remove.
+       (dump_scope): New static function.
+       (dump_qualifiers): Adjust prototype, reimplement.
+       (dump_template_value): Use tree_string_flags.
+       (dump_type_real): Move back to dump_type.
+       (dump_type): Adjust prototype. Use tree_string_flags.
+       (dump_aggr_type): Likewise. Use dump_template_parms.
+       (dump_type_prefix): Adjust prototype. Use tree_string_flags.
+       Return pad flag.
+       (dump_type_suffix): Adjust prototype. Use tree_string_flags.
+       (dump_simple_decl): Likewise.
+       (dump_decl): Likewise. Use dump_template_decl.
+       (dump_template_decl): New static function broken out of dump_decl.
+       (dump_function_decl): Adjust prototype. Use tree_string_flags.
+       (dump_parameters): Likewise. Prefix space.
+       (dump_exception_spec): Adjust prototype. Use tree_string_flags.
+       (dump_function_name): Likewise. Use dump_template_parms.
+       (dump_template_parms): New static function broken out of
+       dump_function_name.
+       (dump_expr_list): Adjust prototype. Use tree_string_flags.
+       (dump_expr): Likewise.
+       (fndecl_as_string): Removed
+       (type_as_string_real): Removed
+       (dump_binary_op): Adjust prototype. Use tree_string_flags.
+       (dump_unary_op): Likewise.
+       (type_as_string): Likewise.
+       (expr_as_string): Likewise.
+       (decl_as_string): Likewise.
+       (context_as_string): New function.
+       (lang_decl_name): Adjust.
+       (decl_to_string): New static print callback.
+       (expr_to_string): Likewise.
+       (fndecl_to_string): Likewise.
+       (code_as_string): Renamed to ...
+       (code_to_string): ... here. Adjust.
+       (language_as_string): Renamed to ...
+       (language_to_string): ... here. Adjust.
+       (parm_as_string): Renamed to ...
+       (parm_to_string): ... here.
+       (op_as_string): Renamed to ...
+       (op_to_string): ... here.
+       (assop_as_string): Renamed to ...
+       (assop_to_string): ... here.
+       (type_to_string): New static print callback.
+       (args_as_string): Renamed to ...
+       (args_to_string): ... here. Adjust.
+       (cv_as_string): Renamed to ...
+       (cv_to_string): ... here. Adjust.
+       * pt.c (mangle_class_name_for_template): Use tree_string_flags.
+       (print_template_context): Likewise.
+
+1999-09-26  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (expand_throw): Remove prototype.
+       * except.c (expand_throw): Make it static.  Use tree-generation
+       functions, rather than RTL-generation functions.
+       (build_throw): Use it.
+       * expr.c: Include except.h.
+       (cplus_expand_expr): Don't call expand_throw here.
+       * Makefile.in (expr.o): Depend on except.h.
+       * ir.texi: Update documentation for THROW_EXPR.
+       
+       * decl.c (start_function): Set x_dont_save_pending_sizes rather
+       than calling get_pending_sizes.
+       * init.c (build_new): Don't save and restore
+       immediate_size_expand; instead, assert that it has the expected
+       value already.
+
+1999-09-26  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * lex.c (compiler_error): Add missing call to va_end().
+
+1999-09-25  Mark Mitchell  <mark@codesourcery.com>
+
+       * dump.c (dequeue_and_dump): Handle RESULT_DECL.
+       * ir.texi: Document RESULT_DECL and DECL_RESULT.
+
+       * cp-tree.h (check_return_expr): New function.
+       * decl.c (finish_constructor_body): New function.
+       (pushdecl): Put global friend functions in namespace binding
+       level, not the class binding level.
+       (finish_destructor_body): Make sure the dtor_label is always
+       defined.  Fix typo in comment.
+       (finish_function): Move generation of constructor-termination code
+       to semantic-analysis time.  Move generation of implicit `main'
+       return value to semantic-analysis time.
+       * semantics.c (finish_return_stmt): Generate goto's to
+       ctor_label/dtor_label here.  Use check_return_expr to do semantic
+       analysis on the returned expression.
+       * typeck.c (maybe_warn_about_returning_address_of_local): New
+       function split out from c_expand_return.
+       (check_return_expr): Likewise.
+       (c_expand_return): Just generate the RTL for the return.
+       
+1999-09-24  Mark Mitchell  <mark@codesourcery.com>
+
+       * 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.
+
+Fri Sep 24 10:48:10 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * decl.c (duplicate_decls): Use DECL_BUILT_IN_CLASS rather than
+       DECL_BUILT_IN.
+       (builtin_function): New arg CLASS.  Arg CODE now of type int.  All
+       callers changed.
+       Set the builtin's DECL_BUILT_IN_CLASS.
+
+1999-09-24  Mark Mitchell  <mark@codesourcery.com>
+
+       * 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.
+       
+1999-09-23  Mark Mitchell  <mark@codesourcery.com>
+
+       * ir.texi: Improve documentation for TARGET_EXPRs.  Discuss
+       STMT_IS_FULL_EXPR_P.
+
+       * 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.
+       
+       * 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.
+       
+1999-09-23  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * cp-tree.h (VAR_OR_FUNCTION_DECL_CHECK): New macro.
+       (RECORD_OR_UNION_TYPE_CHECK, LANG_IDENTIFIER_CAST): Likewise.
+       (DEFARG_NODE_CHECK): Remove; replace with DEFAULT_ARG_CHECK.
+       * cp-tree.h: Add tree checking macros to various tree access
+       macros. 
+       * ptree.c (print_lang_decl): Test for function or variable
+       before accessing template info.
+
+1999-09-23  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * lex.c: Get WCHAR_TYPE_SIZE from wchar_type_node.
+       * lang-specs.h: If -fshort-wchar, override __WCHAR_TYPE__.
+       * decl2.c (lang_f_options): Add -fshort-wchar.
+       * cp-tree.h: Declare flag_short_wchar.
+       * decl.c (init_decl_processing): If -fshort-wchar, use 'short unsigned 
+       int' for wchar_t.
+
+1999-09-23  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * ir.texi: Fix formatting errors and typos.
+
+1999-09-22  Mark Mitchell  <mark@codesourcery.com>
+
+       * ir.texi: Document CLEANUP_STMT, SCOPE_STMT, and START_CATCH_STMT.
+
+       * decl.c (pushdecl): Do create a binding for extern "C" functions,
+       but not for their DECL_ASSEMBLER_NAMEs.
+       (lookup_name_current_level): Fix formatting.
+       (xref_tag): Likewise.
+       * decl2.c (start_objects): Mark static constructors and
+       destructors as used.
+
+1999-09-22  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl.c (define_case_label): Don't crash if we're not in a switch.
+
+       * decl2.c (lang_decode_option): Don't bother explicitly ignoring flags.
+       * lang-options.h: Restore -fthis-is-variable.  Remove help strings
+       for unsupported flags.
+
+1999-09-21  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl2.c (lang_decode_option): Accept and ignore -finit-priority.
+       Accept and warn about -fthis-is-variable.
+
+1999-09-21  Mark Mitchell  <mark@codesourcery.com>
+
+       * dump.c (dequeue_and_dump): Handle START_CATCH_STMT,
+       CLEANUP_STMT, and SCOPE_STMT.
+
+       * decl2.c (lang_decode_option): Adjust, in the wake of recent
+       changes to option processing.
+
+1999-09-21  Martin v. Löwis  <loewis@informatik.hu-berlin.de>
+
+       * 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.
+
+1999-09-21  Alex Samuel  <samuel@codesourcery.com>
+
+       * 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.
+
+1999-09-21  Nathan Sidwell  <nathan@acm.org>
+
+       Reimplement dynamic cast and catch matching.
+       * 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.
+
+1999-09-20  Mark Mitchell  <mark@codesourcery.com>
+
+       * 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.
+
+       Remove support for assigning to `this'.
+       * 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.
+       
+1999-09-20  Nathan Sidwell  <nathan@acm.org>
+
+       * parse.y (primary): Use build_functional_cast for CV_QUALIFIER.
+
+1999-09-20  Nick Clifton  <nickc@cygnus.com>
+
+       * decl2.c (lang_decode_option): Extend comment.
+
+Mon Sep 20 10:49:05 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * typeck.c: Include "tm_p.h".
+
+1999-09-19  Mark Mitchell  <mark@codesourcery.com>
+
+       * ir.texi: New file.
+
+1999-09-19  Paul Burchard <burchard@pobox.com>
+
+       * semantics.c (expand_stmt): Initialize return value.
+
+1999-09-18  Paul Burchard <burchard@pobox.com>
+
+       * gxxint.texi: G++ now implements namespaces.
+       
+1999-09-18  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (pop_label): Don't warn about unused labels more than
+       once.
+       * semantics.c (finish_goto_stmt): Always marked used labels as
+       used.
+
+       * 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.
+
+1999-09-18  Martin von Loewis  <loewis@informatik.hu-berlin.de>
+
+       * typeck.c (get_member_function_from_ptrfunc): Always consider
+       virtuality inside member pointer.
+
+1999-09-17  Mark Mitchell  <mark@codesourcery.com>
+
+        Turn on function-at-a-time processing.  
+       * 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.
+       
+       * 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.
+
+       * 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.
+
+1999-09-17  Nathan Sidwell  <nathan@acm.org>
+
+       * call.c (perform_implicit_conversion): Deal with error_mark_node.
+
+1999-09-17  Mark Mitchell  <mark@codesourcery.com>
+
+       * 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.
+
+1999-09-17  Mark Mitchell  <mark@codesourcery.com>
+
+       * 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.
+
+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.
+
+1999-09-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * lex.c (init_cpp_parse): Call xcalloc, not malloc/bzero.
+
+       * xref.c (SALLOC): Call xstrdup, not xmalloc/strcpy.
+
+1999-09-16  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * decl2.c (finish_file): Also call check_global_declarations for
+       the pending_statics list.
+
+1999-09-15  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * lex.c (cp_pragma_implementation): Allow #pragma implementation
+       in header files.
+
+1999-09-15  Richard Henderson  <rth@cygnus.com>
+
+       * lex.c (mark_impl_file_chain): Follow the next chain.
+
+1999-09-15  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (warn_extern_redeclared_static): Simplify.  Catch
+       problems with extern "C" functions redeclared as static.
+       (duplicate_decls): When a builtin is redeclared static, make the
+       new function have internal linkage.
+       
+1999-09-15  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl2.c (build_expr_from_tree): Handle VA_ARG_EXPR.
+       * pt.c (tsubst_copy): Likewise.
+       * tree.c (search_tree): Likewise.
+       (mapcar): Likewise.
+
+1999-09-15  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * typeck2.c (ack): Don't declare progname.
+
+1999-09-14  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * lex.c (cp_pragma_interface, cp_pragma_implementation): Copy
+       filenames with ggc_alloc_string.
+
+1999-09-14  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (build_target_expr): Set TREE_SIDE_EFFECTS on the 
+       TARGET_EXPR.
+       * call.c (build_over_call): Don't set TREE_SIDE_EFFECTS on
+       the TARGET_EXPR.
+       * cvt.c (build_up_reference): Likewise.
+       * tree.c (build_cplus_new): Likewise.
+       (get_target_expr): Likewise.
+       
+Tue Sep 14 01:45:10 1999  Marc Espie <espie@cvs.openbsd.org>
+
+       * Makefile.in:  Prepend $(SHELL) to move-if-change calls.
+
+1999-09-13  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (build_target_expr): New function.
+       * call.c (build_conditional_expr): Use build_target_expr.
+       (convert_like): Likewise.
+       (build_over_call): Likewise.
+       * cvt.c (build_up_reference): Likewise.
+       * decl.c (build_cleanup_on_safe_obstack): Fold into ...
+       (destroy_local_var): Here.
+       (build_target_expr): New function.
+       * tree.c (build_cplus_new): Use it.
+       (get_target_expr): Likewise.
+
+1999-09-13  Nathan Sidwell  <nathan@acm.org>
+
+       * typeck.c (expr_sizeof): Don't decay arrays and functions.
+       Remove misleading comment.
+       (build_compound_expr): Don't decay arrays.
+
+1999-09-13  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * call.c (build_conditional_expr): Always use a TARGET_EXPR for
+       class rvalues again.
+
+Sun Sep 12 23:29:07 1999  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * Make-lang.in (g++spec.o): Depend on system.h and gcc.h.
+
+       * g++spec.c: Include gcc.h.
+       (lang_specific_driver): Constify a char*.  Call xcalloc, not
+       xmalloc/bzero.  All calls to the function pointer parameter now
+       explicitly call `fatal'.
+
+1999-09-12  Mark Mitchell  <mark@codesourcery.com>
+
+       * call.c (implicit_conversion): Robustify.  Handle OFFSET_REFs.
+       * cvt.c (ocp_convert): Complete the from and destination types.
+       Adjust warning about functions always being `true' in conditionals.
+       * decl.c (duplicate_decls): Don't play funny games with abort.
+       * error.c (dump_expr): Handle OVERLOADs.
+       * spew.c (probe_obstack): Remove.
+       * typeck.c (condition_conversion): Use perform_implicit_conversion.
+       
+1999-09-12  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * cp-tree.h (auto_function, define_function): Adjust prototypes.
+       * decl.c (define_function): Lose FUNCTION_CODE arg.  All callers
+       changed.
+       (auto_function): Likewise, for CODE arg.
+       Move code to set DECL_BUILT_IN and DECL_FUNCTION_CODE to...
+       (builtin_function): ... here.
+
+1999-09-11  Mark Mitchell  <mark@codesourcery.com>
+
+       * decl.c (add_decl_to_level): Remove TREE_PERMANENT assertion.
+       (init_decl_processing): Don't set TREE_PERMANENT for the
+       error_mark_node.
+       (start_decl): Don't rebuild non-permanent ARRAY_TYPEs.
+       (grokdeclarator): Likewise.
+       (grokparms): Don't check TREE_PERMANENT when building up lists.
+       * decl2.c (grokfield): Don't assert TREE_PERMANENT.
+       (mark_inline_for_output): Likewise.
+       * expr.c (cplus_expand_expr): Don't check TREE_PERMANENT.
+       * init.c (build_offset_ref): Don't check TREE_PERMANENT.
+       * lex.c (check_newline): Don't check ggc_p; it is always one.
+       * pt.c (process_template_parm): Don't check TREE_PERMANENT.
+       * spew.c (yylex): Don't copy_node or probe_obstacks for
+       non-permanent CONSTANTs and STRINGs.
+       * tree.c (build_cplus_array_type_1): Don't fuss with
+       TREE_PERMANENT on ARRAY_TYPEs.
+       
+       * cp-tree.def (CLEANUP_STMT): New node.
+       * cp-tree.h (language_function): Add name_declared.
+       (current_function_name_declared): New macro.
+       (CLEANUP_DECL): New macro.
+       (CLEANUP_EXPR): Likewise.
+       (emit_local_var): Likewise.
+       (finish_decl_cleanup): New function.
+       * cvt.c (build_up_reference): Simplify.
+       (ocp_convert): Remove dead code.
+       * decl.c (start_decl): Remove call to add_decl_stmt.
+       (grok_reference_init): Adjust, to handle bindings temporaries to
+       references.  Remove dead code.
+       (initialize_local_var): Don't generate RTL for
+       declarations here, or build cleanups here.  Don't fuss with
+       obstacks.  Replace expand_start_target_temps calls with explicit
+       setting of stms_are_full_exprs_p.
+       (destroy_local_var): New function.
+       (emit_local_var): Likewise.
+       (cp_finish_decl): Use them, as appropriate.
+       (start_function): Announce template functions.
+       (store_parm_decls): Don't call declare_function_name here.
+       (finish_stmt): Don't start emit base-initialization code when just
+       building the statement-tree.
+       * init.c (create_temporary_var): Move add_decl_stmt call ...
+       (get_temp_regvar): Here.
+       * pt.c (tsubst_expr): Make DECL_INITIAL look like what
+       cp_finish_decl would expect.  Don't call add_decl_stmt.
+       * semantics.c (begin_compound_stmt): Call declare_function_name,
+       if appropriate.
+       (finish_decl_cleanup): New function.
+       (expand_stmt): Use emit_local_var to output variables.          
+       (expand_body): Set current_funtion_name_declared.
+       
+1999-09-10  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (finish_cleanup_try_block): New function.
+       * semantics.c (finish_cleanup_try_block): Add comment.
+
+Fri Sep 10 10:32:32 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
+
+       * cp-tree.h: Delete declarations for all tree nodes now moved to
+       global_trees.
+       * decl.c: Delete their definitions.
+       (SHORT_TYPE_SIZE, INT_TYPE_SIZE, LONG_TYPE_SIZE, LONG_LONG_TYPE_SIZE,
+       FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE, LONG_DOUBLE_TYPE_SIZE): Don't
+       provide defaults.
+       (init_decl_processing): Call build_common_tree_nodes and
+       build_common_tree_nodes_2 instead of building their nodes here.
+       Don't add gc roots for them.
+
+1999-09-10  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (language_function): Rename expanding_p to
+       x_expanding_p.  Rename named_label_uses to x_named_label_uses.
+       (expanding_p): Adjust accordingly.
+       (TREE_VIA_PRIVATE): Fix typo in comment.
+       (DECL_REFERENCE_SLOT): Remove.
+       (SET_DECL_REFERENCE_SLOT): Likewise.
+       * decl.c (named_label_uses): Adjust. Remove chicken comment.
+       (push_overloaded_decl): Don't truncate the chain of bindings when
+       adding an overloaded function.
+       (grok_reference_init): Don't use DECL_REFERENCE_SLOT.
+       (initialize_local_var): Fix typo in comment.
+       (store_parm_decls): Don't set DECL_REFERENCE_SLOT.  Tidy up.
+       * decl2.c (start_objects): Make the fact that we are expanding
+       the generated function right away explicit.
+       (start_static_storage_duration_function): Likewise.
+       (finish_file): Fix typo in comment.
+       * init.c (build_vec_init): Correct bugs in handling cleanups.
+       * semantics.c (maybe_convert_cond): New function.
+       (FINISH_COND): Always store the condition, even if there's
+       a declaration.
+       (finish_if_stmt_cond): Use maybe_convert_cond.
+       (finish_while_stmt_cond): Likewise.
+       (finish_do_stmt): Likewise.
+       (finish_for_cond): Likewise.
+       (expand_cond): Adjust.
+       
+       * cp-tree.h (FN_TRY_BLOCK_P): New macro.
+       * init.c (perform_member_init): Remove obstack machinations.
+       (expand_cleanup_for_base): Likewise.
+       (finish_init_stmts): Mark the statement-expression as used.
+       * method.c (emit_thunk): Use tree-generating functions, not
+       RTL.
+       (do_build_copy_constructor): Likewise.
+       (do_build_assign_ref): Likewise.
+       (synthesize_method): Likewise.  Keep track of line numbers.
+       * pt.c (tsubst_expr): Handle various kinds of try blocks.
+       * semantics.c (expand_stmts): Remove.
+       (begin_function_try_block): Set FN_TRY_BLOCK_P.
+       (finish_function_try_block): Be careful rechaining 
+       function try blocks.
+       (expand_stmt): Loop through all the statements at a given level.
+       (exapnd_body): Be careful with line-numbers here too.  Prepare for
+       being called directly from the parser.
+
+       * cp-tree.h (finish_function): Adjust prototype.
+       * decl.c (finish_function): Return the function compiled.
+       * pt.c (instantiate_decl): Don't play games with obstacks.
+       * tree.c (mapcar): Handle OFFSET_REF and BIT_FIELD_REF.
+       (search_tree): Likewise.
+       * typeck.c: Fix typo in comment.
+       * typeck2.c (store_init_value): Add comment.
+
+       * cp-tree.h (CPTI_ATEXIT): New macro.
+       (atexit_node): Likewise.
+       * decl.c (destroy_local_static): New function, broken out from ...
+       (expand_static_init): Here.
+
+       * rtti.c (get_tinfo_var): These should always be global
+       (expand_si_desc): Use tree, not RTL, functions to generate code.
+       (expand_class_desc): Likewise.
+       (expand_ptr_desc): Likewise.
+       (expand_attr_desc): Likewise.
+       (expand_generic_desc): Likewise.
+       (synthesize_tinfo_fn): Likewise.
+
+1999-09-09  Mark Mitchell  <mark@codesourcery.com>
+
+       * semantics.c (RECHAIN_STMTS): Remove `last' parameter.
+       (RECHAIN_STMTS_FROM_LAST): Remove.  Replace all uses with
+       RECHAIN_STMTS. 
+       (RECHAIN_STMST_FROM_CHAIN): Likewise.
+
+       * parse.y (simple_stmt): Fix typo in last change.
+
+       * cp-tree.h (EXPR_STMT_ASSIGNS_THIS): New macro.
+       (STMT_IS_FULL_EXPR_P): Likewise.
+       (STMT_LINENO_FOR_FN_P): Likewise.
+       (prep_stmt): New function.
+       (building_stmt_tree): Tweak for safety.
+       * pt.c (tsubst_expr): Use prep_stmt throughout.
+       (add_tree): Move it to semantics.c
+       * semantics.c (add_tree): Move it here.
+       (finish_expr_stmt_real): New function.
+       (finish_expr_stmt): Use it.
+       (finish_if_stmt_cond): Use FINISH_COND.
+       (finish_while_stmt_cond): Likewise.
+       (finish_for_cond): Likewise.
+       (finish_stmt_tree): Tweak line-number handling.
+       (prep_stmt): New function.
+       (expand_stmt): Use it.
+       
+       * 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.
+
+       * dump.c (dequeue_and_dump): Dump types for constants.
+       Describe DECL_ARG_TYPE more intuitively.
+       Handle ARRAY_REF.
+
+       * decl.c (lang_mark_tree): Mark TYPE_LANG_SPECIFIC.
+       (lang_cleanup_tree): Remove.
+       * lex.c (make_lang_type): Use ggc_alloc to allocate
+       TYPE_LANG_SPECIFIC.
+
+       Reorganize per-function data.
+       * cp-tree.h (saved_scope): Add function_decl, bindings.
+       (language_function): Rename binding_level to bindings.
+       (cp_function_chain): Use the current_function, not the
+       outer_function_chain.
+       (current_class_ptr): Make it work, even when there's no 
+       current function.
+       (current_class_ref): Likewise.
+       (SF_DEFAULT, SF_PRE_PARSED, SF_INCLASS_INLINE, SF_EXPAND): New 
+       macros.
+       (clear_temp_name): Remove.
+       * decl.c (check_function_type): New function, broken out from
+       start_function.
+       (current_binding_level): Adjust definition.
+       (pushlevel): Simplify.
+       (poplevel): Don't use named_label_uses when we're outside
+       a function scope.
+       (mark_saved_scope): Mark function_decl and bindings.
+       (maybe_push_to_top_level): Don't unconditionally push a new
+       function context.  Save bindings and the current_function_decl.
+       Don't clear named_labels.
+       (pop_from_top_level): Pop function context if appropriate.
+       (init_decl_processing): Set init_lang_status and free_lang_status,
+       rather than save_lang_status and restore_lang_status.
+       (start_function): Take SF_* flags.  Don't clear per-function data.
+       Reorder and simplify to use new per-function data code.  Add
+       asserts.
+       (store_parm_decls): Don't call init_function_start here.
+       (finish_function): Adjust for new handling of per-function data.
+       (push_cp_function_context): Simplify.
+       (mark_cp_function_context): Change binding_level to bindings.
+       * decl2.c (clear_temp_name): Remove.
+       (start_objects): Use SF flags to start_function.
+       (start_static_storage_duration_function): Likewise.
+       * except.c (start_anon_func): Remove redundant calls to 
+       push_function_context_to.  Use SF flags to start function.
+       (end_anon_func): Remove redundant call to pop_function_context
+       from.
+       * lex.c (reinit_parse_for_function): Don't initialize per-function 
+       data.
+       * method.c (emit_thunk): Clear current_function after calling
+       assemble_end_function.  Use SF flags for start_function.
+       (synthesize_method): Use SF flags for start_function.
+       * parse.c: Regenerated.
+       * parse.y (fn.defpen): Likewise.
+       (pending_inline): Clear current_function, even if something goes
+       wrong.
+       * pt.c (instantiate_decl): Use SF flags to start_function.
+       Don't save and restore expanding_p.
+       (add_tree): Handle the case where we are outside any function.
+       (end_tree): Likewise.
+       * rtti.c (sythesize_tinfo_fn): Use SF flags to start_function.
+       * semantics.c (begin_function_definition): Likewise.
+       (expand_body): Likewise.
+       
 1999-09-09  Nathan Sidwell  <nathan@acm.org>
 
        * cp-tree.h (convert_to_void): Prototype new function.
 
 1999-09-08  Mark Mitchell  <mark@codesourcery.com>
 
+       * 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.
+       
+1999-09-08  Mark Mitchell  <mark@codesourcery.com>
+
        * cp-tree.h (lang_decl_flags): Remove permanent_attr.
        Remove next.
        (LANG_DECL_PERMANENT): Remove.