-1999-09-16 Jason Merrill <jason@yorick.cygnus.com>
+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>
- * decl.c (saved_scope_p): New fn.
- * class.c (pushclass): Don't clear class_cache_obstack if we have
- saved scopes.
+ * 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>