view gcc/cp/ChangeLog-2008 @ 16:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
line wrap: on
line source

2008-12-31  Jakub Jelinek  <>

	PR c++/38647
	* parser.c (cp_parser_primary_expression) <case RID_FUNCTION_NAME>:
	Return error_mark_node if cp_parser_non_integral_constant_expression
	returns true.

	PR c++/38640
	* semantics.c (finish_decltype_type): Handle TEMPLATE_PARM_INDEX.

2008-12-29  Jakub Jelinek  <>

	PR c++/38635
	* parser.c (cp_parser_condition): Use cp_parser_require
	instead of cp_lexer_consume_token to consume =.

	PR c++/38637
	* decl.c (start_enum): If enumtype is error_mark_node, exit early.

2008-12-28  Jakub Jelinek  <>

	PR c++/38650
	* semantics.c (finish_omp_for): Don't add CLEANUP_POINT_EXPR
	around volatile iteration var in condition and/or increment

2008-12-27  Jakub Jelinek  <>

	PR c++/38639
	* pt.c (tsubst_omp_for_iterator): RECUR on whole init_expr instead of
	just its type.

2008-12-21  Jason Merrill  <>

	PR c++/38597
	* name-lookup.c (arg_assoc_type): Handle DECLTYPE_TYPE.

2008-12-20  Jakub Jelinek  <>
	    Manuel López-Ibáñez  <>

	PR c++/36921
	* c-common.c (warn_about_parentheses): Remove ARG_UNUSED from
	arg_left.  Don't warn about X<=Y<=Z if comparison's type isn't

2008-12-19  Jakub Jelinek  <>

	PR c++/38577
	* call.c (build_new_method_call): Handle call being COMPOUND_EXPR

2008-12-18  Jakub Jelinek  <>

	PR c++/38427
	* init.c (perform_member_init): For value-initialized
	references call permerror instead of warning and don't emit any

2008-12-18  Jason Merrill  <>

	PR c++/38485
	* parser.c (cp_parser_token_starts_cast_expression): An EOF
	can't start a cast-expression.

2008-12-17  Jason Merrill  <>

	* semantics.c (describable_type): New function.
	(finish_decltype_type): Use it for dependent exprs.
	* cp-tree.h: Declare it.
	* mangle.c (write_type) [DECLTYPE_TYPE]: Set skip_evaluation.
	(write_expression): If skip_evaluation, use type stubs.
	* tree.c (cp_tree_equal): Handle PARM_DECLs from different
	declarations of a function.
	* init.c (build_new): Do auto deduction if type is describable.
	* decl.c (cp_finish_decl): Likewise.
	* parser.c (cp_parser_omp_for_loop): Likewise.

2008-12-10  Jason Merrill  <>

	PR c++/35319
	* mangle.c (write_builtin_type): Add mangling for decimal floating 
	point and fixed point types.
	(write_type): Pass FIXED_POINT_TYPE along.

2008-12-09  Mark Mitchell  <>

	PR c++/37971
	* class.c (resolve_address_of_overloaded_function): Check
	accessibility of member functions unless FLAGS indicates
	* call.c (standard_conversion): Adjust flags passed to
	(convert_default_arg): Do not perform access checks.
	* cp-tree.h (tsubst_flags_t): Add tf_no_access_control.

2008-12-08  Steve Ellcey  <>

	* decl2.c (mark_used): Remove assemble_external call.

2008-12-08  Dodji Seketeli  <>

	PR debug/38390
	* name-lookup.c (kept_level_p): Don't forget the case of levels
	  having using directives.

2008-12-08  Richard Henderson  <>

	PR 38240
	* class.c (finish_struct_bits): Use SET_TYPE_MODE.
	* decl.c (record_unknown_type): Likewise.
	(start_enum, finish_enum): Likewise.

2008-12-05  Jakub Jelinek  <>

	PR c++/35336
	* error.c (dump_expr): Handle BIT_FIELD_REF.

2008-12-05  Sebastian Pop  <>

	PR bootstrap/38262
	* (cc1plus-dummy, cc1plus): Add BACKENDLIBS,
	remove GMPLIBS.

2008-12-04  Jason Merrill  <>

	PR c++/37906
	* decl.c (grok_special_member_properties): Set TYPE_HAS_COMPLEX_DFLT
	* class.c (check_bases_and_members): Rather than assuming any
	user-declared default constructor is complex here.

2008-12-04  Richard Guenther  <>

	PR c++/38334
	* typeck.c (get_member_function_from_ptrfunc): Mark the vtbl
	pointer access with TREE_NO_WARNING.

2008-12-03  Jason Merrill  <>

	PR c++/38232
	* init.c (build_value_init): Do initial zero-initialization
	of a class with an implicitly-defined constructor using
	build_zero_init rather than in build_value_init.
	(build_value_init_1): Fold into build_value_init.

	PR c++/38256
	* parser.c (cp_parser_conversion_type_id): Diagnose
	'operator auto'	here.
	* decl.c (grokdeclarator): Not here.

	PR c++/38380
	* decl.c (grokdeclarator): Only set DECL_NONCONVERTING_P
	on explicit constructors.
	* pt.c (tsubst_copy_and_build) [CONSTRUCTOR]: Propagate

2008-12-02  Jason Merrill  <>

	PR c++/35782, c++/37860
	* call.c (build_user_type_conversion_1): Remember
	(convert_like_real): Likewise.
	(build_over_call): Don't require the copy constructor
	for copy-list-initialization.
	* cp-tree.h (TARGET_EXPR_LIST_INIT_P): New macro.

	PR c++/37234
	* decl.c (cp_finish_decl): Handle =default and =delete for
	templates, too.

2008-12-01  Jakub Jelinek  <>

	PR c++/38257
	* parser.c (cp_parser_omp_for_loop): Handle auto.
	* pt.c (tsubst_omp_for_iterator): Likewise.

2008-11-28  Jason Merrill  <>

	PR c++/38233
	* init.c (perform_member_init): Fix value-initialization.
	(build_value_init_1): Add assert to catch cases that will break
	in the gimplifier.
	(build_default_init): Remove.
	* cp-tree.h: Remove its prototype.
	* pt.c (tsubst_expr) [DECL_EXPR]: Use build_value_init for

	PR c++/38278
	* parser.c (cp_parser_class_name): Only call 
	maybe_note_name_used_in_class if we actually found a class name.

2008-11-25  Jason Merrill  <>

	PR c++/28743
	* decl2.c (check_classfn): Error rather than abort on parameter
	list mismatch.

2008-11-20  Jason Merrill  <>

	PR c++/28513
	* parser.c (cp_parser_class_name): Call maybe_note_name_used_in_class.

	PR c++/37540
	* call.c (build_over_call): Take the address of the function even
	in a template.
	(build_new_method_call): Remember the type of the called function
	in a template.

2008-11-19  Dodji Seketeli  <>

	PR c++/37142
	* pt.c (coerce_template_template_parm): Use the more robust
	uses_template_parms instead of dependent_type_p.

2008-11-19  Dodji Seketeli  <>

	PR c++/35405
	* pt.c (lookup_template_class): Check pointers before dereferencing
	* error.c (dump_template_decl): Likewise.

2008-11-19  Jason Merrill  <>

	PR c++/36410
	* decl2.c (grokfield): Pass ATTR_FLAG_TYPE_IN_PLACE for a typedef
	that names a class for linkage purposes.

	PR c++/37563
	* parser.c (cp_parser_pseudo_destructor_name): A pseudo-destructor
	name is not a declaration.

	PR c++/37256
	* pt.c (instantiate_decl): Don't require a definition of
	a template that is explicitly instantiated 'extern'.

2008-11-18  Jason Merrill  <>
	    Jakub Jelinek  <>
	PR c++/37962
	* parser.c (cp_parser_type_id): Complain about auto.
	* decl.c (grokdeclarator): Complain about parameters and
	conversion functions declared with auto.

	* call.c (standard_conversion): Use CLASS_TYPE_P instead of
	* cp-tree.h (TYPE_NON_AGGREGATE_CLASS): Likewise.

2008-11-17  Jakub Jelinek  <>

	PR c++/36089
	* init.c (constant_value_1): Handle TREE_LIST init.

2008-11-15  Jakub Jelinek  <>

	PR c++/37561
	* typeck.c (cp_build_unary_op): Don't call get_unwidened.  Use
	argtype instead of result_type.

2008-11-14  Jason Merrill  <>

	PR c++/38030
	* semantics.c (finish_call_expr): Don't repeat arg-dep lookup
	for a non-dependent call.

	PR c++/37740
	* call.c (build_aggr_conv): Increment i.

2008-11-13  Jason Merrill  <>

	PR c++/37932
	* typeck2.c (process_init_constructor_record): Update bitfield
	(check_narrowing): Update bitfield handling, print source type.
2008-11-12  Jakub Jelinek  <>

	PR c++/36478
	2007-05-07  Mike Stump  <>
	* parser.c (check_empty_body): Add.
	(cp_parser_iteration_statement): Add call to check_empty_body.

2008-11-12  Jason Merrill  <>

	PR c++/38007
	* typeck.c (cp_build_modify_expr): Update bitfield handling.

2008-11-12  Jakub Jelinek  <>

	PR c++/34269
	* parser.c (cp_parser_simple_declaration): Don't commit
	to tentative parse if parse errors were seen.

	PR c++/35334
	* error.c (dump_expr): Handle COMPLEX_EXPR.

2008-11-10  Jakub Jelinek  <>

	PR c++/38021
	* parser.c (cp_parser_enum_specifier): After parsing :,
	parse definitely.  Don't return early if type specifier
	is erroneous.

2008-11-06  David Edelsohn  <>

	PR target/26397
	* g++spec.c (LIBSTDCXX_STATIC): New.
	(lang_spec_driver): Use LIBSTDCXX_STATIC when not

2008-11-05  Fabien Chêne <>

	PR c++/32519
	* cp-tree.h: Fix DECL_NONSTATIC_MEMBER_P to handle member template

2008-11-05  Richard Guenther  <>

	PR middle-end/37742
	* decl.c (start_preparsed_function): Use the correct type for
	building the RESULT_DECL.

2008-10-31  Jakub Jelinek  <>

	PR c++/37967
	* decl.c (grokdeclarator): Diagnose auto function decl without
	late return type and late return type function decl where type
	is not auto.

	PR c++/37965
	* decl.c (cp_finish_decl): Diagnose type_uses_auto type with
	no initializer.

2008-10-29  Manuel Lopez-Ibanez  <>

	PR 11492
	* class.c (check_bitfield_decl): Rename min_precision to
	* decl.c (finish_enum): Likewise.

2008-10-29  Manuel López-Ibáñez  <>

	PR c++/26997
	* parser.c (cp_parser_token_starts_cast_expression): New.
	(cp_parser_cast_expression): Peek the next token to decide whether
	this could be a parenthesized constructor or is definitely an
	actual cast.

2008-10-24  Manuel López-Ibáñez  <>

	PR c/7543
	* typeck.c (build_x_binary_op): Update call to
	* parser.c (cp_parser_binary_expression): Add note about passing
	the correct code for unary expressions.

2008-10-24  Jakub Jelinek  <>

	* (check-c++-subtargets): New alias for
	(lang_checks_parallelized): Add check-g++.
	(check_g++_parallelize): New variable.

2008-10-21  Richard Guenther  <>

	* semantics.c (simplify_aggr_init_exprs_r): Remove.
	(expand_or_defer_fn): Do not walk the function body to
	simplify aggr_init_exprs.

2008-10-20  Manuel López-Ibáñez  <>

	PR c++/37004
	* typeck.c (cp_common_type): New. The same as
	type_after_usual_arithmetic_conversions but without promotions.
	(type_after_usual_arithmetic_conversions): Do the promotions and
	call cp_common_type.
	(common_type): Make it behave like the C version of this
	function. Do not handle pointer types.
	(common_pointer_type): Move handling of pointer types from
	common_type to here.
	(cp_build_binary_op): Use common_pointer_type instead of
	common_type in call to pointer_diff.
	Use cp_common_type instead of common_type.
	* cp-tree.h (common_pointer_type): Declare.

2008-10-14  Jakub Jelinek  <>

	PR c++/37819
	* cp-gimplify.c (cp_genericize_r): Only fold_convert COND_EXPR
	arguments if they don't already have COND_EXPR's type.

2008-10-14  Paolo Carlini  <>

	PR c++/37650
	* pt.c (push_template_decl_real): Check that current_template_parms
	is not null.
	(process_partial_specialization): Assert current_template_parms not

2008-10-13  Doug Evans  <>

	* cp-tree.h (DECL_MAIN_P): Fix parentheses around expression.

2008-10-10  Jakub Jelinek  <>

	PR c++/37146
	* cp-gimplify.c (cp_genericize_r): Fix up bitfield operands of

2008-10-09  Jakub Jelinek  <>

	PR c++/37568
	* semantics.c (finalize_nrv_r): Clear DECL_INITIAL instead of
	setting it to error_mark_node.

2008-10-07  Steve Ellcey  <>

	* decl.c (start_cleanup_fn): Declare as inline.

2008-10-06  Jason Merrill  <>

	PR c++/37376, other mangling issues
	* mangle.c (write_type): Update TYPE_PACK_EXPANSION mangling.
	(write_member_name): Break out from...
	(write_expression):  Handle dependent COMPONENT_REF.
	(write_template_arg): Wrap an argument pack in 'I'/'E'.
	(write_builtin_type): Update char16/32_t mangling.
	(write_nested_name, write_prefix): Don't forget template args
	for typename types.
	* operators.def: Add ARROW_EXPR, update COMPONENT_REF and 

2008-10-06  Aldy Hernandez  <>

	* typeck.c (build_x_indirect_ref): Add location argument.
	(cp_build_binary_op): Pass location to warn_for_div_by_zero.
	(cp_build_unary_op): Add location argument.
	(cp_build_modify_expr): Same.
	* class.c (build_base_path): Pass location to build_indirect_ref.
	* semantics.c (handle_omp_for_class_iterator): Pass elocus to

2008-10-05  Dodji Seketeli  <>

	PR c++/37410
	* cp-gimplify.c (cp_gimplify_expr): For each USING_STMT
	make sure an IMPORTED_DECL node is added to the BLOCK_VARS list
	of the innermost containing BLOCK.

2008-10-03  Paolo Carlini  <>

	PR c++/37719
	* error.c (dump_function_decl): Save the exceptions in case of
	error about incompatible specifications in a specialization.

2008-10-01  Andrew Pinski  <>

	* tree.c (lvalue_p_1): COMPOUND_LITERAL_EXPR is also an lvalue.

2008-09-30  H.J. Lu  <>

	PR c++/37683
	* parser.c (cp_parser_selection_statement): Fix uninitialized

2008-09-30  Simon Martin  <>

	PR c++/37555
	PR c++/37556
	* decl.c (grokdeclarator): Set the type for typedefs to a
	nested-name-specifier to error_mark_node.

2008-09-30  Paolo Bonzini  <>

	* parser.c (cp_parser_selection_statement): Implement here the
	-Wempty-body warning for `if' and `else' statements.
	* semantics.c (finish_if_stmt): Do not call empty_body_warning.

2008-09-25  Paolo Carlini  <>

	PR c++/37649
	* name-lookup.c (maybe_process_template_type_declaration): Check
	return value of push_template_decl_real for error_mark_node.

2008-09-24  Aldy Hernandez  <>

	* semantics.c (finish_fname): Pass location to fname_decl.

2008-09-23  Jakub Jelinek  <>

	PR c++/37533
	* semantics.c (finish_omp_for): If processing_template_decl, just build
	MODIFY_EXPR for init instead of calling cp_build_modify_expr.

2008-09-23  Aldy Hernandez  <>

	* typeck.c (build_array_ref): Pass location to cp_build_binary_op.
	(get_member_function_from_ptrfunc): Same.
	(build_x_binary_op): Same.
	(build_binary_op): Same.
	(cp_build_binary_op): New location argument.
	(pointer_diff): Pass location to cp_build_binary_op.
	(cp_truthvalue_conversion): Pass location to build_binary_op.
	(convert_ptrmem): Pass location to cp_build_binary_op.
	(cp_build_modify_expr): Same.
	(build_ptrmemfunc): Same.
	* init.c (expand_cleanup_for_base): Pass location to
	(build_new_1): Pass location to cp_build_binary_op.
	(build_vec_delete_1): Pass location to *build_binary_op,
	(build_vec_init): Same.
	(build_delete): Same.
	* decl.c (compute_array_index_type): Same.
	* call.c (build_new_op): Same.
	* rtti.c (build_dynamic_cast_1): Same.
	* cp-tree.h: Add argument to cp_build_binary_op.
	* semantics.c (handle_omp_for_class_iterator): Pass location to
	*build_binary_op, c_common_truthvalue_conversion.
	* decl2.c (get_guard_cond): Same.

2008-09-17  Richard Guenther  <>

	PR c++/22374
	* rtti.c (build_dynamic_cast_1): Convert the COND_EXPR
	result to the correct type.

2008-09-17  H.J. Lu  <>

	PR c++/37450
	* name-lookup.c (pushdecl_maybe_friend): Don't return the old
	parameter for duplicate.

2008-09-17  Jason Merrill  <>

	PR c++/37588
	* name-lookup.c (lookup_type_scope): Look through sk_function_parms.

2008-09-17  Jakub Jelinek  <>

	PR c++/37552
	* typeck.c (build_array_ref): Use protected_set_expr_location instead
	of SET_EXPR_LOCATION when ret might not be an expression.

2008-09-17  Jan Hubicka  <>

	PR c++/18071
	* cp/decl.c (start_method): Set DECL_NO_INLINE_WARNING_P.

2008-09-16  Jakub Jelinek  <>

	PR c++/37531
	* semantics.c (finish_compound_literal): Return error_mark_node if
	type is errorneous.

	PR c++/37532
	* lex.c (init_reswords): Don't populate ridpointers for D_CONLY
	reserved words.

2008-09-15  Aldy Hernandez  <>

	* decl.c (duplicate_decls): Call error_at.
	(grokfndecl): New location argument.  Use location if available.
	(grokdeclarator): Pass declarator location to grokfndecl.
	* cp-tree.h (struct cp_declarator): Update comment for id_loc.
	* decl2.c (check_classfn): Use error_at.
	* parser.c (cp_parser_init_declarator): Set function_start_locus
	to brace location.
	(cp_parser_member_declaration): Set id_loc for function declarators.

2008-09-09  Jan Hubicka  <>

	PR middle-end/37500
	* pt.c (tsubst_decl): Do not copy DECL_STRUCT_FUNCTION pointer.

2008-09-09  Jakub Jelinek  <>

	PR c++/37417
	* tree.c (array_type_nelts_top): Add size_one_node instead of

2008-09-09  Jason Merrill  <>

	PR c++/37439
	* pt.c (tsubst_copy) [PARM_DECL]: Don't abort if the parm has

2008-09-09  Jakub Jelinek  <>

	PR c++/37389
	* decl.c (build_enumerator): Handle previous value's DECL_INITIAL
	being error_operand_p.  Don't clear value if it was error_mark_node.

2008-09-09  Paolo Bonzini  <>

	* cp-objcp-common.h (LANG_HOOKS_EXPAND_DECL): Remove.
	* cp-tree.h: Don't mention DECL_ANON_UNION_ELEMS.
	* semantics.c (anon_aggr_type_p): Remove.

2008-09-06  Jason Merrill  <>

	PR c++/37302
	* parser.c (cp_parser_parameter_declaration_list): Process the
	PARM_DECLs as we go and push them.  Return a TREE_LIST.
	(cp_parser_parameter_declaration_clause): Return a TREE_LIST.
	(cp_parser_direct_declarator): Create a binding level and
	suppress deprecated warnings in the parameter list.
	(make_call_declarator): PARMS is now a tree.
	* cp-tree.h (struct cp_declarator): Function parms are now a tree.
	* decl.h (enum deprecated_states, deprecated_state): Move here.
	* decl.c: From here.
	(type_is_deprecated): New fn.
	(grokparms): PARMLIST is a tree now.  Warn about parms that
	use deprecated types.
	* mangle.c (write_expression): Handle PARM_DECL, CALL_EXPR and
	0-operand cast.
	* pt.c (tsubst) [DECLTYPE_TYPE]: Set skip_evaluation.
	(tsubst_copy) [PARM_DECL]: Handle a PARM_DECL used outside of a 
	* name-lookup.c (pushtag): Look through function parameter scopes.
	(pushdecl_maybe_friend): Don't set DECL_CONTEXT on a PARM_DECL 
	when we're parsing a function declarator.

2008-09-05  Douglas Gregor  <>

       PR c++/37342
       * tree.c (cp_build_qualified_type_real): Deal with sharing of
       TYPE_LANG_SPECIFIC in the canonical types of pointer-to-method
2008-09-04  Ian Lance Taylor  <>

	* parser.c (check_no_duplicate_clause): Change code parameter to
	enum omp_clause_code.

2008-09-03  Jakub Jelinek  <>

	PR c++/37348
	* decl.c (cp_finish_decl): Only set

	PR c++/37189
	* cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New
	extern decls.
	* decl2.c (mark_used): If defer_mark_used_calls, push decl into
	deferred_mark_used_calls vector and exit early.
	* decl.c (defer_mark_used_calls, deferred_mark_used_calls): New
	(finish_function): Set defer_mark_used_calls for the duration of the
	function.  Call mark_used on any queued decls.

2008-09-02  Jason Merrill  <>

	PR c++/37208
	* call.c (build_over_call): Make =delete work with SFINAE.
	* class.c (resolve_address_of_overloaded_function): Likewise.

	* cp-tree.h (struct lang_decl_flags): Rename threadprivate_p to
	(DECL_DELETED_FN): Likewise.
	(SD_DELETED): New macro.
	* parser.c (cp_parser_init_declarator): Use them.
	* decl.c (start_decl): Use them.

	* decl2.c (mark_used): Give =deleted error even in sizeof.

	* typeck2.c (check_narrowing): Downgrade narrowing error to

2008-09-02  Aldy Hernandez  <>

	* typeck.c (build_array_ref): Use new location argument.
	* class.c (build_vtbl_ref_1): Pass location to build_array_ref.
	* call.c (build_new_op): Same.
	* decl2.c (grok_array_decl): Same.
	* cp-tree.h (build_array_ref): Add location argument to prototype.

2008-09-01  Aldy Hernandez  <>

	* typeck.c (build_x_indirect_ref): Add location argument.
	* class.c (build_base_path): Pass location to build_indirect_ref.
	* pt.c (tsubst_copy_and_build): Pass location to
	* parser.c (cp_parser_unary_expression): Same.

2008-08-31  Jason Merrill  <>

	Implement late-specified return type using 'auto'.
	* cp-tree.h (struct cp_declarator): Add late_return_type field to
	function declarator.
	* parser.c (cp_parser_late_return_type_opt): New fn.
	(cp_parser_direct_declarator): Use it.
	(make_call_declarator): Put it in the declarator.
	* decl.c (grokdeclarator): Splice in late-specified return type.
	* pt.c (splice_late_return_type): New fn.

2008-08-29  Michael Meissner  <>

	* decl.c (builtin_function_1): Take a bool argument to decide
	whether to use pushdecl or pushdecl_top_level.
	(duplicate_decls): Copy function specific target and optimization
	options on duplicate declarations.
	(cxx_builtin_function): Update builtin_function_1 call.
	(cxx_builtin_function_ext_scope): New function, guarantee that the
	declaration is done at global scope.

	macro, define builtin function hook for delayed machine specific

	* cp-tree.h (cxx_builtin_function_ext_scope): Add declaration.

2008-08-30  Jason Merrill  <>

	PR c++/37288
	* pt.c (dependent_type_p): Don't abort on auto outside of a template.

2008-08-29  Jason Merrill  <>

	Implement C++0x 'auto' semantics.
	* decl.c (start_decl_1): Don't complain about auto being incomplete.
	(cp_finish_decl): Deduce auto.
	* init.c (build_new): Handle 'new auto'.
	* typeck2.c (cxx_incomplete_type_diagnostic): Give a different
	message for auto than for normal template type parms.
	* pt.c (type_dependent_expression_p): Handle { }.
	(make_auto): New function.
	(listify_autos): New function.
	(do_auto_deduction): New function.
	(is_auto): New function.
	(type_uses_auto): New function.
	* cp-tree.h: Declare them.
	* parser.c (cp_parser_decl_specifier_seq): In C++0x mode, don't
	treat auto as a declspec.
	(cp_parser_simple_type_specifier): It's a type-specifier.

2008-08-29  Mark Mitchell  <>

	* mangle.c (write_type): Add target-specific manglings for
	non-fundamental types to the substitution table.

2008-08-29  Jakub Jelinek  <>

	PR fortran/29635
	PR fortran/23057
	* name-lookup.c (do_using_directive, cp_emit_debug_info_for_using):
	Adjust debug_hooks->imported_module_or_decl callers.

2008-08-29  Jan Hubicka  <>

	* cp-gimplify.c (cp_gimplify_expr): Add PRED_CONTINUE heuristic.

2008-08-28  Paolo Carlini  <>

	PR c++/37260
	* decl.c (reshape_init_r): Check init for error_mark_node.

2008-08-27  Manuel Lopez-Ibanez  <>

	PR c++/17880
	* semantics.c (maybe_convert_cond): Call verify_sequence_points.
	(finish_return_stmt): Likewise.
	(finish_switch_condition): Likewise.

2008-08-27  Manuel Lopez-Ibanez  <>

	* cp-tree.h: Fix #error directive.

2008-08-26  Douglas Gregor  <>

	* typeck.c (type_after_usual_arithmetic_conversions): Don't do the
	usual arithmetic conversions on scoped enumeration types.
	(common_type): Ditto.
	(default_conversion): Don't perform integral promotions on scoped
	enumeration types. 
	(build_array_ref): Scoped enumeration types can't be used as
	* decl.c (start_enum): If building a C++0x scoped enumeration,
	enter its scope. If provided with an underlying type, check that
	underlying type and set up the enumeration type accordingly.
	(finish_enum): Only compute an underlying type if the underlying
	type isn't already fixed, and only convert the enumerator values
	now if we've just computed the underlying type. Finish the scope
	of C++0x scoped enumerations.
	(build_enumerator): For enumerations with a fixed underlying type,
	check the enumerator values when the enumerator is defined.
	(lookup_enumerator): New.
	* call.c (standard_conversion): Don't allow assignment from
	integers to scoped enumeration types, even with -fpermissive.
	Don't convert from scoped enumerations to bool or any arithmetic
	(build_conditional_expr): Don't per the usual arithmetic
	conversions for scoped enumeration types.
	(convert_like_real): Check complain to see if we should
	produce warnings.
	* error.c (class_key_or_enum_as_string): Print scoped enums.
	* cp-tree.h (MAYBE_CLASS_TYPE_P): Check CLASS_TYPE_P, not
	* pt.c (lookup_template_class): Update the instantiation of enum
	types to deal with C++0x scoped enumerations and underlying
	* name-lookup.c (begin_scope): Deal with scoped enumeration
	(lookup_qualified_name): Deal with lookup into enumeration types.
	* name-lookup.h (enum scope_kind): Add sk_scoped_enum.
	* parser.c (cp_parser_class_or_namespace_name): Rename to...
	(cp_parser_qualifying_entity): ... this. Also, in C++0x mode,
	parse a type-name that can be an enumeration type.
	(cp_parser_nested_name_specifier_opt): Update with C++0x grammar.
	(cp_parser_elaborated_type_specifier): Parse the
	optional `struct' or `class' following enum (in C++0x).
	(cp_parser_enum_specifier): Parse C++0x scoped enumerations and
	enum-base clauses.

2008-08-21  Manuel Lopez-Ibanez  <>

	* typeck.c: Update all calls to pedwarn.
	* decl.c: Likewise.
	* call.c: Likewise.
	* error.c: Likewise.
	* pt.c: Likewise.
	* name-lookup.c: Likewise.
	* parser.c: Likewise.

2008-08-20  Manuel Lopez-Ibanez  <>

	PR c++/35158
	* parser.c (cp_parser_omp_for_loop): Handle parenthesized

2008-08-20  Manuel Lopez-Ibanez  <>

	* parser.c: Update all calls to inform.
	* typeck.c: Likewise.
	* init.c: Likewise.
	* class.c: Likewise.
	* call.c: Likewise.
	* method.c: Likewise.
	* friend.c: Likewise.
	* typeck2.c: Likewise.
	* pt.c: Likewise.
	* name-lookup.c: Likewise.
	* lex.c: Likewise.

2008-08-19  Jakub Jelinek  <>

	PR debug/37156
	* error.c (cp_print_error_function): Deal with recursive BLOCK trees.

2008-08-18  Tomas Bily  <>

	* tree.c (cp_tree_equal): Use CONVERT_EXPR_CODE_P.

2008-08-18  Manuel Lopez-Ibanez  <>

	* typeck.c: Update all callers of permerror.
	* init.c: Likewise.
	* class.c: Likewise.
	* decl.c: Likewise.
	* call.c: Likewise.
	* except.c: Likewise.
	* cvt.c: Likewise.
	* typeck2.c: Likewise.
	* pt.c: Likewise.
	* semantics.c: Likewise.
	* name-lookup.c: Likewise.
	* lex.c: Likewise.
	* decl2.c: Likewise.
	* parser.c: Likewise.

2008-08-14  Paolo Carlini  <>

	PR c++/34485
	* pt.c (check_template_shadow): Change to return a bool.
	* name-lookup.c (push_class_level_binding): Early return if
	check_template_shadow returns false.
	* cp-tree.h (check_template_shadow): Adjust declaration.

2008-08-14  Paolo Carlini  <>

	PR c++/34600
	* decl.c (grokdeclarator): In case of extern and initializer, return
	error_mark_node after the error.

2008-08-13  Manuel Lopez-Ibanez  <>

	PR 30551
	* decl.c (grokfndecl): Call check_main_parameters_type only if

2008-08-12  Paolo Carlini  <>

	PR c++/37087
	* parser.c (cp_parser_class_head): Early return error_mark_node in
	case of global qualification of class name or qualified name that
	does not name a class.

2008-08-09  Manuel Lopez-Ibanez  <>

	PR c++/12242
	* cvt.c (ocp_convert): Warn for out-of-range conversions to enum.

2008-08-09  Manuel Lopez-Ibanez  <>

	PR 36901
	* cp-tree.h (struct diagnostic_context, struct diagnostic_info):
	Delete forward declarations. Check that toplev.h has not been
	included before this file. Include toplev.h and diagnostic.h.
	* error.c (cp_cpp_error): Use DK_PEDWARN.
	(cxx_incomplete_type_diagnostic): Update declaration.
	(cxx_incomplete_type_error): Use DK_ERROR.
	* typeck2.c (cxx_incomplete_type_diagnostic): Take a diagnostic_t
	as argument. Use emit_diagnostic.
	(cxx_incomplete_type_error): Use DK_ERROR.
	(add_exception_specifier): Use diagnostic_t instead of custom
	* typeck.c (complete_type_or_else): Update call to
	* init.c (build_delete): Likewise.  
	* call.c (diagnostic_fn_t): Remove unused typedef.
	(build_temp): Pass a pointer to diagnostic_t.
	(convert_like_real): Use emit_diagnostic.
	(joust): Check return value of warning before giving informative
	* friend.c (do_friend): Check return value of warning
	before giving informative note.
	* parser.c (cp_parser_template_id): Likewise.

2008-08-09  Manuel Lopez-Ibanez  <>

	PR 7651
	* class.c (check_bases_and_members): Warn with -Wuninitialized
	instead of -Wextra.
2008-08-08  Volker Reichelt  <>

	PR c++/35985
	* decl.c (xref_basetypes): Check base for MAYBE_CLASS_TYPE_P,
	and make sure it is not a union.

2008-08-07  H.J. Lu  <>

	* semantics.c (finish_decltype_type): Initialize type.

2008-08-07  Douglas Gregor  <>

	* semantics.c (finish_decltype_type): Handle calls to function
	pointers and references to functions properly.

2008-08-06  Douglas Gregor  <>

	PR c++/36460
	* parser.c (cp_parser_template_argument): Don't assume that '>>'
	following a type-id is an error when in C++0x mode.

2008-08-06  Manuel Lopez-Ibanez  <>

	PR 26785
	* decl.c (grokdeclarator): Use explicit location with permerror_at.

2008-08-06  Manuel Lopez-Ibanez  <>

	PR 8715
	* typeck.c (cp_build_binary_op): Move code to c-common.c.

2008-08-05  Jason Merrill  <>

	PR c++/37016
	* decl.c (build_ptrmemfunc_type): Don't require structural
	comparison of PMF types.
	* tree.c (cp_build_qualified_type_real): Don't clear
	* typeck.c (cp_build_unary_op): Still do build_ptrmemfunc in

2008-08-04  Jason Merrill  <>

	PR c++/36963
	* typeck2.c (check_narrowing): Allow narrowing conversion
	from an explicit floating-point constant.

	PR c++/37006
	* pt.c (tsubst_decl): Leave DECL_INITIAL set on deleted

2008-08-04  Simon Baldwin  <>

	PR c++/36999
	* parser.c (cp_parser_elaborated_type_specifier): Warn only when
	the declaration's id is followed by a semicolon.

2008-07-31  Jakub Jelinek  <>

	PR c++/36405
	* rtti.c (get_tinfo_decl_dynamic, get_typeid): Call
	complete_type_or_else even for UNKNOWN_TYPE to get diagnostics.

2008-07-31  Jason Merrill  <>

	PR c++/36633
	* init.c (build_new_1): Don't convert pointer to the data type
	until we're actually going to treat it as that type.

	PR c++/11309
	* tree.c (build_aggr_init_expr): Split out...
	(build_cplus_new): ...from here.
	(stabilize_init): Don't mess with AGGR_INIT_EXPR either.
	* init.c (build_new_1): new T() means value-initialization,
	not default-initialization.
	(build_vec_init): Likewise.
	(build_value_init_1): Use build_aggr_init_expr.

2008-07-30  Dodji Seketeli  <>

	PR c++/36767
	* decl2.c (fix_temporary_vars_context_r): New function.
	 (one_static_initialization_or_destruction): Make sure temporary
	 variables part of the initialiser have their DECL_CONTEXT()
	 properly set.

2008-07-30  Manuel Lopez-Ibanez  <>

	PR 34389
	* typeck.c (build_binary_op): Encapsulate code into

2008-07-29  Jakub Jelinek  <>

	PR c++/36852
	* tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on
	TYPE_UID instead of pointers.

2008-07-29  Jan Hubicka  <>

 	* optimize.c (maybe_clone_body): Remove DECL_INLINE.
	* decl.c (duplicate_decls): Likewise.
	(grokfndecl): Likewise.
	(start_method): Likewise.
	* method.c (make_thunk, make_alias_for, implicitly_declare_fn):
	* pt.c (register_specialization, regenerate_decl_from_template):
	* decl2.c (grokfield): Likewise.

2008-07-29  Manuel Lopez-Ibanez  <>

	PR 34985
	* decl.c (duplicate_decls): Merge USED flags.

2008-07-27  Jason Merrill  <>

	PR c++/36943
	* decl.c (reshape_init_r): Allow C++0x initializer lists.

2008-07-28  Richard Guenther  <>

	Merge from gimple-tuples-branch.

	2008-07-22  Aldy Hernandez  <>

	* cp-gimplify.c (gimplify_if_stmt): Set location on newly created

	2008-07-18  Jakub Jelinek  <>

	* decl.c (finish_function): Call gimple_body after cp_genericize.

	2008-07-18  Aldy Hernandez  <>

	* optimize.c: Include gimple.h instead of tree-gimple.h.
	* (cp-gimplify.o): Depend on tree-iterator.h.
	* cp-gimplify.c: Rename tree-gimple.h to gimple.h.  Include

	2008-07-16  Jakub Jelinek  <>

	* optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE for the clone.

	2008-07-14  Jakub Jelinek  <>

	* cp-gimplify.c (cp_gimplify_expr): Update comment.

	2008-07-14  Aldy Hernandez  <>

	* cp-tree.h (union lang_tree_node): Rename GENERIC_NEXT to
	* cp-gimplify.c (cxx_omp_clause_apply_fn): Rename
	(cxx_omp_clause_copy_ctor): Same.
	(cxx_omp_clause_assign_op): Same.

	2008-05-28  Jakub Jelinek  <>

	* cp-gimplify.c (cp_gimplify_omp_for): Add pre_p argument.  Tuplify.
	(cp_gimplify_expr): Adjust caller.

	2008-05-11 Doug Kwan  <>

	* init.c (build_vec_delete): Add type conversion for argument

	2008-04-29  Doug Kwan  <>

	* decl2 (File): Include "gimple.h"
	(cp_write_global_declarations): Use gimple_body instead of
	* (cp/decl2.o): Add $(GIMPLE_H)

	2008-04-10  Diego Novillo  <>

	* optimize.c (maybe_clone_body): Re-enable call to
	* cp-gimplify.c (cp_gimplify_omp_for): Mark disabled
	code with call to gimple_unreachable.
	(cp_genericize): Fix handling of clone bodies.

	2008-04-04  Diego Novillo  <>

	* optimize.c (maybe_clone_body): Re-enable.

	2008-02-19  Diego Novillo  <>
		    Oleg Ryjkov  <>

	* cp-gimplify.c (gimplify_for_stmt): Change gimple_seq
	argument to gimple_seq *.  Update all users.
	(gimplify_must_not_throw_expr): Likewise.

	2008-02-04  Oleg Ryjkov <>

	* except.c: Include gimple.h
	(cp_protect_cleanup_actions): Convert to tuples.
	* (cp/except.o): Add dependency on gimple.h

	2007-11-10  Aldy Hernandez  <>

	* cp-gimplify.c (gimplify_cp_loop): Call tree_annotate_all_with_locus
	instead of annotating each block manually.

	2007-10-30  Aldy Hernandez  <>

	* cp-gimplify.c (gimplify_cp_loop): Tuplify.
	(gimplify_for_stmt): Same.
	(gimplify_switch_stmt): Same.
	(cp_gimplify_expr): [FOR_STMT]: Do not call gimplify_for_stmt.  Return
	[WHILE_STMT]: Return GS_OK.
	[BREAK_STMT]: Same.
	(cp_genericize): Set gimple_body() of cloned functions when needed.

	2007-10-29  Aldy Hernandez  <>

	* cp-gimplify.c: Move build_gimple_eh_filter_tree here.
	(cp_gimplify_init_expr): Convert to tuples.
	(gimplify_must_not_throw_expr): Make function return a
	gimplify_status and convert to tuples.

	2007-10-18  Aldy Hernandez  <>

	* cp-gimplify.c (genericize_try_block): Enable and do not call
	(genericize_catch_block): Same.
	(genericize_eh_spec_block): Same.
	Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
	(cp_gimplify_expr): Enable TRY_BLOCK, HANDLER, and EH_SPEC_BLOCK.

	2007-10-16  Aldy Hernandez  <>

	* optimize.c (maybe_clone_body): Comment out call to clone_body.
	* decl.c (finish_function): Use gimple_body instead of
	* cp-tree.h (cp_gimplify_expr): Last 2 arguments are sequences.
	* cp-gimplify.c (genericize_try_block): Comment out.
	(genericize_catch_block): Same.
	(genericize_eh_spec_block): Same.
	(gimplify_cp_loop): Comment out calls to gimplify_stmt.
	(gimplify_for_stmt): Comment out.
	(gimplify_switch_stmt): Comment out call to gimplify_stmt.
	(cp_gimplify_omp_for): Same.
	(gimplify_must_not_throw_expr): Argument pre_p is a sequence.
	Comment out call to gimplify_stmt and append_to_statement_list.
	Rename gimple_build_eh_filter_tree to build_gimple_eh_filter_tree.
	(cp_gimplify_init_expr): Arguments pre_p and post_p are sequences.
	(cp_gimplify_expr): Same.
	Comment out calls to genericize_*_block.  Comment out call to

2008-07-27  H.J. Lu  <>

	PR c++/36944
	* class.c (type_has_user_provided_default_constructor): Handle
	default parameters.

2008-07-27  Paolo Carlini  <>

	* decl.c (push_library_fn): Add a parameter for the exceptions that
	the function may throw.
	(push_void_library_fn, push_throw_library_fn, expand_static_init):
	(build_library_fn): Change to static.
	* cp-tree.h: Adjust declarations.
	* except.c (declare_nothrow_library_fn): New.
	(do_get_exception_ptr, do_begin_catch, do_free_exception,
	do_allocate_exception):  Use the latter, adjust the declarations
	(ie, add empty exception-specification), consistently with the
	actual implementation in libsupc++.

2008-07-25  Jan Hubicka  <>

	* typeck.c (inline_conversion): Remove.
	(cp_build_function_call): Do not use inline_conversion.
	* decl.c (duplicate_decls): Do not insist on inline being declared
	(start_cleanup_fn): Do not assume that INLINE flags prevent function
	from being output.  We now remove static functions always.
	(finish_function): Do return warning on all static functions.
	* call.c (build_over_call): Do not use inline_conversion.
	* cp-tree.h (possibly_inlined_p): Declare.
	(inline_conversion): Remove.
	* pt.c (instantiate_decl): Use possibly_inlined_p predicate.
	* decl2.c (cp_write_global_declarations): Likewise.
	(mark_used): Likewise.
	(possibly_inlined_p): New functions.

2008-07-25  Jason Merrill  <>

	* class.c (type_has_user_provided_default_constructor): Handle

2008-07-23  Jan Hubicka  <>

	* decl.c (duplicate_decls): Update comment and unit-at-a-time.
	(grogfndecl): Drop flag_inline_trees code.
	* pt.c (instantiate_decl): Drop flag_iline_trees code.
	* lex.c (cxx_init): Do not set unit-at-a-time.

2008-07-23  Jason Merrill  <>

	* mangle.c (write_unqualified_name): Avoid infinite recursion when
	trying to mangle a decl with no name.

	Implement defaulted/deleted functions as per N2346
	* cp-tree.h (struct lang_decl_flags): Add defaulted_p bitfield.
	(DECL_DELETED_FN): New macro.
	(DECL_DEFAULTED_FN): New macro.
	* class.c (user_provided_p): New fn.
	(defaultable_fn_p): New fn.
	(type_has_user_provided_constructor): New fn.
	(type_has_user_provided_default_constructor): New fn.
	(check_methods): A defaulted fn is still trivial.
	(check_bases_and_members): Likewise.
	* decl.c (grok_special_member_properties): Likewise.
	(duplicate_decls): Complain about redeclaring a function as deleted.
	(start_decl): initialized==2 means deleted.
	(cp_finish_decl): Handle deleted/defaulted semantics.
	* decl2.c (grokfield): Likewise.
	(mark_used): Check DECL_DEFAULTED_FN instead of DECL_ARTIFICIAL.
	Complain about using a deleted fn.
	* init.c (build_value_init_1): Use type_has_user_provided_constructor.
	(perform_member_init): Check for a user-provided default constructor
	(build_new_1): Likewise.
	* call.c (build_over_call): Don't call mark_used twice.
	* method.c (implicitly_declare_fn): Set DECL_DEFAULTED_FN.
	* search.c (check_final_overrider): Check for deleted mismatch.
	* parser.c (cp_parser_init_declarator): Tell start_decl about =delete.
	(cp_parser_pure_specifier): Handle =default and =delete.

	* error.c (maybe_warn_cpp0x): Suggest -std=gnu++0x as well.

2008-07-23  Manuel Lopez-Ibanez  <>

	PR 35058
	* typeck.c: All calls to pedwarn changed.
	* decl.c: All calls to pedwarn changed.
	* call.c: All calls to pedwarn changed.
	* error.c: All calls to pedwarn changed.
	* typeck2.c: All calls to pedwarn changed.
	* pt.c: All calls to pedwarn changed.
	* name-lookup.c: All calls to pedwarn changed.
	* parser.c: All calls to pedwarn changed.

2008-07-21  Ralf Wildenhues  <>

	* call.c: Fix comment typos.
	* class.c: Likewise.
	* cp-tree.h: Likewise.
	* cxx-pretty-print.c: Likewise.
	* decl.c: Likewise.
	* init.c: Likewise.
	* name-lookup.c: Likewise.
	* operators.def: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.

2008-07-21  Paolo Carlini  <>

	PR c++/36871
	PR c++/36872
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Only check
	copy constructors and copy assignment operators proper.

2008-07-21  Rafael Ávila de Espíndola  <>

	* parser.c (cp_token): Remove in_system_header.
	(eof_token): Remove in_system_header.
	(cp_lexer_get_preprocessor_token): Don't set in_system_header.
	(cp_lexer_set_source_position_from_token): Don't set in_system_header.
	(cp_parser_member_declaration):  Use in_system_header_at.
	* pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER.
	(pop_tinst_level): Don't set in_system_header.
	(instantiate_class_template): Don't set in_system_header.
	(instantiate_decl): Don't set in_system_header.
	(instantiate_pending_templates): Don't set in_system_header.

2008-07-21  Paolo Carlini  <>

	PR c++/36870
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
	(trait_expr_value): Likewise.

2008-07-18  Dodji Seketeli  <>

	PR c++/36407
	* call.c (convert_like_real): Don't take the error code path
	  when a rvalue or base conversion has the bad_p field set.

2008-07-18  Kris Van Hees  <>

	* rtti.c (emit_support_tinfos): Add char16_type_node and
	* typeck2.c (digest_init): Support char16_t and char32_t.

2008-07-18  Kavih R. Ghazi  <>

	* cvt.c (convert_to_void): Avoid C++ keywords.
	* decl.c (walk_namespaces_r, wrapup_globals_for_namespace):
	* friend.c (is_friend): Likewise.
	* init.c (perform_member_init): Likewise.
	* mangle.c (write_template_prefix, write_template_template_param):
	* name-lookup.c (do_namespace_alias, do_using_directive,
	parse_using_directive, ambiguous_decl, arg_assoc): Likewise.
	* parser.c (cp_parser_template_id, cp_parser_namespace_definition,
	cp_parser_objc_typename, cp_parser_objc_method_keyword_params):
	* pt.c (is_specialization_of_friend, lookup_template_class,
	push_tinst_level, instantiate_class_template,
	tsubst_copy_and_build): Likewise.
	* tree.c (add_stmt_to_compound): Likewise.
	* typeck.c (finish_class_member_access_expr): Likewise.

2008-07-17  Julian Brown  <>
	    Mark Mitchell  <>

	* decl2.c (determine_visibility): Allow target to override
	visibility of class data.

2008-07-17  Paolo Carlini  <>

	PR c++/36855
	* semantics.c (trait_expr_value): Update __has_trivial_destructor
	semantics to the current WP (N2691).

2008-07-16  Dodji Seketeli  <>

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

	* lex.c (init_reswords): Always set D_OBJC.

2008-07-11  Tom Tromey  <>
	    Ian Lance Taylor  <>

	* 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  <>

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

	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_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

2008-07-11 Dodji Seketeli <>

	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_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_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  <>

	PR c++/36760
	* pt.c (tsubst_function_type): Remove warning for type qualifiers
	on function return type.

2008-07-09  Paolo Carlini  <>

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

	* parser.c (cp_parser_postfix_expression): New warning based on flag

2008-07-08  Simon Martin  <>

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

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

	* (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.
	* parser.c (cp_parse_braced_list): Split out from...
	(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):  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
	(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  <>

	* typeck.c (comp_ptr_ttypes_real): Use vector_targets_convertible_p.
	(comp_ptr_ttypes_const): Likewise.

2008-07-01  Andrew Haley  <>

	* 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  <>

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

	PR c++/36655
	* pt.c (do_type_instantiation): In c++0x mode do not warn for
	extern template.

2008-06-29  Kaveh R. Ghazi  <>

	* (cp-warn): Delete $(CXX_COMPAT_WARN).

2008-06-28  Jakub Jelinek  <>

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

	PR c++/36655
	* pt.c (do_decl_instantiation): In c++0x mode do not warn for
	extern template.

2008-06-24  Jonathan Wakely  <>

	PR c++/23194
	* typeck.c (cp_build_function_call): Show example syntax in

2008-06-21  Jonathan Wakely  <>

	* 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,
	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
	* call.c (joust): Change pedwarn to warning.
	* friend.c (make_friend_class): Likewise.

2008-06-16  Jan Hubicka  <>

	* method.c: Include cgraph.h.
	(use_thunk): Use cgraph_add_new_function instead of calling backend

2008-06-15  Ralf Wildenhues  <>

	* parser.c: Fix comment typo.

2008-06-14  Simon Martin  <>

	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
	(cp_parser_objc_class_ivars): Likewise.

2008-06-14  Simon Martin  <>

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

	PR c++/36408
	* semantics.c (stmt_expr_value_expr): Don't crash on empty

2008-06-08  Paolo Carlini  <>

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

	 PR c++/35327
	 * decl.c (grokdeclarator): In case of wrong return type return
	immediately error_mark_node.

2008-06-06  Jakub Jelinek  <>

	* 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
	(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
	(cp_parser_omp_clause_name): Handle collapse and untied
	(cp_parser_omp_clause_schedule): Handle auto schedule.
	(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
	(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
	* pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
	(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
	(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}
	(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  <>

	 PR c++/36404
	 * pt.c (push_template_decl_real): Consistently return error_mark_node
	on error.

2008-06-02  Tomas Bily  <>

	 * 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  <>

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

	PR c++/27975
	* call.c (build_new_op): Make warning conditional on

2008-05-27  Alexandre Oliva  <>

	PR c++/35909
	* call.c (convert_like_real): Convert bitfield to desired type
	before creating temporary.

2008-05-26  Daniel Franke  <>

	* Adjusted dependencies on c-incpath.o.

2008-05-23  Jakub Jelinek  <>

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

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

	* 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'
	(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  <>

	 PR c++/35331
	 * semantics.c (begin_class_definition): Extend checks on the first

2008-05-12  Tomas Bily  <>

	 * 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  <>

	* 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  <>

	* decl.c (duplicate_decls): Merge in DECL_PURE_P, TREE_READONLY,
	* rtti.c (build_dynamic_cast_1): Rename DECL_IS_PURE to

2008-05-02  Simon Baldwin  <>

	PR bootstrap/36108
	* typeck.c (build_array_ref): Remove warn_array_subscript_range.

2008-05-01  Simon Baldwin  <>

	* typeck.c (build_array_ref): Call warn_array_subscript_range.

2008-04-30  Jakub Jelinek  <>

	PR c++/35986
	* pt.c (more_specialized_fn): Stop the loop even if there are no
	arguments before ellipsis.

2008-04-29  Jakub Jelinek  <>

	PR c++/35650
	* parser.c (cp_parser_lookup_name): Look through single function

	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  <>
	    Liu Guanwei <>

	PR c++/57
	* parser.c (cp_parser_parameter_declaration): Handle < ambiguity
	in default arguments.

2008-04-25  Jan Hubicka  <>

	* typeck.c (check_return_expr): Update.
	* decl.c (start_preparsed_function): Update.
	* method.c (use_thunk): Update.

2008-04-24  Jakub Jelinek  <>

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

	* typeck.c (cp_build_function_call): Call

2008-04-23  Paolo Bonzini  <>

	* 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  <>

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

	PR c++/35747
	* semantics.c (finish_stmt_expr): Call pop_stmt_list even if the stmt
	expression is errorneous.

2008-04-21  Jason Merrill  <>

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

	* 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
	(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
	(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  <>

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

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

	PR target/35921
	* optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
	to clone.

2008-04-09  Jason Merrill  <>

	PR c++/35708
	* semantics.c (finish_compound_literal): Return a TARGET_EXPR,
	not a pushed variable.

2008-04-09  Volker Reichelt  <>

	* 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

	* 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  <>

	* pt.c (tsubst_copy, case SIZEOF_EXPR): Initialize len.

2008-04-07  Jason Merrill  <>

	PR c++/35734
	* class.c (type_has_user_nondefault_constructor): A template
	counts as a nondefault constructor.

2008-04-04  Paolo Bonzini  <>

	* 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,
	* 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  <>

	PR c++/35741
	* semantics.c (finish_offsetof): Undo effect of convert_from_reference
	before calling fold_offsetof.

2008-04-03  Tom Tromey  <>

	* (c++_OBJS): New variable.

2008-04-03  Paolo Bonzini  <>

	* optimize.c (clone_body): New, from tree-inline.c.

2008-04-03  Paolo Bonzini  <>

	 * 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  <>

	PR c++/35578
	* parser.c (cp_parser_decl_specifier_seq): Add location to error

2008-03-27  Tom Tromey  <>

	* Revert automatic dependency patch.

2008-03-27  Douglas Gregor  <>

	PR obj-c++/35704
	* typeck.c (build_x_compound_expr): Use cp_build_compound_expr.
	(build_compound_expr): New, for compatibility with C
	(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  <>

	* 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  <>

	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.

2008-03-26  Douglas Gregor  <>

	* pt.c (coerce_template_template_parm): Moved the body of the loop
	of coerce_template_template_parms here, to make iteration over a
	template argument pack simpler.
	Also, allow matching of a template parameter pack in the template
	template parameter to a template parameter in the template
	template argument.
	(coerce_template_template_parms): Deal with variadic template
	template parameters. Use coerce_template_template_parm.
	(unify): Make sure we coerce the template template argument's
	template arguments to the template template parameter's template
	parameters, not the other way around.

2008-03-25  Tom Tromey  <>

	* Remove .o targets.
	(cp/g++spec.o): Moved to cp/.  Reduce to variable setting.
	(GXX_OBJS): Update.
	(c++_OBJS): New variable.

2008-03-25  Douglas Gregor  <>

	* typeck.c (composite_pointer_type_r): Add SFINAE support.
	(composite_pointer_type): Ditto.
	(common_type): Fix call to composite_pointer_type.
	(cxx_sizeof_nowarn): New; used to be a macro.
	(cxx_sizeof_expr): Add SFINAE support.
	(cxx_alignof_expr): Ditto.
	(decay_conversion): Fix calls for SFINAE support.
	(rationalize_conditional_expr): Add SFINAE support.
	(build_class_member_access_expr): Ditto.
	(finish_class_member_access_expr): Ditto.
	(build_x_indirect_ref): Ditto.
	(build_indirect_ref): Original version renamed to
	cp_build_indirect_ref; new version provides a bridge from
	(cp_build_indirect_ref): Was build_indirect_ref; added SFINAE
	(get_member_function_from_ptrfunc): Fix calls for SFINAE support.
	(build_function_call): Original version renamed to
	cp_build_function_call; new version provides a bridge from
	(cp_build_function_call): Was build_function_call; added SFINAE
	(convert_arguments): Add SFINAE support.
	(build_x_binary_op): Ditto.
	(build_binary_op): Original version renamed to cp_build_binary_op;
	new version provides a bridge from c-common.
	(cp_build_binary_op): Was build_binary_op; added SFINAE support.
	(pointer_diff): Fix calls for SFINAE.
	(build_x_unary_op): Add SFINAE support.
	(condition_conversion): Fix calls for SFINAE.
	(build_unary_op): Original version renamed to cp_build_unary_op;
	new version provides a bridge from c-common.
	(cp_build_unary_op): Was build_unary_op; added SFINAE support.
	(unary_complex_lvalue): Fix calls for SFINAE.
	(build_x_conditional_expr): Add SFINAE support.
	(build_x_compound_expr_from_list): Fix calls for SFINAE.
	(build_x_compound_expr): Add SFINAE support.
	(convert_ptrmem): Fix calls for SFINAE.
	(build_static_cast_1): Add SFINAE support.
	(build_static_cast): Ditto.
	(build_reinterpret_cast_1): Ditto.
	(build_reinterpret_cast): Ditto.
	(build_const_cast_1): Ditto.
	(build_const_cast): Ditto.
	(build_c_cast): Ditto.
	(build_modify_expr): Original version renamed to
	cp_build_modify_expr; new version provides a bridge from c-common.
	(cp_build_modify_expr): Was build_modify_expr; added SFINAE
	(build_x_modify_expr): Add SFINAE support.
	(build_ptrmemfunc): Fix calls for SFINAE.
	(convert_for_assignment): Add SFINAE support.
	(convert_for_initialization): Ditto.
	(check_return_expr): Fix calls for SFINAE.
	(lvalue_or_else): Add SFINAE support.
	* init.c (perform_member_init): Fix calls for SFINAE.
	(emit_mem_initializers): Ditto.
	(expand_virtual_init): Ditto.
	(expand_cleanup_for_base): Ditto.
	(build_aggr_init): Add SFINAE support.
	(expand_default_init): Ditto.
	(expand_aggr_init_1): Fix calls for SFINAE.
	(build_offset_ref): Ditto.
	(build_new_1): Add SFINAE support.
	(build_new): Ditto.
	(build_vec_delete_1): Fix calls for SFINAE.
	(get_temp_regvar): Ditto.
	(build_vec_init): Add SFINAE support.
	(build_dtor_call): Fix calls for SFINAE.
	(build_delete): Ditto.
	(push_base_cleanups): Ditto.
	(build_vec_delete_1): Ditto.
	* class.c (build_base_path): Fix calls for SFINAE.
	(build_simple_base_path): Ditto.
	(convert_to_base_statically): Ditto.
	(build_vfn_ref): Ditto.
	(resolve_address_of_overloaded_function): Ditto.
	* decl.c (check_initializer): Fix calls for SFINAE.
	(register_dtor_fn): Ditto.
	(compute_array_index_type): Ditto.
	(finish_enum): Ditto.
	(start_preparsed_function): Ditto.
	(cxx_maybe_build_cleanup): Ditto.
	* call.c (convert_like): Add COMPLAIN argument.
	(convert_like_with_context): Ditto.
	(build_this): Fix calls for SFINAE.
	(build_user_type_conversion): Ditto.
	(resolve_args): Ditto.
	(build_new_function_call): Add SFINAE support.
	(build_operator_new_call): Fix calls for SFINAE.
	(build_object_call): Add SFINAE support.
	(build_conditional_expr): Ditto.
	(build_new_op): Ditto.
	(build_op_delete_call): Fix calls for SFINAE.
	(build_temp): Ditto.
	(convert_like_real): Add SFINAE support.
	(build_x_va_arg): Fix calls for SFINAE.
	(convert_default_arg): Ditto.
	(build_over_call): Add SFINAE support.
	(build_java_interface_fn_ref): Fix calls for SFINAE.
	(build_special_member_call): Add SFINAE support.
	(build_new_method_call): Ditto.
	(perform_implicit_conversion): Ditto.
	(perform_direct_initialization_if_possible): Ditto.
	(initialize_reference): Fix calls for SFINAE.
	* method.c (do_build_assign_ref): Fix calls for SFINAE.
	* rtti.c (build_headof): Fix calls for SFINAE.
	(get_tinfo_decl_dynamic): Ditto.
	(get_typeid): Ditto.
	(build_dynamic_cast_1): Add SFINAE support.
	(build_dynamic_cast): Ditto.
	(tinfo_base_init): Fix calls for SFINAE.
	* except.c (do_get_exception_ptr): Fix calls for SFINAE.
	(do_end_catch): Ditto.
	(initialize_handler_parm): Ditto.
	(expand_start_catch_block): Ditto.
	(do_allocate_exception): Ditto.
	(do_free_exception): Ditto.
	(build_throw): Ditto.
	* cvt.c (build_up_reference): Fix calls for SFINAE.
	(convert_to_reference): Ditto.
	(ocp_convert): Ditto.
	(convert_to_void): Add SFINAE support.
	* tree.c (build_dummy_object): Fix calls for SFINAE.
	(stabilize_expr): Ditto.
	* cp-tree.h (build_conditional_expr): Add tsubst_flags_t
	(build_new_method_call): Ditto.
	(build_special_member_call): Ditto.
	(build_new_op): Ditto.
	(perform_implicit_conversion): Ditto.
	(perform_direct_initialization_if_possible): Ditto.
	(convert_to_void): Ditto.
	(build_aggr_init): Ditto.
	(build_new): Ditto.
	(build_vec_init): Ditto.
	(build_dynamic_cast): Ditto.
	(finish_call_expr): Ditto
	(cxx_sizeof_or_alignof_expr): Add COMPLAIN parameter.
	(cxx_sizeof_nowarn): Remove macro; add function declaration.
	(build_class_member_access_expr): Add tsubst_flags_t parameter.
	(finish_class_member_access_expr): Ditto.
	(build_x_indirect_ref): Ditto.
	(cp_build_indirect_ref): New.
	(cp_build_function_call): Add tsubst_flags_t parameter.
	(build_x_unary_op): Ditto.
	(cp_build_unary_op): New.
	(build_x_conditional_expr): Add tsubst_flags_t parameter.
	(build_x_compound_expr): Ditto.
	(build_compound_expr): Ditto.
	(build_static_cast): Ditto.
	(build_reinterpret_cast): Ditto.
	(build_const_cast): Ditto.
	(build_c_cast): Ditto.
	(build_x_modify_expr): Ditto.
	(cp_build_modify_expr): New.
	(convert_for_initialization): Add tsubst_flags_t parameter.
	(cp_build_binary_op): Remove macro; add function declaration.
	(invalid_nonstatic_memfn_p): Add tsubst_flags_t parameter.
	(lvalue_or_else): Ditto.
	(build_functional_cast): Ditto.
	* typeck2.c (digest_init): Fix calls for SFINAE.
	(process_init_constructor_array): Ditto.
	(process_init_constructor_record): Ditto.
	(build_x_arrow): Ditto.
	(build_m_component_ref): Ditto.
	(build_functional_cast): Add SFINAE support.
	* pt.c (tsubst_copy_and_build): Add (more) SFINAE support.
	* semantics.c (simplify_loop_decl_cond): Fix calls for SFINAE.
	(finish_expr_stmt): Ditto.
	(finish_for_expr): Ditto.
	(finish_asm_stmt): Ditto.
	(finish_non_static_data_member): Ditto.
	(finish_qualified_id_expr): Ditto.
	(finish_call_expr): Add SFINAE support.
	(finish_increment_expr): Fix calls for SFINAE.
	(finish_unary_op_expr): Ditto.
	(simplify_aggr_init_expr): Ditto.
	(finish_omp_clauses): Ditto.
	(finish_omp_for): Ditto.
	(finish_omp_barrier): Ditto.
	(finish_omo_flush): Ditto.
	* decl2.c (grok_array_decl): Fix calls or SFINAE.
	(build_anon_union_vars): Ditto.
	(get_guard_cond): Ditto.
	(set_guard): Ditto.
	(one_static_initialization_or_destruction): Ditto.
	(do_static_initialization_or_destruction): Ditto.
	(generate_ctor_or_dtor_function): Ditto.
	(build_offset_ref_call_from_tree): Ditto.
	* parser.c (cp_parser_postfix_expression): Fix calls for SFINAE.
	(cp_parser_postfix_dot_deref_expression): Ditto.
	(cp_parser_unary_expression): Ditto.
	(cp_parser_new_expression): Ditto.
	(cp_parser_cast_expression): Ditto.
	(cp_parser_binary_expression): Ditto.
	(cp_parser_question_colon_clause): Ditto.
	(cp_parser_assignment_expression): Ditto.
	(cp_parser_expression): Ditto.
	(cp_parser_builtin_offsetof): Ditto.
	(cp_parser_template_argument): Ditto.
	(cp_parser_functional_cast): Ditto.

2008-03-24  Tom Tromey  <>

	* lex.c (handle_pragma_interface): Don't copy the filename.
	(handle_pragma_implementation): Copy filename using xstrdup.

2008-03-21  Paolo Carlini  <>

	* cp-tree.h (IS_AGGR_TYPE): Rename to MAYBE_CLASS_TYPE_P.
	* typeck.c (unary_complex_lvalue, build_modify_expr,
	convert_for_initialization): Adjust.
	* init.c (is_aggr_type): Remove.
	(is_class_type): Add.
	(build_offset_ref, build_new_1, build_vec_delete_1, build_vec_init,
	build_delete): Adjust.
	* lex.c (make_aggr_type): Remove.
	(make_class_type): Add.
	(cxx_make_type): Adjust.
	* class.c (finish_struct_1, fixed_type_or_null, is_empty_class):
	* decl.c (build_typename_type, make_typename_type,
	make_unbound_class_template, cxx_init_decl_processing,
	check_tag_decl, groktypename, start_decl_1, layout_var_decl,
	check_initializer, cp_finish_decl, build_ptrmemfunc_type, grokparms,
	grok_op_properties, xref_tag, check_function_type): Adjust.
	* call.c (check_dtor_name, standard_conversion, implicit_conversion,
	add_builtin_candidate, add_builtin_candidates,
	build_user_type_conversion_1, convert_like_real, build_cxx_call,
	is_subseq, compare_ics): Adjust.
	* method.c (use_thunk): Adjust.
	* rtti.c (build_dynamic_cast_1, create_pseudo_type_info,
	create_tinfo_types): Adjust.
	* cvt.c (cp_convert_to_pointer, convert_to_pointer_force,
	build_up_reference, convert_to_reference, convert_from_reference,
	ocp_convert, build_expr_type_conversion): Adjust.
	* tree.c (bind_template_template_parm, error_type): Adjust.
	* dump.c (cp_dump_tree): Adjust.
	* search.c (lookup_member): Adjust.
	* friend.c (make_friend_class, do_friend): Adjust.
	* typeck2.c (store_init_value, process_init_constructor_array,
	process_init_constructor_record, build_x_arrow, build_m_component_ref,
	build_functional_cast): Adjust.
	* pt.c (finish_member_template_decl, process_template_parm,
	lookup_template_class, tsubst_function_type, tsubst,
	tsubst_copy_and_build, get_template_base, bt_instantiate_type_proc):
	* semantics.c (begin_class_definition, finish_base_specifier,
	finish_typeof, cxx_omp_predetermined_sharing, finish_decltype_type):
	* name-lookup.c (constructor_name_p, push_overloaded_decl,
	do_class_using_decl, lookup_qualified_name,
	maybe_process_template_type_declaration): Adjust.
	* decl2.c (grok_array_decl, check_member_template,
	constrain_class_visibility): Adjust.
	* parser.c (cp_parser_class_name): Adjust.

2008-03-18  Paolo Bonzini  <>


2008-03-17  Jason Merrill  <>

	PR c++/35548
	* call.c (reference_binding): Check LOOKUP_NO_TEMP_BIND when binding
	a temp directly to a reference as per DR391.

2008-03-12  Richard Guenther  <>

	PR c++/35469
	2008-02-04  Richard Guenther  <>

	 PR java/35035
	 * decl.c (record_builtin_java_type): Make jboolean a
	 integer type again where its mode doesn't match that of bool.

	2008-01-25  Richard Guenther  <>

	 PR c++/33887
	 * decl.c (record_builtin_java_type): Make __java_boolean
	 a variant of bool.
	 * typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
	 after TYPE_MAIN_VARIANT check.

2008-03-10  Jakub Jelinek  <>

	PR c++/35328
	* semantics.c (finish_omp_clauses): Look through NOP_EXPR even
	if errorcount.

	PR c++/35337
	* semantics.c (finish_omp_clauses): Use %qD instead of %qE for
	DECL_P in not a variable and appears more than once error messages.

2008-03-07  Paolo Bonzini  <>


	2008-02-06  Douglas Gregor  <>

	PR c++/35049
	PR c++/35096
	* typeck.c (structural_comptypes): Call cp_comptypes.
	(comptypes): New; called from the C/C++ common bits to perform
	strict checks.
	(cp_comptypes): Renamed from comptypes, which is already used,
	with a different signature, by the C++ front end.
	(build_reinterpret_cast_1): Call cp_comptypes.
	(ptr_reasonably_similar): Ditto.
	* decl.c (decls_match): Ditto.
	* cvt.c (convert_to_reference): Ditto.
	* cp-tree.h (same_type_p): Ditto.
	(same_or_base_type_p): Ditto.
	(comptypes): Rename to cp_comptypes.
	* pt.c (canonical_type_parameter): Call cp_comptypes.

2008-03-07  Paolo Bonzini  <>

	* cp-objcp-common.c (cxx_types_compatible_p): Remove obsolete
	test for equivalence between pointer and references.

2008-03-02  Manuel Lopez-Ibanez  <>

	PR 24924
	* class.c (finish_struct_anon): Use permerror instead of pedwarn.
	(check_field_decls): Likewise.
	(note_name_declared_in_class): Likewise.
	* call.c (build_new_op): Likewise.
	(convert_like_real): Likewise.
	(build_over_call): Likewise.
	* lex.c (unqualified_fn_lookup_error): Likewise.
	* parser.c (cp_parser_template_id): Likewise.
	* cvt.c (warn_ref_binding): Likewise.
	(convert_to_reference): Likewise.
	(ocp_convert): Likewise.
	(convert_to_void): Use error instead of pedwarn.
	* error.c (cp_cpp_error): Use pedantic_warning_kind.
	* decl.c (compute_array_index_type): Use constant_expression_error.

2008-03-01  Douglas Gregor  <>

	* parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Note
	that auto is either a storage class or a simple type specifier,
	depending on the dialect.
	(cp_parser_decl_specifier_seq): Complain about `auto' as a storage
	specifier in C++98 mode, error in C++0x mode (since we don't
	support auto as a type specifier, yet).
	(cp_parser_storage_class_specifier_opt): Don't treat `auto' as a
	storage specifier in C++0x mode.
	(cp_parser_simple_type_specifier): Parse `auto' as a
	simple-type-specifier, but error because we don't support it yet.

2008-02-29  Manuel Lopez-Ibanez  <>

	* parser.c (cp_parser_nonclass_name): New.
	(cp_parser_pseudo_destructor_name): Use it instead of
	(cp_parser_type_name): Move code to cp_parser_nonclass_name.

2008-02-29  Tom Tromey  <>

	* parser.c (struct cp_token) <input_file_stack_index>: Remove.
	(cp_lexer_get_preprocessor_token): Update.
	(cp_lexer_set_source_position_from_token): Don't call
	* lex.c (cxx_init): Don't use push_srcloc or pop_srcloc.

2008-02-28  Richard Guenther  <>

	2008-02-26  Richard Guenther  <>

	* decl.c (duplicate_decls): Remove decl from global mapping
	before ggc_freeing it.

2008-02-27  Jakub Jelinek  <>

	PR c++/35368
	* rtti.c: Include c-pragma.h.
	(push_abi_namespace, pop_abi_namespace): New functions.
	(build_dynamic_cast_1, tinfo_base_init, get_pseudo_ti_index,
	create_tinfo_types, emit_support_tinfos): Use them.
	* (cp/rtti.o): Depend on $(C_PRAGMA_H).

2008-02-26  Jason Merrill  <>

	PR c++/35315
	* decl.c (grokdeclarator): Allow a typedef of an unnamed struct
	to name the struct for linkage purposes even if it has attributes.
	(start_decl): In that case, set ATTR_FLAG_TYPE_IN_PLACE.

2008-02-26  Tom Tromey  <>

	* parser.c (eof_token): Remove old location code.
	(check_empty_body): Remove test of USE_MAPPED_LOCATION.
	* decl2.c (generate_ctor_or_dtor_function): Remove old location
	(cp_write_global_declarations): Likewise.
	* lex.c (cxx_init): Remove old location code.
	(handle_pragma_implementation): Remove test of
	* pt.c (tsubst): Remove old location code.
	* error.c (cp_print_error_function): Remove test of
	* decl.c (pop_label): Remove old location code.
	(finish_function): Likewise.

2008-02-26  Manuel Lopez-Ibanez  <>

	PR 26264
	* call.c (magic_varargs_p):  Remove BUILT_IN_STDARG_START.

2008-02-26  Richard Guenther  <>

	* decl.c (duplicate_decls): Remove decl from global mapping
	before ggc_freeing it.

2008-02-26  Paolo Carlini  <>

	 PR c++/35323
	 * name-lookup.c (arg_assoc_type): Handle FIXED_POINT_TYPE.

2008-02-26  Manuel Lopez-Ibanez <>

	* typeck.c (build_class_member_access_expr): Add appropriate
	OPT_W* parameter to warning.
	(build_reinterpret_cast_1): Likewise.
	* name-lookup.c (push_overloaded_decl): Likewise.

2008-02-25  Paolo Carlini  <>

	 PR c++/35333
	 * error.c (dump_expr): Handle CONJ_EXPR.

2008-02-25  Paolo Carlini  <>

	 PR c++/35338
	 * error.c (dump_type): Handle FIXED_POINT_TYPE.
	(dump_expr): Handle FIXED_CST.

2008-02-24  Jason Merrill  <>

	* parser.c (cp_parser_declaration): Handle "inline namespace".
	(cp_parser_namespace_definition): Likewise.

	PR c++/33486
	* name-lookup.c (arg_assoc_namespace): Look down into inline
	namespaces, too.

2008-02-23  Manuel Lopez-Ibanez  <>

	* typeck.c (check_for_casting_away_constness): Use 1 single
	argument, the type of cast, to decide what diagnostics generate.
	(build_static_cast_1): Remove unused code. Update call to
	(build_reinterpret_cast_1): Update call to
	(build_const_cast_1): Likewise.

2008-02-24  Paolo Carlini  <>

	* error.c (dump_expr): Don't deal directly with NEW_EXPR (and
	VEC_NEW_EXPR), forward to pp_expression.
	* cxx-pretty-print.c (pp_cxx_new_expression): Fix FIXME.

2008-02-24  Danny Smith  <>

	PR c++/34749
	* friend.c (do_friend): Call cplus_decl_attributes earlier.

2008-02-22  Andrew Pinski  <>

	PR C++/34715
	* decl.c (duplicate_decls): Merge DECL_DISREGARD_INLINE_LIMITS for
	template decls' function decl.

2008-02-22  Paolo Carlini  <>

	PR c++/35282
	2008-02-14  Paolo Carlini  <>

	 PR c++/28743
	 * pt.c (determine_specialization): In case of function templates,
	when the type of DECL does not match FN there is no match.

2008-02-22  Ralf Wildenhues  <>

	PR c/19999
	* typeck.c (build_binary_op): Warn about floating point
	comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.

2008-02-19  Jason Merrill  <>

	PR c++/34950
	* pt.c (resolve_overloaded_unification): Set processing_template_decl
	while we look for possible bindings.

2008-02-19  Jakub Jelinek  <>

	PR c++/35028
	* cp-gimplify.c (cxx_omp_clause_apply_fn): Handle vararg copy ctors.

	PR c++/34964
	PR c++/35244
	* semantics.c (finish_omp_threadprivate): Do nothing for error_operand_p
	vars.  Afterwards ensure v is VAR_DECL.

	PR c++/35078
	* parser.c (cp_parser_omp_for_loop): If DECL has REFERENCE_TYPE, don't
	call cp_finish_decl.
	* semantics.c (finish_omp_for): Fail if DECL doesn't have integral type

2008-02-15  Douglas Gregor  <>

	PR c++/35023
	PR c++/35024
	PR c++/35026
	* pt.c (finish_member_template_decl): If the type in a TYPE_DECL
	is error_mark_node, return an error early.
	(find_parameter_packs_r): Pass the pointer set along to recursive
	calls of cp_walk_subtrees; don't try to manage the pointer set
	(uses_parameter_packs): Pass the pointer set to cp_walk_tree.
	(make_pack_expansion): Ditto.
	(check_for_bare_parameter_packs): Ditto. Also, don't bother taking
	a second pass through the tree with find_parameter_packs_r; that
	second pass no longer does anything.
	(push_template_decl_real): If we have an erroneous declaration,
	set its type to error_mark_node before returning an error.

2008-02-14  Douglas Gregor  <>

	PR c++/34050
	* pt.c (tsubst_initializer_list): Deal with the use of
	VOID_TYPE_NODE to indicate value-initialization of the bases.

2008-02-14  Manuel Lopez-Ibanez  <>
	    Jason Merrill  <>

	PR c++/5645
	PR c++/11159
	* class.c (type_has_user_nondefault_constructor): New fn.
	* cp-tree.h: Declare it.
	* init.c (emit_mem_initializers): Use it for -W warning about
	missing base initializer.

2008-02-14  Paolo Carlini  <>

	 PR c++/28743
	 * pt.c (determine_specialization): In case of function templates,
	when the type of DECL does not match FN there is no match.

2008-02-13  Jakub Jelinek  <>
	    Manuel Lopez-Ibanez  <>

	PR c++/35138
	* parser.c (cp_parser_pseudo_destructor_name): If next tokens
	are not identifier :: ~, return before calling cp_parser_type_name.

2008-02-13  Jason Merrill  <>

	PR c++/34962, c++/34937, c++/34939
	* decl2.c (is_late_template_attribute): Always defer attributes
	vector_size and weak.

	PR c++/34774
	* pt.c (value_dependent_expression_p): Look into DECL_INITIAL
	of enumerators, too.

2008-02-12  Jason Merrill  <>

	PR c++/34824
	* call.c (convert_like_real): Pass LOOKUP_NO_CONVERSION to build_temp
	if we're doing conversions to call a user-defined conversion function.

2008-02-12  Steven Bosscher  <>

	PR c++/29048
	* semantics.c (finish_qualified_id_expr): Avoid duplicate access
	check here, too.

2008-02-12  Jakub Jelinek  <>

	PR c++/34862
	* init.c (build_new_1): Don't create placement_expr before
	constructing alloc_call.  Verify that the pointer is passed by
	value to operator new.

2008-02-11  Jason Merrill  <>

	PR c++/35097
	* pt.c (tsubst): Don't look up a template typedef in an explicit

2008-02-11  Douglas Gregor  <>

	PR c++/35113
	* tree.c (cp_build_qualified_type_real): When building a
	cv-qualified array type, build it as a unique type with
	build_cplus_array_type_1 and then adopt the unqualified type's
	main variant.

2008-02-11  Paolo Carlini  <>

	PR c++/35077
	* decl.c (groktypename): Check grokdeclarator return.

2008-02-10  Jason Merrill  <>

	PR c++/34094
	* decl2.c (cp_write_global_declarations): Don't write out static
	data members with DECL_IN_AGGR_P set.

2008-02-08  Jason Merrill  <>

	PR c++/35116
	* tree.c (build_target_expr_with_type): Handle void initializer.
	(bot_manip): Remap slot before recursing.

2008-02-06  Kaveh R. Ghazi  <>

	PR other/35107
	* (cc1plus-dummy, cc1plus): Add $(GMPLIBS).

2008-02-06  Alexandre Oliva  <>

	PR c++/35056
	* tree.c: Include tree-flow.h.
	(build_target_expr): Check type compatibility.
	* (cp/tree.o): Depend on $(TREE_FLOW_H).
	* call.c (convert_like_real): Convert bitfield to expected type.

2008-02-06  Douglas Gregor  <>

	PR c++/35049
	PR c++/35096
	* typeck.c (structural_comptypes): Call cp_comptypes.
	(comptypes): New; called from the C/C++ common bits to perform
	strict checks.
	(cp_comptypes): Renamed from comptypes, which is already used,
	with a different signature, by the C++ front end.
	(build_reinterpret_cast_1): Call cp_comptypes.
	(ptr_reasonably_similar): Ditto.
	* decl.c (decls_match): Ditto.
	* cvt.c (convert_to_reference): Ditto.
	* cp-tree.h (same_type_p): Ditto.
	(same_or_base_type_p): Ditto.
	(comptypes): Rename to cp_comptypes.
	* pt.c (canonical_type_parameter): Call cp_comptypes.

2008-02-05  Jakub Jelinek  <>

	PR c++/33553
	* pt.c (tsubst) <case INTEGER_TYPE>: Don't issue error if max is
	value dependent expression.

2008-02-05  Douglas Gregor  <>

	PR c++/35074
	* decl2.c (save_template_attributes): When we're modifying the
	TYPE_MAIN_VARIANT to add new attributes, be sure to also modify
	all of the other variants to add those same attributes. Otherwise,
	the main variant will be inconsistent with those other variants.

2008-02-04  Richard Guenther  <>

	PR java/35035
	* decl.c (record_builtin_java_type): Make jboolean a
	integer type again where its mode doesn't match that of bool.

2008-02-02  Jason Merrill  <>
	    Mark Mitchell  <>

	PR c++/33916
	* init.c (build_value_init_1): New function.
	(build_value_init): New function.
	* typeck2.c (build_functional_cast): Call it.
	* cp-gimplify.c (cp_gimplify_init_expr): Handle its output.

	* cp-tree.h (TYPE_HAS_USER_CONSTRUCTOR): Rename from
	* class.c (finish_struct_bits, maybe_warn_about_overly_private_class,
	add_implicitly_declared_members): Adjust.
	(check_field_decls): Adjust. Remove warnings about reference/const
	in class without constructor.
	(check_bases_and_members): Adjust.  Give those warnings here instead.
	* decl.c (fixup_anonymous_aggr): Adjust.
	(check_initializer): Adjust, clarify logic slightly.
	(grok_special_member_properties): Adjust, only set if user-provided.
	* rtti.c (create_tinfo_types): Don't set.
	* cvt.c (ocp_convert): Remove exception for vtable_entry_type et al.
	Use same_type_ignoring_top_level_qualifiers_p.
	* pt.c (check_explicit_specialization): Adjust.
	(instantiate_class_template): Adjust.

2008-01-31  Douglas Gregor  <>
	    Jakub Jelinek  <>

	PR c++/34935
	PR c++/34936
	* typeck.c (structural_comptypes): Handle comparisons of
	REAL_TYPE nodes.
	* mangle.c (write_builtin_type): Map down to the canonical type,
	which will be one of the predefined type nodes.

2008-01-29  Michael Meissner  <>

	PR 35004
	* cp-tree.h (struct full_lang_decl): Make tree_code bitfield 16
	bits to allow for expansion of the number of middle end tree

2008-01-29  Douglas Gregor  <>

	PR c++/34055
	PR c++/34103
	PR c++/34219
	PR c++/34606
	PR c++/34753
	PR c++/34754
	PR c++/34755
	PR c++/34919
	PR c++/34961
	* typeck.c (check_return_expr): Tweak call to
	* class.c (add_method): Be careful with error_mark_nodes.
	* cp-tree.h (check_for_bare_parameter_packs): Remove "*" from
	* pt.c (struct find_parameter_pack_data): Remove
	(find_parameter_packs_r): Don't use SET_PACKS_TO_ERROR.
	(uses_parameter_packs): Don't set SET_PACKS_TO_ERROR.
	(make_pack_expansion): Ditto.
	(check_for_bare_parameter_packs): Parameter is now a tree, not a
	(process_template_parm): Tweak call to
	(push_template_decl_real): Tweak calls to
	check_for_bare_parameter_packs. If bare parameter packs are found
	in the list of exceptions, clear out that list after giving an
	* semantics.c (finish_cond): Tweak call to
	(finish_expr_stmt): Ditto.
	(finish_for_expr): Ditto.
	(finish_switch_cond): Ditto.
	(finish_mem_initializers): Ditto.
	(finish_member_declaration): Ditto.
	(finish_static_assert): Check for bare parameter packs in the
	* decl2.c (cplus_decl_attributes): Check for bare parameter packs in the
	attributes of a declaration.
	* parser.c (cp_parser_using_declaration): Tweak call to
	(cp_parser_base_clause): Ditto.

2008-01-28  Jason Merrill  <>

	PR c++/35007
	* class.c (build_base_path): Fix !want_pointer case.

2008-01-27  Jason Merrill  <>

	PR c++/27177
	* class.c (build_base_path): Fix previous change.

2008-01-26  Jakub Jelinek  <>

	PR c++/34965
	* error.c (dump_expr): Handle TRUTH_AND_EXPR, TRUTH_OR_EXPR

2008-01-26  Richard Guenther  <>

	PR c++/34235
	* typeck.c (build_binary_op): Remove code to shorten compares.

2008-01-25  Richard Guenther  <>

	PR c++/33887
	* decl.c (record_builtin_java_type): Make __java_boolean
	a variant of bool.
	* typeck.c (structural_comptypes): Move TYPE_FOR_JAVA check
	after TYPE_MAIN_VARIANT check.

2008-01-25  Jason Merrill  <>

	PR c++/27177
	* class.c (build_base_path): Don't mess with virtual access if
	* call.c (standard_conversion): Don't check whether source type
	is complete.

	* decl2.c (is_late_template_attribute): Don't defer attribute
	visibility just because the type is dependent.

2008-01-25  Jason Merrill  <>
	    Mark Mitchell  <>

	PR c++/31780
	* call.c (standard_conversion): Allow conversion from integer/real
	to complex.
	(compare_ics): Such a conversion is worse than a normal arithmetic

2008-01-25  Richard Guenther  <>

	PR c++/33887
	to true.

2008-01-24  Paolo Carlini  <>

	 PR c++/34603
	 * pt.c (push_template_decl_real): Return error_mark_node in case
	of template definition of non-template.

2008-01-24  Jason Merrill  <>

	PR c++/34913
	* decl2.c (is_late_template_attribute): Defer any attribute with
	dependent args.  Also defer type attributes if the type is dependent.

2008-01-22  Jakub Jelinek  <>
	    Alexandre Oliva  <>

	PR c++/33984
	* call.c (reference_binding): For bitfields use the declared bitfield
	(add_builtin_candidates): Likewise.
	* class.c (layout_class_type): For bitfields copy over the
	original type quals.

2008-01-22  Jason Merrill  <>

	PR c++/28560
	* decl.c (groktypename): Also ignore attributes on dependent
	possibly-class types.

	PR c++/34912
	* friend.c (do_friend): Check for prior declaration of a friend
	function of a local class.
	* name-lookup.c (lookup_name_innermost_nonclass_level):
	No longer static.
	* name-lookup.h: Declare it.

2008-01-22  Tom Tromey  <>

	PR c++/34829:
	* init.c (build_new_1): Only disallow Java aggregates.

2008-01-22  Jakub Jelinek  <>

	PR c++/34607
	* semantics.c (finish_omp_for): Don't call c_finish_omp_for
	if decl or init is error_mark_node.

	PR c++/34918
	* error.c (dump_expr): Handle VECTOR_CST.

2008-01-21  Jason Merrill  <>

	PR c++/33959
	* pt.c (tsubst_aggr_type): Make sure our context is complete.

	PR c++/34573
	* pt.c (retrieve_local_specialization): Robustify.
	(tsubst_pack_expansion, tsubst_decl): Remove redundant checks.

	PR c++/34846
	* pt.c (tsubst): Only call retrieve_local_specialization if the
	original typedef was in a function template.

	PR c++/34196
	* decl.c (wrap_cleanups_r): Set TRY_CATCH_IS_CLEANUP.

2008-01-21  Richard Guenther  <>

	PR c++/34850
	* error.c (cp_print_error_function): Deal with recursive
	BLOCK trees.

2008-01-20  Paolo Carlini  <>

	 PR c++/34891
	 * error.c (dump_expr): Deal with VIEW_CONVERT_EXPR.

2008-01-20  Paolo Carlini  <>

	 PR c++/34776
	PR c++/34486
	 * name-lookup.c (do_class_using_decl): Do not call constructor_name_p
	on non-IS_AGGR_TYPE scope.
	(constructor_name_p): Assert IS_AGGR_TYPE.

2008-01-18  Ian Lance Taylor  <>

	PR c++/33407
	* decl.c (duplicate_decls): Copy DECL_IS_OPERATOR_NEW flag.
	(grok_op_properties): For NEW_EXPR and VEC_NEW_EXPR set

2008-01-16  Richard Guenther  <>

	PR c++/33819
	* typeck.c (is_bitfield_expr_with_lowered_type): Recurse
	for conversions to type variants.

2008-01-15  Andreas Tobler  <>

	* parser.c (cp_parser_template_parameter): Fix C90 issue with mixing
	declaration and code.  Update copyright year.

2008-01-15  Douglas Gregor  <>

	PR c++/34399
	* friend.c (do_friend): Don't query TYPE_BEING_DEFINED unless we
	know we have a class type.

2008-01-15  Douglas Gregor  <>

	PR c++/34751
	* pt.c (coerce_template_parameter_pack): When substituting into
	the type of a non-type template parameter pack. use the
	deduced/substituted arguments.
	* parser.c (declarator_can_be_parameter_pack): A pointer-to-member
	can be a parameter pack with the ellipsis following it.  When we
	have an erroneous declaration, allow it to be a parameter pack.
	(cp_parser_template_parameter): Complain about default
	arguments on non-type template parameter packs, and parse them
	using the new cp_parser_default_argument.
	(cp_parser_parameter_declaration): Complain about parameter packs
	with default arguments. Move parsing of default arguments into a
	new function, cp_parser_default_argument.
	(cp_parser_default_argument): New; extracted from

2008-01-15  Douglas Gregor  <>

	PR c++/34051
	PR c++/34055
	PR c++/34102
	PR c++/34103
	* typeck.c (check_return_expr): If there are bare parameter packs
	in the return value, set it to error_mark_node.
	* tree.c (cp_walk_subtrees): Walk USING_DECL nodes.
	* pt.c (find_parameter_packs_r): Look at the type of
	IDENTIFIER_NODEs (e.g., for user-defined conversions).
	(check_for_bare_parameter_packs): Flip the result: now returns
	TRUE when there were bare parameter packs, FALSE otherwise.
	(push_template_decl_real): Deal with flipped result of
	* semantics.c (finish_cond): If there are bare parameter packs in
	the conditional, set it to error_mark_node.
	(finish_expr_stmt): If there are bare parameter packs in the
	expression, set it to error_mark_node.
	(finish_for_expr): Ditto.
	(finish_switch_cond): If there are bare parameter packs in
	the conditional, set it to error_mark_node.
	(finish_mem_initializers): If there are bare parameter packs in
	the member initializer, set it to error_mark_node.
	(finish_member_declaration): Check the attributes of the
	declaration for bare parameter packs, and remove the attributes if
	any have bare parameter packs.
	* parser.c (cp_parser_using_declaration): Check the using
	declaration for bare parameter packs.
	(cp_parser_base_clause): If there are bare parameter packs in a
	base specifier, don't add it to the chain.

2008-01-15  Douglas Gregor  <>

	PR c++/34314
	* error.c (dump_simple_decl): Display ellipsis for template
	non-type parameter packs.
	(dump_decl): Display ellipsis for template type parameter packs.
	(dump_template_decl): Display ellipsis for template template
	parameter packs.
	* pt.c (redeclare_class_template): When redeclaring a class
	template, check for collisions between template parameters and
	template parameter packs.

2008-01-15  Douglas Gregor  <>

	PR c++/33964
	* pt.c (process_partial_specialization): Don't mark template
	parameters that occur in non-deduced contexts.
	(struct pair_fn_data): Add include_nondeduced_p.
	(for_each_template_parm_r): Only visit non-deduced contexts if
	include_nondeduced_p is set.
	(for_each_template_parm): Added parameter include_nondeduced_p,
	which states whether template parameters found in non-deduced
	contexts should be visited.
	(uses_template_parms): Visit all template parameters, even those
	in non-deduced contexts.

2008-01-15  Douglas Gregor  <>

	PR c++/34052
	* pt.c (check_default_tmpl_args): Check for parameter packs that
	aren't at the end of a primary template.
	(push_template_decl_real): Remove check for parameter packs that
	aren't at the end of a primary template; that now happens in
	* semantics.c (finish_template_template_parm): Use
	check_default_tmpl_args to check for errors in the template
	parameter list.

2008-01-12  Doug Kwan  <>

	* decl.c: (grokdeclarator): Use OPT_Wignored_qualifiers
	instead of OPT_Wreturn_type in warning due to ignored return type
	* pt.c: (tsubst_function_type): Use OPT_Wignored_qualifiers
	instead of OPT_Wreturn_type in warning due to ignored return type

2008-01-08  Jakub Jelinek  <>

	PR c++/33890
	* semantics.c (finish_omp_for): Don't call
	fold_build_cleanup_point_expr if processing_template_decl.

2008-01-04  Paolo Carlini  <>
	    Jakub Jelinek  <>

	PR c++/34611
	* error.c (dump_template_argument): Deal with TREE_LIST.

2008-01-01  Douglas Gregor  <>

	* parser.c (cp_parser_check_decl_spec): Don't warn about "long
	long" in C++0x mode; change the warning to note that "long long"
	is only unsupported in C++98 mode.

Copyright (C) 2008 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.