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

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

2014-12-31  Iain Sandoe  <>

	* parser.c (cp_parser_primary_expression): If parsing an
	objective-c++ message expression fails, see if a lambda is present.
	(cp_parser_objc_message_receiver): Don't assume that, if a message
	receiver expression fails, it is a hard error.

2014-12-25  Jason Merrill  <>

	* pt.c (check_default_tmpl_args): Uses the parameter source
	location in the diagnostic.
	(convert_template_argument): Just return if parm is error_mark_node.

	PR c++/63522
	* parser.c (cp_parser_type_parameter): Call
	check_for_bare_parameter_packs on default argument.

2014-12-24  Paolo Carlini  <>

	PR c++/63985
	* parser.c (cp_parser_init_declarator): Add location_t* parameter.
	(cp_parser_simple_declaration): Provide proper diagnostic for
	multiple declarations and initializers in range-based for loops.
	(cp_parser_single_declaration): Adjust call.

2014-12-20  Jason Merrill  <>

	PR c++/64359
	* pt.c (iterative_hash_template_arg): Hash alias specializations
	differently from their TYPE_CANONICAL.
	(alias_template_specialization_p): Optimize.
	(template_args_equal): Optimize alias handling.
	(dependent_alias_template_spec_p): Only check innermost args.

2014-12-19  Kai Tietz  <>

	PR c++/61198
	* pt.c (most_general_template): Don't break for template-alias.

2014-12-18  Jason Merrill  <>

	PR c++/64105
	* parser.c (cp_parser_simple_type_specifier): Make auto parameter
	before -std=c++14 an error.

	PR c++/64352
	* pt.c (tsubst_copy_and_build): Pass complain to mark_used.

	PR c++/64251
	* decl2.c (mark_used): Don't mark if in_template_function.

2014-12-18  Paolo Carlini  <>

	PR c++/60955
	* pt.c (struct warning_sentinel): Move it...
	* cp-tree.h: ... here.
	* semantics.c (force_paren_expr): Use it.

2014-12-17  Jason Merrill  <>

	PR c++/64333
	* constexpr.c (cxx_bind_parameters_in_call): non_constant_args parm.
	(cxx_eval_call_expression): Don't cache calls with non-constant args.
	(cxx_eval_constant_expression) [COMPOUND_EXPR]: Pass true for lval.
	(cxx_eval_unary_expression, cxx_eval_binary_expression)
	(cxx_eval_conditional_expression): Pass	false for lval.

	* constexpr.c: Change "addr" parm names to "lval".

	* constexpr.c: Tweak comments and formatting.

2014-12-16  Paolo Carlini  <>

	PR c++/58650
	* parser.c (cp_parser_member_declaration): Fix error recovery for
	initialized non-static data member declared friend.

2014-12-15  Jan Hubicka  <>

	* decl2.c (decl_needed_p): When not optimizing, do not consider external
	decls as needed.

2014-12-15  Jason Merrill  <>

	PR c++/64297
	* typeck.c (apply_memfn_quals): Correct wrong TYPE_CANONICAL.

	N3778: Sized Deallocation
	* call.c (non_placement_deallocation_fn_p): A global sized
	operator delete is not a usual deallocation function until C++14.
	(build_op_delete_call): Choose the global sized op delete if we
	know the size.
	* cp-tree.h: Declare non_placement_deallocation_fn_p.
	(enum cp_tree_index): Remove CPTI_GLOBAL_DELETE_FNDECL.
	(global_delete_fndecl): Remove.
	* decl.c (cxx_init_decl_processing): Also declare sized op deletes.
	(grok_op_properties): Warn about sized dealloc without the flag.
	* init.c (build_builtin_delete_call): Remove.
	(build_vec_delete_1, build_delete): Don't call it.
	* decl2.c (maybe_warn_sized_delete): New.
	(cp_write_global_declarations): Call it.

2014-12-15  Paolo Carlini  <>

	PR c++/58882
	* decl.c (check_array_designated_initializer): Diagnose gracefully
	C99 designators which aren't integral constant-expressions; allow
	constexpr user-defined type conversion operators.

2014-12-12  Paolo Carlini  <>

	PR c++/59628
	* semantics.c (finish_omp_reduction_clause): Early return true

2014-12-12  Jason Merrill  <>

	* pt.c (do_auto_deduction): In direct-init context, { x } deduces
	from x.

	* cp-tree.h (NAMESPACE_ABI_TAG): New.
	* name-lookup.c (handle_namespace_attrs): Set it.
	* class.c (check_tag): Split out from find_abi_tags_r.
	(find_abi_tags_r): Also check namespace tags.
	(mark_type_abi_tags): Also mark namespace tags.

2014-12-12  Kai Tietz  <>

	PR c++/63996
	* constexpr.c (cxx_eval_loop_expr): Don't loop
	endless on none-constant expression.

2014-12-12  Jason Merrill  <>

	PR c++/61402
	* lambda.c (add_capture): Don't pass a dependent type to

2014-12-11  Jason Merrill  <>

	Remove N3639 "array of runtime length" from -std=c++14.
	* decl.c (compute_array_index_type): VLAs are not part of C++14.
	(create_array_type_for_decl, grokdeclarator): Likewise.
	* lambda.c (add_capture): Likewise.
	* pt.c (tsubst): Likewise.
	* rtti.c (get_tinfo_decl): Likewise.
	* semantics.c (finish_decltype_type): Likewise.
	* typeck.c (cxx_sizeof_or_alignof_type): Likewise.
	(cp_build_addr_expr_1): Likewise.
	* init.c (build_vec_init): Don't throw bad_array_length.

	PR c++/64248
	* parser.c (cp_parser_unqualified_id): Handle __func__ here.
	(cp_parser_primary_expression): Not here.

	PR c++/57510
	* typeck2.c (split_nonconstant_init_1): Handle arrays here.
	(store_init_value): Not here.
	(split_nonconstant_init): Look through TARGET_EXPR.  No longer static.
	* cp-tree.h: Declare split_nonconstant_init.
	* call.c (set_up_extended_ref_temp): Use split_nonconstant_init.

2014-12-11  Paolo Carlini  <>

	* typeck.c (maybe_warn_about_useless_cast): Remove unnecessary

2014-12-10  Kai Tietz  <>

	PR c++/64127
	* parser.c (cp_parser_diagnose_invalid_type_name): Check id
	for being an identifier before accessing it.

	PR c++/64100
	* typeck.c (lookup_destructor): Handle incomplete type.

2014-12-09  Jason Merrill  <>

	PR c++/64129
	* decl.c (grokdeclarator): Recover from variable template
	specialization declared as function.

	PR c++/64222
	* parser.c (cp_parser_unqualified_id): Don't declare fname while
	parsing function parms.

2014-12-03  Jason Merrill  <>

	PR c++/64029
	* decl.c (grok_reference_init): Complete array type.

	PR c++/64080
	* constexpr.c (cxx_eval_store_expression): Handle non-decl store

2014-12-03  Paolo Carlini  <>

	PR c++/63558
	* decl.c (identify_goto): Return a bool if diagnostic is emitted.
	(check_previous_goto_1): Consistently emit permerror + inform.
	(check_goto): Likewise.

2014-12-03  Richard Biener  <>

	* constexpr.c (cxx_eval_builtin_function_call): Use

2014-12-02  Marek Polacek  <>

	* constexpr.c (cxx_eval_check_shift_p): New function.
	(cxx_eval_binary_expression): Call it.  Set NON_CONSTANT_P if it
	returns true.

2014-12-01  Paolo Carlini  <>

	PR c++/60859
	* decl.c (reshape_init_r): Do not reject value-initialization of
	scalar array element.

2014-12-01  Marek Polacek  <>

	PR sanitizer/63956
	* constexpr.c: Include ubsan.h.
	(cxx_eval_call_expression): Bail out for IFN_UBSAN_{NULL,BOUNDS}
	internal functions and for ubsan builtins.
	* error.c: Include internal-fn.h.
	(dump_expr): Add printing of internal functions.

2014-12-01  Marek Polacek  <>

	* constexpr.c (literal_type_p): Return true for void type in C++14.

2014-12-01  Paolo Carlini  <>

	PR c++/60845
	* typeck.c (finish_class_member_access_expr): Use %q#T instead of
	%qD in error message.

2014-11-29  Jakub Jelinek  <>

	* cp-gimplify.c (cxx_omp_clause_apply_fn): Remove NULL last argument
	from create_tmp_var calls.

2014-11-28  Marek Polacek  <>

	PR c/63862
	* typeck.c (cp_build_binary_op) <RSHIFT_EXPR, LSHIFT_EXPR>: Don't
	convert the right operand to integer type.

2014-11-27  Kai Tietz  <>

	PR c++/63904
	* constexpr.c (cxx_eval_vec_init_1): Avoid
	type-overflow issue.

2014-11-26  Jason Merrill  <>

	Allow partial specialization of variable templates.
	* cp-tree.h (TINFO_USED_TEMPLATE_ID): New.
	* decl.c (duplicate_decls): Copy it.
	* error.c (dump_decl) [TEMPLATE_ID_EXPR]: Handle variables.
	* parser.c (cp_parser_decltype_expr): Do call finish_id_expression
	on template-ids.
	* pt.c (register_specialization): Remember variable template insts.
	(instantiate_template_1): Find the matching partial specialization.
	(check_explicit_specialization): Allow variable partial specialization.
	(process_partial_specialization): Likewise.
	(push_template_decl_real): Likewise.
	(more_specialized_partial_spec): Rename from more_specialized_class.
	(most_specialized_partial_spec): Rename from most_specialized_class.
	(get_partial_spec_bindings): Rename from get_class_bindings.

2014-11-26  Paolo Carlini  <>

	PR c++/63757
	* call.c (standard_conversion): Do not require expr to be non-null
	when NULLPTR_TYPE_P (from) is true.

2014-11-26  Jason Merrill  <>

	* constexpr.c (cxx_eval_constant_expression) [SAVE_EXPR]: Avoid
	multiple evaluation.

	* constexpr.c (cxx_eval_call_expression): Don't talk about
	flowing off the end if we're already non-constant.

2014-11-26  Ville Voutilainen  <>

	Diagnose string constant conversion to char* in c++11 and above
	as forbidden, not deprecated.
	* typeck.c (string_conv_p): Do a pedwarn in c++11 and above,
	change the diagnostic for the Wwrite-strings case for c++11 and above.

2014-11-24  Jason Merrill  <>

	* pt.c (lookup_template_variable): Always unknown_type_node.

2014-11-25  Paolo Carlini  <>

	PR c++/63786
	* parser.c (cp_parser_label_for_labeled_statement): Check the case
	with check_for_bare_parameter_packs.

2014-11-24  Jonathan Wakely  <>
	    Paolo Carlini  <>

	PR c++/63203
	* decl.c (initialize_local_var): Add -Winit-self warning for
	references initialized with themselves.

2014-11-24  Jason Merrill  <>

	PR c++/63942
	* mangle.c (mangle_decl): If we aren't going to create a symbol
	alias, don't build the alias DECL either.

2014-11-24  Paolo Carlini  <>

	PR c++/63905
	* cp-tree.h (lang_decl_fn): Remove constructor_attr, destructor_attr.

2014-11-21  Jason Merrill  <>

	PR c++/63657
	PR c++/38958
	* call.c (set_up_extended_ref_temp): Set TREE_USED on the reference
	if the temporary has a non-trivial destructor.
	* decl.c (poplevel): Don't look through references.

	PR c++/63942
	* name-lookup.c (supplement_binding_1): Override a mangling alias.
	* mangle.c (maybe_remove_implicit_alias): New.
	(mangle_decl): Always avoid creating conflicting alias.
	* cp-tree.h: Adjust.

	PR c++/63849
	* mangle.c (decl_mangling_context): Use template_type_parameter_p.

	PR c++/63588
	* pt.c (uses_template_parms): Handle null argument.

2014-11-21  Jakub Jelinek  <>

	PR target/63764
	* typeck.c (cp_build_array_ref): Adjust
	convert_vector_to_pointer_for_subscript caller.  If it returns true,
	call non_lvalue_loc on the result.

2014-11-20  Jason Merrill  <>

	PR c++/63658
	* pt.c (convert_nontype_argument): Call convert_from_reference.
	(check_instantiated_arg): Don't be confused by reference refs.
	(unify): Look through reference refs on the arg, too.
	* mangle.c (write_template_arg): Look through reference refs.

	* error.c (dump_expr): Avoid printing (*&i) for references.

2014-11-20  Ville Voutilainen  <>

	PR c++/63959
	* tree.c (trivially_copyable_p): Check for CP_TYPE_VOLATILE_P.

2014-11-20  Trevor Saunders  <>

	* cp-objcp-common.c: Use hash_table instead of htab.

2014-11-19  Jason Merrill  <>

	PR c++/56041
	* cp-tree.h (struct processing_template_decl_sentinel): New.
	* pt.c (instantiate_non_dependent_expr_internal): Split out from...
	(instantiate_non_dependent_expr_sfinae): Here.
	(convert_nontype_argument): Use them.
	* constexpr.c (fold_non_dependent_expr): Use them.

	PR c++/63885
	* constexpr.c (cxx_eval_constant_expression) [PARM_DECL]: Don't
	complain yet about a reference.
	[TARGET_EXPR]: Handle TARGET_EXPR with addr == true.
	[ADDR_EXPR]: Make sure we don't take the address of a CONSTRUCTOR.
	(cxx_bind_parameters_in_call): In the new scheme addr is always false.
	* typeck.c (build_address): Don't take the address of a CONSTRUCTOR.

	PR c++/57979
	* init.c (decl_really_constant_value): Rename from
	(scalar_constant_value): Similar but limited to scalar results.
	(decl_constant_value_safe): Remove.
	(constant_value_1): Respect return_aggregate_cst_ok_p.
	* typeck.c (decay_conversion): Use scalar_constant_value.
	* call.c (convert_like_real): Likewise.
	* cvt.c (ocp_convert): No need to check CLASS_TYPE_P.
	* typeck.c (decay_conversion): Or ARRAY_TYPE.
	* constexpr.c (struct constexpr_ctx): Add strict field.
	(cxx_eval_constant_expression) [VAR_DECL]: Use it to select between
	decl_constant_value and decl_really_constant_value.
	(cxx_eval_outermost_constant_expr): Add strict parm.
	(maybe_constant_init): Not strict.
	(potential_constant_expression_1): Add strict parm.
	Shorten most internal calls with RECUR macro.
	* cp-tree.h, pt.c, semantics.c: Adjust.

2014-11-19  Jason Merrill  <>

	PR c++/63928
	* constexpr.c (cxx_eval_store_expression): Return init, not *valp.

2014-11-19  Paolo Carlini  <>

	PR c++/55425
	* constexpr.c (constexpr_fn_retval): Accept __func__, __FUNCTION__,

2014-11-18  Jason Merrill  <>

	PR c++/63924
	* constexpr.c (cxx_eval_constant_expression) [PARM_DECL]: A load
	from a variable of empty class type is constant.

	* constexpr.c (cxx_eval_statement_list): Handle statement-expressions.
	(potential_constant_expression_1): Handle STMT_EXPR.

	* constexpr.c (cxx_eval_constant_expression): Give jump_target a
	default argument.
	(lots): Omit NULL jump_target arguments.

	* constexpr.c (struct constexpr_ctx): Add quiet field.
	(cxx_eval_outermost_constant_expr, is_sub_constant_expr): Set it.
	(lots): Replace allow_non_constant parameter with ctx->quiet.

	PR c++/63940
	* constexpr.c (cxx_eval_binary_expression): Don't assume the
	expression was already folded.
	(cxx_eval_unary_expression): Likewise.

2014-11-18  Marc Glisse  <>

	PR libstdc++/43622
	* rtti.c (emit_support_tinfos): Handle __float128.

2014-11-18  Jason Merrill  <>

	PR c++/63925
	* constexpr.c (cxx_eval_increment_expression): Use POINTER_PLUS_EXPR.

	PR c++/63934
	* constexpr.c (cxx_eval_call_expression): Check DECL_CONSTRUCTOR_P
	rather than VOID_TYPE_P.

	* pt.c (instantiate_template_1): Use tsubst_aggr_type for context.

	PR c++/58102
	* typeck2.c (store_init_value): Set it.
	* constexpr.c (cxx_eval_outermost_constant_expr): Check it.

2014-11-17  Jason Merrill  <>

	PR c++/33911
	* call.c (build_call_a): Don't warn_deprecated_use here.
	(build_over_call): Or here.
	* decl2.c (mark_used): Do it here.
	(is_late_template_attribute): Attribute deprecated is not deferred.
	(cplus_decl_attributes): Propagate TREE_DEPRECATED out to the template.
	* parser.c (cp_parser_template_name): Warn about deprecated template.
	(cp_parser_template_argument): Likewise.

	PR c++/50473
	* decl.c (cp_finish_decl): Don't try to process a non-dependent
	constant initializer for a reference.
	* pt.c (value_dependent_expression_p): A reference is always
	* call.c (extend_ref_init_temps_1): Also clear TREE_SIDE_EFFECTS
	on any NOP_EXPRs.

	Handle C++14 constexpr flow control.
	* constexpr.c (cxx_eval_loop_expr, cxx_eval_switch_expr): New.
	(cxx_eval_statement_list): New.
	(cxx_eval_constant_expression): Handle LABEL_EXPR,
	semantics of RETURN_EXPR.
	(many functions): Add jump_target parameter.
	(returns, breaks, continues, switches, label_matches): New.
	* cp-gimplify.c (begin_bc_block): Set them.

	* cp-gimplify.c (genericize_cp_loop): Use LOOP_EXPR.
	(genericize_for_stmt): Handle null statement-list.

	* constexpr.c (use_new_call): Always use new call handling.

	C++14 constexpr support (minus loops and multiple returns)
	* constexpr.c (use_new_call): New macro.
	(build_data_member_initialization): Ignore non-mem-inits.
	(check_constexpr_bind_expr_vars): Remove C++14 checks.
	(constexpr_fn_retval): Likewise.
	(check_constexpr_ctor_body): Do nothing in C++14.
	(massage_constexpr_body): In C++14 only collect mem-inits.
	(get_function_named_in_call): Handle null CALL_EXPR_FN.
	(cxx_bind_parameters_in_call): Build bindings in same order as
	parameters.  Don't treat iniviref parms specially in new call mode.
	(cxx_eval_call_expression): If use_new_call, do constexpr expansion
	based on DECL_SAVED_TREE rather than the massaged constexpr body.
	Set up ctx->object from AGGR_INIT_EXPR_SLOT if we don't have one.
	(is_sub_constant_expr): Don't mess with ctx.ctor here.
	(cxx_eval_component_reference): A null element means we're mid-
	(cxx_eval_store_expression, cxx_eval_increment_expression): New.
	(cxx_eval_constant_expression): Handle RESULT_DECL, DECL_EXPR,
	POSTDECREMENT_EXPR.  Don't look into DECL_INITIAL of variables in
	constexpr functions.  In new-call mode find parms in the values table.
	(potential_constant_expression_1): Handle null CALL_EXPR_FN.
	(cxx_eval_vec_init_1): Call build_aggr_init_expr.
	(cxx_eval_indirect_ref): Don't return a CONSTRUCTOR when the
	caller wants an lvalue.
	(cxx_eval_outermost_constant_expr): Pull object out of AGGR_INIT_EXPR.
	(maybe_constant_init): Look through INIT_EXPR.
	(ensure_literal_type_for_constexpr_object): Set
	* cp-tree.h (struct language_function): Add invalid_constexpr bitfield.
	* decl.c (start_decl): Set cp_function_chain->invalid_constexpr.
	(check_for_uninitialized_const_var): Likewise.
	(maybe_save_function_definition): Check it.
	* parser.c (cp_parser_jump_statement): Set
	(cp_parser_asm_definition): Likewise.

	PR c++/52282
	* decl.c (build_ptrmemfunc_type): Don't build a different
	RECORD_TYPE for a qualified PMF.
	* cp-tree.h (TYPE_PTRMEMFUNC_FN_TYPE): Merge cv-quals.
	* decl2.c (cplus_decl_attributes): Use TYPE_PTRMEMFUNC_FN_TYPE_RAW.
	* tree.c (cp_walk_subtrees): Likewise.
	(cp_build_qualified_type_real): Remove special PMF handling.

2014-11-15  Jason Merrill  <>

	* parser.c (cp_parser_omp_declare_reduction_exprs): A block is not
	an expression.

	* constexpr.c (cxx_eval_builtin_function_call): Use

	* constexpr.c (cx_check_missing_mem_inits): Clarify error message.

2014-11-14  Paolo Carlini  <>

	* semantics.c (end_maybe_infinite_loop): Use fold_non_dependent_expr.
	* parser.c (cp_parser_omp_clause_collapse): Likewise.
	(cp_parser_enumerator_definition): Don't call
	* decl.c (build_enumerator): ... call fold_non_dependent_expr here.
	* typeck2.c (massage_init_elt): Use fold_non_dependent_expr.
	* constexpr.c (maybe_constant_value): Allow VIEW_CONVERT_EXPR in
	the final gcc_assert.

	* constexpr.c (fold_non_dependent_expr): Add.
	* cp-tree.h (fold_non_dependent_expr): Declare it.
	* call.c (null_ptr_cst_p): Use it.
	* pt.c (tsubst_copy_and_build, build_non_dependent_expr): Likewise.
	* semantics.c (begin_maybe_infinite_loop): Likewise.
	* typeck.c (cp_build_binary_op): Likewise.
	* typeck2.c (check_narrowing): Likewise.

	* pt.c (fold_non_dependent_expr): Rename to
	(fold_non_dependent_expr_sfinae): Rename to
	(convert_nontype_argument, build_non_dependent_expr): Adjust.
	* decl.c (compute_array_index_type): Likewise.
	* parser.c (cp_parser_parenthesized_expression_list,
	cp_parser_enumerator_definition, cp_parser_omp_clause_collapse):
	* semantics.c (end_maybe_infinite_loop, finish_static_assert):
	* typeck.c (cxx_alignas_expr): Likewise.
	* typeck2.c (store_init_value, massage_init_elt): Likewise.
	* call.c: Adjust comments.
	* class.c: Likewise.
	* constexpr.c: Likewise.
	* decl2.c: Likewise.
	* tree.c: Likewise.

2014-11-14  Jonathan Wakely  <>

	* mangle.c (find_substitution): Look for abi_tag on class templates.

2014-11-13  Bernd Schmidt  <>
	    Thomas Schwinge  <>
	    Ilya Verbin  <>
	    Andrey Turetskiy  <>

	* (c++.install-common): Do not install for the offload

2014-11-13  Kai Tietz  <>

	* cp-tree.h (cp_build_function_call): Remove prototype.
	(cp_build_addr_expr_strict): Likewise.
	(build_typed_address): Likewise.
	* typeck.c (build_typed_address): Removed.
	(cp_build_addr_expr_strict): Make static.
	(cp_build_function_call): Likewise.

2014-11-12  Paolo Carlini  <>

	DR 1510
	PR c++/60420
	* cp-tree.h (struct cp_decl_specifier_seq): Add decltype_p bool field.
	* decl.c (grokdeclarator): Use it.
	* parser.c (cp_parser_simple_type_specifier): Likewise.
	* pt.c (tsubst, case DECLTYPE_TYPE): Use tf_ignore_bad_quals.

2014-11-11  Paolo Carlini  <>

	PR c++/63265
	* pt.c (tsubst_copy_and_build, case COND_EXPR): Maybe fold to
	constant the condition.

2014-11-10  Andi Kleen  <>

	* semantics.c (finish_goto_stmt): Call check_no_cilk.
	(finish_while_stmt_cond): Dito.
	(finish_do_stmt): Dito.
	(finish_for_cond): Dito.
	(finish_switch_cond): Dito.

2014-11-10  Paolo Carlini  <>

	* typeck.c (cp_build_binary_op): Use OPT_Wshift_count_negative and
	OPT_Wshift_count_overflow in the warnings.

2014-11-09  Jason Merrill  <>

	DR 799
	* typeck.c (build_reinterpret_cast_1): reinterpret_cast to the
	same scalar type is an rvalue.

	DR 2007
	* call.c (build_new_op_1): Don't do non-class lookup for =, -> or [].

2014-11-07  Jason Merrill  <>

	DR 1558
	* pt.c (dependent_alias_template_spec_p): New.
	(dependent_type_p_r): Handle dependent alias template specialization.
	(template_args_equal): A dependent alias template specializations
	is not equal to its underlying type as a template argument.
	* tree.c (strip_typedefs): Don't strip a dependent alias

	* parser.c (cp_parser_unqualified_id): Handle __func__ here.
	(cp_parser_primary_expression): Not here.

2014-11-07  Thomas Preud'homme  <>

	PR c++/63366
	* decl.c (grokdeclarator): Fix __complex meaning __complex double.

2014-10-29  Richard Sandiford  <>

	* constexpr.c: Remove redundant enum from machine_mode.

2014-10-28  Jason Merrill  <>

	* constexpr.c (cxx_eval_outermost_constant_expr): Tweak.

2014-10-28  Andrew MacLeod  <>

	* call.c: Adjust include files.
	* class.c: Ditto.
	* decl2.c: Ditto.
	* decl.c: Ditto.
	* lambda.c: Ditto.
	* mangle.c: Ditto.
	* method.c: Ditto.
	* optimize.c: Ditto.
	* parser.c: Ditto.
	* semantics.c: Ditto.
	* tree.c: Ditto.
	* vtable-class-hierarchy.c: Ditto.

2014-10-24  Jason Merrill  <>

	Implement N3653 (Member initializers and aggregates) and fix
	references to 'this' in constexpr constructors.
	* class.c (check_field_decls): In C++14 an NSDMI does not make the
	class non-aggregate.
	* constexpr.c (struct constexpr_ctx): New.
	(cxx_bind_parameters_in_call): Handle 'this'.
	(cxx_eval_call_expression): Create new constexpr_ctx.
	(cxx_eval_component_reference): Check CONSTRUCTOR_NO_IMPLICIT_ZERO.
	(initialized_type, init_subob_ctx, verify_ctor_sanity): New.
	(cxx_eval_bare_aggregate): Use them.  Build CONSTRUCTOR early.
	(cxx_eval_vec_init_1): Likewise.
	(cxx_eval_constant_expression) [PARM_DECL]: Allow 'this'.
	[TARGET_EXPR]: Build new constexpr_ctx.
	(cxx_eval_outermost_constant_expr): Build new constexpr_ctx.  Add
	object parameter.
	(is_sub_constant_expr): Build new constexpr_ctx.
	(potential_constant_expression_1): Handle PLACEHOLDER_EXPR.
	Allow 'this'.
	* cp-gimplify.c (cp_gimplify_init_expr): Call replace_placeholders.
	* error.c (dump_expr): Handle PLACEHOLDER_EXPR.
	* init.c (get_nsdmi): Generate PLACEHOLDER_EXPR.
	* tree.c (lvalue_kind): Handle PLACEHOLDER_EXPR.
	(build_ctor_subob_ref, replace_placeholders): New.
	* typeck2.c (store_init_value): Use replace_placeholders.
	(process_init_constructor_record): Make zero-init before NSDMI

2014-10-27  Andrew MacLeod  <>

	* cp-gimplify.c: Adjust include files.

2014-10-26  Manuel López-Ibáñez  <>

	PR c++/53061
	* cp-objcp-common.c: Do not include new.
	(cxx_initialize_diagnostics): Move from here to ...
	* error.c (cxx_initialize_diagnostics): : ... here. Move
	diagnostics initialization here from init_error.
	(cxx_pp): Use a real pointer not a macro.
	(init_error): Just initialize cxx_pp.
	* cxx-pretty-print.c (cxx_pretty_printer::cxx_pretty_printer): Do
	not set maximum line length.

2014-10-23  Jonathan Wakely  <>

	PR c++/63619
	* decl2.c (delete_sanity): Use OPT_Wdelete_incomplete in warning.

2014-10-21  Paolo Carlini  <>

	* parser.c (cp_parser_unary_expression): Add default arguments.
	(cp_parser_cast_expression, cp_parser_sizeof_operand,
	cp_parser_omp_atomic): Adjust.

2014-10-20  Jason Merrill  <>

	PR c++/63601
	* lambda.c (current_nonlambda_function): New.
	* semantics.c (finish_this_expr): Use it.
	* cp-tree.h: Declare it.

2014-10-17  Alan Modra  <>

	PR middle-end/61848
	* decl.c (merge_decls): Don't merge section name, comdat group or
	tls model to newdecl symtab node, instead merge to olddecl.
	Override existing olddecl section name.  Set tls_model for all
	thread-local vars, not just OMP thread-private ones.  Remove
	incorrect comment.

2014-10-16  Andrew MacLeod  <>

	* cp-tree.h: Adjust include files.

2014-10-15  Jason Merrill  <>

	PR c++/63528
	* pt.c (lookup_template_variable): Call coerce_template_parms.

2014-10-15  Paolo Carlini  <>

	* semantics.c (is_instantiation_of_constexpr, literal_type_p,
	constexpr_fundef_hasher::equal, constexpr_fundef_hasher::hash,
	retrieve_constexpr_fundef, is_valid_constexpr_fn,
	build_anon_member_initialization, build_data_member_initialization,
	check_constexpr_bind_expr_vars, check_constexpr_ctor_body_1,
	check_constexpr_ctor_body, sort_constexpr_mem_initializers,
	build_constexpr_constructor_member_initializers, constexpr_fn_retval,
	massage_constexpr_body, cx_check_missing_mem_inits,
	register_constexpr_fundef, explain_invalid_constexpr_fn,
	constexpr_call_hasher::hash, constexpr_call_hasher::equal,
	maybe_initialize_constexpr_call_table, get_function_named_in_call,
	get_nth_callarg, lookup_parameter_binding,
	cxx_eval_builtin_function_call, adjust_temp_type,
	cxx_bind_parameters_in_call, push_cx_call_context,
	pop_cx_call_context, cx_error_context, cxx_eval_call_expression,
	reduced_constant_expression_p, verify_constant,
	cxx_eval_unary_expression, cxx_eval_binary_expression,
	cxx_eval_conditional_expression, cxx_eval_array_reference,
	cxx_eval_component_reference, cxx_eval_bit_field_ref,
	cxx_eval_logical_expression, base_field_constructor_elt,
	cxx_eval_bare_aggregate, cxx_eval_vec_init_1, cxx_eval_vec_init,
	cxx_fold_indirect_ref, cxx_eval_indirect_ref, non_const_var_error,
	cxx_eval_trinary_expression, var_in_constexpr_fn,
	cxx_eval_constant_expression, cxx_eval_outermost_constant_expr,
	is_sub_constant_expr, cxx_constant_value, maybe_constant_value,
	maybe_constant_init, potential_constant_expression_1,
	potential_constant_expression, potential_rvalue_constant_expression,
	require_potential_rvalue_constant_expression): Moved definitions...
	* constexpr.c: ... here, new file.
	* Update.
	* Likewise.

2014-10-14  Jason Merrill  <>

	PR c++/63455
	* parser.c (struct saved_token_sentinel): New.
	(cp_parser_statement): Use it.
	(cp_parser_start_tentative_firewall): New.
	(cp_parser_end_tentative_firewall): New.
	(cp_parser_lambda_expression): Use them.
	(cp_parser_statement_expr): New.
	(cp_parser_primary_expression): Use it.

2014-10-14  DJ Delorie  <>

	* typeck.c (cp_common_type): Check for all __intN types, not just
	* decl.c (grokdeclarator): Likewise.
	* rtti.c (emit_support_tinfos): Check for all __intN types, not just
	* parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Check
	for all __intN types, not just __int128.
	(cp_parser_simple_type_specifier): Likewise.
	* mangle.c (integer_type_codes): Remove int128-specific codes.
	* cp-tree.h (cp_decl_specifier_seq): Add int_n_idx to store which
	__intN was specified.
	* lex.c (init_reswords): Reserve all __intN keywords.

2014-10-14  Marc Glisse  <>

	* typeck.c (cp_build_unary_op) [TRUTH_NOT_EXPR]: Accept float vectors.

2014-10-13  H.J. Lu  <>

	* mangle.c (mangle_conv_op_name_for_type): Cast elements to
	unsigned long.
	(print_template_statistics): Cast size and elements to long.

2014-10-12  Trevor Saunders  <>

	* cp-gimplify.c, cp-tree.h, decl.c, mangle.c, name-lookup.c,
	pt.c, semantics.c, tree.c, typeck2.c: Use hash_table instead of

2014-10-10  Jason Merrill  <>

	PR c++/62115
	* class.c (build_base_path): Preserve rvalueness.
	* call.c (convert_like_real) [ck_base]: Let convert_to_base handle &/*.
	* rtti.c (build_dynamic_cast_1): Call convert_to_reference later.

	PR c++/63194
	* method.c (defaulted_late_check): Call maybe_instantiate_noexcept.

	* method.c (implicitly_declare_fn): Handle deleted lambda default
	ctor and copy assop here.
	* class.c (check_bases_and_members): Not here.
	(add_implicitly_declared_members): And don't set

	* semantics.c (finish_id_expression): Check for error_mark_node.

2014-10-09  Jason Merrill  <>

	PR c++/63207
	* semantics.c (outer_var_p): Non-static.
	(process_outer_var_ref): Split out from finish_id_expression.
	* pt.c (tsubst_copy_and_build): Call them.
	* cp-tree.h: Declare them.

2014-10-09  Paolo Carlini  <>

	* semantics.c (check_constexpr_ctor_body_1): New.
	(check_constexpr_ctor_body): Use it; add bool parameter.
	(build_data_member_initialization): Handle BIND_EXPR and
	USING_STMT in the main conditional.
	(build_constexpr_constructor_member_initializers): Do not
	handle BIND_EXPR here.
	(constexpr_fn_retval): Handle BIND_EXPR in the switch.
	(massage_constexpr_body): Don't do it here.
	* parser.c (cp_parser_ctor_initializer_opt_and_function_body):
	Adjust check_constexpr_ctor_body call.
	(cp_parser_compound_statement): Do not pedwarn for compound-statement
	in constexpr function in C++14 mode.
	* cp-tree.h (check_constexpr_ctor_body): Update declaration.

2014-10-09  Jason Merrill  <>

	PR c++/63309
	* parser.c (cp_parser_class_head): push_template_decl for members
	of templates, too.

	PR c++/63415
	* pt.c (value_dependent_expression_p) [CONSTRUCTOR]: Check the type.
	(iterative_hash_template_arg): Likewise.

	PR c++/63437
	* cp-tree.h (REF_PARENTHESIZED_P): Also allow INDIRECT_REF.
	* semantics.c (force_paren_expr): And set it.
	* typeck.c (check_return_expr): And handle it.

2014-10-09  Marc Glisse  <>

	* decl.c (grokdeclarator): constexpr only implies const in C++11.

2014-10-08  Jason Merrill  <>

	PR c++/63405
	* pt.c (tsubst_pack_expansion): Limit simple expansion to type packs.

	PR c++/63485
	* tree.c (build_cplus_array_type): Look for a type with no
	typedef-name or attributes.

	* call.c (call_copy_ctor): New.
	(build_over_call): Use it to avoid infinite recursion on invalid code.

2014-10-07  Jason Merrill  <>

	* tree.c (cp_tree_equal) [TRAIT_EXPR]: Use cp_tree_equal for type2.

2014-10-06  Edward Smith-Rowland  <>

	* cp/parser.c: Allow [[deprecated]] for C++11.  Issue a pedwarn.

2014-10-06  Paolo Carlini  <>

	PR c++/55250
	* semantics.c (check_constexpr_bind_expr_vars): New.
	(check_constexpr_ctor_body, massage_constexpr_body): Use it.
	(build_constexpr_constructor_member_initializers): Handle
	BIND_EXPR in the main conditional.

2014-10-02  Mark Wielaard  <>

	PR debug/63239
	* cp-objcp-common.h (LANG_HOOKS_FUNCTION_DECL_DELETED_P): Define.
	(cp_function_decl_deleted_p): New prototype.
	* cp-objcp-common.c (cp_function_deleted_p): New function.

2014-10-03  Marc Glisse  <>

	PR c++/54427
	PR c++/57198
	PR c++/58845
	* typeck.c (cp_build_binary_op): save_expr after convert to save
	redundant operations.
	(cp_build_unary_op) [TRUTH_NOT_EXPR]: Likewise.

2014-10-03  Jason Merrill  <>

	* decl.c (start_decl): Complain about static/thread_local vars
	in constexpr function.
	(check_for_uninitialized_const_var): Also uninitialized vars.
	* parser.c (cp_parser_jump_statement): And gotos.
	(cp_parser_asm_operand_list): And asm.
	(cp_parser_try_block): And try.
	* semantics.c (ensure_literal_type_for_constexpr_object): And

	* semantics.c (constexpr_fn_retval): Ignore declarations in C++14.
	(var_in_constexpr_fn): New.
	(cxx_eval_constant_expression): Look into DECL_INITIAL.
	(potential_constant_expression_1): Allow constexpr-local vars.

	PR c++/63362
	* tree.c (strip_typedefs): Handle TREE_LIST.

2014-10-03  Paolo Carlini  <>

	* parser.c (cp_parser_assignment_expression,
	cp_parser_constant_expression): Add default arguments.
	cp_parser_expression, cp_parser_constant_expression,
	cp_parser_label_for_labeled_statement, cp_parser_static_assert,
	cp_parser_template_argument, cp_parser_enumerator_definition,
	cp_parser_member_declaration, cp_parser_constant_initializer,
	cp_parser_noexcept_specification_opt, cp_parser_throw_expression,
	cp_parser_std_attribute_spec, cp_parser_objc_message_args,
	cp_parser_objc_class_ivars, cp_parser_omp_clause_collapse,
	cp_parser_omp_clause_aligned, cp_parser_omp_clause_safelen,
	cp_parser_omp_clause_simdlen, cp_parser_omp_clause_dist_schedule,
	cp_parser_omp_for_incr, cp_parser_omp_for_loop_init,
	cp_parser_cilk_simd_vectorlength, cp_parser_cilk_simd_linear): Adjust.

2014-10-02  Paolo Carlini  <>

	PR c++/53025
	* cp-tree.h (struct saved_scope): Add noexcept_operand.
	(cp_noexcept_operand): Define.
	* call.c (build_over_call): Use it.
	* parser.c (cp_parser_unary_expression, [RID_NOEXCEPT]): Likewise.
	* pt.c (tsubst_copy_and_build, [NOEXCEPT_EXPR]): Likewise.

2014-10-01  Jason Merrill  <>

	PR c++/63362
	* method.c (constructible_expr): Handle value-init of non-class.
	* parser.c (cp_parser_trait_expr): Allow pack expansion.
	* pt.c (tsubst_copy_and_build): Handle pack expansion.

	PR c++/63362
	* class.c (type_has_non_user_provided_default_constructor): Rename
	from type_has_user_provided_default_constructor, reverse sense.
	(default_init_uninitialized_part, explain_non_literal_class): Adjust.
	(check_bases_and_members): Set TYPE_HAS_COMPLEX_DFLT.
	* call.c (build_new_method_call_1): Adjust.
	* cp-tree.h: Adjust.
	* decl.c (grok_special_member_properties): Don't set
	* init.c (build_value_init_noctor): Don't use

2014-09-30  Jason Merrill  <>

	* cp-tree.h (cp_trait_kind): Add CPTK_IS_TRIVIALLY_ASSIGNABLE and
	* cxx-pretty-print.c (pp_cxx_trait_expression): Likewise.
	* parser.c (cp_parser_primary_expression): Likewise.
	(cp_parser_trait_expr): Likewise.  Handle variadic trait.
	* semantics.c (trait_expr_value): Likewise.
	(finish_trait_expr): Likewise.
	(check_trait_type): Handle variadic trait.  Return bool.
	* method.c (build_stub_object): Add rvalue reference here.
	(locate_fn_flags): Not here.
	(check_nontriv, assignable_expr, constructible_expr): New.
	(is_trivially_xible): New.

	* cp-tree.h (cp_trait_kind): Add CPTK_IS_TRIVIALLY_COPYABLE.
	* cxx-pretty-print.c (pp_cxx_trait_expression): Likewise.
	* parser.c (cp_parser_primary_expression): Likewise.
	(cp_parser_trait_expr): Likewise.
	* semantics.c (trait_expr_value): Likewise.
	(finish_trait_expr): Likewise.

	* method.c (build_stub_object): Use CONVERT_EXPR.
	* tree.c (build_dummy_object): Likewise.
	(is_dummy_object): Adjust.

	* cp-tree.h (cp_trait_kind): Remove CPTK_IS_CONVERTIBLE_TO.
	* cxx-pretty-print.c (pp_cxx_trait_expression): Likewise.
	* semantics.c (trait_expr_value): Likewise.
	(finish_trait_expr): Likewise.
	* parser.c (cp_parser_primary_expression): Likewise.
	(cp_parser_trait_expr): Likewise. Remove redundant grokdeclarator.

2014-09-30  Manuel López-Ibáñez  <>

       PR c++/16564
       * error.c (print_instantiation_context): Delete.
       * typeck2.c (build_x_arrow): Record location when pushing
       template instantiation.
       * pt.c (push_tinst_level): Make it a wrapper around ...
       (push_tinst_level_loc): ... this. New function. Make excessive
       template instantiation depth a fatal error. Record location. Use
       bool as return type.
       (instantiate_pending_templates): Make excessive
       template instantiation depth a fatal error.
       (problematic_instantiation_changed): Use bool as return type.
       * cp-tree.h (print_instantiation_context): Delete.
       (push_tinst_level): Update declaration.
       (problematic_instantiation_changed): Likewise.
       (push_tinst_level_loc): New.

2014-09-29  Richard Biener  <>

	* typeck.c (enum_cast_to_int): Use CONVERT_EXPR_P to check
	for conversions.

2014-09-26  Jason Merrill  <>

	* mangle.c (find_substitution): Use write_abi_tags.

2014-09-25  Marek Polacek  <>

	PR c++/61945
	* class.c (warn_hidden): Check for FUNCTION_DECL.

2014-09-25  Jakub Jelinek  <>

	PR c++/63249
	* semantics.c (handle_omp_array_sections_1): Call mark_rvalue_use
	on low_bound and length.

2014-09-24  Aldy Hernandez  <>

	* class.c, decl.c, optimize.c: Rename all instances of

2014-09-24  Marek Polacek  <>

	PR c/61405
	PR c/53874
	* semantics.c (finish_switch_cond): Call unlowered_expr_type.
	* tree.c (bot_manip): Add default case.
	* parser.c (cp_parser_primary_expression): Cast the controlling
	expression of a switch to an int.
	(cp_parser_unqualified_id): Likewise.

2014-09-23  Paolo Carlini  <>

	PR c++/61857
	* parser.c (cp_parser_skip_to_closing_square_bracket,
	cp_parser_array_designator_p): New.
	(cp_parser_initializer_list): Use the latter.

2014-09-22  Jason Merrill  <>

	* semantics.c (finish_non_static_data_member): In diagnostic, give
	error at point of use and note at point of declaration.

	PR c++/63320
	PR c++/60463
	PR c++/60755
	* lambda.c (maybe_resolve_dummy, lambda_expr_this_capture): Handle
	not finding 'this'.

2014-09-22  Paolo Carlini  <>

	PR c++/62219
	* pt.c (check_default_tmpl_args): Check LAMBDA_FUNCTION_P.

2014-09-22  Jason Merrill  <>

	* decl.c (poplevel): Don't warn about unused vars in template scope.
	* error.c (dump_decl): Handle variable templates.

2014-09-20  Jason Merrill  <>

	PR c++/62017
	* decl.c (begin_destructor_body): Only clobber the as-base part of

2014-09-19  Jason Merrill  <>

	PR c++/61392
	* mangle.c (write_expression): Use unresolved-name mangling for
	DR850 case.

	PR c++/61465
	* call.c (convert_like_real) [ck_identity]: Call mark_rvalue_use
	after pulling out an element from a CONSTRUCTOR.

2014-09-18  Jakub Jelinek  <>

	PR c++/63248
	* semantics.c (finish_omp_clauses): Don't call cp_omp_mappable_type
	on type of type dependent expressions, and don't call it if
	handle_omp_array_sections has kept TREE_LIST because something
	was type dependent.
	* pt.c (tsubst_expr) <case OMP_TARGET, case OMP_TARGET_DATA>:
	Use keep_next_level, begin_omp_structured_block and
	finish_omp_structured_block instead of push_stmt_list and

2014-09-18  Paolo Carlini  <>

	PR c++/62232
	* class.c (finish_struct_1): Do not -Wnon-virtual-dtor warn
	for final class types.

2014-09-15  Jason Merrill  <>

	* pt.c (lookup_template_class_1): Splice out abi_tag attribute if
	necessary.  Call inherit_targ_abi_tags here.
	* class.c (check_bases_and_members): Not here.
	(inherit_targ_abi_tags): Check CLASS_TYPE_P.
	* cp-tree.h: Declare inherit_targ_abi_tags.

2014-09-15  Ville Voutilainen  <>

	Do not diagnose lambda default arguments in c++14 modes.
	* parser.c (cp_parser_lambda_declarator_opt): Make the pedwarn

2014-09-15  Jakub Jelinek  <>

	* (check_g++_parallelize): Change to just an upper bound

2014-09-13  Marek Polacek  <>

	PR c++/60862
	* parser.c (cp_parser_postfix_expression) <case CPP_OPEN_PAREN>: Set
	location of a call expression.

2014-09-11  Jason Merrill  <>

	PR c++/63201
	* decl.c (start_decl): Handle specialization of member variable
	* pt.c (check_explicit_specialization): Adjust error.

2014-09-11  Paolo Carlini  <>

	PR c++/61489
	* typeck2.c (process_init_constructor_record): Do not warn about
	missing field initializer if EMPTY_CONSTRUCTOR_P (init).

2014-09-11  Jason Merrill  <>

	PR c++/63139
	* pt.c (tsubst_pack_expansion): Simplify substitution into T....
	(tsubst): Don't throw away PACK_EXPANSION_EXTRA_ARGS.

2014-09-10  Jason Merrill  <>

	PR c++/61659
	* decl.c (grokfndecl): Don't set DECL_COMDAT on static inlines.
	(duplicate_decls, start_decl): Likewise.
	* pt.c (check_explicit_specialization): Likewise.
	(push_template_decl_real): Or static templates.

2014-09-08  Jason Merrill  <>

	* typeck.c (build_class_member_access_expr): Move
	-Winvalid-offsetof code...
	* semantics.c (finish_offsetof):
	* parser.c (cp_parser_builtin_offsetof): Remember the location of
	the type argument.
	* pt.c (tsubst_copy_and_build) [OFFSETOF_EXPR]: Preserve it.

	PR c++/62255
	* pt.c (instantiate_decl): Handle recursive instantiation of
	static data member.

2014-09-05  Jason Merrill  <>

	PR c++/62659
	* semantics.c (potential_constant_expression_1): Handle un-folded
	pointer to member constants.

2014-09-04  Markus Trippelsdorf  <>

	PR ipa/61659
	* decl.c (duplicate_decls): Check DECL_DECLARED_INLINE_P on
	newdecl, not olddecl.

2014-09-02  Paolo Carlini  <>

	DR 1453
	* class.c (check_field_decls): A class of literal type cannot have
	volatile non-static data members and base classes.
	(explain_non_literal_class): Update.

2014-09-02  Jakub Jelinek  <>
	    Balaji V. Iyer  <>
	    Igor Zamyatin  <>

	* cp-cilkplus.c (cpp_validate_cilk_plus_loop_aux): Loc definition
	* parser.c (cp_parser_cilk_for): New function.
	(cp_parser_cilk_grainsize): Likewise.
	(cp_parser_statement): Added RID_CILK_FOR case.
	(cp_parser_omp_for_cond): Added CILK_FOR check.
	(cp_parser_omp_for_loop_init): Change function argument to accept
	tree_code instead just a bool flag; change the check to use that
	tree_code; check for initialization declaration in case of Cilk_for.
	(cp_parser_omp_for_loop): Added checks for CILK_FOR and RID_CILK_FOR;
	changed call to cp_parser_omp_for_loop_init according new arguments'
	(cp_parser_pragma): Added PRAGMA_CILK_GRAINSIZE case.
	* pt.c (tsubst_expr): Added CILK_FOR case.
	* semantics.c: Include convert.h.
	(finish_omp_clauses): Properly handle OMP_CLAUSE_SCHEDULE_CILKFOR
	(handle_omp_for_class_iterator): New argument lastp and its usage;
	added NE_EXPR case.
	(finish_omp_for): Changed call to handle_omp_for_class_iterator
	according new arguments' list; in case of Cilk_for save very first
	decl and create empty stmt_list block; use block to build correct
	statement tree.

2014-08-31  Jason Merrill  <>

	PR c++/62302
	* optimize.c (cdtor_comdat_group): Just look at the
	DECL_ASSEMBLER_NAME of the 'tors.

2014-08-27  Paolo Carlini  <>

	PR c++/52892
	* semantics.c (cxx_eval_call_expression): Use STRIP_NOPS on the
	result of cxx_eval_constant_expression.

2014-08-26  Jason Merrill  <>

	PR c++/58624
	* pt.c (tsubst_decl) [VAR_DECL]: Copy TLS model.
	(tsubst_copy_and_build) [VAR_DECL]: Use TLS wrapper.
	* semantics.c (finish_id_expression): Don't call TLS wrapper in a

2014-08-25  Jason Merrill  <>

	* pt.c (check_explicit_specialization): Don't complain about
	non-template variable.
	(template_for_substitution): Allow variable templates.
	(check_template_variable): Fix logic for member var template.
	* decl.c (start_decl): Don't complain about extra template header

	* decl.c (start_decl): Look through member variable template.
	* pt.c (tsubst_decl) [VAR_DECL]: Handle member variable templates.
	* decl2.c (grokfield): Set DECL_CONTEXT earlier on

2014-08-25  Paolo Carlini  <>

	PR c++/34938
	* cp-tree.h (TFF_POINTER): Add.
	* cxx-pretty-print.h (pp_cxx_cv_qualifiers): Forward the third
	argument too.
	* error.c (dump_type_suffix): Actually print the const and noreturn
	attribute when appropriate.

2014-08-23  Edward Smith-Rowland  <>

	* decl.c (compute_array_index_type, grokdeclarator,
	undeduced_auto_decl): Change from cxx1y to cxx14.
	*lambda.c(add_capture()): Change error message from C++1y to C++14.
	* parser.c (cp_parser_unqualified_id, cp_parser_pseudo_destructor_name,
	cp_parser_lambda_introducer, cp_parser_lambda_declarator_opt,
	cp_parser_decltype, cp_parser_conversion_type_id,
	cp_parser_simple_type_specifier, cp_parser_type_id_1,
	cp_parser_template_type_arg, cp_parser_std_attribute,
	cp_parser_template_declaration_after_export): Ditto.
	* pt.c (tsubst): Ditto.
	* semantics.c (force_paren_expr, finish_decltype_type): Ditto.
	* tree.c: Change comment.
	* typeck.c (comp_template_parms_position, cxx_sizeof_or_alignof_type,
	cp_build_addr_expr_1, maybe_warn_about_useless_cast): Ditto.

2014-08-23  Jason Merrill  <>

	Allow non-constexpr variable templates.
	* decl2.c (note_variable_template_instantiation): New.
	* cp-tree.h: Declare it.
	* pt.c (instantiate_decl): Call it.
	(push_template_decl_real): Allow non-constexpr variable templates.
	* semantics.c (finish_id_expression): Mark the variable template
	instantiation as used.
	* mangle.c (write_mangled_name): Variable template instantiations
	are mangled.
	* parser.c (cp_parser_init_declarator): Complain about
	non-function implicit templates.

2014-08-22  Marek Polacek  <>

	PR c++/62199
	* parser.c (cp_parser_binary_expression): Check each LHS if it's
	preceded with logical not.  Adjust call to

2014-08-22  Manuel López-Ibáñez  <>

	PR c++/57709
	* name-lookup.c (pushdecl_maybe_friend_1): Do not warn if a
	declaration shadows a function declaration, unless the former
	declares a function, pointer to function or pointer to member
	function, because this is a common and valid case in real-world
	Improve description.

2014-08-22  Jason Merrill  <>

	PR c++/62129
	* class.c (outermost_open_class): Fix logic.
	* decl.c (complete_vars): Fix logic.

2014-08-22  Jason Merrill  <>

	PR c++/62129
	* class.c (outermost_open_class): New.
	* cp-tree.h: Declare it.
	* decl.c (maybe_register_incomplete_var): Use it.
	(complete_vars): Handle any constant variable.
	* expr.c (cplus_expand_constant): Handle CONSTRUCTOR.

2014-08-22  Igor Zamyatin  <>

	PR other/62008
	* cp-array-notation.c (build_array_notation_ref): Added correct
	handling of case with incorrect array.

2014-08-21  Manuel López-Ibáñez  <>

	PR fortran/44054
	* error.c (cp_diagnostic_finalizer): Delete.
	(init_error): Do not set diagnostic_finalizer here.

2014-08-19  Marek Polacek  <>

	PR c++/62153
	* call.c (build_new_op_1): Remember the type of arguments for
	a comparison.  If either operand of a comparison is a boolean
	expression, call maybe_warn_bool_compare.

2014-08-19  Jason Merrill  <>

	PR tree-optimization/62091
	* decl2.c (decl_needed_p): Return true for virtual functions when

	PR lto/53808
	PR c++/61659
	* decl.c (maybe_commonize_var): Don't use DECL_COMDAT to trigger

2014-08-19  Gerald Pfeifer  <>

	* class.c (contains_empty_class_p): Remove.

2014-08-18  Paolo Carlini  <>

	* parser.c (cp_parser_expression): Add default arguments.
	(cp_parser_primary_expression, cp_parser_postfix_expression,
	cp_parser_array_notation, cp_parser_postfix_open_square_expression,
	cp_parser_unary_expression, cp_parser_direct_new_declarator,
	cp_parser_question_colon_clause, cp_parser_assignment_operator_opt,
	cp_parser_lambda_body, cp_parser_expression_statement,
	cp_parser_condition, cp_parser_c_for, cp_parser_range_for,
	cp_parser_iteration_statement, cp_parser_jump_statement,
	cp_parser_decltype_expr, cp_parser_noexcept_specification_opt,
	cp_parser_asm_operand_list, cp_parser_objc_message_receiver,
	cp_parser_objc_synchronized_statement, cp_parser_objc_throw_statement,
	cp_parser_omp_var_list_no_open, cp_parser_omp_clause_num_threads,
	cp_parser_omp_clause_num_teams, cp_parser_omp_clause_thread_limit,
	cp_parser_omp_clause_linear, cp_parser_omp_clause_device,
	cp_parser_omp_atomic, cp_parser_omp_for_loop_init,
	cp_parser_omp_for_loop, cp_parser_omp_declare_reduction_exprs,
	cp_parser_transaction_expression): Adjust.

2014-08-15  Jason Merrill  <>

	PR c++/61566
	* pt.c (lookup_template_class_1): Revert recent change.
	* mangle.c (CLASSTYPE_TEMPLATE_ID_P): Revert recent change.

	PR c++/61566
	* pt.c (instantiate_class_template_1): Ignore lambda on
	(push_template_decl_real): A lambda is not primary.
	(lookup_template_class_1): Don't look for a lambda partial
	* lambda.c (maybe_add_lambda_conv_op): Distinguish between being
	currently in a function and the lambda living in a function.
	* mangle.c (CLASSTYPE_TEMPLATE_ID_P): False for lambda.

2014-08-15  Richard Biener  <>
	    Jason Merrill  <>

	PR bootstrap/62077
	* tree.c (build_min_array_type, set_array_type_canon): Split out...
	(build_cplus_array_type): ...from here.  Only call build_array_type
	for main variants.

2014-08-15  Paolo Carlini  <>

	PR c++/62072
	2014-07-09  Paolo Carlini  <>

	DR 1584
	PR c++/57466
	* pt.c (check_cv_quals_for_unify): Implement resolution, disregard
	cv-qualifiers of function types.

2014-08-15  Manuel Lopez-Ibanez  <>

	* call.c (build_conditional_expr_1): Use OPT_Wextra in warning.

2014-08-14  Paolo Carlini  <>

	* typeck.c (composite_pointer_type, cxx_sizeof_or_alignof_type,
	cp_build_array_ref, cp_build_function_call_vec): When a
	pedwarn is suppressed under SFINAE, return error_mark_node.

	* typeck.c (cxx_sizeof_or_alignof_type): Fix complain &
	tf_warning_or_error, where complain is a bool, glitch.

2014-08-14  Ville Voutilainen  <>

	PR c++/62101
	* decl.c (grokdeclarator): Move the check for friend initializers..
	* decl2.c (grokfield) Postpone early return for friends
	until after the initializer check.

2014-08-14  Paolo Carlini  <>

	PR c++/54377
	* pt.c (coerce_template_parms): Improve error message vs default

2014-08-14  Paolo Carlini  <>

	* parser.c (cp_parser_init_declarator): Remove redundant check of

2014-08-13  Jason Merrill  <>

	* call.c (build_x_va_arg): Support passing non-POD through ....
	(convert_arg_to_ellipsis): Likewise.

2014-08-13  Andrew Sutton  <>

	* pt.c (lookup_template_variable): Make dependent variable templates
	have unknown type.

2014-08-13  Paolo Carlini  <>

	* parser.c (cp_parser_elaborated_type_specifier): Handle
	specially cp_parser_template_id returning a BASELINK.

2014-08-13  Paolo Carlini  <>

	* parser.c (cp_parser_diagnose_invalid_type_name,
	cp_parser_make_typename_type): Remove scope parameter.
	cp_parser_elaborated_type_specifier): Adjust calls.

2014-08-12  Ville Voutilainen  <>

	Reject virt-specifiers on friends and member templates
	* friend.c (do_friend): Diagnose virt-specifiers.
	* pt.c (push_template_decl_real): Diagnose virt-specifiers.

2014-08-09  Paolo Carlini  <>

	* typeck2.c (check_narrowing): Add tsubst_flags_t parameter, change
	return type to bool; in C++11 for constants give errors, not pedwarns.
	* cp-tree.h (check_narrowing): Adjust declaration.
	* call.c (convert_like_real): Update calls.
	* semantics.c (finish_compound_literal): Likewise.

2014-08-08  Jason Merrill  <>

	* pt.c (lookup_template_class_1): Copy abi_tag.

2014-08-08  Kai Tietz  <>

	* semantics.c (expand_or_defer_fn_1): Check for keep-inline-dllexport
	that we operate on a true inline.

2014-08-07  Trevor Saunders  <>

	* class.c, cp-gimplify.c, decl.c, decl2.c, error.c, method.c,
	optimize.c, pt.c, semantics.c: Remove includes of pointer-set.h.

2014-08-07  Paolo Carlini  <>

	PR c++/51312
	* decl.c (build_enumerator): Handle class types with conversion
	operators via perform_implicit_conversion_flags and

	* cvt.c (build_expr_type_conversion): Replace pair of errors
	with error + inform.

2014-08-07  Jason Merrill  <>

	PR c++/62043
	* parser.c (c_parse_file): Change sorry to fatal_error.

	PR c++/61959
	* semantics.c (cxx_eval_bare_aggregate): Handle POINTER_PLUS_EXPR.

2014-08-07  Trevor Saunders  <>

	* cp-tree.h, pt.c: Use hash_map instead of pointer_map.

2014-08-06  Jason Merrill  <>

	* init.c (build_vec_init): Fix constant initialization of
	trailing elements.
	(build_value_init_noctor): Call maybe_constant_init.
	* semantics.c (maybe_constant_init): See through EXPR_STMT and
	conversion to void.

	PR c++/60417
	* init.c (build_vec_init): Reorganize earlier change a bit.

	PR c++/61994
	* init.c (build_vec_init): Leave atype an ARRAY_TYPE
	if we're just returning an INIT_EXPR.

2014-08-06  Jason Merrill  <>
	    Braden Obrzut  <>

	* pt.c (check_explicit_specialization): Don't test
	DECL_DECLARED_INLINE_P for a variable template.

2014-08-06  Paolo Carlini  <>

	PR c++/43906
	* typeck.c (cp_build_binary_op): Extend to more cases the
	-Waddress warning.

2014-08-01  Braden Obrzut  <>

	Implement constexpr variable templates
	* decl.c (grokvardecl): Handle specializations of variable templates.
	(grokdeclarator): Handle variable template id expressions and NULL_TREE
	return from grokvardecl.
	* decl2.c (check_member_template): Allow declaration of template member
	* parser.c (cp_parser_template_id): Build a TEMPLATE_ID_EXPR for
	variable templates.
	* pt.c (check_template_variable): Accept variable temploids at
	non-class scope.
	(push_template_decl_real): The current instantiation of a template
	can be a VAR_DECL.
	(determine_specialization): Accept variable templates.
	(check_explicit_specialization): Handle and check for malformed
	variable template specializations.
	(lookup_template_variable): New.
	(tsubst_decl): Handle variable template specializations.
	(do_decl_instantiation): Handle template variables.
	(instantiate_decl): Handle template variables.
	* semantics.c (finish_template_variable): New.
	(finish_id_expression): Instantiate variable templates.
	* cp-tree.h (variable_template_p): New.

2014-08-02  Paolo Carlini  <>

	PR c++/15339
	* decl.c (check_redeclaration_no_default_args): New.
	(duplicate_decls): Use it, handle default arguments
	in redeclarations of function templates.

2014-08-02  Trevor Saunders  <>

	* optimize.c, semantics.c: Use hash_map instead of pointer_map.

2014-08-02  Trevor Saunders  <>

	* class.c, cp-gimplify.c, cp-tree.h, decl.c, decl2.c, error.c,
	method.c, name-lookup.c, pt.c, semantics.c, tree.c: Use hash_set
	instead of pointer_set.

2014-08-01  Jason Merrill  <>

	PR c++/60417
	* init.c (build_vec_init): Set CONSTRUCTOR_IS_DIRECT_INIT on
	init-list for trailing elements.
	* typeck2.c (process_init_constructor_array): Likewise.

2014-08-01  Paolo Carlini  <>

	DR 217 again
	* decl.c (duplicate_decls): Handle static member functions too.

2014-08-01  Igor Zamyatin  <>

	* cp-array-notation.c (expand_an_in_modify_expr): Fix the misprint
	in error output.

2014-08-01  Igor Zamyatin  <>

	PR other/61963
	* parser.c (cp_parser_array_notation): Added check for array_type.

2014-08-01  Igor Zamyatin  <>

	PR middle-end/61455
	* cp-array-notation.c (expand_array_notation_exprs): Handling of
	DECL_EXPR improved. Changed handling for INIT_EXPR.

2014-08-01  Paolo Carlini  <>

	* pt.c (lookup_template_class_1): Use DECL_TYPE_TEMPLATE_P.

2014-08-01  Jakub Jelinek  <>

	* cp-gimplify.c (cp_genericize_r): For -fsanitize=null and/or
	-fsanitize=alignment call ubsan_maybe_instrument_reference
	for casts to REFERENCE_TYPE and ubsan_maybe_instrument_member_call
	for calls to member functions.

2014-07-31  Marc Glisse  <>

	PR c++/60517
	* typeck.c (maybe_warn_about_returning_address_of_local): Return
	whether it is returning the address of a local variable.
	(check_return_expr): Return 0 instead of the address of a local

2014-07-30  Jason Merrill  <>

	PR lto/53808
	PR c++/61659
	* pt.c (push_template_decl_real): Don't set DECL_COMDAT on friends.

2014-07-30  Paolo Carlini  <>

	PR c++/57397
	* pt.c (unify_arity): Add boolean parameter.
	(unify_too_few_arguments): Likewise.
	(type_unification_real): Diagnose correctly insufficient
	arguments in the presence of trailing variadic parameters;
	deducing multiple trailing packs as empty is fine.

2014-07-30  Jason Merrill  <>

	PR c++/61659
	PR c++/61687
	* decl2.c (mark_all_virtuals): New variable.
	(maybe_emit_vtables): Check it instead of flag_devirtualize.
	(cp_write_global_declarations): Set it and give helpful diagnostic
	if it introduces errors.
	* class.c (finish_struct_1): Check it.

	PR lto/53808
	PR c++/61659
	* pt.c (push_template_decl_real): Set DECL_COMDAT on templates.
	(check_explicit_specialization): Clear it on specializations.
	* decl.c (duplicate_decls, start_decl): Likewise.
	(grokmethod, grokfndecl): Set DECL_COMDAT on inlines.
	* method.c (implicitly_declare_fn): Set DECL_COMDAT.  Determine
	linkage after setting the appropriate flags.
	* tree.c (decl_linkage): Don't check DECL_COMDAT.
	* decl2.c (mark_needed): Mark clones.
	(import_export_decl): Not here.

2014-07-25  Edward Smith-Rowland  <>

	Implement N4051 - Allow typename in a template template parameter
	* parser.c (cp_parser_type_parameter_key): New funtion;
	(cp_parser_token_is_type_parameter_key): Ditto;
	(cp_parser_type_parameter): Look for type-parameter-key for all versions
	but pedwarn for less than cxx1z.

2014-07-17  Paolo Carlini  <>

	PR c++/50961
	* call.c (standard_conversion): Use resolve_nondeduced_context
	for type_unknown_p (EXPR) && TREE_CODE (TO) == BOOLEAN_TYPE.

2014-07-17  Paolo Carlini  <>

	PR c++/61804
	* parser.c (cp_parser_tokens_start_cast_expression): Return -1
	for '++' and '--'.

2014-07-15  Jason Merrill  <>

	PR c++/61811
	* decl2.c (maybe_emit_vtables): Return true for -fuse-all-virtuals.

	PR c++/60848
	PR c++/61723
	* call.c (is_std_init_list): Don't check CLASSTYPE_TEMPLATE_INFO.
	* class.c (finish_struct): Reject invalid definition of

2014-07-15  Paolo Carlini  <>

	* call.c (convert_like_real): Call print_z_candidate and inform only
	if permerror returns true.

2014-07-14  Jan Hubicka  <>

	* class.c (build_clone): Do not clear assembler names of
	* decl.c (cp_tree_node_structure): Add TEMPLATE_DECL.
	* cp-objcp-common.c (cp_tree_size): Add TEMPLATE_DECL
	as a special case return sizeof (struct tree_decl_non_common)
	for other decls.
	(cp_common_init_ts): Do not initialize NAMESPACE_DECL;
	* cp/cp-tree.h (tree_template_decl): New structure.
	(cp_tree_node_structure_enum): Add TS_CP_TEMPLATE_DECL.
	(union cp_lang_tree_node): Add template_decl.

2014-07-14  Jason Merrill  <>

	PR c++/61445
	PR c++/56947
	* pt.c (instantiate_decl): Don't check defer_ok for local class

2014-07-14  Jakub Jelinek  <>

	PR middle-end/61294
	* cp-tree.h (LITERAL_ZERO_P): Define.
	* parser.c (cp_parser_parenthesized_expression_list): Add
	want_literal_zero_p argument, if true, for literal zeros
	insert INTEGER_CSTs with LITERAL_ZERO_P flag set.
	(cp_parser_postfix_expression): Adjust
	cp_parser_parenthesized_expression_list caller, handle
	(literal_zeros): New variable.

2014-07-13  Jason Merrill  <>

	PR c++/58511
	* semantics.c (is_instantiation_of_constexpr): Return true for
	defaulted functions, too.
	(explain_invalid_constexpr_fn): Only use
	explain_implicit_non_constexpr if !DECL_DECLARED_CONSTEXPR_P.
	* method.c (explain_implicit_non_constexpr): Pass
	DECL_INHERITED_CTOR_BASE to explain_implicit_non_constexpr.

	PR c++/58611
	* decl.c (check_initializer): Don't finish_compound_literal
	on erroneous constexpr init.

	PR c++/58612
	* tree.c (bot_replace): Only replace a dummy 'this' parm.

	PR c++/60628
	* decl.c (create_array_type_for_decl): Only check for auto once.

	PR c++/58636
	* call.c (build_list_conv): Don't try to build a list of references.

2014-07-13  Edward Smith-Rowland  <>

	PR C++/60209 - Declaration of user-defined literal operator cause error
	* parser.c (cp_parser_operator): Fold treatment of strings
	and user-defined string literals.  Use the full string parser.
	(cp_parser_string_literal): Add flag to not look for literal operator.

2014-07-11  Jason Merrill  <>

	PR c++/22434
	PR c++/61288
	* call.c (build_conditional_expr_1): Avoid reading freed memory.

2014-07-11  Paolo Carlini  <>

	PR c++/53159
	* call.c (build_user_type_conversion_1): Copy LOOKUP_NO_NARROWING
	into convflags.
	* decl.c (check_initializer): Don't call check_narrowing here,
	* typeck2.c (digest_init_r): Likewise.

2014-07-10  Jason Merrill  <>

	PR c++/61661
	* semantics.c (reduced_constant_expression_p): Handle CONSTRUCTOR.

	PR c++/61659
	PR c++/61687
	* decl2.c (mark_all_virtuals): New variable.
	(maybe_emit_vtables): Check it instead of flag_devirtualize.
	(cp_write_global_declarations): Set it and give helpful diagnostic
	if it introduces errors.
	* class.c (finish_struct_1): Check it.
	* decl.c (grokdeclarator): Clear virtualp after 'virtual auto' error.

2014-07-09  Paolo Carlini  <>

	PR c++/60686
	* decl.c (grokdeclarator): Adjust error messages about 'explicit'
	outside class declaration, in friend declaration, and neither on
	constructor nor conversion operator.

2014-07-09  Paolo Carlini  <>

	DR 1584
	PR c++/57466
	* pt.c (check_cv_quals_for_unify): Implement resolution, disregard
	cv-qualifiers of function types.

2014-07-09  Andrew Sutton  <>
	    Paolo Carlini  <>

	PR c++/59361
	* parser.c (cp_parser_tokens_start_cast_expression): Return 0 for

2014-07-07  Paolo Carlini  <>

	* class.c (check_for_override): Wrap the 'final' and 'override'
	keywords in %< and %>.

2014-07-06  Marek Polacek  <>

	PR c/6940
	* cp-tree.h (DECL_ARRAY_PARAMETER_P): Define.
	* decl.c (grokdeclarator): Set DECL_ARRAY_PARAMETER_P.
	* typeck.c (cxx_sizeof_expr): Warn when using sizeof on an array
	function parameter.

2014-07-02  Paolo Carlini  <>

	* pt.c (convert_template_argument): Use inform instead of error in
	three places.

2014-06-30  Edward Smith-Rowland  <>

	PR c++/58781
	PR c++/60249
	PR c++/59867
	* parser.c (cp_parser_userdef_string_literal): Take a tree
	not a cp_token*.
	(cp_parser_string_literal): Don't hack the token stream.

2014-06-30  Jason Merrill  <>

	PR c++/61659
	PR lto/53808
	* decl2.c (maybe_emit_vtables): Mark all vtable entries if
	* init.c (build_vtbl_address): Don't mark destructor.
	* class.c (finish_struct_1): Add all classes to keyed_classes
	if devirtualizing.

	PR c++/61647
	* pt.c (type_dependent_expression_p): Check BASELINK_OPTYPE.

	PR c++/61566
	* mangle.c (decl_mangling_context): Look through a TEMPLATE_DECL.

	* decl.c (build_ptrmemfunc_type): Don't give a PMF RECORD_TYPE
	* typeck.c (build_ptrmemfunc_access_expr): Don't use lookup_member.
	* pt.c (unify): Also check whether the argument is a PMF.

2014-06-30  Paolo Carlini  <>

	PR c++/54891
	* parser.c (cp_parser_tokens_start_cast_expression): In C++11
	a '[' can also start a primary-expression.
	(cp_parser_cast_expression): Parse a cast-expression only tentatively
	when cp_parser_tokens_start_cast_expression returns -1.

2014-06-30  Jason Merrill  <>

	PR c++/61539
	* pt.c (unify_one_argument): Type/expression mismatch just causes
	deduction failure.

	* semantics.c (simplify_aggr_init_expr): Remove remnants of
	2014-04-11 change.

2014-06-30  Marek Polacek  <>

	* cp-gimplify.c (cp_genericize): Don't instrument returns if the
	function has no_sanitize_undefined attribute.
	* decl.c (compute_array_index_type): Don't instrument VLAs if the
	function has no_sanitize_undefined attribute.

2014-06-30  Igor Zamyatin  <>

	PR middle-end/57541
	* cp-array-notation.c (expand_sec_reduce_builtin):
	Check that bultin argument is correct.
	* call.c (build_cxx_call): Check for 0 arguments in builtin call.

2014-06-28  Jonathan Wakely  <>

	DR 1579
	PR c++/58051
	* typeck.c (check_return_expr): Lookup as an rvalue even when the
	types aren't the same.

2014-06-27  Jason Merrill  <>

	PR c++/61433
	* error.c (dump_template_bindings): Don't tsubst in a clone.

2014-06-27  Paolo Carlini  <>

	PR c++/61614
	* semantics.c (finish_compound_literal): Revert r204228.

2014-06-27  Paolo Carlini  <>

	* parser.c (cp_parser_compound_literal_p): New.
	(cp_parser_postfix_expression, cp_parser_sizeof_operand): Use it.

2014-06-26  Jason Merrill  <>

	* parser.c (cp_parser_for_init_statement): Change range-for error
	to pedwarn.

	N3994 Ranged-based for-loops: The Next Generation
	* parser.c (cp_lexer_nth_token_is): New.
	(cp_parser_for_init_statement): Allow "for (id : init)".

2014-06-26  Teresa Johnson  <>

	* class.c (dump_class_hierarchy): Use saved dump files.
	(dump_vtable): Ditto.
	(dump_vtt): Ditto.

2014-06-26  Adam Butcher  <>

	PR c++/61537
	* parser.c (cp_parser_elaborated_type_specifier): Only consider template
	parameter lists outside of function parameter scope.

2014-06-25  Paolo Carlini  <>

	DR 178
	PR c++/49132
	* typeck2.c (process_init_constructor_record): Do not complain about
	uninitialized const members, because within aggregate-initialization,
	members without explicit initializers are value-initialized.

2014-06-25  Jakub Jelinek  <>

	* semantics.c (finish_omp_clauses): Make sure
	OMP_CLAUSE_LINEAR_STEP has correct type.

2014-06-24  Jan Hubicka  <>

	* class.c (check_methods, create_vtable_ptr, determine_key_method,
	add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by
	* cp-tree.h (lang_decl_ns): Add ns_using and ns_users.

2014-06-24  Paolo Carlini  <>

	PR c++/33972
	* decl.c (grokdeclarator): Do not early check for operator-function-id
	as non-function.

2014-06-24  Trevor Saunders  <>

	* class.c, semantics.c, tree.c, vtable-class-hierarchy.c:

2014-06-24  Jakub Jelinek  <>

	* parser.c (cp_parser_omp_for_loop): For
	#pragma omp parallel for simd move lastprivate clause from parallel
	to for rather than simd.

2014-06-23  Paolo Carlini  <>

	DR 577
	PR c++/33101
	* decl.c (grokparms): Accept a single parameter of type 'void'.

2014-06-20  Jason Merrill  <>

	PR c++/59296
	* call.c (add_function_candidate): Avoid special 'this' handling
	if we have a ref-qualifier.

	PR c++/61556
	* call.c (build_over_call): Call build_this in template path.

2014-06-19  Jason Merrill  <>

	PR c++/59296
	* call.c (add_function_candidate): Also set LOOKUP_NO_TEMP_BIND.

2014-06-18  Jason Merrill  <>

	PR c++/59296
	* call.c (add_function_candidate): Set LOOKUP_NO_RVAL_BIND for
	ref-qualifier handling.

	PR c++/61507
	* pt.c (resolve_overloaded_unification): Preserve

2014-06-18  Jakub Jelinek  <>

	* cp-gimplify.c (cxx_omp_finish_clause): Add a gimple_seq *
	* cp-tree.h (cxx_omp_finish_clause): Adjust prototype.

2014-06-17  Jason Merrill  <>

	PR c++/60605
	* pt.c (check_default_tmpl_args): Check DECL_LOCAL_FUNCTION_P.

2014-06-15  Jason Merrill  <>

	PR c++/61488
	* pt.c (check_valid_ptrmem_cst_expr): Fix for template context.

	PR c++/61500
	* tree.c (lvalue_kind): Handle MEMBER_REF and DOTSTAR_EXPR.

2014-06-15  Jan Hubicka  <>

	* decl.c (grokvardecl): Fix pasto in previous patch.

2014-06-15  Jan Hubicka  <>

	* decl.c (duplicate_decls): Use set_decl_tls_model.
	(grokdeclarator): Likewise.
	* semantics.c (finish_id_expression): Check TLS only for
	static variables.
	(finish_omp_threadprivate): Use decl_default_tls_model.
	* decl2.c (get_guard): Likewise.
	* call.c (make_temporary_var_for_ref_to_temp): Likewise.

2014-06-14  Paolo Carlini  <>

	PR c++/33101
	* decl.c (grokparms): Improve error message about void parameters.
	* error.c (type_to_string): Fix aka cut off code.

2014-06-12  Jason Merrill  <>

	* call.c (convert_arg_to_ellipsis): Use abi_version_crosses.
	* cvt.c (type_promotes_to): Likewise.
	* mangle.c (write_type, write_expression): Likewise.
	(write_name, write_template_arg): Likewise.
	(mangle_decl): Make alias based on flag_abi_compat_version.
	Emit -Wabi warning here.
	(finish_mangling_internal): Not here.  Drop warn parm.
	(finish_mangling_get_identifier, finish_mangling): Adjust.
	(mangle_type_string, mangle_special_for_type): Adjust.
	(mangle_ctor_vtbl_for_type, mangle_thunk): Adjust.
	(mangle_guard_variable, mangle_tls_init_fn): Adjust.
	(mangle_tls_wrapper_fn, mangle_ref_init_variable): Adjust.

	* call.c (build_operator_new_call): Remove -fabi-version=1 support.
	* class.c (walk_subobject_offsets, include_empty_classes): Likewise.
	(layout_nonempty_base_or_field, end_of_class): Likewise.
	(layout_empty_base, build_base_field, layout_class_type): Likewise.
	(is_empty_class, add_vcall_offset_vtbl_entries_1): Likewise.
	(layout_virtual_bases): Likewise.
	* decl.c (compute_array_index_type): Likewise.
	* mangle.c (write_mangled_name, write_prefix): Likewise.
	(write_template_prefix, write_integer_cst, write_expression): Likewise.
	(write_template_arg, write_array_type): Likewise.
	* method.c (lazily_declare_fn): Likewise.
	* rtti.c (get_pseudo_ti_index): Likewise.
	* typeck.c (comp_array_types): Likewise.

2014-06-11  Jan Hubicka  <>

	* vtable-class-hierarchy.c: Update handling for section names
	that are no longer trees.
	* decl.c (duplicate_decls): Likewise.

2014-06-11  Paolo Carlini  <>

	PR c++/19200
	* parser.c (cp_parser_init_declarator): Actually pass friend_p
	to cp_parser_declarator.

2014-06-11  Paolo Carlini  <>

	PR c++/60265
	* parser.c (cp_parser_using_declaration): Handle unscoped enums.
	* name-lookup.c (validate_nonmember_using_decl): Adjust error

2014-06-11  Paolo Carlini  <>

	PR c++/19200
	* parser.c (cp_parser_declarator): Add bool parameter.
	(cp_parser_direct_declarator): Likewise, use it.
	(cp_parser_member_declaration): Pass friend_p to cp_parser_declarator.
	(cp_parser_condition, cp_parser_explicit_instantiation,
	cp_parser_init_declarator, cp_parser_type_id_1,
	cp_parser_parameter_declaration, cp_parser_exception_declaration,
	cp_parser_cache_defarg, cp_parser_objc_class_ivars,
	cp_parser_objc_struct_declaration, cp_parser_omp_for_loop_init):
	* decl.c (grokdeclarator): Fix handling of friend declared in
	namespace scope (g++.dg/parse/friend10.C).

2014-06-10  Jan Hubicka  <>

	* vtable-class-hierarchy.c: Use symtab_get_node (var_decl)
	* optimize.c (cdtor_comdat_group): Fix handling of aliases.
	(maybe_clone_body): Move symbol across comdat groups.
	* method.c (use_thunk): Copy implicit section flag.

2014-06-09  Paolo Carlini  <>

	PR c++/22556
	* name-lookup.c (pushdecl_maybe_friend_1): Use comptypes.

2014-06-07  Jan Hubicka  <>

	* method.c (use_thunk): Use set_decl_section_name.
	* optimize.c (maybe_clone_body): Use set_decl_section_name.
	* decl.c (duplicate_decls): Likewise.
	* vtable-class-hierarchy.c: Likewise.

2014-06-06  Paolo Carlini  <>

	PR c++/60184
	* class.c (check_field_decls): In C++11 mode do not reject
	static data members and reference-type members in unions.

2014-06-05  Jason Merrill  <>

	PR c++/43453
	* decl.c (check_initializer): Collapse a TREE_LIST here.
	* typeck2.c (store_init_value): Not here.

2014-06-05  Richard Biener  <>
	    Paolo Carlini  <>

	PR c++/56961
	* cp-gimplify.c (cp_gimplify_expr, [MODIFY_EXPR]): Rework
	handling of empty classes.

2014-06-04  Jason Merrill  <>

	* parser.c (cp_parser_diagnose_invalid_type_name): Give helpful note
	for noexcept and thread_local, too.

	PR c++/61343
	* decl.c (check_initializer): Maybe clear

2014-06-05  Richard Biener  <>

	PR c++/61004
	* typeck.c (cp_build_indirect_ref): Do not emit strict-aliasing
	warnings for accessing empty classes.

2014-06-05  Marek Polacek  <>

	PR c/49706
	* parser.c (cp_parser_binary_expression): Warn when logical not is
	used on the left hand side operand of a comparison.

2014-06-04  Paolo Carlini  <>

	PR c++/43453
	* typeck.c (cp_build_modify_expr): Handle array of characters
	initialized by a string literal.
	* decl.c (check_initializer): Handle parenthesized string literal
	as initializer.
	* typeck2.c (store_init_value): Remove redundant check.

2014-06-04  Jason Merrill  <>

	PR c++/51253
	PR c++/61382
	* cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPR_LIST_INIT_P here.
	* semantics.c (simplify_aggr_init_expr): Not here, just copy it.

2014-06-04  Igor Zamyatin  <>

	PR c/58942
	* cp-array-notation.c (expand_sec_reduce_builtin): Handle the case
	with a pointer.

2014-06-03  Paolo Carlini  <>

	DR 1423
	PR c++/52174
	* call.c (standard_conversion): Convert nullptr to bool only
	in case of direct-initialization.
	(convert_like_real): Provide informative error message.

2014-06-03  Marek Polacek  <>

	PR c/60439
	* semantics.c (finish_switch_cond): Warn if switch condition has
	boolean value.

2014-06-03  Jason Merrill  <>

	PR c++/60992
	* pt.c (tsubst_copy) [VAR_DECL]: Try lookup first.  Add a new
	variable to local_specializations.

	PR c++/60848
	* call.c (is_std_init_list): Check CLASSTYPE_TEMPLATE_INFO.

2014-06-02  Jason Merrill  <>

	PR c++/61046
	* decl.c (reshape_init_class): Handle un-folded

	PR c++/61134
	* pt.c (pack_deducible_p): Handle canonicalization.

2014-06-02  Paolo Carlini  <>

	* pt.c (tsubst_function_type): Initialize arg_types.

2014-06-02  Siva Chandra Reddy  <>

        PR debug/57519
        * class.c (handle_using_decl): Pass the correct scope to

2014-06-02  Ville Voutilainen  <>

	PR c++/59483
	PR c++/61148
	* search.c (accessible_p): Use current_nonlambda_class_type.
	* semantics.c (check_accessibility_of_qualified_id): Likewise.

2014-06-02  Andrew MacLeod  <>

	* decl.c: Include builtins.h.
	* semantics.c: Likewise.

2014-05-31  Paolo Carlini  <>

	DR 1227
	PR c++/57543
	* cp-tree.h (TYPE_HAS_LATE_RETURN_TYPE): Add.
	* pt.c (tsubst_function_type): Inject the this parameter; do the
	substitutions in the order mandated by the DR.
	(copy_default_args_to_explicit_spec): Copy TYPE_HAS_LATE_RETURN_TYPE.
	* decl.c (grokdeclarator): Maybe set TYPE_HAS_LATE_RETURN_TYPE.
	(static_fn_type): Copy it.
	* decl2.c (build_memfn_type, change_return_type,
	cp_reconstruct_complex_type): Likewise.
	* parser.c (cp_parser_lambda_declarator_opt): Likewise.
	* tree.c (strip_typedefs): Likewise.
	* typeck.c (merge_types): Likewise.

2014-05-30  Jason Merrill  <>

	PR c++/56947
	* pt.c (instantiate_decl): Check that defer_ok is not set for
	local class members.

	PR c++/60992
	* pt.c (tsubst_init): Split out from...
	(tsubst_expr) [DECL_EXPR]: Here.
	(tsubst_copy) [VAR_DECL]: Use it.
	* semantics.c (finish_id_expression): Return the decl for static/const.

2014-05-28  Jason Merrill  <>

	PR c++/47202
	* decl.c (cxx_comdat_group): Return a decl.
	* optimize.c (cdtor_comdat_group): Get its DECL_ASSEMBLER_NAME.

	* pt.c (tsubst) [ARRAY_TYPE]: Check for array of array of unknown

	PR c++/61242
	* call.c (build_aggr_conv): Ignore passed in flags.
	(build_array_conv, build_complex_conv): Likewise.

2014-05-23  Jan Hubicka  <>

	* optimize.c (maybe_thunk_body): Use set_comdat_group.
	(maybe_clone_body): Likewise.
	* decl.c (duplicate_decls): Update code duplicating comdat group;
	do not copy symtab pointer; before freeing newdecl remove it
	from symtab.
	* decl2.c (constrain_visibility): Use set_comdat_group.

2014-05-23  Jan Hubicka  <>

	* rtti.c: Include tm_p.h
	(emit_tinfo_decl): Force RTTI data to be aligned to required
	ABI alignment only.

2014-05-23  Jan Hubicka  <>

	* class.c (build_vtable): Align vtables to TARGET_VTABLE_ENTRY_ALIGN
	ignoring other target adjustments.

2014-05-23  Thomas Schwinge  <>

	* semantics.c (finish_omp_clauses): Remove duplicated variable

	* parser.c (cp_parser_omp_target): Return bool values.

2014-05-22  Paolo Carlini  <>

	PR c++/61088
	* lambda.c (add_capture): Enforce that capture by value requires
	complete type.
	* typeck2.c (cxx_incomplete_type_inform): Early return if
	TYPE_MAIN_DECL is null.

2014-05-21  Jonathan Wakely  <>

	PR c/61271
	* cp-array-notation.c (cilkplus_an_triplet_types_ok_p): Fix condition.

2014-05-21  Ville Voutilainen  <>

	PR c++/61133
	* lambda.c (build_capture_proxy, add_capture): Treat normal
	captures and init-captures identically.

2014-05-21  Mark Wielaard  <>

	PR debug/16063
	* cp-lang.c (cxx_enum_underlying_base_type): New function.

2014-05-21  Richard Sandiford  <>

	* cvt.c (convert_to_void): Use void_node instead of void_zero_node.
	* cp-array-notation.c (replace_invariant_exprs): Likewise.
	(expand_array_notation): Handle VOID_CST.
	* error.c (dump_expr): Likewise.
	* cxx-pretty-print.c (cxx_pretty_printer::primary_expression)
	(cxx_pretty_printer::expression): Likewise.
	(pp_cxx_new_expression): Use void_node instead of void_zero_node.
	* decl.c (register_dtor_fn): Likewise.
	* init.c (build_raw_new_expr, build_new_1, build_vec_init)
	(build_delete, push_base_cleanups): Likewise.
	* mangle.c (write_expression): Likewise.
	* semantics.c (finish_break_stmt, empty_expr_stmt_p): Likewise.
	* pt.c (tsubst_decl, tsubst_copy_and_build): Likewise.
	(tsubst, tsubst_copy, build_non_dependent_expr): Handle VOID_CST.
	* tree.c (cp_tree_equal): Likewise.
	(build_dummy_object, is_dummy_object, stabilize_expr): Use void_node
	instead of void_zero_node.
	* typeck.c (check_return_expr): Likewise.
	* typeck2.c (build_functional_cast): Likewise.

2014-05-21  Igor Zamyatin  <>

	PR c/60189
	* parser.c (cp_parser_postfix_expression): Move handling of cilk_sync
	from here to...
	(cp_parser_statement): Make sure only semicolon can go after

2014-05-20  Paolo Carlini  <>

	PR c++/58753
	PR c++/58930
	PR c++/58704
	* typeck2.c (digest_nsdmi_init): New.
	* parser.c (cp_parser_late_parse_one_default_arg): Use it.
	* init.c (get_nsdmi): Likewise.
	* cp-tree.h (digest_nsdmi_init): Declare.

2014-05-20  Jason Merrill  <>

	* typeck.c (get_member_function_from_ptrfunc): Don't try to look
	up a virtual function in a dummy object.

2014-05-20  Paolo Carlini  <>

	PR c++/60373
	* decl.c (duplicate_decls): Replace pair of warning_at with
	warning_at + inform.
	(maybe_commonize_var): Likewise.

2014-05-20  Richard Sandiford  <>

	PR bootstrap/61210
	* pt.c (tsubst_copy, tsubst_omp_for_iterator, tsubst_expr)
	(tsubst_copy_and_build): Perform recursive substitutions in a
	deterministic order.

2014-05-20  Paolo Carlini  <>

	PR c++/58664
	* typeck2.c (cxx_incomplete_type_inform): New.
	(cxx_incomplete_type_diagnostic): Use it.
	* decl.c (grokdeclarator): Check the element type of an
	incomplete array type; call the above.
	* cp-tree.h (cxx_incomplete_type_inform): Declare.

2014-05-19  Jason Merrill  <>

	PR c++/58761
	* pt.c (tsubst_copy): Don't check at_function_scope_p.
	(instantiate_class_template_1): Don't push_to_top_level in an nsdmi.

2014-05-19  Paolo Carlini  <>

	* typeck2.c (cxx_incomplete_type_diagnostic): Use inform.
	* parser.c (cp_parser_enum_specifier): Likewise.

2014-05-17  Trevor Saunders  <>

	* class.c (sorted_fields_type_new): Adjust.
	* cp-cilkplus.c (cilk_install_body_with_frame_cleanup): Likewise.
	* cp-objcp-common.c (decl_shadowed_for_var_insert): Likewise.
	* cp-tree.h: Remove usage of variable_size gty attribute.
	* decl.c (make_label_decl): Adjust.
	(check_goto): Likewise.
	(start_preparsed_function): Likewise.
	(save_function_data): Likewise.
	* lex.c (init_reswords): Likewise.
	(retrofit_lang_decl): Likewise.
	(cxx_dup_lang_specific_decl): Likewise.
	(copy_lang_type): Likewise.
	(cxx_make_type): Likewise.
	* name-lookup.c (binding_entry_make): Likewise.
	(binding_table_construct): Likewise.
	(binding_table_new): Likewise.
	(cxx_binding_make): Likewise.
	(pushdecl_maybe_friend_1): Likewise.
	(begin_scope): Likewise.
	(push_to_top_level): Likewise.
	* parser.c (cp_lexer_alloc): Likewise.
	(cp_lexer_new_from_tokens): Likewise.
	(cp_token_cache_new): Likewise.
	(cp_parser_context_new): Likewise.
	(cp_parser_new): Likewise.
	(cp_parser_nested_name_specifier_opt): Likewise.
	(cp_parser_template_id): Likewise.
	* pt.c (maybe_process_partial_specialization): Likewise.
	(register_specialization): Likewise.
	(add_pending_template): Likewise.
	(lookup_template_class_1): Likewise.
	(push_tinst_level): Likewise.
	* semantics.c (register_constexpr_fundef): Likewise.
	(cxx_eval_call_expression): Likewise.
	* typeck2.c (abstract_virtuals_error_sfinae): Likewise.

2014-05-16  Paolo Carlini  <>

	PR c++/51640
	* parser.c (cp_parser_diagnose_invalid_type_name): Early return
	when cp_parser_lookup_name sets ambiguous_decls.

2014-05-15  Jason Merrill  <>

	* call.c (print_conversion_rejection): Use loc consistently.

2014-05-14  Paolo Carlini  <>

	* cp-tree.h (DIRECT_LIST_INIT_P): Add.
	* call.c (convert_like_real, build_new_method_call_1): Use it.
	* decl2.c (grokfield): Likewise.
	* init.c (perform_member_init, build_aggr_init, expand_default_init,
	build_new_1): Likewise.
	* mangle.c (write_expression): Likewise.
	* parser.c (cp_parser_late_parse_one_default_arg): Likewise.

2014-05-14  Jason Merrill  <>

	PR c++/20332
	PR c++/21631
	* call.c (reference_binding): Treat lvalue/rvalue mismatch and
	dropped cv-quals as a bad conversion.
	(convert_like_real) [ck_ref_bind]: Explain them.
	(compare_ics): Check badness before stripping reference
	bindings.  Handle comparing bad reference bindings.
	* typeck.c (comp_cv_qualification): Add overload that just takes
	* cp-tree.h: Declare it.

	* call.c (struct conversion_info): Rename 'from_type' to 'from'.
	(arg_conversion_rejection, bad_arg_conversion_rejection)
	(explicit_conversion_rejection, template_conversion_rejection): Adjust.
	(add_function_candidate): Pass actual argument, rather than type, to
	(print_conversion_rejection): Explain what's wrong with the conversion.
	(print_z_candidates): Say "candidate:" before each candidate.
	(splice_viable): Be strict if we see a viable or template candidate.
	(build_user_type_conversion_1): Pass false to strict parameter.
	(perform_overload_resolution, build_conditional_expr_1): Likewise.
	(build_new_op_1, build_new_method_call_1): Likewise.
	(build_op_call_1): Pass true to strict parameter.

2014-05-13  Jason Merrill  <>

	* call.c (print_error_for_call_failure): Say "no match" rather
	than "ambiguous" if there were no strict matches.
	(build_new_method_call_1): Likewise.

	PR c++/61151
	* semantics.c (is_this_parameter): Allow capture proxies too.

2014-05-12  Jason Merrill  <>

	* call.c (maybe_print_user_conv_context): New.
	(convert_like_real): Use it.  Print call context for bad
	user-defined conversion.
	(build_over_call): Print call context for bad 'this' conversion.

	* call.c (convert_like_real): Use inform for identifying the
	declaration point.

2014-05-12  Paolo Carlini  <>

	* cvt.c (cp_convert_to_pointer): Don't call error_at if
	complain & tf_error is false.

	* decl.c (make_unbound_class_template): Prefer inform for
	"declared here"-type message.

2014-05-09  Momchil Velikov  <>

	PR c++/60463
	PR c++/60755
	* lambda.c (lambda_expr_this_capture): Add new parameter
	add_capture_p controlling whether the functions will try to
	capture 'this' via the default capture.
	(maybe_resolve_dummy): Likewise.
	* cp-tree.h: Adjust prototypes.
	* call.c, semantics.c: Change callers of these functions.
	* call.c (build_new_method_call_1): Use the actual 'this' that
	would be potentially captured for the overload resolution, instead
	of the dummy object.

2014-05-09  Paolo Carlini  <>

	* pt.c (convert_nontype_argument_function): Add tsubst_flags_t
	(convert_nontype_argument): Adjust calls.
	(coerce_template_parameter_pack): Add missing complain & tf_error

2014-05-09  Jason Merrill  <>

	DR 587
	PR c++/51317
	* call.c (build_conditional_expr_1, conditional_conversion): Handle
	non-class lvalues and xvalues that differ only in cv-qualifiers.

	DR 5
	PR c++/60019
	* call.c (build_user_type_conversion_1): The copy-init temporary
	is cv-unqualified.

	PR c++/58714
	* tree.c (stabilize_expr): A stabilized prvalue is an xvalue.

	PR c++/54348
	* call.c (build_conditional_expr_1): If overload resolution finds
	no match, just say "different types".

	PR c++/32019
	* call.c (build_conditional_expr_1): Improve ambiguity diagnostic.

	PR c++/22434
	* call.c (build_conditional_expr_1): Don't try to pool cv-quals
	if we didn't find a conversion.
	Don't accept a bad conversion too early.

2014-05-08  Paolo Carlini  <>

	PR c++/13981
	* typeck.c (convert_for_assignment): Provide an inform for pointers
	to incomplete class types.

2014-05-07  Paolo Carlini  <>

	PR c++/61083
	* pt.c (convert_nontype_argument): Protect all the error calls
	with complain & tf_error.

2014-05-07  Paolo Carlini  <>

	PR c++/61080
	* pt.c (instantiate_decl): Avoid generating the body of a
	deleted function.

2014-05-06  Paolo Carlini  <>

	PR c++/60999
	* pt.c (maybe_begin_member_template_processing): Use

2014-05-06  Kenneth Zadeck  <>
	    Mike Stump  <>
	    Richard Sandiford  <>

	* call.c: Include wide-int.h.
	(type_passed_as): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
	(convert_for_arg_passing): Likewise.
	* class.c: Include wide-int.h.
	(walk_subobject_offsets): Use tree_int_cst_lt instead of INT_CST_LT.
	(end_of_class): Use tree_int_cst_lt instead of INT_CST_LT_UNSIGNED.
	(include_empty_classes): Likewise
	(layout_class_type): Use tree_int_cst_lt instead of INT_CST_LT.
	* cvt.c: Include wide-int.h.
	(ignore_overflows): Use wide_int_to_tree.
	* decl.c: Include wide-int.h.
	(check_array_designated_initializer): Use wide-int interfaces.
	(compute_array_index_type): Use tree_int_cst_lt instead of INT_CST_LT.
	(finish_enum_value_list): Use signop.
	(build_enumerator): Use wide-int interfaces.
	* init.c: Include wide-int.h.
	(build_new_1): Use wide-int interfaces.
	* mangle.c: Include wide-int.h.
	(write_integer_cst): Use wide-int interfaces.
	(write_array_type): Likewise.
	* tree.c: Include wide-int.h.
	(cp_tree_equal): Use tree_int_cst_equal.
	* typeck2.c: Include wide-int.h.
	(process_init_constructor_array): Use wide-int interfaces.

2014-05-03  Paolo Carlini  <>

	PR c++/58582
	* decl.c (grokfndecl): Check duplicate_decls return value for
	* pt.c (instantiate_decl): A deleted function is defined.

2014-05-02  Jason Merrill  <>

	* decl2.c (vague_linkage_p): Local statics have vague linkage.

	PR c++/60992
	* lambda.c (lambda_capture_field_type): Wrap anything dependent
	other than 'this'.
	(add_capture): Check for VLA before calling it.
	* semantics.c (is_this_parameter): Accept any 'this' parameter, not
	just the current one.  Make non-static.
	* cp-tree.h: Declare it.
	* pt.c (tsubst_copy) [VAR_DECL]: Also build a new VAR_DECL if
	the operand was static or constant.

2014-05-02  Marek Polacek  <>

	* typeck.c (maybe_warn_about_returning_address_of_local): Separate
	warning_at calls.

2014-05-01  Marek Polacek  <>

	PR c/43395
	* typeck.c (maybe_warn_about_returning_address_of_local): Distinguish
	between label and variable when warning about returning local address.

2014-04-30  Jason Merrill  <>

	PR c++/60980
	* init.c (build_value_init): Don't try to call an array constructor.

	PR c++/60951
	* typeck2.c (massage_init_elt): Use maybe_constant_init.

2014-04-30  Marek Polacek  <>

	* typeck.c (cp_build_binary_op): Call ubsan_instrument_division
	even when SANITIZE_FLOAT_DIVIDE is on.  Set doing_div_or_mod even
	for non-integer types.

2014-04-29  Jason Merrill  <>

	DR 1351
	Represent the unevaluated exception specification of an implicitly
	declared or deleted function with a simple placeholder, not a list
	of functions.
	* except.c (unevaluated_noexcept_spec): New.
	* class.c (deduce_noexcept_on_destructor): Use it.
	* decl.c (check_redeclaration_exception_specification): Call
	(duplicate_decls): Call it before merge_types.
	(start_preparsed_function): Call maybe_instantiate_noexcept.
	* decl2.c (mark_used): Call maybe_instantiate_noexcept earlier.
	* init.c (get_nsdmi): Factor out of perform_member_init.
	* method.c (process_subob_fn): Call maybe_instantiate_noexcept.
	(walk_field_subobs): Consider NSDMI for EH spec.
	(get_defaulted_eh_spec): New.
	(implicitly_declare_fn): Use unevaluated_noexcept_spec.
	(defaulted_late_check): Defer EH checking in non-template classes.
	(after_nsdmi_defaulted_late_checks): New.
	* parser.c (cp_parser_class_specifier_1): Use it.
	(unparsed_classes): New macro.
	* parser.h (cp_unparsed_functions_entry_d): Add classes field.
	* pt.c (maybe_instantiate_noexcept): Use get_defaulted_eh_spec.
	Remove list-of-functions handling.
	* typeck2.c (merge_exception_specifiers): Remove list-of-functions
	handling and FN parameter.
	* typeck.c (merge_types): Adjust.

2014-04-28  Paolo Carlini  <>

	PR c++/59120
	* parser.c (cp_parser_alias_declaration): Check return value of

2014-04-24  Jakub Jelinek  <>

	* parser.c (cp_parser_omp_atomic): Allow seq_cst before
	atomic-clause, allow comma in between atomic-clause and

2014-04-24  Marc Glisse  <>

	PR libstdc++/43622
	* rtti.c (emit_support_tinfos): Do not iterate on
	registered_builtin_types (partial revert).

2014-04-23 Dinar Temirbulatov  <>

	PR c++/57958
	* semantics.c (apply_deduced_return_type): Complete non-void type
	before estimating whether the type is aggregate.

2014-04-22  Marc Glisse  <>

	PR libstdc++/43622
	* rtti.c (emit_support_tinfo_1): New function, extracted from
	(emit_support_tinfos): Call it and iterate on registered_builtin_types.

2014-04-22  Jakub Jelinek  <>

	PR c/59073
	* parser.c (cp_parser_omp_parallel): If cp_parser_omp_for
	fails, don't set OM_PARALLEL_COMBINED and return NULL.

2014-04-18  Jason Merrill  <>

	DR 1571
	* call.c (reference_binding): Recurse on user-defined conversion.

	PR c++/60872
	* call.c (standard_conversion): Don't try to apply restrict to void.

2014-04-16  Marc Glisse  <>

	* decl.c (reshape_init_r): Handle a single element of vector type.

2014-04-16  Patrick Palka  <>

	PR c++/60765
	* decl2.c (cplus_decl_attributes): Handle
	pointer-to-member-function declarations.

2014-04-16  Patrick Palka  <>

	PR c++/60764
	* call.c (build_user_type_coversion): Use build_dummy_object
	to create the placeholder object for a constructor method call.
	(build_special_member_call): Likewise.
	(build_over_call): Check for the placeholder object with
	(build_new_method_call_1): Likewise.  Don't attempt to resolve
	a dummy object for a constructor method call.

2014-04-16  Paul Pluzhnikov  <>

	PR c++/59295
	* friend.c (add_friend, make_friend_class): Move repeated friend
	warning under Wredundant_decls.

2014-04-15  Paolo Carlini  <>

	* decl.c (duplicate_decls): Remove redundant TYPE_NAME use.
	* name-lookup.c (pushdecl_maybe_friend_1): Likewise.
	(do_class_using_decl): Likewise.
	* mangle.c (dump_substitution_candidates): Use TYPE_NAME_STRING.

2014-04-15  Jakub Jelinek  <>

	PR plugins/59335
	* Make-lang.h (CP_PLUGIN_HEADERS): Add type-utils.h.

2014-04-14  Paolo Carlini  <>

	* cp-tree.h (TYPE_IDENTIFIER): Remove declaration.

2014-04-14  Paolo Carlini  <>

	* pt.c (mark_template_parm): Use template_parm_level_and_index.

2014-04-11  Jason Merrill  <>

	* parser.h (struct cp_token): Rename ambiguous_p to error_reported.
	* parser.c: Adjust.
	(cp_lexer_get_preprocessor_token): Always clear it.
	(cp_parser_lambda_expression): Use it to avoid duplicate diagnostics.

	DR 1467
	PR c++/51747
	* decl.c (reshape_init_r): Handle a single element of class type.

	DR 1338
	* decl.c (cxx_init_decl_processing): Set DECL_IS_MALLOC on
	built-in operator new.

2014-04-11  Paolo Carlini  <>

	PR c++/58600
	* name-lookup.c (parse_using_directive): Return early if the
	attribs argument is error_mark_node; use get_attribute_name.

2014-04-11  Jason Merrill  <>

	DR 1030
	PR c++/51253
	* cp-tree.h (CALL_EXPR_LIST_INIT_P): New.
	* call.c (struct z_candidate): Add flags field.
	(add_candidate): Add flags parm.
	(add_function_candidate, add_conv_candidate, build_builtin_candidate)
	(add_template_candidate_real): Pass it.
	(build_over_call): Set CALL_EXPR_LIST_INIT_P.
	* tree.c (build_aggr_init_expr): Copy it.
	* semantics.c (simplify_aggr_init_expr): Preevaluate args if it's set.

2014-04-10  Richard Biener  <>
	    Jakub Jelinek  <>

	PR ipa/60761
	* error.c (dump_decl) <case FUNCTION_DECL>: If
	recurse on DECL_ABSTRACT_ORIGIN instead of printing

2014-04-09  Fabien Chêne  <>

	* pt.c (check_template_variable): Check for the return of pedwarn
	before emitting a note.
	* parser.c (cp_parser_lambda_introducer): Likewise.

2014-04-08  Paolo Carlini  <>

	PR c++/59115
	* pt.c (process_template_parm): For an invalid non-type parameter
	only set TREE_TYPE to error_mark_node.
	(push_inline_template_parms_recursive, comp_template_parms,
	redeclare_class_template, coerce_template_template_parm,
	coerce_template_template_parms, unify): Use error_operand_p.

2014-04-08  Nathan Sidwell  <>

	* class.c (check_bases_and_members): Warn about non-virtual dtors
	in public bases only.  Check warn_ecpp before complaining about
	non-polymorphic bases.

2014-04-04  Fabien Chêne  <>

	* decl.c (duplicate_decls): Check for the return of warning_at
	before emitting a note.
	(warn_misplaced_attr_for_class_type): Likewise.
	(check_tag_decl): Likewise.

2014-04-04  Paolo Carlini  <>

	PR c++/58207
	* semantics.c (sort_constexpr_mem_initializers): Robustify loop.

2014-04-04  Patrick Palka  <>

	PR c++/44613
	* semantics.c (add_stmt): Set STATEMENT_LIST_HAS_LABEL.
	* decl.c (cp_finish_decl): Create a new BIND_EXPR before
	instantiating a variable-sized type.

	PR c++/21113
	* decl.c (decl_jump_unsafe): Consider variably-modified decls.

2014-04-04  Fabien Chêne  <>

	* class.c (find_abi_tags_r): Check for the return of warning
	before emitting a note.
	(one_inherited_ctor): Likewise.

2014-04-04  Fabien Chêne  <>

	* decl.c (duplicate_decls): Check for the return of permerror
	before emitting a note.

2014-04-03  Nathan Sidwell  <>

	* class.c (accessible_nvdtor_p): New.
	(check_bases): Don't check base destructor here ...
	(check_bases_and_members): ... check them here.  Trigger on
	Wnon-virtual-dtor flag.
	(finish_struct_1): Use accessible_nvdtor_p.

2014-04-01  Jason Merrill  <>

	* pt.c (process_partial_specialization): Say "not deducible"
	rather than "not used".  Use inform.

	PR c++/60374
	* pt.c (coerce_template_parms): Check that the pack expansion
	pattern works with the first matching parameter.

2014-04-01  Fabien Chêne  <>

	* init.c (perform_member_init): Homogenize uninitialized

2014-04-01  Jason Merrill  <>

	PR c++/60708
	* call.c (build_array_conv): Call complete_type.

	PR c++/60713
	* typeck2.c (PICFLAG_SIDE_EFFECTS): New.
	(picflag_from_initializer): Return it.
	(process_init_constructor): Handle it.

	PR c++/60642
	* decl2.c (is_late_template_attribute): Don't defer abi_tag.
	* mangle.c (write_unqualified_name): Fix abi_tag on templates.
	* pt.c (get_template_info): Handle NAMESPACE_DECL.
	(most_general_template): Handle more kinds of template.
	* tree.c (handle_abi_tag_attribute): Ignore abi_tag on template
	instantiations and specializations.

2014-03-31  Patrick Palka  <>

	PR c++/44859
	* typeck.c (maybe_warn_about_returning_address_of_local): Unwrap

2014-03-29  Adam Butcher  <>

	PR c++/60626
	* parser.c (cp_parser_init_declarator): Handle erroneous generic type
	usage in non-functions with pushed scope.

2014-03-28  Adam Butcher  <>

	PR c++/60573
	* name-lookup.h (cp_binding_level): New transient field defining_class_p
	to indicate whether a scope is in the process of defining a class.
	* semantics.c (begin_class_definition): Set defining_class_p.
	* name-lookup.c (leave_scope): Reset defining_class_p.
	* parser.c (synthesize_implicit_template_parm): Use cp_binding_level::
	defining_class_p rather than TYPE_BEING_DEFINED as the predicate for
	unwinding to class-defining scope to handle the erroneous definition of
	a generic function of an arbitrarily nested class within an enclosing

2014-03-26  Fabien Chêne  <>

	PR c++/52369
	* method.c (walk_field_subobs): Improve the diagnostic
	locations for both REFERENCE_TYPEs and non-static const members.
	* init.c (diagnose_uninitialized_cst_or_ref_member): Use %q#D
	instead of %qD to be consistent with the c++11 diagnostic.

2014-03-25  Jason Merrill  <>

	PR c++/60566
	PR c++/58678
	* class.c (build_vtbl_initializer): Handle abstract dtors here.
	* search.c (get_pure_virtuals): Not here.

	PR c++/60375
	* parser.c (cp_parser_lambda_expression): Don't parse the body of
	a lambda in unevaluated context.

	PR c++/60628
	* decl.c (create_array_type_for_decl): Complain about array of auto.

2014-03-25  Jakub Jelinek  <>

	PR c++/60331
	* semantics.c (potential_constant_expression_1): Handle

2014-03-24  Adam Butcher  <>

	PR c++/60627
	* parser.c (cp_parser_parameter_declaration_clause): Prevent 'auto' from
	introducing an implicit function template parameter within an explicit

2014-03-22  Jason Merrill  <>

	PR c++/60574
	* decl.c (grokdeclarator): Change permerror about 'virtual auto'
	to error.

2014-03-21  Paolo Carlini  <>

	PR c++/60384
	* name-lookup.c (push_class_level_binding_1): Check identifier_p
	on the name argument.

2014-03-20  Jakub Jelinek  <>

	PR c++/60572
	* init.c (build_zero_init_1): Ignore fields with error_mark_node

2014-03-19  Paolo Carlini  <>

	PR c++/51474
	* call.c (build_new_method_call_1): Handle pure virtuals called by
	NSDMIs too.

2014-03-17  Adam Butcher  <>

	PR c++/60390
	* parser.c (cp_parser_member_declaration): Don't allow
	finish_fully_implicit_template to consider friend declarations to be
	class member templates.
	(synthesize_implicit_template_parm): Handling winding back through class
	scope to the class being defined in order to inject a template argument

	PR c++/60391
	* parser.c (cp_parser_skip_to_end_of_block_or_statement): Unwind generic
	function scope as per cp_parser_skip_to_end_of_statement.

2014-03-17  Paolo Carlini  <>

	PR c++/59571
	* typeck2.c (check_narrowing): Use fold_non_dependent_expr_sfinae.

2014-03-14  Jason Merrill  <>

	PR c++/60532
	PR c++/58678
	* search.c (get_pure_virtuals): Handle abstract dtor here.
	(dfs_get_pure_virtuals): Not here.

	PR c++/58678
	* search.c (dfs_get_pure_virtuals): Treat the destructor of an
	abstract class as pure.

2014-03-13  Paolo Carlini  <>

	PR c++/60383
	* pt.c (maybe_process_partial_specialization): Check return value
	of check_specialization_namespace.

2014-03-13  Paolo Carlini  <>

	PR c++/60254
	* semantics.c (finish_static_assert): Call cxx_constant_value only
	if require_potential_rvalue_constant_expression returns true.

2014-03-11  Paolo Carlini  <>

	PR c++/60389
	* method.c (get_inherited_ctor): New.
	* cp-tree.h (get_inherited_ctor): Declare it.
	* semantics.c (is_valid_constexpr_fn): Use it.

2014-03-10  Jason Merrill  <>

	PR c++/60367
	* call.c (convert_default_arg): Remove special handling for

	PR c++/53492
	* parser.c (cp_parser_class_head): Also check PRIMARY_TEMPLATE_P
	when deciding whether to call push_template_decl for a member class.
	* pt.c (push_template_decl_real): Return after wrong levels error.

2014-03-08  Adam Butcher  <>

	PR c++/60033
	* pt.c (tsubst_copy): When retrieving a capture pack from a generic
	lambda, remove the lambda's own template argument list prior to fetching
	the specialization.

	PR c++/60393
	* parser.c (cp_parser_parameter_declaration_clause): Move generic
	function template unwinding on error into a more general location, ...
	(cp_parser_skip_to_end_of_statement): ... here.

2014-03-07  Jason Merrill  <>

	* (check_g++_parallelize): Split dg.exp.

	* parser.c (cp_parser_type_id_1): Only allow 'auto' in C++1y if
	we're in a trailing return type.

	* typeck.c (comp_template_parms_position): 'auto' and
	'decltype(auto)' are different from real template parms.

	* parser.c (cp_parser_using_declaration): Consume the semicolon
	after bare parameter pack error.

	* cp-tree.h (REF_PARENTHESIZED_P): New.
	* semantics.c (force_paren_expr): Set it.
	* pt.c (do_auto_deduction): Check it.
	(tsubst) [COMPONENT_REF]: Copy it.
	* typeck.c (maybe_warn_about_useless_cast): Don't strip dereference.

	* decl.c (create_array_type_for_decl): Only warn about invalid
	C++1y VLA if flag_iso or warn_vla>0.
	(grokdeclarator): Likewise.
	* pt.c (tsubst): Likewise.
	* semantics.c (finish_decltype_type): Likewise.
	* typeck.c (cxx_sizeof_or_alignof_type): Likewise.
	(cp_build_addr_expr_1): Likewise.
	* init.c (build_new_1): Improve diagnostics.

2014-03-07  Paolo Carlini  <>

	PR c++/58609
	* decl.c (check_initializer): Return NULL_TREE after error;
	consistently use inform.

2014-03-07  Paolo Carlini  <>

	* decl.c (check_initializer): Remove dead code.

2014-03-06  Marek Polacek  <>

	PR c/60197
	* typeck.c (check_return_expr): Call contains_cilk_spawn_stmt instead
	of checking tree code.

2014-03-06  Paolo Carlini  <>

	* parser.c (cp_lexer_set_source_position): New.
	(cp_parser_mem_initializer): Use it.
    	(cp_parser_postfix_open_square_expression): Likewise.
    	(cp_parser_parenthesized_expression_list): Likewise.
    	(cp_parser_new_initializer): Likewise.
    	(cp_parser_jump_statement): Likewise.
    	(cp_parser_initializer): Likewise.
    	(cp_parser_functional_cast): Likewise.

2014-03-05  Jason Merrill  <>

	PR c++/60409
	* semantics.c (force_paren_expr): Only add a PAREN_EXPR to a
	dependent expression.

	PR c++/60361
	* parser.c (cp_parser_template_id): Don't set up a CPP_TEMPLATE_ID
	if re-parsing might succeed.
	* semantics.c (finish_id_expression): Use of a parameter outside
	the function body is a parse error.

	* parser.c (cp_parser_mem_initializer): Set input_location
	properly for init-list warning.
	(cp_parser_postfix_open_square_expression): Likewise.
	(cp_parser_parenthesized_expression_list): Likewise.
	(cp_parser_new_initializer): Likewise.
	(cp_parser_jump_statement): Likewise.
	(cp_parser_initializer): Likewise.
	(cp_parser_functional_cast): Likewise.

2014-03-04  Jason Merrill  <>

	PR c++/60417
	* typeck2.c (process_init_constructor_record): Set
	CONSTRUCTOR_IS_DIRECT_INIT on {} for omitted initializers.

	PR c++/60415
	PR c++/54359
	* parser.c (cp_parser_direct_declarator): Set declarator to
	cp_error_declarator on invalid qualified-id.

2014-03-04  Paolo Carlini  <>

	PR c++/60376
	* parser.c (cp_parser_using_declaration): Early return when
	cp_parser_nested_name_specifier errors out.

2014-03-01  Adam Butcher  <>

	PR c++/60377
	* parser.c (cp_parser_parameter_declaration_clause): Unwind generic
	function scope on parse error in function parameter list.

2014-03-01  Paolo Carlini  <>

	* method.c (implicitly_declare_fn): Remove redundant
	* semantics.c (is_instantiation_of_constexpr): Likewise.
	* error.c (dump_function_decl): Likewise.

2014-03-01  Jason Merrill  <>

	PR c++/60379
	* semantics.c (begin_maybe_infinite_loop): Use

2014-02-28  Jason Merrill  <>

	PR c++/58845
	* typeck.c (cp_build_binary_op): Sorry on vector&&vector.

2014-02-28  Paolo Carlini  <>

	PR c++/58610
	* call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
	* lambda.c (maybe_add_lambda_conv_op): Likewise.

2014-02-27  Paolo Carlini  <>

	PR c++/60253
	* call.c (convert_arg_to_ellipsis): Return error_mark_node after

2014-02-27  Jason Merrill  <>

	PR c++/60353
	PR c++/55877
	* decl2.c (tentative_decl_linkage): Don't mess with functions that
	are not yet defined.

2014-02-26  Jason Merrill  <>

	PR c++/60347
	PR lto/53808
	* class.c (clone_function_decl): Don't note_vague_linkage_fn.
	* init.c (build_vtbl_address): Do it here.

	PR c++/59231
	PR c++/11586
	PR c++/14710
	PR c++/57132
	* pt.c (struct warning_sentinel): New.
	(tsubst_copy_and_build): Use it instead of
	* typeck.c (maybe_warn_about_useless_cast): Remove
	c_inhibit_evaluation_warnings check.

	PR c++/54440
	* pt.c (get_template_parm_index): New.
	(fixed_parameter_pack_p_1, fixed_parameter_pack_p): New.
	(process_template_parm): Allow bare packs in template template
	parm template parms.
	(coerce_template_parameter_pack): Handle fixed template template
	parm packs and fixed packs not at the end of the parm list.
	(coerce_template_parms): Handle template parm packs not at the end
	of the parm list.
	(gen_elem_of_pack_expansion_instantiation): Handle a decl expansion.

	PR c++/60182
	* pt.c (unify): Ignore alias templates when deducing a template
	template parameter.

	PR c++/60345
	DR 1571
	* call.c (reference_binding): Recurse on user-defined conversion.
	(convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.

2014-02-25  Jason Merrill  <>

	DR 1571
	* call.c (reference_binding): Recurse on user-defined conversion.
	(convert_like_real) [ck_ref_bind]: Explain cv-qual mismatch.

	* call.c (print_conversion_rejection): Handle n_arg of -2.
	(build_user_type_conversion_1): Pass it.

	PR c++/55877
	* decl2.c (no_linkage_error): Handle C++98 semantics.
	(reset_type_linkage): Move from decl.c.
	(reset_type_linkage_1, reset_type_linkage_2, bt_reset_linkage_1)
	(bt_reset_linkage_2, reset_decl_linkage): New.
	(tentative_decl_linkage): Factor out of expand_or_defer_fn_1.
	(cp_write_global_declarations): Move condition into no_linkage_error.
	* decl.c (grokfndecl, grokvardecl): Use no_linkage_error.
	* semantics.c (expand_or_defer_fn_1): Factor out
	* cp-tree.h: Adjust.

	* decl2.c (finish_static_data_member_decl): Diagnose static data
	member in unnamed class.
	* class.c (finish_struct_anon_r): Avoid redundant diagnostic.

	PR lto/53808
	* class.c (clone_function_decl): Call note_vague_linkage_fn for
	defaulted virtual dtor.

	DR 1286
	PR c++/60328
	* pt.c (get_underlying_template): Fix equivalence calculation.

2014-02-25  Adam Butcher  <>

	PR c++/60311
	* parser.c (function_being_declared_is_template_p): Return false when
	processing a template parameter list.
	(cp_parser_parameter_declaration_clause): Don't set
	auto_is_implicit_function_template_parm_p when processing a
	template parameter list.

	* parser.c (synthesize_implicit_template_parm): Inject new template
	argument list appropriately when a generic member function
	of a class template is declared out-of-line.

	PR c++/60065
	* parser.c (cp_parser_direct_declarator): Don't save and
	restore num_template_parameter_lists around call to
	(function_being_declared_is_template_p): New predicate.
	(cp_parser_parameter_declaration_list): Use
	function_being_declared_is_template_p as predicate for
	inspecting current function template parameter list length
	rather than num_template_parameter_lists.

2014-02-24  Jason Merrill  <>

	PR c++/60146
	* pt.c (tsubst_omp_for_iterator): Don't let substitution of the
	DECL_EXPR initialize a non-class iterator.

	PR c++/60312
	* parser.c (cp_parser_template_type_arg): Check for invalid 'auto'.

2014-02-21  Jason Merrill  <>

	PR c++/58170
	* parser.c (cp_parser_type_name): Always check dependency.
	(cp_parser_type_specifier_seq): Call

	PR c++/60108
	* semantics.c (expand_or_defer_fn_1): Check DECL_DEFAULTED_FN.

	PR c++/60185
	* parser.c (cp_parser_default_argument): Clear
	current_class_ptr/current_class_ref like tsubst_default_argument.

	PR c++/60252
	* lambda.c (maybe_resolve_dummy): Check lambda_function rather
	than current_binding_level.

	PR c++/60186
	* typeck2.c (massage_init_elt): Call fold_non_dependent_expr_sfinae.

	PR c++/60187
	* parser.c (cp_parser_enum_specifier): Call

	PR c++/59347
	* pt.c (tsubst_decl) [TYPE_DECL]: Don't try to instantiate an
	erroneous typedef.

	PR c++/60241
	* pt.c (lookup_template_class_1): Update DECL_TEMPLATE_INSTANTIATIONS
	of the partial instantiation, not the most general template.
	(maybe_process_partial_specialization): Reassign everything on
	that list.

	PR c++/60216
	* pt.c (register_specialization): Copy DECL_DELETED_FN to clones.
	(check_explicit_specialization): Don't clone.

	PR c++/60219
	* pt.c (coerce_template_parms): Bail if argument packing fails.

	PR c++/60224
	* decl.c (cp_complete_array_type, maybe_deduce_size_from_array_init):
	Don't get confused by a CONSTRUCTOR that already has a type.

	PR c++/60227
	* call.c (build_array_conv): Don't crash on VLA.

	PR c++/60248
	* mangle.c (mangle_decl): Don't make an alias for a TYPE_DECL.

	PR c++/60252
	* lambda.c (maybe_resolve_dummy): Don't try to capture this
	in declaration context.

	DR 1591
	PR c++/60051
	* pt.c (unify): Only unify if deducible.  Handle 0-length list.

	PR c++/60250
	* parser.c (cp_parser_direct_declarator): Don't wrap a
	type-dependent expression in a NOP_EXPR.

	PR c++/60251
	* lambda.c (is_normal_capture_proxy): Handle VLA capture.

	PR c++/60167
	PR c++/60222
	PR c++/58606
	* parser.c (cp_parser_template_argument): Restore dereference.
	* pt.c (template_parm_to_arg): Dereference non-pack expansions too.
	(process_partial_specialization): Handle deref.
	(unify): Likewise.

2014-02-21  Adam Butcher  <>

	PR c++/60052
	PR c++/60053
	* parser.c (cp_parser_parameter_declaration_list): Correctly reset
	implicit_template_scope upon leaving an out-of-line generic member
	function definition.

2014-02-20  Kai Tietz  <>

	PR c++/58873
	* parser.c (cp_parser_functional_cast): Treat NULL_TREE
	valued type argument as error_mark_node.

	PR c++/58835
	* semantics.c (finish_fname): Handle error_mark_node.

2014-02-19  Jason Merrill  <>

	PR c++/60046
	* pt.c (maybe_instantiate_noexcept): Don't instantiate exception
	spec from template context.

2014-02-19  Jakub Jelinek  <>

	PR debug/56563
	* cp-objcp-common.c (cp_function_decl_explicit_p): Remove
	FUNCTION_FIRST_USER_PARMTYPE (decl) != void_list_node check.

	PR c++/60267
	* pt.c (tsubst_expr): Handle ANNOTATE_EXPR.

2014-02-18  Paolo Carlini  <>

	PR c++/60225
	* semantics.c (ensure_literal_type_for_constexpr_object): Use

2014-02-18  Paolo Carlini  <>

	PR c++/60215
	* semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
	During error recovery allow_non_constant may be false.

2014-02-18  Adam Butcher  <>

	PR c++/60190
	* parser.c (cp_parser_lambda_declarator_opt): Pop template parameter
	scope whenever a template parameter list has been started, independent
	of whether the function call operator was well-formed or not.

	PR c++/60064
	* parser.c (cp_parser_member_declaration): Pop fully implicit template
	scope for generic friend declarations as well as for non-friends.

2014-02-12  Paolo Carlini  <>

	PR c++/60047
	* method.c (implicitly_declare_fn): A constructor of a class with
	virtual base classes isn't constexpr (7.1.5p4).

2014-02-05  Jan Hubicka  <

	* parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.

2014-02-05  Jakub Jelinek  <>

	PR c++/58703
	* parser.c (cp_parser_omp_declare_reduction): Save and free

2014-02-03  Marc Glisse  <>

	PR c++/53017
	PR c++/59211
	* tree.c (handle_init_priority_attribute): Call default_conversion on
	the attribute argument.

2014-02-03  Paolo Carlini  <>

	PR c++/58871
	* method.c (synthesized_method_walk): If vbases is non-null but
	is_empty is true, likewise don't worry about the virtual bases.

2014-02-01  Paolo Carlini  <>

	PR c++/51219
	* typeck2.c (process_init_constructor_record): Just skip unnamed

2014-01-31  Jason Merrill  <>

	PR c++/59469
	* pt.c (mark_decl_instantiated): Call mark_needed.

	PR c++/58672
	* decl2.c (handle_tls_init): Handle null init fn.

	PR c++/55800
	* decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable.

2014-01-31  Paolo Carlini  <>

	PR c++/59082
	* class.c (build_vfield_ref): Early return error_mark_node if
	TYPE_VFIELD (type) is null.
	(build_base_path): Check return value of build_vfield_ref.

2014-01-31  Jason Merrill  <>

	PR c++/59646
	* call.c (convert_like_real) [ck_aggr]: Set TARGET_EXPR_LIST_INIT_P.
	[ck_list]: Check for error_mark_node.
	(build_aggr_conv): Set LOOKUP_NO_NARROWING and check_narrowing.

	PR c++/57043
	* pt.c (fn_type_unification): Don't do DEDUCE_EXACT check
	during partial ordering.

2014-01-31  Marek Polacek  <>

	PR c/59963
	* typeck.c (build_function_call_vec): Add dummy arg_loc parameter.

2014-01-30  Jason Merrill  <>

	PR c++/57899
	* cp-tree.h (struct saved_scope): Add x_local_specializations.
	(local_specializations): New macro.
	* pt.c (local_specializations): Remove variable.

2014-01-30  Richard Sandiford  <>

	PR c++/58708
	* parser.c (make_string_pack): Use double_int::from_buffer.

2014-01-30  Marek Polacek  <>

	PR c/59940
	* typeck.c (build_ptrmemfunc1): Call convert_and_check with
	* cvt.c (cp_convert_and_check): Call warnings_for_convert_and_check
	with input_location.
	* call.c (build_conditional_expr_1): Call unsafe_conversion_p with
	loc parameter.

2014-01-30  Paolo Carlini  <>

	PR c++/58843
	* typeck.c (lookup_destructor): Check dtor_type for error_mark_node.

2014-01-30  Paolo Carlini  <>

	PR c++/58649
	* pt.c (lookup_template_class_1): Check start_enum return value
	for error_mark_node.

2014-01-30  Paolo Carlini  <>

	* decl.c (duplicate_decls, typename_hash, typename_compare):
	* error.c (dump_type): Likewise.
	* mangle.c (dump_substitution_candidates): Likewise.

2014-01-30  Jason Merrill  <>

	PR c++/59633
	* decl2.c (attributes_naming_typedef_ok): New.
	* cp-tree.h: Declare it.
	* decl.c (grokdeclarator): Check it.
	* tree.c (no_linkage_check): Handle VECTOR_TYPE.

2014-01-29  Jason Merrill  <>

	PR c++/59707
	* call.c (add_builtin_candidate): Catch dependent types.

	PR c++/59989
	* pt.c (expand_template_argument_pack): Correct
	non_default_args_count calculation.

	PR c++/58466
	* pt.c (unify_pack_expansion): Call expand_template_argument_pack.

	PR c++/59956
	* friend.c (do_friend): Pass the TEMPLATE_DECL to add_friend if we
	have a friend template in a class template.
	* pt.c (tsubst_friend_function): Look through it.
	(push_template_decl_real): A friend member template is

2014-01-29  Paolo Carlini  <>

	PR c++/58846
	* decl.c (get_dso_handle_node): Don't crash if dso_handle_node
	== error_mark_node.

2014-01-29  Paolo Carlini  <>

	PR c++/58674
	* pt.c (instantiate_template_1): Check for error_mark_node the second
	argument too.

2014-01-29  Jason Merrill  <>

	PR c++/59916
	* optimize.c (maybe_thunk_body): Build a RETURN_EXPR for
	cdtor_returns_this case.

	PR c++/59315
	* decl.c (cxx_maybe_build_cleanup): Call mark_used.

2014-01-29  Paolo Carlini  <>

	PR c++/58702
	* semantics.c (finish_omp_reduction_clause): Check type for

2014-01-28  Jason Merrill  <>

	PR c++/59791
	* pt.c (tsubst_decl) [VAR_DECL]: Allow in unevaluated context.
	(tsubst_copy): Use it if lookup fails.

	PR c++/59818
	* pt.c (tsubst_function_type): Make sure we keep the same function

	PR c++/58701
	* semantics.c (build_anon_member_initialization): Stop walking
	when we run out of COMPONENT_REFs.

	PR c++/58632
	* decl.c (lookup_and_check_tag): Ignore template parameters if
	scope == ts_current.
	* pt.c (check_template_shadow): Don't complain about the injected
	class name.

	* decl.c (duplicate_decls): Tweak.

	PR c++/53756
	* mangle.c (write_unqualified_name): Handle operator auto.

2014-01-27  Jason Merrill  <>

	PR c++/59823
	Core DR 1138
	* call.c (reference_binding): Pass LOOKUP_NO_TEMP_BIND for
	list-initialization.  A conversion to rvalue ref that involves
	an lvalue-rvalue conversion is bad.
	(convert_like_real): Give helpful error message.

	PR c++/54652
	* decl.c (duplicate_decls): Always use oldtype for TYPE_DECL.

	PR c++/58504
	* pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Use tsubst for

	PR c++/58606
	* pt.c (template_parm_to_arg): Call convert_from_reference.
	(tsubst_template_arg): Don't strip reference refs.

	PR c++/58639
	* call.c (build_aggr_conv): Reject value-initialization of reference.

	PR c++/58812
	PR c++/58651
	* call.c (convert_like_real): Give helpful error about excess braces
	for ck_rvalue of scalar type.

	Core DR 1288
	* call.c (reference_binding): Only elide braces if the single
	element is reference-related.

	PR c++/58814
	* typeck.c (cp_build_modify_expr): Make the RHS an rvalue before

	PR c++/58837
	* typeck.c (cp_truthvalue_conversion): Use explicit comparison for

	PR c++/59097
	* decl.c (compute_array_index_type): Don't call
	maybe_constant_value for a non-integral expression.

2014-01-24  Balaji V. Iyer  <>

	* call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
	* cp-gimplify.c (cp_genericize): Likewise.
	* decl.c (grokfndecl): Likewise.
	* parser.c (cp_parser_postfix_expression): Likewise.
	(cp_parser_postfix_open_square_expression): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(is_cilkplus_vector_p): Likewise.
	(cp_parser_omp_clause_name): Likewise.
	(cp_parser_omp_all_clauses): Likewise.
	* pt.c (apply_late_template_attributes): Likewise.
	* typeck.c (cp_build_array_ref): Likewise.
	(cp_build_compound_expr): Likewise.
	(check_return_expr): Likewise.

2014-01-24  Jason Merrill  <>

	PR c++/58550
	* decl.c (grokdeclarator): Turn pedwarn about auto return type in
	c++11 into error.

	PR c++/59886
	PR c++/59659
	* typeck2.c (process_init_constructor_array): Don't create

2014-01-24  Jakub Jelinek  <>

	* typeck2.c (split_nonconstant_init_1): Fix num_split_elts
	handling for RANGE_ARRAY case.

2014-01-24  Paolo Carlini  <>

	PR c++/57524
	* name-lookup.c (push_using_directive): Use timevar_cond_start.

2014-01-23  Marek Polacek  <>

	PR c/59846
	* typeck.c (cp_build_binary_op): Pass location to shorten_compare.

2014-01-23  Marek Polacek  <>

	PR c/58346
	* typeck.c (pointer_diff): Give an error on arithmetic on pointer to
	an empty aggregate.

2014-01-23  Jason Merrill  <>

	PR c++/55189
	* cp-tree.h (struct language_function): Add infinite_loop and
	(current_function_infinite_loop): New.
	* semantics.c (begin_maybe_infinite_loop, end_maybe_infinite_loop)
	(break_maybe_infinite_loop): New.
	(finish_while_stmt_cond, finish_while_stmt, begin_do_stmt)
	(finish_do_stmt, finish_for_cond, finish_for_stmt)
	(begin_range_for_stmt): Use them.
	* decl.c (finish_function): Don't warn about missing return
	if current_function_infinite_loop.
	* pt.c (instantiate_decl): Copy current_function_infinite_loop.
	* parser.c (cp_parser_jump_statement): Call break_maybe_infinite_loop.

	* call.c (build_op_delete_call): Use make_tree_vector and

2014-01-23  Paolo Carlini  <>

	PR c++/58980
	* parser.c (cp_parser_enum_specifier): Handle TYPENAME_TYPE as

2014-01-23  Balaji V. Iyer  <>

	* parser.c (cp_parser_direct_declarator): When Cilk Plus is enabled
	see if there is an attribute after function decl.  If so, then
	parse them now.
	(cp_parser_late_return_type_opt): Handle parsing of Cilk Plus SIMD
	enabled function late parsing.
	(cp_parser_gnu_attribute_list): Parse all the tokens for the vector
	attribute for a SIMD-enabled function.
	(cp_parser_omp_all_clauses): Skip parsing to the end of pragma when
	the function is used by SIMD-enabled function (indicated by NULL
	pragma token).   Added 3 new clauses: PRAGMA_CILK_CLAUSE_MASK,
	(cp_parser_cilk_simd_vectorlength): Modified this function to handle
	vectorlength clause in SIMD-enabled function and #pragma SIMD's
	vectorlength clause.  Added a new bool parameter to differentiate
	between the two.
	(cp_parser_cilk_simd_fn_vector_attrs): New function.
	(is_cilkplus_vector_p): Likewise.
	(cp_parser_late_parsing_elem_fn_info): Likewise.
	(cp_parser_omp_clause_name): Added a check for "mask", "nomask"
	and "vectorlength" clauses when Cilk Plus is enabled.
	(cp_parser_omp_clause_linear): Added a new parameter of type bool
	and emit a sorry message when step size is a parameter.
	* parser.h (cp_parser::cilk_simd_fn_info): New field.
	* decl.c (grokfndecl): Added flag_enable_cilkplus along with
	* pt.c (apply_late_template_attributes): Likewise.

2014-01-23  Jakub Jelinek  <>

	PR middle-end/58809
	* semantics.c (finish_omp_reduction_clause): Reject

2014-01-22  Ville Voutilainen  <>

	PR c++/59482
	* parser.c (cp_parser_class_head): Push the class before parsing
	the base-clause, pop after it.

2014-01-20  Eric Botcazou  <>

	* decl2.c (cpp_check): Revert prototype change.

2014-01-17  Paolo Carlini  <>

	PR c++/59270
	PR c++/58811
	* init.c (build_value_init_noctor): Don't pass error_mark_node to

2014-01-17  Paolo Carlini  <>

	PR c++/59269
	* init.c (build_value_init_noctor): Assert !TYPE_HAS_COMPLEX_DFLT
	only when errorcount == 0.

2014-01-17  Marek Polacek  <>

	PR c++/59838
	* cvt.c (ocp_convert): Don't segfault on non-existing

2014-01-16  Jason Merrill  <>

	PR c++/59821
	* tree.c (bot_manip): Update the location of builtin_LINE and
	builtin_FILE calls.

2014-01-14  Jason Merrill  <>

	PR c++/59659
	* typeck2.c (massage_init_elt): New.
	(process_init_constructor_union): Use it.
	(process_init_constructor_array): Use it.  Use RANGE_EXPR.
	(split_nonconstant_init_1): Handle it.
	* semantics.c (cxx_eval_vec_init_1): Use force_rvalue.

2014-01-09  Balaji V. Iyer  <>

	PR c++/59631
	* parser.c (cp_parser_postfix_expression): Added a new if-statement
	and replaced an existing if-statement with else-if statement.
	Changed an existing error message wording to match the one from the C

2014-01-08  Jason Merrill  <>

	PR c++/59614
	* class.c (abi_tag_data): Add tags field.
	(check_abi_tags): Initialize it.
	(find_abi_tags_r): Support collecting missing tags.
	(mark_type_abi_tags): Don't look at template args.
	(inherit_targ_abi_tags): New.
	(check_bases_and_members): Use it.
	* cp-tree.h (ABI_TAG_IMPLICIT): New.
	* mangle.c (write_abi_tags): Check it.

2014-01-07  Jason Merrill  <>

	PR c++/58856
	* pt.c (num_innermost_template_parms): New.
	(get_underlying_template): Use it.

	PR c++/58965
	* mangle.c (write_guarded_var_name): Handle null DECL_NAME.

2014-01-07  Paolo Carlini  <>

	* semantics.c (trait_expr_value, [CPTK_IS_BASE_OF]): Implement
	the letter of 20.11.6 about Base and Derived naming the same
	class type modulo cv-qualifiers.

2014-01-06  Adam Butcher  <>

	PR c++/59635
	* lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
	function as unimplemented for generic lambdas with varargs.

	PR c++/59636
	* parser.c (cp_parser_template_parameter): Early out with
	error_mark_node if parameter declaration was not parsed.

	PR c++/59629
	* parser.c (cp_parser_lambda_expression): Save/reset/restore
	auto_is_implicit_function_template_parm_p around lambda body.

	PR c++/59638
	* parser.c (cp_parser_init_declarator): Undo fully implicit
	template parameter list when declarator is not a function.

2014-01-03  Marc Glisse  <>

	PR c++/58950
	* cvt.c (convert_to_void): Handle VEC_PERM_EXPR and VEC_COND_EXPR.

2014-01-03  Tobias Burnus  <>

	PR c++/58567
	* pt.c (tsubst_omp_for_iterator): Early return for error_mark_node.

2014-01-03  Paolo Carlini  <>

	Core DR 1442
	PR c++/59165
	* parser.c (cp_parser_perform_range_for_lookup): Don't pass true
	as include_std to perform_koenig_lookup.
	(cp_parser_postfix_expression): Adjust.
	* pt.c (tsubst_copy_and_build): Likewise.
	* semantics.c (perform_koenig_lookup): Remove bool parameter.
	(omp_reduction_lookup): Adjust.
	* name-lookup.c (lookup_arg_dependent_1): Remove bool parameter.
	(lookup_arg_dependent): Likewise.
	(lookup_function_nonclass): Adjust.
	* name-lookup.h: Adjust declaration.
	* cp-tree.h: Likewise.

2014-01-02  Marc Glisse  <>

	PR c++/59087
	* parser.c (cp_parser_userdef_numeric_literal): Mention
	-fext-numeric-literals in the message.

2014-01-02  Marc Glisse  <>

	PR c++/59641
	* call.c (build_conditional_expr_1): Check the return value of

2014-01-02  Marc Glisse  <>

	* call.c (convert_like_real): Check complain.

2014-01-02  Marc Glisse  <>

	PR c++/59378
	* typeck.c (build_x_vec_perm_expr): Handle non-dependent arguments
	in templates.

2014-01-02  Richard Sandiford  <>

	Update copyright years

2014-01-02  Richard Sandiford  <>

	* cp-array-notation.c, cp-cilkplus.c, vtable-class-hierarchy.c: Use
	the standard form for the copyright notice.
Copyright (C) 2014 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.