+2004-06-16 Geoffrey Keating <geoffk@apple.com>
+
+ * pt.c (mark_decl_instantiated): Don't call defer_fn.
+
+2004-06-16 Richard Henderson <rth@redhat.com>
+
+ * parser.c (cp_parser_labeled_statement): Update commentary.
+ * pt.c (tsubst_expr): Use CASE_LABEL_EXPR.
+ * tree.c (mark_local_for_remap_r): Likewise.
+
+2004-06-16 Richard Henderson <rth@redhat.com>
+
+ * parser.c (cp_parser_asm_definition): Update commentary.
+ * pt.c (tsubst_expr): Use ASM_EXPR.
+ * semantics.c (finish_asm_stmt): Likewise.
+
+2004-06-16 Richard Henderson <rth@redhat.com>
+
+ * decl.c (finish_destructor_body): Use LABEL_EXPR.
+ * parser.c (cp_parser_statement): Update commentary.
+ * pt.c (tsubst_expr): Use LABEL_EXPR, GOTO_EXPR.
+ * semantics.c (finish_goto_stmt, finish_label_stmt): Likewise.
+ * tree.c (mark_local_for_remap_r): Likewise.
+
+2004-06-16 Richard Henderson <rth@redhat.com>
+
+ PR c++/16012
+ * semantics.c (begin_for_stmt, begin_for_stmt): Do put the init
+ statement in FOR_INIT_STMT for templates.
+
+2004-06-15 Richard Henderson <rth@redhat.com>
+
+ * call.c (initialize_reference): Don't build CLEANUP_STMT here.
+ * cp-gimplify.c (cp_gimplify_stmt): Remove next_p argument.
+ (genericize_try_block): Use gimplify_stmt.
+ (genericize_catch_block, genericize_eh_spec_block): Likewise.
+ (cp_gimplify_init_expr): Remove STMT_EXPR special case.
+ (gimplify_must_not_throw_expr): Update voidify_wrapper_expr call.
+ * cp-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): Remove.
+ (cp_tree_chain_matters_p): Remove.
+ * cp-tree.h (COMPOUND_STMT_TRY_BLOCK): New.
+ (COMPOUND_STMT_BODY_BLOCK): New.
+ (STATEMENT_LIST_NO_SCOPE, STATEMENT_LIST_TRY_BLOCK): New.
+ (EXPR_STMT_STMT_EXPR_RESULT): New.
+ (building_stmt_tree): Check cur_stmt_list.
+ (tf_stmt_expr_cmpd, tf_stmt_expr_body): Remove.
+ (BCS_NO_SCOPE, BCS_TRY_BLOCK, BCS_FN_BODY): New.
+ * decl.c (poplevel): Use pop_stmt_list for minding cleanups.
+ (cp_finish_decl): Use push_cleanup.
+ (start_function, finish_function): Use statement lists.
+ (finish_stmt): Do nothing.
+ * except.c (begin_eh_spec_block): Use statement lists.
+ (check_handlers_1, check_handlers): Likewise.
+ * init.c (construct_virtual_base): Don't add extra compound stmts.
+ (build_vec_init): Likewise.
+ * name-lookup.c (maybe_push_cleanup_level): Use statement lists.
+ * name-lookup.h (struct cp_binding_level): Add statement_list.
+ * parser.c (cp_parser_statement): Take the STMT_EXPR node, not a bool.
+ (cp_parser_labeled_statement, cp_parser_expression_statement,
+ cp_parser_statement_seq_opt): Likewise.
+ (cp_parser_compound_statement): Likewise. Take bool for try block.
+ (cp_parser_selection_statement): Tidy if processing.
+ (cp_parser_already_scoped_statement): Rewrite to do what it says.
+ * pt.c (tsubst_copy): Move STMT_EXPR to tsubst_expr.
+ (tsubst_expr): Rewrite STMT_EXPR processing. Handle STATEMENT_LIST.
+ Mind COMPOUND_STMT_TRY_BLOCK, EXPR_STMT_STMT_EXPR_RESULT.
+ * semantics.c (do_poplevel, do_pushlevel): Use statement lists.
+ (finish_cond): New, rewritten from FINISH_COND.
+ (simplify_loop_decl_cond): New.
+ (finish_expr_stmt): Avoid nested EXPR_STMTs.
+ (begin_if_stmt, finish_if_stmt_cond, finish_then_clause,
+ begin_else_clause, finish_else_clause, finish_if_stmt,
+ begin_while_stmt, finish_while_stmt_cond, finish_while_stmt,
+ begin_do_stmt, finish_do_body, begin_for_stmt, finish_for_init_stmt,
+ finish_for_cond, finish_for_stmt, begin_switch_stmt,
+ finish_switch_cond, finish_switch_stmt, begin_try_block,
+ finish_try_block, finish_cleanup_try_block, finish_function_try_block,
+ finish_handler_sequence, finish_function_handler_sequence,
+ begin_handler, finish_handler_parms, finish_handler,
+ begin_stmt_expr, finish_stmt_expr_expr, finish_stmt_expr): Rewrite
+ using statement lists.
+ (begin_compound_stmt): Replace has_no_scope argument with flags.
+ Update all callers. Use statement lists.
+ (finish_compound_stmt): Likewise.
+ (finish_decl_cleanup, finish_eh_cleanup): Use push_cleanup.
+ (current_scope_stmt_stack): Remove.
+ (simplify_aggr_init_expr): Don't muck with TREE_CHAIN.
+ * typeck2.c (split_nonconstant_init_1, split_nonconstant_init):
+ Rewrite with statement lists.
+
+2004-06-15 Alexandre Oliva <aoliva@redhat.com>
+
+ * parser.c: Change all assignments of c_lex_string_translate
+ to true and false to 1 and 0.
+ (cp_lexer_read_token): Convert type of the translated string.
+ (cp_parser_skip_to_closing_parentheses): Preserve original
+ value of c_lex_string_translate, and set it to -1 while
+ running.
+ (cp_parser_cache_group): Likewise.
+ (cp_parser_cache_group_1): Renamed.
+ (cp_parser_asm_operand_list): Remove redundant setting of
+ c_lex_string_translate.
+ (cp_parser_primary_expression) [CPP_STRING, CPP_WSTRING]:
+ Handle chained strings.
+
+2004-06-12 Andrew Pinski <apinski@apple.com>
+
+ PR c++/14639
+ Revert:
+ 2004-06-02 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * cp-tree.h: Fix typo.
+
+ * cp-tree.h: Include cgraph.h
+ (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
+ TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
+
+2004-06-12 Jason Merrill <jason@redhat.com>
+
+ PR tree-optimization/14107
+ * decl.c (finish_function): Warn about no return in all functions.
+
+2004-06-15 Paolo Bonzini <bonzini@gnu.org>
+
+ * cp-tree.h (struct language_function): Remove cannot_inline.
+ * decl.c (save_function_data): cannot_inline is no more.
+ (cxx_push_function_context): Likewise.
+ * decl2.c (start_objects, start_static_storage_duration_function):
+ Reset DECL_INLINE, set DECL_UNINLINABLE.
+
+2004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/15967
+ * search.c (lookup_field): Propagate the ambiguity list.
+ (lookup_fnfields): Likewise.
+
+2004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/15947
+ * parser.c (cp_parser_template_name): Ctors/dtors never need a
+ template keyword to disambiguate.
+
+2004-06-14 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15096
+ * decl.c (grokdeclarator): Ignore pointer-to-members when
+ computing template depth.
+
+ PR c++/14930
+ * name-lookup.c (pushtag): Do not try to put class declarations in
+ explicit specialization scopes.
+
+2004-06-11 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * decl.c (grokdeclarator): Do not depend on C99's _Bool's behavior.
+
+2004-06-11 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15862
+ * name-lookup.c (unqualified_namespace_lookup): Do not ignore type
+ bindings for undeclared built-ins.
+
+2004-06-11 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ * typeck2.c (abstract_virtual_errors): Reword diagnostics, make them
+ appear at the correct location.
+
+2004-06-10 Jason Merrill <jason@redhat.com>
+
+ PR c++/15875
+ Revert:
+ 2004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+ * init.c (build_offset_ref): Build SCOPE_REF with non-null
+ TREE_TYPE for non-dependent names.
+ * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
+ unknown_type_node as its TREE_TYPE.
+ * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
+ * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
+ (dump_expr) <SCOPE_REF case>: Likewise.
+
+2004-06-10 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15227
+ * parser.c (cp_parser_direct_declarator): Robustify.
+
+ PR c++/15877
+ * pt.c (tsubst_copy): Use decl_constant_value on enumeration
+ constants in non-dependent contexts.
+
+ PR c++/14211
+ PR c++/15076
+ * typeck.c (build_static_cast): Wrap casts in NON_LVALUE_EXPR when
+ necessary.
+
+2004-06-10 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/14791
+ * decl.c (duplicate_decls): Handle fileptr_type_node arguments
+ specially.
+
+2004-06-09 Mark Mitchell <mark@codesourcery.com>
+
+ Revert:
+ PR c++/15815
+ 2004-06-07 Mark Mitchell <mark@codesourcery.com>
+ * lex.c (handle_pragma_interface): Deprecate.
+ (handle_pragma_implementation): Likewise.
+
+2004-06-09 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * g++spec.c (lang_specific_driver): Remove check for -lm
+ and -lmath when check it see if it was the math library.
+
+2004-06-08 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/7841
+ * parser.c (cp_parser_direct_declarator): Reject constructor named
+ as qualified template-id.
+
+2004-06-07 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15815
+ * lex.c (handle_pragma_interface): Deprecate.
+ (handle_pragma_implementation): Likewise.
+
+2004-06-07 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15766
+ * parser.c (cp_parser_iteration_statement): Fix typo in error
+ message.
+
+ PR c++/14777
+ * pt.c (tsubst_default_argument): Do not defer access checks
+ while substituting into the default argument.
+
+ PR c++/15554
+ * pt.c (tsubst_copy): Do not try to substitute for an enumeration
+ constant in a non-dependent context.
+
+ PR c++/15057
+ * except.c (build_throw): Ensure that temp_expr has been
+ initialized.
+
+2004-06-06 Roger Sayle <roger@eyesopen.com>
+
+ * cp/cp-tree.h (lvalue_or_else): Add function prototype.
+
+2004-06-06 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/15503
+ * parser.c (cp_parser_mem_initializer_id): Gracefully reject
+ 'typename', and accept 'template'.
+
+2004-06-03 Andrew Pinski <pinskia@physics.uc.edu>
+ Jan Hubicka <jh@suse.cz>
+
+ PR c++/14639
+ * method.c (use_think): Do not mark thunk as referenced.
+
+2004-06-03 Matt Austern <austern@apple.com>
+
+ PR c++/15428
+ * decl2.c (maybe_emit_vtables): If TARGET_WEAK_NOT_IN_ARCHIVE_TOC
+ is nonzero, and if we see a noninline definition of a key method,
+ make the vtables nonweak.
+
+2004-06-02 Matt Austern <austern@apple.com>
+
+ * cp-tree.h (instantiate_decl): new boolean parameter,
+ undefined_ok. Current behavior is equivalent to its being 0.
+ * decl2.c (mark_used): Add new argument when calling instantiate_decl
+ * pt.c (mark_decl_instantiated): Unconditionally make
+ instantiations explicit unconditionally
+ (do_decl_instantiation): Don't call SET_DECL_EXPLICIT_INSTANTIATION,
+ since mark_decl_instantiated now does it.
+ (instantiate_class_member): New. Instantiate a member of an
+ explicitly instantiated class template.
+ (do_type_instantiation): Explicitly instantiate members of an
+ explicitly instantiated class template.
+ (instantiate_decl): if undefined_ok is nonzero, and if we're
+ trying to explicitly instantiated a template with no definition,
+ change it to an implicit instantiation.
+ (instantiate_pending_templates): Add new argument to instantiate_decl.
+ * tree.c (cp_cannot_inline_tree_fn): Likewise.
+
+2004-06-02 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * cp-tree.h: Fix typo.
+
+ * cp-tree.h: Include cgraph.h
+ (DECL_NEEDED_P): Use cgraph_*node on the decl instead of
+ TREE_SYMBOL_REFERENCED on the DECL_ASSEMBLER_NAME of the decl.
+
+2004-06-01 Jason Merrill <jason@redhat.com>
+
+ PR c++/15142
+ * call.c (call_builtin_trap): Remove type parm.
+ (convert_arg_to_ellipsis): Change a non-POD argument to integer type.
+ (build_x_va_arg): Dereference a null pointer for a non-POD argument.
+
+2004-06-01 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net>
+
+ PR c++/13092
+ * init.c (build_offset_ref): Build SCOPE_REF with non-null
+ TREE_TYPE for non-dependent names.
+ * pt.c (type_dependent_expression_p): Handle SCOPE_REF with
+ unknown_type_node as its TREE_TYPE.
+ * cxx-pretty_print.c (pp_cxx_unqualified_id): Handle BASELINK.
+ * error.c (dump_decl) <SCOPE_REF case>: Use pp_expression.
+ (dump_expr) <SCOPE_REF case>: Likewise.
+
+2004-06-01 Richard Henderson <rth@redhat.com>
+ Andrew Pinski <pinskia@physics.uc.edu>
+
+ * lex.c (reswords): Rename "__offsetof" to "__builtin_offsetof".
+ * parser.c (struct cp_parser): Remove in_offsetof.
+ (cp_parser_new): Don't set it.
+ (cp_parser_unary_expression): Don't check it.
+ (cp_parser_postfix_open_square_expression): Split out from ...
+ (cp_parser_postfix_expression): ... here.
+ (cp_parser_postfix_dot_deref_expression): Likewise.
+ (cp_parser_builtin_offsetof): New.
+ (cp_parser_primary_expression): Use it.
+
+2004-06-01 Giovanni Bajo <giovannibajo@gcc.gnu.org>
+
+ PR c++/14932
+ * parser.c (cp_parser_postfix_expression): Allow subscript
+ operator in offsetof.
+
+2004-05-31 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15701
+ * friend.c (add_friend): Do not try to perform access checks for
+ functions from dependent classes.
+
+2004-05-31 Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ * cxx-pretty-print.c (pp_cxx_colon_colon): Expor.
+ (pp_cxx_begin_template_argument_list): Turn into a function.
+ (pp_cxx_end_template_argument_list): Likewise.
+ (pp_cxx_separate_with): Define.
+ (pp_cxx_unqualified_id): Tidy.
+ (pp_cxx_primary_expression): Likewise.
+ (pp_cxx_postfix_expression): Likewise.
+ (pp_cxx_expression): Likewise.
+ (pp_cxx_simple_type_specifier): Likewise.
+ (pp_cxx_type_specifier_seq): Likewise.
+ (pp_cxx_parameter_declaration_clause): Likewise.
+ (pp_cxx_exception_specification): Likewise.
+ (pp_cxx_direct_declarator): Likewise.
+ (pp_cxx_type_id): Likewise.
+ * cxx-pretty-print.h (pp_cxx_whitespace): Export from
+ cxx-pretty-print.c.
+ (pp_cxx_left_paren): Likewise.
+ (pp_cxx_right_paren): Likewise.
+ (pp_cxx_left_brace): Likewise.
+ (pp_cxx_right_brace): Likewise.
+ (pp_cxx_left_bracket): Likewise.
+ (pp_cxx_right_bracket): Likewise.
+ (pp_cxx_dot): Likewise.
+ (pp_cxx_identifier): Likewise.
+ (pp_cxx_tree_identifier): Likewise.
+ (pp_cxx_ampersand): New macro.
+ (pp_cxx_star): Likewise.
+ (pp_cxx_arrow): Likewise.
+ (pp_cxx_semicolon): Likewise.
+ (pp_cxx_complement): Likewise.
+ (pp_cxx_begin_template_argument_list): Declaree.
+ (pp_cxx_end_template_argument_list): Likewise.
+ (pp_cxx_colon_colon): likewise.
+
+2004-05-31 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * parser.c (cp_parser_simple_type_specifier): Explicitly test
+ against NULL_TREE.
+
+2004-05-31 Kazu Hirata <kazu@cs.umass.edu>
+
+ * call.c, class.c, cp-tree.def, decl2.c, name-lookup.c, pt.c,
+ typeck.c: Fix comment formatting.
+
+2004-05-30 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * cp-lang.c (cp_expand_decl): Remove.
+ (LANG_HOOKS_EXPAND_DECL): Use c_expand_decl.
+
+2004-05-30 Andreas Jaeger <aj@suse.de>
+
+ * lang-specs.h: Add missing initializers for .ii.
+
+2004-05-28 Aldy Hernandez <aldyh@redhat.com>
+
+ * decl.c (cp_make_fname_decl): Free return value from
+ fname_as_string.
+
+2004-05-28 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/15083
+ * decl2.c (delete_sanity): Set TREE_SIDE_EFFECTS on a DELETE_EXPR,
+ even in a templat.e
+ * init.c (build_new): Likewise.
+
+ PR c++/15640
+ * name-lookup.c (arg_assoc): Robustify.
+
+ PR c++/15471
+ * typeck.c (unary_complex_lvalue): Use context_for_name_lookup
+ when determining the scope to use for a pointer to member.
+ (lookup_anon_field): Give it external linkage.
+ * cp-tree.h (lookup_anon_field): Declare it.
+ * expr.c (cplus_expand_constant): Use it.
+
+2004-05-28 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/14668
+ * parser.c (cp_parser_simple_type_specifier): Call
+ maybe_note_name_used_in_class.
+
+2004-05-28 Tom Marshall <tmarshall@real.com>
+
+ PR c++/15214
+ * class.c (finish_struct_1): Warn only if the dtor is non-private or
+ the class has friends.
+
+2004-05-27 Adam Nemet <anemet@lnxw.com>
+
+ PR c++/12883
+ * decl.c (complete_array_type): Set TYPE_NEEDS_CONSTRUCTING and
+ TYPE_HAS_NONTRIVIAL_DESTRUCTOR based on the underlying type.
+
+2004-05-24 Geoffrey Keating <geoffk@apple.com>
+
+ * method.c (implicitly_declare_fn): Don't call defer_fn; abort
+ if it might be needed.
+ * pt.c (mark_decl_instantiated): Only call defer_fn if
+ the function actually needs processing in finish_file.
+ * decl2.c (finish_file): Add check that elements in
+ deferred_fns_used are really needed there. Remove unnecessary
+ test of DECL_SAVED_TREE.
+
+2004-05-23 Paolo Bonzini <bonzini@gnu.org>
+
+ * Make-lang.in: No need to specify $(LIBCPP).
+
2004-05-23 Mark Mitchell <mark@codesourcery.com>
PR c++/15044
2004-01-14 Danny Smith <dannysmith@users,sourceforge.net>
PR c++/9021
- PR c++/11005
+ PR c++/11005
* parser.c (cp_parser_elaborated_type_specifier): Warn about
attributes and discard.
* decl.c (xref_tag): Don't overwite existing attributes with