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

	PR c++/63693
	* pt.c (resolve_typename_type): Use CLASSTYPE_PRIMARY_TEMPLATE_TYPE
	only on class types.

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

	PR c++/67240
	* constraint.cc (satisfy_implicit_conversion_constraint): Also
	check for NULL_TREE.

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

	* decl.c (grokvardecl): Simplify the latter.

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

	* decl.c (grokvardecl): Complete check added for c++/67065.

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

	* name-lookup.c (hidden_name_p): Handle OVERLOAD.

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

	PR c++/67065
	* decl.c (grokvardecl): Reject 'main' as global variable.

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

	PR c++/66957
	* search.c (protected_accessible_p): Remove redundant access_in_type.
	Add otype parm instead of walking binfo.
	(friend_accessible_p): Check SCOPE itself.  Handle class
	templates.  Pass through otype.
	(dfs_accessible_post): Handle all accessibility cases.
	(dfs_accessible_pre): New.
	(accessible_p): Use it.  Don't check protected access here.  Pass
	decl and otype to dfs_walk.
	(member_declared_in_type, dfs_access_in_type_pre): New.
	(access_in_type): Use dfs_access_in_type_pre.
	* friend.c (add_friend): Fix multiple friends with the same name.

	* lambda.c (current_nonlambda_scope): New.

2015-08-18  Trevor Saunders  <tbsaunde@tbsaunde.org>

	* call.c, class.c, cp-tree.h, decl.c, except.c, mangle.c,
	method.c, name-lookup.h, parser.c, parser.h, rtti.c,
	semantics.c, typeck2.c: Remove useless typedefs.

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

	DR 1155
	* pt.c (convert_nontype_argument): Allow internal linkage in C++11
	and up.

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

	PR c++/67216
	* call.c (null_ptr_cst_p): In C++11 return 'false' for 'false'.

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

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

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

	* constexpr.c (cxx_eval_store_expression): Don't set
	CONSTRUCTOR_NO_IMPLICIT_ZERO if we have an enclosing CONSTRUCTOR
	without it.
	(cxx_eval_array_reference): Check it.

	* except.c (check_noexcept_r): Assert that fn is POINTER_TYPE_P.

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

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

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

	PR c++/67104
	* constexpr.c (cxx_eval_array_reference): Fix typo.

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

	PR c++/67108
	* decl2.c (c_parse_final_cleanups): Set at_eof to 2 at end.
	* error.c (dump_template_bindings): Don't tsubst in that case.

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

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

	PR c++/67152
	* pt.c (process_partial_specialization): Call
	associate_classtype_constraints.

	PR c++/67159
	* constraint.cc (finish_template_introduction):
	SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT.

	PR c++/67142
	* pt.c (equal): Make sure tmpl is actually a template.

	PR c++/67144
	* call.c (joust): Only call more_constrained on decls.

2015-08-06  Andrew Sutton  <andrew.n.sutton@gmail.com>
	    Braden Obrzut  <admin@maniacsvault.net>
	    Jason Merrill  <jason@redhat.com>
	    Ville Voutilainen  <ville.voutilainen@gmail.com>

	Add C++ Concepts TS support.
	* constraint.cc, logic.cc: New files.
	* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add constraint.o and logic.o.
	(c++.tags): Also process .cc files.
	* call.c (enum rejection_reason_code): Add rr_constraint_failure.
	(print_z_candidate): Handle it.
	(constraint_failure): New.
	(add_function_candidate): Check constraints.
	(build_new_function_call): Handle evaluating concepts.
	(joust): Check more_constrained.
	* class.c (add_method): Check equivalently_constrained.
	(build_clone): Copy constraints.
	(currently_open_class): Return tree.
	(resolve_address_of_overloaded_function): Check constraints.
	* constexpr.c (cxx_eval_constant_expression): Handle REQUIRES_EXPR.
	(potential_constant_expression_1): Likewise.
	* cp-objcp-common.c (cp_tree_size): Handle CONSTRAINT_INFO.
	(cp_common_init_ts): Handle WILDCARD_DECL and REQUIRES_EXPR.
	* cp-tree.def: Add CONSTRAINT_INFO, WILDCARD_DECL, REQUIRES_EXPR,
	SIMPLE_REQ, TYPE_REQ, COMPOUND_REQ, NESTED_REQ, PRED_CONSTR,
	EXPR_CONSTR, TYPE_CONSTR, ICONV_CONSTR, DEDUCT_CONSTR,
	EXCEPT_CONSTR, PARM_CONSTR, CONJ_CONSTR, DISJ_CONSTR.
	* cp-tree.h (struct tree_constraint_info, check_nonnull)
	(check_constraint_info, CI_TEMPLATE_REQS, CI_DECLARATOR_REQS)
	(CI_ASSOCIATED_CONSTRAINTS, CI_NORMALIZED_CONSTRAINTS)
	(CI_ASSUMPTIONS, TEMPLATE_PARMS_CONSTRAINTS)
	(TEMPLATE_PARM_CONSTRAINTS, COMPOUND_REQ_NOEXCEPT_P)
	(PLACEHOLDER_TYPE_CONSTRAINTS, PRED_CONSTR_EXPR, EXPR_CONSTR_EXPR)
	(TYPE_CONSTR_TYPE, ICONV_CONSTR_EXPR, ICONV_CONSTR_TYPE)
	(DEDUCT_CONSTR_EXPR, DEDUCT_CONSTR_PATTERN)
	(DEDUCT_CONSTR_PLACEHOLDER, EXCEPT_CONSTR_EXPR, PARM_CONSTR_PARMS)
	(PARM_CONSTR_OPERAND, CONSTRAINT_VAR_P, CONSTRAINED_PARM_CONCEPT)
	(CONSTRAINED_PARM_EXTRA_ARGS, CONSTRAINED_PARM_PROTOTYPE)
	(DECL_DECLARED_CONCEPT_P, WILDCARD_PACK_P, struct cp_unevaluated)
	(struct local_specialization_stack, enum auto_deduction_context)
	(variable_concept_p, concept_template_p)
	(struct deferring_access_check_sentinel): New.
	(enum cp_tree_node_structure_enum): Add TS_CP_CONSTRAINT_INFO.
	(union lang_tree_node): Add constraint_info field.
	(struct lang_decl_base): Add concept_p flag.
	(enum cp_decl_spec): Add ds_concept.
	(struct cp_declarator): Add requires_clause.
	* cxx-pretty-print.c (cxx_pretty_printer::primary_expression)
	(cxx_pretty_printer::expression): Handle REQUIRES_EXPR,
	TRAIT_EXPR, *_CONSTR.
	(pp_cxx_parameter_declaration_clause): Accept a chain of
	PARM_DECLs.
	(cxx_pretty_printer::declarator): Print requires-clause.
	(pp_cxx_template_declaration): Likewise.
	(pp_cxx_trait_expression): Handle CPTK_IS_SAME_AS.
	(pp_cxx_requires_clause, pp_cxx_requirement)
	(pp_cxx_requirement_list, pp_cxx_requirement_body)
	(pp_cxx_requires_expr, pp_cxx_simple_requirement)
	(pp_cxx_type_requirement, pp_cxx_compound_requirement)
	(pp_cxx_nested_requirement, pp_cxx_predicate_constraint)
	(pp_cxx_expression_constraint, pp_cxx_type_constraint)
	(pp_cxx_implicit_conversion_constraint)
	(pp_cxx_argument_deduction_constraint)
	(pp_cxx_exception_constraint, pp_cxx_parameterized_constraint)
	(pp_cxx_conjunction, pp_cxx_disjunction, pp_cxx_constraint): New.
	* cxx-pretty-print.h: Declare them.
	* decl.c (decls_match): Compare constraints.
	(duplicate_decls): Likewise.  Remove constraints before freeing.
	(cxx_init_decl_processing): Call init_constraint_processing.
	(cp_finish_decl): Diagnose concept without initializer.
	(grokfndecl, grokvardecl): Handle concepts and constraints.
	(grokdeclarator): Handle concept, requires-clause.
	(grokparms): No longer static.
	(xref_tag_1): Check constraints.
	(finish_function): Call check_function_concept.
	(cp_tree_node_structure): Handle CONSTRAINT_INFO.
	(check_concept_refinement, is_concept_var, check_concept_fn): New.
	* decl2.c (check_classfn): Compare constraints.
	(mark_used): Don't instantiate concepts.
	* error.c (dump_template_decl): Print constraints.
	(dump_function_decl): Likewise.
	(dump_expr): Handle REQUIRES_EXPR, *_REQ, *_CONSTR.
	* lex.c (init_reswords): Set D_CXX_CONCEPTS.
	* method.c (implicitly_declare_fn): Copy constraints from
	inherited ctor.
	* parser.h (struct cp_parser): Add in_result_type_constraint_p and
	prevent_constrained_type_specifiers fields.
	* parser.c (make_call_declarator): Add requires_clause parm.
	(cp_parser_new): Clear prevent_constrained_type_specifiers.
	(cp_parser_primary_expression): Handle RID_IS_SAME_AS, RID_REQUIRES.
	(cp_parser_postfix_expression): Set prevent_constrained_type_specifiers.
	(cp_parser_trait_expr): Handle RID_IS_SAME_AS.
	(cp_parser_declaration): Handle concept introduction.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_template_parameter): Handle constrained parameter.
	(cp_parser_type_parameter): Handle constraints.
	(cp_parser_decl_specifier_seq): Handle RID_CONCEPT.
	(cp_parser_template_id): Handle partial concept id.
	(cp_parser_type_name): Add overload that takes typename_keyword_p.
	Handle constrained parameter.
	(cp_parser_nonclass_name): Handle concept names.
	(cp_parser_alias_declaration): Handle constraints.
	(cp_parser_late_return_type_opt): Also handle requires-clause.
	(cp_parser_type_id_1): Handle deduction constraint.
	(cp_parser_parameter_declaration): Handle constrained parameters.
	(cp_parser_class_specifier_1): Handle constraints.
	(cp_parser_template_declaration_after_parameters): Split out from
	cp_parser_template_declaration_after_export.
	(cp_parser_single_declaration): Handle constraints.
	(synthesize_implicit_template_parm): Handle constraints.
	(cp_parser_maybe_concept_name, cp_parser_maybe_partial_concept_id)
	(cp_parser_introduction_list, get_id_declarator)
	(get_unqualified_id, is_constrained_parameter)
	(cp_parser_check_constrained_type_parm)
	(cp_parser_constrained_type_template_parm)
	(cp_parser_constrained_template_template_parm)
	(constrained_non_type_template_parm, finish_constrained_parameter)
	(declares_constrained_type_template_parameter)
	(declares_constrained_template_template_parameter)
	(check_type_concept, cp_parser_maybe_constrained_type_specifier)
	(cp_parser_maybe_concept_name, cp_parser_maybe_partial_concept_id)
	(cp_parser_requires_clause, cp_parser_requires_clause_opt)
	(cp_parser_requires_expression)
	(cp_parser_requirement_parameter_list, cp_parser_requirement_body)
	(cp_parser_requirement_list, cp_parser_requirement)
	(cp_parser_simple_requirement, cp_parser_type_requirement)
	(cp_parser_compound_requirement, cp_parser_nested_requirement)
	(cp_parser_template_introduction)
	(cp_parser_explicit_template_declaration)
	(get_concept_from_constraint): New.
	* pt.c (local_specialization_stack): Implement.
	(maybe_new_partial_specialization): New.
	(maybe_process_partial_specialization): Use it.
	(retrieve_local_specialization, register_local_specialization)
	(template_parm_to_arg, build_template_decl, extract_fnparm_pack)
	(tsubst_expr): No longer static.
	(spec_hasher::equal): Compare constraints.
	(determine_specialization): Handle constraints.
	(check_explicit_specialization): Handle concepts.
	(process_template_parm): Handle constraints.
	(end_template_parm_list): Add overload taking no arguments.
	(process_partial_specialization): Handle concepts and constraints.
	Register partial specializations of variable templates.
	(redeclare_class_template): Handle constraints.
	(convert_template_argument): Handle WILDCARD_DECL.  Check
	is_compatible_template_arg.
	(coerce_template_parameter_pack): Handle wildcard packs.
	(coerce_template_parms): DR 1430 also applies to concepts.  Add
	overloads taking fewer parameters.
	(lookup_template_class_1): Handle constraints.
	(lookup_template_variable): Concepts are always bool.
	(finish_template_variable): Handle concepts and constraints.
	(tsubst_friend_class): Handle constraints.
	(gen_elem_of_pack_expansion_instantiation): Handle constraints.
	(tsubst_pack_expansion): Handle local parameters.
	(tsubst_decl) [FUNCTION_DECL]: Handle constraints.
	(tsubst) [TEMPLATE_TYPE_PARM]: Handle deduction constraints.
	(tsubst_copy_and_build): Handle REQUIRES_EXPR.
	(more_specialized_fn, more_specialized_partial_spec): Check constraints.
	(more_specialized_inst): Split out from most_specialized_instantiation.
	(most_specialized_partial_spec): Check constraints.
	(instantiate_decl): Never instantiate a concept.
	(value_dependent_expression_p): Handle REQUIRES_EXPR, TYPE_REQ,
	variable concepts.
	(type_dependent_expression_p): Handle WILDCARD_DECL, REQUIRES_EXPR.
	(instantiation_dependent_r): Handle REQUIRES_EXPR and concepts.
	(do_auto_deduction): Add overload taking tsubst flags and context enum.
	Handle constraints.
	(get_template_for_ordering, most_constrained_function)
	(is_compatible_template_arg, convert_wildcard_argument)
	(struct	constr_entry, struct constr_hasher, decl_constraints)
	(valid_constraints_p, get_constraints, set_constraints)
	(remove_constraints, init_constraint_processing): New.
	* ptree.c (cxx_print_xnode): Handle CONSTRAINT_INFO.
	* search.c (lookup_member): Do lookup in the open partial
	instantiation.
	* semantics.c (finish_template_template_parm): Handle constraints.
	(fixup_template_type): New.
	(finish_template_type): Call it.
	(trait_expr_value, finish_trait_expr): Handle CPTK_IS_SAME_AS.
	* tree.c (cp_tree_equal): Handle local parameters, CONSTRAINT_INFO.
	(cp_walk_subtrees): Handle REQUIRES_EXPR.
	* typeck.c (cp_build_function_call_vec): Check constraints.

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>

	* pt.c (determine_specialization): Print candidates after 'no
	match' error.

	* decl.c (cp_finish_decl): Tidy.
	* typeck.c (finish_class_member_access_expr): Use
	type_dependent_expression_p.
	* semantics.c (finish_id_expression): Use
	type_dependent_expression_p.  Don't build_qualified_name for a
	decl in non-dependent scope.
	* pt.c (type_dependent_expression_p): A TEMPLATE_ID_EXPR of an
	identifier is dependent.  Remove variable_template_p check.

	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.

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

	* pt.c (lookup_template_class_1): Clear elt.spec.

	* tree.c (build_target_expr): Copy the location from value.

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

	* parser.c (cp_parser_selection_statement): Move handling of
	semicolon body to ...
	(cp_parser_implicitly_scoped_statement): .. here.  Call
	warn_for_misleading_indentation even when the body is a
	semicolon.  Extract token_indent_infos corresponding to the
	guard, body and next tokens.  Adjust call to
	warn_for_misleading_indentation accordingly.  Take
	token_indent_info argument.
	(cp_parser_already_scoped_statement): Likewise.
	(cp_parser_selection_statement, cp_parser_iteration_statement):
	Extract a token_indent_info corresponding to the guard token.

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

	PR 66521
	* mangle.c : Add vtable-verify.h to include files.
	(get_mangled_vtable_map_var_name):  If the DECL_ASSEMBLER_NAME
	is "<anon>" get the real mangled name for the class instead, and
	also store the real mangled name in a vector for use later.

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

	PR sanitizer/66977
	* typeck.c (get_member_function_from_ptrfunc): Don't sanitize
	RSHIFT_EXPR.

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

	* class.c (check_for_override): Use DECL_SOURCE_LOCATION and "%qD"
	in warning_at instead of "%q+D" in warning.
	(warn_hidden): Likewise but use location_of.
	(finish_struct_anon_r): Likewise use DECL_SOURCE_LOCATION in permerror.
	(check_bitfield_decl, check_field_decls): Likewise in warning_at.
	(check_field_decls): Likewise for permerror.
	(explain_non_literal_class): Likewise for inform.
	(check_bases_and_members, layout_class_type): Likewise for warning_at.
	(note_name_declared_in_class): Use location_of in permerror.
	* name-lookup.c (diagnose_name_conflict): Use location_of in inform.
	(pushdecl_maybe_friend_1): Use DECL_SOURCE_LOCATION in pedwarn,
	inform, and warning_at.
	(check_for_out_of_scope_variable): Likewise for warning_at and
	permerror.

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

	* call.c (build_op_delete_call, convert_like_real, build_over_call):
	Use Use DECL_SOURCE_LOCATION and "%qD" in inform and pedwarn instead
	of "%q+D".
	* constexpr.c (explain_invalid_constexpr_fn): Likewise.
	* decl.c (duplicate_decls): Likewise for warning/warning_at.
	* except.c (maybe_noexcept_warning): Likewise.
	* friend.c (make_friend_class): Likewise for inform.
	* mangle.c (mangle_decl): Likewise for warning/warning_at.
	* method.c (process_subob_fn, walk_field_subobs,
	maybe_explain_implicit_delete): Likewise for inform.
	* parser.c (cp_parser_lambda_introducer): Likewise.
	* pt.c (check_specialization_namespace,
	maybe_process_partial_specialization): Likewise for permerror.
	(redeclare_class_template): Likewise for inform_n.
	(coerce_template_parms, tsubst_copy_and_build): Likewise for inform.
	* search.c (check_final_overrider): Likewise.
	* semantics.c (process_outer_var_ref): Likewise.

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

	* constexpr.c (cxx_eval_call_expression): Don't add this call to
	the hash table if !depth_ok.

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

	PR c++/66555
	PR c/54979
	* call.c (build_new_op_1): Call warn_tautological_cmp.
	* pt.c (tsubst_copy_and_build): Use sentinel to suppress tautological
	compare warnings.

2015-07-26  Patrick Palka  <ppalka@gcc.gnu.org>

	PR c++/18969
	* typeck.c (check_return_expr): Also do the basic return-value
	validity checking if processing_template_decl and yet types are
	not dependent.  Remove obsolete code.

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

	* decl.c (poplevel): Use Use DECL_SOURCE_LOCATION and "%qD"
	in warning_at instead of "%q+D" in warning.
	(warn_extern_redeclared_static): Likewise for inform.
	(check_redeclaration_no_default_args): Likewise for permerror.
	(duplicate_decls): Likewise.
	(check_previous_goto_1): Likewise for inform.
	(check_goto, start_decl, check_for_uninitialized_const_var,
	start_preparsed_function, finish_function§): Likewise.
	* decl2.c (build_anon_union_vars, c_parse_final_cleanups): Likewise.
	* init.c (sort_mem_initializers): Likewise.
	* typeck.c (convert_for_initialization): Likewise for inform.
	(maybe_warn_about_returning_address_of_local): Likewise.
	* typeck2.c (abstract_virtuals_error_sfinae): Likewise for inform.
	(cxx_incomplete_type_diagnostic): Likewise for emit_diagnostic.

2015-07-25  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-07-24  Jason Merrill  <jason@redhat.com>

	PR c++/64969
	* pt.c (splice_late_return_type): Correct deduced return type for
	abbreviated function template.

2015-07-24  Richard Biener  <rguenther@suse.de>

	* init.c (build_vec_init): Build iterator bound in the same
	type as the iterator.

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

	PR c++/66572
	* pt.c (tsubst_copy_and_build): Add warn_logical_op sentinel.

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

	PR c++/52987
	* parser.c (cp_parser_simple_declaration): Robustify check avoiding
	redundant error messages.

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

	* decl.c (grokdeclarator): For an erroneous template parameter
	propagate error_mark_node as type.

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

	PR c++/55095
	* typeck.c (cp_build_binary_op): Warn about left shift overflows.

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

	PR c++/65091
	* parser.c (cp_parser_unqualified_id): Don't accept ~x in a
	template if there is no type x in scope.

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

	PR c++/66850
	* pt.c (redeclare_class_template): Set the DECL_CONTEXTs of each
	template template parm in the redeclaration.
	(lookup_template_class_1): Peel off irrelevant template levels
	from current_template_parms before augmenting the argument
	list.

2015-07-14  Andrea Azzarone  <azzaronea@gmail.com>

	PR c++/65071
	* parser.c (cp_parser_sizeof_pack): Also consider template template
	parameters.

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

	* call.c (build_new_method_call_1): Call reshape_init.

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

	* pt.c (check_template_shadow): Emit error + inform instead of
	two errors.

2015-07-13  Patrick Palka  <ppalka@gcc.gnu.org>

	PR c++/65186
	* pt.c (invalid_nontype_parm_type_p): Accept a bound template
	template parm type under C++11 and later.

2015-07-12  Aldy Hernandez  <aldyh@redhat.com>

	* call.c: Fix double word typos.
	* cp-array-notation.c: Same.
	* cp-tree.h: Same.
	* init.c: Same.
	* name-lookup.c: Same.
	* parser.c: Same.

2015-07-10  Patrick Palka  <ppalka@gcc.gnu.org>

	PR c++/30044
	* pt.c (begin_template_parm_list): Add a dummy parameter level
	to current_template_parms.
	(end_template_parm_list): Remove the dummy parameter level
	before adding the real one.
	(tsubst): Don't attempt to substitute for template parameters
	corresponding to a dummy argument level.
	(template_parms_to_args): Remove obsolete hack for
	giving template template arguments the proper level.
	(splite_late_return_type): Remove obsolete hack for giving
	template template arguments the proper level.
	* error.c (dump_template_decl): Don't print dummy template
	levels.

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

	PR c++/54521
	* call.c (convert_like_real): Do not set LOOKUP_ONLYCONVERTING for
	the second step of copy-initialization.

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

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

	* parser.c (cp_parser_template_id): SET_EXPR_LOCATION.

2015-07-10  Eric Botcazou  <ebotcazou@adacore.com>

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

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

	* pt.c (instantiation_dependent_r) [TRAIT_EXPR]: Call
	value_dependent_expression_p.

	* cp-tree.h (struct cp_parameter_declarator): Rename ellipsis_p to
	template_parameter_pack_p.
	* parser.c (declarator_can_be_parameter_pack): False if
	parameter_pack_p is set.
	(make_parameter_declarator): Add template_parameter_pack_p parm.
	(cp_parser_template_parameter): Remove parameter pack parsing.
	(cp_parser_parameter_declaration): Handle all parameter packs.
	Tweak default argument permerror.

2015-07-09  Andrew Sutton  <andrew.n.sutton@gmail.com>

	* parser.c (cp_parser_default_type_template_argument)
	(cp_parser_default_template_template_argument): Factor out from
	cp_parser_type_parameter.

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

	* typeck.c (warn_args_num): Rename to error_args_num.
	(convert_arguments): Adjust calls.

2015-07-09  Andrew MacLeod  <amacleod@redhat.com>

	* cp-ubsan.c: Don't include alloc-pool.h or lto-streamer.h.

2015-07-08  Eric Botcazou  <ebotcazou@adacore.com>

	* decl2.c (cpp_check): Deal with IS_CONSTEXPR.

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

	* call.c: Adjust includes.
	* class.c: Likewise.
	* constexpr.c: Likewise.
	* cp-array-notation.c: Likewise.
	* cp-gimplify.c: Likewise.
	* cp-lang.c: Likewise.
	* cp-objcp-common.c: Likewise.
	* cp-ubsan.c: Likewise.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* dump.c: Likewise.
	* error.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* friend.c: Likewise.
	* init.c: Likewise.
	* lambda.c: Likewise.
	* lex.c: Likewise.
	* mangle.c: Likewise.
	* method.c: Likewise.
	* name-lookup.c: Likewise.
	* optimize.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* ptree.c: Likewise.
	* repo.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

2015-07-07  Eric Botcazou  <ebotcazou@adacore.com>

	* decl2.c (cpp_check): Deal with IS_MOVE_CONSTRUCTOR.

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

	* pt.c (reduce_template_parm_level): Also build the TYPE_DECL
	for a template template parameter.
	(tsubst_decl) [TEMPLATE_DECL]: Use the TEMPLATE_DECL built
	by reduce_template_parm_level.

	* pt.c (argument_pack_element_is_expansion_p): A decl pack is an
	expansion.

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-07-02  Andrew Sutton  <andrew.n.sutton@gmail.com>

	* pt.c (type_dependent_expression_p): Handle expressions
	that refer to variable templates.

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

	* lex.c (init_reswords): s/CXX0X/CXX11/.
	* parser.c (cp_lexer_get_preprocessor_token): Likewise.

	* mangle.c (write_CV_qualifiers_for_type, write_nested_name):
	Attribute mangling is now -fabi-version=10.

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

	PR c++/60365
	* parser.c (cp_parser_check_std_attribute): New.
	(cp_parser_std_attribute_list): Call it.

2015-07-01  Patrick Palka  <ppalka@gcc.gnu.org>

	PR c++/66686
	* pt.c (coerce_template_template_parm) [PARM_DECL]: Don't
	return 0 if tsubst returns a dependent type.

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

	PR debug/66653
	* decl2.c (is_late_template_attribute): True for tls_model.

	PR debug/66653
	* cp-tree.h (CP_DECL_THREAD_LOCAL_P): New.
	(DECL_GNU_TLS_P): Use DECL_LANG_SPECIFIC field.
	(SET_DECL_GNU_TLS_P): New.
	* call.c (make_temporary_var_for_ref_to_temp): Use
	CP_DECL_THREAD_LOCAL_P.
	(set_up_extended_ref_temp): Likewise.
	* decl.c (duplicate_decls, expand_static_init): Likewise.
	(redeclaration_error_message, grokvardecl): Likewise.
	(start_decl, register_dtor_fn, grokdeclarator): Likewise.
	* decl2.c (get_guard, var_needs_tls_wrapper): Likewise.
	(handle_tls_init): Likewise.
	* pt.c (tsubst_decl, tsubst_copy_and_build): Likewise.
	* semantics.c (finish_id_expression): Likewise.
	(handle_omp_array_sections_1, finish_omp_clauses): Likewise.
	(finish_omp_threadprivate): Likewise.
	* tree.c (decl_storage_duration): Likewise.
	* cp-gimplify.c (omp_var_to_track): Likewise.
	(cp_genericize_r): Check that it matches DECL_THREAD_LOCAL_P.
	* lex.c (retrofit_lang_decl): Return if DECL_LANG_SPECIFIC is
	already set.

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

	Implement N4197 - Adding u8 character literals
	* parser.c (cp_parser_primary_expression()): Treat CPP_UTF8CHAR
	and CPP_UTF8CHAR_USERDEF tokens;
	(cp_parser_parenthesized_expression_list()): Treat CPP_UTF8CHAR token.

2015-06-29  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/65977
	* decl.c (grokfndecl): Allow constexpr declarations of friend
	template specializations.

2015-06-29  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR fortran/66605
	* decl.c (finish_function): Call do_warn_unused_parameter.

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

	PR c/66322
	* decl.c (struct cp_switch): Add OUTSIDE_RANGE_P.
	(push_switch): Set OUTSIDE_RANGE_P.
	(pop_switch): Update c_do_switch_warnings call.
	(finish_case_label): Update c_add_case_label call.
	* semantics.c (finish_switch_cond): Don't warn about -Wswitch-bool
	here.

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

	* call.c: Use VECTOR_TYPE_P.
	* constexpr.c: Likewise.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* init.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.

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

	* call.c (set_up_extended_ref_temp): Use VAR_P.
	* class.c: Use VAR_P throughout.
	* constexpr.c (cxx_eval_constant_expression): Use VAR_P.
	* cp-array-notation.c (make_triplet_val_inv): Likewise.
	* decl.c: Use VAR_OR_FUNCTION_DECL_P or VAR_P
	throughout.
	* decl2.c: Likewise.
	* error.c (dump_decl): Use VAR_P.
	* mangle.c (decl_implicit_alias_p): Likewise.
	* parser.c: Use VAR_P throughout.
	* pt.c: Likewise.
	* semantics.c: Likewise.
	* vtable-class-hierarchy.c: Likewise.
	* tree.c (handle_abi_tag_attribute): Use VAR_OR_FUNCTION_DECL_P.

2015-06-27  Andreas Schwab  <schwab@linux-m68k.org>

	* pt.c (check_unstripped_args): Mark parameter as unused.

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

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

	PR c++/66684
	* typeck2.c (merge_exception_specifiers): Allow different
	noexcept-specifiers if we've had errors.

	PR c++/66255
	* pt.c (check_unstripped_args): Split out from...
	(retrieve_specialization): ...here.  Allow typedefs in the type of
	a non-type argument.

	PR c++/66067
	* mangle.c (write_nested_name): Limit TYPENAME_TYPE handling to
	TYPE_DECLs.
	* mangle.c (write_template_args): Handle 0 length TREE_VEC.

	PR c++/66654
	* typeck2.c (digest_init_r): Only expect reshaping if the class is
	aggregate.

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

	* cp-array-notation.c (expand_sec_reduce_builtin): Use INDIRECT_REF_P.
	* cp-ubsan.c (cp_ubsan_check_member_access_r): Likewise.

2015-06-25  Andrew MacLeod  <amacleod@redhat.com>

	* call.c: Remove ipa-ref.h and plugin-api.h from include list.
	* class.c: Likewise.
	* cp-ubsan.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* lambda.c: Likewise.
	* mangle.c: Likewise.
	* method.c: Likewise.
	* optimize.c: Likewise.
	* parser.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* vtable-class-hierarchy.c: Likewise.

2015-06-25  Richard Sandiford  <richard.sandiford@arm.com>

	* constexpr.c (constexpr_fundef_hasher): Inherit from ggc_ptr_hash
	rather than ggc_hasher.
	(constexpr_call_hasher): Likewise.
	* cp-tree.h (cxx_int_tree_map_hasher, named_label_hasher): Likewise.
	* decl.c (typename_hasher): Likewise.
	* mangle.c (conv_type_hasher): Likewise.
	* pt.c (spec_hasher): Likewise.
	* tree.c (cplus_array_hasher, list_hasher): Likewise.
	* typeck2.c (abstract_type_hasher): Likewise.

2015-06-25  Richard Sandiford  <richard.sandiford@arm.com>

	* class.c (fixed_type_or_null_ref_ht): Inherit from nofree_ptr_hash
	rather than pointer_hash.
	(fixed_type_or_null): Use nofree_ptr_hash instead of pointer_hash.
	* semantics.c (nrv_data): Likewise.
	* tree.c (verify_stmt_tree_r, verify_stmt_tree): Likewise.

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

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

	PR c++/66501
	* class.c (type_has_nontrivial_assignment): Remove.
	* cp-tree.h: Remove declaration.
	* init.c (vec_copy_assign_is_trivial): New.
	(build_vec_init): Use it.

2015-06-24  Edward Smith-Rowland  <3dw4rd@verizon.net>

	Implement N3928 - Extending static_assert
	* parser.c (cp_parser_static_assert): Support static_assert with
	no message string.  Supply an empty string in this case.
	* semantics.c (finish_static_assert): Don't try to print a message if
	the message strnig is empty.

2015-06-24  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-24  Patrick Palka  <ppalka@gcc.gnu.org>

	Revert:
	2015-06-23  Patrick Palka  <ppalka@gcc.gnu.org>

	PR c++/30044
	* parser.c (cp_parser_template_parameter_list): Update
	current_template_parms right after processing a paramater.
	* pt.c (template_parms_to_args): Remove obsolete hack for
	giving template template arguments the proper level.
	(check_default_tmpl_args): Account for tested template
	parameter_lists.
	(splite_late_return_type): Remove obsolete hack for giving
	template template arguments the proper level.

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

	PR c++/65811
	* decl.c (duplicate_decls): Adjust DECL_COMDAT of newdecl.

2015-06-23  Patrick Palka  <ppalka@gcc.gnu.org>

	PR c++/30044
	* parser.c (cp_parser_template_parameter_list): Update
	current_template_parms right after processing a paramater.
	* pt.c (template_parms_to_args): Remove obsolete hack for
	giving template template arguments the proper level.
	(check_default_tmpl_args): Account for tested template
	parameter_lists.
	(splite_late_return_type): Remove obsolete hack for giving
	template template arguments the proper level.

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

	PR c++/65879
	* decl.c (grokfndecl): Check the linkage of ctype, not just
	TYPE_ANONYMOUS_P.
	* tree.c (no_linkage_check): Skip the 'this' pointer.

	PR c++/66501
	* class.c (type_has_nontrivial_assignment): New.
	* init.c (build_vec_init): Use it.
	* cp-tree.h: Declare it.
	* method.c (trivial_fn_p): Templates aren't trivial.

	PR c++/66542
	* decl.c (expand_static_init): Make sure the destructor is callable
	here even if we have an initializer.

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

	* lang-specs.h: Pass "-o %g.s" to cc1plus for headers even if
	-fdump-ada-spec is passed.

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

	* decl2.c (cpp_check): Deal with HAS_DEPENDENT_TEMPLATE_ARGS.

2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Use declspecs->locations[ds_virtual].

2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Remove pointless code.

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

	PR c++/66515
	* call.c (implicit_conversion): Only reshape for classes.

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

	* pt.c (maybe_adjust_types_for_deduction): Use std::swap instead of
	manually swapping.
	* semantics.c (finish_omp_atomic): Likewise.
	* typeck.c (cp_build_array_ref): Likewise.

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

	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.
	* typeck.c (merge_types): build_ptrmemfunc_type before applying
	quals and attributes.

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

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

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

	* cp-lang.c (cxx_dwarf_name): Use anon_aggrname_p.
	* cp-tree.h (TYPE_ANONYMOUS_P): Likewise.
	* decl.c (grokdeclarator, xref_tag_1): Likewise.
	* error.c (dump_aggr_type): likewise.
	* pt.c (push_template_decl_real): Likewise.
	* name-lookup.c (make_anon_name): Use anon_aggrname_format.

2015-06-17  Andrew MacLeod  <amacleod@redhat.com>

	* call.c: Do not include input.h, line-map.h or is-a.h.
	* class.c: Likewise.
	* constexpr.c: Likewise.
	* cp-array-notation.c: Likewise.
	* cp-gimplify.c: Likewise.
	* cp-lang.c: Likewise.
	* cp-objcp-common.c: Likewise.
	* cp-tree.h: Likewise.
	* cp-ubsan.c: Likewise.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* dump.c: Likewise.
	* error.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* friend.c: Likewise.
	* init.c: Likewise.
	* lambda.c: Likewise.
	* lex.c: Likewise.
	* mangle.c: Likewise.
	* method.c: Likewise.
	* name-lookup.c: Likewise.
	* optimize.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* ptree.c: Likewise.
	* repo.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.
	* vtable-class-hierarchy.c: Likewise.

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

	PR c++/59682
	* parser.c (cp_parser_new_placement): Reject an empty expression-list.

2015-06-16  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.

2015-06-15  Nathan Sidwell  <nathan@acm.org>

	PR c++/58583
	* cp-tree.h (DECL_INSTANTIATING_NSDMI_P): New.
	* init.c (get_nsdmi): Check for DEFAULT_ARG in template case and
	protect it from recursive instantiation.

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-06-13  Patrick Palka  <ppalka@gcc.gnu.org>

	* call.c: Remove comment documenting the long-deleted
	function build_method_call.

2015-06-13  Patrick Palka  <ppalka@gcc.gnu.org>

	PR c++/65168
	* typeck.c (cp_build_binary_op): Warn when comparing an address
	of a reference against NULL.

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.

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

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

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

	DR 1467
	PR c++/51747
	* typeck2.c (digest_init_r): Replace previous change with
	gcc_unreachable.

	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.

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

	PR c++/65815
	* typeck2.c (digest_nsdmi_init): On aggregates use reshape_init.
	* init.c (expand_default_init): Likewise.

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

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

	* call.c : Adjust include files.
	* class.c : Likewise.
	* constexpr.c : Likewise.
	* cp-array-notation.c : Likewise.
	* cp-cilkplus.c : Likewise.
	* cp-gimplify.c : Likewise.
	* cp-lang.c : Likewise.
	* cp-objcp-common.c : Likewise.
	* cp-tree.h : Likewise.
	* cp-ubsan.c : Likewise.
	* cvt.c : Likewise.
	* decl.c : Likewise.
	* decl2.c : Likewise.
	* dump.c : Likewise.
	* error.c : Likewise.
	* except.c : Likewise.
	* expr.c : Likewise.
	* friend.c : Likewise.
	* init.c : Likewise.
	* lambda.c : Likewise.
	* lex.c : Likewise.
	* mangle.c : Likewise.
	* method.c : Likewise.
	* name-lookup.c : Likewise.
	* optimize.c : Likewise.
	* parser.c : Likewise.
	* pt.c : Likewise.
	* ptree.c : Likewise.
	* repo.c : Likewise.
	* rtti.c : Likewise.
	* search.c : Likewise.
	* semantics.c : Likewise.
	* tree.c : Likewise.
	* typeck.c : Likewise.
	* typeck2.c : Likewise.
	* vtable-class-hierarchy.c : Likewise.

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  Aldy Hernandez  <aldyh@redhat.com>

	* cp-objcp-common.c: Adjust comment for
	cxx_warn_unused_global_decl.
	* cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Remove
	(LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): New.
	* cp-tree.h (note_mangling_alias): Protoize.
	(cp_write_global_declarations): Remove.
	(cxx_post_compilation_parsing_cleanups): Protoize.
	* decl.c (wrapup_globals_for_namespace): Remove use of DATA
	argument.
	* decl2.c (mangling_aliases): New global.
	(build_java_method_aliases): New.  Adapted from
	collect_candidates_for_java_method_aliases.
	(collect_candidates_for_java_method_aliases): Remove.
	(build_java_method_aliases): Remove.
	(generate_mangling_aliases): New.
	(note_mangling_alias): New.  Moved from mangle_decl.
	(locus_at_end_of_parsing): New global.
	(c_parse_final_cleanups): Rename from
	cp_write_global_declarations.
	Use locus_at_end_of_parsing.
	Call generate_mangling_aliases.
	Rename call to collect_candidates_for_java_method_aliases into
	build_java_method_aliases.
	Remove call to finalize_compilation_unit.
	Move vtable handling into cxx_post_compilation_parsing_cleanups.
	Do not call check_global_declarations or
	emit_debug_global_declarations.
	(cxx_post_compilation_parsing_cleanups): New.
	* mangle.c (mangle_decl): Move code to note_mangling_alias.
	* name-lookup.c (do_namespace_alias): Call early_global_decl.

2015-06-05  Nathan Sidwell  <nathan@acm.org>

	PR c++/52595
	* parser.c (cp_parser_cache_defarg): Continue looking for
	declarators when scanning a potential template argument list of an
	NSDMI.

2015-06-04  Andrew MacLeod  <amacleod@redhat.com>

	* call.c: Adjust includes for restructured coretypes.h.
	* class.c: Likewise.
	* constexpr.c: Likewise.
	* cp-array-notation.c: Likewise.
	* cp-gimplify.c: Likewise.
	* cp-lang.c: Likewise.
	* cp-objcp-common.c: Likewise.
	* cp-tree.h: Likewise.
	* cp-ubsan.c: Likewise.
	* cvt.c: Likewise.
	* decl.c: Likewise.
	* decl2.c: Likewise.
	* dump.c: Likewise.
	* error.c: Likewise.
	* except.c: Likewise.
	* expr.c: Likewise.
	* friend.c: Likewise.
	* init.c: Likewise.
	* lambda.c: Likewise.
	* lex.c: Likewise.
	* mangle.c: Likewise.
	* method.c: Likewise.
	* name-lookup.c: Likewise.
	* optimize.c: Likewise.
	* parser.c: Likewise.
	* pt.c: Likewise.
	* ptree.c: Likewise.
	* repo.c: Likewise.
	* rtti.c: Likewise.
	* search.c: Likewise.
	* semantics.c: Likewise.
	* tree.c: Likewise.
	* typeck.c: Likewise.
	* typeck2.c: Likewise.
	* vtable-class-hierarchy.c: Likewise.

2015-06-04  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

	PR c++/66192
	PR target/66200
	* cp-tree.h (get_guard_cond): Adjust declaration
	* decl.c (expand_static_init): Use atomic load acquire
	and adjust call to get_guard_cond.
	* decl2.c (build_atomic_load_byte): New function.
	(get_guard_cond): Handle thread_safety.
	(one_static_initialization_or_destruction): Adjust call to
	get_guard_cond.

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

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

2015-06-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/66130
	* typeck.c (invalid_nonstatic_memfn_p): Add location_t parameter and
	use it in the diagnostic.
	(decay_conversion): Adjust call.
	* semantics.c (finish_decltype_type): Likewise.
	* call.c (resolve_args, build_new_op_1,
	perform_implicit_conversion_flags): Adjust calls.
	* cvt.c (ocp_convert, convert_to_void): Likewise.
	* cp-tree.h (invalid_nonstatic_memfn_p): Update declaration.

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

	* decl.c (check_tag_decl): Use declspecs->locations as locations in
	error_at and warning_at calls.

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-06-02  Andres Tiraboschi  <andres.tiraboschi@tallertechnologies.com>

	* decl.c (start_function): Call plugin before parsing.
	(finish_function): Call plugin after parsing.

2015-06-02  Patrick Palka <patrick@parcs.ath.cx>

	* cp-tree.h (init_error): Remove declaration.
	* error.c (scratch_pretty_printer): Rename to ...
	(actual_pretty_printer): ... this.
	(cxx_pp): Constify and update accordingly.
	(init_error): Remove definition.
	* lex.c (cxx_init): Do not call init_error.

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

	PR c++/61683
	* parser.c (cp_parser_mem_initializer): Allow for decltype-specifier.

2015-06-01  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.

	PR c++/44282
	* mangle.c (attr_strcmp): New.
	(write_CV_qualifiers_for_type): Also write out attributes that
	affect type identity.
	(write_type): Strip all attributes after writing qualifiers.

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

	* constexpr.c (cxx_eval_indirect_ref): Try folding first.

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

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

	* decl.c (check_redeclaration_exception_specification): Depend on
	-Wsystem-headers rather than -pedantic.

	* decl.c (warn_extern_redeclared_static): Use the location of
	newdecl in diagnostics, not input_location.
	(validate_constexpr_redeclaration): Likewise.
	(check_redeclaration_no_default_args): Likewise.
	(duplicate_decls): Likewise.
	(check_redeclaration_exception_specification): Likewise.
	Change second diagnostic to inform.

2015-05-24  Nathan Sidwell  <nathan@acm.org>

	PR c++/66243
	* decl.c (build_enumerator): Don't silently convert scoped enums.

2015-05-24  Jan Hubicka  <hubicka@ucw.cz>

	PR lto/66180
	* mangle.c (mangle_decl): Mangle anonymous namespace types as
	"<anon>".

2015-05-23  Nathan Sidwell  <nathan@acm.org>

	PR c++/65936
	* pt.c (lookup_template_class_1): Copy may_alias attribute too.

2015-05-22  Jim Wilson  <jim.wilson@linaro.org>

	* Make-lang.in (check_g++_parallelize): Update comment.

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

	PR c++/65598
	* decl.c (grokdeclarator): Use the correct location in error
	messages about 'explicit'.

2015-05-22  Marek Polacek  <polacek@redhat.com>
	    Edward Smith-Rowland  <3dw4rd@verizon.net>

	PR c/47043
	* cp-tree.h (build_enumerator): Update declaration.
	* decl.c (build_enumerator): Add attributes parameter.  Call
	cplus_decl_attributes.
	* init.c (constant_value_1): Pass tf_none to mark_used.
	* parser.c (cp_parser_enumerator_definition): Parse attributes and
	pass them down to build_enumerator.
	* pt.c (tsubst_enum): Pass decl attributes to build_enumerator.
	* semantics.c (finish_id_expression): Don't warn_deprecated_use here.

2015-05-21  Nathan Sidwell  <nathan@acm.org>

	PR c++/60943
	* decl2.c (change_return_type): Propagate FUNCTION_REF_QUALIFIED.

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

	* typeck.c (warn_args_num): Don't print "declare here" for builtins.

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

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

	* decl.c (grok_op_properties): Don't complain about size_t
	placement delete here.
	* call.c (second_parm_is_size_t): Split out from...
	(non_placement_deallocation_fn_p): ...here.
	(build_op_delete_call): Warn about size_t placement delete with
	-Wc++14-compat.

2015-05-19  Nathan Sidwell  <nathan@acm.org>

	PR c++/65954
	* typeck.c (finish_class_member_access_expr): Diagnose failed
	lookup of enum class member.

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-19  Mikhail Maltsev  <maltsevm@gmail.com>

	* typeck.c (composite_pointer_type): Use std::swap instead of explicit
	swaps.

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

	* pt.c (retrieve_specialization): Make sure our arguments have
	gone through strip_typedefs.

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

	DR 1391
	* pt.c (type_unification_real): Check convertibility here.
	(unify_one_argument): Not here.

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

	* ptree.c (cxx_print_xnode): Handle TRAIT_EXPR.

2015-05-16  Manuel López-Ibáñez  <manu@gcc.gnu.org>

	PR fortran/44054
	* error.c (cp_diagnostic_starter): Use diagnostic_location
	function.
	(cp_print_error_function): Likewise.
	(cp_printer): Replace locus pointer with accessor function.

2015-05-12  David Malcolm  <dmalcolm@redhat.com>

	* parser.c (cp_parser_selection_statement): Add location and
	guard_kind arguments to calls to
	cp_parser_implicitly_scoped_statement.
	(cp_parser_iteration_statement): Likewise for calls to
	cp_parser_already_scoped_statement.
	(cp_parser_implicitly_scoped_statement): Add "guard_loc" and
	"guard_kind" params; use them to warn for misleading
	indentation.
	(cp_parser_already_scoped_statement): Likewise.

2015-05-11  Jan Hubicka  <hubicka@ucw.cz>

	* class.c (fixup_type_variants): Do not copy TYPE_METHODS
	(one_inheriting_sig): Assert tat we always set TYPE_METHODS of main variant.
	* semantics.c (finish_member_declaration): Likewise.
	* method.c (lazily_declare_fn): Allways add method to main variant list.

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>

	* cp-gimplify.c, parser.c: Adjust to -Wc++11-compat replacing
	-Wc++0x-compat.

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-05-08  Aldy Hernandez  <aldyh@redhat.com>

	* decl2.c (collect_candidates_for_java_method_aliases): Remove.
	(build_java_method_aliases): Adapt to use create_same_body_alias
	instead of assemble_alias.  Move variable declarations to
	definition and tidy up.
	(cp_write_global_declarations): Call build_java_method_aliases
	instead of collecting candidates first.

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.

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

	PR c/65179
	* typeck.c (cp_build_binary_op): Warn when left shifting a negative
	value.

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

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

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

	* cp-gimplify.c (cp_genericize_r): Track TRY_BLOCK and
	MUST_NOT_THROW_EXPR, warn about a THROW_EXPR directly within a
	MUST_NOT_THROW_EXPR.
	(cp_genericize_data): Add try_block field.
	(cp_genericize_tree): Initialize it.
	* except.c (expand_end_catch_block): Set TREE_NO_WARNING on
	implicit rethrow.

	* constexpr.c (potential_constant_expression_1) [AT_ENCODE_EXPR]:
	Return false.

	* semantics.c (finish_call_expr): Check complain.

	* decl2.c (reset_type_linkage_2): Update the DECL_NAME of a
	maybe-in-charge constructor.

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

	DR 1518
	DR 1630
	PR c++/54835
	PR c++/60417
	* call.c (convert_like_real): Check value-initialization before
	explicit.
	* typeck2.c (process_init_constructor_record): Don't set
	CONSTRUCTOR_IS_DIRECT_INIT.
	(process_init_constructor_array): Likewise.
	* init.c (build_vec_init): Likewise.

2015-05-05  David Malcolm  <dmalcolm@redhat.com>

	* parser.c (cp_parser_asm_definition): Only test for
        error_mark_node if "outputs" was just set.  Likewise for "inputs".

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  David Malcolm  <dmalcolm@redhat.com>

	* cp-tree.h (ARGUMENT_PACK_SELECT_ARG): Remove spurious
	trailing semicolon.

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

	PR c++/50800
	* tree.c (apply_identity_attributes): Fix handling of classes.

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

	* parser.c (cp_parser_oacc_enter_exit_data): Use
	OMP_STANDALONE_CLAUSES.

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

	PR c++/64667
	* init.c (perform_member_init): Handle references for -Winit-self.

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.

	PR c++/65656
	* constexpr.c (cxx_eval_builtin_function_call): Fix
	__builtin_constant_p.

	PR c++/50800
	* tree.c (strip_typedefs): Add remove_attributes parm.
	(strip_typedefs_expr): Likewise.
	(apply_identity_attributes): New subroutine of strip_typedefs.
	* pt.c (canonicalize_type_argument): Let strip_typedefs handle attrs.
	(convert_nontype_argument, unify): Likewise.
	* cp-tree.h: Adjust.

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

2015-04-27  Trevor Saunders  <tbsaunde+gcc@tbsaunde.org>

	* class.c (layout_class_type): Remove check if
	PCC_BITFIELD_TYPE_MATTERS is defined.

2015-04-27  Jim Wilson  <jim.wilson@linaro.org>

	* Make-lang.in (c++.mostlyclean): Remove xg++, g++-cross, and cc1plus.

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

	PR c++/50800
	* typeck.c (structural_comptypes): Don't check TYPE_REF_CAN_ALIAS_ALL.

	* constexpr.c (potential_constant_expression_1) [MINUS_EXPR]:
	Remove obsolete code.
	[NE_EXPR]: Likewise.

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

	PR c++/65646
	* pt.c (check_explicit_specialization): Don't
	SET_DECL_TEMPLATE_SPECIALIZATION for a variable with no template
	headers.
	* decl.c (grokvardecl): Revert earlier fix.

2015-04-20  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-20  Ville Voutilainen  <ville.voutilainen@gmail.com>

	Reject trailing return type for an operator auto().
	* decl.c (grokdeclarator): Reject trailing return types for
	all conversion operators, don't handle conversion operators
	in the previous checks that deal with auto.

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

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

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

	* class.c (resolve_address_of_overloaded_function, instantiate_type):
	Rename tsubst_flags_t parameter flags -> complain.

2015-04-16  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.

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

	* constexpr.c (cxx_eval_store_expression): Ignore clobbers.
	(build_constexpr_constructor_member_initializers): Loop to find
	the BIND_EXPR.
	* decl.c (start_preparsed_function): Clobber the object at the
	beginning of a constructor.

	* decl.c (grokmethod): Only set DECL_COMDAT if TREE_PUBLIC is set.
	* method.c (implicitly_declare_fn): Likewise.
	* decl2.c (vague_linkage_p): Check TREE_PUBLIC first.

	* decl2.c (determine_visibility): Use get_template_info.

2015-04-15  Jason Merrill  <jason@redhat.com>
	    Marek Polacek  <polacek@redhat.com>

	PR c++/65727
	* lambda.c (lambda_expr_this_capture): In unevaluated context go
	through the normal loop, just don't capture.
	(maybe_resolve_dummy): Handle null return.

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

	* call.c (enforce_access): Emit error + inform.

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

	* constexpr.c (use_new_call): Remove #define.
	(lookup_parameter_binding): Remove function.
	(cxx_bind_parameters_in_call): Remove unused code.
	(cxx_eval_call_expression): Likewise.
	(cxx_eval_constant_expression): Likewise.

2015-04-14  Mikhail Maltsev  <maltsevm@gmail.com>

	* tree.c (replace_placeholders_t): Remove unused type.
	(replace_placeholders): Remove unused pset.

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

	* pt.c (lookup_template_class_1): Use coerce_innermost_template_parms.

	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-14  David Krauss  <david_work@me.com>

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

2015-04-14  Momchil Velikov  <momchil.velikov@gmail.com>
	    Jason Merrill  <jason@redhat.com>

	PR c++/60994
	* parser.c (cp_parser_class_name): Add enum_ok parameter.
	(cp_parser_qualifying_entity): Use it instead of cp_parser_type_name.
	(cp_parser_diagnose_invalid_type_name): Don't assume a template is
	a class template.

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.
