2016-06-03  Release Manager

	* GCC 5.4.0 released.

2016-05-23  Richard Biener  <rguenther@suse.de>

	Backport from mainline
	2016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
 
	PR c++/70347
	* typeck.c (process_init_constructor_union): If the initializer
	is empty, use the union's NSDMI if it has one.

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

	PR c++/70466
	* call.c (convert_like_real): Check that we are actually converting
	from an init list.

2016-05-18  Jason Merrill  <jason@redhat.com>

	PR c++/70505
	* pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
	unknown_type_node, too.

	PR c++/70494
	* decl.c (cxx_maybe_build_cleanup): Handle non-decls.
	* typeck2.c (split_nonconstant_init_1): Use it.

	PR c++/70648
	* constexpr.c (cxx_eval_store_expression): Also copy
	CONSTRUCTOR_NO_IMPLICIT_ZERO.

	PR c++/70353
	* decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics
	in constexpr functions.

	PR c++/70095
	* pt.c (instantiate_decl): Fix call to variable_template_p.

2016-05-18  Jason Merrill  <jason@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/70135
	* constexpr.c (struct constexpr_ctx): Add save_exprs field.
	(cxx_eval_loop_expr): Discard SAVE_EXPR values before looping.
	(cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set.
	(cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize.

2016-05-18  Jason Merrill  <jason@redhat.com>

	* method.c (synthesized_method_walk): operator= can also be constexpr.

2016-05-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/70635
	* pt.c (resolve_typename_type): Fix typos in infinite recursion
	avoidance mechanism.

2016-04-18  Marek Polacek  <polacek@redhat.com>

	Backport from mainline
	2016-03-31  Marek Polacek  <polacek@redhat.com>

	PR c/70297
	* decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN.

2016-04-18  Marek Polacek  <polacek@redhat.com>

	Backport from mainline
	2015-11-11  Jason Merrill  <jason@redhat.com>

	* decl.c (duplicate_decls): When combining typedefs, remove the
	new type from the variants list.

2016-04-15  Jason Merrill  <jason@redhat.com>

	* pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get
	LAMBDA_EXPR_RETURN_TYPE from the instantiated closure.

	PR c++/67164
	* pt.c (copy_template_args): New.
	(tsubst_pack_expansion): Use it.

2016-04-13  Alan Modra  <amodra@gmail.com>

	Backport from mainline
	2016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
	PR target/70107
	PR c++/70096
	* pt.c (tsubst_decl): Clear the DECL_MODE of the new decl.

2016-04-06  Richard Biener  <rguenther@suse.de>

	Backport from mainline
	2016-03-31  Richard Biener  <rguenther@suse.de>

	PR c++/70430
	* typeck.c (cp_build_binary_op): Fix operand order of vector
	conditional in truth op handling.

2016-03-31  Nathan Sidwell  <nathan@acm.org>

	PR c++/70393
	* constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR
	elements in field order.

2016-03-30  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2016-03-17  Jakub Jelinek  <jakub@redhat.com>

	PR c++/70272
	* decl.c (begin_destructor_body): Don't insert clobber if
	is_empty_class (current_class_type).

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

	PR c++/67767
	* parser.c (cp_parser_std_attribute_spec_seq): Don't assume
	attr_spec is always single element chain, chain all the attributes
	properly together in the right order.

2016-03-21  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2016-03-15  Marek Polacek  <polacek@redhat.com>

	PR c++/70209
	* tree.c (strip_typedefs): Call strip_typedefs again on the
	DECL_ORIGINAL_TYPE result.

2016-03-18  Jason Merrill  <jason@redhat.com>

	PR c++/70139
	* constexpr.c (cxx_eval_call_expression): Don't shortcut trivial copy.

2016-03-05  Jason Merrill  <jason@redhat.com>

	PR c++/67364
	* constexpr.c (cxx_eval_store_expression): Replace
	CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too.

2016-03-04  Jason Merrill  <jason@redhat.com>

	PR c++/67364
	* constexpr.c (cxx_eval_component_reference): Further tweak.

	PR c++/70067
	* tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the
	same type.

2016-03-03  Jason Merrill  <jason@redhat.com>

	* call.c (build_aggr_conv): Use get_nsdmi.

	PR c++/51406
	* typeck.c (build_static_cast_1): Avoid folding back to lvalue.

	PR c++/67364
	* constexpr.c (cxx_eval_component_reference): Just return an empty
	CONSTRUCTOR for an empty class.

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

	* call.c (build_op_delete_call, build_over_call): Check mark_used
	return value.
	* class.c (resolve_address_of_overloaded_function): Likewise.
	* decl.c (cxx_maybe_build_cleanup): Likewise.
	* pt.c (gen_elem_of_pack_expansion_instantiation, tsubst_baselink,
	tsubst_qualified_id, tsubst_copy, tsubst_copy_and_build): Likewise.
	* rtti.c (build_dynamic_cast_1): Likewise.
	* semantics.c (process_outer_var_ref): Likewise.
	* typeck.c (build_class_member_access_expr,
	cp_build_function_call_vec, cp_build_addr_expr_1): Likewise.

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

	PR c++/69261
	* constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR.

2016-03-01  Markus Trippelsdorf  <markus@trippelsdorf.de>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/68087
	* constexpr.c (cxx_eval_array_reference): Use tree_fits_shwi_p before
	tree_to_shwi to avoid ICEs.

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

	PR c++/67104
	* constexpr.c (array_index_cmp, find_array_ctor_elt): New.
	(cxx_eval_array_reference, cxx_eval_store_expression): Use them.

	PR c++/51489
	* constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
	the operands.

	PR c++/69995
	* constexpr.c (cxx_eval_call_expression): Unshare arg.
	(cxx_eval_constant_expression) [DECL_EXPR]: Unshare init.
	[TARGET_EXPR]: Unshare init.

2016-02-29  Jason Merrill  <jason@redhat.com>

	PR c++/69995
	* constexpr.c (cxx_eval_store_expression): Unshare init.

	PR c++/65985
	* constexpr.c (build_constexpr_constructor_member_initializers):
	Handle an additional STATEMENT_LIST.

2016-02-25  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	Backported from mainline
	2016-02-19  Jakub Jelinek  <jakub@redhat.com>
		    Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* Make-lang.in: Invoke gperf with -L C++.
	* cfns.gperf: Remove prototypes for hash and libc_name_p
	inlines.
	* cfns.h: Regenerated.
	* except.c (nothrow_libfn_p): Adjust.

2016-02-25  Jason Merrill  <jason@redhat.com>

	PR c++/67364
	* constexpr.c (cxx_eval_component_reference): Don't complain about
	unevaluated empty classes.

	PR c++/68049
	* tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE.

2016-02-24  Jason Merrill  <jason@redhat.com>

	PR c++/69323
	* pt.c (instantiate_class_template_1): Set
	processing_template_decl before substituting friend_type.

2016-02-19  Jason Merrill  <jason@redhat.com>

	PR c++/69743
	* call.c (remaining_arguments): No longer static.
	* cp-tree.h: Declare it.
	* pt.c (more_specialized_fn): Use it.

2016-02-17  Jason Merrill  <jason@redhat.com>

	PR c++/68585
	* constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection.

	PR c++/68679
	* decl2.c (reset_type_linkage_2): Look through member templates.

2016-02-15  Jason Merrill  <jason@redhat.com>

	PR c++/68890
	* constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check.

2016-02-10  Jason Merrill  <jason@redhat.com>

	PR c++/68926
	* pt.c (resolve_nondeduced_context): Add complain parm.
	(do_auto_deduction): Pass it.
	* cvt.c (convert_to_void): Likewise.
	* decl.c (cp_finish_decl): Likewise.
	* init.c (build_new): Likewise.
	* rtti.c (get_tinfo_decl_dynamic): Likewise.
	* semantics.c (finish_decltype_type): Likewise.
	* typeck.c (decay_conversion): Likewise.
	* cp-tree.h: Adjust declaration.
	* call.c (standard_conversion): Add complain parm, pass it along.
	(implicit_conversion): Pass it.

2016-02-10  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2016-02-08  Jakub Jelinek  <jakub@redhat.com>

	PR c++/59627
	* parser.c (cp_parser_omp_declare_reduction): Set assembler name
	of the DECL_OMP_DECLARE_REDUCTION_P decls.

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

	PR c++/69009
	* pt.c (partial_specialization_p, impartial_args): New.
	(instantiate_decl): Call impartial_args.

2016-01-27  Marek Polacek  <polacek@redhat.com>

	Backport from mainline
	2016-01-27  Marek Polacek  <polacek@redhat.com>

	PR c/68062
	* typeck.c (cp_build_binary_op): Promote operand to unsigned, if
	needed.  Add -Wsign-compare warning.

2016-01-27  Jason Merrill  <jason@redhat.com>

	PR c++/68949
	* optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias.
	* semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of
	maybe-in-charge *tor.

	PR c++/69131
	* method.c (walk_field_subobs): Add dtor_from_ctor parm.
	(process_subob_fn): Likewise.  Don't consider triviality if true.
	(synthesize_method_walk): Pass it.

2016-01-19  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2016-01-19  Marek Polacek  <polacek@redhat.com>

	PR c++/68965
	* pt.c (tsubst_copy): Mark elements in expanded vector as used.

2016-01-08  Marek Polacek  <polacek@redhat.com>

	PR c++/68449
	* constexpr.c (cxx_eval_constant_expression): Handle NULL initializer.

2016-01-07  Jason Merrill  <jason@redhat.com>

	PR c++/68983
	PR c++/67557
	* call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR.

2015-12-22  Jason Merrill  <jason@redhat.com>

	PR c++/66921
	* decl.c (cp_complete_array_type): Allow an initializer that
	already has array type.

	PR c++/67339
	* parser.c (cp_parser_elaborated_type_specifier): Use CLASS_TYPE_P
	rather than check for RECORD_TYPE.

2015-12-20  Jason Merrill  <jason@redhat.com>

	PR c++/67411
	* decl2.c (decl_maybe_constant_var_p): Use DECL_HAS_VALUE_EXPR_P.

	PR c++/67411
	* decl2.c (decl_maybe_constant_var_p): A proxy isn't constant.

2015-12-17  Jason Merrill  <jason@redhat.com>

	PR c++/67550
	* init.c (constant_value_1): Don't return a CONSTRUCTOR missing
	non-constant elements.

	PR c++/67576
	PR c++/25466
	* rtti.c (build_typeid): Use save_expr, not stabilize_reference.

2015-12-16  Joseph Myers  <joseph@codesourcery.com>

	PR c/68162
	* tree.c (c_build_qualified_type): Add extra arguments.

2015-12-16  Jason Merrill  <jason@redhat.com>

	PR c++/63628
	* pt.c (tsubst_pack_expansion): Also make dummy decls if
	retrieve_local_specialization fails.

2015-12-04  Markus Trippelsdorf  <markus@trippelsdorf.de>

	PR c++/67337
	* mangle.c (write_template_prefix): Guard against context==NULL.

2015-12-04  Release Manager

	* GCC 5.3.0 released.

2015-11-26  Jakub Jelinek  <jakub@redhat.com>

	PR c++/68508
	* cp-tree.h (cp_ubsan_maybe_instrument_downcast): Add INTYPE argument.
	* cp-ubsan.c (cp_ubsan_maybe_instrument_downcast): Likewise.  Use
	it instead of or in addition to TREE_TYPE (op).  Use
	is_properly_derived_from, return NULL_TREE if TREE_TYPE (intype) and
	TREE_TYPE (type) are the same type minus qualifiers.
	* typeck.c (build_static_cast_1): Adjust callers.

2015-11-25  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2015-11-20  Jakub Jelinek  <jakub@redhat.com>

	PR c++/67354
	* cp-tree.h (defer_mangling_aliases): Declare.
	(generate_mangling_aliases): New prototype.
	* decl2.c (defer_mangling_aliases): New variable.
	(note_mangling_alias): Use !defer_mangling_aliases
	instead of at_eof.
	(generate_mangling_aliases): No longer static. Clear
	defer_mangling_aliases.
	* optimize.c (maybe_thunk_body): Defer emitting mangling aliases
	if !defer_mangling_aliases until the fns are put into the same
	comdat group.

	2015-05-09  Aldy Hernandez  <aldyh@redhat.com>

	PR bootstrap/66085
	* decl2.c (note_mangling_alias): Declare arguments as unused.

	2015-05-08  Jason Merrill  <jason@redhat.com>

	* decl2.c (mangling_aliases): New variable.
	(note_mangling_alias, generate_mangling_aliases): New.
	(cp_write_global_declarations): Call generate_mangling_aliases.
	(generate_mangling_alias): Split out from...
	* mangle.c (mangle_decl): ...here.
	* cp-tree.h: Declare note_mangling_alias.

2015-11-25  Jason Merrill  <jason@redhat.com>

	PR c++/67941
	* lambda.c (maybe_add_lambda_conv_op): Mark _FUN as
	no_sanitize_undefined.

	PR c++/68422
	* cp-tree.h (PACK_EXPANSION_SIZEOF_P): New.
	* parser.c (cp_parser_sizeof_pack): Set it.
	* pt.c 	(tsubst_copy) [SIZEOF_EXPR]: Likewise.
	(tsubst_pack_expansion): Improve T... shortcut when set.

	PR c++/67813
	* constexpr.c (cxx_eval_store_expression): Always use *valp if
	set.

2015-11-25  Markus Trippelsdorf  <markus@trippelsdorf.de>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/68087
	* constexpr.c (cxx_eval_array_reference): Use tree_fits_shwi_p before
	tree_to_shwi to avoid ICEs.

2015-11-19  Jakub Jelinek  <jakub@redhat.com>
	    Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR c++/67409
	* decl.c (identify_goto): Add LOC and DIAG_KIND arguments, call
	emit_diagnostic instead of permerror.
	(check_previous_goto_1): Adjust identify_goto callers, treat all
	cases but crossing initialization and entering scope of decl with
	non-trivial dtor as unconditional hard errors.
	(check_goto): Use identify_goto.  Treat all cases but crossing
	initialization and entering scope of decl with non-trivial dtor
	as unconditional hard errors.

2015-10-20  Jason Merrill  <jason@redhat.com>

	PR c++/66583
	* init.c (innermost_aggr_scope): New.
	(sort_mem_initializers): Use it.

	PR c++/67557
	* call.c (is_base_field_ref): New.
	(unsafe_copy_elision_p): New.
	(build_over_call): Use it.

2015-09-12  Paolo Carlini  <paolo.carlini@oracle.com>

	Backport from mainline
	2015-06-15  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/51048
	* decl2.c (no_linkage_error): Do not issue a permerror if the DECL
	using a local type is pure virtual.

2015-09-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/67522
	* semantics.c (handle_omp_array_sections_1): Only run
	type_dependent_expression_p on VAR_DECL/PARM_DECLs.
	(finish_omp_clauses) <case OMP_CLAUSE_LINEAR>: Likewise.
	Don't adjust OMP_CLAUSE_LINEAR_STEP if OMP_CLAUSE_DECL
	is not a VAR_DECL/PARM_DECL.

	PR c++/67511
	* semantics.c (handle_omp_for_class_iterator): Don't wrap
	error_mark_node into a NOP_EXPR to void_type_node.

2015-09-09  Jakub Jelinek  <jakub@redhat.com>

	PR c++/67504
	* parser.c (cp_parser_omp_clause_collapse): Test tree_fits_shwi_p
	before INTEGRAL_TYPE_P test.

2015-09-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/67369
	* pt.c (tsubst_copy, [case FUNCTION_DECL]): Do not call tsubst
	if the first argument isn't a template.

2015-08-17  Jason Merrill  <jason@redhat.com>

	PR c++/66957
	* search.c (protected_accessible_p): Revert fix for 38579.

2015-08-17  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/66919
	* pt.c (tsubst_copy): Pass complain to mark_used, check return value.

2015-08-17  Jason Merrill  <jason@redhat.com>

	PR c++/67244
	* pt.c (tsubst_copy_and_build): Call insert_pending_capture_proxies.

	PR c++/65734
	* class.c (fixup_attribute_variants): Respect TYPE_USER_ALIGN.

	PR c++/67104
	* constexpr.c (cxx_eval_array_reference): Handle sparse
	CONSTRUCTORs.

2015-08-14  Jason Merrill  <jason@redhat.com>

	PR c++/65974
	* decl2.c (mark_vtable_entries): Suppress -Wdeprecated.

2015-08-14  Patrick Palka  <ppalka@gcc.gnu.org>

	PR c++/66857
	* cvt.c (ocp_convert): Don't call scalar_constant_value when
	converting to a class type.

2015-08-12  Jason Merrill  <jason@redhat.com>

	PR c++/67161
	* error.c (dump_decl) [TEMPLATE_ID_EXPR]: Pass
	TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS.

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

	PR c++/66533
	* parser.c (cp_parser_primary_expression): Don't skip to the end
	of the statement if we're parsing tentatively.

	PR c++/67130
	PR c++/67131
	PR c++/66260
	* mangle.c (write_expression) [TEMPLATE_ID_EXPR]: Handle variable
	templates.
	* pt.c (tsubst_copy_and_build): Check for argument substitution
	failure.

2015-08-05  Jason Merrill  <jason@redhat.com>

	PR c++/66260
	PR c++/66596
	PR c++/66649
	PR c++/66923
	* pt.c (lookup_template_variable): Use NULL_TREE for type.
	(instantiate_template_1): Also set DECL_TI_ARGS based on
	the immediate parent.
	(tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: Handle variable templates.
	(finish_template_variable): Add complain parm.
	* cp-tree.h: Adjust.

	PR c++/65195
	PR c++/66619
	* semantics.c (finish_id_expression): Call convert_from_reference
	for variable template.

	PR c++/66336
	* pt.c (find_parameter_packs_r): Handle variable templates.
	(variable_template_specialization_p): New.
	* cp-tree.h: Declare it.

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

	DR 1558
	PR c++/67021
	* pt.c (tsubst_decl) [TYPE_DECL]: Clear TYPE_DEPENDENT_P_VALID.

2015-07-16  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2015-07-08  Marek Polacek  <polacek@redhat.com>

	PR c++/66748
	* tree.c (handle_abi_tag_attribute): Check for CLASS_TYPE_P before
	accessing TYPE_LANG_SPECIFIC node.

2015-07-16  Release Manager

	* GCC 5.2.0 released.

2015-07-10  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2015-07-08  Jakub Jelinek  <jakub@redhat.com>

	* decl.c (grokfndecl): Handle flag_openmp_simd like flag_openmp.
	* pt.c (apply_late_template_attributes): Likewise.

2015-07-02  Jason Merrill  <jason@redhat.com>

	PR c++/66743
	* pt.c (for_each_template_parm_r) [UNDERLYING_TYPE]: Use
	TYPE_VALUES_RAW rather than TYPE_FIELDS.

2015-06-30  Jason Merrill  <jason@redhat.com>

	PR c++/65945
	* decl.c (cxx_init_decl_processing): Set TYPE_ALIGN of nullptr_t.
	* class.c (layout_nonempty_base_or_field): Warn if that affects
	the offset of a field.

2015-06-29  Adam Butcher  <adam@jessamine.co.uk>

	PR c++/65750
	* parser.c (cp_parser_simple_type_specifier): Don't synthesize
	implicit template parm if 'auto' is a placeholder for trailing
	return type.

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

	PR c++/66216
	* class.c (finish_struct): Call fixup_attribute_variants.

	PR c++/66067
	* mangle.c (write_template_args): Handle 0 length TREE_VEC.

2015-06-24  Jason Merrill  <jason@redhat.com>

	PR c++/65919
	* mangle.c (mangle_decl): Always SET_IDENTIFIER_GLOBAL_VALUE.
	(decl_implicit_alias_p): Split out from maybe_remove_implicit_alias.
	* cp-tree.h (DECL_REALLY_EXTERN): Handle null DECL_LANG_SPECIFIC.

	PR c++/66647
	* pt.c (dependent_type_p_r): Check for dependent alias template
	specialization sooner.

	PR c++/66501
	* init.c (vec_copy_assign_is_trivial): New.
	(build_vec_init): Use it.

2015-06-24  Mikhail Maltsev  <maltsevm@gmail.com>

	Backport from mainline:
	2015-06-20  Mikhail Maltsev  <maltsevm@gmail.com>

	PR c++/65882
	* call.c (build_new_op_1): Check tf_warning flag in all cases.

2015-06-23  Jason Merrill  <jason@redhat.com>

	PR c++/65879
	* tree.c (no_linkage_check): Skip the 'this' pointer.

2015-06-19  Jason Merrill  <jason@redhat.com>

	PR c++/66515
	* call.c (implicit_conversion): Call reshape_init here, early.
	(build_aggr_conv): Not here.

	PR c++/66585
	* pt.c (instantiate_class_template_1): Clear
	cp_unevaluated_operand and c_inhibit_evaluation_warnings.

	PR c++/65880
	* decl.c (build_ptrmemfunc_type): Check TYPE_GET_PTRMEMFUNC_TYPE after
	cv-qualifiers.

	PR c++/65973
	* constexpr.c (build_constexpr_constructor_member_initializers):
	Handle an empty STATEMENT_LIST.

	PR c++/65843
	* pt.c (tsubst_copy_and_build): Register a capture proxy in
	local_specializations.

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

	PR c++/66001
	* constexpr.c (cxx_eval_constant_expression): Handle TRY_BLOCK and
	TRY_FINALLY_EXPR.
	(potential_constant_expression_1): Likewise.

2015-06-17  Jakub Jelinek  <jakub@redhat.com>

	PR c++/66571
	* pt.c (tsubst_omp_clause_decl): New function.
	(tsubst_omp_clauses): Use it or tsubst_copy instead of
	tsubst_expr on OMP_CLAUSE_DECL.

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

	PR c++/66536
	* tree.c (replace_placeholders_r) [CONSTRUCTOR]: Handle type
	mismatch.

	PR c++/58063
	* tree.c (bot_manip): Remap SAVE_EXPR.

	PR c++/66387
	* pt.c (tsubst_copy) [VAR_DECL]: Use process_outer_var_ref.

	PR c++/66450
	* constexpr.c (cxx_eval_store_expression): Avoid messing up outer
	ctx->ctor.

	PR c++/66289
	* cp-tree.h (TEMPLATE_DECL_COMPLEX_ALIAS_P): New.
	* pt.c (push_template_decl_real): Set it.
	(dependent_alias_template_spec_p): Use it.
	(dependent_type_p_r): Use dependent_alias_template_spec_p.
	(uses_all_template_parms_data, uses_all_template_parms_r)
	(complex_alias_template_p): New.
	(get_template_parm_index): Handle BOUND_TEMPLATE_TEMPLATE_PARM.

2015-06-12  Jason Merrill  <jason@redhat.com>

	PR c++/65719
	* pt.c (tsubst_decl) [VAR_DECL]: Mark namespace-scope
	variables as DECL_NOT_REALLY_EXTERN.

2015-06-11  Jason Merrill  <jason@redhat.com>

	PR c++/66445
	* constexpr.c (potential_constant_expression_1): Handle a
	DECL_EXPR of TYPE_DECL.

2015-06-11  Pierre-Marie de Rodat  <derodat@adacore.com>

	* decl.c (cxx_init_decl_processing): Register the main
	translation unit through the new debug hook.

2015-06-09  Jason Merrill  <jason@redhat.com>

	PR c++/66387
	* semantics.c (process_outer_var_ref): Make sure the value is
	actually constant before returning it.
	* typeck.c (cp_build_array_ref): Allow subscripting non-lvalue
	array.

	PR c++/66383
	* tree.c (replace_placeholders_r): Handle placeholders for an
	outer object.
	* typeck2.c (store_init_value): Only replace_placeholders for
	objects of class type.

2015-06-05  Jason Merrill  <jason@redhat.com>

	PR c++/66405
	* pt.c (argument_pack_element_is_expansion_p): Return 2 if
	the expansion has extra args.
	(use_pack_expansion_extra_args_p): Return true in that case.

	PR c++/66405
	* pt.c (type_dependent_expression_p): EXPR_PACK_EXPANSION is
	dependent even if it has a type.

2015-06-05  Jason Merrill  <jason@redhat.com>

	PR c++/65942
	* decl2.c (mark_used): Don't always instantiate constexpr fns.
	* constexpr.c (cxx_eval_call_expression): Instantiate them here.

2015-06-04  Marek Polacek  <polacek@redhat.com>

	Backported from mainline
	2015-06-03  Marek Polacek  <polacek@redhat.com>

	PR sanitizer/66190
	* cp-gimplify.c (struct cp_genericize_data): Add no_sanitize_p.
	(cp_genericize_r): Don't instrument static initializers.
	(cp_genericize_tree): Initialize wtd.no_sanitize_p.

2015-05-31  Jason Merrill  <jason@redhat.com>

	PR c++/66320
	* constexpr.c (cxx_eval_constant_expression): Treat a placeholder
	with the wrong type as non-constant.

	* pt.c (tsubst_decl) [VAR_DECL]: SET_DECL_IMPLICIT_INSTANTIATION
	before register_specialization.

2015-05-22  Jakub Jelinek  <jakub@redhat.com>

	Backported from mainline
	2015-05-19  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/66199
	* parser.c (cp_parser_omp_for_loop): Don't add
	OMP_CLAUSE_SHARED to OMP_PARALLEL_CLAUSES when moving
	OMP_CLAUSE_LASTPRIVATE clause to OMP_FOR_CLAUSES.
	(cp_parser_omp_teams): Set OMP_TEAMS_COMBINED for combined
	constructs.

2015-05-18  Jason Merrill  <jason@redhat.com>

	* pt.c (tsubst_decl) [VAR_DECL]: Call coerce_innermost_template_parms.
	(determine_specialization): Call coerce_template_parms.

	* tree.c (strip_typedefs_expr) [TRAIT_EXPR]: Fix typo.
	(strip_typedefs) [DECLTYPE_TYPE]: Fix typedef of decltype.
	[TREE_LIST]: Fix no-change case.

2015-05-07  Jason Merrill  <jason@redhat.com>

	PR c++/59012
	* parser.c (cp_parser_std_attribute_list): Handle attribute expansion.
	(cp_parser_std_attribute_spec): Handle alignas pack expansion.
	* decl2.c (is_late_template_attribute): An attribute exp is dependent.
	* pt.c (make_pack_expansion): Allow TREE_LIST for attribute expansion.
	(apply_late_template_attributes): Handle attribute pack expansion.

	DR 1467
	PR c++/51747
	* typeck2.c (digest_init_r): Fix single element list.

2015-05-05  Jason Merrill  <jason@redhat.com>

	* decl.c (start_decl): Don't push the plain VAR_DECL for a
	variable template.

2015-05-04  Paolo Carlini  <paolo.carlini@oracle.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/66007
	* typeck2.c (check_narrowing): Check by-hand that the pedwarn didn't
	result in an actual error.

2015-05-01  Paolo Carlini  <paolo.carlini@oracle.com>
	    Prathamesh Kulharni  <prathamesh.kulkarni@linaro.org>

	PR c++/65858
	* typeck2.c (check_narrowing): Set ok = true when pedwarn returns
	false.

2015-04-30  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/65801
	* typeck2.c (check_narrowing): In C++11 mode too, -Wno-narrowing
	suppresses the diagnostic.

2015-04-30  Jason Merrill  <jason@redhat.com>

	PR c++/65876
	* constexpr.c (cxx_eval_call_expression): Fail gracefully if cgraph
	threw away DECL_SAVED_TREE.

2015-04-29  Thomas Schwinge  <thomas@codesourcery.com>

	Backport from trunk r222564:

	2015-04-29  Thomas Schwinge  <thomas@codesourcery.com>

	* pt.c (tsubst_expr) <OMP_TARGET_UPDATE>: Use
	OMP_TARGET_UPDATE_CLAUSES instead of OMP_CLAUSES.

2015-04-28  Jason Merrill  <jason@redhat.com>

	PR c++/65896
	* constexpr.c (cxx_eval_store_expression): Don't try to actually
	store an empty class.

2015-04-22  Marek Polacek  <polacek@redhat.com>

	PR c++/65727
	* lambda.c (maybe_resolve_dummy): Handle null return.

2015-04-22  Jason Merrill  <jason@redhat.com>

	PR c++/65695
	* cvt.c (cp_fold_convert): Avoid wrapping PTRMEM_CST in NOP_EXPR.

	PR c++/65721
	* name-lookup.c (do_class_using_decl): Complain about specifying
	the current class even if there are dependent bases.

2015-04-22  David Krauss  <david_work@me.com>

	PR c++/59766
	* decl.c (grokdeclarator): Do not flag friends with deduced return.

2015-04-22  Release Manager

	* GCC 5.1.0 released.

2015-04-20  Ilya Verbin  <ilya.verbin@intel.com>

	* parser.c (cp_parser_omp_target_update): Add missed %> to error_at ().

2015-04-12  Jakub Jelinek  <jakub@redhat.com>

	PR c++/65736
	* constexpr.c (cxx_eval_pointer_plus_expression): Don't fold for VLAs,
	don't fold if op01 isn't divisible by TYPE_SIZE_UNIT.  Convert
	the expression to the original type at the end.

2015-04-09  Jakub Jelinek  <jakub@redhat.com>

	PR c++/65690
	* tree.c (cp_build_qualified_type_real): Copy TYPE_ALIGN and
	TYPE_USER_ALIGN.

	PR c++/65690
	* tree.c (build_cplus_array_type): Layout type before variants are
	set, but copy over TYPE_SIZE and TYPE_SIZE_UNIT from the main
	variant.

2015-04-03  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/64085
	* lambda.c (add_capture): Use dependent_type_p for capture by
	reference too.

2015-04-02  Marek Polacek  <polacek@redhat.com>

	PR c++/65642
	* constexpr.c (cxx_eval_pointer_plus_expression): Call
	cxx_eval_constant_expression on the first operand.

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

	PR c++/65625
	* decl.c (make_typename_type): Handle seeing a variable template.

2015-04-01  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/56100
	* pt.c (instantiating_current_function_p): New.
	* name-lookup.c (pushdecl_maybe_friend_1): Use it.
	* cp-tree.h (instantiating_current_function_p): Declare.

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

	PR c++/65646
	* decl.c (grokvardecl): Don't call check_explicit_specialization
	for non-template members of a class template.

2015-04-01  Marek Polacek  <polacek@redhat.com>

	PR c++/65554
	* class.c (finish_struct): Require that the second field of a
	user-defined initializer_list be of size type.

2015-03-31  Marek Polacek  <polacek@redhat.com>

	PR c++/65390
	* tree.c (build_cplus_array_type): Use dependent_type_p rather than
	checking for constness.

2015-03-30  Marek Polacek  <polacek@redhat.com>

	PR c++/65398
	* constexpr.c (cxx_fold_indirect_ref): Don't perform the
	 *(&A[i] p+ j) => A[i + j] transformation here.
	(cxx_eval_pointer_plus_expression): New function.
	(cxx_eval_constant_expression): Use it here.

2015-03-27  Tobias Burnus  <burnus@net-b.de>

	PR c/65586
	* parser.c (cp_parser_omp_for, cp_parser_omp_parallel,
	cp_parser_omp_distribute, cp_parser_omp_teams, cp_parser_omp_target,
	cp_parser_omp_declare): Don't show error for skipped omp pragmas with
	-fopenmp-simd.

2015-03-27  Marek Polacek  <polacek@redhat.com>

	PR c++/65556
	* semantics.c (finish_switch_cond): If the unlowered type is not an
	enum, use the type of the condition.

2015-03-27  Jason Merrill  <jason@redhat.com>

	PR c++/65509
	* decl.c (make_rtl_for_nonlocal_decl): Don't defer static
	constants.

2015-03-26  Mikhail Maltsev  <maltsevm@gmail.com>

	PR c++/65154
	* init.c (build_vec_init): Fix initializing aggregates
	with empty init list.

2015-03-26  Jason Merrill  <jason@redhat.com>

	PR c++/65525
	* constexpr.c (potential_constant_expression_1): Handle MEM_REF.

2015-03-25  Marek Polacek  <polacek@redhat.com>

	PR c++/65558
	* name-lookup.c (handle_namespace_attrs): Ignore abi_tag attribute
	on an anonymous namespace.

2015-03-25  Marek Polacek  <polacek@redhat.com>

	PR c++/61670
	* class.c (remove_zero_width_bit_fields): Check for null DECL_SIZE.

2015-03-24  Jason Merrill  <jason@redhat.com>

	PR c++/65046
	* cp-tree.h (NAMESPACE_IS_INLINE): Remove.
	* parser.c (cp_parser_namespace_definition): Don't set it.
	* name-lookup.c (handle_namespace_attrs): Check
	DECL_NAMESPACE_ASSOCIATIONS instead.

	PR c++/65498
	* pt.c (get_mostly_instantiated_function_type): Just return the
	type of the partially instantiated template in DECL_TI_TEMPLATE.

2015-03-20  Marek Polacek  <polacek@redhat.com>

	PR c++/65398
	* constexpr.c (cxx_fold_indirect_ref): Transform *(&A[i] p+ j) into
	A[i + j].

2015-03-20  Marek Polacek  <polacek@redhat.com>

	PR c++/65072
	* typeck.c (lookup_anon_field): Make sure we're dealing with the main
	variant.

2015-03-19  Jason Merrill  <jason@redhat.com>

	PR c++/65046
	Automatically propagate ABI tags to variables and functions
	from their (return) type.
	* class.c (check_tag): Handle variables and functions.
	(mark_or_check_attr_tags): Split out from find_abi_tags_r.
	(mark_or_check_tags): Likewise.
	(mark_abi_tags): Use it.  Rename from mark_type_abi_tags.
	(check_abi_tags): Add single argument overload for decls.
	Handle inheriting tags for decls.
	* mangle.c (write_mangled_name): Call it.
	(mangle_return_type_p): Split out from write_encoding.
	(unmangled_name_p): Split out from write_mangled_name.
	(write_mangled_name): Ignore abi_tag on namespace.
	* cp-tree.h (NAMESPACE_IS_INLINE): Replace NAMESPACE_ABI_TAG.
	* parser.c (cp_parser_namespace_definition): Set it.
	* name-lookup.c (handle_namespace_attrs): Use arguments. Warn
	about abi_tag attribute on non-inline namespace.
	* tree.c (check_abi_tag_args): Split out from handle_abi_tag_attribute.
	(handle_abi_tag_attribute): Allow tags on variables.

2015-03-19  Jakub Jelinek  <jakub@redhat.com>

	* decl2.c (cplus_decl_attributes): Also add "omp declare target"
	attribute for DECL_EXTERNAL VAR_DECLs.

2015-03-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/65340
	* call.c (build_over_call): Pass the tsubst_flags_t argument to
	mark_used.
	* decl2.c (mark_used): Inline the require_deduced_type call and
	guard the error call.

2015-03-16  Jason Merrill  <jason@redhat.com>

	PR c++/65061
	* parser.c (cp_parser_template_name): Call strip_using_decl.

2015-03-16  Marek Polacek  <polacek@redhat.com>

	DR 1688
	PR c++/65327
	* decl.c (grokdeclarator): Allow volatile and constexpr together.

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

	PR c++/65323
	* decl.c (check_default_argument): Don't call
	maybe_warn_zero_as_null_pointer_constant.

2015-03-11  Aldy Hernandez  <aldyh@redhat.com>

	* cp-gimplify.c (simple_empty_class_p): New.
	* cp-gimplify.c (cp_gimplify_expr): Handle RETURN_EXPR.  Abstract
	the code for empty class copies into simple_empty_class_p, and
	adapt it to handle COMPOUND_EXPRs.

2015-03-10  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/65370
	* decl.c (duplicate_decls): Call check_redeclaration_no_default_args
	only if the location of newdecl doesn't match the location of olddecl.

2015-03-10  Jakub Jelinek  <jakub@redhat.com>

	PR c++/65127
	* parser.c (parsing_nsdmi): Don't return true if current_class_ptr
	is not a PARM_DECL.

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

	PR c++/65333
	DR 1558
	* pt.c (dependent_type_p_r): Check both class and alias template args.

2015-03-10  Jakub Jelinek  <jakub@redhat.com>

	PR c/65120
	* parser.c (cp_parser_binary_expression): Check for tcc_comparison
	before preparing arguments to warn_logical_not_parentheses.
	Use maybe_constant_value on rhs.

2015-03-09  Jason Merrill  <jason@redhat.com>

	PR c++/65339
	* call.c: Don't call maybe_resolve_dummy when calling a constructor.

2015-03-09  Jakub Jelinek  <jakub@redhat.com>

	PR c/65120
	* parser.c (cp_parser_binary_expression): Don't warn for
	!!x == y or !b == y where b is bool.

2015-03-06  Aldy Hernandez  <aldyh@redhat.com>

	* ptree.c (cxx_print_lambda_node): New.
	(cxx_print_xnode): Handle LAMBDA_EXPR.

2015-03-03  Aldy Hernandez  <aldyh@redhat.com>

	PR c++/65295
	* constexpr.c (cxx_eval_constant_expression): Remove assert in
	RESULT_DECL handling.

2015-02-26  Marek Polacek  <polacek@redhat.com>

	PR c++/65202
	* constexpr.c (cxx_eval_constant_expression): Don't evaluate
	a RETURN_EXPR if its operand is null.

2015-02-25  Jason Merrill  <jason@redhat.com>

	PR c++/65209
	* decl2.c (constrain_visibility) [VISIBILITY_ANON]: Clear
	DECL_COMDAT.
	(constrain_visibility_for_template): Handle reference arguments.

	PR debug/58315
	* decl.c (start_preparsed_function): Use create_artificial_label
	for cdtor_label.

2015-02-17  Paolo Carlini  <paolo.carlini@oracle.com>
	    Jakub Jelinek  <jakub@redhat.com>

	PR c++/65075
	* constexpr.c (check_constexpr_bind_expr_vars): Allow
	implicit typedefs for lambda types.

2015-02-13  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60894
	* decl.c (lookup_and_check_tag): Use strip_using_decl.

2015-02-13  Jason Merrill  <jason@redhat.com>

	PR c++/65054
	* pt.c (template_args_equal): Look through conversions here.
	* tree.c (cp_tree_equal): Not here.

2015-02-13  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60211
	* parser.c (cp_parser_pragma): Diagnose PRAGMA_IVDEP at
	pragma_external context.

2015-02-13  Jason Merrill  <jason@redhat.com>

	PR c++/65051
	* call.c (reference_binding): Don't look for bad conversion
	if TO is incomplete.

2015-02-13  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/64970
	* decl.c (make_typename_type): Pass tsubst_flags_t argument
	to lookup_template_class.

2015-02-13  Jakub Jelinek  <jakub@redhat.com>

	PR ipa/65034
	* decl.c (start_preparsed_function): Use void_type_node instead
	of NULL_TREE as LABEL_DECL type.

2015-02-12  Jason Merrill  <jason@redhat.com>

	PR c++/64898
	* mangle.c (write_mangled_name): Fix test for variable template
	instantiation.

	* decl.c (begin_destructor_body): Condition clobber on
	-flifetime-dse.

2015-02-12 Andrea Azzarone <azzaronea@gmail.com>

	PR c++/64959
	* parser.c (lookup_literal_operator): Return all candidates.
	(cp_parser_userdef_char_literal): Simplify error handling.
	(cp_parser_userdef_numeric_literal):  Pass tf_warning_or_error.
	(cp_parser_userdef_string_literal): Pass tf_warning_or_error.
	Also give higher priority to standard string UDL operator.

2015-02-12  Jakub Jelinek  <jakub@redhat.com>

	PR debug/55541
	* cp-tree.h (BLOCK_OUTER_CURLY_BRACE_P): Define.
	* decl.c (poplevel): If functionbody, try not to create an extra
	BLOCK for function body and use subblocks as that, if it is non-NULL
	and doesn't have siblings.  Set BLOCK_OUTER_CURLY_BRACE_P flag.
	(outer_curly_brace_block): Use BLOCK_OUTER_CURLY_BRACE_P flag.

	PR sanitizer/64984
	* except.c (check_noexcept_r): Return NULL for internal
	calls.

2015-02-10  Jason Merrill  <jason@redhat.com>

	PR c++/64994
	* constexpr.c (cxx_eval_call_expression): Walk the clone list.

2015-02-10  Jan Hubicka  <hubicka@ucw.cz>

	PR ipa/64982
	* method.c (use_thunk): Do not check for stdarg thunks.

2015-02-06  Jason Merrill  <jason@redhat.com>

	PR c++/64899
	* init.c (build_vec_init): Handle default-initialized array with
	constexpr default constructor.

2015-02-04  Jakub Jelinek  <jakub@redhat.com>

	PR c/64824
	PR c/64868
	* parser.c (cp_parser_omp_atomic): Handle RDIV_EXPR.

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

	PR c++/64877
	* typeck.c (cp_build_binary_op): Avoid spurious -Waddress warnings
	for generated expressions.

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

	PR c++/64901
	* decl.c (duplicate_decls): Also duplicate DECL_FINAL_P and
	DECL_OVERRIDE_P.

2015-02-02  Jason Merrill  <jason@redhat.com>

	* tree.c (handle_abi_tag_attribute): Diagnose invalid arguments.

2015-01-30  Joseph Myers  <joseph@codesourcery.com>

	* class.c, except.c, parser.c, pt.c: All callers of fatal_error
	changed to pass input_location as first argument.

2015-01-29  Jakub Jelinek  <jakub@redhat.com>

	PR c++/64717
	* cp-ubsan.c (cp_ubsan_instrument_vptr): Don't wrap vptr
	into SAVE_EXPR.

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

	PR c++/49508
	* semantics.c (finish_return_stmt): Suppress -Wreturn-type on
	erroneous return statement.

	PR c++/64521
	* repo.c (repo_emit_p): It's OK for a clone to be extern at this
	point.

2015-01-27  Caroline Tice  <cmtice@google.com>

	Committing VTV Cywin/Ming patch for Patrick Wollgast
	* vtable-class-hierarchy.cc (vtv_generate_init_routine): Add
	check for not TARGET_PECOFF at the VTV_PREINIT_PRIORITY checks.

2015-01-27  Jason Merrill  <jason@redhat.com>

	PR c++/58597
	* lambda.c (maybe_add_lambda_conv_op): Check cfun rather than
	current_function_decl.

	PR c++/63889
	* pt.c (finish_template_variable): Move from semantics.c.
	Handle multiple template arg levels.  Handle coercion here.
	(lookup_template_variable): Not here.

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

	PR c++/64314
	PR c++/57510
	* typeck2.c (split_nonconstant_init_1): Remove a sub-CONSTRUCTOR
	that has been completely split out.

	PR c++/64701
	* constexpr.c (cxx_eval_constant_expression): Don't crash on C++
	statement codes.

	PR c++/64727
	* constexpr.c (cxx_eval_constant_expression): Allow for lvalue use
	of CONST_DECL.

2015-01-21  Jason Merrill  <jason@redhat.com>

	PR c++/64603
	* constexpr.c (cxx_eval_constant_expression): Only shortcut
	constant CONSTRUCTORs.

	PR c++/64647
	* constexpr.c (ensure_literal_type_for_constexpr_object): Don't
	give a hard error in a template instantiation.

2015-01-21  Richard Biener  <rguenther@suse.de>

	PR middle-end/64313
	* decl.c (duplicate_decls): Call set_builtin_decl_declared_p
	for builtins the user declared correctly.

2015-01-16  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58614
	* pt.c (unify): When BRACE_ENCLOSED_INITIALIZER_P (arg), handle
	TREE_TYPE (elt) == error_mark_node.

2015-01-15  Jan Hubicka  <hubicka@ucw.cz>

	PR tree-optimization/62053
	* tree.c (build_cplus_array_type): Layout type after variants are set.

2015-01-15  Jakub Jelinek  <jakub@redhat.com>

	* cp-gimplify.c (cp_genericize_r): Call
	cp_ubsan_maybe_instrument_member_call for member calls.
	(cp_ubsan_check_member_access_r): New function.
	(cp_genericize_tree): Call cp_ubsan_instrument_member_accesses.
	* cp-tree.h (cp_ubsan_maybe_instrument_member_call,
	cp_ubsan_instrument_member_accesses,
	cp_ubsan_maybe_instrument_downcast,
	cp_ubsan_maybe_instrument_cast_to_vbase): New prototypes.
	* cp-ubsan.c: New file.
	* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add cp/cp-ubsan.o.
	* constexpr.c (cxx_eval_call_expression): Return void_node
	for IFN_UBSAN_VPTR.
	(potential_constant_expression_1): Return true for
	UBSAN_NULL, UBSAN_BOUNDS and UBSAN_VPTR internal calls.
	* typeck.c (build_class_member_access_expr): Provide locus
	for COMPONENT_REFs.
	(build_static_cast_1): Instrument downcasts.
	* class.c (build_base_path): For -fsanitize=vptr and !fixed_type_p
	add ubsan instrumentation for virtual_access.
	* call.c: Include internal-fn.h.
	(set_flags_from_callee): Handle internal calls.

2015-01-15  Momchil Velikov  <momchil.velikov@gmail.com>

	PR c++/59366
	* name-lookup.c (pushdecl_maybe_friend_1): Hide friend functions
	and function templates, declared only in the class.
	* decl.c (duplicate_decls): Reveal hidden friend functions or
	function templates, if they are redeclared outside the class.

2015-01-15  Jason Merrill  <jason@redhat.com>

	PR c++/64356
	* constexpr.c (cxx_eval_binary_expression): Fix pasto.

	PR c++/63283
	* constexpr.c (potential_constant_expression_1): Handle reference
	args in templates.

2015-01-15  Thomas Schwinge  <thomas@codesourcery.com>
	    James Norris  <jnorris@codesourcery.com>
	    Cesar Philippidis  <cesar@codesourcery.com>
	    Ilmir Usmanov  <i.usmanov@samsung.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* parser.c: Include "gomp-constants.h".
	(cp_parser_omp_clause_map): Use enum gomp_map_kind instead of enum
	omp_clause_map_kind.  Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.
	Use OMP_CLAUSE_SET_MAP_KIND.
	(cp_parser_omp_construct, cp_parser_pragma): Handle
	PRAGMA_OACC_CACHE, PRAGMA_OACC_DATA, PRAGMA_OACC_ENTER_DATA,
	PRAGMA_OACC_EXIT_DATA, PRAGMA_OACC_KERNELS, PRAGMA_OACC_PARALLEL,
	PRAGMA_OACC_LOOP, PRAGMA_OACC_UPDATE, PRAGMA_OACC_WAIT.
	(cp_parser_omp_clause_name): Handle "async", "copy", "copyout",
	"create", "delete", "deviceptr", "host", "num_gangs",
	"num_workers", "present", "present_or_copy", "pcopy",
	"present_or_copyin", "pcopyin", "present_or_copyout", "pcopyout",
	"present_or_create", "pcreate", "vector_length", "wait".
	(OACC_DATA_CLAUSE_MASK, OACC_ENTER_DATA_CLAUSE_MASK)
	(OACC_EXIT_DATA_CLAUSE_MASK, OACC_KERNELS_CLAUSE_MASK)
	(OACC_LOOP_CLAUSE_MASK, OACC_PARALLEL_CLAUSE_MASK)
	(OACC_UPDATE_CLAUSE_MASK, OACC_WAIT_CLAUSE_MASK): New macros.
	(cp_parser_omp_var_list_no_open): Handle OMP_CLAUSE__CACHE_.
	(cp_parser_oacc_data_clause, cp_parser_oacc_data_clause_deviceptr)
	(cp_parser_oacc_clause_vector_length, cp_parser_oacc_wait_list)
	(cp_parser_oacc_clause_wait, cp_parser_omp_clause_num_gangs)
	(cp_parser_omp_clause_num_workers, cp_parser_oacc_clause_async)
	(cp_parser_oacc_all_clauses, cp_parser_oacc_cache)
	(cp_parser_oacc_data, cp_parser_oacc_enter_exit_data)
	(cp_parser_oacc_kernels, cp_parser_oacc_loop)
	(cp_parser_oacc_parallel, cp_parser_oacc_update)
	(cp_parser_oacc_wait): New functions.
	* cp-tree.h (finish_oacc_data, finish_oacc_kernels)
	(finish_oacc_parallel): New prototypes.
	* semantics.c: Include "gomp-constants.h".
	(handle_omp_array_sections): Handle GOMP_MAP_FORCE_DEVICEPTR.  Use
	GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.  Use
	OMP_CLAUSE_SET_MAP_KIND.
	(finish_omp_clauses): Handle OMP_CLAUSE_ASYNC,
	OMP_CLAUSE_VECTOR_LENGTH, OMP_CLAUSE_WAIT, OMP_CLAUSE__CACHE_.
	Use GOMP_MAP_* instead of OMP_CLAUSE_MAP_*.
	(finish_oacc_data, finish_oacc_kernels, finish_oacc_parallel): New
	functions.

2015-01-14  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58671
	* decl2.c (var_defined_without_dynamic_init): Handle gracefully
	self-initialization.

2015-01-13  Jason Merrill  <jason@redhat.com>

	PR c++/64356
	PR libstdc++/58777
	* constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
	pointer expressions.
	(cxx_eval_increment_expression): Likewise.

	PR c++/64514
	* pt.c (coerce_template_parameter_pack): Return NULL for a
	zero-length fixed parameter pack with a pack expansion arg.

	PR c++/64520
	* pt.c (unify): Don't try to deduce to std::initializer_list<T...>.

2015-01-12  Jason Merrill  <jason@redhat.com>

	PR c++/64547
	* constexpr.c (cxx_eval_call_expression): A call to a void
	function doesn't need to return a value.

2015-01-09  Michael Collison  <michael.collison@linaro.org>

	* call.c: Include hash-set.h, machmode.h, vec.h, double-int.h,
	input.h, alias.h, symtab.h, options.h, fold-const.h,
	wide-int.h, and inchash.h due to flattening of tree.h.
	* class.c: Ditto.
	* constexpr.c: Ditto.
	* cp-array-notation.c: Ditto.
	* cp-gimplify.c: Ditto.
	* cp-lang.c: Ditto.
	* cp-objcp-common.c: Ditto.
	* cvt.c: Ditto.
	* decl2.c: Ditto.
	* decl.c: Ditto.
	* dump.c: Ditto.
	* error.c: Ditto.
	* except.c: Ditto.
	* expr.c: Ditto.
	* friend.c: Ditto.
	* init.c: Ditto.
	* lambda.c: Ditto.
	* lex.c: Ditto.
	* mangle.c: Ditto.
	* name-lookup.c: Ditto.
	* optimize.c: Ditto.
	* parser.c: Ditto.
	* pt.c: Ditto.
	* ptree.c: Ditto.
	* repo.c: Ditto.
	* rtti.c: Ditto.
	* search.c: Ditto.
	* semantics.c: Ditto.
	* tree.c: Ditto.
	* typeck2.c: Ditto.
	* typeck.c: Ditto.

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

	* cp-gimplify.c (cp_genericize): Use do_ubsan_in_current_function.
	* decl.c (compute_array_index_type): Likewise.
	* init.c (build_vec_init): Likewise.
	* typeck.c (cp_build_binary_op): Likewise.

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

	* init.c (build_vec_init): Call ubsan_instrument_bounds to check
	whether an initializer-list is too big for a VLA.
	(throw_bad_array_length): Remove.
	* cp-tree.h: Remove prototype.

2015-01-08  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60753
	* decl.c (grokfndecl): Add bool parameter.
	(grokdeclarator): Adjust calls.
	(start_decl): Don't set DECL_DELETED_FN here.

2015-01-06  Jason Merrill  <jason@redhat.com>

	* parser.c (cp_parser_nested_name_specifier_opt): Diagnose invalid
	template-ids.

	PR c++/64455
	* pt.c (type_dependent_expression_p): Handle variable templates.
	* constexpr.c (potential_constant_expression_1): Use it.

	PR c++/64487
	* semantics.c (finish_offsetof): Handle templates here.
	* parser.c (cp_parser_builtin_offsetof): Not here.

	PR c++/64496
	* semantics.c (process_outer_var_ref): Diagnose lambda in local
	class NSDMI.

2015-01-06  Ville Voutilainen  <ville.voutilainen@gmail.com>

	PR c++/64489
	* class.c (check_field_decls): Make copy assignment operators
	complex only in c++98 mode.

2015-01-05  Trevor Saunders  <tsaunders@mozilla.com>

	PR c++/31397
	* class.c (check_for_override): Warn when a virtual function is an
	override not marked override.

2015-01-05  Trevor Saunders  <tsaunders@mozilla.com>

	* class.c (warn_hidden): Use auto_vec<tree> instead of tree_list to
	hold base_fndecls.
	(get_basefndecls): Adjust.

2015-01-05  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

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

	PR c/64423
	* typeck.c (cp_build_array_ref): Pass loc down to
	warn_array_subscript_with_type_char.


Copyright (C) 2015 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.
