2014-12-31  Iain Sandoe  <iain@codesourcery.com>

	* 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  <jason@redhat.com>

	* 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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <ktietz@redhat.com>

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

2014-12-18  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	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  <hubicka@ucw.cz>

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

2014-12-15  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	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  <paolo.carlini@oracle.com>

	PR c++/59628
	* semantics.c (finish_omp_reduction_clause): Early return true
	if DECL_SAVED_TREE (id) is NULL_TREE.

2014-12-12  Jason Merrill  <jason@redhat.com>

	N3922
	* 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  <ktietz@redhat.com>

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

2014-12-12  Jason Merrill  <jason@redhat.com>

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

2014-12-11  Jason Merrill  <jason@redhat.com>

	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
	Revert:
	* 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  <paolo.carlini@oracle.com>

	* typeck.c (maybe_warn_about_useless_cast): Remove unnecessary
	conditional.

2014-12-10  Kai Tietz  <ktietz@redhat.com>

	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  <jason@redhat.com>

	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  <jason@redhat.com>

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

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

2014-12-03  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <rguenther@suse.de>

	* constexpr.c (cxx_eval_builtin_function_call): Use
	fold_build_call_array_loc.

2014-12-02  Marek Polacek  <polacek@redhat.com>

	* 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  <paolo.carlini@oracle.com>

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

2014-12-01  Marek Polacek  <polacek@redhat.com>

	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  <polacek@redhat.com>

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

2014-12-01  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-11-29  Jakub Jelinek  <jakub@redhat.com>

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

2014-11-28  Marek Polacek  <polacek@redhat.com>

	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  <ktietz@redhat.com>

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

2014-11-26  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	* 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  <ville.voutilainen@gmail.com>

	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  <jason@redhat.com>

	* pt.c (lookup_template_variable): Always unknown_type_node.

2014-11-25  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <jwakely@redhat.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-11-24  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-11-21  Jason Merrill  <jason@redhat.com>

	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  <jakub@redhat.com>

	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  <jason@redhat.com>

	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  <ville.voutilainen@gmail.com>

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

2014-11-20  Trevor Saunders  <tsaunders@mozilla.com>

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

2014-11-19  Jason Merrill  <jason@redhat.com>

	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
	integral_constant_value.
	(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  <jason@redhat.com>

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

2014-11-19  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-11-18  Jason Merrill  <jason@redhat.com>

	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  <marc.glisse@inria.fr>

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

2014-11-18  Jason Merrill  <jason@redhat.com>

	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.
	* cp-tree.h (CONSTRUCTOR_MUTABLE_POISON): New.
	* constexpr.c (cxx_eval_outermost_constant_expr): Check it.

2014-11-17  Jason Merrill  <jason@redhat.com>

	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
	dependent.
	* 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,
	CASE_LABEL_EXPR, GOTO_EXPR, LOOP_EXPR, SWITCH_EXPR.  Handle jump
	semantics of RETURN_EXPR.
	(many functions): Add jump_target parameter.
	(returns, breaks, continues, switches, label_matches): New.
	* cp-tree.h (LABEL_DECL_BREAK, LABEL_DECL_CONTINUE): 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-
	initialization.
	(cxx_eval_store_expression, cxx_eval_increment_expression): New.
	(cxx_eval_constant_expression): Handle RESULT_DECL, DECL_EXPR,
	MODIFY_EXPR, STATEMENT_LIST, BIND_EXPR, USING_STMT,
	PREINCREMENT_EXPR, POSTINCREMENT_EXPR, PREDECREMENT_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.
	Handle STATEMENT_LIST, MODIFY_EXPR, MODOP_EXPR, IF_STMT,
	PREINCREMENT_EXPR, POSTINCREMENT_EXPR, PREDECREMENT_EXPR,
	POSTDECREMENT_EXPR, BIND_EXPR, WITH_CLEANUP_EXPR,
	CLEANUP_POINT_EXPR, MUST_NOT_THROW_EXPR, TRY_CATCH_EXPR,
	EH_SPEC_BLOCK, EXPR_STMT, DECL_EXPR, CASE_LABEL_EXPR, BREAK_STMT,
	CONTINUE_STMT, USING_STMT, IF_STMT, DO_STMT, FOR_STMT, WHILE_STMT,
	SWITCH_STMT, ASM_EXPR.
	(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_function_chain->invalid_constexpr.
	* 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_function_chain->invalid_constexpr.
	(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.
	(TYPE_PTRMEMFUNC_FN_TYPE_RAW): New.
	* 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  <jason@redhat.com>

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

	* constexpr.c (cxx_eval_builtin_function_call): Use
	fold_builtin_call_array.

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

2014-11-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* 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
	instantiate_non_dependent_expr...
	* 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
	instantiate_non_dependent_expr.
	(fold_non_dependent_expr_sfinae): Rename to
	instantiate_non_dependent_expr_sfinae.
	(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):
	Likewise.
	* semantics.c (end_maybe_infinite_loop, finish_static_assert):
	Likewise.
	* 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  <jwakely@redhat.com>

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

2014-11-13  Bernd Schmidt  <bernds@codesourcery.com>
	    Thomas Schwinge  <thomas@codesourcery.com>
	    Ilya Verbin  <ilya.verbin@intel.com>
	    Andrey Turetskiy  <andrey.turetskiy@intel.com>

	* Make-lang.in (c++.install-common): Do not install for the offload
	compiler.

2014-11-13  Kai Tietz  <ktietz@redhat.com>

	* 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  <paolo.carlini@oracle.com>

	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  <paolo.carlini@oracle.com>

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

2014-11-10  Andi Kleen  <ak@linux.intel.com>

	* 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  <paolo.carlini@oracle.com>

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

2014-11-09  Jason Merrill  <jason@redhat.com>

	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  <jason@redhat.com>

	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
	template-id.

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

2014-11-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>

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

2014-10-29  Richard Sandiford  <richard.sandiford@arm.com>

	* constexpr.c: Remove redundant enum from machine_mode.

2014-10-28  Jason Merrill  <jason@redhat.com>

	* constexpr.c (cxx_eval_outermost_constant_expr): Tweak.

2014-10-28  Andrew MacLeod  <amacleod@redhat.com>

	* 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  <jason@redhat.com>

	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.
	[PLACEHOLDER_EXPR]: New.
	(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.
	* cp-tree.h (CONSTRUCTOR_NO_IMPLICIT_ZERO): New.
	* 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
	explicit.

2014-10-27  Andrew MacLeod  <amacleod@redhat.com>

	* cp-gimplify.c: Adjust include files.

2014-10-26  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	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  <jwakely@redhat.com>

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

2014-10-21  Paolo Carlini  <paolo.carlini@oracle.com>

	* 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  <jason@redhat.com>

	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  <amodra@gmail.com>

	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  <amacleod@redhat.com>

	* cp-tree.h: Adjust include files.

2014-10-15  Jason Merrill  <jason@redhat.com>

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

2014-10-15  Paolo Carlini  <paolo.carlini@oracle.com>

	* semantics.c (is_instantiation_of_constexpr, literal_type_p,
	ensure_literal_type_for_constexpr_object,
	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_constant_expression,
	require_potential_rvalue_constant_expression): Moved definitions...
	* constexpr.c: ... here, new file.
	* Make-lang.in: Update.
	* config-lang.in: Likewise.

2014-10-14  Jason Merrill  <jason@redhat.com>

	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  <dj@redhat.com>

	* typeck.c (cp_common_type): Check for all __intN types, not just
	__int128.
	* decl.c (grokdeclarator): Likewise.
	* rtti.c (emit_support_tinfos): Check for all __intN types, not just
	__int128.
	* 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  <marc.glisse@inria.fr>

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

2014-10-13  H.J. Lu  <hongjiu.lu@intel.com>

	* 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  <tsaunders@mozilla.com>

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

2014-10-10  Jason Merrill  <jason@redhat.com>

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

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

2014-10-09  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	* 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  <jason@redhat.com>

	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  <marc.glisse@inria.fr>

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

2014-10-08  Jason Merrill  <jason@redhat.com>

	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  <jason@redhat.com>

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

2014-10-06  Edward Smith-Rowland  <3dw4rd@verizon.net>

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

2014-10-06  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <mjw@redhat.com>

	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  <marc.glisse@inria.fr>

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

2014-10-03  Jason Merrill  <jason@redhat.com>

	* 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
	non-literal.

	* 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  <paolo.carlini@oracle.com>

	* parser.c (cp_parser_assignment_expression,
	cp_parser_constant_expression): Add default arguments.
	(cp_parser_primary_expression,
	cp_parser_postfix_open_square_expression,
	cp_parser_parenthesized_expression_list,
	cp_parser_question_colon_clause,
	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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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
	TYPE_HAS_COMPLEX_DFLT.
	* init.c (build_value_init_noctor): Don't use
	type_has_user_provided_default_constructor.

2014-09-30  Jason Merrill  <jason@redhat.com>

	* cp-tree.h (cp_trait_kind): Add CPTK_IS_TRIVIALLY_ASSIGNABLE and
	CPTK_IS_TRIVIALLY_CONSTRUCTIBLE.
	* 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  <manu@gcc.gnu.org>

       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  <rguenther@suse.de>

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

2014-09-26  Jason Merrill  <jason@redhat.com>

	* mangle.c (find_substitution): Use write_abi_tags.

2014-09-25  Marek Polacek  <polacek@redhat.com>

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

2014-09-25  Jakub Jelinek  <jakub@redhat.com>

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

2014-09-24  Aldy Hernandez  <aldyh@redhat.com>

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

2014-09-24  Marek Polacek  <polacek@redhat.com>

	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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	* 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  <paolo.carlini@oracle.com>

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

2014-09-22  Jason Merrill  <jason@redhat.com>

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

2014-09-20  Jason Merrill  <jason@redhat.com>

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

2014-09-19  Jason Merrill  <jason@redhat.com>

	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  <jakub@redhat.com>

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

2014-09-18  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-09-15  Jason Merrill  <jason@redhat.com>

	* 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  <ville.voutilainen@gmail.com>

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

2014-09-15  Jakub Jelinek  <jakub@redhat.com>

	* Make-lang.in (check_g++_parallelize): Change to just an upper bound
	number.

2014-09-13  Marek Polacek  <polacek@redhat.com>

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

2014-09-11  Jason Merrill  <jason@redhat.com>

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

2014-09-11  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <jason@redhat.com>

	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  <jason@redhat.com>

	* typeck.c (build_class_member_access_expr): Move
	-Winvalid-offsetof code...
	* semantics.c (finish_offsetof): ...here.
	* 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  <jason@redhat.com>

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

2014-09-04  Markus Trippelsdorf  <markus@trippelsdorf.de>

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

2014-09-02  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <jakub@redhat.com>
	    Balaji V. Iyer  <balaji.v.iyer@intel.com>
	    Igor Zamyatin  <igor.zamyatin@intel.com>

	* cp-cilkplus.c (cpp_validate_cilk_plus_loop_aux): Loc definition
	simplified.
	* 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'
	list.
	(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
	case; added OMP_CLAUSE__CILK_FOR_COUNT_.
	(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  <jason@redhat.com>

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

2014-08-27  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

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

2014-08-25  Jason Merrill  <jason@redhat.com>

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

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

2014-08-25  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <3dw4rd@verizon.net>

	* 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  <jason@redhat.com>

	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  <polacek@redhat.com>

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

2014-08-22  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	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
	code.
	* cp-tree.h (TYPE_PTRFN_P,TYPE_REFFN_P,TYPE_PTRMEMFUNC_P):
	Improve description.

2014-08-22  Jason Merrill  <jason@redhat.com>

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

2014-08-22  Jason Merrill  <jason@redhat.com>

	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  <igor.zamyatin@intel.com>

	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  <manu@gcc.gnu.org>

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

2014-08-19  Marek Polacek  <polacek@redhat.com>

	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  <jason@redhat.com>

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

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

2014-08-19  Gerald Pfeifer  <gerald@pfeifer.com>

	* class.c (contains_empty_class_p): Remove.

2014-08-18  Paolo Carlini  <paolo.carlini@oracle.com>

	* 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  <jason@redhat.com>

	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
	CLASSTYPE_DECL_LIST.
	(push_template_decl_real): A lambda is not primary.
	(lookup_template_class_1): Don't look for a lambda partial
	instantiation.
	* 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  <rguenther@suse.de>
	    Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	PR c++/62072
	Revert:
	2014-07-09  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <manu@gcc.gnu.org>

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

2014-08-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* 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  <ville.voutilainen@gmail.com>

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

2014-08-14  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-08-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* parser.c (cp_parser_init_declarator): Remove redundant check of
	decl_specifiers->type.

2014-08-13  Jason Merrill  <jason@redhat.com>

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

2014-08-13  Andrew Sutton  <andrew.n.sutton@gmail.com>

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

2014-08-13  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-08-13  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-08-12  Ville Voutilainen  <ville.voutilainen@gmail.com>

	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  <paolo.carlini@oracle.com>

	* 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  <jason@redhat.com>

	* pt.c (lookup_template_class_1): Copy abi_tag.

2014-08-08  Kai Tietz  <ktietz@redhat.com>

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

2014-08-07  Trevor Saunders  <tsaunders@mozilla.com>

	* 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  <paolo.carlini@oracle.com>

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

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

2014-08-07  Jason Merrill  <jason@redhat.com>

	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  <tsaunders@mozilla.com>

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

2014-08-06  Jason Merrill  <jason@redhat.com>

	* 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  <jason@redhat.com>
	    Braden Obrzut  <admin@maniacsvault.net>

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

2014-08-06  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-08-01  Braden Obrzut  <admin@maniacsvault.net>

	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
	variables.
	* 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  <paolo.carlini@oracle.com>

	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  <tsaunders@mozilla.com>

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

2014-08-02  Trevor Saunders  <tsaunders@mozilla.com>

	* 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  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-08-01  Igor Zamyatin  <igor.zamyatin@intel.com>

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

2014-08-01  Igor Zamyatin  <igor.zamyatin@intel.com>

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

2014-08-01  Igor Zamyatin  <igor.zamyatin@intel.com>

	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  <paolo.carlini@oracle.com>

	* pt.c (lookup_template_class_1): Use DECL_TYPE_TEMPLATE_P.

2014-08-01  Jakub Jelinek  <jakub@redhat.com>

	* 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  <marc.glisse@inria.fr>

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

2014-07-30  Jason Merrill  <jason@redhat.com>

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

2014-07-30  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	PR c++/61659
	PR c++/61687
	Revert:
	* 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  <3dw4rd@verizon.net>

	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  <paolo.carlini@oracle.com>

	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  <paolo.carlini@oracle.com>

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

2014-07-15  Jason Merrill  <jason@redhat.com>

	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
	std::initializer_list.

2014-07-15  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-07-14  Jan Hubicka  <hubicka@ucw.cz>

	* class.c (build_clone): Do not clear assembler names of
	templates.
	* 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;
	initialize TEMPLATE_DECL as MARK_TS_DECL_COMMON.
	* 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.
	(DECL_TEMPLATE_PARMS, DECL_TEMPLATE_RESULT): Update.

2014-07-14  Jason Merrill  <jason@redhat.com>

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

2014-07-14  Jakub Jelinek  <jakub@redhat.com>

	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
	-Wmemset-transposed-args.
	(literal_zeros): New variable.

2014-07-13  Jason Merrill  <jason@redhat.com>

	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  <3dw4rd@verizon.net>

	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  <jason@redhat.com>

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

2014-07-11  Paolo Carlini  <paolo.carlini@oracle.com>

	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,
	set LOOKUP_NO_NARROWING.
	* typeck2.c (digest_init_r): Likewise.

2014-07-10  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	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  <paolo.carlini@oracle.com>

	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  <andrew.n.sutton@gmail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-07-07  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-07-06  Marek Polacek  <polacek@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-06-30  Edward Smith-Rowland  <3dw4rd@verizon.net>

	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  <jason@redhat.com>

	PR c++/61659
	PR lto/53808
	* decl2.c (maybe_emit_vtables): Mark all vtable entries if
	devirtualizing.
	* 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
	TYPE_BINFO or TYPE_LANG_SPECIFIC.
	* cp-tree.h (TYPE_PTRMEMFUNC_FLAG): Use TYPE_LANG_FLAG_2.
	(TYPE_PTRMEMFUNC_P): Don't expect TYPE_LANG_SPECIFIC.
	* 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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <polacek@redhat.com>

	* 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  <igor.zamyatin@intel.com>

	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  <jwakely@redhat.com>

	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  <jason@redhat.com>

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

2014-06-27  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-06-27  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-06-26  Jason Merrill  <jason@redhat.com>

	* 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  <tejohnson@google.com>

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

2014-06-26  Adam Butcher  <adam@jessamine.co.uk>

	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  <paolo.carlini@oracle.com>

	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  <jakub@redhat.com>

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

2014-06-24  Jan Hubicka  <hubicka@ucw.cz>

	* class.c (check_methods, create_vtable_ptr, determine_key_method,
	add_vcall_offset_vtbl_entries_1): Guard VINDEX checks by
	FUNCTION_DECL check.
	* cp-tree.h (lang_decl_ns): Add ns_using and ns_users.
	(DECL_NAMESPACE_USING, DECL_NAMESPACE_USERS): Use lang_decl_ns.
	(DECL_NAMESPACE_ASSOCIATIONS): Use DECL_INITIAL.
	(DECL_TEMPLATE_INSTANTIATIONS): Use DECL_SIZE_UNIT.

2014-06-24  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-06-24  Trevor Saunders  <tsaunders@mozilla.com>

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

2014-06-24  Jakub Jelinek  <jakub@redhat.com>

	* 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  <paolo.carlini@oracle.com>

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

2014-06-20  Jason Merrill  <jason@redhat.com>

	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  <jason@redhat.com>

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

2014-06-18  Jason Merrill  <jason@redhat.com>

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

2014-06-18  Jakub Jelinek  <jakub@redhat.com>

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

2014-06-17  Jason Merrill  <jason@redhat.com>

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

2014-06-15  Jason Merrill  <jason@redhat.com>

	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  <hubicka@ucw.cz>

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

2014-06-15  Jan Hubicka  <hubicka@ucw.cz>

	* 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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	* 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  <hubicka@ucw.cz>

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

2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-06-11  Paolo Carlini  <paolo.carlini@oracle.com>

	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):
	Adjust.
	* decl.c (grokdeclarator): Fix handling of friend declared in
	namespace scope (g++.dg/parse/friend10.C).

2014-06-10  Jan Hubicka  <hubicka@ucw.cz>

	* vtable-class-hierarchy.c: Use symtab_get_node (var_decl)
	->implicit_section.
	* 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  <paolo.carlini@oracle.com>

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

2014-06-07  Jan Hubicka  <hubicka@ucw.cz>

	* 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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

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

2014-06-05  Richard Biener  <rguenther@suse.de>
	    Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-06-04  Jason Merrill  <jason@redhat.com>

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

2014-06-05  Richard Biener  <rguenther@suse.de>

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

2014-06-05  Marek Polacek  <polacek@redhat.com>

	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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <igor.zamyatin@intel.com>

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

2014-06-03  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <polacek@redhat.com>

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

2014-06-03  Jason Merrill  <jason@redhat.com>

	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  <jason@redhat.com>

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

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

2014-06-02  Paolo Carlini  <paolo.carlini@oracle.com>

	* pt.c (tsubst_function_type): Initialize arg_types.

2014-06-02  Siva Chandra Reddy  <sivachandra@google.com>

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

2014-06-02  Ville Voutilainen  <ville.voutilainen@gmail.com>

	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  <amacleod@redhat.com>

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

2014-05-31  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <jason@redhat.com>

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

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

2014-05-23  Jan Hubicka  <hubicka@ucw.cz>

	* 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  <hubicka@ucw.cz>

	* 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  <hubicka@ucw.cz>

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

2014-05-23  Thomas Schwinge  <thomas@codesourcery.com>

	* semantics.c (finish_omp_clauses): Remove duplicated variable
	initialization.

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

2014-05-22  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <jwakely@redhat.com>

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

2014-05-21  Ville Voutilainen  <ville.voutilainen@gmail.com>

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

2014-05-21  Mark Wielaard  <mjw@redhat.com>

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

2014-05-21  Richard Sandiford  <rsandifo@linux.vnet.ibm.com>

	* 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  <igor.zamyatin@intel.com>

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

2014-05-20  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	* 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  <paolo.carlini@oracle.com>

	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  <rsandifo@linux.vnet.ibm.com>

	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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-05-17  Trevor Saunders  <tsaunders@mozilla.com>

	* 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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

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

2014-05-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* 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  <jason@redhat.com>

	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
	integers.
	* 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
	bad_arg_conversion_rejection.
	(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  <jason@redhat.com>

	* 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  <jason@redhat.com>

	* 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  <paolo.carlini@oracle.com>

	* 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  <momchil.velikov@gmail.com>

	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  <paolo.carlini@oracle.com>

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

2014-05-09  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-05-06  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-05-06  Kenneth Zadeck  <zadeck@naturalbridge.com>
	    Mike Stump  <mikestump@comcast.net>
	    Richard Sandiford  <rdsandiford@googlemail.com>

	* 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  <paolo.carlini@oracle.com>

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

2014-05-02  Jason Merrill  <jason@redhat.com>

	* 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  <polacek@redhat.com>

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

2014-05-01  Marek Polacek  <polacek@redhat.com>

	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  <jason@redhat.com>

	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  <polacek@redhat.com>

	* 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  <jason@redhat.com>

	DR 1351
	Represent the unevaluated exception specification of an implicitly
	declared or deleted function with a simple placeholder, not a list
	of functions.
	* cp-tree.h (UNEVALUATED_NOEXCEPT_SPEC_P): New.
	* except.c (unevaluated_noexcept_spec): New.
	* class.c (deduce_noexcept_on_destructor): Use it.
	* decl.c (check_redeclaration_exception_specification): Call
	maybe_instantiate_noexcept.
	(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  <paolo.carlini@oracle.com>

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

2014-04-24  Jakub Jelinek  <jakub@redhat.com>

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

2014-04-24  Marc Glisse  <marc.glisse@inria.fr>

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

2014-04-23 Dinar Temirbulatov  <dtemirbulatov@gmail.com>

	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  <marc.glisse@inria.fr>

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

2014-04-22  Jakub Jelinek  <jakub@redhat.com>

	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  <jason@redhat.com>

	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  <marc.glisse@inria.fr>

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

2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>

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

2014-04-16  Patrick Palka  <patrick@parcs.ath.cx>

	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
	is_dummy_object.
	(build_new_method_call_1): Likewise.  Don't attempt to resolve
	a dummy object for a constructor method call.

2014-04-16  Paul Pluzhnikov  <ppluzhnikov@google.com>

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

2014-04-15  Paolo Carlini  <paolo.carlini@oracle.com>

	* 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  <jakub@redhat.com>

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

2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-04-14  Paolo Carlini  <paolo.carlini@oracle.com>

	* pt.c (mark_template_parm): Use template_parm_level_and_index.

2014-04-11  Jason Merrill  <jason@redhat.com>

	* 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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <rguenther@suse.de>
	    Jakub Jelinek  <jakub@redhat.com>

	PR ipa/60761
	* error.c (dump_decl) <case FUNCTION_DECL>: If
	DECL_LANG_SPECIFIC is NULL, but DECL_ABSTRACT_ORIGIN is not,
	recurse on DECL_ABSTRACT_ORIGIN instead of printing
	<built-in>.

2014-04-09  Fabien Chêne  <fabien@gcc.gnu.org>

	* 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  <paolo.carlini@oracle.com>

	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  <nathan@codesourcery.com>

	* 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  <fabien@gcc.gnu.org>

	* 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  <paolo.carlini@oracle.com>

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

2014-04-04  Patrick Palka  <patrick@parcs.ath.cx>

	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  <fabien@gcc.gnu.org>

	* 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  <fabien@gcc.gnu.org>

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

2014-04-03  Nathan Sidwell  <nathan@codesourcery.com>

	* 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  <jason@redhat.com>

	* 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  <fabien@gcc.gnu.org>

	* init.c (perform_member_init): Homogenize uninitialized
	diagnostics.

2014-04-01  Jason Merrill  <jason@redhat.com>

	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  <patrick@parcs.ath.cx>

	PR c++/44859
	* typeck.c (maybe_warn_about_returning_address_of_local): Unwrap
	COMPONENT_REFs and ARRAY_REFs sooner.

2014-03-29  Adam Butcher  <adam@jessamine.co.uk>

	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  <adam@jessamine.co.uk>

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

2014-03-26  Fabien Chêne  <fabien@gcc.gnu.org>

	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  <jason@redhat.com>

	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  <jakub@redhat.com>

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

2014-03-24  Adam Butcher  <adam@jessamine.co.uk>

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

2014-03-22  Jason Merrill  <jason@redhat.com>

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

2014-03-21  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-03-20  Jakub Jelinek  <jakub@redhat.com>

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

2014-03-19  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-03-17  Adam Butcher  <adam@jessamine.co.uk>

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

	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  <paolo.carlini@oracle.com>

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

2014-03-14  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-03-13  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

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

	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  <adam@jessamine.co.uk>

	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  <jason@redhat.com>

	* Make-lang.in (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  <paolo.carlini@oracle.com>

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

2014-03-07  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-03-06  Marek Polacek  <polacek@redhat.com>

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

2014-03-06  Paolo Carlini  <paolo.carlini@oracle.com>

	* 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  <jason@redhat.com>

	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  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-03-01  Adam Butcher  <adam@jessamine.co.uk>

	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  <paolo.carlini@oracle.com>

	* method.c (implicitly_declare_fn): Remove redundant
	DECL_TEMPLATE_RESULT and STRIP_TEMPLATE uses.
	* semantics.c (is_instantiation_of_constexpr): Likewise.
	* error.c (dump_function_decl): Likewise.

2014-03-01  Jason Merrill  <jason@redhat.com>

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

2014-02-28  Jason Merrill  <jason@redhat.com>

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

2014-02-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58610
	* cp-tree.h (DECL_DELETED_FN): Use LANG_DECL_FN_CHECK.
	* call.c (print_z_candidate): Remove STRIP_TEMPLATE use.
	* lambda.c (maybe_add_lambda_conv_op): Likewise.

2014-02-27  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-02-27  Jason Merrill  <jason@redhat.com>

	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  <jason@redhat.com>

	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
	c_inhibit_evaluation_warnings.
	* 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
	Revert:
	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  <jason@redhat.com>

	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
	tentative_decl_linkage.
	* 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  <adam@jessamine.co.uk>

	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
	cp_parser_parameter_declaration_list.
	(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  <jason@redhat.com>

	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  <jason@redhat.com>

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

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

	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  <adam@jessamine.co.uk>

	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  <ktietz@redhat.com>

	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  <jason@redhat.com>

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

2014-02-19  Jakub Jelinek  <jakub@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <adam@jessamine.co.uk>

	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  <paolo.carlini@oracle.com>

	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  <hubicka@ucw.cz

	* parser.c (synthesize_implicit_template_parm): Use grow_tree_vec.

2014-02-05  Jakub Jelinek  <jakub@redhat.com>

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

2014-02-03  Marc Glisse  <marc.glisse@inria.fr>

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

2014-02-03  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <paolo.carlini@oracle.com>

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

2014-01-31  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	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  <jason@redhat.com>

	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  <polacek@redhat.com>

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

2014-01-30  Jason Merrill  <jason@redhat.com>

	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  <rdsandiford@googlemail.com>

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

2014-01-30  Marek Polacek  <polacek@redhat.com>

	PR c/59940
	* typeck.c (build_ptrmemfunc1): Call convert_and_check with
	input_location.
	* 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  <paolo.carlini@oracle.com>

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

2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-01-30  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-01-30  Jason Merrill  <jason@redhat.com>

	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  <jason@redhat.com>

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

2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-01-29  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-01-29  Jason Merrill  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

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

2014-01-28  Jason Merrill  <jason@redhat.com>

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

	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  <jason@redhat.com>

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

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

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

	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  <balaji.v.iyer@intel.com>

	* call.c (magic_varargs_p): Replaced flag_enable_cilkplus with
	flag_cilkplus.
	* 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  <jason@redhat.com>

	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
	RANGE_EXPR yet.

2014-01-24  Jakub Jelinek  <jakub@redhat.com>

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

2014-01-24  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-01-23  Marek Polacek  <polacek@redhat.com>

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

2014-01-23  Marek Polacek  <polacek@redhat.com>

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

2014-01-23  Jason Merrill  <jason@redhat.com>

	PR c++/55189
	* cp-tree.h (struct language_function): Add infinite_loop and
	infinite_loops.
	(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
	release_tree_vector.

2014-01-23  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-01-23  Balaji V. Iyer  <balaji.v.iyer@intel.com>

	* 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,
	PRAGMA_CILK_CLAUSE_NOMASK and PRAGMA_CILK_CLAUSE_VECTORLENGTH
	(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
	flag_openmp.
	* pt.c (apply_late_template_attributes): Likewise.

2014-01-23  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/58809
	* semantics.c (finish_omp_reduction_clause): Reject
	BIT_AND_EXPR, BIT_IOR_EXPR and BIT_XOR_EXPR on COMPLEX_TYPEs.

2014-01-22  Ville Voutilainen  <ville.voutilainen@gmail.com>

	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  <ebotcazou@adacore.com>

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

2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-01-17  Paolo Carlini  <paolo.carlini@oracle.com>

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

2014-01-17  Marek Polacek  <polacek@redhat.com>

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

2014-01-16  Jason Merrill  <jason@redhat.com>

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

2014-01-14  Jason Merrill  <jason@redhat.com>

	PR c++/59659
	* typeck2.c (massage_init_elt): New.
	(process_init_constructor_record)
	(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  <balaji.v.iyer@intel.com>

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

2014-01-08  Jason Merrill  <jason@redhat.com>

	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  <jason@redhat.com>

	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  <paolo.carlini@oracle.com>

	* 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  <adam@jessamine.co.uk>

	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  <marc.glisse@inria.fr>

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

2014-01-03  Tobias Burnus  <burnus@net-b.de>

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

2014-01-03  Paolo Carlini  <paolo.carlini@oracle.com>

	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  <marc.glisse@inria.fr>

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

2014-01-02  Marc Glisse  <marc.glisse@inria.fr>

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

2014-01-02  Marc Glisse  <marc.glisse@inria.fr>

	* call.c (convert_like_real): Check complain.

2014-01-02  Marc Glisse  <marc.glisse@inria.fr>

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

2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>

	Update copyright years

2014-01-02  Richard Sandiford  <rdsandiford@googlemail.com>

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