+2009-11-24 Jason Merrill <jason@redhat.com>
+
+ * pt.c (determine_specialization): Give helpful error about missing
+ "template<>".
+
+2009-11-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/42095
+ * tree.c: Include cgraph.h.
+ (cp_fix_function_decl_p): Don't return true for same_body aliases.
+ * Make-lang.in (cp/tree.o): Depend on $(CGRAPH_H).
+
+2009-11-23 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/14777
+ * cp-tree.def <TEMPLATE_INFO>: Declare new kind of tree
+ node.
+ * cp-tree.h (struct tree_template_info,
+ struct qualified_typedef_usage_s): New.
+ (cp_tree_node_structure_enum): add TS_CP_TEMPLATE_INFO.
+ (union lang_tree_node): Add template_info.
+ (TI_TEMPLATE, TI_ARGS, TI_TYPEDEFS_NEEDING_ACCESS_CHECKING):
+ Adjust.
+ (build_template_info): Declare.
+ (get_types_needing_access_check): Adjust return type.
+ (add_typedef_to_current_template_for_access_check): Declare.
+ * cp-objcp-common.c (cp_tree_size): Handle TEMPLATE_INFO.
+ * semantics.c (add_typedef_to_current_template_for_access_check):
+ Split from ...
+ (check_accessibility_of_qualified_id): ... here.
+ * decl.c (make_typename_type): Use it.
+ * pt.c (build_template_info): Define.
+ (check_explicit_specialization, find_parameter_packs_r,
+ push_template_decl_real, lookup_template_class,
+ for_each_template_parm_r, tsubst_decl, tsubst): Use
+ build_template_info.
+ (get_types_needing_access_check): Adjust return type.
+ (append_type_to_template_for_access_check_1): Record the
+ location of the usage point of the typedef. Adjust to TEMPLATE_INFO.
+ (append_type_to_template_for_access_check): Add new location
+ parameter. Pass it to append_type_to_template_for_access_check_1.
+ Adjust to TEMPLATE_INFO.
+ (perform_typedefs_access_check): Temporarily set input_location to
+ the usage point of the typedef we are checking access for. Adjust
+ to new TEMPLATE_INFO tree node.
+ * tree.c (bind_template_template_parm): Use build_template_info.
+ * call.c (add_template_candidate_real): Likewise.
+ * decl.c (grokfndecl): Likewise.
+ (cp_tree_node_structure): Handle TEMPLATE_INFO.
+
+2009-11-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/9050, DR 147, DR 318
+ * parser.c (cp_parser_lookup_name): If the name matches the explicit
+ class scope, we're naming the constructor.
+ (cp_parser_constructor_declarator_p): Just use cp_parser_unqualified_id
+ if we have a nested-name-specifier.
+ (cp_parser_direct_declarator): Handle getting an overload set as a
+ constructor declarator.
+ (cp_parser_unqualified_id): Avoid looking up the constructor when
+ naming the destructor.
+ (cp_parser_diagnose_invalid_type_name): Give good
+ diagnostic for improper use of constructor as template.
+ * typeck.c (finish_class_member_access_expr): Give good diagnostic
+ about calling constructor.
+
+ * error.c (dump_aggr_type): Don't print A::A for injected-class-name.
+
+2009-11-20 Simon Martin <simartin@users.sourceforge.net>
+
+ PR c++/38646
+ * pt.c (process_partial_specialization): Do not turn wrongly located
+ parameter pack arguments into error_mark_node.
+ Split too long lines into two.
+
+2009-11-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/42060
+ * except.c (build_throw): Check the tree returned by
+ decay_conversion for error_mark_node.
+
+2009-11-20 Shujing Zhao <pearly.zhao@oracle.com>
+
+ PR c++/29017
+ * cp-tree.h (composite_pointer_operation): New type.
+ (composite_pointer_type): Adjust prototype with new argument.
+ * typeck.c (composite_pointer_type): Accept
+ composite_pointer_operation as argument and emit diagnostic to be
+ visible to gettext and checked at compile time.
+ (composite_pointer_type_r): Likewise.
+ (common_pointer_type): Update call to composite_pointer_type.
+ (cp_build_binary_op): Likewise.
+ * call.c (build_conditional_expr): Likewise.
+
+2009-11-19 Jason Merrill <jason@redhat.com>
+
+ PR c++/42115
+ * call.c (build_op_delete_call): Don't complain about using
+ op delete (void *, size_t) for placement delete if there's an
+ op delete (void *).
+
+ DR 176 permissiveness
+ * class.c (build_self_reference): Call set_underlying_type.
+ * decl.c (check_elaborated_type_specifier): Don't complain about
+ injected-class-name.
+ (type_is_deprecated): Use TYPE_MAIN_VARIANT.
+ * pt.c (convert_template_argument): Handle injected-class-name used
+ as template template argument.
+ * typeck2.c (abstract_virtuals_error): Use TYPE_MAIN_VARIANT.
+
+ PR c++/561
+ * decl.c (static_fn_type): Split out...
+ (revert_static_member_fn): ...from here.
+ * cp-tree.h: Declare it.
+ * class.c (resolve_address_of_overloaded_function): Use it to compare
+ pointers to member functions.
+ * typeck.c (build_static_cast_1): Call instantiate_type.
+
+2009-11-18 Shujing Zhao <pearly.zhao@oracle.com>
+
+ PR c++/40892
+ * error.c (maybe_warn_cpp0x): Accept enum cpp0x_warn_str as argument.
+ (maybe_warn_variadic_templates): Update the maybe_warn_cpp0x calls to
+ match the new declaration.
+ * cp-tree.h (cpp0x_warn_str): New type.
+ (maybe_warn_cpp0x): Adjust prototype with new argument.
+ * call.c (reference_binding): Update the maybe_warn_cpp0x calls.
+ * decl.c (reshape_init_r, check_initializer, grokdeclarator):
+ Likewise.
+ * parser.c (cp_parser_primary_expression)
+ (cp_parser_parenthesized_expression_list, cp_parser_new_initializer)
+ (cp_parser_assignment_expression, cp_parser_condition)
+ (cp_parser_jump_statement, cp_parser_mem_initializer)
+ (cp_parser_simple_type_specifier, cp_parser_elaborated_type_specifier)
+ (cp_parser_enum_specifier, cp_parser_initializer)
+ (cp_parser_pure_specifier, cp_parser_functional_cast): Likewise.
+
+2009-11-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/3187
+ * cp-tree.h (expand_or_defer_fn_1): New prototype.
+ * decl2.c (cp_write_global_declarations): Mark as !DECL_EXTERNAL
+ also all same_body aliases.
+ * semantics.c (expand_or_defer_fn): Move most of the function
+ except registering with cgraph to ...
+ (expand_or_defer_fn_1): ... here. New function.
+ * optimize.c: Include cgraph.h.
+ (maybe_clone_body): If in charge parm is not used and both base
+ and complete clones are created and are not comdat, tell cgraph
+ they have the same body.
+ * Make-lang.in (cp/optimize.o): Depend on $(CGRAPH_H).
+
+2009-11-17 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/42058
+ * typeck2.c (digest_init_r): Check init for error_operand_p.
+ * decl.c (reshape_init_class): Check return value of reshape_init_r
+ for error_mark_node.
+
+2009-11-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/42061
+ * call.c (reference_binding): Return NULL for initializer list with
+ error operand inside of it.
+
+ PR c++/42059
+ * typeck.c (cp_build_modify_expr): For initializer list call
+ check_array_initializer to make sure lhs isn't a VLA.
+
+2009-11-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/189, c++/9937, c++/13950, DR 176
+ * search.c (lookup_field_r): Allow lookup to find the
+ injected-class-name from a template base.
+ (template_self_reference_p): Remove.
+ * decl.c (make_typename_type): Diagnose ambiguity. Use
+ maybe_get_template_decl_from_type_decl.
+ * parser.c (cp_parser_template_name): Pass true to is_template
+ rather than use maybe_get_template_decl_from_type_decl.
+ (cp_parser_lookup_name): Use maybe_get_template_decl_from_type_decl.
+ * pt.c (maybe_get_template_decl_from_type_decl): Handle ambiguity.
+ Use DECL_SELF_REFERENCE_P.
+
+ * parser.c (cp_parser_parse_and_diagnose_invalid_type_name):
+ Avoid duplicate ambiguity error.
+ * error.c (dump_decl): Don't say "typedef" for injected-class-name.
+ * pt.c (convert_template_argument): Tweak logic.
+
+2009-11-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/42055
+ * pt.c (determine_specialization): Assign to candidates the return
+ value of the chainon called before print_candidates.
+
+2009-11-16 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/32056
+ * decl.h (enum decl_context): Add TPARM enumerator.
+ * decl.c (grokdeclarator): Per 14.1/2, error out if a storage class
+ is specified in a template parameter declaration.
+ * parser.c (cp_parser_template_parameter): Call grokdeclarator with
+ TPARM as third argument.
+
+2009-11-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/27425
+ PR c++/34274
+ * pt.c (expand_template_argument_pack): Handle null arg gracefully.
+ (convert_template_argument): Use %T for type.
+
+ PR c++/29363
+ * decl.c (create_implicit_typedef): Set TYPE_STUB_DECL here.
+ (cxx_init_decl_processing): Not here.
+ * name-lookup.c (pushtag): Or here.
+ * pt.c (lookup_template_class): Or here.
+
+ PR c++/35075
+ * pt.c (convert_nontype_argument): Give helpful error about
+ reference variable argument to reference template parameter.
+
+ PR c++/21008, DR 515
+ * semantics.c (finish_non_static_data_member): Don't check
+ derivation in a template.
+
+ PR c++/11987
+ * parser.c (cp_parser_direct_declarator): Give helpful error about
+ trying to define member of a dependent typedef.
+ * pt.c (resolve_typename_type): Don't resolve a typedef typename.
+ * tree.c (typedef_variant_p): New.
+ * cp-tree.h: Declare it.
+
+2009-11-12 Jason Merrill <jason@redhat.com>
+
+ PR c++/27078
+ * parser.c (cp_parser_primary_expression): Don't give a duplicate
+ ambiguity error.
+
+ PR c++/39560
+ * decl2.c (build_anon_union_vars): Set DECL_ARTIFICIAL.
+
+ PR c++/37037
+ * decl.c (grokdeclarator): Don't generate a void PARM_DECL.
+
+ PR c++/42013
+ * call.c (build_conditional_expr): Check specifically for folding
+ to CALL_EXPR rather than TREE_SIDE_EFFECTS.
+
+ * typeck.c (cv_qualified_p): New fn.
+ (decay_conversion): Use it.
+ * cp-tree.h: Declare it.
+ * tree.c (rvalue): Use it and cv_unqualified.
+ * init.c (build_aggr_init): Likewise.
+
+ PR c++/42013
+ * call.c (build_conditional_expr): Don't fold a TREE_SIDE_EFFECTS
+ COND_EXPR in unevaluated context.
+
+2009-11-12 Jan Hubicka <jh@suse.cz>
+
+ * decl2.c (constrain_visibility): Clear WEAK and COMMON flags.
+
2009-11-11 Jason Merrill <jason@redhat.com>
PR c++/39131
* rtti.c (emit_support_tinfos): Add DFP types.
-2009-11-11 Jason Merrill <jason@redhat.com>
-
* call.c (build_op_delete_call): Downgrade error about
placement/non-placement confusion to permerror.