OSDN Git Service

* decl.c (initialize_local_var): Handle static variables here.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 9697001..a97890d 100644 (file)
@@ -1,3 +1,748 @@
+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