OSDN Git Service

* pt.c (mark_decl_instantiated): Don't call defer_fn.
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 8e5e03a..309ef02 100644 (file)
@@ -1,3 +1,448 @@
+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