2009-04-14 Diego Novillo * parser.c (cp_parser_type_specifier_seq): Move call to invoke_plugin_callbacks ... (cp_parser_type_specifier_seq): ... here. 2009-04-14 Le-Chun Wu * Make-lang.in: Modify dependencies of files including plugin.h. * decl.c (finish_function): Call invoke_plugin_callbacks. * parser.c (cp_parser_type_specifier): Call invoke_plugin_callbacks. 2009-04-14 Jason Merrill PR c++/39763 * name-lookup.c (pushdecl_maybe_friend): Avoid all warnings about shadowing by tentative parms. 2009-04-13 Jason Merrill PR c++/39480 * call.c (build_over_call): Don't call memcpy if the target is the same as the source. 2009-04-13 Jason Merrill PR c++/39750 * pt.c (uses_template_parms): Handle CONSTRUCTOR. 2009-04-12 Jason Merrill PR c++/39742 * call.c (joust): Don't crash on variadic fn. 2009-04-10 Jason Merrill PR c++/28301 * parser.c (cp_parser_skip_to_end_of_block_or_statement): Return if we see a close brace without an open brace. 2008-04-10 H.J. Lu * parser.c (cp_parser_class_specifier): Remove the unused has_trailing_semicolon. 2009-04-10 Manuel López-Ibáñez PR c++/20118 * parser.c (cp_parser_check_template_parameters): Take a cp_declarator parameter. (cp_parser_elaborated_type_specifier): Update to cp_parser_check_template_parameters. (cp_parser_class_head): Likewise. (cp_parser_check_declarator_template_parameters): Likewise. (cp_parser_check_template_parameters): Handle first the non-error conditions. Give more accurate diagnostics if a declarator is given. 2009-04-08 Jason Merrill PR c++/25185 * error.c (dump_aggr_type): Chase template typedefs if -fno-pretty-templates. 2009-04-08 Dodji Seketeli PR c++/39637 * parser.c (cp_parser_enumerator_definition): Make sure the initializer of the enumerator doesn't contain any bare parameter pack. 2009-04-07 Jason Merrill PR c++/34691 * name-lookup.c (merge_functions): Keep multiple extern "C" functions. * call.c (joust): Complain about mismatched default arguments in extern "C" functions. * class.c (resolve_address_of_overloaded_function): Handle multiple extern "C" functions. * pt.c (resolve_overloaded_unification): Likewise. 2009-04-07 Jason Merrill PR c++/25185 * error.c (dump_function_decl): Don't pretty-print templates if -fno-pretty-templates. (count_non_default_template_args): Print all args if -fno-pretty-templates. 2009-04-06 Jason Merrill PR c++/35146 * pt.c (fn_type_unification): For DEDUCE_EXACT check that the deduced template arguments give us the parameter types we're looking for. 2009-04-05 Giovanni Bajo Jason Merrill PR c++/14912 * error.c (count_non_default_template_args): New fn. (dump_template_parms): Call it. (dump_template_argument_list): Call it. Add parms parm. (dump_template_argument): Adjust call to dump_template_argument_list. (dump_type, dump_decl): Likewise. (dump_template_bindings): Refactor logic. 2009-04-03 Jason Merrill PR c++/25185 * error.c (dump_template_bindings): Look through typedefs in typename results. (dump_type) [TYPENAME_TYPE]: Print the typedef name if any. (find_typenames_r): Also collect typedefs. * pt.c (unify): Strip typedefs. PR c++/39608 * semantics.c (finish_id_expression): Don't assume a dependent member of the current instantiation isn't a valid integral constant expression. Check dependent_scope_p. * pt.c (dependent_scope_p): Check TYPE_P. (tsubst_copy): If args is null, just return. 2009-04-02 Jason Merrill PR c++/25185 * error.c (find_typenames, find_typenames_r): New fns. (dump_function_decl): Call find_typenames. (dump_template_bindings): Print typenames as well. * pt.c (tsubst): Non-static. * cp-tree.h: Declare it. 2009-04-02 Dodji Seketeli PR c++/26693 * decl2.c (grokfield): when a typedef appears in a class, create the typedef variant type node for it. (save_template_attributes): Creating typedef variant type node here is now useless. * decl.c (grokdeclarator): If the typedef'ed struct/class was anonymous, set the proper type name to all its type variants. (xref_basetypes) : Fixup the variant types after setting TYPE_BINFO on REF. * name-lookup.c (pushdecl_maybe_friend): Reuse the set_underlying_type function to install typedef variant types. * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor macro. (append_type_to_template_for_access_check): New entry points. * semantics.c (check_accessibility_of_qualified_id): When a typedef that is a member of a class appears in a template, add it to the template. It will be ... * class.c (finish_struct_bits): Split type variant fixup into ... (fixup_type_variants): A new entry point. * pt.c (instantiate_class_template, instantiate_template ): ... access checked at template instantiation time. (resolve_type_name_type): The type name should be the name of the main type variant. (retrieve_specialization): Specializations of template typedefs aren't to looked up in DECL_TEMPLATE_INSTANTIATIONS (tmpl). (append_type_to_template_for_access_check): New entry point. (tsubst_decl): For typedefs, build the variant type from the correct original type. (get_class_bindings): Fix function comment. (perform_typedefs_access_check): New entry point. 2009-03-31 Jason Merrill PR c++/34691 * name-lookup.c (pushdecl_maybe_friend): Diagnose mismatched extern "C" declarations. C++ DR 613 * semantics.c (finish_non_static_data_member): Allow such references without an associated object in sizeof/decltype/alignof. * ptree.c (cxx_print_decl): Pretty-print full name of function/template. (cxx_print_type): Pretty-print full name of class. * decl.c (grokdeclarator): Reject pointer to qualified function type. PR c++/37806, core issue 547 * typeck.c (cp_apply_type_quals_to_decl): Don't apply any quals to a typedef. * tree.c (cp_build_qualified_type_real): Don't apply restrict to a function type. * decl.h (enum decl_context): Add TEMPLATE_TYPE_ARG. * decl.c (groktypename): Add is_template_arg parameter. (grokdeclarator): Allow function cv-quals on a template type arg. * parser.c (cp_parser_new_type_id, cp_parser_type_id): Add is_template_arg argument in calls to groktypename. * cp-tree.h: Adjust prototype. * error.c (dump_type_prefix, dump_type_suffix): Fix plain FUNCTION_TYPE printing. * mangle.c (write_expression): Mangle dependent name as source-name. PR c++/38030, 38850, 39070 * pt.c (type_dependent_expression_p_push): New fn. (tsubst_copy_and_build) [CALL_EXPR]: Only do arg-dep lookup when the substitution makes the call non-dependent. Preserve koenig_p. * parser.c (cp_parser_postfix_expression): Only do arg-dep lookup for non-dependent calls. * semantics.c (finish_call_expr): Revert earlier changes. * cp-tree.h: Revert change to finish_call_expr prototype. 2009-03-29 Joseph Myers PR preprocessor/34695 * cp-tree.h (cp_cpp_error): Remove. * error.c (cp_cpp_error): Remove. * parser.c (cp_lexer_new_main): Set done_lexing instead of client_diagnostic and error callback. 2009-03-28 Paolo Bonzini * cp/cp-objcp-common.h (LANG_HOOKS_STATICP): Remove. * cp/cp-objcp-common.c (cxx_staticp): Remove. * cp/cp-tree.h (cxx_staticp): Remove. 2009-03-28 Jakub Jelinek PR c++/39554 * parser.c (cp_parser_postfix_expression): Don't call warning_if_disallowed_function_p. 2009-03-27 Jan Hubicka * except.c (choose_personality_routine): Set terminate_node to abort for java exceptions. 2009-03-27 Dodji Seketeli Jakub Jelinek PR debug/37959 * cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P): Define. (cp_function_decl_explicit_p): New prototype. * cp-objcp-common.c (cp_function_decl_explicit_p): New function. 2009-03-27 Andrew Pinski PR c++/38638 * parser.c (cp_parser_elaborated_type_specifier): If we have a typename tag and don't have either a TYPE_DECL or a TEMPLATE_ID_EXPR, set the type to NULL. 2009-03-27 Simon Martin PR c++/37647 * decl.c (grokdeclarator): Reject [con|de]stuctors in a non-class scope. 2009-03-27 Simon Martin PR c++/29727 * decl.c (check_array_designated_initializer): Handle error_mark_node. 2009-03-27 Manuel Lopez-Ibanez PR c++/35652 * typeck.c (cp_pointer_sum): Adjust call to pointer_int_sum. 2009-03-26 Andrew Haley PR C++/39380 * decl2.c (possibly_inlined_p): If java exceptions are in use don't inline a decl unless it is explicitly marked inline. * lex.c: (pragma_java_exceptions): New variable. (handle_pragma_java_exceptions): Set pragma_java_exceptions. * cp-tree.h (pragma_java_exceptions): Declare new variable. 2009-03-24 Jason Merrill PR c++/28274 * name-lookup.c (pushdecl_maybe_friend): Check default args later. 2009-03-23 Jakub Jelinek PR c/39495 * semantics.c (handle_omp_for_class_iterator): Swap cond operands and code if iter is the second operand. * parser.c (cp_parser_binary_expression): Add no_toplevel_fold_p argument. If it is set, don't build the toplevel expression with build_x_binary_op, but build2. (cp_parser_assignment_expression, cp_parser_omp_for_incr): Adjust callers. (cp_parser_omp_for_cond): Don't assume the first operand of the comparison must be decl. 2009-03-23 Jason Merrill PR c++/37729 * pt.c (make_fnparm_pack): Split out from... (instantiate_decl): ...here. (tsubst_pack_expansion): Handle being called in a late-specified return type. PR c++/39526 * name-lookup.c (pushdecl_maybe_friend): Don't warn about shadowing a parm with a parm. 2009-03-20 Jason Merrill PR c++/28879 * parser.c (cp_parser_direct_declarator): In a template, wrap non-constant expression in NOP_EXPR with TREE_SIDE_EFFECTS set. * pt.c (tsubst): Preserve it in a partial instantiation. (dependent_type_p_r): Don't check value_dependent_expression_p. * decl.c (compute_array_index_type): Don't check value_dependent_expression_p if TREE_SIDE_EFFECTS. C++ core issue 703 * typeck2.c (check_narrowing): Don't complain about loss of precision when converting a floating-point constant. 2009-03-19 Jakub Jelinek PR c/39495 * parser.c (cp_parser_omp_for_cond): Don't check lhs if decl is NULL. (cp_parser_omp_for_loop): Always use cp_parser_omp_for_cond. 2009-03-18 Jakub Jelinek * parser.c (struct cp_token): Reorder fields for 64-bit hosts. (eof_token): Adjust. 2009-03-18 H.J. Lu PR c++/39425 * parser.c (cp_parser_explicit_specialization): Don't skip the rest of the specialization when begin_specialization returns false. 2009-03-17 Jason Merrill * decl.c (grokfndecl): Set DECL_CONTEXT on parms. (duplicate_decls): Adjust DECL_CONTEXT of newdecl's parms. * pt.c (check_explicit_specialization): Likewise. (tsubst_copy) [PARM_DECL]: Return a dummy parm if we don't have a local specialization. * tree.c (cp_tree_equal) [PARM_DECL]: Check type and index, not name. * decl2.c (parm_index): New fn. * semantics.c (finish_decltype_type): Don't use describable_type. * mangle.c (write_expression): Likewise. Mangle ALIGNOF_EXPR. Give a sorry for unsupported codes rather than crash. Mangle conversions with other than 1 operand. New mangling for PARM_DECL. * operators.def (ALIGNOF_EXPR): Mangle as "az". 2009-03-17 Jing Yu PR middle-end/39378 * method.c (use_thunk): Change is_thunk from crtl to cfun. 2009-03-17 Paolo Carlini PR c++/39475 * semantics.c (check_trait_type): New. (finish_trait_expr): Use it. 2009-03-17 Jakub Jelinek * name-lookup.c (cp_emit_debug_info_for_using): Emit USING_STMTs instead of calling imported_module_or_decl debug hook if building_stmt_tree (). * cp-gimplify.c (cp_gimplify_expr): Don't assert the first operand is a NAMESPACE_DECL. PR debug/37890 * name-lookup.c (do_namespace_alias): Don't call global_decl debug hook at function scope. PR debug/39471 * cp-gimplify.c (cp_gimplify_expr): Don't set DECL_NAME on IMPORTED_DECL. 2009-03-09 Jakub Jelinek PR c++/39371 * semantics.c (finish_switch_cond): Don't call get_unwidened. * decl.c (finish_case_label): Pass SWITCH_STMT_TYPE as 3rd argument instead of TREE_TYPE (cond). 2009-03-08 H.J. Lu PR c++/39060 * parser.c (cp_parser_late_parsing_default_args): Continue the loop when cp_parser_assignment_expression returns error_mark_node. 2009-03-07 Jason Merrill PR c++/39367 * init.c (build_new_1): Don't use a VLA type. (build_vec_init): Handle getting a pointer for BASE. 2009-03-06 H.J. Lu PR c++/37520 * cp-tree.h: Check NO_DOT_IN_LABEL before NO_DOLLAR_IN_LABEL when mangling symbols. 2009-03-06 Paolo Carlini PR c++/33492 * error.c (dump_expr): Don't try to print THROW_EXPRs in full. 2009-03-06 Alexandre Oliva * decl.c (record_builtin_java_type): Use canonicalized integer types. 2009-03-04 Jason Merrill PR c++/38908 * class.c (is_really_empty_class): New fn. * cp-tree.h: Declare it. * cp-objcp-common.c (cp_expr_size): Use it. PR c++/13549 * semantics.c (perform_koenig_lookup): Handle TEMPLATE_ID_EXPR. * parser.c (cp_parser_postfix_expression): Call it for TEMPLATE_ID_EXPR. * tree.c (is_overloaded_fn): Look through TEMPLATE_ID_EXPR. (get_first_fn): Likewise. PR c++/9634 PR c++/29469 PR c++/29607 Implement DR 224. * decl.c (make_typename_type): Do look inside currently open classes. * parser.c (cp_parser_lookup_name): Likewise. (cp_parser_template_name): Likewise. * pt.c (dependent_scope_p): New function. * cp-tree.h: Declare it. * class.c (currently_open_class): Return fast if T isn't a class. 2009-02-26 H.J. Lu PR c++/37789 * parser.c (cp_parser_mem_initializer): Return error_mark_node if cp_parser_mem_initializer_id returns error_mark_node. 2009-02-24 Richard Guenther PR c++/39242 * pt.c (instantiate_decl): Do not instantiate extern, non-inline declared functions. 2009-02-23 H.J. Lu PR c++/36411 * pt.c (coerce_template_template_parms): Return 0 if parameter is error_mark_node. 2009-02-23 Jason Merrill * pt.c (unify): Call maybe_adjust_types_for_deduction when deducing from an initializer list. 2009-02-20 Jason Merrill PR c++/39225 * decl.c (grokdeclarator): Handle ~identifier. 2009-02-19 Jakub Jelinek PR target/39175 * decl2.c (determine_visibility): If visibility changed and DECL_RTL has been already set, call make_decl_rtl to update symbol flags. 2009-02-19 H.J. Lu PR c++/39188 * cp-tree.h (maybe_commonize_var): New. * decl.c (maybe_commonize_var): Make it extern. * decl2.c (finish_anon_union): Call maybe_commonize_var. 2009-02-18 H.J. Lu PR c++/39219 * parser.c (cp_parser_enum_specifier): Apply all attributes. 2009-02-18 Jason Merrill * cfns.h: Tweak pathname for cfns.gperf. 2009-02-13 Jason Merrill PR c++/39070 * semantics.c (finish_call_expr): Change koenig_p parm to int. If -1, don't set KOENIG_LOOKUP_P but do keep hidden candidates. * cp-tree.h: Adjust prototype. * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Pass -1. 2009-02-12 Jason Merrill PR c++/38950 * pt.c (unify)[TEMPLATE_PARM_INDEX]: Convert to the tsubsted type. 2009-02-11 Jason Merrill PR c++/39153 * decl2.c (cp_write_global_declarations): Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL. PR c++/30111 * init.c (build_value_init_noctor): Split out from... (build_value_init): ...here. (expand_aggr_init_1): Handle value-initialization. * cp-tree.h: Add declaration. * class.c (type_has_user_provided_constructor): Handle non-class arguments. 2009-02-10 Jason Merrill PR c++/38649 * class.c (defaultable_fn_p): Handle ... properly. PR c++/36744 * tree.c (lvalue_p_1): Condition rvalue ref handling on treat_class_rvalues_as_lvalues, too. 2009-02-10 Paolo Carlini PR c++/34397 * typeck.c (build_x_array_ref): New. * cp-tree.h: Declare it. * pt.c (tsubst_copy_and_build): Use it for case ARRAY_REF. 2009-02-09 Jason Merrill PR c++/39109 * semantics.c (simplify_aggr_init_expr): Do zero-initialization here. * init.c (build_value_init): Not here. Don't build a TARGET_EXPR. * tree.c (get_target_expr): Handle AGGR_INIT_EXPR. * cp-gimplify.c (cp_gimplify_init_expr): Remove special handling for build_value_init TARGET_EXPR. * cp-tree.h (AGGR_INIT_ZERO_FIRST): New macro. 2009-02-06 Paolo Carlini PR c++/35147 PR c++/37737 * cp-tree.h (TMPL_ARGS_HAVE_MULTIPLE_LEVELS): Check TREE_VEC_LENGTH. 2009-02-04 Jakub Jelinek PR c++/39095 * operators.def: Use COMPONENT_REF code for ->/pt operator again, remove ./dt operator. * mangle.c (write_expression): Handle COMPONENT_REF after handling ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it write_string ("dt") instead of using operators.def. 2009-02-03 Jason Merrill * typeck.c (cp_build_unary_op): Only complain about taking address of main if pedantic. 2009-02-03 Jakub Jelinek PR inline-asm/39059 * parser.c (cp_parser_primary_expression): Reject FIXED_CSTs. PR c++/39056 * typeck2.c (digest_init_r): Don't call process_init_constructor for COMPLEX_TYPE. 2009-02-03 Paolo Bonzini PR c++/36897 * pt.c (convert_nontype_argument_function): Expect expr to be an ADDR_EXPR. PR c++/37314 * typeck.c (merge_types): Call resolve_typename_type if only one type is a typename. 2009-02-02 Jason Merrill PR c++/39054 * parser.c (cp_parser_unqualified_id): Don't wrap error_mark_node in BIT_NOT_EXPR. 2009-02-01 Paolo Carlini PR c++/39053 * parser.c (cp_parser_pure_specifier): If there are no tokens left do not call cp_lexer_consume_token. 2009-01-30 Jakub Jelinek PR c++/39028 * parser.c (cp_parser_already_scoped_statement): Handle __label__ declarations. 2009-01-30 Paolo Carlini PR c++/33465 * error.c (dump_expr): Handle FIX_TRUNC_EXPR and FLOAT_EXPR. 2009-01-30 Paolo Carlini PR c++/38655 * error.c (dump_type_prefix, dump_type_suffix): Handle FIXED_POINT_TYPE. 2009-01-29 Paolo Carlini * typeck.c (invalid_nonstatic_memfn_p): Use DECL_NONSTATIC_MEMBER_FUNCTION_P. 2009-01-27 Paolo Carlini PR c++/37554 * call.c (build_over_call): If convert_for_arg_passing returns error_mark_node unconditionally return it. 2009-01-22 Adam Nemet * class.c (check_field_decls): Also inherit packed for bitfields regardless of their type. 2009-01-22 Dodji Seketeli PR c++/38930 * decl2.c (grokfield): Reverting changes of PR c++/26693 (save_template_attributes): Likewise. * decl.c (grokdeclarator): Likewise. * name-lookup.c (pushdecl_maybe_friend): Likewise. * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): Likewise. (append_type_to_template_for_access_check): Likewise. * semantics.c (check_accessibility_of_qualified_id): Likewise. * pt.c (instantiate_class_template, instantiate_template ): Likewise. (tsubst): Likewise. (resolve_type_name_type): Likewise. (append_type_to_template_for_access_check): Likewise. 2009-01-21 Dodji Seketeli PR c++/26693 * decl2.c (grokfield): when a typedef appears in a class, create the typedef variant type node for it. (save_template_attributes): Creating typedef variant type node here is now useless. * decl.c (grokdeclarator): If the typedef'ed struct/class was anonymous, set the proper type name to all its type variants. * name-lookup.c (pushdecl_maybe_friend): Reuse the set_underlying_type function to install typedef variant types. * cp-tree.h (MEMBER_TYPES_NEEDING_ACCESS_CHECK): New template accessor macro. (append_type_to_template_for_access_check): New entry points. * semantics.c (check_accessibility_of_qualified_id): When a typedef that is a member of a class appears in a template, add it to the template. It will be ... * pt.c (instantiate_class_template, instantiate_template ): ... access checked at template instantiation time. (tsubst): Handle the case of being called with NULL args. (resolve_type_name_type): The type name should be the name of the main type variant. (append_type_to_template_for_access_check): New entry point. 2009-01-19 Jason Merrill PR c++/23287 * parser.c (cp_parser_unqualified_id): In a template, accept ~identifier. * typeck.c (lookup_destructor): Handle IDENTIFIER_NODE. 2009-01-16 Jason Merrill PR c++/38877 * tree.c (lvalue_p_1): Allow non-fields in COMPONENT_REF. * init.c (build_new): Don't call describable_type unless we have an auto. PR c++/29470 * pt.c (tsubst_decl) [USING_DECL]: Propagate access flags. PR c++/38579 * search.c (protected_accessible_p): N doesn't vary. 2009-01-15 Jason Merrill PR c++/38850 * pt.c (tsubst_copy_and_build): Tell finish_call_expr to accept hidden friends. 2009-01-15 Andrew Pinski PR C++/29388 * decl.c (grokdeclarator): Check for a non namespace/class context. 2009-01-15 Jason Merrill PR c++/36334 PR c++/37646 * tree.c (lvalue_p_1): Handle BASELINK. A COMPONENT_REF to a function isn't necessarily an lvalue. Take tree, not const_tree. (lvalue_p, real_lvalue_p): Take tree, not const_tree. * typeck.c (lvalue_or_else): Likewise. * cp-tree.h: Adjust prototypes. 2009-01-15 Steve Ellcey PR c++/38357 * pt.c (tsubst): Check for NULL args. 2009-01-15 Dodji Seketeli PR c++/38636 * name-lookup.c (pushtag): Don't create members to types that are not being created. 2009-01-14 Nick Clifton PR c++/37862 * parser.c: Pass cp_id_kind computed in cp_parser_postfix_dot_deref_expression to cp_parser_primary_expression. 2009-01-13 Jakub Jelinek PR c++/38795 * tree.c (cp_walk_subtrees): Handle REINTERPRET_CAST_EXPR, STATIC_CAST_EXPR, CONST_CAST_EXPR and DYNAMIC_CAST_EXPR the same as CAST_EXPR. 2009-01-12 Jason Merrill Steve Ellcey PR c++/35109 * name-lookup.c (lookup_name_real): Keep looking past a hidden binding. 2009-01-12 Dodji Seketeli PR c++/36019 * pt.c (parameter_of_template_p): New function. * cp-tree.h: Declare it. * name-lookup.c (binding_to_template_parms_of_scope_p): New function. (outer_binding): Take template parameters in account when looking for a name binding. 2009-01-12 Jason Merrill PR c++/31488 * tree.c (pod_type_p): Return 1 for structs created by the back end. 2009-01-12 Jakub Jelinek PR c/32041 * parser.c (cp_parser_builtin_offsetof): Allow `->' in offsetof member-designator, handle it as `[0].'. PR c++/38794 * decl.c (start_function): If grokdeclarator hasn't returned FUNCTION_DECL nor error_mark_node, issue diagnostics. 2009-01-11 Jakub Jelinek PR c++/36254 * cp-gimplify.c (genericize_if_stmt): Renamed from ... (gimplify_if_stmt): ... this. (cp_gimplify_expr): Don't handle IF_STMT here. (cp_genericize_r): Call genericize_if_stmt for IF_STMT. 2009-01-10 Andrew Pinski PR c++/38648 * typeck.c (cp_build_modify_expr): Check for NULL current_function_decl. PR c++/36695 * typeck2.c (build_functional_cast): Check for reference type and NULL PARMS. 2009-01-09 Steve Ellcey * typeck.c (cp_build_unary_op): Check for ERROR_MARK. 2009-01-09 Jakub Jelinek PR c++/35335 * error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR. 2009-01-09 John F. Carr PR c++/37877 * parser.c (cp_parser_class_specifier): Clear parser->in_unbraced_linkage_specification_p while parsing class specifiers. 2009-01-07 Jakub Jelinek PR c++/38725 * semantics.c (finish_goto_stmt): Convert destination to void *. 2009-01-06 Jason Merrill PR c++/35297 PR c++/35477 PR c++/35784 PR c++/36846 PR c++/38276 * pt.c (check_default_tmpl_args): Don't complain about out-of-order parameter packs in the enclosing class or parameter packs after default args. (coerce_template_parms): If we have more than one parameter pack, don't flatten argument packs. (template_args_equal): Handle argument packs. (comp_template_args): Don't flatten argument packs. (check_instantiated_arg): Split out from... (check_instantiated_args): Here. Handle arg packs. (convert_template_argument): Just check that nontype argument packs have the right type. 2009-01-05 Dodji Seketeli PR c++/38472 * typeck.c (type_after_usual_arithmetic_conversions): Fix a typo. 2009-01-05 Jason Merrill PR c++/38698 * typeck2.c (process_init_constructor_union): Handle union with no fields. * mangle.c (write_expression): Remove mangling for zero-operand casts. PR c++/38701 * decl.c (cp_finish_decl): Clear DECL_INITIAL for invalid defaulting. PR c++/38702 * class.c (defaultable_fn_p): Only operator== can be a copy assignment operator. 2009-01-02 Jason Merrill PR c++/38698 * typeck2.c (process_init_constructor_union): Handle excess initializers. (process_init_constructor_record): Likewise. PR c++/38684 * typeck2.c (digest_init_r): Don't use process_init_constructor for non-aggregate classes.