OSDN Git Service

gcc/cp/
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index 60eb1a3..a664d0f 100644 (file)
@@ -1,5 +1,818 @@
+2008-07-17  Julian Brown  <julian@codesourcery.com>
+           Mark Mitchell  <mark@codesourcery.com>
+
+       * decl2.c (determine_visibility): Allow target to override
+       visibility of class data.
+
+2008-07-17  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/36855
+       * semantics.c (trait_expr_value): Update __has_trivial_destructor
+       semantics to the current WP (N2691).
+
+2008-07-16  Dodji Seketeli  <dseketel@redhat.com>
+
+       PR c++/13699
+       * name-lookup.c (lookup_extern_c_fun_binding_in_all_ns): New function.
+       (pushdecl_maybe_friend): Check if a redeclaration of extern C function
+       complies with exception specification constraints.
+
+2008-07-14  Jason Merrill  <jason@redhat.com>
+
+       * lex.c (init_reswords): Always set D_OBJC.
+
+2008-07-11  Tom Tromey  <tromey@redhat.com>
+           Ian Lance Taylor  <iant@google.com>
+
+       * lex.c (struct resword, reswords): Don't define.
+       (D_EXT, D_ASM, D_OBJC, D_CXX0X): Don't define.
+       (init_reswords): Clarify mask code.  Use c_common_reswords rather
+       than reswords.
+
+2008-07-11  Dodji Seketeli  <dseketel@redhat.com>
+
+       PR c++/13101
+       * decl.c (grokdeclarator): Warn about initializing variables
+       of storage class 'extern' only after the type of the declarator
+       has been properly computed.
+
+2008-07-11  Dodji Seketeli  <dseketel@redhat.com>
+
+       PR c++/31754
+       * cp-tree.h (struct cp_decl_specifier_seq): add a location field. It
+       carries the location of the primary type.
+       * parser.c (cp_parser_check_type_definition): update documentation.
+       (cp_parser_check_for_definition_in_return_type,
+       cp_parser_check_for_invalid_template_id,
+       cp_parser_set_decl_spec_type,
+       cp_parser_check_for_definition_in_return_type,
+       cp_parser_diagnose_invalid_type_name,
+       cp_parser_new_expression, cp_parser_explicit_instantiation,
+       cp_parser_type_specifier, cp_parser_simple_type_specifier,
+       cp_parser_omp_for_loop, cp_parser_pragma): use location in error messages.
+
+
+2008-07-11 Dodji Seketeli <dseketel@redhat.com>
+
+       PR c++/31754
+       * pt.c, semantic.c:
+       * semantic.c (qualified_name_lookup_error, finish_id_expression):
+       add a location_t parameter so that
+       error message can have a more accurate location.
+       * cp-tree.h: updated prototype
+       * pt.c (tsubst_qualified_id): use location in error messages.
+       * parser.c (cp_parser_postfix_expression,
+       cp_parser_objc_statement, cp_parser_trait_expr,
+       cp_parser_token_is_class_key,
+       cp_parser_uncommitted_to_tentative_parse_p,
+       cp_parser_check_for_invalid_template_id, cp_parser_is_string_literal,
+       cp_parser_error, cp_parser_name_lookup_error,
+       cp_parser_simulate_error, cp_parser_check_decl_spec,
+       cp_parser_check_decl_spec, cp_parser_non_integral_constant_expression,
+       cp_parser_diagnose_invalid_type_name,
+       cp_parser_parse_and_diagnose_invalid_type_name,
+       cp_parser_require_pragma_eol, cp_parser_make_typename_type,
+       cp_parser_string_literal, cp_parser_primary_expression,
+       cp_parser_primary_expression, cp_parser_unqualified_id,
+       cp_parser_nested_name_specifier_opt, cp_parser_postfix_expression,
+       cp_parser_postfix_dot_deref_expression, cp_parser_new_expression,
+       cp_parser_direct_new_declarator, cp_parser_builtin_offsetof,
+       cp_parser_label_for_labeled_statement, cp_parser_statement_seq_opt,
+       cp_parser_jump_statement, cp_parser_block_declaration,
+       cp_parser_simple_declaration, cp_parser_decl_specifier_seq,
+       cp_parser_function_specifier_opt, cp_parser_decltype,
+       cp_parser_mem_initializer_list, cp_parser_mem_initializer,
+       cp_parser_mem_initializer_id, cp_parser_template_parameter,
+       cp_parser_type_parameter, cp_parser_template_id, cp_parser_template_name,
+       cp_parser_template_argument): likewise.
+
+2008-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/36760
+       * pt.c (tsubst_function_type): Remove warning for type qualifiers
+       on function return type.
+
+2008-07-09  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/36760
+       * pt.c (tsubst_function_type): Don't warn for type qualifiers
+       on function return type in case of system header.
+
+2008-07-09  Raksit Ashok <raksit@google.com>
+
+       * parser.c (cp_parser_postfix_expression): New warning based on flag
+       warn_disallowed_functions.
+
+2008-07-08  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/34963
+       * decl.c (grokdeclarator): Reset storage_class and staticp for friend
+       functions declared with a storage class qualifier.
+
+2008-07-03  Richard Guenther  <rguenther@suse.de>
+
+       PR c++/36128
+       * typeck.c (cp_build_function_call): Move code to verify
+       builtin function arguments ...
+       * call.c (build_cxx_call): ... here.
+
+2008-07-02  Jason Merrill  <jason@redhat.com>
+
+       * Make-lang.in (cp/typeck2.o): Add $(REAL_H) dependency.
+
+       Implement WG21 N2672, Initializer List proposed wording
+       * cp-tree.h (enum cp_tree_index): Add CPTI_INIT_LIST_TYPE.
+       (struct lang_type_class): Add has_list_ctor bitfield.
+       (TYPE_HAS_LIST_CTOR): New macro.
+       (BRACE_ENCLOSED_INITIALIZER_P): Expect init_list_type_node.
+       (CONSTRUCTOR_IS_DIRECT_INIT): New macro.
+       (LOOKUP_NO_NARROWING): New macro.
+       (LOOKUP_NO_COPY_CTOR_CONVERSION): New macro.
+       * parser.c (cp_parse_braced_list): Split out from...
+       (cp_parser_initializer_clause): ...here.
+       (cp_parser_postfix_expression): Build up CONSTRUCTOR for compound 
+       literal here.
+       (cp_lexer_next_token_is_not_keyword): New fn.
+       (cp_parser_parenthesized_expression_list): Handle { }.
+       (cp_parser_new_expression, cp_parser_new_initializer): Likewise.
+       (cp_parser_assignment_expression, cp_parser_condition): Likewise.
+       (cp_parser_jump_statement, cp_parser_simple_declaration): Likewise.
+       (cp_parser_mem_initializer, cp_parser_init_declarator): Likewise.
+       (cp_parser_initializer, cp_parser_functional_cast): Likewise.
+       (cp_parser_omp_for_loop, cp_parser_cache_group): Likewise.
+       (cp_parser_save_member_function_body): Likewise.
+       * call.c (conversion_kind): Add ck_list, ck_aggr.
+       (struct conversion): Add check_narrowing bitfield, conversion list.
+       (build_list_conv): New fn.
+       (build_aggr_conv): New fn.
+       (implicit_conversion): Call them.
+       (standard_conversion): Set check_narrowing if appropriate.
+       (add_function_candidate): Handle LOOKUP_NO_COPY_CTOR_CONVERSION.
+       (build_user_type_conversion_1): When converting from an init list,
+       we allow additional conversions except when calling a copy ctor.
+       (convert_like_real): Calling an explicit ctor for an init list is 
+       ill-formed.  Handle ck_list and ck_addr.  Check narrowing.
+       (build_new_method_call): If CONSTRUCTOR_IS_DIRECT_INIT is set and
+       class doesn't have a list ctor, break the {} into a TREE_LIST.
+       (compare_ics): ck_list is better than other UDCs.
+       (set_up_extended_ref_temp): Split out from initialize_reference.
+       (is_std_init_list): New fn.
+       (is_list_ctor): New fn.
+       * decl.c (cxx_init_decl_processing): Create init_list_type_node.
+       (reshape_init_array_1): Pass it to build_constructor.
+       (reshape_init_class): Ditto.
+       (initialize_artificial_var): Pass the appropriate type.
+       (build_aggr_init_full_exprs): Split out from...
+       (check_initializer): ...here.  Handle new semantics.
+       (build_init_list_var_init): New subroutine of check_initializer.
+       (grokdeclarator): Converting constructors can have more than one parm.
+       (grok_special_member_properties): Set TYPE_HAS_LIST_CTOR.
+       * init.c (expand_default_init): Only do digest_init for aggregates.
+       * rtti.c (tinfo_base_init): Pass init_list_type_node to 
+       build_constructor_from_list.
+       (generic_initializer, ptr_initializer): Ditto.
+       (ptm_initializer, class_initializer): Ditto.
+       (get_pseudo_ti_init): Ditto.
+       * error.c (dump_type): Handle init_list_type_node.
+       (maybe_warn_cpp0x): New fn.
+       (maybe_varn_variadic_templates): Call it.
+       * cvt.c (ocp_convert): Handle conversion from { }.
+       * tree.c (build_array_of_n_type): New fn.
+       * typeck2.c (store_init_value): Use init_list_type_node.
+       (digest_init): Likewise.
+       (check_narrowing): New fn.
+       * semantics.c: (finish_compound_literal): Take CONSTRUCTOR instead 
+       of vector of constructor elts.  Handle non-aggregate types.  Make
+       constant literals static.
+       * pt.c: (tsubst_copy_and_build): Adjust.
+       (unify): Handle { }.
+       * name-lookup.c (arg_assoc_type): Handle init_list_type_node.
+
+2008-07-01  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
+       (comp_ptr_ttypes_const): Likewise.
+
+2008-07-01  Andrew Haley  <aph@redhat.com>
+
+       * decl.c (finish_constructor_body): Don't set the return value of
+       the constructor if the constructor is that of a Java type.
+
+2008-06-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/36662
+       * decl2.c (is_late_template_attribute): If the first attribute
+       argument is IDENTIFIER_NODE, don't consider it when checking
+       if arguments are value or type dependent.
+
+2008-06-29  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/36655
+       * pt.c (do_type_instantiation): In c++0x mode do not warn for
+       extern template.
+
+2008-06-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * Make-lang.in (cp-warn): Delete $(CXX_COMPAT_WARN).
+
+2008-06-28  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/36364
+       * repo.c (repo_emit_p): Put const static data members initialized
+       by const expr into *.rpo file, just return 2 if IDENTIFIER_REPO_CHOSEN
+       for it is 0.
+
+2008-06-27  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/36655
+       * pt.c (do_decl_instantiation): In c++0x mode do not warn for
+       extern template.
+
+2008-06-24  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       PR c++/23194
+       * typeck.c (cp_build_function_call): Show example syntax in
+       diagnostic.
+
+2008-06-21  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       * typeck.c (composite_pointer_type_r, cxx_sizeof_expr,
+       cxx_alignof_expr, check_template_keyword, cp_build_binary_op,
+       pointer_diff, cp_build_unary_op, build_x_compound_expr_from_list,
+       build_reinterpret_cast_1, cp_build_c_cast, check_return_expr): Change
+       pedwarn to permerror.
+       * init.c (perform_member_init, build_new_1, build_new): Likewise.
+       * decl.c (warn_extern_redeclared_static, duplicate_decls,
+       * identify_goto, check_previous_goto_1, check_goto, define_label,
+       check_tag_decl, start_decl, check_class_member_definition_namespace,
+       grokfndecl, grokdeclarator): Likewise.
+       * except.c (check_handlers): Likewise.
+       * typeck2.c (digest_init): Likewise.
+       * pt.c (check_specialization_namespace,
+       check_explicit_instantiation_namespace,
+       maybe_process_partial_specialization, check_explicit_specialization,
+       convert_template_argument, do_decl_instantiation,
+       do_type_instantiation, instantiate_decl): Likewise.
+       * semantics.c (finish_template_type_parm): Likewise.
+       * name-lookup.c (pushdecl_maybe_friend,
+       check_for_out_of_scope_variable): Likewise.
+       * decl2.c (finish_static_data_member_decl, build_anon_union_vars,
+       coerce_new_type): Likewise.
+       * parser.c (cp_parser_nested_name_specifier_opt,
+       cp_parser_mem_initializer, cp_parser_elaborated_type_specifier,
+       cp_parser_class_head, cp_parser_check_class_key): Likewise.
+       (cp_parser_parameter_declaration): Check flag_permissive instead of
+       flag_pedantic_errors.
+       * call.c (joust): Change pedwarn to warning.
+       * friend.c (make_friend_class): Likewise.
+
+2008-06-16  Jan Hubicka  <jh@suse.cz>
+
+       * method.c: Include cgraph.h.
+       (use_thunk): Use cgraph_add_new_function instead of calling backend
+       directly.
+
+2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * parser.c: Fix comment typo.
+
+2008-06-14  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/35320
+       * decl2.c (grokbitfield): Receive the list of attributes, pass it to
+       grokdeclarator and apply it to the created declaration.
+       * cp-tree.h (grokbitfield): Update prototype.
+       * parser.c (cp_parser_member_declaration): Don't apply the attributes
+       since they are now applied in grokbitfield. Adjusted the call to
+       grokbitfield.
+       (cp_parser_objc_class_ivars): Likewise.
+
+2008-06-14  Simon Martin  <simartin@users.sourceforge.net>
+
+       PR c++/35317
+       * class.c (type_requires_array_cookie): Do not consider delete[]
+       operators with an ellipsis as second argument.
+
+2008-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/36408
+       * semantics.c (stmt_expr_value_expr): Don't crash on empty
+       STATEMENT_LIST.
+
+2008-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
+
+        PR c++/35242
+        * pt.c (maybe_process_partial_specialization): Check the tree
+       returned by push_template_decl for error_mark_node.
+       * parser.c (cp_parser_class_head): Likewise, check the tree
+       returned by the latter. 
+
+2008-06-07  Paolo Carlini  <paolo.carlini@oracle.com>
+
+        PR c++/35327
+        * decl.c (grokdeclarator): In case of wrong return type return
+       immediately error_mark_node.
+
+2008-06-06  Jakub Jelinek  <jakub@redhat.com>
+
+       * cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info,
+       dependent_omp_for_p, begin_omp_task, finish_omp_task,
+       finish_omp_taskwait): New prototypes.
+       (cxx_omp_clause_default_ctor): Add outer argument.
+       (finish_omp_for): Add new clauses argument.
+       * cp-gimplify.c (cxx_omp_finish_clause): New function.
+       (cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten.
+       (cxx_omp_clause_default_ctor): Add outer argument.
+       (cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT.
+       * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
+       * parser.c (cp_parser_omp_for_loop): Parse collapsed for loops.
+       Add par_clauses argument.  If decl is present in parallel's
+       lastprivate clause, change that clause to shared and add
+       a lastprivate clause for decl to OMP_FOR_CLAUSES.
+       Fix wording of error messages.  Adjust finish_omp_for caller.
+       Add clauses argument.  Parse loops with random access iterators.
+       (cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New
+       functions.
+       (cp_parser_omp_for, cp_parser_omp_parallel): Adjust
+       cp_parser_omp_for_loop callers.
+       (cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper
+       functions.
+       (cp_parser_omp_clause_name): Handle collapse and untied
+       clauses.
+       (cp_parser_omp_clause_schedule): Handle auto schedule.
+       (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
+       and PRAGMA_OMP_CLAUSE_UNTIED.
+       (OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE.
+       (OMP_TASK_CLAUSE_MASK): Define.
+       (cp_parser_omp_task, cp_parser_omp_taskwait): New functions.
+       (cp_parser_omp_construct): Handle PRAGMA_OMP_TASK.
+       (cp_parser_pragma): Handle PRAGMA_OMP_TASK and
+       PRAGMA_OMP_TASKWAIT.
+       * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
+       OMP_CLAUSE_UNTIED.  Handle OMP_CLAUSE_LASTPRIVATE_STMT.
+       (tsubst_omp_for_iterator): New function.
+       (dependent_omp_for_p): New function.
+       (tsubst_expr) <case OMP_FOR>: Use it.  Handle collapsed OMP_FOR
+       loops.  Adjust finish_omp_for caller.  Handle loops with random
+       access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR} changes.
+       (tsubst_expr): Handle OMP_TASK.
+       * semantics.c (cxx_omp_create_clause_info): New function.
+       (finish_omp_clauses): Call it.  Handle OMP_CLAUSE_UNTIED and
+       OMP_CLAUSE_COLLAPSE.
+       (cxx_omp_predetermined_sharing): Removed.
+       * semantics.c (finish_omp_for): Allow pointer iterators.  Use
+       handle_omp_for_class_iterator and dependent_omp_for_p.  Handle
+       collapsed for loops.  Adjust c_finish_omp_for caller.  Add new
+       clauses argument.  Fix check for type dependent cond or incr.
+       Set OMP_FOR_CLAUSES to clauses.  Use cp_convert instead of
+       fold_convert to convert incr amount to difference_type.  Only
+       fold if not in template.  If decl is mentioned in lastprivate
+       clause, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle loops with random
+       access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR}
+       changes.
+       (finish_omp_threadprivate): Allow static class members of the
+       current class.
+       (handle_omp_for_class_iterator, begin_omp_task, finish_omp_task,
+       finish_omp_taskwait): New functions.
+
+       * parser.c (cp_parser_binary_expression): Add prec argument.
+       (cp_parser_assignment_expression): Adjust caller.
+       * cp-tree.h (outer_curly_brace_block): New prototype.
+       * decl.c (outer_curly_brace_block): No longer static.
+
+2008-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
+
+        PR c++/36404
+        * pt.c (push_template_decl_real): Consistently return error_mark_node
+       on error.
+
+2008-06-02  Tomas Bily  <tbily@suse.cz>
+
+        * typeck.c (is_bitfield_expr_with_lowered_type): Use CASE_CONVERT.
+        (cp_build_unary_op): Likewise.
+        (cp_build_indirect_ref): Use CONVERT_EXPR_P.
+        (maybe_warn_about_returning_address_of_local): Likewise.
+
+2008-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
+
+        PR c++/35243
+        * pt.c (tsubst_initializer_list): Consistently check the tree
+        returned by tsubst_pack_expansion for error_mark_node.
+
+2008-05-27  Michael Matz  <matz@suse.de>
+
+       PR c++/27975
+       * call.c (build_new_op): Make warning conditional on
+       OPT_Wenum_compare.
+
+2008-05-27  Alexandre Oliva  <aoliva@redhat.com>
+
+       PR c++/35909
+       * call.c (convert_like_real): Convert bitfield to desired type
+       before creating temporary.
+
+2008-05-26  Daniel Franke  <franke.daniel@gmail.com>
+
+       * Makefile.in: Adjusted dependencies on c-incpath.o.
+
+2008-05-23  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/36237
+       * cp-gimplify.c (cxx_omp_clause_apply_fn): Call
+       fold_build_cleanup_point_expr on build_call_a results.
+
+       PR c++/36308
+       * semantics.c (omp_clause_info_fndecl): New function.
+       (finish_omp_clauses): Use it.
+
+2008-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/36023
+       * cp-tree.h (check_array_initializer): New prototype.
+       * decl.c (check_array_initializer): New function.
+       (check_initializer): Call it.
+       * semantics.c (finish_compound_literal): Call it for ARRAY_TYPEs.
+
+2008-05-21  Tom Tromey  <tromey@redhat.com>
+
+       * mangle.c (save_partially_mangled_name): Remove.
+       (restore_partially_mangled_name): Likewise.
+       (write_encoding): Update.
+       (write_unqualified_name): Likewise.
+       (start_mangling): Always use name_obstack.  Remove 'ident_p'
+       argument.
+       (get_identifier_nocopy): Remove.
+       (finish_mangling_internal): Rename from finish_mangling.
+       (finish_mangling): New function.
+       (finish_mangling_get_identifier): Likewise.
+       (partially_mangled_name, partially_mangled_name_len): Remove.
+       (mangle_decl_string): Change return type.  Update.
+       (mangle_decl, mangle_type_string, mangle_special_for_type,
+       mangle_ctor_vtbl_for_type, mangle_thunk, mangle_guard_variable,
+       mangle_ref_init_variable): Update.
+
+2008-05-12  Paolo Carlini  <paolo.carlini@oracle.com>
+
+        PR c++/35331
+        * semantics.c (begin_class_definition): Extend checks on the first
+       argument.
+
+2008-05-12  Tomas Bily  <tbily@suse.cz>
+
+        * typeck2.c (digest_init): Use CONVERT_EXPR_P.
+        * call.c (build_over_call): Likewise.
+        * error.c (dump_expr): Use CASE_CONVERT.
+        * class.c (fixed_type_or_null): Likewise.
+
+2008-05-11  Volker Reichelt  <v.reichelt@netcologne.de>
+
+       * parser.c (cp_parser_omp_clause_reduction): Add missing "expected"
+       in error message.
+       (cp_parser_omp_clause_schedule): Remove superfluous "expected"
+       in error message.
+
+2008-05-07  Kenneth Zadeck  <zadeck@naturalbridge.com>
+
+       * decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
+       DECL_LOOPING_CONST_OR_PURE_P attributes.
+       * rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to
+       DECL_PURE_P.
+
+2008-05-02  Simon Baldwin  <simonb@google.com>
+
+       PR bootstrap/36108
+       * typeck.c (build_array_ref): Remove warn_array_subscript_range.
+
+2008-05-01  Simon Baldwin  <simonb@google.com>
+
+       * typeck.c (build_array_ref): Call warn_array_subscript_range.
+
+2008-04-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/35986
+       * pt.c (more_specialized_fn): Stop the loop even if there are no
+       arguments before ellipsis.
+
+2008-04-29  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/35650
+       * parser.c (cp_parser_lookup_name): Look through single function
+       OVERLOAD.
+
+       PR c++/35987
+       * typeck.c (cp_build_modify_expr) <case PREINCREMENT_EXPR>: Don't build
+       COMPOUND_EXPR if the second argument would be error_mark_node.
+
+2008-04-28  Jason Merrill  <jason@redhat.com>
+           Liu Guanwei <liu_gw@163.com>
+
+       PR c++/57
+       * parser.c (cp_parser_parameter_declaration): Handle < ambiguity
+       in default arguments.
+
+2008-04-25  Jan Hubicka  <jh@suse.cz>
+
+       * typeck.c (check_return_expr): Update.
+       * decl.c (start_preparsed_function): Update.
+       * method.c (use_thunk): Update.
+
+2008-04-24  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/35758
+       * cp-tree.h (cp_reconstruct_complex_type): New prototype.
+       * cp-objcp-common.h (LANG_HOOKS_RECONSTRUCT_COMPLEX_TYPE): Define.
+       * decl2.c (is_late_template_attribute): Only make vector_size
+       late tmpl attribute if argument is type or value dependent.
+       (cp_reconstruct_complex_type): New function.
+
+2008-04-24  Richard Guenther  <rguenther@suse.de>
+
+       * typeck.c (cp_build_function_call): Call
+       check_builtin_function_arguments.
+
+2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
+
+       * typeck.c (get_member_function_from_ptrfunc): Don't set TREE_INVARIANT.
+       (build_ptrmemfunc1): Don't set TREE_INVARIANT.
+       * init.c (build_zero_init): Don't set TREE_INVARIANT.
+       * class.c (build_base_path): Don't set TREE_INVARIANT.
+       (build_vtbl_ref_1): Don't set TREE_INVARIANT.
+       (build_vtbl_initializer): Don't set TREE_INVARIANT.
+       * decl.c (build_enumerator): Don't set TREE_INVARIANT.
+       * rtti.c (tinfo_base_init): Don't set TREE_INVARIANT.
+       (generic_initializer): Don't set TREE_INVARIANT.
+       (ptr_initializer): Don't set TREE_INVARIANT.
+       (ptm_initializer): Don't set TREE_INVARIANT.
+       (class_initializer): Don't set TREE_INVARIANT.
+       * typeck2.c (process_init_constructor): Don't set TREE_INVARIANT.
+       * pt.c (push_inline_template_parms_recursive): Don't set TREE_INVARIANT.
+       (build_template_parm_index): Don't set TREE_INVARIANT.
+       (reduce_template_parm_level): Don't set TREE_INVARIANT.
+       (process_template_parm): Don't set TREE_INVARIANT.
+
+2008-04-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/35316
+       * semantics.c (finish_decltype_type): Check DECL_BIT_FIELD_TYPE
+       to see if DECL_BIT_FIELD_TYPE should be used, not some other flag.
+       * typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
+
+2008-04-22  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/35747
+       * semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt
+       expression is errorneous.
+
+2008-04-21  Jason Merrill  <jason@redhat.com>
+
+       PR c++/35325
+       * tree.c (cp_tree_equal): Handle FIXED_CST.
+
+       PR c++/35678
+       * pt.c (template_template_parm_bindings_ok_p): Set 
+       processing_template_decl while in this function.
+
+2008-04-18  Kris Van Hees <kris.van.hees@oracle.com>
+
+       * cvt.c (type_promotes_to): Support char16_t and char32_t.
+       * decl.c (grokdeclarator): Disallow signed/unsigned/short/long on
+       char16_t and char32_t.
+       * lex.c (reswords): Add char16_t and char32_t (for c++0x).
+       * mangle.c (write_builtin_type): Mangle char16_t/char32_t as vendor
+       extended builtin type "u8char{16,32}_t".
+       * parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Support
+       RID_CHAR{16,32}.
+       (cp_lexer_print_token): Support CPP_STRING{16,32}.
+       (cp_parser_is_string_literal): Idem.
+       (cp_parser_string_literal): Idem.
+       (cp_parser_primary_expression): Support CPP_CHAR{16,32} and
+       CPP_STRING{16,32}.
+       (cp_parser_simple_type_specifier): Support RID_CHAR{16,32}. 
+       * tree.c (char_type_p): Support char16_t and char32_t as char types.
+       * typeck.c (string_conv_p): Support char16_t and char32_t.
+
+2008-04-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/35773
+       * call.c (build_user_type_conversion_1): Represent second step of 
+       copy-init with an rvalue conversion.
+       (convert_like_real) [ck_user]: Don't implicitly add it here.
+
+2008-04-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c/35751
+       * decl.c (layout_var_decl): If extern or static var has variable
+       size, set TREE_TYPE (decl) to error_mark_node.
+
+2008-04-16  Danny Smith  <dannysmith@users.sourceforge.net>
+
+       PR target/35921
+       * optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
+       to clone.
+
+2008-04-09  Jason Merrill  <jason@redhat.com>
+
+       PR c++/35708
+       * semantics.c (finish_compound_literal): Return a TARGET_EXPR, 
+       not a pushed variable.
+
+2008-04-09  Volker Reichelt  <v.reichelt@netcologne.de>
+
+       * call.c (build_op_delete_call): Fix quotation in warning message.
+       * decl.c (grokdeclarator): Quote keyword in error message.
+       * pt.c (check_for_bare_parameter_packs): Fix quotation in error
+       message.
+
+       * parser.c (cp_parser_check_type_definition): Print error string
+       directly rather than using "%s".
+       (cp_parser_postfix_expression): Fix quotation.
+       (cp_parser_decltype): Likewise.
+       (cp_parser_sizeof_operand): Fix quotation. Simplify.
+
+       * parser.c (cp_parser_non_integral_constant_expression): Build error
+       message with CONCAT rather than using "%s".
+       (cp_parser_primary_expression): Fix quotation.
+       (cp_parser_postfix_expression): Likewise.
+       (cp_parser_postfix_dot_deref_expression): Likewise.
+       (cp_parser_unary_expression): Likewise.
+       (cp_parser_new_expression): Likewise.
+       (cp_parser_delete_expression): Likewise.
+
+       * parser.c (cp_parser_asm_specification_opt): Print CPP_CLOSE_PAREN
+       as `)', not as `('.  Fix quotation.
+       (cp_parser_consume_semicolon_at_end_of_statement): Fix quotation.
+       (cp_parser_primary_expression): Likewise.
+       (cp_parser_nested_name_specifier_opt): Likewise.
+       (cp_parser_postfix_expression): Likewise.
+       (cp_parser_postfix_open_square_expression): Likewise.
+       (cp_parser_parenthesized_expression_list): Likewise.
+       (cp_parser_pseudo_destructor_name): Likewise.
+       (cp_parser_new_expression): Likewise.
+       (cp_parser_direct_new_declarator): Likewise.
+       (cp_parser_delete_expression): Likewise.
+       (cp_parser_cast_expression): Likewise.
+       (cp_parser_question_colon_clause): Likewise.
+       (cp_parser_builtin_offsetof): Likewise.
+       (cp_parser_trait_expr): Likewise.
+       (cp_parser_label_for_labeled_statement): Likewise.
+       (cp_parser_compound_statement): Likewise.
+       (cp_parser_selection_statement): Likewise.
+       (cp_parser_condition): Likewise.
+       (cp_parser_iteration_statement): Likewise.
+       (cp_parser_already_scoped_statement): Likewise.
+       (cp_parser_simple_declaration): Likewise.
+       (cp_parser_linkage_specification): Likewise.
+       (cp_parser_static_assert): Likewise.
+       (cp_parser_decltype): Likewise.
+       (cp_parser_conversion_function_id): Likewise.
+       (cp_parser_operator_function_id): Likewise.
+       (cp_parser_operator): Likewise.
+       (cp_parser_type_parameter): Likewise.
+       (cp_parser_template_id): Likewise.
+       (cp_parser_explicit_instantiation): Likewise.
+       (cp_parser_explicit_specialization): Likewise.
+       (cp_parser_enum_specifier): Likewise.
+       (cp_parser_namespace_definition): Likewise.
+       (cp_parser_namespace_alias_definition): Likewise.
+       (cp_parser_using_declaration): Likewise.
+       (cp_parser_using_directive): Likewise.
+       (cp_parser_asm_definition): Likewise.
+       (cp_parser_direct_declarator): Likewise.
+       (cp_parser_ptr_operator): Likewise.
+       (cp_parser_parameter_declaration_clause): Likewise.
+       (cp_parser_initializer_clause): Likewise.
+       (cp_parser_class_specifier): Likewise.
+       (cp_parser_member_specification_opt): Likewise.
+       (cp_parser_member_declaration): Likewise.
+       (cp_parser_pure_specifier): Likewise.
+       (cp_parser_constant_initializer): Likewise.
+       (cp_parser_base_clause): Likewise.
+       (cp_parser_exception_specification_opt): Likewise.
+       (cp_parser_try_block): Likewise.
+       (cp_parser_function_try_block): Likewise.
+       (cp_parser_handler): Likewise.
+       (cp_parser_throw_expression): Likewise.
+       (cp_parser_asm_operand_list): Likewise.
+       (cp_parser_attributes_opt): Likewise.
+       (cp_parser_label_declaration): Likewise.
+       (cp_parser_constructor_declarator_p): Likewise.
+       (cp_parser_template_declaration_after_export): Likewise.
+       (cp_parser_single_declaration): Likewise.
+       (cp_parser_objc_message_expression): Likewise.
+       (cp_parser_objc_message_args): Likewise.
+       (cp_parser_objc_encode_expression): Likewise.
+       (cp_parser_objc_defs_expression): Likewise.
+       (cp_parser_objc_protocol_expression): Likewise.
+       (cp_parser_objc_selector_expression): Likewise.
+       (cp_parser_objc_protocol_refs_opt): Likewise.
+       (cp_parser_objc_typename): Likewise.
+       (cp_parser_objc_method_keyword_params): Likewise.
+       (cp_parser_objc_superclass_or_category): Likewise.
+       (cp_parser_objc_try_catch_finally_statement): Likewise.
+       (cp_parser_objc_synchronized_statement): Likewise.
+       (cp_parser_objc_throw_statement): Likewise.
+       (cp_parser_omp_var_list_no_open): Likewise.
+       (cp_parser_omp_clause_default): Likewise.
+       (cp_parser_omp_clause_if): Likewise.
+       (cp_parser_omp_clause_num_threads): Likewise.
+       (cp_parser_omp_clause_reduction): Likewise.
+       (cp_parser_omp_clause_schedule): Likewise.
+       (cp_parser_omp_critical): Likewise.
+       (cp_parser_omp_for_loop): Likewise.
+       (cp_parser_omp_sections_scope): Likewise.
+
+       * parser.c (cp_parser_template_parameter_list): Simplify.
+
+2008-04-07  James E. Wilson  <wilson@tuliptree.org>
+
+       * pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.
+
+2008-04-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/35734
+       * class.c (type_has_user_nondefault_constructor): A template 
+       counts as a nondefault constructor.
+
+2008-04-04  Paolo Bonzini  <bonzini@gnu.org>
+
+       * decl.c (cxx_push_function_context): Delete.
+       (cxx_pop_function_context): Delete.
+       (start_preparsed_function): Merge cxx_push_function_context (!f->decl
+       code only).
+       * cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
+       LANG_HOOKS_FUNCTION_FINAL): Delete.
+       (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
+       LANG_HOOKS_MISSING_NORETURN_OK_P.
+       * cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
+       Delete prototype.
+       * semantics.c (current_stmt_tree): Fix comment.
+
+2008-04-03  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/35741
+       * semantics.c (finish_offsetof): Undo effect of convert_from_reference
+       before calling fold_offsetof.
+
+2008-04-03  Tom Tromey  <tromey@redhat.com>
+
+       * Make-lang.in (c++_OBJS): New variable.
+
+2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
+    
+       * optimize.c (clone_body): New, from tree-inline.c.
+
+2008-04-03  Paolo Bonzini  <bonzini@gnu.org>
+
+        * method.c (synthesize_method): Use {push,pop}_function_context.
+        * name-lookup.c (push_to_top_level): Likewise.
+        * parser.c (cp_parser_late_parsing_for_member): Likewise.
+
+2008-03-30  Volker Reichelt  <v.reichelt@netcologne.de>
+
+       PR c++/35578
+       * parser.c (cp_parser_decl_specifier_seq): Add location to error
+       message.
+
+2008-03-27  Tom Tromey  <tromey@redhat.com>
+
+       * Make-lang.in: Revert automatic dependency patch.
+
+2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
+
+       PR obj-c++/35704
+       * typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
+       (build_compound_expr): New, for compatibility with C
+       build_compound_expr.
+       (cp_build_compound_expr): Renamed from build_compound_expr.
+       (build_c_cast): New, for compatibility with C build_c_cast.
+       (cp_build_c_cast): Renamed from build_c_cast.
+       * init.c (build_vec_delete_1): Fix calls to build_compound_expr.
+       * decl.c (cxx_maybe_build_cleanup): Ditto.
+       * cp-tree.h (build_compound_expr): Add C-compatibile prototype.
+       (cp_build_compound_expr): Renamed from build_compound_expr.
+       (build_c_cast): Add C-compatible prototype.
+       (cp_build_c_cast): Renamed from build_c_cast.
+       * typeck2.c (build_functional_cast): Use cp_build_c_cast.
+       * parser.c (cp_parser_cast_expression): Fix call to build_c_cast.
+
+2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
+
+       * pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
+       tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
+       ending in a pack expansion, both of which can occur when
+       substituting into a nested template.
+       (tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
+       instantiating the sizeof...(X) form, make tsubst_copy do the work.
+       * parser.c (cp_parser_template_parameter): Deal with unnamed
+       non-type template parameter packs identified by pack expansions in
+       the parameter type.
+
 2008-03-26  Jakub Jelinek  <jakub@redhat.com>
 
+       PR c++/35546
+       * pt.c (apply_late_template_attributes): Don't call tsubst on
+       first attribute argument if it is IDENTIFIER_NODE.
+
        PR c++/35332
        * error.c (dump_expr): Pass {,UN}ORDERED_EXPR, UN{LT,LE,GT,GE,EQ}_EXPR
        and LTGT_EXPR to pp_expression.
 
 2007-09-05  Jan Hubicka  <jh@suse.cz>
 
-       * cp/sematics.c (expand_body): Remove unnecesary import_export_decl
+       * sematics.c (expand_body): Remove unnecesary import_export_decl
        call, DECL_EXTERNAL checks and current_function_decl saving.
 
 2007-09-05  Paolo Carlini  <pcarlini@suse.de>
 
        * cp-objcp-common.c (cxx_get_alias_set): Change return type to
        alias_set_type.
-       * cp/cp-tree.h (cxx_get_alias_set): Update declaration.
+       * cp-tree.h (cxx_get_alias_set): Update declaration.
 
 2007-08-10  Ollie Wild  <aaw@google.com>
 
 
 2007-05-11  Silvius Rus  <rus@google.com>
 
-       * cp/typeck.c (build_indirect_ref): Add call to
+       * typeck.c (build_indirect_ref): Add call to
        strict_aliasing_warning.
        (build_reinterpret_cast_1): Condition call to
        strict_aliasing_warning. 
 
 2007-04-23  Jan Hubicka  <jh@suse.cz>
 
-       * cp/decl2.c (finish_objects): Do not call target constructor/destructor
+       * decl2.c (finish_objects): Do not call target constructor/destructor
        bits dirrectly.
 
 2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
 2007-04-16  Seongbae Park <seongbae.park@gmail.com>
 
        PR c++/29365
-       * cp/decl2.c (constrain_class_visibility):
+       * decl2.c (constrain_class_visibility):
        Do not warn about the use of anonymous namespace in the main input file.
 
 2007-04-15  Mark Mitchell  <mark@codesourcery.com>
 
 2007-04-11  Jan Hubicka  <jh@suse.cz>
 
-       * cp/class.c (convert_to_base_statically): Fold produced tree; verify
+       * class.c (convert_to_base_statically): Fold produced tree; verify
        that we are not processing template_decl.
 
 2007-04-09  Mark Mitchell  <mark@codesourcery.com>
 
 2007-03-14  Dirk Mueller  <dmueller@suse.de>
 
-       * cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
+       * semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
        (finish_do_body): Warn about empty body in do/while statement.
 
 2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
        
 2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
 
-       * cp/repo.c (init_repo): Initialize random_seed saved options.
+       * repo.c (init_repo): Initialize random_seed saved options.
        (finish_repo): Adjust.
 
 2007-03-13  Mark Mitchell  <mark@codesourcery.com>
 
 2007-03-09  Dirk Mueller  <dmueller@suse.de>
 
-       * cp/call.c (build_new_op): Call warn_logical_operator.
+       * call.c (build_new_op): Call warn_logical_operator.
 
 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>