+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"