12016-12-24  Jakub Jelinek  <jakub@redhat.com>
2
3	PR middle-end/78901
4	* except.c (nothrow_libfn_p): Expect libc_name_p to return
5	const struct libc_name_struct *, if it returns NULL, return 0,
6	otherwise check c_ver and use flag_isoc99 or flag_isoc11.
7	* cfns.gperf: Add %struct-type and libc_name_struct definition.
8	For all C89 C library functions add , 89 after the name, add
9	C99 C library functions with , 99 and C11 C library functions
10	with , 11 suffix.
11	* cfns.h: Regenerated.
12
132016-12-22  Jason Merrill  <jason@redhat.com>
14
15	PR c++/78906
16	* pt.c (finish_template_variable): Use most_general_template.
17
18	PR c++/78898
19	PR c++/42329
20	* pt.c (unify): Don't look for a class template from a non-class.
21
222016-12-21  Jakub Jelinek  <jakub@redhat.com>
23
24	PR c++/72707
25	* name-lookup.c (pushdecl_maybe_friend_1): Do check shadowing of
26	artificial x if it is an anonymous union variable.
27
28	PR bootstrap/78817
29	* typeck.c (cp_build_function_call_vec): If check_function_arguments
30	returns true, set TREE_NO_WARNING on CALL_EXPR.
31	* call.c (build_over_call): Likewise.
32
33	PR c++/77830
34	* constexpr.c (cxx_eval_array_reference): Perform out of bounds
35	verification even if lval is true, just allow one past the last
36	element in that case.
37	(cxx_eval_store_expression): Detect stores to out of bound
38	ARRAY_REF.
39
402016-12-21  Jason Merrill  <jason@redhat.com>
41
42	Implement P0522R0, matching of template template arguments.
43	* pt.c (coerce_template_template_parms): Allow a template argument
44	that's less specialized than the parameter.
45	(unify_bound_ttp_args): Adjust parm's args to apply to arg's
46	template.
47	(coerce_template_args_for_ttp): Split out from
48	lookup_template_class_1.
49	(coerce_ttp_args_for_tta, store_defaulted_ttp)
50	(lookup_defaulted_ttp, add_defaults_to_ttp): New.
51	(process_partial_specialization): Set DECL_CONTEXT of
52	template template-parameters.
53	(coerce_template_parms): Only inform when complain.
54	(expand_template_argument_pack): Handle error_mark_node.
55	(convert_template_argument, template_args_equal, unify): Handle
56	any_targ_node.
57	* cp-tree.h (enum cp_tree_index): Add CPTI_ANY_TARG.
58	(any_targ_node): New.
59	* decl.c (cxx_init_decl_processing): Set it.
60	* name-lookup.c (consider_binding_level): Ignore names with embedded
61	spaces.
62
63	PR c++/42329
64	* pt.c (unify_bound_ttp_args): Split out from unify.
65	(try_class_unification): Handle BOUND_TEMPLATE_TEMPLATE_PARM.
66	(unify): Check for type/non-type mismatch early.
67	[BOUND_TEMPLATE_TEMPLATE_PARM]: Try get_template_base.
68
69	* pt.c (coerce_template_parms): Consider variadic_args_p before
70	complaining about too many template arguments.
71
72	* pt.c (process_partial_specialization): Use
73	get_partial_spec_bindings to check that the partial specialization
74	is more specialized than the primary template.
75
76	* pt.c (convert_template_argument): Pass args to do_auto_deduction.
77	(mark_template_parm): Handle deducibility from type of non-type
78	argument here.
79	(for_each_template_parm_r): Not here.
80
81	* ptree.c (cxx_print_type): Print args of
82	BOUND_TEMPLATE_TEMPLATE_PARM.
83	(cxx_print_decl): Print DECL_TEMPLATE_PARMS.
84
85	PR c++/78767 - ICE with inherited constructor default argument
86	* method.c (strip_inheriting_ctors): Strip template as appropriate.
87
88	PR c++/78749 - friend in anonymous namespace
89	* decl.c (wrapup_globals_for_namespace): Don't complain about friend
90	pseudo-template instantiations.
91
922016-12-16  Richard Biener  <rguenther@suse.de>
93
94	PR c++/71694
95	* cp-objcp-common.h (cp_unit_size_without_reusable_padding): Declare.
96	(LANG_HOOKS_UNIT_SIZE_WITHOUT_REUSABLE_PADDING): Define.
97	* cp-objcp-common.c (cp_unit_size_without_reusable_padding): New.
98
992016-12-15  Jakub Jelinek  <jakub@redhat.com>
100
101	P0490R0 GB 20: decomposition declaration should commit to tuple
102	interpretation early
103	* decl.c (get_tuple_size): Make static.  If inst is error_mark_node
104	or non-complete type, return NULL_TREE, otherwise if
105	lookup_qualified_name fails or doesn't fold into INTEGER_CST, return
106	error_mark_node.
107	(get_tuple_element_type, get_tuple_decomp_init): Make static.
108	(cp_finish_decomp): Pass LOC to get_tuple_size.  If it returns
109	error_mark_node, complain and fail.
110
1112016-12-15  Nathan Sidwell  <nathan@acm.org>
112
113	PR c++/77585
114	* pt.c (instantiate_decl): Push to class scope lambda resides
115	within when instantiating a generic lambda function.
116
1172016-12-14  Martin Sebor  <msebor@redhat.com>
118
119	PR c++/78774
120	* pt.c (convert_template_argument): Avoid assuming operand type
121	is non-null since that of SCOPE_REF is not.
122
1232016-12-14  Martin Jambor  <mjambor@suse.cz>
124
125	* parser.c: Include omp-general.h and omp-offload.h instead of
126	omp-low.h.
127	(cp_parser_omp_simd): Adjusted calls to find_omp_clause to use its new
128	name.
129	(cp_parser_omp_target_update): Likewise.
130	(cp_parser_oacc_declare): Likewise.
131	(cp_parser_oacc_enter_exit_data): Likewise.
132	(cp_parser_oacc_update): Likewise.
133	(cp_finalize_oacc_routine): Adjusted call to get_oacc_fn_attrib,
134	build_oacc_routine_dims and replace_oacc_fn_attrib to use their new
135	names.
136	* semantics.c: Include omp-general insteda of omp-low.h.
137	(finish_omp_for): Adjusted calls to find_omp_clause to use its new
138	name.
139	(finish_omp_cancel): Likewise.
140	(finish_omp_cancellation_point): Likewise.
141
1422016-12-14  Marek Polacek  <polacek@redhat.com>
143
144	PR c++/72775
145	* init.c (perform_member_init): Diagnose member initializer for
146	flexible array member. 
147
1482016-12-14  Nathan Sidwell  <nathan@acm.org>
149
150	PR c++/78701
151	* pt.c (type_unification_real): Check tsubst arg doesn't have
152	remaining template parms before converting it.
153
154	PR c++/69481
155	* cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Always use
156	TYPE_ALIAS_TEMPLATE_INFO for aliases.
157
1582016-12-13  Nathan Sidwell  <nathan@acm.org>
159
160	PR c++/69481
161	* cp-tree.h (TYPE_TEMPLATE_INFO): Remove alias type checking.
162	(TYPE_ALIAS_TEMPLATE_INFO): New.
163	(TYPE_TEMPLATE_INFO_MAYBE_ALIAS): New.  Use those macros.
164	* error.c (dump_alias_template_specialization): Adjust.
165	* pt.c (maybe_process_partial_specialization,
166	iterative_has_template_arg, find_parameter_packs_r,
167	alias_template_specialization_p, dependent_alias_template_spec_p,
168	get_underlying_template, lookup_template_class_1, unify): Adjust
169	template using decl access.
170
1712016-12-11  Paolo Carlini  <paolo.carlini@oracle.com>
172
173	PR c++/78637
174	* parser.c (cp_parser_namespace_definition): Increment
175	nested_definition_count only if push_namespace succeeds.
176
1772016-12-08  Nathan Sidwell  <nathan@acm.org>
178
179	PR c++/78551
180	* constexpr.c (extract_string_elt): New.  Broken out of ...
181	(cxx_eval_array_reference): ... here.  Call it.
182	(cxx_eval_store_expression): Convert init by STRING_CST into
183	CONSTRUCTOR, if needed.
184
1852016-12-08  Jakub Jelinek  <jakub@redhat.com>
186
187	P0003R5 - removal of dynamic exception specification from C++17
188	* parser.c (cp_parser_exception_specification_opt): For C++17
189	error out on throw ( type-id-list ), for C++11 and C++14 issue
190	-Wdeprecated warning on it.  Formatting fix.  Treat throw()
191	in C++17 as noexcept(true).
192
1932016-12-07  Martin Jambor  <mjambor@suse.cz>
194
195	PR c++/78589
196	* error.c (dump_decl): Use dump_function_name to dump
197	!DECL_LANG_SPECIFIC function decls with no or self-referencing
198	abstract origin.
199
2002016-12-07  Nathan Sidwell  <nathan@acm.org>
201
202	* pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow
203	and avoid re-tsubsting type.
204
205	* cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER &
206	CPTI_DECLTYPE_AUTO_IDENTIFIER.
207	(auto_identifier, decltype_auto_identifier): New.
208	*decl.c (initialize_predefined_identifiers): Add 'auto' and
209	'decltype(auto)'.
210	(grokdeclarator): Use cached identifier.
211	* pt.c (make_decltype_auto, make_auto, make_constrained_auto,
212	is_auto): Likewise.
213
2142016-12-02  Jakub Jelinek  <jakub@redhat.com>
215
216	PR c++/78649
217	* pt.c (tsubst_init): Don't call build_value_init if decl's type
218	is error_mark_node.
219
2202016-12-02  Cesar Philippidis  <cesar@codesourcery.com>
221	    James Norris  <jnorris@codesourcery.com>
222
223	* parser.c (cp_parser_oacc_enter_exit_data): Update diagnostics.
224	(cp_parser_pragma): Error when PRAGMA_OACC_{ENTER_DATA,
225	EXIT_DATA,WAIT} are not used in compound statements.
226
2272016-12-01  Jason Merrill  <jason@redhat.com>
228
229	* call.c (add_function_candidate): Also exclude inherited ctors
230	that take a type reference-related to the derived class.
231
232	* call.c (add_function_candidate): Exclude inherited copy/move
233	ctors.
234
2352016-11-29  David Malcolm  <dmalcolm@redhat.com>
236
237	PR c++/77922
238	* name-lookup.c (lookup_name_fuzzy): Filter out reserved words
239	that were filtered out by init_reswords.
240
2412016-11-28  Jakub Jelinek  <jakub@redhat.com>
242	    Jason Merrill  <jason@redhat.com>
243
244	PR c++/72808
245	* decl.c (finish_enum_value_list): Call fixup_type_variants on
246	current_class_type after
247	insert_late_enum_def_into_classtype_sorted_fields.
248
2492016-11-28  Jakub Jelinek  <jakub@redhat.com>
250
251	PR c++/77591
252	* typeck.c (maybe_warn_about_returning_address_of_local): Optimize
253	whats_returned through fold_for_warn.
254
2552016-11-27  Jason Merrill  <jason@redhat.com>
256
257	PR c++/77907
258	* constexpr.c (cxx_eval_constant_expression): Use cp_fold_convert.
259
2602016-11-24  Martin Liska  <mliska@suse.cz>
261
262	PR bootstrap/78493
263	* parser.c (cp_parser_range_for): Use safe_push instead of quick_push.
264
2652016-11-23  Jakub Jelinek  <jakub@redhat.com>
266
267	PR c++/77907
268	* cp-gimplify.c (cp_fold) <case CALL_EXPR>: When calling constructor
269	and maybe_constant_value returns non-CALL_EXPR, create INIT_EXPR
270	with the object on lhs and maybe_constant_value returned expr on rhs.
271
272	PR c++/71450
273	* pt.c (tsubst_copy): Return error_mark_node when mark_used
274	fails, even when complain & tf_error.
275
276	PR c++/77739
277	* cp-gimplify.c (cp_gimplify_tree) <case VEC_INIT_EXPR>: Pass
278	false as handle_invisiref_parm_p to cp_genericize_tree.
279	(struct cp_genericize_data): Add handle_invisiref_parm_p field.
280	(cp_genericize_r): Don't wrap is_invisiref_parm into references
281	if !wtd->handle_invisiref_parm_p.
282	(cp_genericize_tree): Add handle_invisiref_parm_p argument,
283	set wtd.handle_invisiref_parm_p to it.
284	(cp_genericize): Pass true as handle_invisiref_parm_p to
285	cp_genericize_tree.  Formatting fix.
286
2872016-11-21  Bernd Edlinger  <bernd.edlinger@hotmail.de>
288
289	PR c++/71973
290	* decl.c (duplicate_decls): Warn when a built-in function is redefined.
291	Don't overload builtin functions with C++ functions.
292	Handle const_tm_ptr_type_node like file_ptr_node.
293	Copy the TREE_NOTHROW flag unmodified to the old decl.
294
2952016-11-18  Jason Merrill  <jason@redhat.com>
296
297	PR objc++/78418 - ICE in string tests on darwin
298	* tree.c (lvalue_kind): Guard DECL_HAS_VALUE_EXPR_P.
299
3002016-11-18  Jakub Jelinek  <jakub@redhat.com>
301
302	PR c++/77285
303	* mangle.c (mangle_tls_init_fn, mangle_tls_wrapper_fn): Call
304	check_abi_tags.
305
3062016-11-18  Jason Merrill  <jason@redhat.com>
307
308	PR c++/67631 - list-init and explicit conversions
309	* semantics.c (finish_compound_literal): Call digest_init_flags.
310	* typeck2.c (digest_init_flags): Add complain parm.
311	(store_init_value): Pass it.
312
3132016-11-18  Richard Sandiford  <richard.sandiford@arm.com>
314 	    Alan Hayward  <alan.hayward@arm.com>
315 	    David Sherwood  <david.sherwood@arm.com>
316
317	* class.c (finish_struct_bits): Use SET_DECL_MODE.
318	(build_base_field_1, layout_class_type, finish_struct_1): Likewise.
319	* decl.c (make_label_decl): Likewise.
320	* pt.c (tsubst_decl): Likewise.
321
3222016-11-17  Jason Merrill  <jason@redhat.com>
323
324	PR c++/78193 - inherited ctor regressions on sparc32.
325	* call.c (build_over_call): Don't set CALL_FROM_THUNK_P here.
326	(build_call_a): Set it here, and don't insert EMPTY_CLASS_EXPR.
327	(convert_like_real) [ck_rvalue]: Also pass non-addressable
328	types along directly.
329
3302016-11-17  Paolo Carlini  <paolo.carlini@oracle.com>
331
332	PR c++/55080
333	* parser.c (cp_parser_non_integral_constant_expression): Issue a
334	pedwarn instead of an error for case NIC_FLOAT.
335
3362016-11-17  Jason Merrill  <jason@redhat.com>
337
338	PR c++/78124 - list-initialization and inherited ctor
339	* name-lookup.c (do_class_using_decl): Set CLASSTYPE_NON_AGGREGATE.
340
341	PR c++/78369 - {} as default argument
342	* call.c (build_special_member_call): Handle CONSTRUCTOR.
343
344	PR c++/68377
345	* parser.c (cp_parser_fold_expression): Check TREE_NO_WARNING.
346
3472016-11-16  Jason Merrill  <jason@redhat.com>
348
349	PR c++/78373
350	* decl.c (cp_finish_decl): Don't set TREE_CONSTANT on a reference.
351	* typeck2.c (store_init_value): Likewise.
352
353	* decl.c (store_decomp_type, lookup_decomp_type): New.
354	(cp_finish_decomp): Call store_decomp_type.
355	* semantics.c (finish_decltype_type): Call lookup_decomp_type.
356	* cp-tree.h: Declare lookup_decomp_type.
357
3582016-11-15  Jakub Jelinek  <jakub@redhat.com>
359
360	* decl.c (cp_finish_decomp): For DECL_NAMESPACE_SCOPE_P decl,
361	set DECL_ASSEMBLER_NAME.
362	* parser.c (cp_parser_decomposition_declaration): Likewise
363	if returning error_mark_node.
364	* mangle.c (mangle_decomp): New function.
365	* cp-tree.h (mangle_decomp): New declaration.
366
3672016-11-15  Jason Merrill  <jason@redhat.com>
368
369	PR c++/78358
370	* semantics.c (finish_decltype_type): Strip references for a tuple
371	decomposition.
372	* cp-tree.h (DECL_DECOMPOSITION_P): False for non-variables.
373
374	* decl2.c (decl_maybe_constant_var_p): References qualify.
375	* constexpr.c (non_const_var_error): Handle references.
376	* init.c (constant_value_1): Always check decl_constant_var_p.
377	* cp-gimplify.c (cp_fold_maybe_rvalue): Don't fold references.
378	* error.c (dump_decl_name): Split out from dump_decl.
379
3802016-11-14  Jason Merrill  <jason@redhat.com>
381
382	* tree.c (bitfield_p): New.
383	* cp-tree.h: Declare it.
384	* typeck.c (cxx_sizeof_expr, cxx_alignof_expr)
385	(cp_build_addr_expr_1): Use it instead of DECL_C_BIT_FIELD.
386	* decl.c (cp_finish_decomp): Look through reference.  Always
387	SET_DECL_DECOMPOSITION_P.
388	* semantics.c (finish_decltype_type): Adjust decomposition handling.
389
3902016-11-13  Jakub Jelinek  <jakub@redhat.com>
391	    Jason Merrill  <jason@redhat.com>
392
393	Implement P0217R3 - C++17 structured bindings
394	* cp-tree.h (struct lang_decl_base): Add decomposition_p.
395	(DECL_DECOMPOSITION_P): New
396	(enum auto_deduction_context): Add adc_decomp_type.
397	(enum cp_declarator_kind): Add cdk_decomp.
398	* constexpr.c (cxx_eval_constant_expression): Look through
399	DECL_VALUE_EXPR.
400	(potential_constant_expression_1): Likewise.
401	* decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT.
402	(check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P.
403	(cp_finish_decl): Pass adc_decomp_type for decomposition.
404	(find_decomp_class_base, get_tuple_size, get_tuple_element_type)
405	(get_tuple_decomp_init, cp_finish_decomp): New.
406	(grokdeclarator): Handle decomposition.
407	* init.c (build_aggr_init): Handle decomposition array.
408	(build_vec_init): Handle initialization from { array }.
409	* name-lookup.c (add_function): Always wrap TEMPLATE_DECL in
410	OVERLOAD.
411	* parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp.
412	(function_declarator_p, strip_declarator_types)
413	(cp_parser_check_declarator_template_parameters): Likewise.
414	(cp_parser_range_for, cp_convert_range_for): Handle decomposition.
415	(cp_parser_simple_declaration): Parse decomposition.
416	(cp_parser_decomposition_declaration): New.
417	* pt.c (tsubst_decomp_names): New.
418	(subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition.
419	(do_auto_deduction): Handle adc_decomp_type.
420	* semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR.
421	* typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
422	* tree.c (lvalue_kind): Likewise.
423	(cp_build_reference_type): Handle reference collapsing.
424
4252016-11-13  Jason Merrill  <jason@redhat.com>
426
427	* call.c (build_new_method_call_1): Include template arguments in
428	error message.
429	(print_error_for_call_failure): Likewise.
430	(build_new_function_call): Pass them in.
431	* name-lookup.c (supplement_binding_1): Don't complain about a
432	conflict with an erroneous declaration.
433	* error.c (dump_decl): Fix printing of alias declaration.
434	* decl.c (make_typename_type): Call cxx_incomplete_type_error.
435	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
436	* semantics.c (perform_koenig_lookup): Don't wrap an error in
437	TEMPLATE_ID_EXPR.
438
4392016-11-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
440
441	PR c/35503
442	* parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict.
443
4442016-11-12  Jason Merrill  <jason@redhat.com>
445
446	CWG 2233
447	* typeck.c (convert_arguments): Handle default arg followed by none.
448
449	* constexpr.c (potential_constant_expression_1): REALPART_EXPR and
450	IMAGPART_EXPR can be lvalues.
451
452	DR 374
453	PR c++/56480
454	* pt.c (check_specialization_namespace): Allow any enclosing
455	namespace.
456	(check_unqualified_spec_or_inst): New.
457	(check_explicit_specialization): Call it.
458	* parser.c (cp_parser_elaborated_type_specifier)
459	(cp_parser_class_head): Call it.
460
4612016-11-10  Jason Merrill  <jason@redhat.com>
462
463	PR c++/77337
464	* pt.c (tsubst_friend_function): Don't set DECL_INITIAL.
465	(instantiate_decl): It's OK to defer a constexpr function.
466	* cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): Check
467	DECL_LANG_SPECIFIC.
468	* decl2.c (decl_defined_p): Use it.  No longer static.
469	* decl.c (redeclaration_error_message): Use decl_defined_p.
470	* constexpr.c (cxx_eval_call_expression): Set input_location around
471	call to instantiate_decl.
472
4732016-11-10  Jakub Jelinek  <jakub@redhat.com>
474
475	* mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for
476	public or external symbols.
477
4782016-11-09  Jakub Jelinek  <jakub@redhat.com>
479
480	PR c++/78283
481	* mangle.c (start_mangling): Reset G.need_cxx1z_warning.
482
4832016-11-09  Jason Merrill  <jason@redhat.com>
484
485	* parser.c (cp_parser_simple_type_specifier): Allow placeholder
486	for template template parameter.
487	(cp_parser_type_id_1): Improve diagnostic.
488	* decl.c (grokdeclarator): Handle class deduction diagnostics here.
489	* pt.c (splice_late_return_type): Not here.
490	(tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template.
491	(do_class_deduction): Handle non-class templates.
492
493	Implement P0127R2, Declaring non-type parameters with auto.
494	* cp-tree.h (enum auto_deduction_context): Add adc_unify.
495	* decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type
496	parameter types.
497	* pt.c (do_auto_deduction): Add outer_targs parameter.
498	(convert_template_argument): Call do_auto_deduction.  If adc_unify,
499	don't give up on dependent init.
500	(unify): Likewise.  In C++17, walk into the type of a
501	TEMPLATE_PARM_INDEX.
502	(for_each_template_parm): Add any_fn parameter.
503	(struct pair_fn_data): Likewise.
504	(for_each_template_parm_r): Call it for any tree.  In C++17, walk
505	into the type of a TEMPLATE_PARM_INDEX.
506	(zero_r, array_deduction_r, try_array_deduction): New.
507	(type_unification_real): Call try_array_deduction.
508	(get_partial_spec_bindings): Likewise.
509
5102016-11-07  Jason Merrill  <jason@redhat.com>
511
512	Implement P0012R1, Make exception specifications part of the type
513	system.
514	* cp-tree.h (enum tsubst_flags): Add tf_fndecl_type.
515	(flag_noexcept_type, ce_type): New.
516	* call.c (build_conv): Add ck_fnptr.
517	(enum conversion_kind): Change ck_tsafe to ck_fnptr.
518	(convert_like_real): Likewise.
519	(standard_conversion): Likewise.  Allow function pointer
520	conversions for pointers to member functions.
521	(reference_compatible_p): Allow function pointer conversions.
522	(direct_reference_binding): Likewise.
523	(reference_binding): Reference-compatible is no longer a subset of
524	reference-related.
525	(is_subseq): Also strip ck_lvalue after next_conversion.
526	* class.c (instantiate_type): Check fnptr_conv_p.
527	(resolve_address_of_overloaded_function): Likewise.
528	* cvt.c (can_convert_tx_safety): Now static.
529	(noexcept_conv_p, fnptr_conv_p, strip_fnptr_conv): New.
530	* decl.c (flag_noexcept_type): Define.
531	(cxx_init_decl_processing): Set it.
532	(bad_specifiers): Check it.
533	(grokdeclarator) [cdk_function]: Add exception-spec to type here.
534	* lambda.c (maybe_add_lambda_conv_op): Add exception-spec to
535	returned pointer.
536	* mangle.c (struct globals): Add need_cxx1z_warning.
537	(mangle_decl): Check it.
538	(write_exception_spec): New.
539	(write_function_type): Call it.
540	(canonicalize_for_substitution): Handle exception spec.
541	(write_type): Likewise.
542	(write_encoding): Set processing_template_decl across mangling of
543	partially-instantiated type.
544	* pt.c (determine_specialization): Pass tf_fndecl_type.
545	(tsubst_decl, fn_type_unification): Likewise.
546	(tsubst): Strip tf_fndecl_type, pass it to
547	tsubst_exception_specification.
548	(convert_nontype_argument_function): Handle function pointer
549	conversion.
550	(convert_nontype_argument): Likewise.
551	(unify, for_each_template_parm_r): Walk into noexcept-specifier.
552	* rtti.c (ptr_initializer): Encode noexcept.
553	* tree.c (canonical_eh_spec): New.
554	(build_exception_variant): Use it.
555	* typeck.c (composite_pointer_type): Handle fnptr conversion.
556	(comp_except_specs): Compare canonical EH specs.
557	(structural_comptypes): Call it.
558
559	* call.c (standard_conversion): Reorganize pointer conversions.
560	* pt.c (convert_nontype_argument_function): Convert to ref here.
561	(convert_nontype_argument): Not here.
562	(convert_template_argument): Add original type to error message.
563	(RECUR_AND_CHECK_FAILURE): Remove trailing semicolon.
564	(unify): Compare function-qualifiers.
565	* typeck.c (same_type_ignoring_top_level_qualifiers_p): Use
566	cp_build_qualified_type rather than TYPE_MAIN_VARIANT.
567
568	* pt.c (push_tinst_level_loc): Add template instantiations to the
569	announce_function stream.
570
5712016-11-04  Paolo Carlini  <paolo.carlini@oracle.com>
572
573	PR c++/67980
574	* pt.c (tsubst_expr, case IF_STMT): Use fold_non_dependent_expr
575	to suppress unwanted warnings.
576
5772016-11-03  Jason Merrill  <jason@redhat.com>
578
579	PR c++/78198
580	* call.c (convert_default_arg): Look through inheriting ctors.
581
5822016-11-03  Jakub Jelinek  <jakub@redhat.com>
583	    Alexandre Oliva  <aoliva@redhat.com>
584	    Jason Merrill  <jason@redhat.com>
585
586	PR debug/28767
587	PR debug/56974
588	* tree.c (cp_check_qualified_type): Use check_base_type and
589	TYPE_QUALS comparison instead of check_qualified_type.
590	(cxx_type_hash_eq): Return false if type_memfn_rqual don't match.
591	* cp-objcp-common.c (cp_get_debug_type): New function.
592	(cp_decl_dwarf_attribute): Don't handle types here.
593	(cp_type_dwarf_attribute): New function.
594	* cp-objcp-common.h (cp_get_debug_type, cp_type_dwarf_attribute):
595	Declare.
596	(LANG_HOOKS_GET_DEBUG_TYPE, LANG_HOOKS_TYPE_DWARF_ATTRIBUTE):
597	Define.
598
5992016-11-03  Jason Merrill  <jason@redhat.com>
600
601	* tree.c (cp_check_qualified_type): Call check_base_type instead
602	of check_qualified_type.
603	(cxx_type_hash_eq): Check ref-qualifiers.
604	* typeck.c (apply_memfn_quals): No need to mess with TYPE_CANONICAL.
605
6062016-11-01  Jason Merrill  <jason@redhat.com>
607
608	Implement P0136R1, Rewording inheriting constructors.
609	* call.c (enum rejection_reason_code): Add rr_inherited_ctor.
610	(inherited_ctor_rejection): New.
611	(add_function_candidate): Reject inherited ctors for copying.
612	(enforce_access): Use strip_inheriting_ctors.
613	(print_z_candidate): Likewise.  Handle rr_inherited_ctor.
614	(convert_like_real): Avoid copying inheriting ctor parameters.
615	(build_over_call): Likewise.  A base ctor inheriting from vbase
616	has no parms.  Sorry about varargs.
617	(joust): A local constructor beats inherited with the same convs.
618	* class.c (add_method): Handle hiding inheriting ctors.
619	(one_inherited_ctor): Handle new semantics.
620	(add_implicitly_declared_members): Pass using_decl down.
621	(build_clone): A base ctor inheriting from vbase has no parms.
622	* cp-tree.h (DECL_INHERITED_CTOR): Store this instead of the base.
623	(SET_DECL_INHERITED_CTOR): Likewise.
624	(DECL_INHERITED_CTOR_BASE): Adjust.
625	* constexpr.c: Adjust.
626	* error.c (dump_function_decl): Decorate inheriting ctors.
627	* init.c (emit_mem_initializers): Suppress access control in
628	inheriting ctor.
629	* mangle.c (write_special_name_constructor): Handle new inheriting
630	ctor mangling.
631	* method.c (strip_inheriting_ctors, inherited_ctor_binfo)
632	(ctor_omit_inherited_parms, binfo_inherited_from): New.
633	(synthesized_method_walk): Use binfo_inherited_from.  Suppress
634	access control in inheriting ctor.
635	(deduce_inheriting_ctor): Deleted if ambiguous ctor inheritance.
636	(maybe_explain_implicit_delete): Explain ambigous ctor inheritance.
637	(add_one_base_init, do_build_copy_constructor): Adjust.
638	(locate_fn_flags, explain_implicit_non_constexpr): Adjust.
639	(implicitly_declare_fn): Adjust.
640	(get_inherited_ctor): Remove.
641	* name-lookup.c (do_class_using_decl): Check for indirect ctor
642	inheritance.
643	* optimize.c (cdtor_comdat_group): Adjust for new mangling.
644	(maybe_clone_body): Handle omitted parms in base clone.
645	(maybe_thunk_body): Don't thunk if base clone omits parms.
646	* pt.c (tsubst_decl): Adjust.
647	(instantiate_template_1): Suppress access control in inheriting
648	ctor.
649	(fn_type_unification): Do deduction with inherited ctor.
650	* tree.c (special_function_p): Adjust.
651
6522016-11-01  Jakub Jelinek  <jakub@redhat.com>
653
654	* cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_inline.
655
6562016-11-01  Jason Merrill  <jason@redhat.com>
657
658	* class.c (declared_access): Split out from handle_using_decl.
659
6602016-10-31  Jakub Jelinek  <jakub@redhat.com>
661
662	PR c++/78089
663	* parser.c (cp_parser_postfix_expression): Replace return statement in
664	the first switch with setting postfix_expression to the return
665	expression and break;.
666
667	PR c++/77886
668	* pt.c (tsubst_expr) <case CASE_LABEL_EXPR> Copy over
669	FALLTHROUGH_LABEL_P flag to the new LABEL_DECL.
670	(tsubst_expr) <case LABEL_EXPR>: Likewise.
671
6722016-09-11  Le-Chun Wu  <lcwu@google.com>
673	    Mark Wielaard  <mjw@redhat.com>
674
675	* name-lookup.c (pushdecl_maybe_friend): When emitting a
676	shadowing warning, use the code corresponding to the
677	given -Wshadow= variant.
678
6792016-10-26  Jason Merrill  <jason@redhat.com>
680
681	* class.c (add_method): Allow using-declarations to coexist.
682
6832016-10-25  Jason Merrill  <jason@redhat.com>
684
685	* constexpr.c (maybe_constant_init): Pull out TARGET_EXPR_INITIAL.
686	(cxx_eval_outermost_constant_expr): Don't return a CONSTRUCTOR
687	with CONSTRUCTOR_NO_IMPLICIT_ZERO.
688	(cxx_eval_call_expression): Clear CONSTRUCTOR_NO_IMPLICIT_ZERO.
689
6902016-10-25  Jakub Jelinek  <jakub@redhat.com>
691
692	* parser.c (cp_parser_postfix_expression): Adding missing break;.
693
694	* cp-tree.h (finish_builtin_launder): Declare.
695	* parser.c (cp_parser_postfix_expression): Handle RID_BUILTIN_LAUNDER.
696	* semantics.c (finish_builtin_launder): New function.
697	* pt.c (tsubst_copy_and_build): Handle instantiation of IFN_LAUNDER.
698	* constexpr.c (cxx_eval_internal_function): Handle IFN_LAUNDER.
699	(potential_constant_expression_1): Likewise.
700
7012016-10-24  Jakub Jelinek  <jakub@redhat.com>
702
703	* cp-objcp-common.c (cp_decl_dwarf_attribute): Handle DW_AT_reference
704	and DW_AT_rvalue_reference.
705
706	* cxx-pretty-print.c (pp_cxx_check_constraint): Use VAR_P (x)
707	instead of TREE_CODE (x) == VAR_DECL.
708	* constraint.cc (get_concept_definition): Likewise.
709	(finish_shorthand_constraint): Likewise.
710	* init.c (warn_placement_new_too_small): Likewise.
711	* cp-gimplify.c (cp_genericize_r): Likewise.
712
7132016-10-21  Jason Merrill  <jason@redhat.com>
714
715	PR c++/77656
716	* pt.c (convert_template_argument): Call convert_nontype_argument
717	on value-dependent but not type-dependent arguments.
718	(convert_nontype_argument): Handle value-dependent arguments.
719	(canonicalize_expr_argument): New.
720	(deducible_expression, unify): Skip CONVERT_EXPR.
721	* error.c (dump_template_argument): Likewise.
722	* mangle.c (write_expression): Likewise.
723
724	* ptree.c (cxx_print_xnode) [TEMPLATE_PARM_INDEX]: Dump the decl.
725
7262016-10-21  Jakub Jelinek  <jakub@redhat.com>
727
728	* cp-objcp-common.c (cp_decl_dwarf_attribute): Handle
729	DW_AT_const_expr.
730
7312016-10-17  Jakub Jelinek  <jakub@redhat.com>
732
733	* cp-objcp-common.h (cp_function_decl_explicit_p,
734	cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove.
735	(cp_decl_dwarf_attribute): Declare.
736	(LANG_HOOKS_FUNCTION_DECL_EXPLICIT_P,
737	LANG_HOOKS_FUNCTION_DECL_DELETED_P,
738	LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Remove.
739	(LANG_HOOKS_DECL_DWARF_ATTRIBUTE): Redefine.
740	* cp-objcp-common.c (cp_function_decl_explicit_p,
741	cp_function_decl_deleted_p, cp_function_decl_defaulted): Remove.
742	(cp_decl_dwarf_attribute): New function.
743
7442016-10-15  Jason Merrill  <jason@redhat.com>
745
746	PR c++/77945
747	* constexpr.c (maybe_simplify_trivial_copy): New.
748	(cxx_eval_store_expression): Call it.
749	* call.c (build_over_call): Use unsigned char for trivial copy.
750
7512016-10-14  Jason Merrill  <jason@redhat.com>
752
753	Implement P0017R1, C++17 aggregates with bases.
754	* class.c (build_base_field_1): Split out from...
755	(build_base_field): ...here.  In C++17 mode, build a field for
756	empty bases.
757	* decl.c (xref_basetypes): In C++17 aggregates can have bases.
758	(next_initializable_field): Allow base fields in C++17.
759	* typeck2.c (process_init_constructor_record): Likewise.
760
7612016-10-14  Jakub Jelinek  <jakub@redhat.com>
762
763	DR 1511 - const volatile variables and ODR
764	* decl.c (grokvardecl): Change flags argument to type_quals,
765	add conceptp argument.  Set TREE_PUBLIC for non-static volatile vars.
766	(grokdeclarator): Adjust grokvardecl caller.
767
7682016-10-13  Martin Sebor  <msebor@redhat.com>
769
770	PR c++/71912
771	* class.c (struct flexmems_t):  Add members.
772	(find_flexarrays): Add arguments.  Correct handling of anonymous
773	structs.
774	(diagnose_flexarrays): Adjust to issue warnings in addition to errors.
775	(check_flexarrays): Add argument.
776	(diagnose_invalid_flexarray): New functions.
777
7782016-10-13  Jakub Jelinek  <jakub@redhat.com>
779	    Jason Merrill  <jason@redhat.com>
780
781	Implement P0386R2 - C++17 inline variables
782	* cp-tree.h (struct lang_type): Shrink language field to 1 bit
783	from 4.  Add var_declared_inline_p field.  Mention 2 spare bits.
784	(DECL_VAR_DECLARED_INLINE_P): Define.
785	(SET_DECL_VAR_DECLARED_INLINE_P): Define.
786	(DECL_INLINE_VAR_P): Define.
787	(diagnose_inline_vars_for_namespace): Declare.
788	* decl.c (diagnose_inline_vars_for_namespace): New function.
789	(duplicate_decls): For static data members copy
790	DECL_DECLARED_CONSTEXPR_P.
791	(redeclaration_error_message): Handle C++17 redundant redeclaration
792	of constexpr static data member outside of class.
793	(maybe_commonize_var): Handle inline variables.
794	(check_initializer): Ignore inline variables for diagnostics.
795	Adjust diagnostic wording for C++17.
796	(make_rtl_for_nonlocal_decl): Allow in-class definition of
797	inline static data members.
798	(bad_specifiers): Don't diagnose inline on variables here.
799	(grokvardecl): Add inlinep argument, non-static const inline variables
800	are TREE_PUBLIC.
801	(check_static_variable_definition): Return early also for inline
802	variables.
803	(mark_inline_variable): New.
804	(grokdeclarator): Handle inline variables and inline static data
805	members.
806	* typeck2.c (store_init_value): Don't diagnose non-constant
807	initializers for non-constexpr inline static data members.
808	* decl2.c (vague_linkage_p): Return true for inline variables.
809	(c_parse_final_cleanups): In-class declaration of inline static
810	data members is a definition.  Call diagnose_inline_vars_for_namespace
811	through walk_namespaces.
812	* pt.c (instantiate_decl): Set pattern_defined for in-class definitions
813	of inline static data members.
814
8152016-10-13  Jason Merrill  <jason@redhat.com>
816
817	* decl.c (mark_inline_variable): New.
818
819>>>>>>> .r241142
8202016-10-13  Thomas Preud'homme  <thomas.preudhomme@arm.com>
821
822	* decl2.c: Include memmodel.h.
823	* rtti.c: Likewise.
824
8252016-10-11  Jason Merrill  <jason@redhat.com>
826
827	PR c++/77742
828	* init.c (build_new_1): Don't -Waligned-new about placement new.
829	(malloc_alignment): New.  Consider MALLOC_ABI_ALIGNMENT.
830	* decl.c (cxx_init_decl_processing): New.
831
8322016-10-10  Jason Merrill  <jason@redhat.com>
833
834	PR c++/77890
835	PR c++/77912
836	* pt.c (do_class_deduction): Set cp_unevaluated_operand.
837	(tsubst) [TEMPLATE_TYPE_PARM]: Copy CLASS_PLACEHOLDER_TEMPLATE.
838
8392016-10-08  Jason Merrill  <jason@redhat.com>
840
841	* cp-gimplify.c (cp_fold): Add variable name.
842
843	* cp-gimplify.c (cp_fold): Distribute cp_truthvalue_conversion
844	into COND_EXPR.
845
8462016-10-07  Jason Merrill  <jason@redhat.com>
847
848	Further P0135 refinement.
849	* call.c (build_user_type_conversion_1): Consider conversions from
850	a single element in an initializer-list.
851	(build_temp): Undo early_elide_copy change.
852	(build_over_call): Check that we don't try to copy a TARGET_EXPR
853	in C++17 mode.  Set user_conv_p here.
854	(convert_like_real): Not here.
855	(check_self_delegation): Split out from...
856	(build_special_member_call): ...here.  Handle C++17 copy elision.
857	* cvt.c (early_elide_copy): Remove.
858	(ocp_convert): Undo early_elide_copy change.
859	* except.c (build_throw): Likewise.
860	* init.c (expand_default_init): Likewise.
861	* typeck.c (cp_build_modify_expr): Likewise.
862
8632016-10-07  Nathan Sidwell  <nathan@acm.org>
864
865	PR c++/64433
866	DR1658, DR1611
867	* init.c (emit_mem_initializers): Don't construct vbases of
868	abstract classes.
869	(push_base_cleanups): Don't push vbase cleanups for abstract class
870	when in C++14 mode.
871	* method.c (synthethesized_method_walk): Don't walk vbases of
872	abstract classes when in C++14 mode.
873
8742016-10-07  Jakub Jelinek  <jakub@redhat.com>
875
876	Implement LWG2296 helper intrinsic
877	* parser.c (cp_parser_postfix_expression): Handle RID_ADDRESSOF.
878	* cp-objcp-common.c (cp_common_init_ts): Handle ADDRESSOF_EXPR.
879	* constexpr.c (potential_constant_expression_1): Likewise.
880	* error.c (dump_expr): Likewise.
881	* typeck.c (cp_build_addressof): New function.
882	* cp-tree.h (cp_build_addressof): Declare.
883	* cxx-pretty-print.h (pp_cxx_addressof_expression): Declare.
884	* cp-tree.def (ADDRESSOF_EXPR): New tree code.
885	* cxx-pretty-print.c (cxx_pretty_printer::primary_expression): Handle
886	ADDRESSOF_EXPR.  Add __builtin_addressof and
887	__has_unique_object_representations into syntax in function comment.
888	(pp_cxx_addressof_expression): New function.
889	* pt.c (tsubst_copy_and_build): Handle ADDRESSOF_EXPR.
890
8912016-10-07  Bernd Edlinger  <bernd.edlinger@hotmail.de>
892
893	PR c++/77700
894	* parser.c (cp_parser_base_specifier): Fix a warning.
895
8962016-10-07  Bernd Schmidt  <bschmidt@redhat.com>
897
898	PR c++/69733
899	* decl.c (grokdeclarator): Try to find the correct location for an
900	ignored qualifier.
901
9022016-10-07  Martin Liska  <mliska@suse.cz>
903
904	* lambda.c (maybe_add_lambda_conv_op): Set default value.
905
9062016-10-06  Jason Merrill  <jason@redhat.com>
907
908	* call.c (build_temp, convert_like_real): Don't re-copy
909	TARGET_EXPR.  Handle packed fields.
910	(build_x_va_arg): Wrap it in a TARGET_EXPR.
911	(build_over_call): Add sanity check.
912	* cvt.c (early_elide_copy): New.
913	(ocp_convert): Use it.
914	* except.c (build_throw): Use it.
915	* init.c (get_nsdmi): Put back the TARGET_EXPR.
916	(expand_default_init): Call early_elide_copy.
917	* typeck.c (cp_build_modify_expr): Call early_elide_copy.
918
9192016-10-06  Jakub Jelinek  <jakub@redhat.com>
920
921	Implement P0258R2 - helper for C++17
922	std::has_unique_object_representations trait
923	* cp-tree.h (enum cp_trait_kind): Add
924	CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
925	(struct lang_type_class): Add unique_obj_representations
926	and unique_obj_representations_set bitfields.
927	(CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS,
928	CLASSTYPE_UNIQUE_OBJ_REPRESENTATIONS_SET): Define.
929	(type_has_unique_obj_representations): Declare.
930	* parser.c (cp_parser_primary_expression): Handle
931	RID_HAS_UNIQUE_OBJ_REPRESENTATIONS.
932	(cp_parser_trait_expr): Likewise.  Formatting fix.
933	* semantics.c (trait_expr_value, finish_trait_expr): Handle
934	CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
935	* tree.c (type_has_unique_obj_representations): New function.
936	(record_has_unique_obj_representations): New function.
937	* cxx-pretty-print.c (pp_cxx_trait_expression): Handle
938	CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS.
939
9402016-10-05  Jason Merrill  <jason@redhat.com>
941
942	Implement P0135R1, Guaranteed copy elision.
943	* cvt.c (ocp_convert): Don't re-copy a TARGET_EXPR in C++17.
944
945	PR c++/54293
946	* call.c (reference_binding): Fix binding to member of temporary.
947
948	* call.c (extend_ref_init_temps): Fix TARGET_EXPR handling.
949
950	* parser.c (cp_parser_skip_to_end_of_statement): Add missing break.
951
952	* semantics.c (finish_compound_literal): Handle class placeholder.
953
9542016-10-05  Marek Polacek  <polacek@redhat.com>
955
956	Implement P0305R1, Selection statements with initializer.
957	* cp-array-notation.c (create_an_loop): Call finish_init_stmt
958	instead of finish_for_init_stmt.
959	* cp-tree.h (finish_for_init_stmt): Rename to finish_init_stmt.
960	* decl.c (poplevel): Adjust a comment.
961	* init.c (build_vec_init): Call finish_init_stmt instead of
962	finish_for_init_stmt.
963	* name-lookup.c (pushdecl_maybe_friend_1): Adjust a comment.
964	* name-lookup.h (enum scope_kind): Likewise.
965	* parser.c (cp_parser_statement): Update commentary.
966	(cp_parser_init_statement_p): New function.
967	(cp_parser_selection_statement): Parse the optional init-statement.
968	(cp_parser_for): Call finish_init_stmt instead of finish_for_init_stmt.
969	(cp_parser_c_for): Likewise.
970	(cp_convert_range_for): Call finish_init_stmt instead of finish_for_init_stmt.
971	(cp_parser_range_for_member_function): Update commentary.
972	(cp_parser_iteration_statement):
973	(cp_parser_for_init_statement): Rename to cp_parser_init_statement.
974	* pt.c (tsubst_omp_for_iterator): Update commentary.
975	(tsubst_expr): Call finish_init_stmt instead of finish_for_init_stmt.
976	* semantics.c (finish_for_init_stmt): Rename to finish_init_stmt.
977	Update commentary.
978
9792016-10-04  Jason Merrill  <jason@redhat.com>
980
981	PR c++/77852
982	* pt.c (do_class_deduction): Handle list-initialization.
983	(do_auto_deduction): Call it sooner.
984	(build_deduction_guide): Use tsubst_arg_types.
985	(rewrite_template_parm): Don't copy_type.
986
987	PR c++/77775
988	* constexpr.c (cxx_eval_component_reference): Use name matching
989	for PMFs.
990
991	Implement P0091R2, Template argument deduction for class templates.
992	* parser.c (cp_parser_simple_type_specifier): Parse class placeholder.
993	Use the location of the beginning of the type-specifier.
994	(cp_parser_init_declarator): Parse deduction guide.
995	(cp_parser_diagnose_invalid_type_name): Mention class deduction.
996	(cp_parser_type_id_1): Don't accept class placeholder as template arg.
997	* cp-tree.h (CLASS_PLACEHOLDER_TEMPLATE): New.
998	* decl.c (grokdeclarator): Check for uninitialized auto here.
999	(start_decl_1): Not here.
1000	(cp_finish_decl): Or here.  Don't collapse a list when doing
1001	class deduction.
1002	(grokfndecl): Check deduction guide scope and body.
1003	* error.c (dump_decl, dump_function_decl, dump_function_name):
1004	Handle deduction guides.
1005	* pt.c (make_template_placeholder, do_class_deduction): New.
1006	(build_deduction_guide, rewrite_template_parm): New.
1007	(dguide_name, dguide_name_p, deduction_guide_p): New.
1008	(do_auto_deduction): Call do_class_deduction.
1009	(splice_late_return_type, is_auto): Handle class placeholders.
1010	(template_parms_level_to_args): Split from template_parms_to_args.
1011	(tsubst_template_parms_level): Split from tsubst_template_parms.
1012	* typeck2.c (build_functional_cast): Handle class placeholder.
1013
10142016-10-04  Martin Sebor  <msebor@redhat.com>
1015
1016	PR c++/77804
1017	* init.c (warn_placement_new_too_small): Avoid assuming an array type
1018	has a constant size.
1019
10202016-10-04  Jakub Jelinek  <jakub@redhat.com>
1021
1022	PR c++/77791
1023	* parser.c (cp_parser_lambda_declarator_opt): Only pedwarn
1024	for C++11 on decls in the param_list.  Test cxx_dialect < cxx14 before
1025	the loop just once.
1026
1027	* cp-tree.h (enum cp_tree_index): Remove CPTI_JAVA_*,
1028	CPTI_LANG_NAME_JAVA and CPTI_JCLASS.
1029	(java_byte_type_node, java_short_type_node, java_int_type_node,
1030	java_long_type_node, java_float_type_node, java_double_type_node,
1031	java_char_type_node, java_boolean_type_node, lang_name_java,
1032	jclass_node): Remove.
1033	(enum languages): Remove lang_java.
1034	(TYPE_FOR_JAVA): Remove.
1035	(struct lang_type_class): Remove java_interface bit-field.
1036	(TYPE_JAVA_INTERFACE): Remove.
1037	(pragma_java_exceptions): Remove.
1038	(check_java_method, build_java_class_ref): Remove prototypes.
1039	* name-lookup.c (pushtag_1): Don't set TYPE_FOR_JAVA.
1040	* decl2.c (acceptable_java_type, check_java_method): Remove.
1041	(import_export_decl): Remove TYPE_FOR_JAVA handling.
1042	(build_java_method_aliases): Remove.
1043	(c_parse_final_cleanups): Don't call build_java_method_aliases.
1044	(possibly_inlined_p): Don't test pragma_java_exceptions.
1045	* init.c (build_new_1): Remove TYPE_FOR_JAVA handling.
1046	(build_java_class_ref): Remove.
1047	* pt.c (maybe_new_partial_specialization, lookup_template_class_1,
1048	instantiate_class_template_1): Don't copy TYPE_FOR_JAVA.
1049	* except.c (eh_type_info): Remove java type handling.
1050	(decl_is_java_type, choose_personality_routine): Remove.
1051	(initialize_handler_parm): Don't call choose_personality_routine.
1052	(expand_start_catch_block): Don't handle java types.
1053	(build_throw): Likewise.
1054	* cp-lang.c (cp_eh_personality): Don't handle pragma_java_exceptions.
1055	* typeck.c (structural_comptypes): Don't compare TYPE_FOR_JAVA.
1056	* call.c (build_over_call): Don't handle TYPE_JAVA_INTERFACE.
1057	(java_iface_lookup_fn): Remove.
1058	(build_java_interface_fn_ref): Remove.
1059	* tree.c (cxx_attribute_table): Remove java_interface.
1060	(handle_java_interface_attribute): Remove.
1061	* lex.c (pragma_java_exceptions): Remove.
1062	(init_cp_pragma): Don't register GCC java_exceptions pragma.
1063	(handle_pragma_java_exceptions): Remove.
1064	(retrofit_lang_decl): Don't handle lang_name_java.
1065	* method.c (implicitly_declare_fn): Don't handle TYPE_FOR_JAVA.
1066	* error.c (language_to_string): Don't handle lang_java.
1067	* decl.c (record_builtin_java_type): Remove.
1068	(initialize_predefined_identifiers): Remove Java.
1069	(cxx_init_decl_processing): Remove java_*_type_node.
1070	(cp_finish_decl): Don't handle TYPE_FOR_JAVA.
1071	(grokfndecl): Likewise.
1072	(check_special_function_return_type): Likewise.
1073	(grokdeclarator): Don't set TYPE_FOR_JAVA.
1074	(grokparms): Don't handle TYPE_FOR_JAVA.
1075	(xref_basetypes): Likewise.
1076	(check_function_type): Likewise.
1077	(finish_constructor_body): Likewise.
1078	* mangle.c (write_builtin_type): Don't handle TYPE_FOR_JAVA
1079	and java_*_type_node.
1080	(write_bare_function_type): Don't handle TYPE_FOR_JAVA.
1081	(write_java_integer_type_codes): Remove.
1082	* class.c (add_method): Don't handle TYPE_FOR_JAVA.
1083	(add_implicitly_declared_members, determine_key_method,
1084	finish_struct_1): Likewise.
1085	(push_lang_context): Don't handle lang_name_java.
1086
10872016-10-03  Marek Polacek  <polacek@redhat.com>
1088
1089	Core 903
1090	* typeck.c (cp_build_binary_op): Pass original operands to
1091	null_ptr_cst_p, not those after the default conversions.
1092
10932016-10-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1094
1095	* parser.c (cp_parser_condition): Fix a warning.
1096
10972016-09-29  Jakub Jelinek  <jakub@redhat.com>
1098
1099	Implement P0001R1 - C++17 removal of register storage class specifier
1100	* decl.c (cp_finish_decl): Diagnose register storage class
1101	on vars except when used in GNU global or local register variable
1102	extension.
1103	(grokdeclarator): Diagnose register storage class on parameters.
1104	* except.c (expand_start_catch_block): Set DECL_REGISTER only
1105	after cp_finish_decl call.
1106
11072016-09-29  Marek Polacek  <polacek@redhat.com>
1108
1109	* rtti.c (involves_incomplete_p): Add fall through comment.
1110
11112016-09-28  Jakub Jelinek  <jakub@redhat.com>
1112
1113	PR c++/77467
1114	* constexpr.c (enum constexpr_switch_state): New.
1115	(struct constexpr_ctx): Add css_state field.
1116	(label_matches): Add CTX and STMT arguments, remove I and
1117	DEFAULT_LABEL.  For CASE_LABEL_EXPR assert ctx->css_state != NULL,
1118	handle default labels according to css_state.
1119	(cxx_eval_statement_list): Remove statement skipping, label_matches
1120	and default_label handling code.
1121	(cxx_eval_loop_expr): Exit after first iteration even if
1122	switches (jump_target).
1123	(cxx_eval_switch_expr): Set up css_state field in ctx, if default
1124	label has been seen in the body, but no cases matched, evaluate
1125	the body second time.
1126	(cxx_eval_constant_expression): Handle stmt skipping and label_matches
1127	here.  Handle PREDICT_EXPR.  For MODIFY_EXPR or INIT_EXPR, assert
1128	statement is not skipped.  For COND_EXPR during skipping, don't
1129	evaluate condition, just the then block and if still skipping at the
1130	end also the else block.
1131	(cxx_eval_outermost_constant_expr): Adjust constexpr_ctx initializer.
1132	(is_sub_constant_expr): Likewise.
1133
11342016-09-27  Jakub Jelinek  <jakub@redhat.com>
1135
1136	Implement P0018R3, C++17 lambda capture of *this by value as [=,*this]
1137	* parser.c (cp_parser_lambda_introducer): Formatting fix.  Pass
1138	true instead of false as by_reference_p to add_capture for 'this'.
1139	Parse '*this' simple-capture.
1140	* lambda.c (build_capture_proxy): Handle '*this' capture by value.
1141	(add_capture): Adjust function comment.  For id == this_identifier,
1142	treat by_reference_p as capturing '*this' by reference, i.e. 'this'
1143	by value, and !by_reference_p as capturing '*this' by value.
1144	(add_default_capture): For implicit 'this' capture, always pass
1145	by_reference_p true rather than false.
1146
1147	PR c++/77722
1148	* cp-gimplify.c (cp_ubsan_maybe_instrument_return): Instrument also
1149	functions that have just a STATEMENT_LIST instead of BIND_EXPR, or
1150	BIND_EXPR with some statement rather than STATEMENT_LIST as body.
1151
11522016-09-26  Nathan Sidwell  <nathan@acm.org>
1153
1154	* init.c (expand_default_init): Fix } indentation.
1155	* method.c (process_subob_fn): Simplify control structure to
1156	remove gotos.
1157	(implicitly_declare_fn): Remove duplicated lambda ctor check.
1158
11592016-09-26  Marek Polacek  <polacek@redhat.com>
1160
1161	PR c/7652
1162	* parser.c (cp_parser_storage_class_specifier_opt): Add
1163	gcc_fallthrough.
1164	(cp_parser_skip_to_end_of_template_parameter_list): Likewise.
1165	(cp_parser_cache_defarg): Likewise.
1166	(cp_parser_omp_for_cond): Likewise.
1167	* semantics.c (finish_decltype_type): Likewise.
1168	* typeck.c (structural_comptypes): Likewise.
1169	(cp_build_binary_op): Likewise.
1170	(cp_build_modify_expr): Likewise.
1171
11722016-09-26  Marek Polacek  <polacek@redhat.com>
1173
1174	PR c/7652
1175	* constexpr.c (cxx_eval_internal_function): Handle IFN_FALLTHROUGH.
1176	(potential_constant_expression_1): Likewise.
1177	* constraint.cc (function_concept_check_p): Check fn for null.
1178	* parser.c (cp_parser_expression_statement): Handle attribute
1179	fallthrough.
1180	(cp_parser_statement): Likewise.
1181	(cp_parser_label_for_labeled_statement): Set FALLTHROUGH_LABEL_P on
1182	labels.
1183	(cp_parser_std_attribute): Handle fallthrough attribute.
1184	(cp_parser_check_std_attribute): Add %< %> quotes.
1185	* pt.c (tsubst_copy_and_build): Handle internal functions.
1186	(instantiation_dependent_scope_ref_p): Return if the expression is
1187	null.
1188
11892016-09-24  Marek Polacek  <polacek@redhat.com>
1190
1191	PR c/77490
1192	* typeck.c (cp_build_unary_op): Warn about bit not on expressions that
1193	have boolean value.
1194
11952016-09-23  Jakub Jelinek  <jakub@redhat.com>
1196
1197	Implement P0138R2, C++17 construction rules for enum class values
1198	* cp-tree.h (is_direct_enum_init): Declare.
1199	* decl.c (is_direct_enum_init): New function.
1200	(reshape_init): Use it.
1201	* typeck.c (convert_for_assignment): Likewise.
1202
1203	* Make-lang.in (check-c++1z): Pass RUNTESTFLAGS down to
1204	make check-g++.
1205
1206	* constexpr.c (call_stack): Remove unnecessary
1207	= vNULL initialization of file scope vec.
1208
1209	* name-lookup.c (store_bindings, store_class_bindings): Don't
1210	initialize static local bindings_need_stored to vNULL.
1211
1212	* typeck2.c (process_init_constructor_record): Use
1213	CONSTRUCTOR_NELTS (...) instead of
1214	vec_safe_length (CONSTRUCTOR_ELTS (...)).
1215	* decl.c (reshape_init_r): Likewise.
1216	(check_initializer): Likewise.
1217
12182016-09-22  Paolo Carlini  <paolo.carlini@oracle.com>
1219
1220	PR c++/71979
1221	* class.c (build_base_path): Allow for lookup_base returning
1222	NULL_TREE.
1223
12242016-09-21  Jason Merrill  <jason@redhat.com>
1225
1226	Core 903
1227	* call.c (null_ptr_cst_p): Check char_type_p.
1228
12292016-09-21  Jakub Jelinek  <jakub@redhat.com>
1230
1231	PR c++/77651
1232	* init.c (build_new_1): Don't suggest to use -faligned-new if
1233	aligned_new_threshold is non-zero.
1234	(type_has_new_extended_alignment): Change aligned_new_threshhold
1235	to aligned_new_threshold.
1236	* call.c (second_parm_is_size_t, aligned_allocation_fn_p,
1237	aligned_deallocation_fn_p, build_op_delete_call): Likewise.
1238	* decl.c (cxx_init_decl_processing): Likewise.
1239
12402016-09-20  Jakub Jelinek  <jakub@redhat.com>
1241
1242	PR c++/77626
1243	* constexpr.c (cxx_fold_indirect_ref): Don't call byte_position on
1244	FIELD_DECLs with error_mark_node type.  Remove useless break; after
1245	return.
1246
1247	PR c++/77638
1248	* parser.c (cp_parser_template_declaration_after_parameter): For 2
1249	argument operator"" template set ok to false for
1250	parm == error_mark_node.
1251
1252	PR c++/77637
1253	* parser.c (cp_parser_std_attribute_list): Reject ... without
1254	preceding attribute.
1255
12562016-09-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1257
1258	PR c++/77434
1259	* cvt.c (cp_convert_and_check): Suppress Wint-in-bool-context here.
1260
12612016-09-16  Patrick Palka  <ppalka@gcc.gnu.org>
1262
1263	PR c++/77639
1264	* parser.c (cp_parser_class_head): When
1265	processing_template_parmlist, don't assume that the
1266	class-head may start an explicit specialization.
1267
12682016-09-16  Jakub Jelinek  <jakub@redhat.com>
1269
1270	PR c++/77482
1271	* error.c (dump_simple_decl): Only check DECL_DECLARED_CONCEPT_P
1272	if DECL_LANG_SPECIFIC is non-NULL.  Fix up formatting.
1273
1274	PR c++/77338
1275	* constexpr.c (cxx_eval_constant_expression) <case PARM_DECL>: Only
1276	call is_really_empty_class on complete types.
1277
1278	PR c++/77375
1279	* class.c (check_bases): Set CLASSTYPE_HAS_MUTABLE if any
1280	TYPE_HAS_MUTABLE_P for any bases.
1281
12822016-09-16  Jason Merrill  <jason@redhat.com>
1283
1284	* class.c (check_bases, set_one_vmethod_tm_attributes): Use
1285	least_bit_hwi.
1286	* decl.c (cxx_init_decl_processing): Use pow2p_hwi.
1287	* parser.c (cp_parser_cilk_simd_vectorlength): Use pow2p_hwi.
1288
12892016-09-14  Jakub Jelinek  <jakub@redhat.com>
1290
1291	PR c++/77549
1292	* name-lookup.c (consider_binding_level): Look through TREE_LIST
1293	and OVERLOAD.
1294
12952016-09-14  Marek Polacek  <polacek@redhat.com>
1296
1297	* typeck.c (cp_build_unary_op): Diagnose incrementing boolean
1298	expressions.  Tweak an error message.
1299
13002016-09-14  Marek Polacek  <polacek@redhat.com>
1301
1302	* cp-tree.h (cp_build_unary_op): Change nonconvert parameter type to
1303	bool.
1304	* decl2.c (one_static_initialization_or_destruction): Use true instead
1305	of 1.
1306	* init.c (build_vec_init): Use false instead of 0.
1307	* pt.c (tsubst_copy_and_build): Likewise.
1308	* semantics.c (simplify_loop_decl_cond): Likewise.
1309	* typeck.c (rationalize_conditional_expr): Likewise.
1310	(cp_build_binary_op): Use true instead of 1.
1311	(cp_build_unary_op): Change nonconvert parameter type to bool.  Use true
1312	instead of 1.
1313	(build_unary_op): Change nonconvert parameter type to bool.
1314	(unary_complex_lvalue): Use false instead of 0.
1315
13162016-09-13  Jakub Jelinek  <jakub@redhat.com>
1317
1318	Implement P0028R4, C++17 using attribute namespaces without repetition
1319	* parser.c (cp_parser_std_attribute): Add ATTR_NS argument.  Diagnose
1320	non-NULL ATTR_NS with scoped attribute token.  Handle non-NULL
1321	ATTR_NS with non-scoped attribute tokens.  Allow named ops in
1322	identifier after ::.
1323	(cp_parser_std_attribute_list): Add ATTR_NS argument, pass it down
1324	to cp_parser_std_attribute calls.
1325	(cp_parser_std_attribute_spec): Parse optional C++17
1326	attribute-using-prefix, adjust grammar in function comment.
1327
1328	PR c++/77553
1329	* constexpr.c (cxx_fold_pointer_plus_expression): New function.
1330	(cxx_eval_binary_expression): Use it for POINTER_PLUS_EXPR.
1331	(cxx_eval_pointer_plus_expression): Remove.
1332	(cxx_eval_constant_expression) <case POINTER_PLUS_EXPR>: Don't
1333	call cxx_eval_pointer_plus_expression.
1334
13352016-09-13  David Malcolm  <dmalcolm@redhat.com>
1336
1337	* parser.c (cp_parser_class_specifier_1): Update for renaming of
1338	add_fixit_insert to add_fixit_insert_before.
1339	(cp_parser_class_head): Likewise.
1340
13412016-09-12  Bernd Edlinger  <bernd.edlinger@hotmail.de>
1342
1343	PR c++/77496
1344	* call.c (build_conditional_expr_1): Call warn_for_omitted_condop.
1345	* class.c (instantiate_type): Look through the SAVE_EXPR.
1346
13472016-09-09  Jason Merrill  <jason@redhat.com>
1348
1349	Implement P0035R4, C++17 new of over-aligned types.
1350	* cp-tree.h (enum cp_tree_index): Add CPTI_ALIGN_TYPE.
1351	(align_type_node): New macro.
1352	* call.c (build_operator_new_call): Handle C++17 aligned new.
1353	(second_parm_is_size_t, build_op_delete_call): Likewise.
1354	(non_placement_deallocation_fn_p): Likewise. Rename to
1355	usual_deallocation_fn_p.
1356	(aligned_allocation_fn_p, aligned_deallocation_fn_p): New.
1357	* decl.c (cxx_init_decl_processing): Add aligned new support.
1358	* init.c (type_has_new_extended_alignment): New.
1359	(build_new_1): Handle aligned new.
1360	* tree.c (vec_copy_and_insert): New.
1361
13622016-09-02  Jakub Jelinek  <jakub@redhat.com>
1363
1364	PR sanitizer/77396
1365	* decl2.c (do_static_initialization_or_destruction): Only
1366	call asan_dynamic_init_call if INITP is true.
1367
13682016-09-01  Martin Sebor  <msebor@redhat.com>
1369
1370	* mangle.c: Increase buffer size to guarantee it fits the output
1371	of the formatted function regardless of its arguments.
1372
13732016-09-01  Marek Polacek  <polacek@redhat.com>
1374
1375	PR c/7652
1376	* error.c (dump_type): Fix falls through comment.
1377	(dump_decl): Likewise.
1378	(dump_expr): Likewise.
1379
13802016-08-30  David Malcolm  <dmalcolm@redhat.com>
1381
1382	* parser.c (cp_parser_enclosed_template_argument_list): Add fix-it
1383	hint to ">>" within nested template argument list error.
1384
13852016-08-30  David Malcolm  <dmalcolm@redhat.com>
1386
1387	* name-lookup.c (suggest_alternatives_for): Use add_fixit_replace
1388	rather than add_fixit_misspelled_id.
1389	* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
1390
13912016-08-29  Jason Merrill  <jason@redhat.com>
1392
1393	PR c++/77379
1394	* mangle.c (maybe_check_abi_tags): Add version parm, handle thunks.
1395	(mangle_thunk): Add thunk parameter.
1396	* method.c (finish_thunk): Pass it.
1397	* cp-tree.h: Declare it.
1398
13992016-08-15  Jason Merrill  <jason@redhat.com>
1400
1401	Avoid calling a trivial default constructor.
1402	* class.c (default_ctor_p): New.
1403	(in_class_defaulted_default_constructor): Use it.
1404	(type_has_non_user_provided_default_constructor): Use it.
1405	* call.c (build_over_call): Handle trivial default constructor.
1406	* cp-tree.h: Declare default_ctor_p.
1407
1408	PR c++/57728
1409	* pt.c (do_type_instantiation): Don't mess with non-user-provided
1410	member functions.
1411
14122016-08-25  Marek Polacek  <polacek@redhat.com>
1413
1414	* parser.c (cp_parser_binary_expression): Pass LHS to
1415	warn_logical_not_parentheses.
1416
14172016-08-18  Marek Polacek  <polacek@redhat.com>
1418
1419	PR c/7652
1420	* call.c (add_builtin_candidate): Add gcc_fallthrough.
1421	* cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
1422	* parser.c (cp_parser_skip_to_end_of_statement): Likewise.
1423	(cp_parser_cache_defarg): Likewise.
1424
14252016-08-12  Marek Polacek  <polacek@redhat.com>
1426
1427	PR c/7652
1428	* call.c (add_builtin_candidate): Add FALLTHRU.
1429	(build_integral_nontype_arg_conv): Adjust fall through comment.
1430	(build_new_op_1): Add FALLTHRU.
1431	(convert_like_real): Adjust fall through comment.
1432	* class.c (fixed_type_or_null): Likewise.
1433	* constexpr.c (cxx_eval_constant_expression): Likewise.
1434	(potential_constant_expression_1): Likewise.  Add FALLTHRU.
1435	* cp-gimplify.c (cp_gimplify_expr): Adjust fall through comment.
1436	(cp_fold): Add FALLTHRU.
1437	* cvt.c (build_expr_type_conversion): Adjust fall through comment.
1438	* cxx-pretty-print.c (pp_cxx_unqualified_id): Add FALLTHRU.
1439	(pp_cxx_qualified_id): Likewise.
1440	(cxx_pretty_printer::constant): Adjust fall through comment.
1441	(cxx_pretty_printer::primary_expression): Add FALLTHRU.
1442	(pp_cxx_pm_expression): Adjust fall through comment.
1443	(cxx_pretty_printer::expression): Add FALLTHRU.
1444	(cxx_pretty_printer::declaration_specifiers): Reformat code.
1445	(pp_cxx_type_specifier_seq): Adjust fall through comment.
1446	(pp_cxx_ptr_operator): Likewise.  Add FALLTHRU.
1447	* error.c (dump_type): Adjust fall through comment.
1448	(dump_decl): Likewise.
1449	* mangle.c (write_type): Likewise.
1450	* method.c (synthesized_method_walk): Add FALLTHRU.
1451	* name-lookup.c (arg_assoc_type): Likewise.
1452	* parser.c (cp_lexer_print_token): Adjust fall through comment.
1453	(cp_parser_primary_expression): Add FALLTHRU.
1454	(cp_parser_operator): Likewise.
1455	* pt.c (find_parameter_packs_r): Likewise.
1456	(tsubst_aggr_type): Adjust fall through comment.
1457	* semantics.c (finish_omp_clauses): Add FALLTHRU.
1458	* tree.c (lvalue_kind): Likewise.
1459
14602016-08-12  Alexandre Oliva  <aoliva@redhat.com>
1461
1462	PR debug/63240
1463	* cp-objcp-common.c (cp_function_decl_defaulted): New.
1464	(cp_function_decl_explicit_p): Const_tree-ify.
1465	(cp_function_decl_deleted_p): Likewise.
1466	* cp-objcp-common.h (cp_function_decl_defaulted): Declare.
1467	(cp_function_decl_explicit_p): Const_tree-ify.
1468	(cp_function_decl_deleted_p): Likewise.
1469	(LANG_HOOKS_FUNCTION_DECL_DEFAULTED): Redefine.
1470
14712016-08-11  Jakub Jelinek  <jakub@redhat.com>
1472
1473	PR c++/72868
1474	* constexpr.c (label_matches): Handle case range expressions.
1475
14762016-08-11  Jason Merrill  <jason@redhat.com>
1477
1478	PR c++/73456
1479	* logic.cc (non_atomic_constraint_p): Handle EXPR_PACK_EXPANSION.
1480
14812016-08-10  Jason Merrill  <jason@redhat.com>
1482
1483	Implement C++17 constexpr if.
1484	* cp-tree.h (IF_STMT_CONSTEXPR_P): New.
1485	* name-lookup.c (push_to_top_level, pop_from_top_level_1): Handle it.
1486	* parser.h (struct cp_parser): Add in_discarded_stmt field.
1487	* parser.c (cp_parser_selection_statement): Handle 'if constexpr'.
1488	(cp_parser_jump_statement): Avoid deducing from a discarded return.
1489	* pt.c (tsubst_expr): Only instantiate taken branch of constexpr if.
1490	* semantics.c (begin_if_stmt): Set the binding level this_entity.
1491	(finish_if_stmt_cond): Require the condition of a
1492	constexpr if to be constant.
1493	* decl.c (level_for_constexpr_if): New.
1494	(named_label_entry): Add in_constexpr_if field.
1495	(poplevel_named_label_1): Set it.
1496	(check_goto): Check it.
1497	(check_previous_goto_1): Check level_for_constexpr_if.
1498
14992016-08-09  Jason Merrill  <jason@redhat.com>
1500
1501	PR c++/68703
1502	* decl2.c (any_dependent_type_attributes_p): New.
1503	* pt.c (dependent_type_p_r, type_dependent_expression_p): Check it.
1504	* semantics.c (finish_id_expression): Check it.
1505	* typeck.c (finish_class_member_access_expr): Check it.
1506
1507	PR c++/71712
1508	* class.c (check_abi_tags): Don't duplicate tags for conversion ops.
1509
1510	Adjust mangling of ABI tags on class template member functions.
1511	* class.c (missing_abi_tags): New.
1512	(check_abi_tags): Don't check template. Add just_checking mode.
1513	* mangle.c (abi_flag_at_least, any_abi_below, equal_abi_tags): New.
1514	(sorted_abi_tags): Split out from write_abi_tags.
1515	(struct releasing_vec): New.
1516	(write_unqualified_name): Only look for the primary
1517	template for types.  Implement backward compatibility.
1518
1519	PR c++/72849
1520	* constexpr.c (cxx_eval_constant_expression): Check
1521	COMPLETE_TYPE_P before calling is_really_empty_class.
1522	* class.c (is_really_empty_class): Don't call complete_type.
1523
1524	PR c++/56701
1525	* typeck.c (cp_build_addr_expr_1): Remove special *this handling.
1526
15272016-08-09  Jakub Jelinek  <jakub@redhat.com>
1528
1529	PR c++/72809
1530	* rtti.c (get_pseudo_ti_index): Return TK_CLASS_TYPE for
1531	builtin aggregate types without TYPE_BINFO.
1532
15332016-08-08  Jason Merrill  <jason@redhat.com>
1534
1535	Implement C++17 constexpr lambda.
1536	* class.c (finalize_literal_type_property): Handle lambdas.
1537	* constexpr.c (is_valid_constexpr_fn): Likewise.  No longer static.
1538	(explain_invalid_constexpr_fn, cxx_eval_call_expression): Handle
1539	lambdas.
1540	(cxx_eval_constant_expression): Handle capture proxy.
1541	(var_in_constexpr_fn): Don't check for C++14.
1542	(var_in_maybe_constexpr_fn): New.
1543	(potential_constant_expression_1): Use it.  Check DECL_EXPR for
1544	declarations not allowed in constexpr function.  Handle
1545	STATIC_ASSERT, RANGE_FOR_STMT.
1546	* decl.c (make_rtl_for_nonlocal_decl): Use var_in_maybe_constexpr_fn.
1547	(finish_function): Set DECL_DECLARED_CONSTEXPR_P on lambda members.
1548	* lambda.c (begin_lambda_type): Set CLASSTYPE_LITERAL_P.
1549	(maybe_add_lambda_conv_op): Clear thunk CALL_EXPR location.
1550	(lambda_static_thunk_p): New.
1551	* parser.c (cp_keyword_starts_decl_specifier_p): Add RID_CONSTEXPR.
1552	(CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): New enumerator.
1553	(cp_parser_decl_specifier_seq): Handle it.
1554	(cp_parser_lambda_declarator_opt): Use cp_parser_decl_specifier_seq.
1555	* pt.c (instantiate_class_template_1): Set CLASSTYPE_LITERAL_P.
1556	(tsubst_copy_and_build) [CALL_EXPR]: Propagate CALL_FROM_THUNK_P.
1557	* error.c (dump_function_decl): Check TFF_NO_TEMPLATE_BINDINGS.
1558	(dump_expr) [FUNCTION_DECL]: Pass it.
1559
15602016-08-08  Jason Merrill  <jason@redhat.com>
1561
1562	PR c++/67131
1563	* class.c (is_really_empty_class): Call complete_type.
1564	* constexpr.c (cxx_eval_constant_expression): Check
1565	is_really_empty_class.
1566	(potential_constant_expression_1): Likewise.  Check for error type.
1567
15682016-08-08  Jakub Jelinek  <jakub@redhat.com>
1569
1570	PR c++/58706
1571	* parser.c: Include tree-iterator.h.
1572	(cp_parser_omp_for_loop_init): Move lambda DECL_EXPRs from init
1573	to FOR_BLOCK.
1574	(cp_parser_omp_for_loop): Handle non-STATEMENT_LIST FOR_BLOCK
1575	entries.
1576
15772016-08-06  Jonathan Wakely  <jwakely@redhat.com>
1578
1579	* call.c (convert_like_real): Harmonize diagnostics for invalid
1580	reference binding.
1581
15822016-08-05  Martin Sebor  <msebor@redhat.com>
1583
1584	* constexpr.c (cxx_eval_store_expression): Remove hyphen from
1585	the spelling of "constant-expression" in diagnostic messages
1586	for consistency.
1587	(cxx_eval_constant_expression): Same.
1588	(cxx_eval_outermost_constant_expr): Same.
1589	(potential_constant_expression_1): Same.
1590
15912016-08-05  Nathan Sidwell  <nathan@acm.org>
1592
1593	PR c++/68724
1594	* pt.c (unify): TRAIT_EXPR is an expr.
1595
15962016-08-04  Paolo Carlini  <paolo.carlini@oracle.com>
1597
1598	PR c++/72800
1599	* lambda.c (add_capture): Check lambda_capture_field_type return
1600	value for error_mark_node.
1601
16022016-08-04  Patrick Palka  <ppalka@gcc.gnu.org>
1603
1604	PR c++/72759
1605	* pt.c (tsubst_qualified_id): Return error_mark_node if
1606	template_args is error_mark_node.
1607
16082016-08-04  Jason Merrill  <jason@redhat.com>
1609
1610	PR c++/72415
1611	* pt.c (tsubst_pack_expansion): Pull a single pack expansion out
1612	of the TREE_VEC.
1613
1614	* cp-tree.h (TYPE_UNNAMED_P): Rename from TYPE_ANONYMOUS_P.
1615	(TYPE_WAS_UNNAMED): Rename from TYPE_WAS_ANONYMOUS.
1616	* class.c, decl.c, decl2.c, error.c, lambda.c, mangle.c,
1617	name-lookup.c, parser.c, pt.c, semantics.c, tree.c: Adjust.
1618
1619	PR c++/72796
1620	* typeck.c (finish_class_member_access_expr): Avoid stripping
1621	SCOPE_REF to dependent base.
1622
16232016-08-04  Thomas Schwinge  <thomas@codesourcery.com>
1624
1625	* parser.c (cp_ensure_no_oacc_routine): Improve diagnostics.
1626	(cp_parser_late_parsing_cilk_simd_fn_info): Fix diagnostics.
1627	(cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
1628	Simplify code, and improve diagnostics.
1629	(cp_parser_oacc_routine): Likewise.  Move pragma context
1630	checking...
1631	(cp_parser_pragma): ... here.
1632
1633	* parser.h (struct cp_omp_declare_simd_data): New.
1634	(struct cp_parser): Use it for oacc_routine member.
1635	* parser.c (cp_ensure_no_oacc_routine, cp_parser_oacc_routine)
1636	(cp_parser_late_parsing_oacc_routine, cp_finalize_oacc_routine):
1637	Use it.  Simplify code.
1638	(cp_parser_new): Initialize all members pointing to special
1639	parsing data structures.
1640	(cp_parser_cilk_simd_fn_vector_attrs): Initialize
1641	parser->cilk_simd_fn_info->clauses.
1642	(cp_parser_omp_declare_simd): Initialize
1643	parser->omp_declare_simd->clauses.
1644	(cp_parser_late_parsing_omp_declare_simd): Simplify code.
1645
16462016-08-04  Marek Polacek  <polacek@redhat.com>
1647
1648	PR c++/70229
1649	* constexpr.c (check_constexpr_ctor_body_1): Allow typedef
1650	declarations.
1651
16522016-08-01  Jason Merrill  <jason@redhat.com>
1653
1654	* mangle.c (mangle_decl): Warn about mangled name change even if
1655	DECL_REALLY_EXTERN.
1656
1657	* mangle.c (get_abi_tags): New.
1658	(find_substitution, write_unqualified_name, write_abi_tags)
1659	(maybe_check_abi_tags): Use it.
1660
1661	* mangle.c (mangle_decl): Fix mangled name change warning.
1662
1663	PR c++/72766
1664	* constexpr.c (cxx_eval_pointer_plus_expression): Check constancy
1665	of nelts.
1666	* cp-gimplify.c (cp_fully_fold): Only maybe_constant_value in
1667	C++11 and up.
1668
16692016-07-30  Martin Sebor  <msebor@redhat.com>
1670
1671	PR c++/60760
1672	PR c++/71091
1673	* constexpr.c (cxx_eval_binary_expression): Reject invalid expressions
1674	involving null pointers.
1675	(cxx_eval_component_reference): Reject null pointer dereferences.
1676	(cxx_eval_indirect_ref): Reject indirecting through null pointers.
1677	(cxx_eval_constant_expression): Reject invalid expressions involving
1678	null pointers.
1679
16802016-07-29  Marek Polacek  <polacek@redhat.com>
1681
1682	PR c/71926
1683	* semantics.c (maybe_convert_cond): Use the location of COND for the
1684	parentheses warning.
1685
16862016-07-29  Jason Merrill  <jason@redhat.com>
1687
1688	* decl.c (build_enumerator): Tweak diagnostic.
1689
1690	PR c++/72457
1691	* init.c (expand_aggr_init_1): Only handle value-init of bases.
1692	* constexpr.c (build_data_member_initialization): Handle multiple
1693	initializers for the same field.
1694
16952016-07-28  Paolo Carlini  <paolo.carlini@oracle.com>
1696
1697	PR c++/71665
1698	* decl.c (build_enumerator): Check the type of the enumerator before
1699	calling cxx_constant_value.
1700
17012016-07-27  Jason Merrill  <jason@redhat.com>
1702
1703	PR c++/71747
1704	* pt.c (get_partial_spec_bindings): Replace tparms and spec_args
1705	parameters with spec_tmpl.  Call push_tinst_level.
1706	(most_specialized_partial_spec): Adjust.
1707	(more_specialized_partial_spec): Adjust.
1708
17092016-07-25  Jason Merrill  <jason@redhat.com>
1710
1711	PR c++/65970
1712	* cp-gimplify.c (genericize_cp_loop): Revert location change.
1713
1714	PR c++/71837
1715	* lambda.c (add_capture): Leave a pack expansion in a TREE_LIST.
1716	(build_lambda_object): Call build_x_compound_expr_from_list.
1717	* pt.c (tsubst) [DECLTYPE_TYPE]: Likewise.
1718
1719	PR c++/71833
1720	PR c++/54440
1721	* pt.c (coerce_template_parameter_pack): Fix logic for
1722	pack index.
1723
1724	PR c++/65970
1725	* constexpr.c (cxx_eval_loop_expr): Count iterations.
1726	* cp-gimplify.c (genericize_cp_loop): Use start_locus even for
1727	infinite loops.
1728
1729	PR c++/71972
1730	* constexpr.c (cxx_eval_array_reference): Handle looking for the
1731	value of an element we're currently modifying.
1732
17332016-07-24  Jason Merrill  <jason@redhat.com>
1734
1735	PR c++/71515
1736	* pt.c (resolve_typename_type): Try to avoid calling
1737	currently_open_class.
1738
17392016-07-23  Jason Merrill  <jason@redhat.com>
1740
1741	PR c++/66617
1742	* call.c (add_list_candidates): Handle VTT parm.
1743	(build_new_method_call_1): Likewise.
1744
1745	PR c++/55922
1746	PR c++/63151
1747	* init.c (expand_aggr_init_1): Handle list-initialization from {}.
1748
1749	PR c++/70709
1750	* class.c (walk_subobject_offsets): Handle 0-length array.
1751
1752	PR c++/70778
1753	* pt.c (tsubst): Also substitute into the template of a
1754	BOUND_TEMPLATE_TEMPLATE_PARM.
1755
1756	PR c++/71738
1757	* pt.c (lookup_template_class_1): Handle getting template from tsubst.
1758
1759	PR c++/71350
1760	* decl.c (reshape_init_r): Check complain for missing braces warning.
1761
17622016-07-22  Jason Merrill  <jason@redhat.com>
1763
1764	PR c++/71576
1765	* call.c (convert_like_real): Use lvalue_kind.
1766
1767	PR c++/71748
1768	PR c++/52746
1769	* pt.c (tsubst_baselink): Call
1770	adjust_result_of_qualified_name_lookup for unqualified
1771	destructors.
1772
17732016-07-21  Jason Merrill  <jason@redhat.com>
1774
1775	PR c++/69223
1776	* semantics.c (apply_deduced_return_type): Call
1777	complete_type_or_else before building the new RESULT_DECL.
1778
1779	PR c++/71274
1780	* decl2.c (maybe_instantiate_decl): Split out from mark_used.
1781	(decl_constant_var_p): Use it instead.
1782
1783	PR c++/71630
1784	* pt.c (instantiate_decl): Fix pattern_defined for namespace scope
1785	variable templates.
1786
1787	PR c++/71913
1788	* call.c (unsafe_copy_elision_p): It's OK to elide when
1789	initializing an unknown object.
1790
1791	* call.c (build_over_call): Check unsafe_copy_elision_p even for
1792	trivial constructors.
1793	* method.c (do_build_copy_constructor): Don't copy tail padding
1794	even in a trivial constructor.
1795
17962016-07-21  Jakub Jelinek  <jakub@redhat.com>
1797
1798	PR c++/71728
1799	* constexpr.c (potential_constant_expression_1) <case GOTO_EXPR>:
1800	Replace assert with test, return false if the goto isn't break
1801	or continue.  Formatting fix.
1802
18032016-07-21  Richard Biener  <rguenther@suse.de>
1804
1805	* vtable-class-hierarchy.c (vtv_generate_init_routine): Set
1806	DECL_IGNORED_P.
1807
18082016-07-21  Jakub Jelinek  <jakub@redhat.com>
1809
1810	PR c++/71941
1811	* cp-gimplify.c (cp_genericize): For nested cp_genericize calls
1812	save/restore bc_label array.
1813
18142016-07-21  Jason Merrill  <jason@redhat.com>
1815
1816	PR c++/70781
1817	* parser.c (cp_parser_lambda_expression): Unset OK if there was an
1818	error parsing the lambda-declarator.
1819
1820	PR c++/71896
1821	* constexpr.c (cxx_eval_binary_expression): Handle comparison
1822	between lowered and unlowered PTRMEM_CST.
1823
1824	PR c++/65168
1825	* typeck.c (cp_truthvalue_conversion): Compare pointers to nullptr.
1826	Don't set c_inhibit_evaluation_warnings.
1827
1828	PR c++/71121
1829	* cp-gimplify.c (cp_fully_fold): First call maybe_constant_value.
1830
18312016-07-21  Andrew Sutton  <andrew.n.sutton@gmail.com>
1832	    Jason Merrill  <jason@redhat.com>
1833
1834	Improving concepts performance and diagnostics.
1835	PR c++/67565
1836	PR c++/67579
1837	PR c++/71843
1838	* cp-tree.def (CHECK_CONSTR): New.
1839	* cp-tree.h (CHECK_CONSTR_CONCEPT): New.
1840	(CHECK_CONSTR_ARGS): New.
1841	* constraint.cc (make_predicate_constraint): Remove in favor of
1842	normalize_expression.
1843	(resolve_constraint_check): Actually return error_mark_node when
1844	resolution fails.
1845	(resolve_variable_concept_check): Perform coercion as if processing
1846	a template. Also return errors on resolution failure.
1847	(lift_*): Remove all of these functions. Don't unnecessarily inline
1848	concepts.
1849	(learn_*): Add facilities to memoize implications for subsumption
1850	during normalization.
1851	(expanding_concept): New.
1852	(expand_concept): New. Return the inlined and normalized definition
1853	of a concept when needed.
1854	(transform_*, xform_*): Rename to normalize_* to better reflect the
1855	responsibility of those functions.
1856	(normalize_template_id_expression): Check for non-boolean operands
1857	when possible. Generate check constraints instead of normal variable
1858	references.
1859	(normalize_call_expression): Report errors when resolution fails.
1860	(check_for_logical_overloads): Rewrite this check to more accurately
1861	report the error.
1862	(normalize_atom): Check for overloaded calls and invalid types before
1863	determining if the expression refers to a concept.
1864	(build_constraints): Don't cache normalized constraints or decomposed
1865	assumptions.
1866	(finish_shorthand_constraint): Return a normalized expression instead
1867	of a predicate constraint.
1868	(finish_template_introduction): Same.
1869	(placeholder_extract_concept_and_args): Rewrite this since we only
1870	ever get check constraints here.
1871	(equivalent_placeholder_constraints): Rewrite in terms of check
1872	constraints, and handle error_mark_nodes correctly.
1873	(tsubst_check_constraint, tsubst_expr_constr, tsubst_type_constr)
1874	(tsubst_implicit_conversion_constr)
1875	(tsubst_argument_deduction_constr, tsubst_exception_constr)
1876	(tsubst_parameterized_constraint, tsubst_constraint): New.
1877	(tsbust_conjunection): Replace with tsubst_logical_operator and
1878	actually generate the right kind of constraint.
1879	(tsubst_requirement_body): Reverse the order of substituted arguments
1880	so that they appear in the order written (helps diagnostics).
1881	(satisfy_check_constraint): New.
1882	(satisfy_conjunction): Simplify.
1883	(satisfy_disjunction): Same.
1884	(satisfy_constraint_1): Handle check constraints.
1885	(eval_constr): New (private) global state.
1886	(evaluating_constraints_sentinel): New. Manages eval_constr.
1887	(satisfy_constraint): Add timing variables.
1888	(satisfy_associated_constraints): Add hooks for memoization.
1889	(evaluate_function_concept): Build a check constraint instead of
1890	normalizing its definition.
1891	(evaluate_variable_concept): Same.
1892	(evaluate_constraint_expression): Normalize, but in the current
1893	declaration processing context.
1894	(evaluating_constraints_p): New.
1895	(elide_constraint_failure_p): Actually emit constraint_thresh errors.
1896	(diagnose_*): Remove artificial indentation. Add a new parameter to
1897	each that tracks the current (complete) constraint prior to any
1898	substitutions.
1899	(diagnose_expression): Removed.
1900	(diagnose_call_expression): Same.
1901	(diagnose_template_id): Same.
1902	(diagnose_template_id): New.
1903	(diagnose_logical_constraint): New.
1904	(diagnose_expression_constraint): Show the original expression.
1905	(diagnose_type_constraint): Show the original type.
1906	(diagnose_implicit_conversion_constraint): Be specific about
1907	failures, don't re-diagnose a known-to-be-failed substitutions,
1908	and manage elisions properly.
1909	(diagnose_argument_deduction_constraint): Same.
1910	(diagnose_exception_constraint): Same.
1911	(diagnose_parameterized_constraint): Same.
1912	(constraint_p): Allow EXPR_PACK_EXPANSION.
1913	* logic.cc (next_by_distance): Removed. No longer used.
1914	(any_p): Renamed from any_of.
1915	(term_entry, term_hasher): New.
1916	(term_list): Rewrite to include a hash table for quick lookup.
1917	Also, make less stateful.
1918	(proof_state): Extend to allow goals to be discharged once
1919	satisfied.
1920	(non_atomic_constraint_p): New.
1921	(any_non_atomic_constraints_p): New.
1922	(...rest...): Previous implementation completely replaced with an
1923	iterative algorithm that opportunistically prunes the search space
1924	before committing to using more memory.
1925	* parser.c: (cp_parser_type_parameter): Normalize constraints.
1926	(cp_parser_explicit_template_declaration): Same.
1927	* pt.c: (finish_template_variable): Be less redundant with this error
1928	message.
1929	(template_args_equal): No longer static.
1930	(tsubst_decl): Don't try to find specializations of variables that
1931	have already been instantiated.
1932	(build_non_dependent_expr): Avoid infinite recursion during concept
1933	expansion.
1934	(make_constrained_auto): Normalize constraints.
1935	(do_auto_deduction): When doing auto deduction from a
1936	partial-concept-id, be sure to include the explicit args checking
1937	the constraints.
1938	(constraint_sat_*): New. Memoize satisfied constraints.
1939	(concept_spec_*): New. Memoize expressions associated with a concept
1940	specialization.
1941	(constraint_memos, concept_memos): New.
1942	(lookup_constraint_satisfaction, memoize_constraint_satisfaction): New.
1943	(lookup_concept_satisfaction, memoize_concept_satisfaction): New.
1944	(get_concept_expansion, save_concept_expansion): New.
1945	(hash_subsumption_args): New.
1946	(comp_subsumption_args): New.
1947	(subsumption_*): New. Memoize parts of the subsumption relation.
1948	(lookup_subsumption_result, save_subsumption_result): New.
1949	(init_constraint_processing): Initialize memo tables.
1950	(get_constraints): Shortcut if !flag_concepts.
1951	* decl.c (grokfndecl): Normalize constraints.
1952	* error.c (dump_simple_decl): Print "concept" when appropriate.
1953	(dump_function_decl): Same.
1954	(dump_template_decl): Don't write requirements when we're not
1955	printing the header.
1956	(dump_expr): Handle fold expressions.
1957	* cxx-pretty-print.c (cxx_pretty_printer::expression): Handle
1958	fold expressions.
1959	(get_fold_operator): New.
1960	(pp_cxx_unary_left_fold_expression): New.
1961	(pp_cxx_unary_right_fold_expression): New.
1962	(pp_cxx_binary_fold_expression): New.
1963	(pp_cxx_check_constraint): New.
1964	(pp_cxx_*_constraint): Rewrite the grammar of internal constraints
1965	to make them easier to read when debugging.
1966	* search.c (accessible_p): Don't shortcut when evaluating constraints.
1967	* tree.c (cp_tree_equal): Handle CHECK_CONSTR.
1968
19692016-07-20  David Malcolm  <dmalcolm@redhat.com>
1970
1971	PR c/70339
1972	PR c/71858
1973	* name-lookup.c: Include gcc-rich-location.h, spellcheck-tree.h,
1974	and parser.h.
1975	(suggest_alternatives_for): If no candidates are found, try
1976	lookup_name_fuzzy and report if if finds a suggestion.
1977	(consider_binding_level): New function.
1978	(lookup_name_fuzzy) New function.
1979	* parser.c: Include gcc-rich-location.h.
1980	(cp_lexer_next_token_is_decl_specifier_keyword): Move most of
1981	logic into...
1982	(cp_keyword_starts_decl_specifier_p): ...this new function.
1983	(cp_parser_diagnose_invalid_type_name): When issuing
1984	"does not name a type" errors, attempt to make a suggestion using
1985	lookup_name_fuzzy.
1986	* parser.h (cp_keyword_starts_decl_specifier_p): New prototype.
1987	* search.c (lookup_field_fuzzy_info::fuzzy_lookup_field): Reject
1988	types that are not CLASS_TYPE_P, rather than rejecting individual
1989	tree codes.
1990
19912016-07-20  Jakub Jelinek  <jakub@redhat.com>
1992
1993	PR c++/71909
1994	* parser.c (cp_parser_save_member_function_body): Consume
1995	__transaction_relaxed or __transaction_atomic with optional
1996	attribute.  Only skip catch with block if try keyword is seen.
1997
1998	PR c++/50060
1999	* constexpr.c (cxx_eval_builtin_function_call): Pass false as lval
2000	when evaluating call arguments.  Use fold_builtin_call_array instead
2001	of fold_build_call_array_loc, return t if it returns NULL.  Otherwise
2002	check the result with potential_constant_expression and call
2003	cxx_eval_constant_expression on it.
2004
20052016-07-19  Jason Merrill  <jason@redhat.com>
2006
2007	PR c++/67164
2008	* pt.c (iterative_hash_template_arg, template_args_equal): Don't
2009	handle ARGUMENT_PACK_SELECT.
2010
20112016-07-18  Jakub Jelinek  <jakub@redhat.com>
2012
2013	PR c++/70869
2014	PR c++/71054
2015	* cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change.
2016	* tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL
2017	non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and
2018	DECL_SIZE_UNIT.
2019
2020	PR c++/71835
2021	* call.c (build_op_call_1): Use convert_like_with_context only
2022	if cand->fn is a decl.
2023
2024	PR c++/71828
2025	* constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
2026	For lval don't use cxx_eval_unary_expression and instead recurse
2027	and if needed rebuild the reference.
2028
2029	PR c++/71826
2030	* pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.
2031
2032	PR c++/71822
2033	* cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
2034	fold *expr_p before genericizing it.
2035
2036	PR c++/71871
2037	* typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.
2038
20392016-07-15  Jason Merrill  <jason@redhat.com>
2040
2041	PR c++/71495
2042	* call.c (convert_like_real): Mask complain.
2043	* semantics.c (perform_koenig_lookup): Likewise.
2044
2045	PR c++/71092
2046	* constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph
2047	threw away DECL_SAVED_TREE.
2048
2049	PR c++/71117
2050	Core 2189
2051	* call.c (add_template_conv_candidate): Disable if there are
2052	viable candidates.
2053
2054	PR c++/71511
2055	* typeck2.c (cxx_incomplete_type_diagnostic): Handle DECLTYPE_TYPE.
2056
2057	PR c++/71513
2058	* pt.c (tsubst_attributes): Fix loop logic.
2059
2060	PR c++/71604
2061	PR c++/54430
2062	* parser.c (cp_parser_range_for): Modify IDENTIFIER_BINDING directly.
2063	(cp_parser_simple_declaration): Diagnose type definition in
2064	for-range-declaration.
2065
2066	PR c++/71711
2067	* operators.def: Add *_FOLD_EXPR.
2068	* cp-tree.h (FOLD_EXPR_P): Parenthesize.
2069	* mangle.c (write_expression): Handle fold-expressions.
2070	* pt.c (tsubst_unary_left_fold, tsubst_binary_left_fold)
2071	(tsubst_unary_right_fold, tsubst_binary_right_fold): Handle
2072	partial instantiation.
2073
2074	PR c++/71814
2075	* mangle.c (write_expression): Handle sizeof... an argument pack.
2076
2077	PR c++/71718
2078	* pt.c (push_tinst_level_loc): Set at_eof before fatal_error.
2079
2080	PR c++/70824
2081	* init.c (constant_value_1): Don't instantiated DECL_INITIAL of
2082	artificial variables.
2083
20842016-07-15  Cesar Philippidis  <cesar@codesourcery.com>
2085
2086	* parser.c (cp_parser_oacc_declare): Don't scan for
2087	GOMP_MAP_POINTER.
2088	* semantics.c (handle_omp_array_sections): Mark data clauses with
2089	GOMP_MAP_FORCE_{PRESENT,TO,FROM,TOFROM} as potentially having
2090	zero-length subarrays.
2091
20922016-07-11  Jason Merrill  <jason@redhat.com>
2093
2094	* decl.c (store_parm_decls): Remove check for void parm.
2095
20962016-07-08  Jason Merrill  <jason@redhat.com>
2097
2098	* cp-tree.h: Unpoison lvalue_p.
2099	* call.c, class.c, constexpr.c, cvt.c, init.c, lambda.c, pt.c,
2100	tree.c, typeck.c, typeck2.c: Use lvalue_p instead of
2101	real_lvalue_p.
2102
2103	* tree.c (obvalue_p): Rename from lvalue_p.
2104	(lvalue_p): Define for c-common.
2105	* call.c, cp-tree.h, cvt.c, init.c: Adjust.
2106	* typeck.c: Adjust.
2107	(cp_build_addr_expr_1): Remove obsolete code.
2108
2109	* tree.c (glvalue_p): Rename from lvalue_or_rvalue_with_address_p.
2110	* call.c, cp-tree.h, typeck.c: Adjust.
2111
2112	* lambda.c (maybe_add_lambda_conv_op): Fix null object argument.
2113
2114	P0145R2: Refining Expression Order for C++.
2115	* cp-gimplify.c (lvalue_has_side_effects): New.
2116	(cp_gimplify_expr): Implement assignment ordering.
2117	* call.c (op_is_ordered, build_over_call): Adjust for
2118	-fargs-in-order renaming to -fstrong-eval-order.
2119	* cp-gimplify.c (cp_gimplify_expr): Likewise.
2120
21212016-07-07  Jakub Jelinek  <jakub@redhat.com>
2122	    Kai Tietz  <ktietz70@googlemail.com>
2123
2124	PR c++/70869
2125	PR c++/71054
2126	* cp-gimplify.c (cp_genericize_r): For DECL_EXPR for non-static
2127	artificial vars, genericize their initializers.
2128
21292016-07-05  David Malcolm  <dmalcolm@redhat.com>
2130
2131	PR c++/62314
2132	* parser.c (cp_parser_class_specifier_1): When reporting
2133	missing semicolons, use a fixit-hint to suggest insertion
2134	of a semicolon immediately after the closing brace,
2135	offsetting the reported column accordingly.
2136
21372016-07-04  Jan Beulich  <jbeulich@suse.com>
2138
2139	* lang-specs.h ("@c++-header"): Conditionalize "-o".
2140
21412016-06-29  Thomas Schwinge  <thomas@codesourcery.com>
2142
2143	* parser.c (cp_parser_pragma) <PRAGMA_OMP_CANCELLATION_POINT>:
2144	Move pragma context checking into...
2145	(cp_parser_omp_cancellation_point): ... here, and improve
2146	diagnostic messages.
2147	* semantics.c (finish_omp_cancel, finish_omp_cancellation_point):
2148	Improve diagnostic messages.
2149
21502016-06-28  Jakub Jelinek  <jakub@redhat.com>
2151
2152	* Make-lang.in: Don't cat ../stage_current if it does not exist.
2153
21542016-06-24  Jason Merrill  <jason@redhat.com>
2155
2156	P0145R2: Refining Expression Order for C++.
2157	* typeck.c (cp_build_modify_expr): Leave COMPOUND_EXPR on LHS.
2158
2159	* tree.c (get_target_expr_sfinae): Handle bit-fields.
2160	(build_target_expr): Call mark_rvalue_use.
2161
21622016-06-24  Jakub Jelinek  <jakub@redhat.com>
2163
2164	* call.c (magic_varargs_p): Return 3 for __builtin_*_overflow_p.
2165	(build_over_call): For magic == 3, do no conversion only on 3rd
2166	argument.
2167
21682016-06-23  Andi Kleen  <ak@linux.intel.com>
2169
2170	* Make-lang.in: Add support for autofdo.
2171
21722016-06-21  Jason Merrill  <jason@redhat.com>
2173
2174	* constraint.cc (constraints_satisfied_p): Keep as many levels of
2175	args as our template has levels of parms.
2176
2177	* pt.c (template_parm_outer_level, uses_outer_template_parms): New.
2178	(type_dependent_expression_p): Use uses_outer_template_parms.
2179
21802016-06-20  David Malcolm  <dmalcolm@redhat.com>
2181
2182	* parser.c (cp_parser_string_literal): Convert non-standard
2183	concatenation error to directly use a rich_location, and
2184	use that to add the location of the first literal to the
2185	diagnostic.
2186
21872016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
2188
2189	* decl.c (validate_constexpr_redeclaration): Change pair of errors
2190	to error + inform.
2191	* error.c (dump_function_decl): Save the constexpr specifier too.
2192
21932016-06-17  Jakub Jelinek  <jakub@redhat.com>
2194
2195	* tree.c (builtin_valid_in_constant_expr_p): Test for
2196	DECL_BUILT_IN_CLASS equal to BUILT_IN_NORMAL instead of just
2197	DECL_BUILT_IN.
2198	(bot_manip): Likewise.
2199	* call.c (magic_varargs_p): Likewise.
2200
22012016-06-17  Paolo Carlini  <paolo.carlini@oracle.com>
2202
2203	* decl.c (grokfndecl): Change pair of errors to error + inform.
2204
22052016-06-17  Jason Merrill  <jason@redhat.com>
2206
2207	PR c++/71209
2208	* typeck.c (finish_class_member_access_expr): Avoid "not a base"
2209	warning when there are dependent bases.
2210
22112016-06-17  Jakub Jelinek  <jakub@redhat.com>
2212
2213	* semantics.c (handle_omp_array_sections_1): Don't ICE when
2214	processing_template_decl when checking for bitfields and unions.
2215	Look through REFERENCE_REF_P as base of COMPONENT_REF.
2216	(finish_omp_clauses): Look through REFERENCE_REF_P even for
2217	array sections with COMPONENT_REF bases.
2218
22192016-06-16  Jakub Jelinek  <jakub@redhat.com>
2220
2221	* parser.c (cp_parser_omp_var_list_no_open): Call
2222	convert_from_reference before cp_parser_postfix_dot_deref_expression.
2223	* semantics.c (finish_omp_clauses): Don't ICE when
2224	processing_template_decl when checking for bitfields and unions.
2225	Look through REFERENCE_REF_P as base of COMPONENT_REF.
2226
22272016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
2228
2229	* decl.c (wrapup_globals_for_namespace): Use DECL_SOURCE_LOCATION and
2230	"%qF" in warning_at instead of "%q+F" in warning.
2231	(check_redeclaration_exception_specification): Likewise in pedwarn
2232	(and error, inform, for consistency).
2233	* call.c (joust): Likewise.
2234
22352016-06-15  Paolo Carlini  <paolo.carlini@oracle.com>
2236
2237	PR c++/70202
2238	* decl.c (xref_basetypes): Revert r117839 changes; add fix-up
2239	code at the end of the for loop; also revert r159637 changes,
2240	add back the gcc_assert.
2241	* cp-tree.h (xref_basetypes): Adjust declaration.
2242	* parser.c (cp_parser_class_head): Adjust xref_basetypes call.
2243
22442016-06-14  David Malcolm  <dmalcolm@redhat.com>
2245
2246	* search.c: Include spellcheck-tree.h rather than spellcheck.h.
2247
22482016-06-14  David Malcolm  <dmalcolm@redhat.com>
2249
2250	* typeck.c: Include "gcc-rich-location.h".
2251	(finish_class_member_access_expr): Simplify fixit code by
2252	using gcc_rich_location::add_fixit_misspelled_id.
2253
22542016-06-14  Jason Merrill  <jason@redhat.com>
2255
2256	P0145R2: Refining Expression Order for C++.
2257	* cp-tree.h (CALL_EXPR_OPERATOR_SYNTAX, CALL_EXPR_ORDERED_ARGS)
2258	(CALL_EXPR_REVERSE_ARGS): New.
2259	* call.c (build_new_op_1): Set them.
2260	(extract_call_expr, op_is_ordered): New.
2261	(build_over_call): Set CALL_EXPR_ORDERED_ARGS.
2262	* cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Handle new flags.
2263	* pt.c (tsubst_copy_and_build): Copy new flags.
2264	* semantics.c (simplify_aggr_init_expr): Likewise.
2265	* tree.c (build_aggr_init_expr): Likewise.
2266	(build_min_non_dep_op_overload): Likewise.
2267
22682016-06-14  Jakub Jelinek  <jakub@redhat.com>
2269
2270	PR c++/71528
2271	* decl.c (duplicate_decls): For DECL_INITIALIZED_P non-external
2272	olddecl vars, preserve their TREE_READONLY bit.
2273
2274	PR c++/71516
2275	* decl.c (complete_vars): Handle gracefully type == error_mark_node.
2276
22772016-06-14  Paolo Carlini  <paolo.carlini@oracle.com>
2278
2279	* typeck2.c (digest_init_r): Use EXPR_LOC_OR_LOC on init.
2280
22812016-06-13  Paolo Carlini  <paolo.carlini@oracle.com>
2282
2283	* decl.c (grokdeclarator): Fix typo in pedwarn text.
2284
22852016-06-10  Thomas Schwinge  <thomas@codesourcery.com>
2286
2287	PR c/71381
2288	* parser.c (cp_parser_omp_var_list_no_open) <OMP_CLAUSE__CACHE_>:
2289	Loosen checking.
2290
22912016-06-09  Paolo Carlini  <paolo.carlini@oracle.com>
2292
2293	PR c++/71465
2294	Revert:
2295	2016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
2296
2297	PR c++/70202
2298	* parser.c (cp_parser_class_head): When xref_basetypes fails and
2299	emits an error do not zero the type.
2300
23012016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
2302
2303	* decl.c (maybe_deduce_size_from_array_init): Use
2304	DECL_SOURCE_LOCATION in error_at.
2305	(layout_var_decl): Likewise.
2306	(check_array_initializer): Likewise.
2307	(check_initializer): Likewise.
2308	(duplicate_decls, check_elaborated_type_specifier): Tidy.
2309
23102016-06-08  Martin Sebor  <msebor@redhat.com>
2311	    Jakub Jelinek  <jakub@redhat.com>
2312
2313	PR c++/70507
2314	PR c/68120
2315	* constexpr.c: Include gimple-fold.h.
2316	(cxx_eval_internal_function): New function.
2317	(cxx_eval_call_expression): Call it.
2318	(potential_constant_expression_1): Handle integer arithmetic
2319	overflow built-ins.
2320	* tree.c (builtin_valid_in_constant_expr_p): Handle
2321	BUILT_IN_{ADD,SUB,MUL}_OVERFLOW_P.
2322
23232016-06-08  Paolo Carlini  <paolo.carlini@oracle.com>
2324
2325	* pt.c (tsubst, case TYPENAME_TYPE): Don't delay checking the
2326	return value of	tsubst_aggr_type for error_mark_node.
2327
23282016-06-08  Jakub Jelinek  <jakub@redhat.com>
2329
2330	PR c++/71442
2331	* pt.c (tsubst_copy): Only set TREE_USED on DECLs.
2332
23332016-06-06  Jakub Jelinek  <jakub@redhat.com>
2334	    Patrick Palka  <ppalka@gcc.gnu.org>
2335
2336	PR c++/70847
2337	PR c++/71330
2338	PR c++/71393
2339	* cp-gimplify.c (cp_fold_r): Set *walk_subtrees = 0 and return NULL
2340	right after cp_fold call if cp_fold has returned the same stmt
2341	already in some earlier cp_fold_r call.
2342	(cp_fold_function): Add pset automatic variable, pass its address
2343	to cp_walk_tree.
2344
23452016-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
2346
2347	PR c++/70202
2348	* parser.c (cp_parser_class_head): When xref_basetypes fails and
2349	emits an error do not zero the type.
2350
23512016-06-03  Patrick Palka  <ppalka@gcc.gnu.org>
2352
2353	PR c++/27100
2354	* decl.c (duplicate_decls): Properly copy the
2355	DECL_PENDING_INLINE_P, DECL_PENDING_INLINE_INFO and
2356	DECL_SAVED_FUNCTION_DATA fields from OLDDECL to NEWDECL.
2357
23582016-06-03  Chung-Lin Tang  <cltang@codesourcery.com>
2359
2360	* semantics.c (finish_omp_clauses): Mark OpenACC reduction
2361	arguments as addressable when async clause exists.
2362
23632016-06-02  Jan Hubicka  <jh@suse.cz>
2364
2365	* cp-gimplify.c (genericize_continue_stmt): Force addition of
2366	predict stmt.
2367
23682016-06-02  Paolo Carlini  <paolo.carlini@oracle.com>
2369
2370	* decl.c (xref_tag_1): Change pairs of errors to error + inform.
2371	(start_enum): Likewise.
2372	* parser.c (cp_parser_class_head): Likewise.
2373
23742016-06-02  Jakub Jelinek  <jakub@redhat.com>
2375
2376	PR c++/71372
2377	* cp-gimplify.c (cp_fold): For INDIRECT_REF, if the folded expression
2378	is INDIRECT_REF or MEM_REF, copy over TREE_READONLY, TREE_SIDE_EFFECTS
2379	and TREE_THIS_VOLATILE flags.  For ARRAY_REF and ARRAY_RANGE_REF, copy
2380	over TREE_READONLY, TREE_SIDE_EFFECTS and TREE_THIS_VOLATILE flags
2381	to the newly built tree.
2382
23832016-05-31  Jason Merrill  <jason@redhat.com>
2384
2385	* pt.c (instantiate_decl): Avoid recalculation.
2386
2387	PR c++/60095
2388	PR c++/69515
2389	PR c++/69009
2390	* pt.c (instantiate_template_1): Don't put the partial
2391	specialization in DECL_TI_TEMPLATE.
2392	(partial_specialization_p, impartial_args): Remove.
2393	(regenerate_decl_from_template): Add args parm.
2394	(instantiate_decl): Look up the partial specialization again.
2395
2396	PR c++/71227
2397	* pt.c (check_explicit_specialization): Give better diagnostic about
2398	specializing a hidden friend.
2399
24002016-05-31  Paolo Carlini  <paolo.carlini@oracle.com>
2401
2402	PR c++/71248
2403	* decl.c (check_static_variable_definition): Use DECL_SOURCE_LOCATION
2404	to obtain correct locations; avoid redundant diagnostics on
2405	out-of-class definitions.
2406
24072016-05-30  Martin Sebor  <msebor@redhat.com>
2408
2409	PR c++/71306
2410	* init.c (warn_placement_new_too_small): Handle placement new arguments
2411	that are elements of arrays more carefully.  Remove a pointless loop.
2412
24132016-05-30  Jakub Jelinek  <jakub@redhat.com>
2414
2415	PR c++/71349
2416	* parser.c (cp_parser_omp_for): Don't disallow nowait clause
2417	when combined with target construct.
2418	(cp_parser_omp_parallel): Pass cclauses == NULL as last argument
2419	to cp_parser_omp_all_clauses.
2420
24212016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
2422
2423	PR c++/71238
2424	* lex.c (unqualified_name_lookup_error): Take a location too.
2425	(unqualified_fn_lookup_error): Take a cp_expr.
2426	* cp-tree.h (unqualified_name_lookup_error,
2427	unqualified_fn_lookup_error): Adjust declarations.
2428	* semantics.c (perform_koenig_lookup): Adjust
2429	unqualified_fn_lookup_error call, pass the location of
2430	the identifier too as part of a cp_expr.
2431
24322016-05-30  Paolo Carlini  <paolo.carlini@oracle.com>
2433
2434	PR c++/71099
2435	* parser.c (cp_parser_function_specifier_opt): Use current_class_type
2436	to improve the diagnostic about wrong uses of 'virtual'.
2437
24382016-05-29  Paolo Carlini  <paolo.carlini@oracle.com>
2439
2440	PR c++/71105
2441	* lambda.c (maybe_add_lambda_conv_op): Early return also when
2442	LAMBDA_EXPR_DEFAULT_CAPTURE_MODE != CPLD_NONE.
2443
24442016-05-28  Ville Voutilainen  <ville.voutilainen@gmail.com>
2445
2446	Revert:
2447	PR c++/69855
2448	* name-lookup.c (pushdecl_maybe_friend_1): Push local function
2449	decls into the global scope after stripping template bits
2450	and setting DECL_ANTICIPATED.
2451
24522016-05-27  Paolo Carlini  <paolo.carlini@oracle.com>
2453
2454	PR c++/60385
2455	* name-lookup.c (push_namespace): Return bool, false when pushdecl
2456	fails.
2457	* name-lookup.h (push_namespace): Adjust declaration.
2458	* parser.c (cp_parser_namespace_definition): Check push_namespace
2459	return value.
2460
24612016-05-27  Ville Voutilainen  <ville.voutilainen@gmail.com>
2462
2463	PR c++/69855
2464	* name-lookup.c (pushdecl_maybe_friend_1): Push local function
2465	decls into the global scope after stripping template bits
2466	and setting DECL_ANTICIPATED.
2467
24682016-05-26  Jakub Jelinek  <jakub@redhat.com>
2469
2470	* semantics.c (finish_omp_clauses) <case OMP_CLAUSE_SCHEDULE>: Warn
2471	if OMP_CLAUSE_SCHEDULE_CHUNK_EXPR is known not to be positive.
2472
24732016-05-26  Patrick Palka  <ppalka@gcc.gnu.org>
2474
2475	PR c++/70822
2476	PR c++/70106
2477	* cp-tree.h (REF_PARENTHESIZED_P): Make this flag apply to
2478	SCOPE_REFs too.
2479	* pt.c (tsubst_qualified_id): If REF_PARENTHESIZED_P is set
2480	on the qualified_id then propagate it to the resulting
2481	expression.
2482	(do_auto_deduction): Check REF_PARENTHESIZED_P on SCOPE_REFs
2483	too.
2484	* semantics.c (force_paren_expr): If given a SCOPE_REF, just set
2485	its REF_PARENTHESIZED_P flag.
2486
24872016-05-25  Jason Merrill  <jason@redhat.com>
2488
2489	PR c++/71173
2490	PR c++/70522
2491	* cp-tree.h (enum tag_types): Add scope_type.
2492	* parser.c (cp_parser_class_name): Use scope_type.
2493	(prefer_type_arg): Handle scope_type.
2494	(cp_parser_lookup_name): Use prefer_type_arg.
2495	* name-lookup.c (lookup_qualified_name): Change bool is_type_p to
2496	int prefer_type, use lookup_flags.
2497	* name-lookup.h: Adjust.
2498
24992016-05-24  Cesar Philippidis  <cesar@codesourcery.com>
2500
2501	* parser.c (cp_parser_oacc_declare): Add support for
2502	GOMP_MAP_FIRSTPRIVATE_POINTER.
2503	* semantics.c (handle_omp_array_sections_1): Replace bool is_omp
2504	argument with enum c_omp_region_type ort.  Don't privatize OpenACC
2505	non-static members.
2506	(handle_omp_array_sections): Replace bool is_omp argument with enum
2507	c_omp_region_type ort.  Update call to handle_omp_array_sections_1.
2508	(finish_omp_clauses): Add specific errors and warning messages for
2509	OpenACC.  Use firsrtprivate pointers for OpenACC subarrays.  Update
2510	call to handle_omp_array_sections.
2511
25122016-05-24  Jason Merrill  <jason@redhat.com>
2513
2514	PR c++/70584
2515	* cp-gimplify.c (cp_fold_maybe_rvalue): Loop in case cp_fold
2516	returns a decl.
2517	(cp_fold) [INDIRECT_REF]: Don't fold to an rvalue.
2518
25192016-05-24  Martin Sebor  <msebor@redhat.com>
2520
2521	PR c++/71147
2522	* decl.c (layout_var_decl, grokdeclarator): Use complete_or_array_type_p.
2523	* pt.c (instantiate_class_template_1): Try to complete the element
2524	type of a flexible array member.
2525	(can_complete_type_without_circularity): Handle arrays of unknown bound.
2526	* typeck.c (complete_type): Also complete the type of the elements of
2527	arrays with an unspecified bound.
2528
25292016-05-24  Paolo Carlini  <paolo.carlini@oracle.com>
2530
2531	PR c++/69872
2532	* typeck2.c (check_narrowing): Check pedwarn return value.
2533
25342016-05-24  Jakub Jelinek  <jakub@redhat.com>
2535
2536	PR c++/71257
2537	* semantics.c (finish_omp_clauses) <case OMP_CLAUSE_LINEAR>:
2538	For OMP_CLAUSE_LINEAR_REF don't require type to be
2539	integral or pointer.
2540
25412016-05-24  Richard Biener  <rguenther@suse.de>
2542
2543	PR middle-end/70434
2544	PR c/69504
2545	* expr.c (mark_exp_read): Handle VIEW_CONVERT_EXPR.
2546	* constexpr.c (cxx_eval_array_reference): Handle indexed
2547	vectors.
2548	* typeck.c (cp_build_array_ref): Adjust.
2549
25502016-05-23  Jason Merrill  <jason@redhat.com>
2551
2552	PR c++/70344
2553	* constexpr.c (cxx_eval_call_expression): Check for
2554	fun == current_function_decl again.
2555
2556	PR c++/70584
2557	* cp-gimplify.c (cp_fold) [INDIRECT_REF]: Call
2558	maybe_undo_parenthesized_ref.
2559
2560	PR c++/70735
2561	* pt.c (tsubst_copy): Just return a local variable from
2562	non-template context.  Don't call rest_of_decl_compilation for
2563	duplicated static locals.
2564	(tsubst_decl): Set DECL_CONTEXT of local static from another
2565	function.
2566
25672016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2568
2569	PR c++/70972
2570	* method.c (forward_parm): Use cp_build_reference_type.
2571
25722016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2573
2574	PR c++/69095
2575	* parser.c (cp_parser_initializer): Use check_for_bare_parameter_packs.
2576
25772016-05-23  Paolo Carlini  <paolo.carlini@oracle.com>
2578
2579	* pt.c (check_for_bare_parameter_packs): Improve error message
2580	location for expressions.
2581
25822016-05-20  Nathan Sidwell  <nathan@acm.org>
2583
2584	* constexpr.c (cxx_bind_parameters_in_call): Avoid gratuitous if
2585	... goto.
2586	(cxx_eval_call_expression): Fix comment grammar.
2587
25882016-05-20  Paolo Carlini  <paolo.carlini@oracle.com>
2589
2590	PR c++/70572
2591	* decl.c (cp_finish_decl): Check do_auto_deduction return value
2592	and return immediately in case of erroneous code.
2593
25942016-05-19  Marek Polacek  <polacek@redhat.com>
2595
2596	PR c++/71075
2597	* pt.c (unify_template_argument_mismatch): Use %qE instead of %qD.
2598
25992016-05-19  Jason Merrill  <jason@redhat.com>
2600
2601	PR c++/10200
2602	* pt.c (fn_type_unification): Add outer template args if needed.
2603	(type_unification_real): Handle getting full args.
2604
26052016-05-19  David Malcolm  <dmalcolm@redhat.com>
2606
2607	PR c++/71184
2608	* parser.c (cp_parser_operator): For array new/delete, check that
2609	cp_parser_require returned a non-NULL token before dereferencing
2610	it.
2611
26122016-05-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
2613
2614	* decl.c (finish_enum_value_list): Use the specified mode.
2615
26162016-05-18  Jason Merrill  <jason@redhat.com>
2617
2618	* pt.c (value_dependent_expression_p): Tweak new cases to better
2619	match the wording in the standard.
2620
26212016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
2622
2623	PR c++/69793
2624	* parser.c (cp_parser_template_id): Don't call cp_lexer_peek_nth_token
2625	when the previous cp_lexer_peek_token returns CPP_EOF.
2626
26272016-05-18  Paolo Carlini  <paolo.carlini@oracle.com>
2628
2629	PR c++/70466
2630	* call.c (convert_like_real): Check that we are actually converting
2631	from an init list.
2632
26332016-05-16  Matthew Wahab  <matthew.wahab@arm.com>
2634
2635	* decl.c (grokdeclarator): Remove errmsg and use of
2636	targetm.invalid_return_type.
2637	(grokparms): Remove errmsg and use of
2638	targetm.invalid_parameter_type.
2639
26402016-05-13  Jason Merrill  <jason@redhat.com>
2641
2642	PR c++/10200
2643	PR c++/69753
2644	* pt.c (tsubst_decl): Use uses_template_parms.
2645	(instantiate_template_1): Handle non-dependent calls in templates.
2646	(value_dependent_expression_p): Handle BASELINK, FUNCTION_DECL.
2647	(type_dependent_expression_p): Only consider innermost template	args.
2648	(dependent_template_arg_p): Check enclosing class of a template here.
2649	(dependent_template_p): Not here.
2650	(type_dependent_object_expression_p): New.
2651	* typeck.c (finish_class_member_access_expr): Use it.
2652	* parser.c (cp_parser_postfix_expression): Use it.
2653	(cp_parser_postfix_dot_deref_expression): Use it.  Use comptypes
2654	to detect the current instantiation.
2655	(cp_parser_lookup_name): Really implement DR 141.
2656	* search.c (lookup_field_r): Prefer a dependent using-declaration.
2657	(any_dependent_bases_p): Split out from...
2658	* name-lookup.c (do_class_using_decl): ...here.
2659	* call.c (build_new_method_call_1): Use it.
2660	* semantics.c (finish_call_expr): 'this' doesn't make a call dependent.
2661	* tree.c (non_static_member_function_p): Remove.
2662	* typeck2.c (build_x_arrow): Use dependent_scope_p.
2663
2664	* parser.c (cp_parser_postfix_dot_deref_expression): Use
2665	complete_type_or_else for unknown_type_node, too.
2666
26672016-05-12  Marek Polacek  <polacek@redhat.com>
2668
2669	PR c/70756
2670	* call.c (build_new_op_1): Pass LOC to cp_build_modify_expr.
2671	* cp-tree.h (cp_build_modify_expr): Update declaration.
2672	(cxx_incomplete_type_error, cxx_incomplete_type_diagnostic): New inline
2673	overloads.
2674	* cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Pass INPUT_LOCATION to
2675	cp_build_modify_expr.
2676	* decl2.c (set_guard): Likewise.
2677	(handle_tls_init): Likewise.
2678	* init.c (perform_member_init): Likewise.
2679	(expand_virtual_init): Likewise.
2680	(build_new_1): Likewise.
2681	(build_vec_delete_1): Likewise.
2682	(get_temp_regvar): Likewise.
2683	(build_vec_init): Likewise.
2684	* method.c (do_build_copy_assign): Likewise.
2685	(assignable_expr): Likewise.
2686	* semantics.c (finish_omp_for): Likewise.
2687	* typeck.c (cp_build_binary_op): Pass LOCATION to pointer_diff and
2688	cp_pointer_int_sum.
2689	(cp_pointer_int_sum): Add location parameter.  Pass it down to
2690	pointer_int_sum.
2691	(pointer_diff): Add location parameter.  Use it.
2692	(build_modify_expr): Pass location down to cp_build_modify_expr.
2693	(cp_build_modify_expr): Add location parameter.  Use it.
2694	(build_x_modify_expr): Pass location down to cp_build_modify_expr.
2695	* typeck2.c (cxx_incomplete_type_diagnostic,
2696	cxx_incomplete_type_error): Add location parameter.
2697
26982016-05-11  Marek Polacek  <polacek@redhat.com>
2699
2700	PR c++/71024
2701	* decl.c (duplicate_decls): Call diagnose_mismatched_decls.
2702
27032016-05-05  Jakub Jelinek  <jakub@redhat.com>
2704
2705	* parser.c (cp_parser_selection_statement): For RID_SWITCH,
2706	pass if_p instead of NULL to cp_parser_implicitly_scoped_statement.
2707
27082016-05-04  Marek Polacek  <polacek@redhat.com>
2709
2710	* parser.c (cp_parser_selection_statement): Replace OPT_Wparentheses
2711	with OPT_Wdangling_else.
2712
27132016-05-03  Martin Sebor  <msebor@redhat.com>
2714
2715	PR c++/66561
2716	* tree.c (builtin_valid_in_constant_expr_p): Treat BUILT_IN_FILE,
2717	BUILT_IN_FUNCTION, and BUILT_IN_LINE as constant expressions.
2718
27192016-05-03  Marek Polacek  <polacek@redhat.com>
2720
2721	PR c/70859
2722	* call.c (build_cxx_call): Pass location and vNULL down to
2723	check_builtin_function_arguments.
2724
27252016-05-03  Richard Biener  <rguenther@suse.de>
2726
2727	* Make-lang.in (cc1plus-checksum.c): For stage-final re-use
2728	the checksum from the previous stage.
2729
27302016-05-02  David Malcolm  <dmalcolm@redhat.com>
2731
2732	PR c++/62314
2733	* typeck.c (finish_class_member_access_expr): When
2734	giving a hint about a possibly-misspelled member name,
2735	add a fix-it replacement hint.
2736
27372016-05-02  Cesar Philippidis  <cesar@codesourcery.com>
2738
2739	* cp-tree.h (finish_omp_clauses): Update prototype.
2740	* parser.c (cp_parser_oacc_all_clauses): Update call to
2741	finish_omp_clauses.
2742	(cp_parser_omp_all_clauses): Likewise.
2743	(cp_parser_omp_for_loop): Likewise.
2744	(cp_omp_split_clauses): Likewise.
2745	(cp_parser_oacc_cache): Likewise.
2746	(cp_parser_oacc_loop): Likewise.
2747	(cp_parser_omp_declare_target):
2748	(cp_parser_cilk_simd_all_clauses): Likewise.
2749	(cp_parser_cilk_for): Likewise.
2750	* pt.c (tsubst_omp_clauses): Replace allow_fields and declare_simd
2751	arguments with enum c_omp_region_type ort.
2752	(tsubst_omp_clauses): Update calls to finish_omp_clauses.
2753	(tsubst_omp_attribute): Update calls to tsubst_omp_clauses.
2754	(tsubst_omp_for_iterator): Update calls to finish_omp_clauses.
2755	(tsubst_expr): Update calls to tsubst_omp_clauses.
2756	* semantics.c (finish_omp_clauses): Replace bool arguments
2757	allow_fields, declare_simd, and is_cilk with bitmask ort.
2758	(finish_omp_for): Update call to finish_omp_clauses.
2759
27602016-05-02  David Malcolm  <dmalcolm@redhat.com>
2761
2762	PR c++/62314
2763	* parser.c (cp_parser_class_head): Capture the start location;
2764	use it to emit a fix-it insertion hint when complaining
2765	about missing "template <> " in explicit specializations.
2766
27672016-05-02  Richard Sandiford  <richard.sandiford@arm.com>
2768
2769	* init.c (build_new_1): Use shift operators instead of wi:: shifts.
2770
27712016-05-02  Richard Biener  <rguenther@suse.de>
2772
2773	* decl.c (grokdeclarator): Properly insert a DECL_EXPR for
2774	anonymous VLAs.
2775
27762016-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
2777
2778	PR c++/66644
2779	* class.c (check_field_decl): Remove final int* parameter, change
2780	the return type to bool; fix logic in order not to reject multiple
2781	initialized fields in anonymous struct.
2782	(check_field_decls): Adjust call.
2783
27842016-04-29  Cesar Philippidis  <cesar@codesourcery.com>
2785
2786	PR middle-end/70626
2787	* parser.c (cp_parser_oacc_loop): Don't augment mask with
2788	OACC_LOOP_CLAUSE_MASK.
2789	(cp_parser_oacc_kernels_parallel): Update call to
2790	c_oacc_split_loop_clauses.
2791
27922016-04-28  Jason Merrill  <jason@redhat.com>
2793
2794	Implement C++17 [[nodiscard]] attribute.
2795	PR c++/38172
2796	PR c++/54379
2797	* parser.c (cp_parser_std_attribute): Handle [[nodiscard]].
2798	* tree.c (handle_nodiscard_attribute): New.
2799	(cxx_attribute_table): Add [[nodiscard]].
2800	* cvt.c (cp_get_fndecl_from_callee, cp_get_callee_fndecl): New.
2801	(maybe_warn_nodiscard): New.
2802	(convert_to_void): Call it.
2803
2804	* cvt.c (cp_get_callee): New.
2805	* constexpr.c (get_function_named_in_call): Use it.
2806	* cxx-pretty-print.c (postfix_expression): Use it.
2807	* except.c (check_noexcept_r): Use it.
2808	* method.c (check_nontriv): Use it.
2809	* tree.c (build_aggr_init_expr): Use it.
2810	* cp-tree.h: Declare it.
2811
28122015-04-27  Ryan Burn  <contact@rnburn.com>
2813	    Jeff Law  <law@redhat.com>
2814
2815	PR c++/69024
2816	PR c++/68997
2817	* cp-gimplify.c (cp_gimplify_expr): Call cilk_cp_detect_spawn_and_unwrap
2818	instead of cilk_detect_spawn_and_unwrap.
2819	* cp-cilkplus.c (is_conversion_operator_function_decl_p): New.
2820	(find_spawn): New.
2821	(cilk_cp_detect_spawn_and_unwrap): New.
2822	* lambda.c: Include cp-cilkplus.h.
2823	* parser.c: Include cp-cilkplus.h.
2824	* cp-tree.h (cpp_validate_cilk_plus_loop): Move prototype into...
2825	* cp-cilkpus.h: New file.
2826
28272016-04-27  Nathan Sidwell  <nathan@acm.org>
2828
2829	* constexpr.c (get_fundef_copy): Use the original function for
2830	non-recursive evaluations.
2831	(save_fundef_copy): Always expect a slot to be available.
2832
28332016-04-27  Bernd Schmidt  <bschmidt@redhat.com>
2834
2835	* parser.c (cp_parser_postfix_expression): Call
2836	warn_for_memset instead of warning directly here.
2837
28382016-04-26  Patrick Palka  <ppalka@gcc.gnu.org>
2839
2840	PR c++/70241
2841	* decl.c (build_enumerator): Set current_access_specifier when
2842	declaring an enumerator belonging to an in-class enumeration.
2843	* parser.c (cp_parser_check_access_in_redecleration): Also
2844	consider in-class enumerations.
2845
28462016-04-26  Marek Polacek  <polacek@redhat.com>
2847
2848	PR c++/70744
2849	* call.c (build_conditional_expr_1): Call cp_stabilize_reference
2850	instead of stabilize_reference.
2851	(build_over_call): Likewise.
2852	* cp-tree.h (cp_stabilize_reference): Declare.
2853	* tree.c (cp_stabilize_reference): New function.
2854	* typeck.c (cp_build_unary_op): Call cp_stabilize_reference instead of
2855	stabilize_reference.
2856	(unary_complex_lvalue): Likewise.
2857	(cp_build_modify_expr): Likewise.
2858
28592016-04-26  Jakub Jelinek  <jakub@redhat.com>
2860
2861	PR bootstrap/70704
2862	* pt.c (build_non_dependent_expr): Use flag_checking > 1 instead of
2863	just flag_checking.
2864
28652016-04-25  Jason Merrill  <jason@redhat.com>
2866
2867	* tree.c (std_attribute_table): New.
2868	(init_tree): Register it.
2869
28702016-04-22  Jason Merrill  <jason@redhat.com>
2871
2872	* parser.c (cp_parser_perform_range_for_lookup): Decay the array.
2873
28742016-04-21  Patrick Palka  <ppalka@gcc.gnu.org>
2875
2876	* name-lookup.c (free_saved_scope): New free list of saved_scope
2877	structures.
2878	(push_to_top_level): Attempt to reuse a saved_scope struct
2879	from free_saved_scope instead of allocating a new one each time.
2880	(pop_from_top_level_1): Chain the now-unused saved_scope structure
2881	onto free_saved_scope.
2882
28832016-04-21  Paolo Carlini  <paolo.carlini@oracle.com>
2884
2885	PR c++/70540
2886	* semantics.c (process_outer_var_ref): Unconditionally return
2887	error_mark_node when mark_used returns false.
2888
28892016-04-21  Marek Polacek  <polacek@redhat.com>
2890
2891	PR c++/70513
2892	* parser.c (cp_parser_enum_specifier): Check and possibly error for
2893	extra qualification.
2894
28952016-04-20  Nathan Sidwell  <nathan@acm.org>
2896
2897	PR c++/55635
2898	* init.c (build_vec_delete_1): Protect operator delete call in try
2899	finally.
2900	(build_delete): Likewise.
2901	* optimize.c (build_delete_destructor_body): Likewise.
2902
29032016-04-20  Ilya Verbin  <ilya.verbin@intel.com>
2904
2905	PR c++/69363
2906	* cp-tree.h (finish_omp_clauses): Add new default argument.
2907	* parser.c (cp_parser_cilk_simd_all_clauses): Use finish_omp_clauses
2908	instead of c_finish_cilk_clauses.
2909	* semantics.c (finish_omp_clauses): Add new argument.  Allow
2910	floating-point variables in the linear clause for Cilk Plus.
2911
29122016-04-20  Nathan Sidwell  <nathan@acm.org>
2913
2914	* semantics.c (finish_compound_lteral): Don't wrap VECTOR_TYPEs in a
2915	TARGET_EXPR.
2916
29172016-04-19  Jason Merrill  <jason@redhat.com>
2918
2919	PR c++/66543
2920	* expr.c (mark_exp_read): Handle NON_DEPENDENT_EXPR.
2921	* pt.c (make_pack_expansion): Call mark_exp_read.
2922	* semantics.c (finish_id_expression): Call mark_type_use in
2923	unevaluated context.
2924
2925	DR 2137
2926	* call.c (implicit_conversion): If we choose a copy constructor
2927	for list-initialization from the same type, the conversion is an
2928	exact match.
2929
2930	* constexpr.c (breaks): Handle EXIT_EXPR.
2931	(cxx_eval_loop_expr): Handle COMPOUND_EXPR body.
2932	(cxx_eval_constant_expression): Handle EXIT_EXPR, improve handling
2933	of COMPOUND_EXPR.
2934
2935	PR c++/68206
2936	PR c++/68530
2937	* constexpr.c (potential_constant_expression_1): Handle LOOP_EXPR
2938	and GOTO_EXPR.
2939
2940	* pt.c (tsubst_expr): Remove shadowing declaration.
2941	(tsubst_pack_expansion): Add assert.
2942
2943	* semantics.c (add_decl_expr): Use DECL_SOURCE_LOCATION.
2944
2945	PR c++/70522
2946	* name-lookup.c (qualified_lookup_using_namespace): Look through
2947	hidden names.
2948
29492016-04-18  Michael Matz  <matz@suse.de>
2950
2951	* class.c (build_vtable): Use SET_DECL_ALIGN and SET_TYPE_ALIGN.
2952	(layout_class_type): Ditto.
2953	(build_base_field): Use SET_DECL_ALIGN.
2954	(fixup_attribute_variants): Use SET_TYPE_ALIGN.
2955	* decl.c (duplicate_decls): Use SET_DECL_ALIGN.
2956	(record_unknown_type): Use SET_TYPE_ALIGN.
2957	(cxx_init_decl_processing): Ditto.
2958	(copy_type_enum): Ditto.
2959	(grokfndecl): Use SET_DECL_ALIGN.
2960	(copy_type_enum): Use SET_TYPE_ALIGN.
2961	* pt.c (instantiate_class_template_1): Use SET_TYPE_ALIGN.
2962	(tsubst): Ditto.
2963	* tree.c (cp_build_qualified_type_real): Use SET_TYPE_ALIGN.
2964	* lambda.c (maybe_add_lambda_conv_op): Use SET_DECL_ALIGN.
2965	* method.c (implicitly_declare_fn): Use SET_DECL_ALIGN.
2966	* rtti.c (emit_tinfo_decl): Ditto.
2967
29682016-04-18  Jason Merrill  <jason@redhat.com>
2969
2970	PR c++/70690
2971	PR c++/70528
2972	* class.c (type_maybe_constexpr_default_constructor): New.
2973	(type_has_constexpr_default_constructor): Revert.
2974
29752016-04-16  Sandra Loosemore  <sandra@codesourcery.com>
2976
2977	PR target/1078
2978
2979	* tree.c (cxx_attribute_table): Remove "com_interface" entry.
2980	(handle_com_interface_attribute): Delete.
2981
29822016-04-15  Jason Merrill  <jason@redhat.com>
2983
2984	PR c++/70685
2985	* constexpr.c (get_fundef_copy): Handle null *slot.
2986
2987	PR c++/70505
2988	* pt.c (tsubst_baselink): Give the new TEMPLATE_ID_EXPR
2989	unknown_type_node, too.
2990
29912016-04-15  Jason Merrill  <jason@redhat.com>
2992	    Nathan Sidwell  <nathan@acm.org>
2993
2994	PR c++/70594
2995	* constexpr.c (constexpr_call_table): Preserve in GC.
2996	(struct fundef_copy, struct fundef_copies_table_t):	Delete.
2997	(fundef_copies_table): Preserve in GC. Change to pointer to
2998	tree->tree hash.
2999	(maybe_initialize_fundef_copies_table): Adjust.
3000	(get_fundef_copy): Return a TREE_LIST.  Use non-inserting search.
3001	(save_fundef_copy): Adjust for a TREE_LIST.
3002	(cxx_eval_call_expression): Adjust for a fundef_copy TREE_LIST.
3003	(fini_constexpr): New.
3004	* cp-tree.h (fini_constexpr): Declare.
3005	* decl2.c (c_parse_final_cleanups): Call fini_constexpr.
3006
30072016-04-15  Jakub Jelinek  <jakub@redhat.com>
3008
3009	PR c/70436
3010	* parser.c (cp_parser_pragma): Add IF_P argument, pass it down
3011	where needed.
3012	(cp_parser_declaration_seq_opt, cp_parser_member_specification_opt,
3013	cp_parser_objc_interstitial_code, cp_parser_omp_declare_simd,
3014	cp_parser_oacc_routine): Adjust cp_parser_pragma callers.
3015	(cp_parser_statement): Likewise.  Adjust cp_parser_cilk_for caller.
3016	(cp_parser_omp_structured_block): Add IF_P argument, pass it down to
3017	cp_parser_statement.
3018	(cp_parser_oacc_data, cp_parser_oacc_host_data, cp_parser_oacc_loop,
3019	cp_parser_oacc_kernels_parallel, cp_parser_omp_critical,
3020	cp_parser_omp_simd, cp_parser_omp_for, cp_parser_omp_master,
3021	cp_parser_omp_ordered, cp_parser_omp_parallel, cp_parser_omp_single,
3022	cp_parser_omp_task, cp_parser_omp_taskgroup, cp_parser_omp_distribute,
3023	cp_parser_omp_teams, cp_parser_omp_target_data, cp_parser_omp_target,
3024	cp_parser_omp_taskloop, cp_parser_omp_construct,
3025	cp_parser_cilk_grainsize, cp_parser_cilk_simd, cp_parser_cilk_for):
3026	Add IF_P argument, pass it down where needed.
3027	(cp_parser_omp_for_loop): Likewise.  Clear IF_P if nbraces.
3028	(cp_parser_omp_sections_scope): Adjust cp_parser_omp_structured_block
3029	calls.
3030
30312016-04-14  Jason Merrill  <jason@redhat.com>
3032
3033	PR c++/70494
3034	* decl.c (cxx_maybe_build_cleanup): Handle non-decls.
3035	* typeck2.c (split_nonconstant_init_1): Use it.
3036
3037	PR c++/70528
3038	* class.c (type_has_constexpr_default_constructor): Return true
3039	for an implicitly declared constructor.
3040
3041	PR c++/70622
3042	* parser.c (cp_parser_init_declarator): Add auto_result parm.
3043	(cp_parser_simple_declaration): Pass it.
3044	(strip_declarator_types): New.
3045
3046	PR c++/70543
3047	* pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent
3048	initializer also makes the variable value-dependent.
3049
3050	PR c++/70648
3051	* constexpr.c (cxx_eval_store_expression): Also copy
3052	CONSTRUCTOR_NO_IMPLICIT_ZERO.
3053
30542016-04-14  Martin Sebor  <msebor@redhat.com>
3055
3056	PR c++/69517
3057	PR c++/70019
3058	PR c++/70588
3059	* cp-tree.h, decl.c, init.c, typeck2.c: Revert.
3060
30612016-04-14  Jason Merrill  <jason@redhat.com>
3062
3063	* call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty
3064	parameter ABI change.
3065
30662016-04-13  Martin Sebor  <msebor@redhat.com>
3067
3068	PR c++/69517
3069	PR c++/70019
3070	PR c++/70588
3071	* cp-tree.h (throw_bad_array_length, build_vla_check): Declare new
3072	functions.
3073	* decl.c (check_initializer, cp_finish_decl): Call them.
3074	(reshape_init_r): Reject incompletely braced intializer-lists
3075	for VLAs.
3076	* init.c (throw_bad_array_length, build_vla_check)
3077	(build_vla_size_check, build_vla_init_check): Define new functions.
3078	* typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p()
3079	to detect a VLA.
3080	(store_init_value): Same.
3081
30822016-04-13  Jason Merrill  <jason@redhat.com>
3083
3084	Warn about empty parameter ABI with -Wabi=9.
3085	* call.c (empty_class_msg, mark_for_abi_warning)
3086	(warn_empty_class_abi): New.
3087	(build_call_a): Use them.
3088	* decl.c (store_parm_decls): Use mark_for_abi_warning.
3089	* error.c (pp_format_to_string): New.
3090
3091	Pass empty class parameters like C.
3092	* call.c (pass_as_empty_struct, empty_class_arg): New.
3093	(type_passed_as, build_x_va_arg): Use pass_as_empty_struct.
3094	(build_call_a): Use empty_class_arg.
3095	* cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New.
3096	* decl.c (cxx_init_decl_processing): Create empty_struct_type.
3097
30982016-04-13  Jason Merrill  <jason@redhat.com>
3099
3100	PR c++/70627
3101	* decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE.
3102
31032016-04-13  Paolo Carlini  <paolo.carlini@oracle.com>
3104
3105	PR c++/70635
3106	* pt.c (resolve_typename_type): Fix typos in infinite recursion
3107	avoidance mechanism.
3108
31092016-04-13  Jason Merrill  <jason@redhat.com>
3110
3111	PR c++/70634
3112	* pt.c (instantiation_dependent_uneval_expression_p): Split out
3113	from instantiation_dependent_expression_p.
3114	(value_dependent_expression_p): Use it for unevaluated operands.
3115	(instantiation_dependent_r): Don't check value-dependence.
3116	(instantiation_dependent_expression_p): Check
3117	value-dependence of the expression as a whole.
3118	* cp-tree.h: Declare instantiation_dependent_uneval_expression_p.
3119	* semantics.c (finish_decltype_type): Use it.
3120
3121	* constexpr.c (potential_nondependent_constant_expression): New.
3122	(potential_nondependent_static_init_expression): New.
3123	(maybe_constant_value_1, fold_non_dependent_expr)
3124	(maybe_constant_init): Use them.
3125	* pt.c (instantiate_non_dependent_expr_sfinae)
3126	(instantiate_non_dependent_or_null, convert_nontype_argument): Use
3127	them.
3128	* cp-tree.h: Declare them.
3129
31302016-04-13  Jakub Jelinek  <jakub@redhat.com>
3131
3132	PR c++/70594
3133	* decl.c (pop_labels_1): Removed.
3134	(note_label, sort_labels): New functions.
3135	(pop_labels): During named_labels traversal, just push the slot
3136	pointers into a vector, then qsort it by DECL_UID and only then
3137	call pop_label and chain it into BLOCK_VARS.
3138
31392016-04-13  Jason Merrill  <jason@redhat.com>
3140
3141	PR c++/70615
3142	* cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here.
3143	(cp_gimplify_expr): Not here.
3144
31452016-04-12  Patrick Palka  <ppalka@gcc.gnu.org>
3146
3147	PR c++/70610
3148	* tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally
3149	recurse into it.
3150	* typeck.c (build_x_conditional_expr): Unconditionally remember
3151	that the result is an lvalue or xvalue.
3152
31532016-04-12  Jason Merrill  <jason@redhat.com>
3154
3155	* class.c (is_really_empty_class): A zero-length array is empty.
3156	An unnamed bit-field doesn't make a class non-empty.
3157
31582016-04-12  Paolo Carlini  <paolo.carlini@oracle.com>
3159
3160	PR c++/68722
3161	* parser.c (cp_parser_cache_defarg): When file ends in default
3162	argument simply return error_mark_node.
3163
31642016-04-12  Nathan Sidwell  <nathan@acm.org>
3165
3166	PR c++/70501
3167	* constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE
3168	similarly to PMF.
3169
31702016-04-11  Jason Merrill  <jason@redhat.com>
3171
3172	* mangle.c (decl_is_template_id): The template itself counts as a
3173	template-id.
3174
31752016-04-08  Patrick Palka  <ppalka@gcc.gnu.org>
3176
3177	PR c++/70590
3178	PR c++/70452
3179	* constexpr.c (cxx_eval_outermost_expression): Call unshare_expr
3180	on the result if it's not a CONSTRUCTOR.
3181
31822016-04-07  Patrick Palka  <ppalka@gcc.gnu.org>
3183
3184	PR c++/70452
3185	* constexpr.c (find_constructor): New function.
3186	(unshare_constructor): New function.
3187	(cxx_eval_call_expression): Use unshare_constructor instead of
3188	unshare_expr.
3189	(find_array_ctor_elt): Likewise.
3190	(cxx_eval_vec_init_1): Likewise.
3191	(cxx_eval_store_expression): Likewise.
3192	(cxx_eval_constant_expression): Likewise.
3193
31942016-04-06  Patrick Palka  <ppalka@gcc.gnu.org>
3195
3196	PR c/70436
3197	* cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid
3198	potentially generating a future -Wparentheses warning in its
3199	callers.
3200
32012016-04-06  Jason Merrill  <jason@redhat.com>
3202
3203	* class.c (check_abi_tags): Fix function template handling.
3204
32052016-04-05  Nathan Sidwell  <nathan@acm.org>
3206
3207	PR c++/70512
3208	* class.c (fixup_may_alias): New.
3209	(fixup_attribute_variants): Call it.
3210
32112016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
3212
3213	PR c++/70452
3214	* constexpr.c (struct fundef_copy): New struct.
3215	(struct fundef_copies_table_t): New struct.
3216	(fundef_copies_table): New static variable.
3217	(maybe_initialize_fundef_copies_table): New static function.
3218	(get_fundef_copy): New static function.
3219	(save_fundef_copy): New static function.
3220	(cxx_eval_call_expression): Use get_fundef_copy, and
3221	save_fundef_copy.
3222	(constexpr_call_table): Add "deletable" GTY marker.
3223
32242016-04-05  Patrick Palka  <ppalka@gcc.gnu.org>
3225
3226	PR c++/70452
3227	* cp-tree.h (class cache_map): Remove.
3228	* constexpr.c (cv_cache): Change type to
3229	GTY((deletable)) hash_map<tree, tree> *.
3230	(maybe_constant_value): Adjust following the change to cv_cache.
3231	(clear_cv_cache): New static function.
3232	(clear_cv_and_fold_caches): Use it.
3233	* cp-gimplify.c (fold_cache): Change type to
3234	GTY((deletable)) hash_map<tree, tree> *.
3235	(clear_fold_cache): Adjust following the change to fold_cache.
3236	(cp_fold): Likewise.
3237
32382016-04-02  Martin Sebor  <msebor@redhat.com>
3239
3240	PR c++/67376
3241	PR c++/70170
3242	PR c++/70172
3243	PR c++/70228
3244	* constexpr.c (diag_array_subscript): New function.
3245	(cxx_eval_array_reference): Detect out of bounds array indices.
3246
32472016-04-01  Jason Merrill  <jason@redhat.com>
3248
3249	PR c++/70449
3250	PR c++/70344
3251	* pt.c (instantiate_decl): A function isn't fully defined if
3252	DECL_INITIAL is error_mark_node.
3253	* constexpr.c (cxx_eval_call_expression): Likewise.
3254
32552016-04-01  Jakub Jelinek  <jakub@redhat.com>
3256	    Marek Polacek  <polacek@redhat.com>
3257
3258	PR c++/70488
3259	* init.c (warn_placement_new_too_small): Test whether
3260	DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi.
3261
32622016-04-01  Nathan Sidwell  <nathan@acm.org>
3263
3264	PR c++/68475
3265	* decl.c (check_redeclaration_exception_specification): Check
3266	regardless of -fno-exceptions.
3267	* typeck2.c (merge_exception_specifiers): Relax assert by checking
3268	flag_exceptions too.
3269
32702016-03-31  Nathan Sidwell  <nathan@acm.org>
3271
3272	* decl.c (start_preparsed_function): Remove unnecessary bracing.
3273	(finish_destructor_body): Don't emit operator delete here.
3274
32752016-03-31  Nathan Sidwell  <nathan@acm.org>
3276
3277	PR c++/70393
3278	* constexpr.c (cxx_eval_store_expression): Keep CONSTRUCTOR
3279	elements in field order.
3280
32812016-03-31  Marek Polacek  <polacek@redhat.com>
3282
3283	PR c/70297
3284	* decl.c (duplicate_decls): Also set TYPE_ALIGN and TYPE_USER_ALIGN.
3285
32862016-03-31  Richard Biener  <rguenther@suse.de>
3287
3288	PR c++/70430
3289	* typeck.c (cp_build_binary_op): Fix operand order of vector
3290	conditional in truth op handling.
3291
32922016-03-29  Jason Merrill  <jason@redhat.com>
3293
3294	PR c++/70353
3295	* decl.c (make_rtl_for_nonlocal_decl): Don't defer local statics
3296	in constexpr functions.
3297
32982016-03-28  Jason Merrill  <jason@redhat.com>
3299
3300	PR c++/70422
3301	PR c++/64266
3302	PR c++/70353
3303	* decl.c, pt.c, constexpr.c: Revert last patch.
3304
33052016-03-25  Jason Merrill  <jason@redhat.com>
3306	    Martin Li��ka  <mliska@suse.cz>
3307
3308	PR c++/64266
3309	PR c++/70353
3310	Core issue 1962
3311	* decl.c (cp_fname_init): Decay the initializer to pointer.
3312	(cp_make_fname_decl): Set DECL_DECLARED_CONSTEXPR_P,
3313	DECL_VALUE_EXPR, DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3314	Don't call cp_finish_decl.
3315	* pt.c (tsubst_expr) [DECL_EXPR]: Set DECL_VALUE_EXPR,
3316	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.  Don't call cp_finish_decl.
3317	* constexpr.c (cxx_eval_constant_expression) [VAR_DECL]:
3318	Handle DECL_VALUE_EXPR.
3319
33202016-03-24  Jason Merrill  <jason@redhat.com>
3321
3322	PR c++/70386
3323	* constexpr.c (cxx_eval_bare_aggregate): Handle PMFs.
3324
3325	PR c++/70323
3326	* constexpr.c (cxx_eval_call_expression): Don't cache result if
3327	*overflow_p.
3328
33292016-03-24  Patrick Palka  <ppalka@gcc.gnu.org>
3330
3331	PR c++/62212
3332	* tree.c (build_cplus_array_type): Determine type-dependentess
3333	with uses_template_parms instead of with dependent_type_p.
3334
33352016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
3336
3337	PR c++/70347
3338	* typeck.c (process_init_constructor_union): If the initializer
3339	is empty, use the union's NSDMI if it has one.
3340
33412016-03-23  Patrick Palka  <ppalka@gcc.gnu.org>
3342
3343	PR c++/70332
3344	* pt.c (tsubst_copy) [PARM_DECL]: Handle the use of 'this' in an
3345	NSDMI that's part of an aggregrate initialization.
3346
33472016-03-23  Jakub Jelinek  <jakub@redhat.com>
3348
3349	PR c++/70001
3350	* constexpr.c (cxx_eval_vec_init_1): Reuse CONSTRUCTOR initializers
3351	for 1..max even for multi-dimensional arrays.  Call unshare_expr
3352	on it.
3353
3354	PR c++/70323
3355	* constexpr.c (cxx_eval_constant_expression): Diagnose overflow
3356	on TREE_OVERFLOW constants.
3357
3358	PR c++/70376
3359	* cp-gimplify.c (genericize_omp_for_stmt): Don't walk OMP_FOR_CLAUSES
3360	for OMP_TASKLOOP here.
3361	(cp_genericize_r): Handle OMP_TASKLOOP like OMP_TASK, except do call
3362	genericize_omp_for_stmt instead of cp_walk_tree on OMP_BODY.
3363
33642016-03-23  Alexandre Oliva  <aoliva@redhat.com>
3365	    Jason Merrill  <jason@redhat.com>
3366	    Jakub Jelinek  <jakub@redhat.com>
3367
3368	PR c++/69315
3369	* cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): Remove.
3370	* decl.c (defer_mark_used_calls, deferred_mark_used_calls): Remove.
3371	(finish_function): Don't set or test them.
3372	* decl2.c (mark_used): Don't handle defer_mark_used_calls.
3373
33742016-03-23  Jason Merrill  <jason@redhat.com>
3375
3376	PR c++/70344
3377	* constexpr.c (cxx_eval_call_expression): Catch invalid recursion.
3378
33792016-03-23  Marek Polacek  <polacek@redhat.com>
3380
3381	PR c++/69884
3382	* pt.c (canonicalize_type_argument): Use OPT_Wignored_attributes.
3383
33842016-03-22  Ilya Enkovich  <enkovich.gnu@gmail.com>
3385
3386	* call.c (build_conditional_expr_1): Always use original
3387	condition type for vector type checks and build.
3388
33892016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
3390
3391	PR c++/70096
3392	* pt.c (tsubst_decl): Clear the DECL_MODE of the new decl.
3393
33942016-03-22  Patrick Palka  <ppalka@gcc.gnu.org>
3395
3396	PR c++/70204
3397	* constexpr.c (non_const_var_error): Check
3398	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
3399
34002016-03-21  Richard Henderson  <rth@redhat.com>
3401
3402	PR c++/70273
3403	* decl.c (notice_forced_label_r): New.
3404	(cp_finish_decl): Use it.
3405
34062016-03-21  Jason Merrill  <jason@redhat.com>
3407
3408	PR c++/70285
3409	* cp-gimplify.c (cp_fold) [COND_EXPR]: Handle bit-fields.
3410
34112016-03-18  Jason Merrill  <jason@redhat.com>
3412
3413	PR c++/70139
3414	* constexpr.c (cxx_eval_call_expression): Fix trivial copy.
3415
3416	PR c++/70147
3417	* class.c (vptr_via_virtual_p): New.
3418	(most_primary_binfo): Factor out of build_rtti_vtbl_entries.
3419	* cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Don't clear
3420	a vptr from any virtual base in a not-in-charge 'structor.
3421
3422	* decl.c (build_clobber_this): Factor out of
3423	start_preparsed_function and begin_destructor_body.  Handle
3424	virtual bases better.
3425
3426	* class.c (build_if_in_charge): Split out from build_base_path.
3427	* init.c (expand_virtual_init, expand_default_init): Use it.
3428	* call.c (build_special_member_call): Use it.
3429
34302016-03-18  Jakub Jelinek  <jakub@redhat.com>
3431
3432	PR c++/70267
3433	* init.c (build_new_1): Complain and return error_mark_node
3434	if alloc_fn is not _Jv_AllocObject function returning pointer.
3435
34362016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
3437
3438	PR c++/70205
3439	* search.c (adjust_result_of_qualified_name_lookup): Don't
3440	update the BASELINK_BINFO of DECL if the second call
3441	to lookup_base fails.
3442
34432016-03-18  Patrick Palka  <ppalka@gcc.gnu.org>
3444
3445	PR c++/70218
3446	* parser.c (cp_parser_lambda_expression): Move call to
3447	pop_deferring_access_checks ahead of the call to
3448	cp_parser_end_tentative_firewall.
3449
34502016-03-17  Jakub Jelinek  <jakub@redhat.com>
3451
3452	PR c++/70144
3453	* cp-tree.h (magic_varargs_p): Return int instead of bool.
3454	* call.c (magic_varargs_p): Return int instead of bool, return 2 for
3455	Cilk+ reductions, otherwise 1 for magic varargs and 0 for normal
3456	varargs.
3457	(build_over_call): If magic_varargs_p == 2, call reject_gcc_builtin,
3458	if magic_varargs_p == 1, call decay_conversion
3459	instead of mark_type_use.  Don't store error_mark_node arguments to
3460	argarray, instead return error_mark_node.
3461
3462	PR c++/70272
3463	* decl.c (begin_destructor_body): Don't insert clobber if
3464	is_empty_class (current_class_type).
3465
34662016-03-17  Marek Polacek  <polacek@redhat.com>
3467
3468	PR c++/70194
3469	* typeck.c (warn_for_null_address): New function.
3470	(cp_build_binary_op): Call it.
3471
34722016-03-16  Jason Merrill  <jason@redhat.com>
3473
3474	PR c++/70259
3475	* decl.c (start_preparsed_function): Don't clobber an empty base.
3476
34772016-03-16  Jakub Jelinek  <jakub@redhat.com>
3478
3479	PR c++/70147
3480	* cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs): Conditionalize
3481	BINFO_VIRTUAL_P vtable clearing on current_in_charge_parm.
3482
3483	PR c++/70147
3484	* cp-ubsan.c (cp_ubsan_maybe_initialize_vtbl_ptrs): Temporarily
3485	set in_base_initializer.
3486
34872016-03-15  Marek Polacek  <polacek@redhat.com>
3488
3489	PR c++/70209
3490	* tree.c (strip_typedefs): Call strip_typedefs again on the
3491	DECL_ORIGINAL_TYPE result.
3492
34932016-03-15  Jason Merrill  <jason@redhat.com>
3494
3495	PR c++/70095
3496	* pt.c (instantiate_decl): Fix call to variable_template_p.
3497
3498	PR c++/70141
3499	* pt.c (for_each_template_parm_r): Always walk into TYPENAME_TYPE.
3500
35012016-03-14  Casey Carter  <casey@carter.net>
3502	    Jason Merrill  <jason@redhat.com>
3503
3504	P0184R0: Generalizing the Range-Based For Loop
3505	* parser.c (cp_convert_range_for): Set the type of __end separately.
3506	(cp_parser_perform_range_for_lookup): Allow different begin/end
3507	types if they are comparable.
3508
35092016-03-12  Patrick Palka  <ppalka@gcc.gnu.org>
3510
3511	PR c++/70106
3512	* semantics.c (force_paren_expr): Just build a PAREN_EXPR when
3513	processing_template_decl and EXPR is a SCOPE_REF.
3514
35152016-03-10  Patrick Palka  <ppalka@gcc.gnu.org>
3516	    Jakub Jelinek  <jakub@redhat.com>
3517
3518	PR c++/70001
3519	* constexpr.c (cxx_eval_vec_init_1): For pre_init case, reuse
3520	return value from cxx_eval_constant_expression from earlier
3521	elements if it is valid constant initializer requiring no
3522	relocations.
3523
35242016-03-10  Marek Polacek  <polacek@redhat.com>
3525
3526	PR c++/70153
3527	* cp-gimplify.c (cp_fold): Handle UNARY_PLUS_EXPR.
3528
35292016-03-09  Cesar Philippidis  <cesar@codesourcery.com>
3530
3531	* parser.c (cp_parser_oacc_loop): Update cclauses and clauses
3532	when calling c_finish_omp_clauses.
3533
35342016-03-08  Jason Merrill  <jason@redhat.com>
3535
3536	* parser.c (cp_parser_diagnose_invalid_type_name): Give helpful
3537	diagnostic for use of "concept".
3538	(cp_parser_requires_clause_opt): And "requires".
3539	(cp_parser_type_parameter, cp_parser_late_return_type_opt)
3540	(cp_parser_explicit_template_declaration): Adjust.
3541	* Make-lang.in (check-c++-all): Add "concepts" to std list.
3542
3543	P0036R0: Unary Folds and Empty Parameter Packs
3544	* pt.c (expand_empty_fold): Remove special cases for *,+,&,|.
3545
35462016-03-08  Jakub Jelinek  <jakub@redhat.com>
3547
3548	PR c++/70135
3549	* constexpr.c (cxx_eval_loop_expr): Forget saved values of SAVE_EXPRs
3550	even after the last iteration of the loop.
3551
3552	* decl.c (duplicate_decls): Fix spelling - becuase -> because.
3553
35542016-03-07  Patrick Palka  <ppalka@gcc.gnu.org>
3555
3556	PR c++/66786
3557	* pt.c (get_template_info): Handle PARM_DECL.
3558	(template_class_depth): Check DECL_P instead of
3559	VAR_OR_FUNCTION_DECL_P.
3560
35612016-03-05  Jason Merrill  <jason@redhat.com>
3562
3563	PR c++/67364
3564	* constexpr.c (cxx_eval_store_expression): Replace
3565	CONSTRUCTOR_ELTS in nested CONSTRUCTORs, too.
3566
35672016-03-05  Patrick Palka  <ppalka@gcc.gnu.org>
3568
3569	PR c++/66786
3570	* pt.c (template_class_depth): Given a lambda type, iterate
3571	into its LAMBDA_TYPE_EXTRA_SCOPE field instead of its
3572	TYPE_CONTEXT.  Given a VAR_DECL, iterate into its
3573	CP_DECL_CONTEXT.
3574
35752016-03-04  Jason Merrill  <jason@redhat.com>
3576
3577	PR c++/69203
3578	* cp-tree.h (COND_EXPR_IS_VEC_DELETE): New.
3579	* init.c (build_vec_delete_1): Set it.
3580	* constexpr.c (potential_constant_expression_1) [COND_EXPR]: Check it.
3581
35822016-03-04  Jakub Jelinek  <jakub@redhat.com>
3583
3584	* decl.c (start_preparsed_function): Don't emit start clobber at the
3585	start of constructor clones.
3586
3587	PR c++/70035
3588	* cp-tree.h (cp_ubsan_maybe_initialize_vtbl_ptrs): New prototype.
3589	* decl.c (start_preparsed_function): Call
3590	cp_ubsan_maybe_initialize_vtbl_ptrs if needed.
3591	* cp-ubsan.c (cp_ubsan_dfs_initialize_vtbl_ptrs,
3592	cp_ubsan_maybe_initialize_vtbl_ptrs): New functions.
3593
35942016-03-04  Jason Merrill  <jason@redhat.com>
3595
3596	PR c++/67364
3597	* constexpr.c (cxx_eval_component_reference): Further tweak.
3598
3599	* constexpr.c (struct constexpr_ctx): Add save_exprs field.
3600	(cxx_eval_loop_expr): Discard SAVE_EXPR values before looping.
3601	(cxx_eval_constant_expression) [SAVE_EXPR]: Add it to the set.
3602	(cxx_eval_outermost_constant_expr, is_sub_constant_expr): Initialize.
3603
3604	PR c++/70067
3605	* tree.c (strip_typedefs): Handle TYPENAME_TYPE lookup finding the
3606	same type.
3607
36082016-03-03  Jason Merrill  <jason@redhat.com>
3609
3610	* method.c (synthesized_method_walk): operator= can also be constexpr.
3611
3612	* pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Get
3613	LAMBDA_EXPR_RETURN_TYPE from the instantiated closure.
3614
3615	PR c++/67164
3616	* pt.c (copy_template_args): New.
3617	(tsubst_pack_expansion): Use it.
3618
3619	* call.c (build_aggr_conv): Use get_nsdmi.
3620
3621	PR c++/51406
3622	* typeck.c (build_static_cast_1): Avoid folding back to lvalue.
3623
3624	PR c++/67364
3625	* constexpr.c (cxx_eval_component_reference): Just return an empty
3626	CONSTRUCTOR for an empty class.
3627
36282016-03-01  Jason Merrill  <jason@redhat.com>
3629
3630	PR c++/70036
3631	* parser.c (cp_parser_requires_clause): Call
3632	check_for_bare_parameter_packs.
3633
3634	PR c++/51489
3635	* constexpr.c (cxx_eval_binary_expression): Don't VERIFY_CONSTANT
3636	the operands.
3637
3638	PR c++/69995
3639	* constexpr.c (cxx_eval_call_expression): Unshare arg.
3640	(cxx_eval_constant_expression) [DECL_EXPR]: Unshare init.
3641	[TARGET_EXPR]: Unshare init.
3642
36432016-03-01  Patrick Palka  <ppalka@gcc.gnu.org>
3644
3645	PR c++/68948
3646	PR c++/69961
3647	* pt.c (tsubst_baselink): Reinstate the check for an invalid
3648	constructor call.
3649
36502016-02-28  Jason Merrill  <jason@redhat.com>
3651
3652	PR c++/69995
3653	* constexpr.c (cxx_eval_store_expression): Unshare init.
3654
36552016-02-26  Jason Merrill  <jason@redhat.com>
3656
3657	PR c++/69958
3658	* pt.c (make_argument_pack): New.
3659	(tsubst_copy) [SIZEOF_EXPR]: Handle partial expansion.
3660	(tsubst_copy_and_build): Likewise.
3661
36622016-02-25  Jason Merrill  <jason@redhat.com>
3663
3664	PR c++/69889
3665	* cp-tree.h (AGGR_INIT_FROM_THUNK_P): New.
3666	* tree.c (build_aggr_init_expr): Set it.
3667	* semantics.c (simplify_aggr_init_expr): Check it.
3668	* cp-gimplify.c (cp_genericize_r): Don't walk into
3669	a call/aggr_init from a thunk.
3670
3671	PR c++/69842
3672	* method.c (forward_parm): Handle parameter packs.
3673	* lambda.c (maybe_add_lambda_conv_op): Use it for them.
3674
3675	PR c++/67364
3676	* constexpr.c (cxx_eval_component_reference): Don't complain about
3677	unevaluated empty classes.
3678
3679	PR c++/68049
3680	* tree.c (strip_typedefs): Use DECL_ORIGINAL_TYPE.
3681
36822016-02-25  Patrick Palka  <ppalka@gcc.gnu.org>
3683
3684	PR c++/69736
3685	* cp-tree.h (REF_PARENTHESIZED_P): Adjust documentation.
3686	(maybe_undo_parenthesized_ref): Declare.
3687	* semantics.c (maybe_undo_parenthesized_ref): Split out from
3688	check_return_expr.
3689	(finish_call_expr): Use it.
3690	* typeck.c (check_return_expr): Use it.
3691	* pt.c (tsubst_copy_and_build) [INDIRECT_REF]: Retain the
3692	REF_PARENTHESIZED_P flag.
3693
36942016-02-24  Jakub Jelinek  <jakub@redhat.com>
3695
3696	PR c++/69922
3697	* class.c (build_base_path): Set TREE_NO_WARNING on the null_test.
3698	Avoid folding it.
3699	* init.c (build_vec_delete_1, build_delete): Don't fold the non-NULL
3700	tests.
3701	* cp-gimplify.c (cp_fold): For TREE_NO_WARNING comparisons with NULL,
3702	unless they are folded into INTEGER_CST, error_mark_node or some
3703	comparison with NULL, avoid folding them and use either the original
3704	comparison or non-folded comparison of folded arguments.
3705	* cp-ubsan.c (cp_ubsan_instrument_vptr): Set TREE_NO_WARNING on the
3706	comparison, don't fold the comparison right away.
3707
37082016-02-24  Jason Merrill  <jason@redhat.com>
3709
3710	PR c++/69323
3711	* friend.c (make_friend_class): Likewise.
3712	* decl.c (lookup_and_check_tag): Diagnose invalid dependent friend.
3713
37142016-02-24  Jason Merrill  <jason@redhat.com>
3715
3716	PR c++/69323
3717	* pt.c (instantiate_class_template_1): Set
3718	processing_template_decl before substituting friend_type.
3719
3720016-02-24  Martin Sebor  <msebor@redhat.com>
3721
3722	PR c++/69912
3723	* tree.c (build_ctor_subob_ref): Compare types' main variants
3724	instead of the types as they are.
3725
37262016-02-24  Jason Merrill  <jason@redhat.com>
3727
3728	* decl.c (start_preparsed_function): Condition ctor clobber on
3729	flag_lifetime_dse > 1.
3730
3731	* cp-gimplify.c (cp_fold): Don't fold constexpr calls if -fno-inline.
3732
37332016-02-19  Jason Merrill  <jason@redhat.com>
3734
3735	PR c++/69743
3736	* call.c (remaining_arguments): No longer static.
3737	* cp-tree.h: Declare it.
3738	* pt.c (more_specialized_fn): Use it.
3739
37402016-02-19  Jakub Jelinek  <jakub@redhat.com>
3741	    Bernd Edlinger  <bernd.edlinger@hotmail.de>
3742
3743	* Make-lang.in: Invoke gperf with -L C++.
3744	* cfns.gperf: Remove prototypes for hash and libc_name_p
3745	inlines.
3746	* cfns.h: Regenerated.
3747	* except.c (nothrow_libfn_p): Adjust.
3748
37492016-02-19  Jakub Jelinek  <jakub@redhat.com>
3750
3751	PR c++/69850
3752	* rtti.c (ifnonnull): Set TREE_NO_WARNING on the condition, use
3753	NE_EXPR instead of EQ_EXPR and swap last two arguments on COND_EXPR.
3754
37552016-02-19  Patrick Palka  <ppalka@gcc.gnu.org>
3756
3757	PR c++/68948
3758	* pt.c (tsubst_baselink): Don't diagnose an invalid constructor
3759	call here.
3760	* semantics.c (finish_call_expr): Don't assume a constructor
3761	call is dependent if only the "this" pointer is dependent.  When
3762	building a constructor call, always use a dummy object.
3763
37642016-02-19  Jakub Jelinek  <jakub@redhat.com>
3765
3766	PR c++/69850
3767	* init.c (build_vec_delete_1): Set TREE_NO_WARNING on the NE_EXPR
3768	condition.
3769	* cp-gimplify.c (cp_fold): Propagate TREE_NO_WARNING from binary
3770	operators if folding preserved the binop, just with different
3771	arguments.
3772
3773	PR c++/67767
3774	* parser.c (cp_parser_std_attribute_spec_seq): Don't assume
3775	attr_spec is always single element chain, chain all the attributes
3776	properly together in the right order.
3777
37782016-02-18  Jason Merrill  <jason@redhat.com>
3779
3780	* mangle.c (maybe_check_abi_tags): Add for_decl parm.  Call
3781	mangle_decl.
3782	(mangle_decl): Call maybe_check_abi_tags for function scope.
3783	(mangle_guard_variable): Call maybe_check_abi_tags here.
3784	(write_guarded_var_name): Not here.
3785
37862016-02-17  Jason Merrill  <jason@redhat.com>
3787
3788	PR c++/65985
3789	* constexpr.c (build_constexpr_constructor_member_initializers):
3790	Handle an additional STATEMENT_LIST.
3791
3792	PR c++/68585
3793	* constexpr.c (cxx_eval_bare_aggregate): Fix 'changed' detection.
3794
3795	PR c++/68679
3796	* decl2.c (reset_type_linkage_2): Look through member templates.
3797
37982016-02-17  Jakub Jelinek  <jakub@redhat.com>
3799
3800	PR c++/69850
3801	* init.c (build_delete): Set TREE_NO_WARNING on ifexp.
3802
38032016-02-17  Jason Merrill  <jason@redhat.com>
3804
3805	PR c++/69842
3806	* method.c (forward_parm): Split out from...
3807	(add_one_base_init): ...here.
3808	* lambda.c (maybe_add_lambda_conv_op): Use it.
3809
38102016-02-16  Jason Merrill  <jason@redhat.com>
3811
3812	PR c++/10200
3813	PR c++/69753
3814	* call.c, cp-tree.h, name-lookup.c, pt.c, search.c, semantics.c,
3815	tree.c, typeck2.c: Revert earlier changes.
3816	* parser.c (cp_parser_lookup_name): Ignore namespace-scope
3817	non-type templates after -> or .
3818
38192016-02-16  Jakub Jelinek  <jakub@redhat.com>
3820
3821	PR c/69835
3822	* typeck.c (cp_build_binary_op): Revert 2015-09-09 change.
3823
38242016-02-16  Jason Merrill  <jason@redhat.com>
3825
3826	PR c++/69657
3827	* name-lookup.c (lookup_qualified_name): Add find_hidden parm.
3828	(set_decl_namespace): Pass it.  Complain about finding a hidden friend.
3829	* name-lookup.h: Adjust.
3830
38312016-02-16  James Norris  <jnorris@codesourcery.com>
3832
3833	* parser.c (cp_parser_oacc_data_clause_deviceptr): Remove checking.
3834	* semantics.c (finish_omp_clauses): Add deviceptr checking.
3835
38362016-02-15  Jakub Jelinek  <jakub@redhat.com>
3837
3838	PR c++/69658
3839	* init.c (expand_default_init): Only call reshape_init
3840	in the direct-initialization from an initializer list case.
3841
38422016-02-15  Jason Merrill  <jason@redhat.com>
3843
3844	PR c++/69753
3845	* semantics.c (finish_call_expr): Implicit 'this' does not make
3846	the call dependent.
3847	* search.c (any_dependent_bases_p): Split out...
3848	* name-lookup.c (do_class_using_decl): ...from here.
3849	* call.c (build_new_method_call_1): Don't complain about missing object
3850	if there are dependent bases.  Tweak error.
3851	* tree.c (non_static_member_function_p): Remove.
3852	* pt.c (type_dependent_expression_p): A member template of a
3853	dependent type is dependent.
3854	* cp-tree.h: Adjust.
3855
3856	PR c++/68890
3857	* constexpr.c (verify_ctor_sanity): Remove CONSTRUCTOR_NELTS check.
3858
38592016-02-12  Patrick Palka  <ppalka@gcc.gnu.org>
3860
3861	PR c++/69098
3862	* pt.c (lookup_and_finish_template_variable): New function,
3863	extracted from ...
3864	(tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: ... here.  Use it.
3865	(tsubst_qualified_id): Consider that EXPR might be a variable
3866	template.
3867	* typeck.c (check_template_keyword): Don't emit an error
3868	if DECL is a variable template.
3869
38702016-02-12  Jakub Jelinek  <jakub@redhat.com>
3871
3872	* error.c: Spelling fixes - behaviour -> behavior and
3873	neighbour -> neighbor.
3874	* decl.c: Likewise.
3875	* typeck.c (cp_build_binary_op): Fix up behavior spelling in
3876	diagnostics.
3877	* init.c (build_delete): Likewise.
3878
38792016-02-11  Jakub Jelinek  <jakub@redhat.com>
3880
3881	PR c/69768
3882	* typeck.c (cp_build_binary_op): cp_fully_fold integer_zerop
3883	arguments for -Waddress warning.  Fix up formatting.
3884
38852016-02-11  Paolo Carlini  <paolo.carlini@oracle.com>
3886
3887	PR c++/68726
3888	* pt.c (lookup_template_class_1): Check tsubst return value for
3889	error_mark_node.
3890
38912016-02-10  Jason Merrill  <jason@redhat.com>
3892
3893	PR c++/68926
3894	* pt.c (resolve_nondeduced_context): Add complain parm.
3895	(do_auto_deduction): Pass it.
3896	* cvt.c (convert_to_void): Likewise.
3897	* decl.c (cp_finish_decl): Likewise.
3898	* init.c (build_new): Likewise.
3899	* rtti.c (get_tinfo_decl_dynamic): Likewise.
3900	* semantics.c (finish_decltype_type): Likewise.
3901	* typeck.c (decay_conversion): Likewise.
3902	* cp-tree.h: Adjust declaration.
3903	* call.c (standard_conversion): Add complain parm, pass it along.
3904	(implicit_conversion): Pass it.
3905
3906	PR c++/69657
3907	* name-lookup.c (ambiguous_decl): Call remove_hidden_names.
3908	(lookup_name_real_1): Likewise.
3909	(remove_hidden_names): Handle non-functions too.
3910
3911	PR c++/10200
3912	* parser.c (cp_parser_lookup_name): When looking for a template
3913	after . or ->, only consider class templates.
3914	(cp_parser_postfix_dot_deref_expression): Handle the current
3915	instantiation.  Remember a dependent object expression.
3916	* typeck2.c (build_x_arrow): Handle the current instantiation.
3917
3918	* ptree.c (debug_tree): Implement for cp_expr.
3919
39202016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
3921
3922	PR c++/69139
3923	* parser.c (cp_parser_simple_type_specifier): Make the check
3924	for disambiguating between an 'auto' placeholder and an implicit
3925	template parameter more robust.
3926
39272016-02-08  Patrick Palka  <ppalka@gcc.gnu.org>
3928
3929	PR c++/69283
3930	PR c++/67835
3931	* decl2.c (mark_used): When given a TEMPLATE_DECL, return after
3932	setting its TREE_USED flag.
3933
39342016-02-08  Jason Merrill  <jason@redhat.com>
3935
3936	PR c++/69657
3937	* name-lookup.c (do_nonmember_using_decl): Leave anticipated
3938	built-ins alone.
3939
39402016-02-08  Jakub Jelinek  <jakub@redhat.com>
3941
3942	PR c++/59627
3943	* parser.c (cp_parser_omp_declare_reduction): Set assembler name
3944	of the DECL_OMP_DECLARE_REDUCTION_P decls.
3945
39462016-02-08  Marek Polacek  <polacek@redhat.com>
3947
3948	PR c++/69688
3949	* constexpr.c (clear_cv_and_fold_caches): Renamed from clear_cv_cache.
3950	Call clear_fold_cache.
3951	* cp-tree.h: Adjust declaration.
3952	* decl.c (finish_enum_value_list): Call clear_cv_and_fold_caches
3953	rather than clear_cv_cache and clear_fold_cache.
3954	* typeck2.c (store_init_value): Call clear_cv_and_fold_caches.
3955
39562016-02-08  Jason Merrill  <jason@redhat.com>
3957
3958	* cp-tree.h (CONV_FOLD, CONV_BACKEND_CONVERT): New.
3959	* cvt.c (convert): Pass CONV_BACKEND_CONVERT.
3960	(ocp_convert): Use *_maybe_fold.
3961	(cp_convert_to_pointer): Add dofold parameter.
3962	* cp-gimplify.c (cp_fold) [CONVERT_EXPR]: Call convert.
3963
39642016-02-05  Martin Sebor  <msebor@redhat.com>
3965
3966	PR c++/69662
3967	* init.c (find_field_init): New function.
3968	(warn_placement_new_too_small): Call it.  Handle one-element arrays
3969	at ends of structures special.
3970
39712016-02-05  Jason Merrill  <jason@redhat.com>
3972
3973	PR c++/68948
3974	* semantics.c (finish_expr_stmt): If expr is error_mark_node,
3975	make sure we've seen_error().
3976
39772016-02-05  Patrick Palka  <ppalka@gcc.gnu.org>
3978
3979	PR c++/68948
3980	* pt.c (tsubst_baselink): Diagnose an invalid constructor call
3981	if lookup_fnfields returns NULL_TREE and the name being looked
3982	up has the form A::A.
3983
39842016-02-04  Patrick Palka  <ppalka@gcc.gnu.org>
3985
3986	* constexpr.c (cxx_eval_binary_expression): Fold equality
3987	comparisons involving PTRMEM_CSTs.
3988
39892016-02-04  Jakub Jelinek  <jakub@redhat.com>
3990
3991	* class.c (find_flexarrays): Don't declare dom variable.
3992	(diagnose_flexarray): Likewise.
3993
39942016-02-02  Martain Sebor  <msebor@redhat.com>
3995
3996	PR c++/69251
3997	PR c++/69253
3998	PR c++/69290
3999	PR c++/69277
4000	PR c++/69349
4001	* class.c (walk_subobject_offsets): Avoid testing the upper bound
4002	of a flexible array member for equality to null.
4003	(find_flexarrays): Remove spurious whitespace introduced in r231665.
4004	(diagnose_flexarrays): Avoid checking the upper bound of arrays.
4005	(check_flexarrays): Same.
4006	* decl.c (compute_array_index_type): Avoid special case for flexible
4007	array members.
4008	(grokdeclarator): Avoid calling compute_array_index_type for flexible
4009	array members.
4010	* error.c (dump_type_suffix): Revert changes introduced in r231665
4011	and rendered unnecessary by the changes above.
4012	* pt.c (tsubst):  Same.
4013	* tree.c (build_ctor_subob_ref): Handle flexible array members.
4014	* typeck2.c (digest_init_r): Revert changes introduced in r231665.
4015	(process_init_constructor_array): Same.
4016	(process_init_constructor_record): Same.
4017
40182016-02-03  Patrick Palka  <ppalka@gcc.gnu.org>
4019
4020	PR c++/69056
4021	* pt.c (try_one_overload): Handle comparing argument packs so
4022	that there is no conflict if we deduced more arguments of an
4023	argument pack than were explicitly specified.
4024
40252016-01-31  Jakub Jelinek  <jakub@redhat.com>
4026	    Jason Merrill  <jason@redhat.com>
4027
4028	PR c++/68763
4029	* tree.c (strip_typedefs) [FUNCTION_TYPE]: Avoid building a new
4030	function type if nothing is changing.
4031
40322016-01-31  Jason Merrill  <jason@redhat.com>
4033
4034	PR c++/69009
4035	* pt.c (partial_specialization_p, impartial_args): New.
4036	(instantiate_decl): Call impartial_args.
4037
4038	* mangle.c (maybe_check_abi_tags): New.
4039	(write_guarded_var_name): Call it.
4040	(mangle_ref_init_variable): Call check_abi_tags.
4041
4042	* pt.c (lookup_template_class_1): Don't share TYPE_ATTRIBUTES
4043	between template and instantiation.
4044
40452016-01-29  Jakub Jelinek  <jakub@redhat.com>
4046
4047	PR debug/66869
4048	* decl.c (wrapup_globals_for_namespace): Warn about unused static
4049	function declarations.
4050
40512016-01-29  Marek Polacek  <polacek@redhat.com>
4052
4053	PR c++/69509
4054	PR c++/69516
4055	* constexpr.c (cxx_eval_array_reference): Give the "array subscript
4056	out of bound" error earlier.
4057	* init.c (build_vec_init): Change NE_EXPR into GT_EXPR.  Update the
4058	commentary.
4059
40602016-01-29  Patrick Palka  <ppalka@gcc.gnu.org>
4061
4062	* name-lookup.c (begin_scope): After reusing a cp_binding_level
4063	structure, update free_binding_level before the structure's
4064	level_chain field gets cleared, not after.
4065
40662016-01-28  Jason Merrill  <jason@redhat.com>
4067
4068	PR c++/67407
4069	* search.c (dfs_walk_once, dfs_walk_once_r)
4070	(dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use
4071	hash_set instead of BINFO_MARKED.
4072	(dfs_unmark_r): Remove.
4073
40742016-01-28  Patrick Palka  <ppalka@gcc.gnu.org>
4075
4076	PR c++/24208
4077	* parser.c (LEXER_DEBUGGING_ENABLED_P): New macro.
4078	(cp_lexer_debugging_p): Use it.
4079	(cp_lexer_start_debugging): Likewise.
4080	(cp_lexer_stop_debugging): Likewise.
4081
40822016-01-27  Marek Polacek  <polacek@redhat.com>
4083
4084	PR c/68062
4085	* typeck.c (cp_build_binary_op): Promote operand to unsigned, if
4086	needed.  Add -Wsign-compare warning.
4087
40882016-01-27  Ryan Burn  <contact@rnburn.com>
4089
4090	PR cilkplus/69267
4091	* cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed
4092	superfluous post_p argument in call to
4093	cilk_gimplify_call_params_in_spawned_fn.
4094
40952016-01-27  Marek Polacek  <polacek@redhat.com>
4096
4097	PR c++/69379
4098	* constexpr.c (cxx_eval_constant_expression): Handle PTRMEM_CSTs
4099	wrapped in NOP_EXPRs.
4100
41012016-01-27  Martin Sebor  <msebor@redhat.com>
4102
4103	PR c++/69317
4104	* mangle.c (mangle_decl): Reference the correct (saved) version
4105	of the ABI in -Wabi diagnostics.
4106
41072016-01-27  Marek Polacek  <polacek@redhat.com>
4108
4109	PR c++/69496
4110	* constexpr.c (cxx_eval_array_reference): Evaluate the number of
4111	elements of the array.
4112
41132016-01-26  Jason Merrill  <jason@redhat.com>
4114
4115	PR c++/68949
4116	* constexpr.c (register_constexpr_fundef): Keep the un-massaged body.
4117	(cxx_eval_call_expression): Don't look through clones.
4118	* optimize.c (maybe_clone_body): Clear DECL_SAVED_TREE of the alias.
4119	* semantics.c (expand_or_defer_fn_1): Keep DECL_SAVED_TREE of
4120	maybe-in-charge *tor.
4121
41222016-01-26  Jason Merrill  <jason@redhat.com>
4123
4124	PR c++/68782
4125	* constexpr.c (cxx_eval_bare_aggregate): Update TREE_CONSTANT
4126	and TREE_SIDE_EFFECTS.
4127	(cxx_eval_constant_expression) [CONSTRUCTOR]: Call
4128	verify_constructor_flags.
4129
41302016-01-26  Jakub Jelinek  <jakub@redhat.com>
4131
4132	PR c++/68357
4133	* cp-gimplify.c (cp_fold): If some operand folds to error_mark_node,
4134	return error_mark_node instead of building trees with error_mark_node
4135	operands.
4136
41372016-01-26  David Malcolm  <dmalcolm@redhat.com>
4138
4139	PR other/69006
4140	* error.c (print_instantiation_partial_context_line): Add missing
4141	newlines from output for the t == NULL case.
4142	(print_instantiation_partial_context): Remove call to pp_newline.
4143
41442016-01-24  Patrick Palka  <ppalka@gcc.gnu.org>
4145
4146	Revert:
4147	2016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
4148
4149	PR c++/11858
4150	PR c++/24663
4151	PR c++/24664
4152	* decl.c (grokdeclarator): Don't decay array parameter type to
4153	a pointer type if it's dependent.
4154	(grokparms): Invoke strip_top_quals instead of directly invoking
4155	cp_build_qualified_type.
4156	* pt.c (decay_dependent_array_parm_type): New static function.
4157	(type_unification_real): Call decay_dependent_array_parm_type
4158	to decay a dependent array parameter type to its corresponding
4159	pointer type before unification.
4160	(more_specialized_fn): Likewise.
4161	(get_bindings): Likewise.
4162	* tree.c (cp_build_qualified_type): Trivial typofix in
4163	documentation.
4164
41652016-01-23  Martin Sebor  <msebor@redhat.com>
4166
4167	PR c++/58109
4168	PR c++/69022
4169	* decl2.c (is_late_template_attribute): Handle dependent argument
4170	to attribute align and attribute vector_size.
4171
41722016-01-21  Jason Merrill  <jason@redhat.com>
4173
4174	PR c++/69392
4175	* lambda.c (lambda_capture_field_type): Handle 'this' specially
4176	for init-capture, too.
4177
4178	PR c++/65687
4179	* decl.c (type_is_deprecated): Don't look into a typedef.
4180
4181	PR c++/40751
4182	PR c++/64987
4183	* decl.c (copy_type_enum): Respect TYPE_USER_ALIGN.
4184
4185	PR c++/43407
4186	* decl.c (start_enum): Add attributes parameter.
4187	* parser.c (cp_parser_enum_specifier): Pass it.
4188	* pt.c (lookup_template_class_1): Pass it.
4189	* cp-tree.h: Adjust.
4190
41912016-01-19  Jason Merrill  <jason@redhat.com>
4192
4193	PR c++/59759
4194	* pt.c (convert_template_argument): Handle VAR_DECL properly.
4195
41962016-01-19  Marek Polacek  <polacek@redhat.com>
4197
4198	PR c++/68586
4199	* constexpr.c (clear_cv_cache): New.
4200	* cp-gimplify.c (clear_fold_cache): New.
4201	* cp-tree.h (clear_cv_cache, clear_fold_cache): Declare.
4202	* decl.c (finish_enum_value_list): Call them.
4203
4204	PR c++/68965
4205	* pt.c (tsubst_copy): Mark elements in expanded vector as used.
4206
42072016-01-18  Patrick Palka  <ppalka@gcc.gnu.org>
4208
4209	PR c++/11858
4210	PR c++/24663
4211	PR c++/24664
4212	* decl.c (grokdeclarator): Don't decay array parameter type to
4213	a pointer type if it's dependent.
4214	(grokparms): Invoke strip_top_quals instead of directly invoking
4215	cp_build_qualified_type.
4216	* pt.c (decay_dependent_array_parm_type): New static function.
4217	(type_unification_real): Call decay_dependent_array_parm_type
4218	to decay a dependent array parameter type to its corresponding
4219	pointer type before unification.
4220	(more_specialized_fn): Likewise.
4221	(get_bindings): Likewise.
4222	* tree.c (cp_build_qualified_type): Trivial typofix in
4223	documentation.
4224
42252016-01-18  Jason Merrill  <jason@redhat.com>
4226
4227	* cp-gimplify.c (cp_fold) [CONSTRUCTOR]: Don't clobber the input.
4228
4229	* cp-gimplify.c (cp_fold): Remove unnecessary special cases.
4230
4231	PR c++/68767
4232	* cp-gimplify.c (cp_fold) [COND_EXPR]: Simplify.  Do fold COND_EXPR.
4233	(contains_label_1, contains_label_p): Remove.
4234
42352016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4236
4237	PR c++/69091
4238	* pt.c (type_dependent_expression_p): For a function template
4239	specialization, a type is dependent iff any of its template
4240	arguments are.
4241
42422016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4243
4244	* cp-array-notation.c (cp_expand_cond_array_notations): Return
4245	error_mark_node only if find_rank failed, not if it was
4246	successful.
4247
42482016-01-16  Patrick Palka  <ppalka@gcc.gnu.org>
4249
4250	PR c++/68936
4251	* tree.c (build_min_non_dep_call_vec): Don't retain the
4252	KOENIG_LOOKUP_P flag of the non-dependent expression that's
4253	been built.
4254	(build_min_non_dep_op_overload): Instead, do it here.
4255
42562016-01-15  Jakub Jelinek  <jakub@redhat.com>
4257
4258	PR bootstrap/68271
4259	* parser.h (cp_token): Remove pragma_kind field.  Add comment
4260	with number of unused bits.
4261	* parser.c (eof_token): Remove pragma_kind field initializer.
4262	(cp_lexer_get_preprocessor_token): Don't set pragma_kind
4263	field, don't clear CPP_PRAGMA u.value.
4264	(cp_parser_pragma_kind): New function.
4265	(cp_parser_omp_sections_scope, cp_parser_oacc_kernels_parallel,
4266	cp_parser_omp_construct, cp_parser_initial_pragma,
4267	cp_parser_pragma): Use cp_parser_pragma_kind instead of accessing
4268	pragma_kind field.
4269
42702016-01-15  Jason Merrill  <jason@redhat.com>
4271
4272	PR c++/68847
4273	* call.c (build_cxx_call): Use fold_non_dependent_expr.
4274
4275	* typeck2.c (cxx_incomplete_type_diagnostic): Use the location of
4276	value.
4277
4278	PR c++/69257
4279	* typeck.c (decay_conversion): Don't call mark_rvalue_use for
4280	array/function-to-pointer conversion.  Call
4281	complete_type_or_maybe_complain for lvalue-to-rvalue conversion.
4282	* call.c (convert_like_real): Print call context if
4283	decay_conversion errors.
4284
42852016-01-14  Tom de Vries  <tom@codesourcery.com>
4286
4287	PR tree-optimization/68773
4288	* parser.c (cp_parser_oacc_declare, cp_parser_omp_declare_target): Don't
4289	set force_output.
4290
42912016-01-14  Jason Merrill  <jason@redhat.com>
4292
4293	PR c++/69261
4294	* constexpr.c (find_array_ctor_elt): Handle splitting RANGE_EXPR.
4295
42962016-01-12  Marek Polacek  <polacek@redhat.com>
4297
4298	PR c++/68979
4299	* constexpr.c (cxx_eval_check_shift_p): Use permerror rather than
4300	error_at and adjust the return value.
4301
43022016-01-12  Jakub Jelinek  <jakub@redhat.com>
4303
4304	PR objc++/68511
4305	PR c++/69213
4306	* cp-gimplify.c (cp_gimplify_expr) <case INIT_EXPR>: Don't return
4307	GS_ERROR whenever seen_error (), only if *expr_p contains
4308	cilk spawn stmt, but cilk_detect_spawn_and_unwrap failed.
4309
4310	PR c++/66808
4311	PR c++/69000
4312	* pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO.
4313
43142016-01-11  Jason Merrill  <jason@redhat.com>
4315
4316	PR c++/69131
4317	* method.c (walk_field_subobs): Add dtor_from_ctor parm.
4318	(process_subob_fn): Likewise.  Don't consider triviality if true.
4319	(synthesize_method_walk): Pass it.
4320
43212016-01-11  David Malcolm  <dmalcolm@redhat.com>
4322
4323	PR c++/68795
4324	* parser.c (cp_parser_postfix_expression): Initialize
4325	close_paren_loc to UNKNOWN_LOCATION; only use it if
4326	it has been written to by
4327	cp_parser_parenthesized_expression_list.
4328	(cp_parser_parenthesized_expression_list): Document the behavior
4329	with respect to the CLOSE_PAREN_LOC param.
4330
43312016-01-11  Jakub Jelinek  <jakub@redhat.com>
4332
4333	PR c++/69211
4334	* cp-gimplify.c (cp_fold): If COMPOUND_EXPR or MODIFY_EXPR
4335	folded operands have side-effects, but folding changed any of them,
4336	build a new tree with the folded operands instead of returning the
4337	unfolded tree.
4338
43392016-01-09  Marek Polacek  <polacek@redhat.com>
4340
4341	PR c++/69113
4342	* decl2.c (comdat_linkage): Only set DECL_COMDAT if TREE_PUBLIC is set.
4343
43442016-01-09  Jakub Jelinek  <jakub@redhat.com>
4345
4346	PR c++/69164
4347	* class.c (layout_class_type): Use copy_node to copy FIELD_DECLs.
4348
43492016-01-08  Jason Merrill  <jason@redhat.com>
4350
4351	PR c++/69158
4352	* constexpr.c (cxx_fold_indirect_ref): Handle array type differing
4353	in completion.
4354
43552016-01-08  Marek Polacek  <polacek@redhat.com>
4356
4357	PR c++/68449
4358	* constexpr.c (cxx_eval_constant_expression): Handle NULL initializer.
4359
43602016-01-08  Jason Merrill  <jason@redhat.com>
4361
4362	* constexpr.c (cxx_eval_call_expression): Remove convert_to_void
4363	workaround.
4364
4365	PR c++/68983
4366	PR c++/67557
4367	* cvt.c (convert_to_void): Don't strip a TARGET_EXPR of
4368	TREE_ADDRESSABLE type.
4369
4370	PR c++/68983
4371	PR c++/67557
4372	* call.c (unsafe_copy_elision_p): Look through COMPOUND_EXPR.
4373
43742016-01-05  Nathan Sidwell  <nathan@acm.org>
4375
4376	PR c++/58583
4377	* pt.c (build_non_dependent_expr): Don't try a checking fold when
4378	parsing an nsdmi.
4379
43802016-01-04  Jakub Jelinek  <jakub@redhat.com>
4381
4382	Update copyright years.
4383
4384Copyright (C) 2016 Free Software Foundation, Inc.
4385
4386Copying and distribution of this file, with or without modification,
4387are permitted in any medium without royalty provided the copyright
4388notice and this notice are preserved.
4389