12020-12-24  Iain Sandoe  <iain@sandoe.co.uk>
2
3	* g++spec.c (LIBCXX, LIBCXX_PROFILE, LIBCXX_STATIC): New.
4	(LIBCXXABI, LIBCXXABI_PROFILE, LIBCXXABI_STATIC): New.
5	(enum stdcxxlib_kind): New.
6	(lang_specific_driver): Allow selection amongst multiple
7	c++ runtime libraries.
8
92020-12-23  Nathan Sidwell  <nathan@acm.org>
10
11	PR c++/96045
12	* parser.c (cp_lexer_new_main): Adjust EOF token location.
13
142020-12-23  Jason Merrill  <jason@redhat.com>
15
16	PR c++/97597
17	* class.c (is_empty_base_ref): New.
18	(build_base_path): Add NOP_EXPR after offset.
19	* cp-tree.h (is_empty_base_ref): Declare it.
20	* call.c (unsafe_return_slot_p): Call it.
21
222020-12-23  Jakub Jelinek  <jakub@redhat.com>
23
24	PR c++/98353
25	* init.c (build_zero_init_1): Use build_zero_cst for SCALAR_TYPE_P
26	zero initializers.
27
282020-12-23  Jason Merrill  <jason@redhat.com>
29
30	PR c++/98332
31	* constexpr.c (unshare_constructor): Check for NULL.
32	(cxx_eval_vec_init_1): Always exit early if non-constant.
33
342020-12-22  Nathan Sidwell  <nathan@acm.org>
35
36	* module.cc (has_definition): Check DECL_LANG_SPECIFIC.
37
382020-12-22  Jakub Jelinek  <jakub@redhat.com>
39
40	PR c++/93480
41	* method.c (common_comparison_type): If comps[i] is a TREE_LIST,
42	use its TREE_VALUE instead.
43	(build_comparison_op): Handle array members.
44
452020-12-22  Gerald Pfeifer  <gerald@pfeifer.com>
46
47	* module.cc (INCLUDE_STRING): Define.
48	(INCLUDE_VECTOR): Ditto.
49
502020-12-22  Jason Merrill  <jason@redhat.com>
51
52	* mangle.c (write_member_name): Add assert.
53	(write_expression): Add asserts.
54
552020-12-21  Nathan Sidwell  <nathan@acm.org>
56
57	* module.cc (create_dirs): Add logging.
58	(finish_module_processing): Unlink before rename.
59
602020-12-21  Nathan Sidwell  <nathan@acm.org>
61
62	PR bootstrap/98412
63	* mapper-client.cc: INCLUDE_STRING, INCLUDE_VECTOR.
64	(module_client::open_module_client): Avoid std::stoul.
65	* mapper-resolver.cc: INCLUDE_STRING, INCLUDE_VECTOR.
66
672020-12-18  Kwok Cheung Yeung  <kcy@codesourcery.com>
68
69	* cp-lang.c (cxx_get_decl_init): New.
70	(cxx_omp_finish_decl_inits): New.
71	(LANG_HOOKS_GET_DECL_INIT): New.
72	(LANG_HOOKS_OMP_FINISH_DECL_INITS): New.
73	* cp-tree.h (dynamic_initializers): New.
74	* decl.c (dynamic_initializers): New.
75	* decl2.c (c_parse_final_cleanups): Add initializer entries
76	from vars to dynamic_initializers.
77
782020-12-18  Nathan Sidwell  <nathan@acm.org>
79
80	* module.cc (O_CLOEXEC, O_BINARY): Add window's support.
81	(elf_in::defrost, module_state::do_import)
82	(finish_module_processing): Use O_BINARY.
83
842020-12-18  Jakub Jelinek  <jakub@redhat.com>
85
86	PR c++/98343
87	* cp-gimplify.c (source_location_table_entry_hash::pch_nx): Override
88	static member functions from ggc_remove.
89
902020-12-18  Patrick Palka  <ppalka@redhat.com>
91
92	* constraint.cc (satisfying_constraint): Move up definition
93	and give it bool type.
94	(failed_type_completion_count): Replace with ...
95	(failed_type_completions): ... this.
96	(note_failed_type_completion_for_satisfaction): Append the
97	supplied argument to failed_type_completions.
98	(some_type_complete_p): Define.
99	(sat_entry::maybe_unstable): Replace with ...
100	(sat_entry::ftc_begin, sat_entry::ftc_end): ... these.
101	(satisfaction_cache::ftc_count): Replace with ...
102	(satisfaction_cache::ftc_begin): ... this.
103	(satisfaction_cache::satisfaction_cache): Adjust accordingly.
104	(satisfaction_cache::get): Adjust accordingly, using
105	some_type_complete_p.
106	(satisfaction_cache::save): Adjust accordingly.
107	(satisfying_constraint_p): Remove unused function.
108	(satisfy_constraint): Set satisfying_constraint.
109	(satisfy_declaration_constraints): Likewise.
110	* decl.c (require_deduced_type): Call
111	note_failed_type_completion_for_satisfaction.
112
1132020-12-18  Patrick Palka  <ppalka@redhat.com>
114
115	* constraint.cc (sat_entry::evaluating): New member.
116	(satisfaction_cache::get): If entry->evaluating, diagnose
117	self-recursive satisfaction.  Otherwise, set entry->evaluating
118	if we're not reusing a cached satisfaction result.
119	(satisfaction_cache::save): Clear entry->evaluating.
120	(satisfy_atom): Set up diagnosing_failed_constraint before the
121	first call to get().
122
1232020-12-18  Patrick Palka  <ppalka@redhat.com>
124
125	* constraint.cc (failed_type_completion_count): New.
126	(note_failed_type_completion_for_satisfaction): New.
127	(sat_entry::constr): Rename to ...
128	(sat_entry::atom): ... this.
129	(sat_entry::location): New member.
130	(sat_entry::maybe_unstable): New member.
131	(sat_entry::diagnose_instability): New member.
132	(struct sat_hasher): Adjust after the above renaming.
133	(get_satisfaction, save_satisfaction): Remove.
134	(satisfaction_cache): Rewrite completely.
135	(satisfy_atom): When instantiation of the parameter mapping
136	fails, set diagnose_instability.  Propagate location from
137	inst_cache.entry to cache.entry if the secondary lookup
138	succeeded.
139	(satisfy_declaration_constraints): When
140	failed_type_completion_count differs before and after
141	satisfaction, then don't cache the satisfaction result.
142	* cp-tree.h (note_failed_type_completion_for_satisfaction):
143	Declare.
144	* pt.c (tsubst) <case TYPENAME_TYPE>: Use
145	complete_type_or_maybe_complain instead of open-coding it.
146	* typeck.c (complete_type_or_maybe_complain): Call
147	note_failed_type_completion_for_satisfaction when type
148	completion fails.
149
1502020-12-17  Nathan Sidwell  <nathan@acm.org>
151
152	PR c++/98340
153	* module.cc (uintset<T>::hash::add): Use uintset (0u).MEMBER,
154	rather than uintset::MEMBER.
155
1562020-12-17  Nathan Sidwell  <nathan@acm.org>
157
158	PR bootstrap/98300
159	* module.cc: Fix ::read, ::write result signedness comparisons.
160
1612020-12-16  Nathan Sidwell  <nathan@acm.org>
162
163	* mapper-resolver.cc: Remove early include of
164	sys/socket.h.  Specify no CODY_NETWORKING instead.
165	* module.cc: Specify no CODY_NETWORKING.
166
1672020-12-16  Nathan Sidwell  <nathan@acm.org>
168
169	* parser.c (cp_parser_elaborated_type_specifier): Test
170	BOUND_TEMPLATE_TEMPLATE_PARM before checking for instantiation.
171
1722020-12-16  Nathan Sidwell  <nathan@acm.org>
173
174	* module.cc (dumper::push): Clangify offsetof use.
175
1762020-12-16  Nathan Sidwell  <nathan@acm.org>
177
178	* mapper-resolver.cc: #include sys/socket before system.h
179	due to poisoned bcopy use.
180
1812020-12-16  Nathan Sidwell  <nathan@acm.org>
182
183	* module.cc (loc_spans): Make spans a pointer, not inline.
184	Adjust all accesses.
185
1862020-12-16  Nathan Sidwell  <nathan@acm.org>
187
188	* mapper-client.cc: Include sys/socket.h before system.h.
189
1902020-12-15  Patrick Palka  <ppalka@redhat.com>
191
192	* pt.c (in_template_function): Inspect cfun->decl instead of
193	current_function_decl.
194
1952020-12-15  Nathan Sidwell  <nathan@acm.org>
196
197	* module.cc: Replace stubs with implementation.
198
1992020-12-15  Nathan Sidwell  <nathan@acm.org>
200
201	* Make-lang.in (CXX_AND_OBJCXX_OBJS): Add mapper-client &
202	mapper-resolver.
203	* mapper-client.h: New.
204	* mapper-client.cc: New.
205	* mapper-resolver.cc: New.
206
2072020-12-15  Nathan Sidwell  <nathan@acm.org>
208
209	* name-lookup.c (do_namespace_alias): Set originating module
210	before pushing.
211
2122020-12-11  Jason Merrill  <jason@redhat.com>
213
214	PR libstdc++/97600
215	* call.c (build_user_type_conversion_1): Avoid considering
216	conversion functions that return a clearly unsuitable type.
217
2182020-12-11  Jason Merrill  <jason@redhat.com>
219
220	* cp-tree.h (make_binding_vec): Add CXX_MEM_STAT_INFO.
221
2222020-12-11  Nathan Sidwell  <nathan@acm.org>
223
224	* config-lang.in (gtfiles): Add cp/module.cc.
225	* decl2.c (c_parse_final_cleanups): Add module support.
226	* lambda.c (record_lambda_scope): Call maybe_attach_decl.
227	* module.cc (maybe_attach_decl, lazy_load_specializations): Stubs.
228	(finish_module_procesing): Stub.
229	* pt.c (lookup_template_class_1): Lazy load specializations.
230	(instantiate_template_1): Likewise.
231
2322020-12-11  Nathan Sidwell  <nathan@acm.org>
233
234	* decl2.c (c_parse_final_cleanups): Refactor loop.
235
2362020-12-11  Nathan Sidwell  <nathan@acm.org>
237
238	* cp-tree.h (map_context_from, map_context_to): Declare.
239	* module.cc (map_context_from, map_context_to): Define.
240	* tree.c (cp_tree_equal): Check map_context_{from,to} for parm
241	context difference.  Allow NON_LVALUE_EXPR and VIEW_CONVERT_EXPR
242	with null types.
243
2442020-12-11  Nathan Sidwell  <nathan@acm.org>
245
246	* cp-lang.c (LANG_HOOKS_PREPROCESS_MAIN_FILE): Override.
247	(LANG_HOOKS_PREPROCESS_OPTIONS): Override.
248	(LANG_HOOKS_PREPROCESS_TOKEN): Override.
249	* cp-objcp-common.c (cp_register_dumps): Add module dump.
250	(cp_handle_option): New.
251	* cp-objcp-common.h (cp_handle_option): Declare.
252	(LANG_HOOKS_HANDLE_OPTION): Override.
253	* cp-tree.h (module_dump_id): Declare.
254	* module.cc (module_dump_id): Define.
255	(module_begin_main_file, handle_module_option)
256	(module_preproces_options): Stubs.
257
2582020-12-11  Nathan Sidwell  <nathan@acm.org>
259
260	* module.cc (lazy_specializations_p): Stub.
261	* name-lookup.h (append_imported_binding_slot)
262	(mergeable_namespacE_slots, lookup_class_binding)
263	(walk_module_binding, import_module_binding, set_module_binding)
264	(note_pending_specializations, load_pending_specializations)
265	(add_module_decl, add_imported_namespace): Declare.
266	(get_cxx_dialect_name): Declare.
267	(enum WMB_flags): New.
268	* name-lookup.c (append_imported_binding_slot)
269	(mergeable_namespacE_slots, lookup_class_binding)
270	(walk_module_binding, import_module_binding, set_module_binding)
271	(note_pending_specializations, load_pending_specializations)
272	(add_module_decl, add_imported_namespace): New.
273	(get_cxx_dialect_name): Make extern.
274
2752020-12-11  Patrick Palka  <ppalka@redhat.com>
276
277	PR c++/78173
278	* typeck.c (pointer_diff): Use complete_type_or_maybe_complain
279	instead of complete_type_or_else.
280
2812020-12-10  Jason Merrill  <jason@redhat.com>
282
283	* cp-tree.h (struct type_identity): New.
284	(make_temp_override): New.
285	* decl.c (grokdeclarator): Use it.
286	* except.c (maybe_noexcept_warning): Use it.
287	* parser.c (cp_parser_enum_specifier): Use it.
288	(cp_parser_parameter_declaration_clause): Use it.
289	(cp_parser_gnu_attributes_opt): Use it.
290	(cp_parser_std_attribute): Use it.
291
2922020-12-10  Nathan Sidwell  <nathan@acm.org>
293
294	* name-lookup.c (do_nonmember_using_decl): Add INSERT_P parm.
295	Deal with exporting using decls.
296	(finish_nonmember_using_decl): Examine BINDING_VECTOR.
297
2982020-12-10  Nathan Sidwell  <nathan@acm.org>
299
300	* cp-tree.h (visible_instantiation_path): Renamed.
301	* module.cc (get_originating_module_decl, lazy_load_binding)
302	(lazy_load_members, visible_instantiation_path): Stubs.
303	* name-lookup.c (STAT_TYPE_VISIBLE_P, STAT_VISIBLE): New.
304	(search_imported_binding_slot, init_global_partition)
305	(get_fixed_binding_slot): New.
306	(name_lookup::process_module_binding): New.
307	(name_lookup::search_namespace_only): Search BINDING_VECTOR.
308	(name_lookup::adl_namespace_fns): Likewise.
309	(name_lookip::search_adl): Search visible instantiation path.
310	(maybe_lazily_declare): Maybe lazy load members.
311	(implicitly_exporT_namespace): New.
312	(maybe_record_mergeable_decl): New.
313	(check_module_override): New.
314	(do_pushdecl): Deal with BINDING_VECTOR, check override.
315	(add_mergeable_namespace_entity): New.
316	(get_namespace_binding): Deal with BINDING_VECTOR.
317	(do_namespace_alias): Call set_originating_module.
318	(lookup_elaborated_type_1): Deal with BINDING_VECTOR.
319	(do_pushtag): Call set_originating_module.
320	(reuse_namespace): New.
321	(make_namespace_finish): Add FROM_IMPORT parm.
322	(push_namespace): Deal with BINDING_VECTOR & namespace reuse.
323	(maybe_save_operator_binding): Save when module CMI in play.
324	* name-lookup.h (add_mergeable_namespace_entity): Declare.
325
3262020-12-10  Nathan Sidwell  <nathan@acm.org>
327
328	* name-lookup.c: Include bitmap.h.
329	(enum binding_slots): New.
330	(maybe_add_fuzzy_binding): Return bool true if found.
331	(consider_binding_level): Add module support.
332	* module.cc (get_import_bitmap): Stub.
333
3342020-12-10  Nathan Sidwell  <nathan@acm.org>
335
336	* name-lookup.c (pop_local_binding): Check for IDENTIFIER_ANON_P.
337	(update_binding): Level may be null, don't add namespaces to
338	level.
339	(newbinding_bookkeeping): New, broken out of ...
340	(do_pushdecl): ... here, call it.  Don't push anonymous decls.
341	(pushdecl, add_using_namespace): Correct comments.
342	(do_push_nested_namespace): Remove assert.
343	(make_namespace, make_namespace_finish): New, broken out of ...
344	(push_namespace): ... here.  Call them.  Add namespace to level
345	here.
346
3472020-12-10  Nathan Sidwell  <nathan@acm.org>
348
349	* error.c (dump_module_suffix): New.
350	(dump_aggr_type, dump_simple_decl, dump_function_name): Call it.
351	* ptree.c (cxx_print_decl): Print module information.
352	* module.cc (module_name, get_importing_module): Stubs.
353
3542020-12-10  Nathan Sidwell  <nathan@acm.org>
355
356	* name-lookup.h (set_class_bindings): Return vector, take signed
357	'extra' parm.
358	* name-lookup.c (maybe_lazily_declare): Break out ...
359	(get_class_binding): .. of here, call it.
360	(find_member_slot): Adjust get_class_bindings call.
361	(set_class_bindings): Allow -ve extra.  Return the vector.
362	(set_identifier_type_value_with_scope): Remove checking assert.
363	(lookup_using_decl): Set decl's context.
364	(do_pushtag): Adjust set_identifier_type_value_with_scope handling.
365
3662020-12-09  Nathan Sidwell  <nathan@acm.org>
367
368	* parser.h (struct cp_token): Add main_source_p field.
369	* parser.c (cp_lexer_new_main): Pass thought module token filter.
370	Check macros.
371	(cp_lexer_get_preprocessor_token): Set main_source_p.
372	(enum module_parse): New.
373	(cp_parser_diagnose_invalid_type_name): Deal with unrecognized
374	module-directives.
375	(cp_parser_skip_to_closing_parenthesize_1): Skip module-directivres.
376	(cp_parser_skip_to_end_of_statement): Likewise.
377	(cp_parser_skiup_to_end_of_block_or_statement): Likewise.
378	(cp_parser_translation_unit): Add module parsing calls.
379	(cp_parser_module_name, cp_parser_module_declaration): New.
380	(cp_parser_import_declaration, cp_parser_module_export): New.
381	(cp_parser_declaration): Add module export detection.
382	(cp_parser_template_declaration): Adjust 'export' error message.
383	(cp_parser_function_definition_after_declarator): Add
384	module-specific logic.
385	* module.cc (import_module, declare_module)
386	(maybe_check_all_macros): Stubs.
387
3882020-12-09  Marek Polacek  <polacek@redhat.com>
389
390	PR c++/97517
391	* cxx-pretty-print.c (cxx_pretty_printer::simple_type_specifier): Handle
392	NULLPTR_TYPE.
393	(pp_cxx_type_specifier_seq): Likewise.
394	(cxx_pretty_printer::type_id): Likewise.
395
3962020-12-09  Nathan Sidwell  <nathan@acm.org>
397
398	* decl.c (duplicate_decls): Add module-specific redeclaration
399	logic.
400	(cxx_init_decl_processing): Export the global namespace, maybe
401	initialize modules.
402	(start_decl): Reject local-extern in a module, adjust linkage of
403	template var.
404	(xref_tag_1): Add module-specific redeclaration logic.
405	(start_enum): Likewise.
406	(finish_enum_value_list): Export unscoped members of an exported
407	enum.
408	(grokmethod): Implement p1779 linkage of in-class defined
409	functions.
410	* decl2.c (no_linkage_error): Imports are ok.
411	(c_parse_final_cleanups): Call fini_modules.
412	* lex.c (cxx_dup_lang_specific): Clear some module flags in the
413	copy.
414	* module.cc (module_kind): Define.
415	(module_may_redeclare, set_defining_module): Stubs.
416	(init_modules): Error on modules.
417	(fini_modules): Stub.
418	* rtti.c (push_abi_namespace): Save and reset module_kind.
419	(pop_abi_namespace): Restore module kind.
420	(build_dynamic_cast_1, tinfo_base_init): Adjust.
421	* semantics.c (begin_class_definition): Add module-specific logic.
422	(expand_or_defer_fn_1): Keep bodies of more fns when modules_p.
423
4242020-12-09  Tobias Burnus  <tobias@codesourcery.com>
425
426	* parser.c (cp_parser_omp_allocate): New.
427	(cp_parser_omp_construct, cp_parser_pragma): Call it.
428
4292020-12-09  Jason Merrill  <jason@redhat.com>
430
431	PR c++/98019
432	* cvt.c (maybe_warn_nodiscard): Check c_inhibit_evaluation_warnings.
433
4342020-12-09  Jason Merrill  <jason@redhat.com>
435
436	PR c++/59238
437	* init.c (expand_default_init): Pass tf_no_cleanup when building
438	a TARGET_EXPR to go on the RHS of an INIT_EXPR.
439	* typeck.c (cp_build_modify_expr): Likewise.
440
4412020-12-08  Marek Polacek  <polacek@redhat.com>
442
443	PR c++/98103
444	* constexpr.c (cxx_eval_dynamic_cast_fn): If the evaluating of vtable
445	yields a null pointer, give an error and return.  Use objtype.
446
4472020-12-08  Nathan Sidwell  <nathan@acm.org>
448
449	* class.c (layout_class_type): Call set_instantiating_module.
450	(build_self_reference): Likewise.
451	* decl.c (grokfndecl): Call set_originating_module.
452	(grokvardecl): Likewise.
453	(grokdeclarator): Likewise.
454	* pt.c (maybe_new_partial_specialization): Call
455	set_instantiating_module, propagate DECL_MODULE_EXPORT_P.
456	(lookup_template_class_1): Likewise.
457	(tsubst_function_decl): Likewise.
458	(tsubst_decl, instantiate_template_1): Likewise.
459	(build_template_decl): Propagate module flags.
460	(tsubst_template_dcl): Likewise.
461	(finish_concept_definition): Call set_originating_module.
462	* module.cc (set_instantiating_module, set_originating_module): Stubs.
463
4642020-12-08  Jason Merrill  <jason@redhat.com>
465
466	PR c++/96299
467	* cp-tree.h (build_new_op): Add overload that omits some parms.
468	(genericize_spaceship): Add location_t parm.
469	* constexpr.c (cxx_eval_binary_expression): Pass it.
470	* cp-gimplify.c (genericize_spaceship): Pass it.
471	* method.c (genericize_spaceship): Handle class-type arguments.
472	(build_comparison_op): Fall back to op</== when appropriate.
473
4742020-12-08  Jason Merrill  <jason@redhat.com>
475
476	* call.c (build_new_op_1): Set *overload for ambiguity.
477	(build_new_method_call_1): Likewise.
478
4792020-12-08  Bernd Edlinger  <bernd.edlinger@hotmail.de>
480
481	* decl2.c: (is_atomic_expensive_p): New helper function.
482	(build_atomic_load_byte): Rename to...
483	(build_atomic_load_type): ... and add new parameter type.
484	(get_guard_cond): Skip the atomic here if that is expensive.
485	Use the correct type for the atomic load on certain targets.
486
4872020-12-08  Nathan Sidwell  <nathan@acm.org>
488
489	* cp-tree.h (struct tinst_level): Add path & visible fields.
490	(build_cdtor_clones): Declare.
491	(match_mergeable_specialization): Use a spec_entry, add insert parm.
492	* class.c (build_cdtor_clones): Externalize.
493	* pt.c (push_tinst_level_loc): Clear new fields.
494	(match_mergeable_specialization): Adjust API.
495
4962020-12-08  Nathan Sidwell  <nathan@acm.org>
497
498	* decl2.c (start_objects): Refactor and adjust for named module
499	initializers.
500	(finish_objects): Likewise.
501	(generate_ctor_or_dtor_function): Likewise.
502	* module.cc (module_initializer_kind)
503	(module_add_import_initializers): Stubs.
504
5052020-12-08  Nathan Sidwell  <nathan@acm.org>
506
507	* Make-lang.in (MODULE_VERSION): Override when DEVPHASE not empty.
508	* module.cc: Comment.
509
5102020-12-08  Nathan Sidwell  <nathan@acm.org>
511
512	* cp-tree.h (mangle_module_substitution, mangle_identifier)
513	(mangle_module_global_init): Declare.
514	* mangle.c (struct globals): Add mod field.
515	 (mangle_module_substitution, mangle_identifier)
516	(mangle_module_global_init): Define.
517	(write_module, maybe_write_module): New.
518	(write_name): Call it.
519	(start_mangling): Clear mod field.
520	(finish_mangling_internal): Adjust.
521	* module.cc (mangle_module, mangle_module_fini)
522	(get_originating_module): Stubs.
523
5242020-12-08  Nathan Sidwell  <nathan@acm.org>
525
526	* cp-tree.h (module_token_pre, module_token_cdtor)
527	(module_token_lang): Declare.
528	* lex.c: Include langhooks.
529	(struct module_token_filter): New.
530	* cp-tree.h (module_token_pre, module_token_cdtor)
531	(module_token_lang): Define.
532	* module.cc (get_module, preprocess_module, preprocessed_module):
533	Nop stubs.
534
5352020-12-08  Nathan Sidwell  <nathan@acm.org>
536
537	* Make-lang.in (MODULE_VERSION): Define.
538	* module.cc: Add includes.
539
5402020-12-08  Jakub Jelinek  <jakub@redhat.com>
541
542	PR c++/98187
543	* parser.c (cp_parser_omp_parallel): For parallel master with
544	-fopenmp-simd only, just call cp_parser_omp_master instead of
545	wrapping it in OMP_PARALLEL.
546
5472020-12-07  Marek Polacek  <polacek@redhat.com>
548
549	PR c++/98043
550	* decl.c (pop_switch): If SWITCH_STMT_TYPE is a scoped enum type,
551	set it to the type of SWITCH_STMT_COND.
552
5532020-12-07  Nathan Sidwell  <nathan@acm.org>
554
555	* cp-tree.h (build_cplus_array_type): Add defaulted DEP parm.
556	* tree.c (set_array_type_common): Add DEP parm.
557	(build_cplus_array_type): Add DEP parm, determine dependency if
558	needed.  Mark dependency of new types.
559	(cp_build_qualified_type_real): Adjust array-building call, assert
560	no surprising dependency.
561	(strip_typedefs): Likewise.
562
5632020-12-07  Nathan Sidwell  <nathan@acm.org>
564
565	PR c++/98116
566	* typeck.c (structural_comptypes): Move early outs to comptype.
567	Always check template-alias match when comparing_specializations.
568	(comptypes): Do early out checking here.
569
5702020-12-05  Patrick Palka  <ppalka@redhat.com>
571
572	PR c++/97093
573	* constraint.cc (parameter_mapping_equivalent_p): Add some
574	sanity checks.  Clarify comment.
575	(tsubst_nested_requirement): Always perform satisfaction
576	quietly first.  If that yields an erroneous result, emit a
577	context message and replay satisfaction noisily with the
578	diagnostic normal form.
579	(finish_nested_requirement): Normalize the constraint-expression
580	twice, once with diagnostic information and once without.  Store
581	them in a TREE_LIST within the TREE_TYPE.
582	(diagnose_nested_requirement): When replaying satisfaction, use
583	the diagnostic normal form instead of renormalizing on the spot.
584
5852020-12-05  Patrick Palka  <ppalka@redhat.com>
586
587	PR c++/97093
588	* constraint.cc (struct sat_info): Define.
589	(tsubst_nested_requirement): Pass a sat_info object to
590	satisfy_constraint.
591	(satisfy_constraint_r): Take a sat_info argument instead of
592	subst_info.
593	(satisfy_conjunction): Likewise.
594	(satisfy_disjunction): Likewise.  Instead of first evaluating
595	each branch quietly, evaluate each branch only with
596	unsatisfaction diagnostics disabled.  Exit early if evaluation
597	of a branch returns error_mark_node.
598	(satisfy_atom): Take a sat_info argument instead of subst_info.
599	Fix a comment.  Check diagnose_unsatisfaction_p() instead of
600	noisy() before replaying a substitution failure.
601	(satisfy_constraint): Take a sat_info argument instead of
602	subst_info.
603	(satisfy_associated_constraints): Likewise.
604	(satisfy_constraint_expression): Likewise.
605	(satisfy_declaration_constraints): Likewise.
606	(constraint_satisfaction_value): Likewise and adjust
607	accordingly.  Fix formatting.
608	(constraints_satisfied_p): Pass a sat_info object to
609	constraint_satisfaction_value.
610	(evaluate_concept_check): Pass a sat_info object to
611	satisfy_constraint_expression.
612	(diagnose_nested_requirement): Likewise.
613	(diagnose_constraints): Pass an appropriate sat_info object to
614	constraint_satisfaction_value.
615
6162020-12-05  Jakub Jelinek  <jakub@redhat.com>
617
618	PR c++/98122
619	* constexpr.c (cxx_union_active_member): New function.
620	(cxx_fold_indirect_ref_1): Add ctx argument, pass it through to
621	recursive call.  Handle UNION_TYPE.
622	(cxx_fold_indirect_ref): Add ctx argument, pass it to recursive calls
623	and cxx_fold_indirect_ref_1.
624	(cxx_eval_indirect_ref): Adjust cxx_fold_indirect_ref calls.
625
6262020-12-04  Jason Merrill  <jason@redhat.com>
627
628	PR c++/93083
629	* pt.c (convert_template_argument): Handle equivalent placeholders.
630	(do_class_deduction): Look through EXPR_PACK_EXPANSION, too.
631
6322020-12-04  Jason Merrill  <jason@redhat.com>
633
634	* decl2.c (clear_consteval_vfns): Remove *.
635	* pt.c (do_auto_deduction): Remove *.
636	* parser.c (cp_parser_late_parsing_default_args): Change loop
637	to use range 'for'.
638
6392020-12-04  Nathan Sidwell  <nathan@acm.org>
640
641	PR c++/98116
642	* cp-tree.h (comparing_typenames): Delete.
643	(cplus_build_array_type): Remove default parm.
644	* pt.c (comparing_typenames): Delete.
645	(spec_hasher::equal): Don't increment it.
646	* tree.c (set_array_type_canon): Remove dep parm.
647	(build_cplus_array_type): Remove dep parm changes.
648	(cp_build_qualified_type_real): Remove dependent array type
649	changes.
650	(strip_typedefs): Likewise.
651	* typeck.c (structural_comptypes): Revert comparing_typename
652	changes.
653
6542020-12-04  Nathan Sidwell  <nathan@acm.org>
655
656	* cp-tree.h: Add various inline module state predicates, and
657	declare the API that will be provided by modules.cc
658
6592020-12-04  Jakub Jelinek  <jakub@redhat.com>
660
661	PR c++/80780
662	* cp-gimplify.c (fold_builtin_source_location): Use 2 instead of 0
663	as last argument to cxx_printable_name.
664
6652020-12-03  Jason Merrill  <jason@redhat.com>
666
667	* cp-tree.h (releasing_vec::operator[]): Change parameter type to
668	ptrdiff_t.
669
6702020-12-03  Nathan Sidwell  <nathan@acm.org>
671
672	* cp-tree.h (OVL_EXPORT): New.
673	(class ovl_iterator): Add get_using, exporting_p.
674	* tree.c (ovl_insert): Extend using_or_hidden meaning to include
675	an exported using.
676
6772020-12-03  Nathan Sidwell  <nathan@acm.org>
678
679	* cp-tree.h (DECL_UNINSTANTIATED_TEMPLATE_FRIEND): New.
680	* pt.c (push_template_decl): Set it.
681	(tsubst_friend_function): Clear it.
682
6832020-12-03  Nathan Sidwell  <nathan@acm.org>
684
685	* cp-tree.h (make_unbound_class_template_raw): Declare.
686	(canonical_type_parameter): Declare.
687	* decl.c (make_unbound_class_template_raw): Break out of ...
688	(make_unboud_class_template): ... here.  Call it.
689	* pt.c (canonical_type_parameter): Externalize.  Refactor & set
690	structural_equality for type parms.
691
6922020-12-03  Nathan Sidwell  <nathan@acm.org>
693
694	PR c++/98107
695	* tree.c (build_cplus_array_type): Mark dependency of new variant.
696	(cp_build_qualified_type_real, strip_typedefs): Assert
697	TYPE_DEPENDENT_P_VALID, or not a dependent type.
698
6992020-12-03  Jakub Jelinek  <jakub@redhat.com>
700
701	PR libstdc++/93121
702	* cp-tree.h (cp_build_bit_cast): Declare.
703	* cp-tree.def (BIT_CAST_EXPR): New tree code.
704	* cp-objcp-common.c (names_builtin_p): Handle RID_BUILTIN_BIT_CAST.
705	(cp_common_init_ts): Handle BIT_CAST_EXPR.
706	* cxx-pretty-print.c (cxx_pretty_printer::postfix_expression):
707	Likewise.
708	* parser.c (cp_parser_postfix_expression): Handle
709	RID_BUILTIN_BIT_CAST.
710	* semantics.c (cp_build_bit_cast): New function.
711	* tree.c (cp_tree_equal): Handle BIT_CAST_EXPR.
712	(cp_walk_subtrees): Likewise.
713	* pt.c (tsubst_copy): Likewise.
714	* constexpr.c (check_bit_cast_type, cxx_eval_bit_cast): New functions.
715	(cxx_eval_constant_expression): Handle BIT_CAST_EXPR.
716	(potential_constant_expression_1): Likewise.
717	* cp-gimplify.c (cp_genericize_r): Likewise.
718
7192020-12-03  Jason Merrill  <jason@redhat.com>
720
721	* parser.c (cp_parser_primary_expression): Distinguish
722	parms from vars in error.
723	(cp_parser_late_parsing_default_args): Pushdecl parms
724	as we go.
725
7262020-12-03  Jason Merrill  <jason@redhat.com>
727
728	* name-lookup.c (begin_scope): Set immediate_fn_ctx_p.
729	* parser.c (cp_parser_late_parsing_default_args): Push
730	sk_function_parms scope.
731
7322020-12-03  Peter Bergner  <bergner@linux.ibm.com>
733
734	PR c++/97947
735	* typeck2.c (digest_init_r): Handle OPAQUE_TYPE as an aggregate type.
736
7372020-12-02  Jakub Jelinek  <jakub@redhat.com>
738
739	PR c++/80780
740	PR c++/93093
741	* cp-tree.h (source_location_current_p): Declare.
742	* tree.c (source_location_current_p): New function.
743	* call.c (immediate_invocation_p): New function.
744	(build_over_call): Use it to resolve LWG3396.
745	* constexpr.c (cxx_eval_builtin_function_call): Temporarily set
746	current_function_decl from ctx->call->fundef->decl if any.
747	* cp-gimplify.c (cp_genericize_r) <case CALL_EXPR>: Fold calls
748	to immediate function std::source_location::current ().
749
7502020-12-02  Jason Merrill  <jason@redhat.com>
751
752	* decl.c (grokdeclarator): Improve diagnostic for
753	disallowed CTAD placeholder.
754
7552020-12-02  Jason Merrill  <jason@redhat.com>
756
757	* decl.c (check_initializer): Also look through STMT_EXPR
758	and BIND_EXPR.
759
7602020-12-02  Nathan Sidwell  <nathan@acm.org>
761
762	* cp-tree.h (comparing_typenames): Declare.
763	* pt.c (comparing_typenames): Define.
764	(spec_hasher::equal): Increment it around comparisons.
765	* typeck.c (structural_comptypes): Adjust TYPENAME resolution
766	check.
767
7682020-12-02  Marek Polacek  <polacek@redhat.com>
769
770	PR c++/97975
771	* constexpr.c (fold_non_dependent_init): Add a tree parameter.
772	Use it.
773	* cp-tree.h (fold_non_dependent_init): Add a tree parameter with
774	a default value.
775	* typeck2.c (store_init_value): Call fold_non_dependent_expr
776	only when checking the initializer for constexpr variables.
777	Call fold_non_dependent_init instead of maybe_constant_init.
778
7792020-12-02  Marek Polacek  <polacek@redhat.com>
780
781	PR c++/97187
782	PR c++/97993
783	* pt.c (tsubst_copy_and_build) <case NEW_EXPR>: Return error_mark_node
784	if init is erroneous.
785
7862020-12-02  Nathan Sidwell  <nathan@acm.org>
787
788	* cp-tree.h (DECL_MODULE_PURVIEW_P, DECL_MODULE_IMPORT_P)
789	(DECL_MODULE_ENTITY_P): New.
790	(DECL_MODULE_PENDING_SPECIALIZATIONS_P): New.
791	(DECL_MODULE_PENDING_MEMBERS_P): New.
792	(DECL_MODULE_ATTACHMENTS_P): New.
793	(DECL_MODULE_EXPORT_P): New.
794	(struct lang_decl_base): Shrink sel field.  Add new
795	module-specific fields.
796
7972020-12-02  Nathan Sidwell  <nathan@acm.org>
798
799	* cp-tree.h (DECL_TINFO_P): Also for TYPE_DECLs.
800	(get_tinfo_decl_direct): Declare.
801	(get_pseudo_tinfo_index, get_pseudo_tinfo_type): Declare.
802	* rtti.c (get_tinfo_decl_direct): Externalize.
803	(get_tinfo_desc): Set DECL_TINFO_P on the typedef.
804	(get_pseudo_tinfo_index, get_pseudo_tinfo_type): New.
805
8062020-12-02  Nathan Sidwell  <nathan@acm.org>
807
808	* cp-tree.h (maybe_add_lang_decl_raw, maybe_add_lang_type_raw):
809	Declare.
810	* lex.c (maybe_add_lang_decl_raw, maybe_add_lang_type_raw):
811	Externalize, reformat.
812
8132020-12-02  Nathan Sidwell  <nathan@acm.org>
814
815	* cp-tree.h (build_cplus_array_type): Add defaulted DEP parm.
816	* tree.c (set_array_type_common): Add DEP parm.
817	(build_cplus_array_type): Add DEP parm, determine dependency if
818	needed.
819	(cp_build_qualified_type_real): Adjust array-building call.
820	(strip_typedefs): Likewise.
821
8222020-12-02  Nathan Sidwell  <nathan@acm.org>
823
824	* ptree.c (cxx_print_xnode): Increase binding-vector prefix size.
825
8262020-12-02  Nathan Sidwell  <nathan@acm.org>
827
828	* cp-tree.def (BINDING_VECTOR): New.
829	* name-lookup.h (struct binding_slot): New.
830	(BINDING_VECTOR_SLOTS_PER_CLUSTER): New.
831	(struct binding_index, struct binding_cluster): New.
832	(BINDING_VECTOR_ALLOC_CLUSTERS, BINDING_VECTOR_CLUSTER_BASE)
833	(BINDING_VECTOR_CLUSTER): New.
834	(struct tree_binding_vec): New.
835	(BINDING_VECTOR_NAME, BINDING_VECTOR_GLOBAL_DUPS_P)
836	(BINDING_VECTOR_PARTITION_DUPS_P): New.
837	(BINDING_BINDING_GLOBAL_P, BINDING_BINDING_PARTITION_P): New.
838	(BINDING_VECTOR_PENDING_SPECIALIZATIONS)
839	(BINDING_VECTOR_PENDING_IS_HEADER_P)
840	(BINDING_VECTOR_PENDING_IS_PARTITION_P): New.
841	* cp-tree.h (enum cp_tree_node_structure_enum): Add
842	TS_CP_BINDING_VECTOR.
843	(union lang_tree_node): Add binding_vec field.
844	(make_binding_vec): Declare.
845	(named_decl_hash::hash, named_decl_hash::equal): Check for binding
846	vector.
847	* decl.c (cp_tree_node_structure): Add BINDING_VECTOR case.
848	* ptree.c (cxx_print_xnode): Add BINDING_VECTOR case.
849	* tree.c (make_binding_vec): New.
850
8512020-12-01  Ville Voutilainen  <ville.voutilainen@gmail.com>
852
853	PR c++/98054
854	* cxx-pretty-print.c (pp_cxx_trait_expression):
855	Add support for __is_nothrow_{assignable,constructible}.
856
8572020-12-01  Jakub Jelinek  <jakub@redhat.com>
858
859	PR c++/98072
860	* parser.c (cp_parser_omp_depobj): Suppress location wrappers when
861	parsing depend clause.
862
8632020-12-01  Nathan Sidwell  <nathan@acm.org>
864
865	* lex.c (init_reswords): Maybe enable module keywords.
866
8672020-12-01  Nathan Sidwell  <nathan@acm.org>
868
869	* lang-specs.h: Add module-related options.
870
8712020-12-01  Iain Sandoe  <iain@sandoe.co.uk>
872
873	* parser.c (cp_parser_declaration): Add a not about where
874	attributes may be placed.
875
8762020-11-27  Martin Sebor  <msebor@redhat.com>
877
878	* error.c (add_quotes): Revert previous change and use pragma to
879	suppress -Wformat-diag.
880
8812020-11-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
882
883	* g++spec.c (TIMELIB, TIME_LIBRARY): Remove.
884	(lang_specific_driver): Remove TIME_LIBRARY handling.
885
8862020-11-26  Thomas Schwinge  <thomas@codesourcery.com>
887
888	* parser.c (cp_parser_omp_var_list_no_open): Assert that array
889	section's 'low_bound', 'length' are not location wrapper nodes.
890	(cp_parser_oacc_all_clauses, cp_parser_oacc_cache): Instantiate
891	'auto_suppress_location_wrappers'.
892
8932020-11-25  Martin Sebor  <msebor@redhat.com>
894
895	PR bootstrap/94982
896	* constraint.cc (debug_argument_list): Avoid -Wformat-diag.
897	* error.c (function_category): Same.
898	(print_template_differences): Same.
899	* logic.cc (debug): Same.
900	* name-lookup.c (lookup_using_decl): Same.
901	* parser.c (maybe_add_cast_fixit): Same.
902	(cp_parser_template_introduction): Same.
903	* typeck.c (access_failure_info::add_fixit_hint): Same.
904
9052020-11-25  Thomas Schwinge  <thomas@codesourcery.com>
906
907	* pt.c (tsubst_omp_clauses): Handle 'OMP_CLAUSE__CACHE_'.
908	(tsubst_expr): Handle 'OACC_CACHE'.
909
9102020-11-24  Jason Merrill  <jason@redhat.com>
911
912	PR c++/97899
913	* typeck2.c (store_init_value): Don't split_nonconstant_init in a
914	template.
915
9162020-11-24  Jakub Jelinek  <jakub@redhat.com>
917
918	PR tree-optimization/96929
919	* constexpr.c (cxx_eval_binary_expression): For shifts by constant
920	with MSB set, emulate older wide_int_binop behavior to preserve
921	diagnostics and -fpermissive behavior.
922
9232020-11-23  Nathan Sidwell  <nathan@acm.org>
924
925	* module.cc: New dummy file.
926	* Make-lang.in: Add rules to build module.o
927
9282020-11-23  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
929
930	* decl.c (start_decl): Set DECL_INITIAL for initialized decls
931	before attribute processing.
932
9332020-11-23  Richard Sandiford  <richard.sandiford@arm.com>
934
935	PR c++/97904
936	* pt.c (tsubst): Use verify_type_context to check the type
937	of an array element.
938
9392020-11-21  Marek Polacek  <polacek@redhat.com>
940
941	PR c++/94695
942	* parser.c (warn_for_range_copy): Warn when the loop variable is
943	initialized with a value of a different type resulting in a copy.
944
9452020-11-21  Marek Polacek  <polacek@redhat.com>
946
947	PR c++/97846
948	* constexpr.c (potential_constant_expression_1): Reject
949	LABEL_EXPRs that use non-artifical LABEL_DECLs.
950
9512020-11-21  Marek Polacek  <polacek@redhat.com>
952
953	PR c++/97881
954	* parser.c (warn_about_ambiguous_parse): Only assume "int" if we
955	actually saw any type-specifiers.
956
9572020-11-21  Marek Polacek  <polacek@redhat.com>
958
959	PR c++/97839
960	* parser.c (cp_parser_lambda_declarator_opt): Don't require ().
961
9622020-11-21  Marek Polacek  <polacek@redhat.com>
963
964	PR c++/97427
965	* constexpr.c (cxx_set_object_constness): New function.
966	(cxx_eval_call_expression): Set new_obj for destructors too.
967	Call cxx_set_object_constness to set/unset TREE_READONLY of
968	the object under construction/destruction.
969
9702020-11-21  Aaron Sawdey  <acsawdey@linux.ibm.com>
971
972	* error.c (dump_type): Handle opaque types.
973	(dump_type_prefix): Handle opaque types.
974	(dump_type_suffix): Handle opaque types.
975	(dump_expr): Handle opaque types.
976	* pt.c (tsubst): Allow opaque types in templates.
977	(unify): Allow opaque types in templates.
978	* typeck.c (structural_comptypes): Handle comparison
979	of opaque types.
980
9812020-11-20  Jakub Jelinek  <jakub@redhat.com>
982
983	PR other/97911
984	* Make-lang.in (c++.serial): Change from goal to a variable.
985	(.PHONY): Drop c++.serial and c++.prev.
986	(cc1plus$(exeext)): Depend on $(c++.serial) rather than c++.serial.
987
9882020-11-19  Nathan Sidwell  <nathan@acm.org>
989
990	* cp-tree.h (struct spec_entry): Moved from pt.c.
991	(walk_specializations, match_mergeable_specialization)
992	(get_mergeable_specialization_flags)
993	(add_mergeable_specialization): Declare.
994	* pt.c (struct spec_entry): Moved to cp-tree.h.
995	(walk_specializations, match_mergeable_specialization)
996	(get_mergeable_specialization_flags)
997	(add_mergeable_specialization): New.
998
9992020-11-19  Nathan Sidwell  <nathan@acm.org>
1000
1001	* cp-tree.h (struct constexpr_fundef): Moved from constexpr.c.
1002	(maybe_save_constexpr_fundef): Declare.
1003	(register_constexpr_fundef): Take constexpr_fundef object, return
1004	void.
1005	* decl.c (mabe_save_function_definition): Delete, functionality
1006	moved to maybe_save_constexpr_fundef.
1007	(emit_coro_helper, finish_function): Adjust.
1008	* constexpr.c (struct constexpr_fundef): Moved to cp-tree.h.
1009	(constexpr_fundef_hasher::equal): Constify.
1010	(constexpr_fundef_hasher::hash): Constify.
1011	(retrieve_constexpr_fundef): Make non-static.
1012	(maybe_save_constexpr_fundef): Break out checking and duplication
1013	from ...
1014	(register_constexpr_fundef): ... here.  Just register the constexpr.
1015
10162020-11-19  Marek Polacek  <polacek@redhat.com>
1017
1018	PR c++/97523
1019	* init.c (build_new): When value-initializing an array new,
1020	leave the INIT as an empty vector.
1021
10222020-11-19  Marek Polacek  <polacek@redhat.com>
1023
1024	PR c++/97895
1025	* pt.c (do_auto_deduction): Don't crash when the constructor has
1026	zero elements.
1027
10282020-11-19  Nathan Sidwell  <nathan@acm.org>
1029
1030	PR c++/97905
1031	* decl.c (duplicate_decls): Relax new assert.
1032
10332020-11-18  Iain Sandoe  <iain@sandoe.co.uk>
1034
1035	* parser.c (cp_parser_objc_valid_prefix_attributes): Check
1036	for empty attributes.
1037
10382020-11-18  Jakub Jelinek  <jakub@redhat.com>
1039
1040	* Make-lang.in (c++.serial): New goal.
1041	(.PHONY): Add c++.serial c++.prev.
1042	(cc1plus$(exeext)): Depend on c++.prev.  Call LINK_PROGRESS.
1043
10442020-11-17  Nathan Sidwell  <nathan@acm.org>
1045
1046	PR c++/97877
1047	* decl.c (duplicate_decls): Deal with duplicated DECL_LOCAL_DECL_P
1048	decls.  Extend decl_lang_specific checking assert.
1049
10502020-11-17  Nathan Sidwell  <nathan@acm.org>
1051
1052	* cp-tree.h (enum cp_tree_index): Reorder to place lazy fields
1053	after newly-added CPTI_MODULE_HWM.
1054
10552020-11-17  Iain Sandoe  <iain@sandoe.co.uk>
1056
1057	PR c++/97871
1058	* parser.c (cp_parser_declaration): Remove checking assert.
1059
10602020-11-15  Jason Merrill  <jason@redhat.com>
1061
1062	* decl.c (cp_finish_decl): Only check abstractness on definition.
1063	(require_complete_types_for_parms): Check abstractness here.
1064	(create_array_type_for_decl): Not here.
1065	(grokdeclarator, grokparms, complete_vars): Not here.
1066	* pt.c (tsubst, tsubst_arg_types, tsubst_function_type): Not here.
1067	* typeck2.c (struct pending_abstract_type): Remove.
1068	(struct abstract_type_hasher): Remove.
1069	(abstract_pending_vars, complete_type_check_abstract): Remove.
1070	(abstract_virtuals_error_sfinae): Handle arrays.
1071	* call.c (conv_is_prvalue): Split out from...
1072	(conv_binds_ref_to_prvalue): ...here.
1073	(implicit_conversion_1): Rename from implicit_conversion.
1074	(implicit_conversion): An abstract prvalue is bad.
1075	(convert_like_internal): Don't complain if expr is already
1076	error_mark_node.
1077
10782020-11-13  Jason Merrill  <jason@redhat.com>
1079
1080	* cp-tree.h (USING_DECL_UNRELATED_P): New.
1081	(CONST_DECL_USING_P): New.
1082	* class.c (handle_using_decl): If USING_DECL_UNRELATED_P,
1083	clone the CONST_DECL.
1084	* name-lookup.c (supplement_binding_1): A clone hides its
1085	using-declaration.
1086	(lookup_using_decl): Rewrite to separate lookup and validation.
1087	(do_class_using_decl): Adjust.
1088	(finish_nonmember_using_decl): Adjust.
1089	* parser.c (make_location): Add cp_token overload.
1090	(finish_using_decl): Split out from...
1091	(cp_parser_using_declaration): ...here.  Don't look through enums.
1092	(cp_parser_using_enum): New.
1093	(cp_parser_block_declaration): Call it.
1094	(cp_parser_member_declaration): Call it.
1095	* semantics.c (finish_id_expression_1): Handle enumerator
1096	used from class scope.
1097
10982020-11-13  Vladimir N. Makarov  <vmakarov@redhat.com>
1099
1100	* parser.c (cp_parser_asm_definition): Parse outputs for asm
1101	goto too.
1102
11032020-11-13  Iain Sandoe  <iain@sandoe.co.uk>
1104
1105	PR objc/77404
1106	* parser.c (cp_parser_objc_class_interface): Pass the
1107	location of the class name to the interface declaration.
1108
11092020-11-13  Patrick Palka  <ppalka@redhat.com>
1110
1111	* semantics.c (finish_compound_literal): Don't wrap the original
1112	compound literal in a TARGET_EXPR when inside a template.
1113
11142020-11-12  Jakub Jelinek  <jakub@redhat.com>
1115
1116	PR c++/97790
1117	* constexpr.c (cxx_eval_constant_expression) <case CLEANUP_POINT_EXPR,
1118	case TRY_FINALLY_EXPR, case CLEANUP_STMT>: Don't pass jump_target to
1119	cxx_eval_constant_expression when evaluating the cleanups.
1120
11212020-11-11  Iain Sandoe  <iain@sandoe.co.uk>
1122
1123	* parser.c (cp_parser_declaration): Unless we are compiling for
1124	Ojective-C++, warn about and discard any attributes that prefix
1125	a linkage specification.
1126
11272020-11-11  Patrick Palka  <ppalka@redhat.com>
1128
1129	PR c++/88115
1130	* mangle.c (write_expression): Mangle __alignof_ differently
1131	from alignof when the ABI version is at least 15.
1132
11332020-11-11  Patrick Palka  <ppalka@redhat.com>
1134
1135	PR c++/88115
1136	* cp-tree.h (cxx_sizeof_or_alignof_expr): Add bool parameter.
1137	* decl.c (fold_sizeof_expr): Pass false to
1138	cxx_sizeof_or_alignof_expr.
1139	* parser.c (cp_parser_unary_expression): Pass std_alignof to
1140	cxx_sizeof_or_alignof_expr.
1141	* pt.c (tsubst_copy): Pass false to cxx_sizeof_or_alignof_expr.
1142	(tsubst_copy_and_build): Pass std_alignof to
1143	cxx_sizeof_or_alignof_expr.
1144	* typeck.c (cxx_alignof_expr): Add std_alignof bool parameter
1145	and pass it to cxx_sizeof_or_alignof_type.  Set ALIGNOF_EXPR_STD_P
1146	appropriately.
1147	(cxx_sizeof_or_alignof_expr): Add std_alignof bool parameter
1148	and pass it to cxx_alignof_expr.  Assert op is either
1149	SIZEOF_EXPR or ALIGNOF_EXPR.
1150
11512020-11-11  Marek Polacek  <polacek@redhat.com>
1152
1153	PR c++/97518
1154	* pt.c (tsubst_qualified_id): Use EXPR_LOCATION of the qualified-id.
1155	Use it to maybe_wrap_with_location the final expression.
1156
11572020-11-10  Marek Polacek  <polacek@redhat.com>
1158
1159	PR c++/97518
1160	* cp-tree.h (finish_static_assert): Adjust declaration.
1161	* parser.c (cp_parser_static_assert): Pass false to
1162	finish_static_assert.
1163	* pt.c (tsubst_expr): Pass true to finish_static_assert.
1164	* semantics.c (find_failing_clause_r): New function.
1165	(find_failing_clause): New function.
1166	(finish_static_assert): Add a bool parameter.  Use
1167	iloc_sentinel.  Call contextual_conv_bool instead of
1168	perform_implicit_conversion_flags.  Don't check for INTEGER_CST before
1169	calling integer_zerop.  Call find_failing_clause and maybe use its
1170	location.  Print the original condition or the failing clause if
1171	SHOW_EXPR_P.
1172
11732020-11-10  Strager Neds  <strager.nds@gmail.com>
1174
1175	* decl.c (duplicate_decls): Use new overload of
1176	set_decl_section_name.
1177	* method.c (use_thunk): Same.
1178	* optimize.c (maybe_clone_body): Same.
1179	* coroutines.cc (act_des_fn): Same.
1180
11812020-11-10  Jakub Jelinek  <jakub@redhat.com>
1182
1183	PR c/97748
1184	* cvt.c (convert_to_void): Check (complain & tf_warning) in the outer
1185	if rather than twice times in the inner one.  Use warn_if_unused_value.
1186	Formatting fix.
1187
11882020-11-10  Chung-Lin Tang  <cltang@codesourcery.com>
1189
1190	* parser.c (cp_parser_omp_target_data): Add use of
1191	new c_omp_adjust_map_clauses function. Add GOMP_MAP_ATTACH_DETACH as
1192	handled map clause kind.
1193	(cp_parser_omp_target_enter_data): Likewise.
1194	(cp_parser_omp_target_exit_data): Likewise.
1195	(cp_parser_omp_target): Likewise.
1196	* semantics.c (handle_omp_array_sections): Adjust COMPONENT_REF case to
1197	use GOMP_MAP_ATTACH_DETACH map kind for C_ORT_OMP region type. Fix
1198	interaction between reference case and attach/detach.
1199	(finish_omp_clauses): Adjust bitmap checks to allow struct decl and
1200	same struct field access to co-exist on OpenMP construct.
1201
12022020-11-09  Marek Polacek  <polacek@redhat.com>
1203
1204	DR 1914
1205	* parser.c (cp_parser_check_std_attribute): Return bool.  Add a
1206	location_t parameter.  Return true if the attribute wasn't duplicated.
1207	Give a warning instead of an error.  Check more attributes.
1208	(cp_parser_std_attribute_list): Don't add duplicated attributes to
1209	the list.  Pass location to cp_parser_check_std_attribute.
1210
12112020-11-09  Patrick Palka  <ppalka@redhat.com>
1212
1213	* constraint.cc (norm_info::norm_info): Initialize orig_decl.
1214	(norm_info::orig_decl): New data member.
1215	(normalize_atom): When caching an atom for the first time,
1216	compute a list of template parameters used in the targets of the
1217	parameter mapping and store it in the TREE_TYPE of the mapping.
1218	(get_normalized_constraints_from_decl): Set current_function_decl
1219	appropriately when normalizing.  As an optimization, don't
1220	set up a push_nested_class_guard when decl has no constraints.
1221	(sat_hasher::hash): Use this list to hash only the template
1222	arguments that are relevant to the atom.
1223	(satisfy_atom): Use this list to compare only the template
1224	arguments that are relevant to the atom.
1225	* pt.c (keep_template_parm): Do a sanity check on the parameter's
1226	index when flag_checking.
1227
12282020-11-09  Patrick Palka  <ppalka@redhat.com>
1229
1230	* cp-tree.h (ATOMIC_CONSTR_MAP_INSTANTIATED_P): Define this flag
1231	for ATOMIC_CONSTRs.
1232	* constraint.cc (sat_hasher::hash): Use hash_atomic_constraint
1233	if the flag is set, otherwise keep using a pointer hash.
1234	(sat_hasher::equal): Return false if the flag's setting differs
1235	on two atoms.  Call atomic_constraints_identical_p if the flag
1236	is set, otherwise keep using a pointer equality test.
1237	(satisfy_atom): After instantiating the parameter mapping, form
1238	another ATOMIC_CONSTR using the instantiated mapping and query
1239	the cache again.  Cache the satisfaction value of both atoms.
1240	(diagnose_atomic_constraint): Simplify now that the supplied
1241	atom has an instantiated mapping.
1242
12432020-11-09  Patrick Palka  <ppalka@redhat.com>
1244
1245	* constraint.cc (atom_cache): Define this deletable hash_table.
1246	(normalize_atom): Use it to cache ATOMIC_CONSTRs when not
1247	generating diagnostics.
1248	(sat_hasher::hash): Use htab_hash_pointer instead of
1249	hash_atomic_constraint.
1250	(sat_hasher::equal): Test for pointer equality instead of
1251	atomic_constraints_identical_p.
1252	* cp-tree.h (struct atom_hasher): Moved and renamed from ...
1253	* logic.cc (struct constraint_hash): ... here.
1254	(clause::m_set): Adjust accordingly.
1255
12562020-11-09  Patrick Palka  <ppalka@redhat.com>
1257
1258	PR c++/93907
1259	* constraint.cc (tsubst_parameter_mapping): Also canonicalize
1260	the type arguments of a TYPE_ARGUMENT_PACk.
1261
12622020-11-09  Jason Merrill  <jason@redhat.com>
1263
1264	* pt.c (tsubst): Replace *_ARGUMENT_PACK code with
1265	a call to tsubst_argument_pack.
1266
12672020-11-09  Jason Merrill  <jason@redhat.com>
1268
1269	* class.c (handle_using_decl): Add an iloc_sentinel.
1270
12712020-11-09  Marek Polacek  <polacek@redhat.com>
1272
1273	PR c++/97762
1274	* parser.c (warn_about_ambiguous_parse): Handle the case when
1275	there is no type in the decl-specifiers.
1276
12772020-11-09  Nathan Sidwell  <nathan@acm.org>
1278
1279	* cp-tree.h (LOOKUP_FOUND_P): Add ENUMERAL_TYPE.
1280	* name-lookup.c (class name_lookup): Add comments.
1281	(name_lookup::adl_namespace_only): Replace with ...
1282	(name_lookup::adl_class_fns): ... this and ...
1283	(name_lookup::adl_namespace_fns): ... this.
1284	(name_lookup::adl_namespace): Deal with inline nests here.
1285	(name_lookup::adl_class): Complete the type here.
1286	(name_lookup::adl_type): Call broken-out enum ..
1287	(name_lookup::adl_enum): New.  No need to call the namespace adl
1288	if it is class-scope.
1289	(name_lookup::search_adl): Iterate over collected scopes here.
1290
12912020-11-09  Nathan Sidwell  <nathan@acm.org>
1292
1293	* name-lookup.c (lookup_qualified_name): Expose an overload of a
1294	singleton with known type.
1295	(lookup_name_1): Just check the overload's type to expose it.
1296	* parser.c (cp_parser_lookup_name): Do not do that check here.
1297
12982020-11-08  Iain Sandoe  <iain@sandoe.co.uk>
1299
1300	* parser.c (cp_parser_objc_at_property_declaration): Handle
1301	class keywords in @property attribute context.
1302
13032020-11-06  Marek Polacek  <polacek@redhat.com>
1304
1305	PR c++/81660
1306	* except.c (can_convert_eh): Change the return type to bool.  If
1307	the type TO and FROM are the same, return true.
1308
13092020-11-06  Iain Sandoe  <iain@sandoe.co.uk>
1310
1311	* parser.c (cp_parser_objc_at_property_declaration):
1312	Improve parsing fidelity. Associate better location info
1313	with @property attributes.  Clean up the interface to
1314	objc_add_property_declaration ().
1315
13162020-11-06  Jakub Jelinek  <jakub@redhat.com>
1317
1318	PR c++/67453
1319	* decl.c (duplicate_decls): Propagate DECL_ATTRIBUTES and
1320	DECL_PRESERVE_P from olddecl to its clones if any.
1321
13222020-11-06  Nathan Sidwell  <nathan@acm.org>
1323
1324	* cp-tree.h (DECL_UNDECLARED_BUILTIN_P): Delete.
1325	* cp-objcp-common.c (names_bultin_p): Rename
1326	DECL_IS_BUILTIN->DECL_IS_UNDECLARED_BUILTIN.
1327	* decl.c (decls_match): Likewise.  Replace
1328	DECL_UNDECLARED_BUILTIN_P with DECL_IS_UNDECLARED_BUILTIN.
1329	(duplicate_decls): Likewise.
1330	* decl2.c (collect_source_refs): Likewise.
1331	* name-lookup.c (anticipated_builtin_p, print_binding_level)
1332	(do_nonmember_using_decl): Likewise.
1333	* pt.c (builtin_pack_fn_p): Likewise.
1334	* typeck.c (error_args_num): Likewise.
1335
13362020-11-06  Nathan Sidwell  <nathan@acm.org>
1337
1338	* parser.c (cp_parser_template_declaration): Adjust 'export' warning.
1339	(cp_parser_explicit_specialization): Remove unneeded bool setting.
1340
13412020-11-06  Jan Hubicka  <jh@suse.cz>
1342
1343	* tree.c (cp_fix_function_decl_p): Do not access ipa_ref_list dirrectly.
1344
13452020-11-06  Tobias Burnus  <tobias@codesourcery.com>
1346
1347	* parser.c (cp_parser_omp_atomic): Add openacc parameter and update
1348	OpenACC matching.
1349	(cp_parser_omp_construct): Update call.
1350
13512020-11-05  Marek Polacek  <polacek@redhat.com>
1352
1353	* except.c (check_handlers_1): Add auto_diagnostic_group.
1354
13552020-11-05  Marek Polacek  <polacek@redhat.com>
1356
1357	PR c++/78209
1358	* pt.c (do_auto_deduction): If init is REFERENCE_REF_P, use its
1359	first operand.
1360
13612020-11-05  Marek Polacek  <polacek@redhat.com>
1362
1363	PR c++/97675
1364	* except.c (check_handlers_1): Use OPT_Wexceptions for the
1365	warning.  Use inform for the second part of the warning.
1366
13672020-11-05  Marek Polacek  <polacek@redhat.com>
1368
1369	PR c++/25814
1370	* cp-tree.h (enum cp_tree_index): Add CPTI_EXPLICIT_VOID_LIST.
1371	(explicit_void_list_node): Define.
1372	(PARENTHESIZED_LIST_P): New macro.
1373	(struct cp_declarator): Add function::parens_loc.
1374	* decl.c (cxx_init_decl_processing): Initialize explicit_void_list_node.
1375	(grokparms): Also break when explicit_void_list_node.
1376	* parser.c (make_call_declarator): New location_t parameter.  Use it
1377	to set declarator->u.function.parens_loc.
1378	(cp_parser_lambda_declarator_opt): Pass UNKNOWN_LOCATION to
1379	make_call_declarator.
1380	(warn_about_ambiguous_parse): New function.
1381	(cp_parser_init_declarator): Call warn_about_ambiguous_parse.
1382	(cp_parser_declarator): Set *parenthesized_p to false rather than to
1383	true.
1384	(cp_parser_direct_declarator): Create a location for the function's
1385	parentheses and pass it to make_call_declarator.
1386	(cp_parser_parameter_declaration_clause): Return explicit_void_list_node
1387	for (void).
1388	(cp_parser_parameter_declaration_list): Set PARENTHESIZED_LIST_P
1389	in the parameters tree.
1390
13912020-11-04  Jakub Jelinek  <jakub@redhat.com>
1392
1393	PR c++/97670
1394	* semantics.c (finish_omp_clauses): Look through array reductions to
1395	find underlying decl to clear in the aligned_head bitmap.  Use
1396	DECL_UID (t) instead of DECL_UID (OMP_CLAUSE_DECL (c)) when clearing
1397	in the bitmap.  Only diagnose errors about allocate vars not being
1398	privatized on the same construct on allocate clause if it has
1399	a DECL_P OMP_CLAUSE_DECL.
1400
14012020-11-04  Iain Sandoe  <iain@sandoe.co.uk>
1402
1403	* constexpr.c (potential_constant_expression_1): Handle
1404	expressions known to be non-constant for Objective-C.
1405
14062020-11-03  Jason Merrill  <jason@redhat.com>
1407
1408	* tree.c (is_byte_access_type): Don't use char_type_p.
1409
14102020-11-03  Jakub Jelinek  <jakub@redhat.com>
1411
1412	PR c++/97663
1413	* parser.c (cp_parser_init_declarator): Don't try to parse
1414	C++17 deduction guides if there are any type specifiers even when
1415	type is NULL.
1416
14172020-11-03  Kamlesh Kumar  <kamleshbhalui@gmail.com>
1418	    Jason Merrill  <jason@redhat.com>
1419
1420	PR c++/97453
1421	DR2303
1422	* pt.c (get_template_base): Consider closest base in template
1423	deduction when base of base also matches.
1424
14252020-11-03  Nathan Sidwell  <nathan@acm.org>
1426
1427	* pt.c (tsubst_expr): Simplify using decl instantiation, add
1428	asserts.
1429
14302020-11-03  Nathan Sidwell  <nathan@acm.org>
1431
1432	* class.c (copy_fndecl_with_name):  Always not top level.
1433	(build_cdtor_clones): Add update_methods parm, use it to
1434	conditionally update the method vec.  Return void
1435	(clone_cdtor): Adjust.
1436	(clone_constructors_and_destructors): Adjust comment.
1437
14382020-11-03  Nathan Sidwell  <nathan@acm.org>
1439
1440	* pt.c (primary_template_specialization_p): Use
1441	VAR_OR_FUNCTION_DECL_P.
1442	(tsubst_template_decl): Check for FUNCTION_DECL, not !TYPE && !VAR
1443	for registering a specialization.
1444
14452020-11-03  Nathan Sidwell  <nathan@acm.org>
1446
1447	* cp-tree.h (fixup_deferred_exception_variants): Declare.
1448	* parser.c (cp_parser_class_specifier_1): Call it when
1449	completing deferred parses rather than creating a variant.
1450	(cp_parser_member_declaration): Move comment from ...
1451	(cp_parser_noexcept_specification_opt): ... here.  Refactor the
1452	deferred parse.
1453	* tree.c (fixup_deferred_exception_variants): New.
1454
14552020-11-03  Nathan Sidwell  <nathan@acm.org>
1456
1457	* pt.c (tsubst_lambda_expr): Reorder extra-scope handling to match
1458	the non-template case.
1459	(instantiate_body): Move a couple of declarations to their
1460	initializers.
1461
14622020-11-03  Nathan Sidwell  <nathan@acm.org>
1463
1464	* decl.c (duplicate_decls): Return error_mark_node fo extern-c
1465	mismatch.
1466
14672020-11-03  Marek Polacek  <polacek@redhat.com>
1468
1469	* constexpr.c (potential_constant_expression_1): Treat
1470	__PRETTY_FUNCTION__ inside a template function as
1471	potentially-constant.
1472	* pt.c (uses_template_parms): Call
1473	instantiation_dependent_expression_p instead of
1474	value_dependent_expression_p.
1475	(instantiation_dependent_expression_p): Check
1476	potential_constant_expression before calling
1477	value_dependent_expression_p.
1478
14792020-11-03  Marek Polacek  <polacek@redhat.com>
1480
1481	PR c++/97632
1482	* init.c (build_new_1): Disable -Winit-list-lifetime for an unevaluated
1483	operand.
1484
14852020-11-03  Nathan Sidwell  <nathan@acm.org>
1486
1487	* tree.c (bind_template_template_parm): Mark the parm as a
1488	template parm.
1489	(cp_tree_equal): Refactor CALL_EXPR.  Use comp_template_args for
1490	TREE_VECs.
1491
14922020-11-03  Nathan Sidwell  <nathan@acm.org>
1493
1494	* rtti.c (init_rtti_processing): Move var decl to its init.
1495	(get_tinfo_decl): Likewise.  Break out creation to called helper
1496	...
1497	(get_tinfo_decl_direct): ... here.
1498	(build_dynamic_cast_1): Move var decls to their initializers.
1499	(tinfo_base_init): Set decl's location to BUILTINS_LOCATION.
1500	(get_tinfo_desc): Only push ABI namespace when needed.  Set type's
1501	context.
1502
15032020-11-02  Nathan Sidwell  <nathan@acm.org>
1504
1505	* decl.c (start_decl_1): Refactor declarations.  Fixup some
1506	whitespace.
1507	(lookup_and_check_tag): Fixup some whitespace.
1508
15092020-11-02  Nathan Sidwell  <nathan@acm.org>
1510
1511	* decl.c (duplicate_decls): Refactor some template & builtin
1512	handling.
1513
15142020-11-02  Nathan Sidwell  <nathan@acm.org>
1515
1516	* cp-tree.h (struct cxx_int_tree_map): Delete.
1517	(struct cxx_int_tree_map_hasher): Delete.
1518	* cp-gimplify.c (cxx_int_tree_map_hasher::equal): Delete.
1519	(cxx_int_tree_map_hasher::hash): Delete.
1520
15212020-11-02  Patrick Palka  <ppalka@redhat.com>
1522
1523	* class.c (finish_struct_1): Don't call clear_satisfaction_cache.
1524	* constexpr.c (clear_cv_and_fold_caches): Likewise.  Remove bool
1525	parameter.
1526	* constraint.cc (clear_satisfaction_cache): Remove definition.
1527	* cp-tree.h (clear_satisfaction_cache): Remove declaration.
1528	(clear_cv_and_fold_caches): Remove bool parameter.
1529	* typeck2.c (store_init_value): Remove argument to
1530	clear_cv_and_fold_caches.
1531
15322020-11-01  Iain Sandoe  <iain@sandoe.co.uk>
1533
1534	* parser.c (cp_parser_objc_at_property_declaration): Use any
1535	exisiting syntax error to suppress complaints about a missing
1536	closing parenthesis in parsing property attributes.
1537
15382020-10-30  Jakub Jelinek  <jakub@redhat.com>
1539
1540	* semantics.c (finish_omp_clauses) <case OMP_CLAUSE_ALLOCATE>: Handle
1541	non-static members in methods.
1542	* pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_ALLOCATE.
1543
15442020-10-29  Marek Polacek  <polacek@redhat.com>
1545
1546	DR 625
1547	PR c++/97479
1548	* parser.c (cp_parser_type_id_1): Reject using auto as
1549	a template-argument in C++20.
1550
15512020-10-29  Marek Polacek  <polacek@redhat.com>
1552
1553	PR c++/93107
1554	* pt.c (do_auto_deduction): Call resolve_nondeduced_context for
1555	the elements of a { } list.
1556
15572020-10-29  Marek Polacek  <polacek@redhat.com>
1558
1559	* typeck.c (do_warn_enum_conversions): Don't warn for SPACESHIP_EXPR.
1560	(cp_build_binary_op): Reject float <=> enum or enum <=> float.  Use
1561	CP_INTEGRAL_TYPE_P instead of INTEGRAL_OR_ENUMERATION_TYPE_P.
1562
15632020-10-29  Patrick Palka  <ppalka@redhat.com>
1564
1565	* constraint.cc (get_normalized_constraints): Remove 'args'
1566	parameter.  Pass NULL_TREE as the initial template arguments to
1567	normalize_expression.
1568	(get_normalized_constraints_from_info): Remove 'args' parameter
1569	and adjust the call to get_normalized_constraints.
1570	(get_normalized_constraints_from_decl): Remove 'args' local
1571	variable and adjust call to get_normalized_constraints_from_info.
1572	(normalize_concept_definition): Remove 'args' local variable
1573	and adjust call to get_normalized_constraints.
1574	(normalize_constraint_expression): Remove the two-parameter
1575	overload.  Remove 'args' parameter from the three-parameter
1576	overload and update function comment accordingly.  Remove
1577	default argument from 'diag' parameter.  Adjust call to
1578	get_normalized_constraints.
1579	(finish_nested_requirement): Adjust call to
1580	normalize_constraint_expression.
1581	(strictly_subsumes): Remove 'args' parameter.  Adjust call to
1582	get_normalized_constraints_from_info.
1583	(weakly_subsumes): Likewise.
1584	* cp-tree.h (strictly_subsumes): Remove 'args' parameter.
1585	(weakly_subsumes): Likewise.
1586	* pt.c (process_partial_specialization): Adjust call to
1587	strictly_subsumes.
1588	(is_compatible_template_arg): Adjust call to weakly_subsumes.
1589
15902020-10-29  Patrick Palka  <ppalka@redhat.com>
1591
1592	PR c++/97412
1593	* constraint.cc (normalize_concept_check): Don't call
1594	tsubst_template_args when 'args' is NULL.
1595
15962020-10-29  Jason Merrill  <jason@redhat.com>
1597
1598	PR c++/97388
1599	* constexpr.c (cxx_eval_outermost_constant_expr): Revert to
1600	original expression if evaluation sets non_constant_p.
1601
16022020-10-29  Jakub Jelinek  <jakub@redhat.com>
1603	    Jason Merrill  <jason@redhat.com>
1604
1605	PR c++/97388
1606	* constexpr.c (cxx_bind_parameters_in_call): Set non_constant_args
1607	if the parameter type has a non-trivial destructor.
1608	(cxx_eval_call_expression): Only unshare arguments if we're
1609	memoizing this evaluation.
1610
16112020-10-29  Jakub Jelinek  <jakub@redhat.com>
1612
1613	PR c++/95808
1614	* cp-tree.h (enum cp_tree_index): Add CPTI_HEAP_VEC_UNINIT_IDENTIFIER
1615	and CPTI_HEAP_VEC_IDENTIFIER.
1616	(heap_vec_uninit_identifier, heap_vec_identifier): Define.
1617	* decl.c (initialize_predefined_identifiers): Initialize those
1618	identifiers.
1619	* constexpr.c (cxx_eval_call_expression): Reject array allocations
1620	deallocated with non-array deallocation or non-array allocations
1621	deallocated with array deallocation.
1622	(non_const_var_error): Handle heap_vec_uninit_identifier and
1623	heap_vec_identifier too.
1624	(cxx_eval_constant_expression): Handle also heap_vec_uninit_identifier
1625	and in that case during initialization replace it with
1626	heap_vec_identifier.
1627	(find_heap_var_refs): Handle heap_vec_uninit_identifier and
1628	heap_vec_identifier too.
1629
16302020-10-29  Nathan Sidwell  <nathan@acm.org>
1631
1632	* pt.c (push_template_decl): Do not give function-scope entities
1633	other than implicit typedefs a template header. Do not readd
1634	template info to a redeclared template.
1635
16362020-10-28  Marek Polacek  <polacek@redhat.com>
1637
1638	* decl.c (grokdeclarator): Offer a fix-it hint for the "unnecessary
1639	parentheses in declaration" warning.
1640	* parser.c (cp_parser_direct_declarator): When setting
1641	declarator->parenthesized, use a location range.
1642
16432020-10-28  Marek Polacek  <polacek@redhat.com>
1644
1645	PR c++/97573
1646	* call.c (build_conditional_expr_1): Warn about the deprecated
1647	enum/real type conversion in C++20.  Also warn about a non-enumerated
1648	and enumerated type in ?: when -Wenum-conversion is on.
1649	* typeck.c (do_warn_enum_conversions): New function.
1650	(cp_build_binary_op): Call it.
1651
16522020-10-28  Marek Polacek  <polacek@redhat.com>
1653
1654	PR c++/96675
1655	PR c++/96742
1656	* pt.c (tsubst_copy_and_build): Call value_dependent_expression_p or
1657	type_dependent_expression_p instead of type_dependent_expression_p_push.
1658	But only call value_dependent_expression_p for expressions that are
1659	potential_constant_expression.
1660
16612020-10-28  Marek Polacek  <polacek@redhat.com>
1662
1663	PR c++/94799
1664	* parser.c (cp_parser_class_name): Use parser->scope when
1665	setting typename_p.
1666
16672020-10-28  Marek Polacek  <polacek@redhat.com>
1668
1669	PR c++/86773
1670	* parser.c (cp_parser_fold_expression): Return error_mark_node
1671	if a left fold is preceded by an expression.
1672
16732020-10-28  Nathan Sidwell  <nathan@acm.org>
1674
1675	* parser.c (cp_parser_omp_declare_reduction): Set
1676	DECL_LOCAL_DECL_P before push_template_decl.
1677	* pt.c (instantiate_body): Nested fns do not have template_info.
1678
16792020-10-28  Patrick Palka  <ppalka@redhat.com>
1680
1681	PR c++/95132
1682	* decl2.c (mark_used): Move up the constraints_satisfied_p check
1683	so that we check constraints before calling maybe_instantiate_decl.
1684
16852020-10-28  Nathan Sidwell  <nathan@acm.org>
1686
1687	* pt.c (push_template_decl): Refactor for some RAII.
1688
16892020-10-28  Jakub Jelinek  <jakub@redhat.com>
1690
1691	* parser.c (cp_parser_omp_clause_name): Handle allocate.
1692	(cp_parser_omp_clause_allocate): New function.
1693	(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_ALLOCATE.
1694	(OMP_FOR_CLAUSE_MASK, OMP_SECTIONS_CLAUSE_MASK,
1695	OMP_PARALLEL_CLAUSE_MASK, OMP_SINGLE_CLAUSE_MASK,
1696	OMP_TASK_CLAUSE_MASK, OMP_TASKGROUP_CLAUSE_MASK,
1697	OMP_DISTRIBUTE_CLAUSE_MASK, OMP_TEAMS_CLAUSE_MASK,
1698	OMP_TARGET_CLAUSE_MASK, OMP_TASKLOOP_CLAUSE_MASK): Add
1699	PRAGMA_OMP_CLAUSE_ALLOCATE.
1700	* semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_ALLOCATE.
1701	* pt.c (tsubst_omp_clauses): Likewise.
1702
17032020-10-27  Nathan Sidwell  <nathan@acm.org>
1704
1705	* cp-tree.h (struct lang_type): Delete nested_udts field.
1706	(CLASSTYPE_NESTED_UTDS): Delete.
1707	* name-lookup.h (binding_table, binding_entry): Delete typedefs.
1708	(bt_foreach_proc): Likewise.
1709	(struct binding_entry_s): Delete.
1710	(SCOPE_DEFAULT_HT_SIZE, CLASS_SCOPE_HT_SIZE)
1711	(NAMESPACE_ORDINARY_HT_SIZE, NAMESPACE_STD_HT_SIZE)
1712	(GLOBAL_SCOPE_HT_SIZE): Delete.
1713	(binding_table_foreach, binding_table_find): Delete declarations.
1714	* name-lookup.c (ENTRY_INDEX): Delete.
1715	(free_binding_entry): Delete.
1716	(binding_entry_make, binding_entry_free): Delete.
1717	(struct binding_table_s): Delete.
1718	(binding_table_construct, binding_table_free): Delete.
1719	(binding_table_new, binding_table_expand): Delete.
1720	(binding_table_insert, binding_table_find): Delete.
1721	(binding_table_foreach): Delete.
1722	(maybe_process_template_type_declaration): Delete
1723	CLASSTYPE_NESTED_UTDS insertion.
1724	(do_pushtag): Likewise.
1725	* decl2.c (bt_reset_linkage_1): Fold into reset_type_linkage_1.
1726	(reset_type_linkage_2, bt_reset_linkage_2): Fold into
1727	reset_type_linkage.
1728	* pt.c (instantiate_class_template_1): Delete NESTED_UTDs comment.
1729	(bt_instantiate_type_proc): Delete.
1730	(do_type_instantiation): Instantiate implicit typedef fields.
1731	Delete NESTED_UTD walk.
1732	* search.c (lookup_field_r): Delete unreachable NESTED_UTD
1733	search.
1734
17352020-10-27  Nathan Sidwell  <nathan@acm.org>
1736
1737	* parser.c (cp_parser_explicit_instantiation): Refactor some RAII.
1738	* pt.c (bt_instantiate_type_proc): DATA is the tree, pass type to
1739	do_type_instantiation.
1740	(do_type_instantiation): Require T to be a type.  Refactor for
1741	some RAII.
1742
17432020-10-26  Ville Voutilainen  <ville.voutilainen@gmail.com>
1744
1745	* cp-tree.h (CPTK_IS_NOTHROW_ASSIGNABLE): New.
1746	(CPTK_IS_NOTHROW_CONSTRUCTIBLE): Likewise.
1747	(is_nothrow_xible): Likewise.
1748	* method.c (is_nothrow_xible): New.
1749	(is_trivially_xible): Tweak.
1750	* parser.c (cp_parser_primary_expression): Handle the new RID_*.
1751	(cp_parser_trait_expr): Likewise.
1752	* semantics.c (trait_expr_value): Handle the new RID_*.
1753	(finish_trait_expr): Likewise.
1754
17552020-10-24  Marek Polacek  <polacek@redhat.com>
1756
1757	PR c++/96241
1758	* constexpr.c (cxx_eval_array_reference): Set up ctx->ctor if we
1759	are initializing an aggregate.  Call free_constructor on the new
1760	CONSTRUCTOR if it isn't returned from cxx_eval_constant_expression.
1761
17622020-10-23  Marek Polacek  <polacek@redhat.com>
1763
1764	PR c++/91741
1765	* typeck.c (cp_build_binary_op): Implement -Wsizeof-array-div.
1766
17672020-10-22  Patrick Palka  <ppalka@redhat.com>
1768
1769	PR c++/97328
1770	* constexpr.c (init_subob_ctx): Don't punt on RANGE_EXPR
1771	indexes, instead build a sub-aggregate initialization context
1772	with no subobject.
1773
17742020-10-22  Patrick Palka  <ppalka@redhat.com>
1775
1776	PR c++/96575
1777	* constexpr.c (cxx_eval_constant_expression)
1778	<case EMPTY_CLASS_EXPR>: Lower it to a CONSTRUCTOR.
1779	(potential_constant_expression_1) <case COMPOUND_EXPR>: Remove
1780	now-redundant handling of COMPOUND_EXPR with EMPTY_CLASS_EXPR
1781	second operand.
1782	<case EMPTY_CLASS_EXPR>: Return true instead of false.
1783
17842020-10-22  Patrick Palka  <ppalka@redhat.com>
1785
1786	PR c++/97511
1787	* decl.c (duplicate_decls): Return NULL_TREE if
1788	DECL_TEMPLATE_PARM_P differ.
1789
17902020-10-20  Nathan Sidwell  <nathan@acm.org>
1791
1792	* name-lookup.c (push_local_extern_decl_alias): Reconstextualize
1793	alias' parm decls.  Drop any default args.
1794
17952020-10-19  Iain Sandoe  <iain@sandoe.co.uk>
1796
1797	PR c++/97438
1798	* coroutines.cc (struct coroutine_info): Add a field to
1799	record that we emitted a promise type error.
1800	(coro_promise_type_found_p): Check for the case that the
1801	promise type contains both return_void and return_value.
1802	Emit an error if so, with information about the wrong
1803	type methods.
1804
18052020-10-16  Nathan Sidwell  <nathan@acm.org>
1806
1807	PR c++/97460
1808	* pt.c (push_template_decl): Check DECL_LANG_SPECIFIC in friend
1809	case.
1810
18112020-10-16  Nathan Sidwell  <nathan@acm.org>
1812
1813	PR c++/96258
1814	* parser.c (cp_parser_declaration): Make token2 point to EOF if
1815	token1 was EOF.
1816
18172020-10-15  Jason Merrill  <jason@redhat.com>
1818
1819	PR c++/95844
1820	* decl.c (copy_fn_p): Return false for a function that is neither a
1821	constructor nor an assignment operator.
1822	(move_signature_fn_p): Likewise.
1823
18242020-10-15  Marek Polacek  <polacek@redhat.com>
1825
1826	PR c++/97406
1827	PR c++/85901
1828	* cxx-pretty-print.c (pp_cxx_type_specifier_seq): Handle OFFSET_TYPE.
1829	(cxx_pretty_printer::abstract_declarator): Fix the printing of ')'.
1830	(cxx_pretty_printer::direct_abstract_declarator): Handle OFFSET_TYPE.
1831	(cxx_pretty_printer::type_id): Likewise.  Print the abstract declarator
1832	for pointers-to-members.
1833
18342020-10-14  Jason Merrill  <jason@redhat.com>
1835
1836	PR c++/97358
1837	* pt.c (check_for_bare_parameter_packs): Diagnose use of
1838	capture pack.
1839
18402020-10-14  Nathan Sidwell  <nathan@acm.org>
1841
1842	* cp-tree.h (struct lang_decl_fn): Adjust context comment.
1843	(DECL_FRIEND_P): Replace with ...
1844	(DECL_UNIQUE_FRIEND_P): ... this.  Only for FUNCTION_DECLs.
1845	(DECL_FRIEND_CONTEXT): Adjust.
1846	* class.c (add_implicitly_declared_members): Detect friendly
1847	spaceship from context.
1848	* constraint.cc (remove_constraints): Use a checking assert.
1849	(maybe_substitute_reqs_for): Use DECL_UNIQUE_FRIEND_P.
1850	* decl.c (check_no_redeclaration_friend_default_args):
1851	DECL_UNIQUE_FRIEND_P is signficant, not hiddenness.
1852	(duplicate_decls): Adjust DECL_UNIQUE_FRIEND_P clearing.
1853	(redeclaration_error_message): Use DECL_UNIQUE_FRIEND_P.
1854	(start_preparsed_function): Correct in-class friend processing.
1855	Refactor some initializers.
1856	(grokmethod): Directly check friend decl-spec.
1857	* decl2.c (grokfield): Check DECL_UNIQUE_FRIEND_P.
1858	* friend.c (do_friend): Set DECL_UNIQUE_FRIEND_P first, remove
1859	extraneous conditions.  Don't re set it afterwards.
1860	* name-lookup.c (lookup_elaborated_type_1): Simplify revealing
1861	code.
1862	(do_pushtag): Likewise.
1863	* pt.c (optimize_specialization_lookup_p): Check
1864	DECL_UNIQUE_FRIEND_P.
1865	(push_template_decl): Likewise.  Drop unneeded friend setting.
1866	(type_dependent_expression_p): Check DECL_UNIQUE_FRIEND_P.
1867
18682020-10-14  Nathan Sidwell  <nathan@acm.org>
1869
1870	* name-lookup.c (push_local_extern_decl_alias): Push into alias's
1871	namespace and use pushdecl.
1872	(do_pushdecl_with_scope): Clarify behaviour.
1873
18742020-10-12  Martin Sebor  <msebor@redhat.com>
1875
1876	PR c++/97201
1877	* error.c (dump_type_suffix): Handle both the C and C++ forms of
1878	zero-length arrays.
1879
18802020-10-12  Martin Sebor  <msebor@redhat.com>
1881
1882	PR c++/96511
1883	PR middle-end/96384
1884	* init.c (warn_placement_new_too_small): Call builtin_objsize instead
1885	of duplicating what it does.
1886
18872020-10-08  Jason Merrill  <jason@redhat.com>
1888
1889	PR c++/96805
1890	PR c++/96199
1891	* pt.c (tsubst_aggr_type): Don't build a TYPENAME_TYPE when
1892	entering_scope.
1893	(tsubst_template_decl): Use tsubst_aggr_type.
1894
18952020-10-08  Patrick Palka  <ppalka@redhat.com>
1896
1897	PR c++/97052
1898	* constraint.cc (build_type_constraint): Temporarily increment
1899	processing_template_decl before calling build_concept_check.
1900	* pt.c (make_constrained_placeholder_type): Likewise.
1901
19022020-10-08  Patrick Palka  <ppalka@redhat.com>
1903
1904	PR c++/96229
1905	* parser.c (cp_parser_class_specifier_1): Move call to
1906	associate_classtype_constraints from here to ...
1907	(cp_parser_class_head): ... here.
1908	* pt.c (is_compatible_template_arg): Correct documentation to
1909	say "argument is _no_ more constrained than the parameter".
1910
19112020-10-07  Marek Polacek  <polacek@redhat.com>
1912
1913	PR c++/97010
1914	* pt.c (tsubst_copy_and_build) <case TEMPLATE_ID_EXPR>: Call
1915	tsubst_copy_and_build explicitly instead of using the RECUR macro.
1916	Handle a TEMPLATE_ID_EXPR with an IDENTIFIER_NODE as its operand.
1917	<case CALL_EXPR>: Perform ADL for a TEMPLATE_ID_EXPR with an
1918	IDENTIFIER_NODE as its operand.
1919
19202020-10-07  Patrick Palka  <ppalka@redhat.com>
1921
1922	PR c++/88115
1923	PR libstdc++/97273
1924	* tree.c (cp_tree_equal) <case ALIGNOF_EXPR>: Return false if
1925	ALIGNOF_EXPR_STD_P differ.
1926
19272020-10-07  Nathan Sidwell  <nathan@acm.org>
1928
1929	* cp-tree.h (struct language_function): Delete extern_decl_map.
1930	(DECL_LOCAL_DECL_ALIAS): New.
1931	* name-lookup.h (is_local_extern): Delete.
1932	* name-lookup.c (set_local_extern_decl_linkage): Replace with ...
1933	(push_local_extern_decl): ... this new function.
1934	(do_pushdecl): Call new function after pushing new decl.  Unhide
1935	hidden non-functions.
1936	(is_local_extern): Delete.
1937	* decl.c (layout_var_decl): Do not allow VLA local externs.
1938	* decl2.c (mark_used): Also mark DECL_LOCAL_DECL_ALIAS. Drop old
1939	local-extern treatment.
1940	* parser.c (cp_parser_oacc_declare): Deal with local extern aliases.
1941	* pt.c (tsubst_expr): Adjust local extern instantiation.
1942	* cp-gimplify.c (cp_genericize_r): Remap DECL_LOCAL_DECLs.
1943
19442020-10-07  Nathan Sidwell  <nathan@acm.org>
1945
1946	* cp-tree.h (DECL_BUILTIN_P): Rename to ...
1947	(DECL_UNDECLARED_BUILTIN_P): ... here.
1948	* decl.c (duplicate_decls): Adjust.
1949	* name-lookup.c (anticipated_builtin_p): Adjust.
1950	(do_nonmember_using_decl): Likewise.
1951
19522020-10-07  Nathan Sidwell  <nathan@acm.org>
1953
1954	* tree.c (build_cp_fntype_variant): Clear
1955	TYPE_DEPENDENT_P_VALID if necessary.
1956
19572020-10-06  Marek Polacek  <polacek@redhat.com>
1958
1959	PR c++/97297
1960	* parser.c (cp_parser_direct_declarator): When checking if a
1961	name is a function template declaration for the P0634R3 case,
1962	look in uninstantiated templates too.
1963
19642020-10-05  Marek Polacek  <polacek@redhat.com>
1965
1966	* cp-tree.h (NON_UNION_CLASS_TYPE_P): Fix typo in a comment.
1967
19682020-10-05  Richard Biener  <rguenther@suse.de>
1969	    Jakub Jelinek  <jakub@redhat.com>
1970
1971	PR c++/97197
1972	* error.c (dump_expr): Handle TARGET_MEM_REF.
1973
19742020-10-05  Nathan Sidwell  <nathan@acm.org>
1975
1976	* name-lookup.c (maybe_add_fuzzy_decl): New.
1977	(maybe_add_fuzzy_binding): New.
1978	(consider_binding_level): Use intermediate sortable vector for
1979	namespace bindings.
1980
19812020-10-02  Marek Polacek  <polacek@redhat.com>
1982
1983	PR c++/97014
1984	* cxx-pretty-print.c (pp_cxx_template_argument_list): If the
1985	argument is template_parm_object_p, print its DECL_INITIAL.
1986
19872020-10-02  Nathan Sidwell  <nathan@acm.org>
1988
1989	* cp-tree.h (lang_decl_base): anticipated_p is not used for
1990	anticipatedness.
1991	(DECL_ANTICIPATED): Delete.
1992	* decl.c (duplicate_decls): Delete DECL_ANTICIPATED_management,
1993	use was_hidden.
1994	(cxx_builtin_function): Drop DECL_ANTICIPATED setting.
1995	(xref_tag_1): Drop DECL_ANTICIPATED assert.
1996	* name-lookup.c (name_lookup::adl_class_only): Drop
1997	DECL_ANTICIPATED check.
1998	(name_lookup::search_adl): Always dedup.
1999	(anticipated_builtin_p): Reimplement.
2000	(do_pushdecl): Drop DECL_ANTICIPATED asserts & update.
2001	(lookup_elaborated_type_1): Drop DECL_ANTICIPATED update.
2002	(do_pushtag): Drop DECL_ANTICIPATED setting.
2003	* pt.c (push_template_decl): Likewise.
2004	(tsubst_friend_class): Likewise.
2005
20062020-10-02  Nathan Sidwell  <nathan@acm.org>
2007
2008	* name-lookup.c (consider_decl): New, broken out of ...
2009	(consider_binding_level): ... here.  Iterate the hash table for
2010	namespace bindings.
2011
20122020-10-02  Nathan Sidwell  <nathan@acm.org>
2013
2014	* cp-tree.h (base_ctor_omit_inherited_parms): Declare.
2015	* class.c (add_method): Refactor main loop, only pass fns to
2016	ctor_omit_inherited_parms.
2017	(build_cdtor_clones): Rename bool parms.
2018	(clone_cdtor): Call base_ctor_omit_inherited_parms.
2019	* method.c (base_ctor_omit_inherited_parms): New, broken out of
2020	...
2021	(ctor_omit_inherited_parms): ... here, call it with
2022	DECL_CLONED_FUNCTION.
2023
20242020-10-02  Nathan Sidwell  <nathan@acm.org>
2025
2026	* cp-tree.h (cp_fname_init): Delete declaration.
2027	* decl.c (cp_fname_init): Merge into only caller ...
2028	(cp_make_fname): ... here & refactor.
2029
20302020-10-02  Jason Merril  <jason@redhat.com>
2031
2032	* call.c (build_operator_new_call): Set CALL_FROM_NEW_OR_DELETE_P.
2033	(build_op_delete_call): Likewise.
2034	* init.c (build_new_1, build_vec_delete_1, build_delete): Not here.
2035	(build_delete):
2036
20372020-10-02  Jason Merril  <jason@redhat.com>
2038
2039	* lambda.c (call_from_lambda_thunk_p): New.
2040	* cp-gimplify.c (cp_genericize_r): Use it.
2041	* pt.c (tsubst_copy_and_build): Use it.
2042	* typeck.c (check_return_expr): Use it.
2043	* cp-tree.h: Declare it.
2044	(CALL_FROM_NEW_OR_DELETE_P): Move to gcc/tree.h.
2045
20462020-10-01  Nathan Sidwell  <nathan@acm.org>
2047
2048	* cp-tree.h (DECL_ANTICIPATED): Adjust comment.
2049	(DECL_HIDDEN_P, TYPE_HIDDEN_P): Delete.
2050	* tree.c (ovl_insert): Delete DECL_HIDDEN_P assert.
2051	(ovl_skip_hidden): Likewise.
2052
20532020-10-01  Nathan Sidwell  <nathan@acm.org>
2054
2055	* name-lookup.c (pushdecl_top_level): Assert incoming context is
2056	null, add global_namespace context.
2057	(pushdecl_top_level_and_finish): Likewise.
2058	* pt.c (get_template_parm_object): Clear decl context before
2059	pushing.
2060	* semantics.c (finish_compound_literal): Likewise.
2061
20622020-10-01  Nathan Sidwell  <nathan@acm.org>
2063
2064	* decl.c (lookup_and_check_tag): Refactor.
2065
20662020-10-01  Jakub Jelinek  <jakub@redhat.com>
2067
2068	PR c++/96994
2069	* call.c (build_over_call): If obj_arg is non-NULL, return INIT_EXPR
2070	setting obj_arg to call.
2071
20722020-10-01  Jakub Jelinek  <jakub@redhat.com>
2073
2074	PR c++/97195
2075	* constexpr.c (cxx_eval_call_expression): Don't VERIFY_CONSTANT the
2076	second argument.
2077
20782020-10-01  Marek Polacek  <polacek@redhat.com>
2079
2080	PR c++/90210
2081	* pt.c (do_class_deduction): Don't prune explicit deduction guides
2082	in copy-list-initialization.  In copy-list-initialization, if an
2083	explicit deduction guide was selected, give an error.
2084
20852020-09-30  Nathan Sidwell  <nathan@acm.org>
2086
2087	* cp-tree.h (struct lang_decl_fn): Remove hidden_friend_p.
2088	(DECL_HIDDEN_FRIEND_P): Delete.
2089	* call.c (add_function_candidate): Drop assert about anticipated
2090	decl.
2091	(build_new_op_1): Drop koenig lookup flagging for hidden friend.
2092	* decl.c (duplicate_decls): Drop HIDDEN_FRIEND_P updating.
2093	* name-lookup.c (do_pushdecl): Likewise.
2094	(set_decl_namespace): Discover hiddenness from OVL_HIDDEN_P.
2095	* pt.c (check_explicit_specialization): Record found_hidden
2096	explicitly.
2097
20982020-09-29  Marek Polacek  <polacek@redhat.com>
2099
2100	PR c++/94695
2101	* call.c (ref_conv_binds_directly_p): New function.
2102	* cp-tree.h (ref_conv_binds_directly_p): Declare.
2103	* parser.c (warn_for_range_copy): New function.
2104	(cp_convert_range_for): Call it.
2105
21062020-09-29  Nathan Sidwell  <nathan@acm.org>
2107
2108	* cp-tree.h (ovl_insert): Change final parm to hidden-or-using
2109	indicator.
2110	* name-lookup.h (HIDDEN_TYPE_BINDING_P): New.
2111	(struct cxx_binding): Add type_is_hidden flag.
2112	* tree.c (ovl_insert): Change using_p parm to using_or_hidden,
2113	adjust.
2114	(ovl_skip_hidden): Assert we never see a naked hidden decl.
2115	* decl.c (xref_tag_1): Delete unhiding friend from here (moved to
2116	lookup_elaborated_type_1).
2117	* name-lookup.c (STAT_TYPE_HIDDEN_P, STAT_DECL_HIDDEN_P): New.
2118	(name_lookup::search_namespace_only): Check new hidden markers.
2119	(cxx_binding_make): Clear HIDDEN_TYPE_BINDING_P.
2120	(update_binding): Update new hidden markers.
2121	(lookup_name_1): Check HIDDEN_TYPE_BINDING_P and simplify friend
2122	ignoring.
2123	(lookup_elaborated_type_1): Use new hidden markers.  Reveal the
2124	decl here.
2125
21262020-09-29  Nathan Sidwell  <nathan@acm.org>
2127
2128	* name-lookup.c (create_local_binding): Do not clear
2129	INHERITED_VALUE_BINDING_P here.
2130	(name_lookup::process_binding): Move done hidden-decl triage to ...
2131	(name_lookup::search_namespace_only): ... here, its only caller.
2132	(cxx_binding_make): Clear flags here.
2133	(push_binding): Not here.
2134	(pop_local_binding): RAII.
2135	(update_binding): Refactor.
2136	(do_pushdecl): Assert we're never revealing a local binding.
2137	(do_pushdecl_with_scope): Directly call do_pushdecl.
2138	(get_class_binding): Do not clear LOCAL_BINDING_P here.
2139	* pt.c (push_template_decl): Set friend & anticipated before
2140	pushing.
2141
21422020-09-29  Nathan Sidwell  <nathan@acm.org>
2143
2144	* name-lookup.c (update_binding): We never meet two implicit
2145	typedefs.
2146	(do_pushdecl): Adjust set_identifier_type_value_with_scope calls.
2147	(set_identifier_type_value_with_scope): Do not update binding in
2148	the namespace-case.  Assert it is already there.
2149
21502020-09-25  Nathan Sidwell  <nathan@acm.org>
2151
2152	* cp-tree.h (duplicate_decls): Replace 'is_friend' with 'hiding'
2153	and add 'was_hidden'.
2154	* name-lookup.h (pushdecl_namespace_level): Replace 'is_friend'
2155	with 'hiding'.
2156	(pushdecl): Likewise.
2157	(pushdecl_top_level): Drop is_friend parm.
2158	* decl.c (check_no_redeclaration_friend_default_args): Rename parm
2159	olddelc_hidden_p.
2160	(duplicate_decls): Replace 'is_friend' with 'hiding'
2161	and 'was_hidden'.  Do minimal adjustments in body.
2162	(cxx_builtin_function): Pass 'hiding' to pushdecl.
2163	* friend.c (do_friend): Pass 'hiding' to pushdecl.
2164	* name-lookup.c (supplement_binding_1): Drop defaulted arg to
2165	duplicate_decls.
2166	(update_binding): Replace 'is_friend' with 'hiding'.  Drop
2167	defaulted arg to duplicate_decls.
2168	(do_pushdecl): Replace 'is_friend' with 'hiding'.  Assert no
2169	surprise hidhing.  Adjust duplicate_decls calls to inform of old
2170	decl's hiddennes.
2171	(pushdecl): Replace 'is_friend' with 'hiding'.
2172	(set_identifier_type_value_with_scope): Adjust update_binding
2173	call.
2174	(do_pushdecl_with_scope): Replace 'is_friend' with 'hiding'.
2175	(pushdecl_outermost_localscope): Drop default arg to
2176	do_pushdecl_with_scope.
2177	(pushdecl_namespace_level): Replace 'is_friend' with 'hiding'.
2178	(pushdecl_top_level): Drop is_friend parm.
2179	* pt.c (register_specialization): Comment duplicate_decls call
2180	args.
2181	(push_template_decl): Commont pushdecl_namespace_level.
2182	(tsubst_friend_function, tsubst_friend_class): Likewise.
2183
21842020-09-25  Nathan Sidwell  <nathan@acm.org>
2185
2186	* name-lookup.h (enum tag_scope): Replace with ...
2187	(enum class TAG_how): ... this.  Add HIDDEN_FRIEND value.
2188	(lookup_type_scope): Replace with ...
2189	(lookup_elaborated_type): ... this.
2190	(pushtag): Use TAG_how, not tag_scope.
2191	* cp-tree.h (xref_tag): Parameter is TAG_how, not tag_scope.
2192	* decl.c (lookup_and_check_tag): Likewise.  Adjust.
2193	(xref_tag_1, xref_tag): Likewise. adjust.
2194	(start_enum): Adjust lookup_and_check_tag call.
2195	* name-lookup.c (lookup_type_scope_1): Rename to ...
2196	(lookup_elaborated_type_1) ... here. Use TAG_how, not tag_scope.
2197	(lookup_type_scope): Rename to ...
2198	(lookup_elaborated_type): ... here.  Use TAG_how, not tag_scope.
2199	(do_pushtag): Use TAG_how, not tag_scope.  Adjust.
2200	(pushtag): Likewise.
2201	* parser.c (cp_parser_elaborated_type_specifier): Adjust.
2202	(cp_parser_class_head): Likewise.
2203
22042020-09-25  Nathan Sidwell  <nathan@acm.org>
2205
2206	* cp-tree.h (DECL_BUILTIN_P): New.
2207	* decl.c (duplicate_decls): Use it.  Do not treat omp-udr as a
2208	builtin.
2209	* name-lookup.c (anticipated_builtin): Use it.
2210	(set_decl_context_in_fn): Function-scope OMP UDRs have function context.
2211	(do_nonmember_using_decl): Use DECL_BUILTIN_P.
2212	* parser.c (cp_parser_omp_declare_reduction): Function-scope OMP
2213	UDRs have function context.  Assert we never find a valid duplicate.
2214	* pt.c (tsubst_expr): Function-scope OMP UDRs have function context.
2215
22162020-09-24  Nathan Sidwell  <nathan@acm.org>
2217
2218	* cp-tree.h (duplicate_decls): Default is_friend to false.
2219	(xref_tag): Default tag_scope & tpl_header_p to ts_current & false.
2220	(push_template_decl_real): Default is_friend to false.  Rename to
2221	...
2222	(push_template_decl): ... here.  Delete original decl.
2223	* name-lookup.h (pushdecl_namespace_level): Default is_friend to
2224	false.
2225	(pushtag): Default tag_scope to ts_current.
2226	* coroutines.cc (morph_fn_to_coro): Drop default args to xref_tag.
2227	* decl.c (start_decl): Drop default args to duplicate_decls.
2228	(start_enum): Drop default arg to pushtag & xref_tag.
2229	(start_preparsed_function): Pass DECL_FRIEND_P to
2230	push_template_decl.
2231	(grokmethod): Likewise.
2232	* friend.c (do_friend): Rename push_template_decl_real calls.
2233	* lambda.c (begin_lamnbda_type): Drop default args to xref_tag.
2234	(vla_capture_type): Likewise.
2235	* name-lookup.c (maybe_process_template_type_declaration): Rename
2236	push_template_decl_real call.
2237	(pushdecl_top_level_and_finish): Drop default arg to
2238	pushdecl_namespace_level.
2239	* pt.c (push_template_decl_real): Assert no surprising friend
2240	functions.  Rename to ...
2241	(push_template_decl): ... here.  Delete original function.
2242	(lookup_template_class_1): Drop default args from pushtag.
2243	(instantiate_class_template_1): Likewise.
2244	* ptree.c (debug_overload): Print hidden and using markers.
2245	* rtti.c (init_rtti_processing): Drop refault args from xref_tag.
2246	(build_dynamic_cast_1, tinfo_base_init): Likewise.
2247	* semantics.c (begin_class_definition): Drop default args to
2248	pushtag.
2249
22502020-09-24  Nathan Sidwell  <nathan@acm.org>
2251
2252	PR c++/97186
2253	* pt.c (maybe_instantiate_noexcept): Local externs are never
2254	member fns.
2255
22562020-09-23  Nathan Sidwell  <nathan@acm.org>
2257
2258	* name-lookup.h (typedef cxx_binding): Delete tdef.
2259	(typedef cp_binding_level): Likewise.
2260	(struct cxx_binding): Flags are bools.
2261
22622020-09-23  Nathan Sidwell  <nathan@acm.org>
2263
2264	PR c++/97171
2265	* pt.c (tsubst_copy) [FUNCTION_DECL,VAR_DECL]: Retrieve local
2266	specialization for DECL_LOCAL_P decls.
2267
22682020-09-22  Patrick Palka  <ppalka@redhat.com>
2269
2270	PR c++/95310
2271	* pt.c (corresponding_template_parameter): Define.
2272	(keep_template_parm): Use it to adjust the given template
2273	parameter to the corresponding in-scope one from ctx_parms.
2274
22752020-09-22  Nathan Sidwell  <nathan@acm.org>
2276
2277	* cp-tree.h (xref_tag_from_type): Don't declare.
2278	* decl.c (xref_tag_from_type): Delete.
2279	* pt.c (lookup_template_class_1): Erroneously located class
2280	definitions just give error_mark, don't try and inject it into the
2281	namespace.
2282
22832020-09-22  Jakub Jelinek  <jakub@redhat.com>
2284
2285	PR c++/97145
2286	* constexpr.c (cxx_eval_builtin_function_call): Return void_node for
2287	calls to __sanitize_ptr_{sub,cmp} builtins.
2288
22892020-09-22  Nathan Sidwell  <nathan@acm.org>
2290
2291	* pt.c (instantiate_class_template_1): Do not repush and unhide
2292	injected friend.
2293
22942020-09-21  Marek Polacek  <polacek@redhat.com>
2295
2296	PR c++/90583
2297	DR 1722
2298	* lambda.c (maybe_add_lambda_conv_op): Mark the conversion function
2299	as noexcept.
2300
23012020-09-21  Marek Polacek  <polacek@redhat.com>
2302
2303	* pt.c (deduction_guides_for): Add a bool parameter.  Set it.
2304	(do_class_deduction): Warn when CTAD succeeds but the type doesn't
2305	have any explicit deduction guides.
2306
23072020-09-21  Nathan Sidwell  <nathan@acm.org>
2308
2309	* decl.c (xref_tag_1): Use IDENTIFIER_LAMBDA_P to detect lambdas.
2310	* lambda.c (begin_lambda_type): Use ts_current to push the tag.
2311	* name-lookup.h (enum tag_scope): Drop ts_lambda.
2312
23132020-09-21  Marek Polacek  <polacek@redhat.com>
2314
2315	PR c++/97099
2316	* decl.c (redeclaration_error_message): Detect a redeclaration of
2317	deduction guides.
2318
23192020-09-19  Sandra Loosemore  <sandra@codesourcery.com>
2320
2321	* cp-gimplify.c (enum bc_t, bc_label): Move to c-family.
2322	(begin_bc_block, finish_bc_block, get_bc_label): Likewise.
2323	(genericize_cp_loop): Likewise.
2324	(genericize_for_stmt, genericize_while_stmt): Likewise.
2325	(genericize_do_stmt, genericize_switch_stmt): Likewise.
2326	(genericize_continue_stmt, genericize_break_stmt): Likewise.
2327	(genericize_omp_for_stmt): Likewise.
2328	(cp_genericize_r): Call c_genericize_control_stmt instead of
2329	above functions directly.
2330	(cp_genericize): Call save_bc_state and restore_bc_state instead
2331	of manipulating bc_label directly.
2332	* cp-objcp-common.c (cxx_block_may_fallthru): Defer to
2333	c_block_may_fallthru instead of handling SWITCH_STMT here.
2334	(cp_common_init_ts): Move handling of loop and switch-related
2335	statements to c-family.
2336	* cp-tree.def (FOR_STMT, WHILE_STMT, DO_STMT): Move to c-family.
2337	(BREAK_STMT, CONTINUE_STMT, SWITCH_STMT): Likewise.
2338	* cp-tree.h (LABEL_DECL_BREAK, LABEL_DECL_CONTINUE): Likewise.
2339	(WHILE_COND, WHILE_BODY): Likewise.
2340	(DO_COND, DO_BODY): Likewise.
2341	(FOR_INIT_STMT, FOR_COND, FOR_EXPR, FOR_BODY, FOR_SCOPE): Likewise.
2342	(SWITCH_STMT_COND, SWITCH_STMT_BODY): Likewise.
2343	(SWITCH_STMT_TYPE, SWITCH_STMT_SCOPE): Likewise.
2344	(SWITCH_STMT_ALL_CASES_P, SWITCH_STMT_NO_BREAK_P): Likewise.
2345	* cxx-pretty-print.c (cxx_pretty_printer::statement): Move code
2346	to handle structured loop and switch tree nodes to c-family.
2347	* dump.c (cp_dump_tree): Likewise.
2348
23492020-09-19  Patrick Palka  <ppalka@redhat.com>
2350
2351	PR c++/96531
2352	PR c++/97103
2353	* constraint.cc (map_arguments): Call template_parm_to_arg
2354	in the self-mapping case.
2355	(finish_shorthand_constraint): No need to build a TREE_LIST
2356	before calling template_parm_to_arg.
2357	* pt.c (template_parm_to_arg): Rewrite to handle TEMPLATE_PARM_P
2358	nodes as well as DECL_TEMPLATE_PARM_P nodes, and to make the
2359	overlying TREE_LIST node optional.
2360	(keep_template_parm): Don't record a BOUND_TEMPLATE_TEMPLATE_PARM,
2361	instead record its corresponding TEMPLATE_TEMPLATE_PARM.
2362	(convert_generic_types_to_packs): Don't call
2363	template_parm_to_arg.
2364
23652020-09-19  Patrick Palka  <ppalka@redhat.com>
2366
2367	PR c++/97051
2368	* constraint.cc (satisfy_atom): Pass true as the
2369	manifestly_const_eval argument to maybe_constant_value.
2370
23712020-09-18  Jason Merrill  <jason@redhat.com>
2372
2373	PR bootstrap/97118
2374	* decl.c (complete_vars): Only call layout_var_decl if completing
2375	the type succeeded.
2376
23772020-09-18  Jason Merrill  <jason@redhat.com>
2378
2379	* decl.c (complete_vars): Call layout_var_decl.
2380
23812020-09-17  Patrick Palka  <ppalka@redhat.com>
2382
2383	PR c++/96409
2384	PR c++/96410
2385	* constraint.cc (tsubst_requires_expr): Use REQUIRES_EXPR_PARMS
2386	and REQUIRES_EXPR_REQS.  Use REQUIRES_EXPR_EXTRA_ARGS,
2387	add_extra_args and build_extra_args to defer substitution until
2388	we have all the template arguments.
2389	(finish_requires_expr): Adjust the call to build_min so that
2390	REQUIRES_EXPR_EXTRA_ARGS gets set to NULL_TREE.
2391	* cp-tree.def (REQUIRES_EXPR): Give it a third operand.
2392	* cp-tree.h (REQUIRES_EXPR_PARMS, REQUIRES_EXPR_REQS,
2393	REQUIRES_EXPR_EXTRA_ARGS): Define.
2394	(add_extra_args, build_extra_args): Declare.
2395
23962020-09-16  Nathan Sidwell  <nathan@acm.org>
2397
2398	* cp-tree.h (cp_check_omp_declare_reduction): Return bool.
2399	* semantics.c (cp_check_omp_declare_reduction): Return true on for
2400	success.
2401	* pt.c (push_template_decl_real): OMP reductions do not get a
2402	template header.
2403	(tsubst_function_decl): Remove special casing for local decl omp
2404	reductions.
2405	(tsubst_expr): Call instantiate_body for a local omp reduction.
2406	(instantiate_body): Add nested_p parm, and deal with such
2407	instantiations.
2408	(instantiate_decl): Reject FUNCTION_SCOPE entities, adjust
2409	instantiate_body call.
2410
24112020-09-16  Nathan Sidwell  <nathan@acm.org>
2412
2413	* pt.c (instantiate_body): Remove 'nested' var, simplify
2414	push_to_top logic.
2415
24162020-09-16  Nathan Sidwell  <nathan@acm.org>
2417
2418	* pt.c (instantiate_body): New, broken out of ..
2419	(instantiate_decl): ... here.  Call it.
2420
24212020-09-15  Nathan Sidwell  <nathan@acm.org>
2422
2423	* pt.c (push_template_decl_real): OMP reductions retain a template
2424	header.
2425	(tsubst_function_decl): Likewise.
2426
24272020-09-15  Tobias Burnus  <tobias@codesourcery.com>
2428
2429	PR fortran/96668
2430	* cp-gimplify.c (cxx_omp_finish_clause): Add bool openacc arg.
2431	* cp-tree.h (cxx_omp_finish_clause): Likewise
2432	* semantics.c (handle_omp_for_class_iterator): Update call.
2433
24342020-09-14  Marek Polacek  <polacek@redhat.com>
2435
2436	* pt.c (push_template_decl_real): Use VAR_OR_FUNCTION_DECL_P.
2437
24382020-09-14  Nathan Sidwell  <nathan@acm.org>
2439
2440	* pt.c (push_template_decl_real): Don't attach a template head to
2441	local externs.
2442	(tsubst_function_decl): Add support for headless local extern
2443	decls.
2444	(tsubst_decl): Add support for headless local extern decls.
2445
24462020-09-11  Nathan Sidwell  <nathan@acm.org>
2447
2448	* decl.c (grokfndecl): Don't attach to local extern.
2449
24502020-09-11  Nathan Sidwell  <nathan@acm.org>
2451
2452	* parser.c (cp_parser_objc_method_definition_list): Reimplement
2453	loop, make sure we pop scope.
2454
24552020-09-11  Marek Polacek  <polacek@redhat.com>
2456
2457	* cp-tree.h (LOOKUP_CONSTINIT): Remove.
2458	(LOOKUP_REWRITTEN): Adjust.
2459	* decl.c (duplicate_decls): Set DECL_DECLARED_CONSTINIT_P.
2460	(check_initializer): Use DECL_DECLARED_CONSTINIT_P instead of
2461	LOOKUP_CONSTINIT.
2462	(cp_finish_decl): Don't set DECL_DECLARED_CONSTINIT_P.  Use
2463	DECL_DECLARED_CONSTINIT_P instead of LOOKUP_CONSTINIT.
2464	(grokdeclarator): Set DECL_DECLARED_CONSTINIT_P.
2465	* decl2.c (grokfield): Don't handle LOOKUP_CONSTINIT.
2466	* parser.c (cp_parser_decomposition_declaration): Remove
2467	LOOKUP_CONSTINIT handling.
2468	(cp_parser_init_declarator): Likewise.
2469	* pt.c (tsubst_expr): Likewise.
2470	(instantiate_decl): Likewise.
2471	* typeck2.c (store_init_value): Use DECL_DECLARED_CONSTINIT_P instead
2472	of LOOKUP_CONSTINIT.
2473
24742020-09-10  Nathan Sidwell  <nathan@acm.org>
2475
2476	* cp-tree.h (TINFO_VAR_DECLARED_CONSTINIT): Replace with ...
2477	(DECL_DECLARED_CONSTINIT_P): ... this.
2478	* decl.c (start_decl): No need to retrofit_lang_decl for constinit
2479	flag.
2480	(cp_finish_decl): Use DECL_DECLARED_CONSTINIT_P.
2481	* pt.c (tsubst_decl): No need to handle constinit flag
2482	propagation.
2483	(tsubst_expr): Or here.
2484
24852020-09-10  Nathan Sidwell  <nathan@acm.org>
2486
2487	* cp-tree.h (DECL_LOCAL_FUNCTION_P): Rename to ...
2488	(DECL_LOCAL_DECL_P): ... here.  Accept both fns and vars.
2489	* decl.c (start_decl): Set DECL_LOCAL_DECL_P for local externs.
2490	(omp_declare_variant_finalize_one): Use DECL_LOCAL_DECL_P.
2491	(local_variable_p): Simplify.
2492	* name-lookup.c (set_decl_context_in_fn): Assert DECL_LOCAL_DECL_P
2493	is as expected.  Simplify.
2494	(do_pushdecl): Don't set decl_context_in_fn for friends.
2495	(is_local_extern): Simplify.
2496	* call.c (equal_functions): Use DECL_LOCAL_DECL_P.
2497	* parser.c (cp_parser_postfix_expression): Likewise.
2498	(cp_parser_omp_declare_reduction): Likewise.
2499	* pt.c (check_default_tmpl_args): Likewise.
2500	(tsubst_expr): Assert nested reduction function is local.
2501	(type_dependent_expression_p): Use DECL_LOCAL_DECL_P.
2502	* semantics.c (finish_call_expr): Likewise.
2503
25042020-09-09  Marek Polacek  <polacek@redhat.com>
2505
2506	PR c++/77841
2507	* decl.c (reshape_init): If we're initializing a char array from
2508	a string-literal that is enclosed in braces, unwrap it.
2509	* init.c (build_new_1): Don't handle string-initializers here.
2510	(build_new): Handle new-expression with paren-init when the
2511	array bound is known.  Always pass string constants to build_new_1
2512	enclosed in braces.  Don't handle string-initializers in any
2513	special way.
2514
25152020-09-09  Marek Polacek  <polacek@redhat.com>
2516
2517	PR c++/95164
2518	* decl.c (reshape_init_r): When initializing an aggregate member
2519	with an initializer from an initializer-list, also consider
2520	COMPOUND_LITERAL_P.
2521
25222020-09-09  Nathan Sidwell  <nathan@acm.org>
2523
2524	* parser.c (cp_parser_omp_declare_reduction): Refactor to avoid
2525	code duplication.  Update DECL_TI_TEMPLATE's context.
2526	* pt.c (tsubst_expr): For OMP reduction function, set context to
2527	global_namespace before pushing.
2528	(tsubst_omp_udr): Assert current_function_decl, add comment about
2529	decl context.
2530
25312020-09-09  Patrick Palka  <ppalka@redhat.com>
2532
2533	PR c++/96647
2534	* class.c (resolve_address_of_overloaded_function): Check
2535	constraints_satisfied_p and perform return-type deduction via
2536	maybe_instantiate_decl when considering non-template functions
2537	in the overload set.
2538	* cp-tree.h (maybe_instantiate_decl): Declare.
2539	* decl2.c (maybe_instantiate_decl): Remove static.
2540
25412020-09-04  Jason Merrill  <jason@redhat.com>
2542
2543	* expr.c (mark_use): Use iloc_sentinel.
2544
25452020-09-03  Jakub Jelinek  <jakub@redhat.com>
2546
2547	PR c++/96901
2548	* constexpr.c (fundef_copies_table): Change type from
2549	hash_map<tree, tree> * to decl_tree_map *.
2550
25512020-09-03  Marek Polacek  <polacek@redhat.com>
2552
2553	PR c++/92812
2554	* cp-tree.h (do_aggregate_paren_init): Declare.
2555	* decl.c (do_aggregate_paren_init): New.
2556	(grok_reference_init): Use it.
2557	(check_initializer): Likewise.
2558	* init.c (perform_member_init): Handle initializing an array from
2559	a ()-list.  Use do_aggregate_paren_init.
2560
25612020-09-03  Jakub Jelinek  <jakub@redhat.com>
2562
2563	PR c++/96862
2564	* constexpr.c (cxx_eval_outermost_constant_expr): Temporarily disable
2565	flag_rounding_math during manifestly constant evaluation.
2566
25672020-09-01  Marek Polacek  <polacek@redhat.com>
2568
2569	PR c++/77841
2570	* init.c (build_new_1): Call reshape_init.
2571
25722020-09-01  Jakub Jelinek  <jakub@redhat.com>
2573
2574	PR c++/96867
2575	* semantics.c (handle_omp_array_sections_1): Test
2576	DECL_ARRAY_PARAMETER_P only on PARM_DECLs.
2577
25782020-08-31  Marek Polacek  <polacek@redhat.com>
2579	    Jason Merrill  <jason@redhat.com>
2580
2581	PR c++/93529
2582	* call.c (build_new_method_call_1): Use build_constructor_from_vec
2583	instead of build_tree_list_vec + build_constructor_from_list.
2584	* init.c (build_new_1): Handle new char[]{"foo"}.  Use
2585	build_constructor_from_vec instead of build_tree_list_vec +
2586	build_constructor_from_list.
2587	(build_new): Deduce the array size in new-expression if not
2588	present.  Handle ()-init.  Handle initializing an array from
2589	a string literal.
2590	* parser.c (cp_parser_new_type_id): Leave [] alone.
2591	(cp_parser_direct_new_declarator): Allow [].
2592	* pt.c (type_dependent_expression_p): In a NEW_EXPR, consider
2593	array types whose dimension has to be deduced type-dependent.
2594
25952020-08-27  Martin Liska  <mliska@suse.cz>
2596
2597	* class.c (build_vtbl_initializer): Set exact argument of a vector
2598	growth function to true.
2599	* constraint.cc (get_mapped_args): Likewise.
2600	* decl.c (cp_maybe_mangle_decomp): Likewise.
2601	(cp_finish_decomp): Likewise.
2602	* parser.c (cp_parser_omp_for_loop): Likewise.
2603	* pt.c (canonical_type_parameter): Likewise.
2604	* rtti.c (get_pseudo_ti_init): Likewise.
2605
26062020-08-26  Nathan Sidwell  <nathan@acm.org>
2607
2608	* decl.c (poplevel): A local-binding tree list holds the name in
2609	TREE_PURPOSE.
2610	* name-lookup.c (update_local_overload): Add id to TREE_PURPOSE.
2611	(lookup_name_1): Deal with local-binding error_mark_node marker.
2612	(op_unqualified_lookup): Return error_mark_node for 'nothing
2613	found'.  Retain global binding, check class binding here.
2614	(maybe_save_operator_binding): Reimplement to always cache a
2615	result.
2616	(push_operator_bindings): Deal with 'ignore' marker.
2617
26182020-08-25  Tobias Burnus  <tobias@codesourcery.com>
2619
2620	PR c/96678
2621	* semantics.c (handle_omp_array_sections_1): Talk about
2622	array function parameter in the error message.
2623
26242020-08-25  Jakub Jelinek  <jakub@redhat.com>
2625
2626	PR c++/96721
2627	* cp-tree.h (build_trivial_dtor_call): Add bool argument defaulted
2628	to false.
2629	* call.c (build_trivial_dtor_call): Add NO_PTR_DEREF argument.  If
2630	instance is a pointer and NO_PTR_DEREF is true, clobber the pointer
2631	rather than what it points to.
2632	* semantics.c (finish_call_expr): Call build_trivial_dtor_call with
2633	true as NO_PTR_DEREF.
2634
26352020-08-25  Jason Merrill  <jason@redhat.com>
2636
2637	PR c++/95428
2638	* optimize.c (populate_clone_array): Revert PR70462 change.
2639	(maybe_clone_body): Likewise.
2640
26412020-08-24  Nathan Sidwell  <nathan@acm.org>
2642
2643	* ptree.c (debug_overload): New.
2644
26452020-08-19  Jason Merrill  <jason@redhat.com>
2646
2647	DR 2369
2648	* cp-tree.h (push_tinst_level, push_tinst_level_loc): Declare.
2649	* constraint.cc (satisfy_declaration_constraints):
2650	Use add_outermost_template_args and push_tinst_level.
2651	* pt.c (add_outermost_template_args): Handle getting
2652	a TEMPLATE_DECL as the first argument.
2653	(push_tinst_level, push_tinst_level_loc): No longer static.
2654	(fn_type_unification): Check satisfaction before non-dependent
2655	conversions.
2656
26572020-08-18  Nathan Sidwell  <nathan@acm.org>
2658
2659	* cp-tree.h (SET_TYPE_TEMPLTE_INFO): Do not deal with ALIAS templates.
2660	* pt.c (lookup_template_class_1): Special-case alias template
2661	template_info setting.
2662
26632020-08-18  Jason Merrill  <jason@redhat.com>
2664
2665	PR c++/96199
2666	* pt.c (tsubst_aggr_type): Rewrite in C++17, too.
2667	(maybe_dependent_member_ref): Likewise.
2668	(build_deduction_guide): Re-substitute template parms.
2669	* cp-tree.h (struct push_nested_class_guard): New.
2670	* constraint.cc (get_normalized_constraints_from_decl): Use it.
2671
26722020-08-18  Jason Merrill  <jason@redhat.com>
2673
2674	PR c++/96199
2675	* pt.c (maybe_dependent_member_ref): New.
2676	(tsubst_copy) [CONST_DECL]: Use it.
2677	[VAR_DECL]: Likewise.
2678	(tsubst_aggr_type): Handle nested type.
2679
26802020-08-18  Nathan Sidwell  <nathan@acm.org>
2681
2682	* name-lookup.c (qualify_lookup): Drop lambda checking here.
2683	Reorder namespace & type checking.
2684	(lookup_name_1): Do hidden lambda checking here.
2685
26862020-08-14  Nathan Sidwell  <nathan@acm.org>
2687
2688	* name-lookup.h (lookup_name_real, lookup_name_nonclass): Rename
2689	to ...
2690	(lookup_name): ... these new overloads.
2691	* name-lookup.c (identifier_type_value_1): Rename lookup_name_real
2692	call.
2693	(lookup_name_real_1): Rename to ...
2694	(lookup_name_1): ... here.
2695	(lookup_name_real): Rename to ...
2696	(lookup_name): ... here.  Rename lookup_name_real_1 call.
2697	(lookup_name_nonclass): Delete.
2698	* call.c (build_operator_new_call): Rename lookup_name_real call.
2699	(add_operator_candidates): Likewise.
2700	(build_op_delete_call): Rename lookup_name_nonclass call.
2701	* parser.c (cp_parser_lookup_name): Likewise.
2702	* pt.c (tsubst_friend_class, lookup_init_capture_pack): Likewise.
2703	(tsubst_expr): Likewise.
2704	* semantics.c (capture_decltype): Likewise.
2705
27062020-08-14  Nathan Sidwell  <nathan@acm.org>
2707
2708	* cp-tree.h (LOOKUP_HIDDEN): Delete.
2709	(LOOKUP_PREFER_RVALUE): Adjust initializer.
2710	* name-lookup.h (enum class LOOK_want): Add HIDDEN_FRIEND and
2711	HIDDEN_LAMBDA flags.
2712	(lookup_name_real): Drop flags parm.
2713	(lookup_qualified_name): Drop find_hidden parm.
2714	* name-lookup.c (class name_lookup): Drop hidden field, adjust
2715	ctors.
2716	(name_lookup::add_overload): Check want for hiddenness.
2717	(name_lookup::process_binding): Likewise.
2718	(name_lookup::search_unqualified): Likewise.
2719	(identifier_type_value_1): Adjust lookup_name_real call.
2720	(set_decl_namespace): Adjust name_lookup ctor.
2721	(qualify_lookup): Drop flags parm, use want for hiddenness.
2722	(lookup_qualified_name): Drop find_hidden parm.
2723	(lookup_name_real_1): Drop flags parm, adjust qualify_lookup
2724	calls.
2725	(lookup_name_real): Drop flags parm.
2726	(lookup_name_nonclass, lookup_name): Adjust lookup_name_real
2727	calls.
2728	(lookup_type_scope_1): Adjust qualify_lookup calls.
2729	* call.c (build_operator_new_call): Adjust lookup_name_real call.
2730	(add_operator_candidates): Likewise.
2731	* coroutines.cc (morph_fn_to_coro): Adjust lookup_qualified_name
2732	call.
2733	* parser.c (cp_parser_lookup_name): Adjust lookup_name_real calls.
2734	* pt.c (check_explicit_specialization): Adjust
2735	lookup_qualified_name call.
2736	(deduction_guides_for): Likewise.
2737	(tsubst_friend_class): Adjust lookup_name_real call.
2738	(lookup_init_capture_pack): Likewise.
2739	(tsubst_expr): Likewise, don't look in namespaces.
2740	* semantics.c (capture_decltype): Adjust lookup_name_real.  Don't
2741	look in namespaces.
2742
27432020-08-14  Jason Merrill  <jason@redhat.com>
2744
2745	PR c++/90254
2746	PR c++/93711
2747	* cp-tree.h (unsafe_return_slot_p): Declare.
2748	* call.c (is_base_field_ref): Rename to unsafe_return_slot_p.
2749	(build_over_call): Check unsafe_return_slot_p.
2750	(build_special_member_call): Likewise.
2751	* init.c (expand_default_init): Likewise.
2752	* typeck2.c (split_nonconstant_init_1): Likewise.
2753
27542020-08-14  Nathan Sidwell  <nathan@acm.org>
2755
2756	* cp-tree.h (LOOKUP_PREFER_TYPES, LOOKUP_PREFER_NAMESPACES)
2757	(LOOKUP_NAMESPACES_ONLY, LOOKUP_TYPES_ONLY)
2758	(LOOKUP_QUALIFIERS_ONL): Delete.
2759	(LOOKUP_HIDDEN): Adjust.
2760	* name-lookup.h (enum class LOOK_want): New.
2761	(operator|, operator&): Overloads for it.
2762	(lookup_name_real): Replace prefer_type & namespaces_only with
2763	LOOK_want parm.
2764	(lookup_qualified_name): Replace prefer_type with LOOK_want.
2765	(lookup_name_prefer_type): Replace with ...
2766	(lookup_name): ... this.  New overload with LOOK_want parm.
2767	* name-lookup.c (struct name_lookup): Replace flags with want and
2768	hidden fields.  Adjust constructors.
2769	(name_lookyp::add_overload): Correct hidden stripping test.  Update
2770	for new LOOK_want type.
2771	(name_lookup::process_binding): Likewise.
2772	(name_lookup::search_unqualified): Use hidden flag.
2773	(identifier_type_value_1): Adjust lookup_name_real call.
2774	(set_decl_namespace): Adjust name_lookup ctor.
2775	(lookup_flags): Delete.
2776	(qualify_lookup): Add LOOK_want parm, adjust.
2777	(lookup_qualified_name): Replace prefer_type parm with LOOK_want.
2778	(lookup_name_real_1): Replace prefer_type and namespaces_only with
2779	LOOK_want parm.
2780	(lookup_name_real): Likewise.
2781	(lookup_name_nonclass, lookup_name): Adjust lookup_name_real call.
2782	(lookup_name_prefer_type): Rename to ...
2783	(lookup_name): ... here.  New overload with LOOK_want parm.
2784	(lookup_type_scope_1): Adjust qualify_lookup calls.
2785	* call.c (build_operator_new_call)
2786	(add_operator_candidates): Adjust lookup_name_real calls.
2787	* coroutines.cc (find_coro_traits_template_decl)
2788	(find_coro_handle_template_decl, morph_fn_to_coro): Adjust
2789	lookup_qualified_name calls.
2790	* cp-objcp-common.c (identifier_global_tag): Likewise.
2791	* decl.c (get_tuple_size, get_tuple_decomp_init): Likewise.
2792	(lookup_and_check_tag): Use lookup_name overload.
2793	* parser.c (cp_parser_userdef_numeric_literal): Adjust
2794	lookup_qualified_name call.
2795	(prefer_arg_type): Drop template_mem_access parm, return LOOK_want
2796	value.
2797	(cp_parser_lookup_name): Adjust lookup_member, lookup_name_real
2798	calls.
2799	* pt.c (check_explicit_specialization): Adjust lookup_qualified_name
2800	call.
2801	(tsubst_copy_and_build, tsubst_qualified_name): Likewise
2802	(deduction_guides_for): Likewise.
2803	(tsubst_friend_class): Adjust lookup_name_real call.
2804	(lookup_init_capture, tsubst_expr): Likewise.
2805	* rtti.c (emit_support_tinfos): Adjust lookup_qualified_name call.
2806	* semantics.c (omp_reduction_lookup): Likewise.
2807	(capture_decltype): Adjust lookup_name_real call.
2808
28092020-08-13  Nathan Sidwell  <nathan@acm.org>
2810
2811	* name-lookup.h (enum class LOOK_where): New.
2812	(operator|, operator&): Overloads for it.
2813	(lookup_name_real): Replace NONCLASS & BLOCK_P parms with WHERE.
2814	* name-lookup.c (identifier_type_value_w): Adjust
2815	lookup_name_real call.
2816	(lookup_name_real_1): Replace NONCLASS and BLOCK_P parameters
2817	with WHERE bitmask. Don't search namespaces if not asked to.
2818	(lookup_name_real): Adjust lookup_name_real_1 call.
2819	(lookup_name_nonclass, lookup_name)
2820	(lookup_name_prefer_type): Likewise.
2821	* call.c (build_operator_new_call)
2822	(add_operator_candidates): Adjust lookup_name_real calls.
2823	* parser.c (cp_parser_lookup_name): Likewise.
2824	* pt.c (tsubst_friend_class, lookup_init_capture_pack)
2825	(tsubst_expr): Likewise.
2826	* semantics.c (capture_decltype): Likewise.
2827
28282020-08-13  Marek Polacek  <polacek@redhat.com>
2829
2830	PR c++/92812
2831	* typeck.c (build_static_cast_1): Implement P1975R0 by allowing
2832	static_cast to aggregate type.
2833
28342020-08-10  Jakub Jelinek  <jakub@redhat.com>
2835
2836	PR c++/96497
2837	* constexpr.c (cxx_eval_binary_expression): For SPACESHIP_EXPR, tail
2838	call cxx_eval_constant_expression after genericize_spaceship to avoid
2839	undesirable further VERIFY_CONSTANT.
2840
28412020-08-10  Patrick Palka  <ppalka@redhat.com>
2842
2843	* pt.c (resolve_overloaded_unification): Drop functions with
2844	unsatisfied constraints.
2845	(resolve_nondeduced_context): Likewise.
2846
28472020-08-05  Patrick Palka  <ppalka@redhat.com>
2848	    Jason Merrill  <jason@redhat.com>
2849
2850	PR c++/96282
2851	* constexpr.c (cxx_eval_vec_init_1): Truncate ctx->ctor and
2852	then clear CONSTRUCTOR_NO_CLEARING on each appended element
2853	initializer if we're initializing a previously zero-initialized
2854	array object.
2855
28562020-08-04  Marek Polacek  <polacek@redhat.com>
2857
2858	PR c++/96082
2859	* parser.c (cp_parser_elaborated_type_specifier): Allow
2860	'template' following ::.
2861
28622020-08-04  Nathan Sidwell  <nathan@acm.org>
2863
2864	* parser.c (cp_parser_explicit_specialization): Refactor
2865	to avoid leak of num_template_parameter_lists value.
2866
28672020-08-04  Patrick Palka  <ppalka@redhat.com>
2868
2869	PR c++/94024
2870	* init.c (sort_mem_initializers): Preserve TREE_TYPE of the
2871	member initializer list node.
2872	(emit_mem_initializers): Set input_location when performing each
2873	member initialization.
2874	* parser.c (cp_parser_mem_initializer): Attach the source
2875	location of this initializer to a dummy EMPTY_CLASS_EXPR
2876	within the TREE_TYPE of the list node.
2877	* pt.c (tsubst_initializer_list): Preserve TREE_TYPE of the
2878	member initializer list node.
2879
28802020-08-03  Marek Polacek  <polacek@redhat.com>
2881
2882	* cp-tree.h (after_nsdmi_defaulted_late_checks): Remove.
2883
28842020-08-03  Marek Polacek  <polacek@redhat.com>
2885
2886	DR 2032
2887	PR c++/96218
2888	* pt.c (check_default_tmpl_args): Also consider variable
2889	templates.
2890
28912020-07-31  Jakub Jelinek  <jakub@redhat.com>
2892
2893	PR c++/96182
2894	* decl.c (finish_function): In constexpr functions use for C++14 and
2895	later error instead of warning if no return statement is present and
2896	diagnose it regardless of warn_return_type.  Move the warn_return_type
2897	diagnostics earlier in the function.
2898
28992020-07-31  Martin Sebor  <msebor@redhat.com>
2900
2901	PR c++/96003
2902	* class.c (build_base_path): Set no-warning bit on the synthesized
2903	conditional expression in static_cast.
2904
29052020-07-31  Richard Biener  <rguenther@suse.de>
2906
2907	PR debug/96383
2908	* cp-objcp-common.h (LANG_HOOKS_FINALIZE_EARLY_DEBUG):
2909	Define to c_common_finalize_early_debug.
2910
29112020-07-31  Patrick Palka  <ppalka@redhat.com>
2912
2913	PR c++/96197
2914	* constexpr.c (cxx_eval_constant_expression) <case CONST_DECL>:
2915	Pass false to decl_constant_value and decl_really_constant_value
2916	so that they don't unshare their result.
2917	* cp-tree.h (decl_constant_value): New declaration with an added
2918	bool parameter.
2919	(decl_really_constant_value): Add bool parameter defaulting to
2920	true to existing declaration.
2921	* init.c (constant_value_1): Add bool parameter which controls
2922	whether to unshare the initializer before returning.  Call
2923	unshare_expr at most once.
2924	(scalar_constant_value): Pass true to constant_value_1's new
2925	bool parameter.
2926	(decl_really_constant_value): Add bool parameter and forward it
2927	to constant_value_1.
2928	(decl_constant_value): Likewise, but instead define a new
2929	overload with an added bool parameter.
2930
29312020-07-30  Patrick Palka  <ppalka@redhat.com>
2932
2933	PR c++/64194
2934	* pt.c (resolve_overloaded_unification): If the function
2935	template specialization has a placeholder return type,
2936	then instantiate it before attempting unification.
2937
29382020-07-30  Patrick Palka  <ppalka@redhat.com>
2939
2940	PR c++/95486
2941	* pt.c (alias_ctad_tweaks): Call remove_constraints before
2942	calling set_constraints.
2943
29442020-07-30  Patrick Palka  <ppalka@redhat.com>
2945
2946	PR c++/96106
2947	* pt.c (reduce_template_parm_level): Propagate DECL_VIRTUAL_P
2948	from the original TEMPLATE_PARM_DECL to the new lowered one.
2949
29502020-07-30  Patrick Palka  <ppalka@redhat.com>
2951
2952	PR c++/96164
2953	* constraint.cc (constraints_satisfied_p): Return true if
2954	!flags_concepts.
2955	* pt.c (do_type_instantiation): Update a paragraph taken from
2956	[temp.explicit] to reflect the latest specification.  Don't
2957	instantiate a member with unsatisfied constraints.
2958
29592020-07-29  Jason Merrill  <jason@redhat.com>
2960
2961	PR c++/91427
2962	* cp-tree.h (IMPLICIT_RVALUE_P): New.
2963	(enum cp_lvalue_kind_flags): Add clk_implicit_rval.
2964	(implicit_rvalue_p, set_implicit_rvalue_p): New.
2965	* call.c (reference_binding): Check clk_implicit_rval.
2966	(build_over_call): Adjust C++20 implicit move.
2967	* coroutines.cc (finish_co_return_stmt): Simplify implicit move.
2968	* except.c (build_throw): Adjust C++20 implicit move.
2969	* pt.c (tsubst_copy_and_build) [STATIC_CAST_EXPR]: Propagate
2970	IMPLICIT_RVALUE_P.
2971	* tree.c (lvalue_kind): Set clk_implicit_rval.
2972	* typeck.c (treat_lvalue_as_rvalue_p): Overhaul.
2973	(maybe_warn_pessimizing_move): Adjust.
2974	(check_return_expr): Adjust C++20 implicit move.
2975
29762020-07-29  Jason Merrill  <jason@redhat.com>
2977
2978	PR c++/91212
2979	* call.c (build_over_call): Don't call a const ref
2980	overload for implicit move.
2981
29822020-07-28  Nathan Sidwell  <nathan@acm.org>
2983
2984	* cp-gimplify.c (cp_genericize_r): Set IMPORTED_DECL's context.
2985	* cp-objcp-common.c (cp_pushdecl): Set decl's context.
2986	* decl.c (grokfndecl): Make DECL_CONTEXT setting clearer.
2987
29882020-07-28  Nathan Sidwell  <nathan@acm.org>
2989
2990	* class.c (fixup_type_variants): Copy TYPE_SIZE and
2991	TYPE_SIZE_UINIT.
2992	(finish_struct): Call it.
2993
29942020-07-28  Nathan Sidwell  <nathan@acm.org>
2995
2996	* ptree.c (cxx_print_decl): Better indentation.
2997
29982020-07-28  Jakub Jelinek  <jakub@redhat.com>
2999	    Mark Wielaard  <mark@klomp.org>
3000
3001	PR c++/96328
3002	* parser.c (cp_lexer_safe_previous_token): Don't call
3003	cp_lexer_previous_token, instead inline it by hand and return NULL
3004	instead of failing assertion if all previous tokens until the first
3005	one are purged.
3006	(cp_parser_error_1): Optimize - only call cp_lexer_safe_previous_token
3007	if token->type is CPP_NAME.  Use cp_lexer_safe_previous_token instead
3008	of cp_lexer_previous_token for the missing_token_desc != RT_NONE
3009	case too.
3010
30112020-07-27  Nathan Sidwell  <nathan@acm.org>
3012
3013	* cp-tree.h (enum cp_tree_index): Add CPTI_AS_BASE_IDENTIFIER.
3014	(as_base_identifier): Define.
3015	* decl.c (initialize_predifined_identifiers): Initialize as_base
3016	identifier.
3017	* class.c (layout_class_type): Name the as-base type.  Zap
3018	NSDMI its fields may have.
3019
30202020-07-22  Nathan Sidwell  <nathan@acm.org>
3021
3022	* class.c (maybe_add_class_template_decl_list): Don't add CONST_DECLs.
3023
30242020-07-22  Nathan Sidwell  <nathan@acm.org>
3025
3026	* typeck.c (structural_comptypes): [DECLTYPE_TYPE] break
3027	apart complex if.
3028	[UNDERLYING_TYPE]: Use an if.
3029	[TYPEOF_TYPE]: New.
3030
30312020-07-22  Nathan Sidwell  <nathan@acm.org>
3032
3033	* decl.c (decls_match): Move variables into scopes
3034	they're needed in.
3035	(duplicate_decls): Use STRIP_TEMPLATE.
3036	(build_typename_type): Move var decls to their assignments.
3037	(begin_function_body): Likewise.
3038	* decl2.c (get_guard): Likewise.
3039	(mark_used): Use true for truthiness.
3040	* error.c (dump_aggr_type): Hold the decl in a var called
3041	'decl', not 'name'.
3042
30432020-07-22  Nathan Sidwell  <nathan@acm.org>
3044
3045	* cp-tree.h (struct tree_lambda_expr): Shrink
3046	default_capture_mode & discriminator.
3047
30482020-07-22  Nathan Sidwell  <nathan@acm.org>
3049
3050	* mangle.c (decl_is_template_id): Rename to ...
3051	(maybe_template_info): ... here.  Return the template info,
3052	rather than use a pointer.  Adjust all callers.
3053	(find_substitution): Use template_args_equal, rather than
3054	local check.
3055
30562020-07-22  Tobias Burnus  <tobias@codesourcery.com>
3057
3058	* parser.c (cp_parser_omp_clause_hint): Require nonnegative hint.
3059	(cp_parser_omp_critical): Permit hint(0) clause without named critical.
3060	* pt.c (tsubst_expr): Re-check the latter for templates.
3061
30622020-07-21  Sunil K Pandey  <skpgkp2@gmail.com>
3063
3064	PR target/95237
3065	* decl.c (cp_finish_decl): Call target hook
3066	lower_local_decl_alignment to lower local decl alignment.
3067
30682020-07-21  Nathan Sidwell  <nathan@acm.org>
3069
3070	* parser.c (cp_lexer_consume_token): Drop PRAGMA_EOL assert.
3071	(cp_parser_skip_to_closing_parenthesis_1): Only pass start token
3072	to pragma skipper if recovering.
3073	(cp_parser_skip_to_pragma_eol): Only purge and change pragma
3074	state when recovering.
3075
30762020-07-20  Jason Merrill  <jason@redhat.com>
3077
3078	* pt.c (type_dependent_expression_p): A pseudo-dtor can be
3079	dependent.
3080	* semantics.c (finish_call_expr): Use build_trivial_dtor_call for
3081	pseudo-destructor.
3082	(finish_pseudo_destructor_expr): Leave type NULL for dependent arg.
3083
30842020-07-20  Jason Merrill  <jason@redhat.com>
3085
3086	* mangle.c (write_base_ref): New.
3087	(write_expression): Use it for base field COMPONENT_REFs.
3088	* pt.c (invalid_tparm_referent_p): Canonicalize the type
3089	of array offsets.  Allow subobjects.
3090
30912020-07-20  Jason Merrill  <jason@redhat.com>
3092
3093	* pt.c (collect_ctor_idx_types): Add 'const' when deducing from
3094	a string constant.
3095
30962020-07-17  Marek Polacek  <polacek@redhat.com>
3097
3098	PR c++/79815
3099	* decl.c (grokdeclarator): Detect cv-qual decltype(auto).
3100	* pt.c (do_auto_deduction): Likewise.
3101
31022020-07-16  Iain Sandoe  <iain@sandoe.co.uk>
3103
3104	PR c++/95591
3105	PR c++/95599
3106	PR c++/95823
3107	PR c++/95824
3108	PR c++/95895
3109	* coroutines.cc (struct coro_ret_data): Delete.
3110	(coro_maybe_expand_co_return): Delete.
3111	(co_return_expander): Delete.
3112	(expand_co_returns): Delete.
3113	(co_await_find_in_subtree): Remove unused name.
3114	(build_actor_fn): Remove unused parm, remove handling
3115	for co_return expansion.
3116	(register_await_info): Demote duplicate info message to a
3117	warning.
3118	(coro_make_frame_entry): Move closer to use site.
3119	(struct susp_frame_data): Add fields for final suspend label
3120	and a flag to indicate await expressions with initializers.
3121	(captures_temporary): Delete.
3122	(register_awaits): Remove unused code, update comments.
3123	(find_any_await): New.
3124	(tmp_target_expr_p): New.
3125	(struct interesting): New.
3126	(find_interesting_subtree): New.
3127	(struct var_nest_node): New.
3128	(flatten_await_stmt): New.
3129	(handle_nested_conditionals): New.
3130	(process_conditional): New.
3131	(replace_statement_captures): Rename to...
3132	(maybe_promote_temps): ... this.
3133	(maybe_promote_captured_temps): Delete.
3134	(analyze_expression_awaits): Check for await expressions with
3135	initializers.  Simplify handling for truth-and/or-if.
3136	(expand_one_truth_if): Simplify (map cases that need expansion
3137	to COND_EXPR).
3138	(await_statement_walker): Handle CO_RETURN_EXPR. Simplify the
3139	handling for truth-and/or-if expressions.
3140	(register_local_var_uses): Ensure that we create names in the
3141	implementation namespace.
3142	(morph_fn_to_coro): Add final suspend label to suspend frame
3143	callback data and remove it from the build_actor_fn call.
3144
31452020-07-16  Marek Polacek  <polacek@redhat.com>
3146
3147	* call.c (convert_like): Remove macro and introduce a new
3148	wrapper instead.
3149	(convert_like_with_context): Likewise.
3150	(convert_like_real): Rename to convert_like.
3151	(convert_like_real_1): Rename to convert_like_internal.  Call
3152	convert_like instead of convert_like_real therein.
3153	(perform_direct_initialization_if_possible): Call convert_like
3154	instead of convert_like_real.
3155
31562020-07-16  Iain Sandoe  <iain@sandoe.co.uk>
3157
3158	* coroutines.cc: Correct some spelling errors
3159	in comments.
3160
31612020-07-15  Nathan Sidwell  <nathan@acm.org>
3162
3163	* parser.c (cp_parser_declaration): Avoid copying tokens.
3164	(cp_parser_block_declaration): RAII token pointer.
3165
31662020-07-15  Nathan Sidwell  <nathan@acm.org>
3167
3168	* parser.c (cp_parser_skip_to_closing_parenthesis_1): Deal with
3169	meeting a deferred pragma.
3170	(cp_parser_skip_to_end_of_statement): Likewise.
3171	(cp_parser_skip_to_end_of_block_or_statement): Likewise.
3172	(cp_parser_skip_to_pragma_eol): We should never meet EOF.
3173	(cp_parser_omp_declare_simd): Likewise.
3174	(cp_parser_omp_declare_reduction, cp_parser_oacc_routine)
3175	(pragma_lex): Likewise.
3176
31772020-07-14  Marek Polacek  <polacek@redhat.com>
3178
3179	PR c++/95789
3180	PR c++/96104
3181	PR c++/96179
3182	* call.c (convert_like_real_1): Renamed from convert_like_real.
3183	(convert_like_real): New wrapper for convert_like_real_1.
3184
31852020-07-14  Nathan Sidwell  <nathan@acm.org>
3186
3187	* parser.c (cp_lexer_alloc): Do not deal with PCH here.
3188	(cp_lexer_new_main): Deal with PCH here.  Store the tokens directly
3189	into the buffer.
3190	(cp_lexer_new_from_tokens): Assert last token isn't purged either.
3191	(cp_lexer_get_preprocessor_token): Change first arg to flags, adjust.
3192	(cp_parser_new): Pass the lexer in, don't create it here.
3193	(cp_parser_translation_unit): Initialize access checks here.
3194	(cp_parser_initial_pragma): First token is provided by caller,
3195	don't deal with PCH stopping here.  Adjust error message.
3196	(c_parse_file): Adjust, change error message to avoid C++20 module
3197	confusion.
3198
31992020-07-14  Nathan Sidwell  <nathan@acm.org>
3200
3201	* ptree.c (cxx_print_type): Add TYPEOF_TYPE and BASES.
3202
32032020-07-14  Nathan Sidwell  <nathan@acm.org>
3204
3205	* class.c (build_base_field_1): Cache CLASSTYPE_AS_BASE.
3206	(build_self_reference): Rename value -> decl.
3207	(dump_class_hierarchy_1): Cache CLASSTYPE_AS_BASE.
3208
32092020-07-14  Marek Polacek  <polacek@redhat.com>
3210
3211	PR c++/95820
3212	* decl.c (grokdeclarator) <case cdk_function>: Check also
3213	pointers/references/... to functions.
3214
32152020-07-14  Nathan Sidwell  <nathan@acm.org>
3216
3217	* cp-tree.h: Correct some tree lang flag comments,
3218	reformat some structure definitions.  Note some structure
3219	sizes.  Clarify some comments.
3220	(yyungetc): Delete.  Not been a thing for some time.
3221	* class.c (copy_fndecl_with_name): Comment.
3222	(check_bases_and_members): Unnecessary {}.
3223	(layout_class_type): Comment.
3224	* cp-tree.def (UNBOUND_CLASS_TEMPLATE): Adjust comment.
3225	* decl.c:  Fix some formatting & whitespace issues.
3226	(function_requirements_equivalent_p): Note why
3227	substitutions are needed.
3228	* decl2.c (no_linkage_error): Note that heroics about
3229	'typedef struct { ... };' are no longer needed.
3230	* method.c: Whitespace.
3231	* name-lookup.c: Whitespace.
3232	(add_decl_to_level): Reformat a line.
3233	(print_binding_stack): Mark as DEBUG_FUNCTION.
3234	(has_using_namespace_std_directive_p): Delete comment.
3235	* pt.c: Whitespace
3236	* ptree.c: Whitespace.
3237	* rtti.c: Whitespace & comment.
3238	* tree.c: Comment.
3239	* typeck.c (structural_comptypes): Add comment.
3240
32412020-07-13  Nathan Sidwell  <nathan@acm.org>
3242
3243	* Make-lang.in (c++.disclean): Likewise.
3244
32452020-07-13  Marek Polacek  <polacek@redhat.com>
3246
3247	PR c++/96077
3248	* parser.c (cp_parser_enum_specifier): Commit to tentative parse
3249	after we've seen an opening brace.
3250
32512020-07-10  Jason Merrill  <jason@redhat.com>
3252
3253	* tree.c (structural_type_p): Allow unions.
3254	* mangle.c (write_expression): Express unions with a designator.
3255
32562020-07-10  Jason Merrill  <jason@redhat.com>
3257
3258	* pt.c (convert_nontype_argument): Handle REAL_TYPE.
3259	(invalid_nontype_parm_type_p): Allow all structural types.
3260	* tree.c (structural_type_p): Use SCALAR_TYPE_P.
3261
32622020-07-10  Jason Merrill  <jason@redhat.com>
3263
3264	PR c++/96105
3265	PR c++/96052
3266	PR c++/95976
3267	* class.c (check_field_decls): An array of empty classes is not an
3268	empty data member.
3269	(layout_empty_base_or_field): Handle explicit alignment.
3270	Fix union handling.
3271
32722020-07-09  Julian Brown  <julian@codesourcery.com>
3273	    Thomas Schwinge  <thomas@codesourcery.com>
3274
3275	PR middle-end/95270
3276	* semantics.c (finish_omp_clauses): Likewise.
3277
32782020-07-09  Patrick Palka  <ppalka@redhat.com>
3279
3280	PR c++/96132
3281	* constexpr.c (potential_constant_expression_1) <case PARM_DECL>:
3282	Restore dependent_type_p check that guarded the call to
3283	is_really_empty_class.
3284
32852020-07-08  Patrick Palka  <ppalka@redhat.com>
3286
3287	PR c++/95497
3288	* constexpr.c (potential_constant_expression_1) <case PARM_DECL>:
3289	When processing_template_decl, check COMPLETE_TYPE_P before
3290	calling is_really_empty_class.  Don't check dependent_type_p.
3291
32922020-07-08  Marek Polacek  <polacek@redhat.com>
3293
3294	PR c++/96103
3295	* parser.c (cp_parser_decltype): Print error about using decltype(auto)
3296	in C++11.  Check that the token following "auto" is ")".
3297
32982020-07-07  Patrick Palka  <ppalka@redhat.com>
3299
3300	PR c++/95303
3301	* cxx-pretty-print.c (pp_cxx_unqualified_id): Check
3302	PRIMARY_TEMPLATE_P before printing the innermost template
3303	arguments.
3304
33052020-07-07  Martin Sebor  <msebor@redhat.com>
3306
3307	PR c++/96063
3308	* parser.c (class_decl_loc_t::diag_mismatched_tags): Print notes only
3309	if warning_at returns nonzero.
3310
33112020-07-06  Martin Sebor  <msebor@redhat.com>
3312
3313	PR c++/95984
3314	* call.c (build_over_call): Check calls only when tf_warning is set.
3315
33162020-07-06  Nathan Sidwell  <nathan@acm.org>
3317
3318	* decl.c (push_library_fn): Return the decl pushdecl_toplevel returns.
3319	* except.c (verify_library_fn): Replace with ...
3320	(declare_library_fn_1): ... this fn.  Always push the fn.
3321	(declare_library_fn): Call it.
3322	(build_throw): Call declare_library_fn_1.
3323
33242020-07-06  Jonathan Wakely  <jwakely@redhat.com>
3325
3326	PR c++/96068
3327	* parser.c (cp_parser_toplevel_declaration): Only do pedwarn for
3328	empty-declaration in C++98.
3329
33302020-07-02  Jason Merrill  <jason@redhat.com>
3331	    Jakub Jelinek  <jakub@redhat.com>
3332
3333	* decl.c (grokfndecl): Allow consteval virtual.
3334	* search.c (check_final_overrider): Check consteval mismatch.
3335	* constexpr.c (cxx_eval_thunk_call): New.
3336	(cxx_eval_call_expression): Call it.
3337	* cvt.c (cp_get_fndecl_from_callee): Handle FDESC_EXPR.
3338	* decl2.c (mark_vtable_entries): Track vtables with consteval.
3339	(maybe_emit_vtables): Pass consteval_vtables through.
3340	(clear_consteval_vfns): Replace consteval with nullptr.
3341	(c_parse_final_cleanups): Call it.
3342
33432020-07-01  Nathan Sidwell  <nathan@acm.org>
3344
3345	* class.c (copy_fndecl_with_name): Add additional predicate args, do
3346	not deduce them locally.
3347	(copy_operator_fn): Adjust copy_fndecl_with_name call.
3348	(build_clone): Add vtt and inherited predicate args.  Pass through
3349	to copy_fndecl_with_name call.
3350	(build_cdtor_clones): Likewise, pass through to build_clone as
3351	needed.
3352	(build_cdtor): Determine vtt and inherited here.
3353	* cp-tree.h (DECL_NEEDS_CTT_PARM_P): Delete.
3354
33552020-06-30  Nathan Sidwell  <nathan@acm.org>
3356
3357	* cp-tree.h (copy_fndecl_with_name): Rename to ...
3358	(copy_operatorn_fn): ... this.  Change arg type.
3359	(clone_function_decl): Rename to ...
3360	(clone_cdtor): ... this.
3361	* class.c (copy_fndecl_with_name): Make static.
3362	(copy_operator_fn): New wrapper.
3363	(build_clones): Rename to ...
3364	(build_cdtor_clones): ... this.
3365	(clone_function_decl): Rename to ...
3366	(clone_cdtor): ... this.  Adjust build_clones calls.
3367	(clone_constructors_and_destructors): Adjust clone_function_decl
3368	calls.
3369	* method.c (implicitly_declare_fn): Adjust copy_fndecl_with_name
3370	call.
3371	(lazily_declare_fn): Adjust clone_function_decl call.
3372	* pt.c (tsubst_function_decl): Likewise.
3373	(instantiate_template_1): Likewise.
3374
33752020-06-30  Iain Sandoe  <iain@sandoe.co.uk>
3376
3377	* coroutines.cc (morph_fn_to_coro): Remove trailing
3378	space in a diagnostic.
3379
33802020-06-30  Iain Sandoe  <iain@sandoe.co.uk>
3381
3382	* coroutines.cc (expand_one_await_expression): Remove
3383	code dealing with initial suspend.
3384	(build_actor_fn): Remove code special-casing initial
3385	and final suspend. Handle the final suspend and marking
3386	of the coroutine as done.
3387	(coro_rewrite_function_body): New.
3388	(bind_expr_find_in_subtree): Remove.
3389	(coro_body_contains_bind_expr_p): Remove.
3390	(morph_fn_to_coro): Split the rewrite of the original
3391	function into coro_rewrite_function_body and call it.
3392
33932020-06-29  Marek Polacek  <polacek@redhat.com>
3394
3395	PR c++/94553
3396	* decl.c (duplicate_decls): Make sure a concept or a variable
3397	template is unique in its declarative region.
3398
33992020-06-29  Marek Polacek  <polacek@redhat.com>
3400
3401	PR c++/95568
3402	* pt.c (collect_ctor_idx_types): Use TREE_TYPE.
3403
34042020-06-28  Iain Sandoe  <iain@sandoe.co.uk>
3405
3406	PR c++/95711
3407	* coroutines.cc (register_local_var_uses): Skip past
3408	namespace decls.
3409
34102020-06-27  Iain Sandoe  <iain@sandoe.co.uk>
3411
3412	PR c++/95736
3413	* coroutines.cc (get_awaitable_var): New helper.
3414	(build_co_await): Check more carefully before
3415	copying an awaitable.
3416	(expand_one_await_expression): No initializer
3417	is required when the awaitable is not a temp.
3418	(register_awaits): Remove handling that is now
3419	completed when the await expression is built.
3420
34212020-06-27  Iain Sandoe  <iain@sandoe.co.uk>
3422
3423	* coroutines.cc (morph_fn_to_coro): Diagnose unavailable
3424	get_return_object_on_allocation_failure.
3425
34262020-06-26  Iain Sandoe  <iain@sandoe.co.uk>
3427
3428	PR c++/95519
3429	* coroutines.cc (struct coroutine_info):Add a field
3430	to hold computed p.return_void expressions.
3431	(coro_build_promise_expression): New.
3432	(get_coroutine_return_void_expr): New.
3433	(finish_co_yield_expr): Build the promise expression
3434	using coro_build_promise_expression.
3435	(finish_co_return_stmt): Likewise.
3436	(build_init_or_final_await): Likewise.
3437	(morph_fn_to_coro): Likewise, for several cases.
3438
34392020-06-26  Iain Sandoe  <iain@sandoe.co.uk>
3440
3441	* coroutines.cc (morph_fn_to_coro): Handle error
3442	returns in building g-r-o-o-a-f expressions.
3443
34442020-06-24  Nicholas Krause  <xerofoify@gmail.com>
3445
3446	PR c++/95672
3447	* typeck2.c (cxx_incomplete_type_diagnostic): Add missing
3448	TYPE_EXPANSION_PACK check for diagnosing incomplete types in
3449	cxx_incomplete_type_diagnostic.
3450
34512020-06-24  Iain Sandoe  <iain@sandoe.co.uk>
3452
3453	PR c++/95518
3454	PR c++/95813
3455	* coroutines.cc (act_des_fn): Copy function
3456	attributes onto the outlined coroutine helpers.
3457
34582020-06-24  Jason Merrill  <jason@redhat.com>
3459
3460	* call.c (build_over_call): Only call build_base_path once.
3461
34622020-06-24  Jason Merrill  <jason@redhat.com>
3463
3464	PR c++/95719
3465	* call.c (build_over_call): Look up the overrider in base_binfo.
3466	* class.c (lookup_vfn_in_binfo): Look through BINFO_PRIMARY_P.
3467
34682020-06-23  Jason Merrill  <jason@redhat.com>
3469
3470	PR c++/93976
3471	Implement C++20 P2082R1, Fixing CTAD for aggregates.
3472	* cp-tree.h (TPARMS_PRIMARY_TEMPLATE): Split out from...
3473	(DECL_PRIMARY_TEMPLATE): ...here.
3474	(builtin_guide_p): Declare.
3475	* decl.c (reshape_init_class): Handle bases of a template.
3476	(reshape_init_r): An array with dependent bound takes a single
3477	initializer.
3478	* pt.c (tsubst_default_argument): Shortcut {}.
3479	(unify_pack_expansion): Allow omitted arguments to trailing pack.
3480	(builtin_guide_p): New.
3481	(collect_ctor_idx_types): Give a trailing pack a {} default
3482	argument.  Handle arrays better.
3483
34842020-06-23  Iain Sandoe  <iain@sandoe.co.uk>
3485
3486	PR c++/95477
3487	* coroutines.cc (morph_fn_to_coro): Apply a cleanup to
3488	the get return object when the DTOR is non-trivial.
3489
34902020-06-20  Iain Sandoe  <iain@sandoe.co.uk>
3491
3492	PR c++/95505
3493	* coroutines.cc (morph_fn_to_coro): Update handling of
3494	get-return-object-on-allocation-fail and diagnose missing
3495	std::nothrow.
3496
34972020-06-20  Jason Merrill  <jason@redhat.com>
3498
3499	* call.c (joust): Only compare constraints for non-template
3500	candidates with matching parameters.
3501	* pt.c (tsubst_pack_expansion): Fix getting a type parameter
3502	pack.
3503	(more_specialized_fn): Only compare constraints for candidates with
3504	matching parameters.
3505
35062020-06-19  Jason Merrill  <jason@redhat.com>
3507
3508	* method.c (early_check_defaulted_comparison): Allow defaulting
3509	comparison outside class.  Complain if non-member operator isn't a
3510	friend.
3511
35122020-06-18  Jason Merrill  <jason@redhat.com>
3513
3514	* method.c (early_check_defaulted_comparison): Check for &&.
3515	(build_comparison_op): Allow empty union.  Diagnose non-category
3516	type.
3517	(common_comparison_type): Remove handling for non-category type.
3518
35192020-06-18  Marek Polacek  <polacek@redhat.com>
3520
3521	PR c++/95735
3522	* pt.c (finish_template_variable): Return if
3523	coerce_innermost_template_parms return error_mark_node.
3524
35252020-06-18  Marek Polacek  <polacek@redhat.com>
3526
3527	PR c++/95728
3528	* pt.c (tsubst_copy_and_build) <case NEW_EXPR>: Return error_mark_node
3529	if placement is erroneous.
3530
35312020-06-17  Jonathan Wakely  <jwakely@redhat.com>
3532
3533	PR c++/66159
3534	* parser.c (cp_parser_elaborated_type_specifier): Do not warn
3535	unless in a declaration.
3536
35372020-06-17  Jason Merrill  <jason@redhat.com>
3538
3539	* cp-tree.h (copy_fndecl_with_name): Declare.
3540	* class.c (copy_fndecl_with_name): Split out from...
3541	(build_clone): ...here.
3542	(add_implicitly_declared_members): Add op== to TYPE_FIELDS.
3543	* method.c (implicitly_declare_fn): Use copy_fndecl_with_name.
3544
35452020-06-17  Jason Merrill  <jason@redhat.com>
3546
3547	* call.c (build_new_op_1): Don't look for a CALL_EXPR when
3548	calling a consteval function.
3549
35502020-06-17  Jason Merrill  <jason@redhat.com>
3551
3552	* decl2.c (grokfield): Pass SD_DEFAULTED and SD_DELETED.
3553	* decl.c (duplicate_decls): Reduce error for delete
3554	after earlier declaration to pedwarn.
3555
35562020-06-17  Marek Polacek  <polacek@redhat.com>
3557
3558	PR c++/95508
3559	* constexpr.c (maybe_fold_non_dependent_expr): New.
3560	* cp-tree.h (maybe_fold_non_dependent_expr): Declare.
3561	* typeck.c (cp_build_array_ref): Call maybe_fold_non_dependent_expr
3562	instead of maybe_constant_value.
3563
35642020-06-16  Marek Polacek  <polacek@redhat.com>
3565
3566	PR c++/95369
3567	* call.c (add_list_candidates): Return if a designated initializer
3568	is used with a non-aggregate.
3569	(implicit_conversion_error): Give an error for the case above.
3570
35712020-06-16  Marek Polacek  <polacek@redhat.com>
3572
3573	PR c++/95560
3574	* name-lookup.c (check_local_shadow): Check if types are
3575	non-null before calling same_type_p.
3576
35772020-06-16  Jakub Jelinek  <jakub@redhat.com>
3578
3579	* semantics.c (handle_omp_for_class_iterator): Adjust
3580	c_omp_check_loop_iv_exprs caller.
3581	(finish_omp_for): Likewise.  Don't call fold_build_cleanup_point_expr
3582	before calling c_finish_omp_for and c_omp_check_loop_iv, move it
3583	after those calls.
3584	* pt.c (tsubst_omp_for_iterator): Handle non-rectangular loops.
3585
35862020-06-16  Jakub Jelinek  <jakub@redhat.com>
3587
3588	* parser.c (cp_parser_omp_clause_schedule): Reject modifier separated
3589	from kind by comma rather than colon.
3590
35912020-06-16  Patrick Palka  <ppalka@redhat.com>
3592
3593	* pt.c (perform_instantiation_time_access_checks): No need to
3594	tsubst into decl.
3595	* semantics.c (enforce_access): Verify that decl is not
3596	dependent.
3597
35982020-06-16  Patrick Palka  <ppalka@redhat.com>
3599
3600	PR c++/41437
3601	PR c++/47346
3602	* cp-tree.h (qualified_typedef_usage_s): Delete.
3603	(qualified_typedef_usage_t): Delete.
3604	(deferred_access_check): Move up in file.
3605	(tree_template_info::typedefs_needing_access_checking): Delete.
3606	(tree_template_info::deferred_access_checks): New field.
3607	(TI_TYPEDEFS_NEEDING_ACCESS_CHECKING): Rename to ...
3608	(TI_DEFERRED_ACCESS_CHECKS): ... this, and adjust accordingly.
3609	* pt.c (perform_typedefs_access_check): Rename to ...
3610	(perform_instantiation_time_access_checks): ... this, and adjust
3611	accordingly.  Remove unnecessary tree tests.
3612	(instantiate_class_template_1): Adjust accordingly.
3613	(instantiate_decl): Likewise.
3614	* semantics.c (enforce_access): Likewise.
3615
36162020-06-16  Patrick Palka  <ppalka@redhat.com>
3617
3618	PR c++/41437
3619	PR c++/47346
3620	* call.c (enforce_access): Move to semantics.c.
3621	* cp-tree.h (enforce_access): Delete.
3622	(get_types_needing_access_check): Delete.
3623	(add_typedef_to_current_template_for_access_check): Delete.
3624	* decl.c (make_typename_type): Adjust accordingly.  Use
3625	check_accessibility_of_qualified_id instead of directly using
3626	perform_or_defer_access_check.
3627	* parser.c (cp_parser_template_declaration_after_parameters):
3628	Don't push a dk_no_check access state when parsing a template.
3629	* pt.c (get_types_needing_access_check): Delete.
3630	(append_type_to_template_for_access_check_1): Delete.
3631	(perform_typedefs_access_check): Adjust.  If type_decl is a
3632	FIELD_DECL, also check its DECL_CONTEXT for dependence. Use
3633	tsubst_copy instead of tsubst to substitute into type_decl so
3634	that we substitute into the DECL_CONTEXT of a FIELD_DECL.
3635	(append_type_to_template_for_access_check): Delete.
3636	* search.c (accessible_p): Remove the processing_template_decl
3637	early exit.
3638	* semantics.c (enforce_access): Moved from call.c.  If we're
3639	parsing a template and the access check failed, add the check to
3640	TI_TYPEDEFS_NEEDING_ACCESS_CHECKING.
3641	(perform_or_defer_access_check): Adjust comment.
3642	(add_typedef_to_current_template_for_access_check): Delete.
3643	(check_accessibility_of_qualified_id):  Adjust accordingly.
3644	Exit early if the scope is dependent.
3645
36462020-06-11  Patrick Palka  <ppalka@redhat.com>
3647
3648	PR c++/93467
3649	* constraint.cc (associate_classtype_constraints): If there is a
3650	discrepancy between the current template depth and the template
3651	depth of the original declaration, then adjust the template
3652	parameter depth within the current constraints appropriately.
3653	* pt.c (tsubst_friend_class): Substitute into and set the
3654	constraints on the injected declaration.
3655
36562020-06-11  Iain Sandoe  <iain@sandoe.co.uk>
3657
3658	* coroutines.cc (instantiate_coro_traits): Pass a reference
3659	to lambda closure objects to traits instantiation.
3660	(morph_fn_to_coro): Likewise for promise parameter
3661	preview and allocator lookup.
3662
36632020-06-10  Iain Sandoe  <iain@sandoe.co.uk>
3664
3665	PR c++/95440
3666	* call.c (add_candidates): Use vec_safe_length() for
3667	testing the arguments list.
3668	(build_new_method_call_1): Use vec_safe_is_empty() when
3669	checking for an empty args list.
3670
36712020-06-10  Marek Polacek  <polacek@redhat.com>
3672
3673	PR c++/95562
3674	* parser.c (cp_parser_direct_declarator): Clear
3675	CP_PARSER_FLAGS_DELAY_NOEXCEPT if the declarator kind is not
3676	cdk_id.
3677
36782020-06-09  Iain Sandoe  <iain@sandoe.co.uk>
3679
3680	PR c++/95137
3681	* coroutines.cc (expand_one_await_expression): Build separate
3682	DTOR trees for the awaitable object on the destroy and resume
3683	paths.
3684
36852020-06-09  Jason Merrill  <jason@redhat.com>
3686
3687	PR c++/95552
3688	* cp-gimplify.c (predeclare_vla): Only predeclare a VLA if it's
3689	wrapped in a pointer type.
3690
36912020-06-05  Marek Polacek  <polacek@redhat.com>
3692
3693	PR c++/95369
3694	* call.c (build_converted_constant_expr_internal): Allow
3695	list-initialization.
3696
36972020-06-05  Iain Sandoe  <iain@sandoe.co.uk>
3698
3699	* cp-tree.def (CO_RETURN_EXPR): Correct the class
3700	to use tcc_statement.
3701
37022020-06-05  Jason Merrill  <jason@redhat.com>
3703
3704	* error.c (dump_binary_op): Handle negative operand to
3705	POINTER_PLUS_EXPR.
3706
37072020-06-04  Jason Merrill  <jason@redhat.com>
3708
3709	PR c++/93310
3710	* constexpr.c (cxx_eval_constant_expression) [OBJ_TYPE_REF]:
3711	Evaluate OBJ_TYPE_REF_EXPR.
3712
37132020-06-04  Jason Merrill  <jason@redhat.com>
3714
3715	PR c++/95158
3716	* class.c (lookup_vfn_in_binfo): New.
3717	* call.c (build_over_call): Use it.
3718	* cp-tree.h (resolves_to_fixed_type_p): Add default argument.
3719	(lookup_vfn_in_binfo): Declare.
3720
37212020-06-04  Iain Sandoe  <iain@sandoe.co.uk>
3722
3723	PR c++/95346
3724	* coroutines.cc (morph_fn_to_coro): Ensure that the get-
3725	return-object is constructed correctly; When it is not the
3726	final return value, pass it to the CTOR of the return type
3727	as an rvalue, per the standard comment.
3728
37292020-06-04  Jakub Jelinek  <jakub@redhat.com>
3730
3731	PR c++/82304
3732	PR c++/95307
3733	* constexpr.c (cxx_eval_constant_expression): Diagnose CONVERT_EXPR
3734	conversions from pointer types to arithmetic types here...
3735	(cxx_eval_outermost_constant_expr): ... instead of here.
3736
37372020-06-03  Mark Wielaard  <mark@klomp.org>
3738
3739	* parser.c (cp_lexer_safe_previous_token): New function.
3740	(cp_parser_error_1): Add name_hint if the previous token is
3741	a string literal and next token is a CPP_NAME and we have a
3742	missing header suggestion for the name.
3743
37442020-06-03  Patrick Palka  <ppalka@redhat.com>
3745
3746	* pt.c (process_partial_specialization): Pass the full set of
3747	generic template arguments to strictly_subsumes.
3748
37492020-06-03  Patrick Palka  <ppalka@redhat.com>
3750
3751	PR c++/92103
3752	* pt.c (most_specialized_partial_spec): Reorganize the loop over
3753	DECL_TEMPLATE_SPECIALIZATIONS.  Check constraints_satisfied_p on
3754	the original template declaration, not on the tsubsted one.
3755
37562020-06-03  Iain Sandoe  <iain@sandoe.co.uk>
3757
3758	PR c++/95345
3759	* coroutines.cc (finish_co_await_expr): Revise to allow for
3760	parameter packs.
3761	(finish_co_yield_expr): Likewise.
3762
37632020-06-03  Jason Merrill  <jason@redhat.com>
3764
3765	PR c++/95232
3766	* cp-tree.h (predeclare_vla): Declare.
3767	* cp-gimplify.c (predeclare_vla): Handle getting a decl.
3768	* pt.c (tsubst_expr) [DECL_EXPR]: Use it.
3769
37702020-06-03  Tobias Burnus  <tobias@codesourcery.com>
3771
3772	* cp-gimplify.c (cxx_omp_predetermined_mapping): New.
3773	* cp-objcp-common.h (LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Redfine.
3774	* cp-tree.h (cxx_omp_predetermined_mapping): Declare.
3775
37762020-06-02  Jason Merrill  <jason@redhat.com>
3777
3778	PR c++/95193
3779	* pt.c (tsubst_decl): Relax assert.
3780
37812020-06-02  Iain Sandoe  <iain@sandoe.co.uk>
3782
3783	PR c++/95050
3784	* coroutines.cc (build_co_await): Wrap the co_await expression
3785	in a TARGET_EXPR, where needed.
3786	(finish_co_yield_expr): Likewise.
3787
37882020-06-02  Patrick Palka  <ppalka@redhat.com>
3789
3790	PR c++/92633
3791	PR c++/92838
3792	* pt.c (tsubst_function_decl): Don't do set_constraints when
3793	regenerating a lambda.
3794	(tsubst_lambda_expr): Substitute into the lambda's constraints
3795	and do set_constraints here.
3796
37972020-06-01  Jason Merrill  <jason@redhat.com>
3798
3799	PR c++/95466
3800	PR c++/95311
3801	PR c++/95221
3802	* class.c (build_vfn_ref): Revert 95311 change.
3803	* cp-ubsan.c (cp_ubsan_maybe_instrument_member_call): Build a
3804	COMPOUND_EXPR.
3805
38062020-06-01  Iain Sandoe  <iain@sandoe.co.uk>
3807
3808	PR c++/95350
3809	* coroutines.cc (struct param_info): Remove rv_ref field.
3810	(build_actor_fn): Remove specifial rvalue ref handling.
3811	(morph_fn_to_coro): Likewise.
3812
38132020-05-31  Iain Sandoe  <iain@sandoe.co.uk>
3814
3815	PR c++/95087
3816	* coroutines.cc (morph_fn_to_coro): If we see an
3817	early fatal error, drop the erroneous function body.
3818
38192020-05-31  Iain Sandoe  <iain@sandoe.co.uk>
3820
3821	* coroutines.cc (build_co_await): Remove unused
3822	variable.
3823	(finish_co_await_expr): Likewise.
3824	(finish_co_yield_expr): Likewise; revise comment.
3825
38262020-05-30  Iain Sandoe  <iain@sandoe.co.uk>
3827
3828	* coroutines.cc (morph_fn_to_coro): Revise initialization
3829	of the frame pointer to avoid an unused value.
3830
38312020-05-30  Patrick Palka  <ppalka@redhat.com>
3832
3833	PR c++/95386
3834	* constraint.cc (satisfaction_value): Accept INTEGER_CST of any
3835	boolean type.
3836
38372020-05-29  Patrick Palka  <ppalka@redhat.com>
3838	    Jason Merrill  <jason@redhat.com>
3839
3840	PR c++/95181
3841	* class.c (add_method): Let special member function templates
3842	coexist if they are not equivalently constrained, or in a class
3843	template.
3844
38452020-05-29  Jason Merrill  <jason@redhat.com>
3846
3847	PR c++/95371
3848	* pt.c (process_template_parm): Set DECL_TEMPLATE_INFO
3849	on the DECL_TEMPLATE_RESULT.
3850
38512020-05-29  Marek Polacek  <polacek@redhat.com>
3852
3853	PR c++/95344
3854	* cp-gimplify.c (cp_fold) <case MODIFY_EXPR>: Don't set
3855	TREE_THIS_VOLATILE here.
3856	(cp_fold): Set it here along with TREE_NO_WARNING.
3857
38582020-05-29  Jason Merrill  <jason@redhat.com>
3859
3860	PR c++/95311
3861	PR c++/95221
3862	* class.c (build_vfn_ref): Don't fold the INDIRECT_REF.
3863
38642020-05-29  Patrick Palka  <ppalka@redhat.com>
3865
3866	PR c++/92652
3867	PR c++/93698
3868	PR c++/94128
3869	* parser.c (cp_parser_requires_clause_expression): Temporarily
3870	increment processing_template_decl only if it is 0.
3871	(cp_parser_constraint_expression): Likewise.
3872	(cp_parser_requires_expression): Likewise.
3873
38742020-05-29  Patrick Palka  <ppalka@redhat.com>
3875
3876	PR c++/95241
3877	* constexpr.c (get_or_insert_ctor_field): Add limited support
3878	for RANGE_EXPR index lookups.
3879
38802020-05-28  Jakub Jelinek  <jakub@redhat.com>
3881
3882	PR c++/95328
3883	* decl.c (cp_finish_decomp): Call complete_type before checking
3884	COMPLETE_TYPE_P.
3885
38862020-05-28  Jason Merrill  <jason@redhat.com>
3887
3888	PR c++/94926
3889	* decl.c (cp_finish_decl): Revert r9-297 change.
3890	(check_static_variable_definition): Likewise.
3891	* constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
3892	* pt.c (instantiate_decl): Return early on type error.
3893
38942020-05-27  Jason Merrill  <jason@redhat.com>
3895
3896	PR c++/95319
3897	* decl.c (reshape_init_array_1): Don't reuse in overload context.
3898
38992020-05-27  Jason Merrill  <jason@redhat.com>
3900
3901	PR c++/95242
3902	* call.c (build_new_op_1): Suppress
3903	warn_zero_as_null_pointer_constant across comparison of <=> result
3904	to 0.
3905
39062020-05-27  Jason Merrill  <jason@redhat.com>
3907
3908	PR c++/95222
3909	* decl.c (grokdeclarator): Don't shift attributes in TYPENAME
3910	context.
3911
39122020-05-27  Nathan Sidwell  <nathan@acm.org>
3913
3914	PR c++/95263
3915	* pt.c (lookup_template_class_1): Restore alias template mutation.
3916
39172020-05-26  Jakub Jelinek  <jakub@redhat.com>
3918
3919	PR c++/95197
3920	* cp-gimplify.c: Include omp-general.h.
3921	(cp_genericize_r) <case OMP_DISTRIBUTE>: For class iteration
3922	variables in composite distribute parallel for, instantiate copy
3923	ctor of their types.
3924
39252020-05-23  Patrick Palka  <ppalka@redhat.com>
3926
3927	PR c++/94038
3928	* constexpr.c (cxx_eval_constant_expression)
3929	<case TEMPLATE_ID_EXPR>: Don't evaluate the concept when
3930	constexpr evaluation is uid-sensitive.
3931
39322020-05-22  Jason Merrill  <jason@redhat.com>
3933
3934	* cp-gimplify.c (cp_gimplify_expr) [CALL_EXPR]: Don't preevaluate
3935	the function address if the call used operator syntax.
3936
39372020-05-21  Jason Merrill  <jason@redhat.com>
3938
3939	PR c++/95221
3940	* cp-ubsan.c (cp_ubsan_maybe_instrument_member_call): For a virtual
3941	call, instrument the OBJ_TYPE_REF.
3942
3943	* decl.c (compute_array_index_type_loc): Diagnose expressions
3944	in a template that can't be constant.
3945	* parser.c (cp_parser_direct_declarator): Don't check
3946	non-constant array bounds here.
3947
3948	* cp-tree.h (is_rvalue_constant_expression): Declare.
3949	* constexpr.c (is_rvalue_constant_expression): New.
3950	* parser.c (cp_parser_constant_expression): Use it.
3951	* decl.c (cp_finish_decl): Try to treat a constexpr initializer in a
3952	template as constant.
3953
3954	* typeck.c (build_x_modify_expr): Handle error_mark_node arguments.
3955
3956	* decl.c (grokparms): Return NULL_TREE if any parms were erroneous.
3957
39582020-05-21  Iain Sandoe  <iain@sandoe.co.uk>
3959
3960	* coroutines.cc (finish_co_return_stmt): Revert change to use
3961	finish_expr_stmt.
3962
39632020-05-21  Patrick Palka  <ppalka@redhat.com>
3964
3965	PR c++/94038
3966	* constexpr.c (constexpr_ctx::uid_sensitive): Remove field.
3967	(uid_sensitive_constexpr_evaluation_value): Define.
3968	(uid_sensitive_constexpr_evaluation_true_counter): Define.
3969	(uid_sensitive_constexpr_evaluation_p): Define.
3970	(uid_sensitive_constexpr_evaluation_sentinel): Define its
3971	constructor.
3972	(uid_sensitive_constexpr_evaluation_checker): Define its
3973	constructor and its evaluation_restricted_p method.
3974	(get_fundef_copy): Remove 'ctx' parameter.  Use u_s_c_e_p
3975	instead of constexpr_ctx::uid_sensitive.
3976	(cxx_eval_call_expression): Use u_s_c_e_p instead, and test it
3977	last.  Adjust call to get_fundef_copy.
3978	(instantiate_cx_fn_r): Test u_s_c_e_p so that we increment the
3979	counter if necessary.
3980	(cxx_eval_outermost_constant_expr): Remove 'uid_sensitive'
3981	parameter.  Adjust function body accordingly.
3982	(maybe_constant_value): Remove 'uid_sensitive' parameter and
3983	adjust function body accordingly.  Set up a
3984	uid_sensitive_constexpr_evaluation_checker, and use it to
3985	conditionally update the cv_cache.
3986	* cp-gimplify.c (cp_fold): Set up a
3987	uid_sensitive_constexpr_evaluation_checker, and use it to
3988	conditionally update the fold_cache.
3989	* cp-tree.h (maybe_constant_value): Update declaration.
3990	(struct uid_sensitive_constexpr_evaluation_sentinel): Define.
3991	(struct sensitive_constexpr_evaluation_checker): Define.
3992	* expr.c (fold_for_warn): Set up a
3993	uid_sensitive_constexpr_evaluation_sentinel before calling
3994	the folding subroutines.  Drop all but the first argument to
3995	maybe_constant_value.
3996
39972020-05-20  Marek Polacek  <polacek@redhat.com>
3998
3999	DR 2237
4000	* parser.c (cp_parser_unqualified_id): Reject simple-template-id as
4001	the declarator-id of a destructor.
4002	(cp_parser_constructor_declarator_p): Reject simple-template-id as
4003	the declarator-id of a constructor.
4004
40052020-05-20  Marek Polacek  <polacek@redhat.com>
4006
4007	DR 2289
4008	PR c++/94553
4009	* cp-tree.h (SD_DECOMPOSITION): New flag.
4010	* decl.c (duplicate_decls): Make sure a structured binding is unique
4011	in its declarative region.
4012	(start_decl): If INITIALIZED is SD_DECOMPOSITION, call
4013	fit_decomposition_lang_decl.
4014	(grokdeclarator): Compare INITIALIZED directly to SD_* flags.
4015	* parser.c (cp_parser_decomposition_declaration): Pass SD_DECOMPOSITION
4016	to start_decl.
4017
40182020-05-20  Patrick Palka  <ppalka@redhat.com>
4019
4020	PR c++/95223
4021	* typeck.c (structural_comptypes): Don't perform
4022	context-dependent resolution of TYPENAME_TYPEs when
4023	comparing_specializations.
4024
40252020-05-19  Nathan Sidwell  <nathan@acm.org>
4026
4027	* pt.c (lookup_template_class_1): Do not reinit template_info of an
4028	alias here.
4029
40302020-05-18  Martin Sebor  <msebor@redhat.com>
4031
4032	PR c++/94923
4033	* call.c ((maybe_warn_class_memaccess): Use is_byte_access_type.
4034	* cp-tree.h (is_dummy_object): Return bool.
4035	(is_byte_access_type): Declare new function.
4036	* tree.c (is_dummy_object): Return bool.
4037	(is_byte_access_type): Define new function.
4038
40392020-05-19  Patrick Palka  <ppalka@redhat.com>
4040
4041	PR c++/87847
4042	* pt.c (init_template_processing): Enable sanitization for
4043	decl_specializations and type_specializations.
4044
4045	PR c++/66439
4046	* pt.c (fn_type_unification): Pass 'fn' instead of NULL_TREE as
4047	the 'in_decl' parameter to coerce_template_parms.
4048
40492020-05-18  Marek Polacek  <polacek@redhat.com>
4050
4051	PR c++/94955
4052	* typeck.c (cp_build_binary_op): Use fold_for_warn instead of
4053	cp_fold_rvalue.
4054
40552020-05-18  Marek Polacek  <polacek@redhat.com>
4056
4057	PR c++/94937
4058	* cvt.c (cp_get_fndecl_from_callee): Return NULL_TREE if the function
4059	type is not INDIRECT_TYPE_P.
4060	* decl.c (omp_declare_variant_finalize_one): Call
4061	cp_get_callee_fndecl_nofold instead of looking for the function decl
4062	manually.
4063
40642020-05-18  Marek Polacek  <polacek@redhat.com>
4065
4066	PR c++/90915
4067	* parser.c (cp_parser_has_attribute_expression): Sorry on a
4068	type-dependent argument.
4069
40702020-05-18  Marek Polacek  <polacek@redhat.com>
4071
4072	DR 1512
4073	PR c++/87699
4074	* call.c (add_builtin_candidate) <case EQ_EXPR>: Create candidate
4075	operator functions when type is std::nullptr_t for ==/!=.
4076	* typeck.c (composite_pointer_type_r): Add a bool * parameter.  Use it
4077	to maybe add "const" to the pointer type.
4078	(composite_pointer_type): Update the call to composite_pointer_type_r.
4079	(cp_build_binary_op): Turn two warning_at into error_at.  Print the
4080	types.
4081
40822020-05-18  Jason Merrill  <jason@redhat.com>
4083
4084	* call.c (build_over_call): Remove unnecessary
4085	cp_stabilize_reference.
4086
40872020-05-18  Marek Polacek  <polacek@redhat.com>
4088
4089	* call.c (add_builtin_candidate): Don't create a builtin overload
4090	candidate for ++ when type is bool in C++17.
4091
40922020-05-18  Marek Polacek  <polacek@redhat.com>
4093
4094	* cfns.h: Regenerated.
4095
40962020-05-17  Iain Sandoe  <iain@sandoe.co.uk>
4097
4098	* coroutines.cc (morph_fn_to_coro): Initialize the gro variable.
4099
41002020-05-16  Iain Sandoe  <iain@sandoe.co.uk>
4101
4102	* coroutines.cc (finish_co_return_stmt): Implement rules
4103	from [class.copy.elision] /3.
4104
41052020-05-16  Patrick Palka  <ppalka@redhat.com>
4106
4107	PR c++/57943
4108	* semantics.c (finish_decltype_type): Call
4109	instantiate_non_dependent_expr_sfinae on the expression.
4110
41112020-05-15  Patrick Palka  <ppalka@redhat.com>
4112
4113	Revert:
4114
4115	2020-04-07  Patrick Palka  <ppalka@redhat.com>
4116
4117	PR c++/90996
4118	* typeck2.c (process_init_constructor_array): Propagate
4119	CONSTRUCTOR_PLACEHOLDER_BOUNDARY up from each element initializer to
4120	the array initializer.
4121
41222020-05-15  Jason Merrill  <jason@redhat.com>
4123
4124	PR c++/93286 - ICE with __is_constructible and variadic template.
4125	* pt.c (tsubst_tree_list): New.
4126	(tsubst, tsubst_copy_and_build): Use it.
4127	* decl2.c (is_late_template_attribute): Handle error_mark_node args.
4128
41292020-05-15  Nathan Sidwell  <nathan@acm.org>
4130
4131	* pt.c (template_args_equal): Fix thinkos in previous 'cleanup'.
4132
41332020-05-14  Jason Merrill  <jason@redhat.com>
4134
4135	PR c++/93901
4136	* pt.c (maybe_instantiate_noexcept): Change clone handling.
4137
41382020-05-14  Patrick Palka  <ppalka@redhat.com>
4139
4140	PR c++/78446
4141	* call.c (build_op_call): Pass complain to lookup_fnfields.
4142	(build_special_member_call): Likewise.
4143	* class.c (type_requires_array_cookie): Pass tf_warning_or_error
4144	to lookup_fnfields.
4145	* cp-tree.h (lookup_fnfields): Add tsubst_flags_t parameter.
4146	* except.c (build_throw): Pass tf_warning_or_error to
4147	lookup_fnfields.
4148	* init.c (build_new_1): Pass complain to lookup_fnfields.
4149	* method.c (locate_fn_flags): Likewise.
4150	* name-lookup.c (lookup_name_real_1): Pass tf_warning_or_error
4151	to lookup_fnfields.
4152	* pt.c (tsubst_baselink): Pass complain to lookup_fnfields.
4153	* search.c (lookup_fnfields): New 'complain' parameter.  Pass it
4154	to lookup_member.
4155
41562020-05-14  Nathan Sidwell  <nathan@acm.org>
4157
4158	* parser.c (cp_parser_diagnose_invalid_typename): Mention
4159	std=c++20 not 2a, reformat dependent binfo inform loops.
4160
4161	* pt.c (tsubst_template_decl): Reorder and commonize some control
4162	paths.
4163
4164	* pt.c (tsubst_friend_function): Simplify control flow.
4165
4166	* pt.c (lookup_template_class_1): Remove unnecessary else by
4167	simply grabbing TYPE_NAME earlier.
4168
4169	* pt.c (push_template_decl_real): Adjust friend pushing logic.
4170 	Reinit template type.
4171
4172	* pt.c (build_template_decl): Init DECL_TEMPLATE_RESULT &
4173	TREE_TYPE here ...
4174	(process_partial_specialization): ... not here ...
4175	(push_template_decl_real, add_inherited_template_parms)
4176	(build_deduction_guide): ... or here.
4177
41782020-05-14  Jakub Jelinek  <jakub@redhat.com>
4179
4180	* cp-gimplify.c (cp_genericize_r): Set cfun->has_omp_target.
4181
41822020-05-13  Patrick Palka  <ppalka@redhat.com>
4183
4184	PR c++/79706
4185	* init.c (build_vec_delete_1): Just return error_mark_node if
4186	deallocate_expr is error_mark_node.
4187	(build_delete): Just return error_mark_node if do_delete is
4188	error_mark_node.
4189
41902020-05-13  Patrick Palka  <ppalka@redhat.com>
4191
4192	PR c++/95020
4193	* constraint.cc (tsubst_requires_expr): Produce a new
4194	requires-expression when processing_template_decl, even if
4195	template arguments are not dependent.
4196
41972020-05-13  Marek Polacek  <polacek@redhat.com>
4198
4199	PR c++/95066
4200	* decl.c (duplicate_decls): Set DECL_HAS_DEPENDENT_EXPLICIT_SPEC_P.
4201
42022020-05-13  Nathan Sidwell  <nathan@acm.org>
4203
4204	* pt.c (template_args_equal): Reorder category checking for
4205	clarity.
4206
4207	* pt.c (perform_typedefs_access_check): Cache expensively
4208	calculated object references.
4209	(check_auto_in_tmpl_args): Just assert we do not get unexpected
4210	nodes, rather than silently do nothing.
4211	(append_type_to_template_for_access): Likewise, cache expensie
4212	object reference.
4213
4214	* pt.c (canonical_type_parameter): Simplify.
4215
4216	Formatting fixups & some simplifications.
4217	* pt.c (spec_hash_table): New typedef.
4218	(decl_specializations, type_specializations): Use it.
4219	(retrieve_specialization): Likewise.
4220	(register_specialization): Remove unnecessary casts.
4221	(push_template_decl_real): Reformat.
4222	(instantiate_class_template_1): Use more RAII.
4223	(make_argument_pack): Simplify.
4224	(instantiate_template_1): Use gcc_checking_assert for expensive
4225	asserts.
4226	(instantiate_decl): Likewise.
4227	(resolve_typename_type): Reformat comment.
4228	* semantics.c (struct deferred_access): Remove unnecessary GTY on
4229	member.
4230	(begin_class_definition): Fix formatting.
4231
42322020-05-13  Jason Merrill  <jason@redhat.com>
4233
4234	* call.c, class.c, constexpr.c, constraint.cc, decl.c, init.c,
4235	lambda.c, lex.c, method.c, name-lookup.c, parser.c, pt.c, tree.c,
4236	typeck2.c: Change cxx2a to cxx20.
4237
42382020-05-12  Marek Polacek  <polacek@redhat.com>
4239
4240	PR c++/95074
4241	* parser.c (cp_parser_postfix_expression) <case CPP_OPEN_PAREN>: When
4242	looking for a block-scope function declaration, look through the whole
4243	set, not just the first function in the overload set.
4244
42452020-05-12  Jakub Jelinek  <jakub@redhat.com>
4246
4247	PR c++/95063
4248	* pt.c (tsubst_decl): Deal with DECL_OMP_PRIVATIZED_MEMBER for
4249	a bit-field.
4250
42512020-05-11  Jason Merrill  <jason@redhat.com>
4252
4253	Resolve C++20 NB comment CA104
4254	* pt.c (determine_specialization): Compare constraints for
4255	specialization of member template of class instantiation.
4256
42572020-05-11  Jason Merrill  <jason@redhat.com>
4258
4259	PR c++/92583
4260	PR c++/92654
4261	* tree.c (cp_walk_subtrees): Stop at typedefs.
4262	Handle TYPENAME_TYPE here.
4263	* pt.c (find_parameter_packs_r): Not here.
4264	(for_each_template_parm_r): Clear *walk_subtrees.
4265	* decl2.c (min_vis_r): Look through typedefs.
4266
42672020-05-11  Jason Merrill  <jason@redhat.com>
4268
4269	* call.c (implicit_conversion_error): Split out from...
4270	(perform_implicit_conversion_flags): ...here.
4271	(build_converted_constant_expr_internal): Use it.
4272
42732020-05-11  Jason Merrill  <jason@redhat.com>
4274
4275	PR c++/90748
4276	* parser.c (inject_parm_decls): Set current_class_ptr here.
4277	(cp_parser_direct_declarator): And here.
4278	(cp_parser_late_return_type_opt): Not here.
4279	(cp_parser_noexcept_specification_opt): Nor here.
4280	(cp_parser_exception_specification_opt)
4281	(cp_parser_late_noexcept_specifier): Remove unneeded parameters.
4282
42832020-05-11  Jason Merrill  <jason@redhat.com>
4284
4285	* decl.c (cxx_init_decl_processing): Call declare_weak for
4286	__cxa_pure_virtual.
4287
42882020-05-11  Jason Merrill  <jason@redhat.com>
4289
4290	* pt.c (instantiate_class_template_1): Call tsubst_expr for
4291	STATIC_ASSERT member.
4292	* ptree.c (cxx_print_xnode): Handle STATIC_ASSERT.
4293
42942020-05-11  Jason Merrill  <jason@redhat.com>
4295
4296	* pt.c (find_parameter_packs_r) [LAMBDA_EXPR]: Remove redundant
4297	walking of capture list.
4298
42992020-05-11  Jason Merrill  <jason@redhat.com>
4300
4301	* cp-tree.h (LOOKUP_EXPLICIT_TMPL_ARGS): Remove.
4302	* call.c (build_new_function_call): Don't set it.
4303	(build_new_method_call_1): Likewise.
4304	(build_over_call): Check cand->explicit_targs instead.
4305
43062020-05-11  Jason Merrill  <jason@redhat.com>
4307
4308	* decl.c (compute_array_index_type_loc): Stabilize before building
4309	the MINUS_EXPR.
4310
43112020-05-11  Jason Merrill  <jason@redhat.com>
4312
4313	* decl.c (grokdeclarator): Adjust deprecated_state here.
4314	(start_decl): Not here.
4315
43162020-05-08  Iain Sandoe  <iain@sandoe.co.uk>
4317
4318	PR c++/95003
4319	* coroutines.cc (build_actor_fn): Ensure that bind scopes
4320	are marked as having side-effects where necessary.
4321	(replace_statement_captures): Likewise.
4322	(morph_fn_to_coro): Likewise.
4323
43242020-05-08  Nathan Sidwell  <nathan@acm.org>
4325
4326	* NEWS: Delete, it is so stale.
4327
4328	* parser.c (cp_lexer_set_source_position_from_token): EOF has a
4329	location too.
4330
43312020-05-07  Iain Sandoe  <iain@sandoe.co.uk>
4332
4333	PR c++/94817
4334	PR c++/94829
4335	* coroutines.cc (morph_fn_to_coro): Set unformed outline
4336	functions to error_mark_node.  For early error returns suppress
4337	warnings about missing ramp return values.  Fix reinstatement
4338	of the function body on pre-existing initial error.
4339	* decl.c (finish_function): Use the normal error path for fails
4340	in the ramp function, do not try to compile the helpers if the
4341	transform fails.
4342
43432020-05-07  Marek Polacek  <polacek@redhat.com>
4344
4345	PR c++/94590 - Detect long double -> double narrowing.
4346	* typeck2.c (check_narrowing): Detect long double -> double
4347	narrowing even when double and long double have the same
4348	precision.  Make it handle conversions to float too.
4349
43502020-05-07  Marek Polacek  <polacek@redhat.com>
4351
4352	PR c++/94255
4353	* parser.c (cp_parser_class_specifier_1): Check that the scope is
4354	nested inside current scope before pushing it.
4355
43562020-05-07  Marek Polacek  <polacek@redhat.com>
4357
4358	  P1957R2
4359	  * typeck2.c (check_narrowing): Consider T* to bool narrowing
4360	  in C++11 and up.
4361
43622020-05-07  Marek Polacek  <polacek@redhat.com>
4363
4364	* decl.c (grok_op_properties): Fix spelling of non-static.
4365	* typeck.c (build_class_member_access_expr): Likewise.
4366
43672020-05-07  Richard Biener  <rguenther@suse.de>
4368
4369	PR middle-end/94703
4370	* optimize.c (update_cloned_parm): Copy DECL_NOT_GIMPLE_REG_P.
4371
43722020-05-06  Marek Polacek  <polacek@redhat.com>
4373
4374	PR c++/94938
4375	* pt.c (tsubst_copy_and_build): Call type_dependent_expression_p_push
4376	instead of uses_template_parms.  Move the warning_sentinels after the
4377	RECURs.
4378
43792020-05-06  Jakub Jelinek  <jakub@redhat.com>
4380
4381	PR c++/94951
4382	* typeck.c (cp_strict_aliasing_warning): New function.
4383	(cp_build_indirect_ref_1, build_reinterpret_cast_1): Use
4384	it instead of strict_aliasing_warning.
4385
4386	PR c++/94907
4387	* method.c (defaulted_late_check): Don't call synthesize_method
4388	on constexpr sfk_comparison if it has been called on it already.
4389
43902020-05-06  Nathan Sidwell  <nathan@acm.org>
4391
4392	PR c++/94946
4393	* decl.c (grokdeclarator): Don't splice template attributes in
4394	parm context -- they can apply to the parm.
4395
43962020-05-05  Iain Sandoe  <iain@sandoe.co.uk>
4397
4398	* coroutines.cc: Remove references to n4849 throughout.
4399
44002020-05-05  Jason Merrill  <jason@redhat.com>
4401
4402	CWG 2235
4403	* pt.c (more_specialized_fn): Do consider parms with no deducible
4404	template parameters.
4405
44062020-05-05  Jason Merrill  <jason@redhat.com>
4407
4408	PR c++/90212
4409	* constexpr.c (potential_constant_expression_1): In a lambda
4410	function, consider a captured variable directly.
4411
44122020-05-05  Iain Sandoe  <iain@sandoe.co.uk>
4413
4414	* coroutines.cc (transform_await_wrapper): Check that we have
4415	no unlowered co_yields.
4416	(captures_temporary): Likewise.
4417	(register_awaits): Likewise.
4418
44192020-05-05  Nathan Sidwell  <nathan@acm.org>
4420
4421	PR c++/94807
4422	* coroutines.cc (morph_fn_to_coro): Just check for
4423	closure_identifier.
4424	* pt.c (tsubst_function_decl): Update lambda fn's this_ptr name.
4425
44262020-05-05  Marek Polacek  <polacek@redhat.com>
4427	    Jason Merrill  <jason@redhat.com>
4428
4429	PR c++/94799
4430	* parser.c (cp_parser_postfix_dot_deref_expression): If we have
4431	a type-dependent object of class type, stash it to
4432	parser->context->object_type.  If the postfix expression doesn't have
4433	a type, use typeof.
4434	(cp_parser_class_name): Consider object scope too.
4435	(cp_parser_lookup_name): Remove code dealing with the case when
4436	object_type is unknown_type_node.
4437
44382020-05-04  Patrick Palka  <ppalka@redhat.com>
4439
4440	PR c++/94038
4441	* cp-gimplify.c (cp_fold) <case CALL_EXPR>: Move some variable
4442	declarations closer to their uses.  Copy the CALL_EXPR only
4443	when one of its arguments has changed.
4444	<case TREE_VEC>: Instead of first collecting the folded
4445	arguments into a releasing_vec, just make a copy of the TREE_VEC
4446	as soon as folding changes one of its arguments.
4447
44482020-05-04  Iain Sandoe  <iain@sandoe.co.uk>
4449
4450	* coroutines.cc (morph_fn_to_coro): Mark the coro.gro variable
4451	as artificial and ignored.
4452
44532020-05-04  Nathan Sidwell  <nathan@acm.org>
4454
4455	pt.c (process_template_parm): Don't walk the template list twice,
4456	remember the final node instead.
4457	(end_template_parm_list): Refactor.  Comment on why we do a pop
4458	and a push.
4459
4460	PR c++/94827 -- don't save parms in nested requirement
4461	* constraint.cc (tsubst_nested_requirement): TYPE directly holds
4462	notmalized requirement.
4463	(finish_nested_requirement): Don't stash current tpl parms into
4464	the requirement.
4465	(diagnose_nested_requirement): TYPE directly holds notmalized
4466	requirement.
4467
44682020-05-01  Patrick Palka  <ppalka@redhat.com>
4469
4470	PR c++/90880
4471	* cp-tree.h (check_accessibility_of_qualified_id): Add
4472	tsubst_flags_t parameter and change return type to bool.
4473	* parser.c (cp_parser_lookup_name): Pass tf_warning_to_error to
4474	check_accessibility_of_qualified_id.
4475	* pt.c (tsubst_qualified_id): Return error_mark_node if
4476	check_accessibility_of_qualified_id returns false.
4477	* semantics.c (check_accessibility_of_qualified_id): Add
4478	complain parameter.  Pass complain instead of
4479	tf_warning_or_error to perform_or_defer_access_check.  Return
4480	true unless perform_or_defer_access_check returns false.
4481
44822020-05-01  Marek Polacek  <polacek@redhat.com>
4483
4484	PR c++/94885
4485	* typeck2.c (process_init_constructor_record): Return PICFLAG_ERRONEOUS
4486	if an initializer element was erroneous.
4487
44882020-05-01  Jason Merrill  <jason@redhat.com>
4489
4490	PR c++/90479
4491	* init.c (get_nsdmi): Don't push_to_top_level for a local class.
4492
44932020-05-01  Jason Merrill  <jason@redhat.com>
4494
4495	PR c++/91529
4496	* decl.c (cp_finish_decl): Also clear TREE_READONLY if
4497	-fmerge-all-constants.
4498
44992020-05-01  Jason Merrill  <jason@redhat.com>
4500
4501	PR c++/93822
4502	* pt.c (tsubst_decl): Make sure DECL_VALUE_EXPR continues to have
4503	the same type as the variable.
4504
45052020-04-30  Jason Merrill  <jason@redhat.com>
4506	    Nathan Sidwell  <nathan@acm.org>
4507
4508	PR c++/94827
4509	* constraint.cc (map_arguments): If ARGS is null, it's a
4510	self-mapping of parms.
4511	(finish_nested_requirement): Do not pass argified
4512	current_template_parms to normalization.
4513	(tsubst_nested_requirement): Don't assert no template parms.
4514
45152020-04-30  Iain Sandoe  <iain@sandoe.co.uk>
4516
4517	PR c++/94886
4518	* coroutines.cc (transform_local_var_uses): Defer walking
4519	the DECL_INITIALs of BIND_EXPR vars until all the frame
4520	allocations have been made.
4521
45222020-04-30  Iain Sandoe  <iain@sandoe.co.uk>
4523
4524	PR c++/94883
4525	* coroutines.cc (register_awaits): Update target
4526	expressions for awaitable and suspend handle
4527	initializers.
4528
45292020-04-30  Iain Sandoe  <iain@sandoe.co.uk>
4530
4531	PR c++/94879
4532	* coroutines.cc (build_co_await): Account for variables
4533	with DECL_VALUE_EXPRs.
4534	(captures_temporary): Likewise.
4535	(register_awaits): Likewise.
4536
45372020-04-29  Patrick Palka  <ppalka@redhat.com>
4538
4539	PR c++/94830
4540	* pt.c (find_template_parameter_info::parm_list): New field.
4541	(keep_template_parm): Use the new field to build up the
4542	parameter list here instead of ...
4543	(find_template_parameters): ... here.  Return ftpi.parm_list.
4544
45452020-04-29  Jakub Jelinek  <jakub@redhat.com>
4546
4547	PR target/94707
4548	* class.c (build_base_field): Set DECL_FIELD_ABI_IGNORED on C++17 empty
4549	base artificial FIELD_DECLs.
4550	(layout_class_type): Set DECL_FIELD_ABI_IGNORED on empty class
4551	field_poverlapping_p FIELD_DECLs.
4552
45532020-04-29  Patrick Palka  <ppalka@redhat.com>
4554
4555	PR c++/94819
4556	* constraint.cc (satisfy_declaration_constraints): Use saved_t
4557	instead of t as the key to decl_satisfied_cache.
4558
4559	PR c++/94808
4560	* error.c (print_requires_expression_info): Print the dependent
4561	form of the parameter list with its template parameter mapping,
4562	rather than printing the substituted form.
4563
45642020-04-28  Jason Merrill  <jason@redhat.com>
4565
4566	PR c++/94583
4567	* decl.c (use_eh_spec_block): Check nothrow type after
4568	DECL_DEFAULTED_FN.
4569	* pt.c (maybe_instantiate_noexcept): Call synthesize_method for
4570	DECL_MAYBE_DELETED fns here.
4571	* decl2.c (mark_used): Not here.
4572	* method.c (get_defaulted_eh_spec): Reject DECL_MAYBE_DELETED here.
4573
45742020-04-28  Iain Sandoe  <iain@sandoe.co.uk>
4575
4576	PR c++/94760
4577	* coroutines.cc (instantiate_coro_traits): Pass a reference to
4578	object type rather than a pointer type for 'this', for method
4579	coroutines.
4580	(struct param_info): Add a field to hold that the parm is a lambda
4581	closure pointer.
4582	(morph_fn_to_coro): Check for lambda closure pointers in the
4583	args.  Use a reference to *this when building the args list for the
4584	promise allocator lookup.
4585
45862020-04-28  Iain Sandoe  <iain@sandoe.co.uk>
4587
4588	PR c++/94759
4589	* coroutines.cc (coro_promise_type_found_p): Do not
4590	exclude non-classes here (this needs to be handled in the
4591	coroutine header).
4592	(morph_fn_to_coro):  Allow for the case where the coroutine
4593	returns void.
4594
45952020-04-27  Iain Sandoe  <iain@sandoe.co.uk>
4596
4597	PR c++/94701
4598	* coroutines.cc (struct local_var_info): Add fields for static
4599	variables and those with DECL_VALUE_EXPR redirection.
4600	(transform_local_var_uses): Skip past typedefs and static vars
4601	and then account for redirected variables.
4602	(register_local_var_uses): Likewise.
4603
46042020-04-27  Jason Merrill  <jason@redhat.com>
4605
4606	PR c++/90750
4607	PR c++/79585
4608	* decl.c (grokdeclarator): Move dependent attribute to decl.
4609	* decl2.c (splice_template_attributes): No longer static.
4610
46112020-04-27  Patrick Palka  <ppalka@redhat.com>
4612
4613	PR c++/94772
4614	* constexpr.c (cxx_eval_call_expression): Don't set new_obj if we're
4615	evaluating the target constructor of a delegating constructor.
4616	(cxx_eval_store_expression): Don't set TREE_READONLY if the LHS of the
4617	INIT_EXPR is '*this'.
4618
46192020-04-26  Marek Polacek  <polacek@redhat.com>
4620
4621	PR c++/90320
4622	* call.c (struct conversion): Add copy_init_p.
4623	(standard_conversion): Set copy_init_p in ck_base and ck_rvalue
4624	if FLAGS demands LOOKUP_ONLYCONVERTING.
4625	(convert_like_real) <case ck_base>: If copy_init_p is set, or
4626	LOOKUP_ONLYCONVERTING into FLAGS.
4627
46282020-04-26  Iain Sandoe  <iain@sandoe.co.uk>
4629
4630	PR c++/94752
4631	* coroutines.cc (morph_fn_to_coro): Ensure that
4632	unnamed function params have a usable and distinct
4633	frame field name.
4634
46352020-04-24  Jason Merrill  <jason@redhat.com>
4636
4637	PR c++/94583
4638	* decl.c (redeclaration_error_message): Reject defaulted comparison
4639	operator that has been previously declared.
4640
46412020-04-25  Patrick Palka  <ppalka@redhat.com>
4642
4643	* parser.c (cp_parser_diagnose_invalid_type_name): Suggest enabling
4644	concepts if the invalid identifier is 'requires'.
4645
46462020-04-25  Jakub Jelinek  <jakub@redhat.com>
4647
4648	PR c++/94742
4649	* semantics.c (finish_call_expr): When looking if all overloads
4650	are noreturn, use STRIP_TEMPLATE to look through TEMPLATE_DECLs.
4651
46522020-04-24  Martin Liska  <mliska@suse.cz>
4653
4654	* coroutines.cc: Fix compilation error for release checking
4655	where we miss declaration of ‘coro_body_contains_bind_expr_p’.
4656
46572020-04-23  Patrick Palka  <ppalka@redhat.com>
4658
4659	* tree.c (zero_init_expr_p): Use uses_template_parms instead of
4660	dependent_type_p.
4661
4662	PR c++/94645
4663	* pt.c (template_class_depth): Walk into the DECL_FRIEND_CONTEXT of a
4664	friend declaration rather than into its CP_DECL_CONTEXT.
4665
46662020-04-23 Iain Sandoe <iain@sandoe.co.uk>
4667
4668	PR c++/94288
4669	* coroutines.cc (await_statement_expander): Simplify cases.
4670	(struct susp_frame_data): Add fields for truth and/or if
4671	cases, rename one field.
4672	(analyze_expression_awaits): New.
4673	(expand_one_truth_if): New.
4674	(add_var_to_bind): New helper.
4675	(coro_build_add_if_not_cond_break): New helper.
4676	(await_statement_walker): Handle conditional expressions,
4677	handle expansion of truth-and/or-if cases.
4678	(bind_expr_find_in_subtree): New, checking-only.
4679	(coro_body_contains_bind_expr_p): New, checking-only.
4680	(morph_fn_to_coro): Ensure that we have a top level bind
4681	expression.
4682
46832020-04-22  Jonathan Wakely  <jwakely@redhat.com>
4684
4685	PR translation/94698
4686	* class.c (check_field_decls): Change "define" to "declare" in
4687	-Weffc++ diagnostics.
4688
46892020-04-22  Patrick Palka  <ppalka@redhat.com>
4690
4691	PR c++/94719
4692	PR c++/94549
4693	* constraint.cc (satisfy_declaration_constraints): If the inherited
4694	constructor points to an instantiation of a constructor template,
4695	remember and use its attached template arguments.
4696
46972020-04-22  Jonathan Wakely  <jwakely@redhat.com>
4698
4699	PR translation/94698
4700	* class.c (check_field_decls): Change "override" to "define" in
4701	-Weffc++ diagnostics.
4702
47032020-04-22 Iain Sandoe <iain@sandoe.co.uk>
4704
4705	PR c++/94682
4706	* coroutines.cc (struct param_info): Add a field to note that
4707	the param is 'this'.
4708	(morph_fn_to_coro): Convert this to a reference before using it
4709	in the promise parameter preview.
4710
47112020-04-22  Jason Merrill  <jason@redhat.com>
4712
4713	PR c++/94546
4714	* pt.c (register_parameter_specializations): If the instantiation is
4715	still a parameter pack, don't wrap it in a NONTYPE_ARGUMENT_PACK.
4716	(tsubst_pack_expansion, tsubst_expr): Adjust.
4717
47182020-04-22  Martin Sebor  <msebor@redhat.com>
4719	    Jason Merrill  <jason@redhat.com>
4720
4721	PR c++/94510
4722	* decl.c (reshape_init_array_1): Avoid stripping redundant trailing
4723	zero initializers...
4724	* mangle.c (write_expression): ...and handle them here even for
4725	pointers to members by calling zero_init_expr_p.
4726	* cp-tree.h (zero_init_expr_p): Declare.
4727	* tree.c (zero_init_expr_p): Define.
4728	(type_initializer_zero_p): Remove.
4729	* pt.c (tparm_obj_values): New hash_map.
4730	(get_template_parm_object): Store to it.
4731	(tparm_object_argument): New.
4732
47332020-04-22  Patrick Palka  <ppalka@redhat.com>
4734
4735	PR c++/67825
4736	* constraint.cc (diagnose_valid_expression): Check convert_to_void here
4737	as well as in tsubst_valid_expression_requirement.
4738
47392020-04-21  Patrick Palka  <ppalka@redhat.com>
4740
4741	PR c++/94549
4742	* constraint.cc (satisfy_declaration_constraints): Don't strip the
4743	inherited constructor if it already has template information.
4744
4745	PR c++/94597
4746	* pt.c (any_template_parm_r) <case IDENTIFIER_NODE>: New case.  If this
4747	is a conversion operator, visit its TREE_TYPE.
4748
47492020-04-21  Nathan Sidwell  <nathan@acm.org>
4750
4751	* pt.c (tsubst_copy_and_build) [POINTER_PLUS_EXPR]: Check for
4752	error_mark_node.
4753
47542020-04-21 Iain Sandoe <iain@sandoe.co.uk>
4755
4756	PR c++/94661
4757	* coroutines.cc (morph_fn_to_coro): Simplify return
4758	value computation.
4759
47602020-04-17  Marek Polacek  <polacek@redhat.com>
4761
4762	PR c++/94592
4763	* constexpr.c (cxx_eval_outermost_constant_expr): Return when T is
4764	a BRACE_ENCLOSED_INITIALIZER_P.
4765	(is_nondependent_constant_expression): Don't check
4766	BRACE_ENCLOSED_INITIALIZER_P.
4767	(is_nondependent_static_init_expression): Likewise.
4768
47692020-04-20  Patrick Palka  <ppalka@redhat.com>
4770
4771	PR c++/94628
4772	* cp-tree.h (lss_policy::lss_nop): New enumerator.
4773	* pt.c (local_specialization_stack::local_specialization_stack): Handle
4774	an lss_nop policy.
4775	(local_specialization_stack::~local_specialization_stack): Likewise.
4776	(tsubst_pack_expansion): Use a local_specialization_stack instead of
4777	manually saving and restoring local_specializations.  Conditionally
4778	replace local_specializations sooner, before the handling of the
4779	unsubstituted_packs case.
4780
47812020-04-20  Marek Polacek  <polacek@redhat.com>
4782
4783	PR c++/94505 - bogus -Wparentheses warning with fold-expression.
4784	* pt.c (fold_expression): Add warning_sentinel for -Wparentheses
4785	before calling build_x_binary_op.
4786
47872020-04-20  Marek Polacek  <polacek@redhat.com>
4788
4789	* coroutines.cc (captures_temporary): Don't assign the result of
4790	STRIP_NOPS to the same variable.
4791
47922020-04-20  Nathan Sidwell  <nathan@acm.org>
4793
4794	PR c++/94454 - tpl-tpl-parms are not canonicalizable types
4795	* pt.c (canonical_type_parameter): Assert not a tpl-tpl-parm.
4796	(process_template_parm): tpl-tpl-parms are structural.
4797	(rewrite_template_parm): Propagate structuralness.
4798
4799	PR c++/94454 - Expr pack expansion equality
4800	* tree.c (cp_tree_equal) [TEMPLATE_ID_EXPR, default]: Refactor.
4801	[EXPR_PACK_EXPANSION]: Add.
4802
4803	PR c++/94454 Template Argument Hashing
4804	* pt.c (iterative_hash_template_arg): Strip nodes as
4805	template_args_equal does.
4806	[ARGUMENT_PACK_SELECT, TREE_VEC, CONSTRUCTOR]: Refactor.
4807	[node_class:TEMPLATE_TEMPLATE_PARM]: Hash by level & index.
4808	[node_class:default]: Refactor.
4809
48102020-04-18  Patrick Palka  <ppalka@redhat.com>
4811
4812	PR c++/94632
4813	* tree.c (cp_tree_equal) <case PARM_DECL>: Ignore
4814	comparing_specializations if the parameters' contexts are identical.
4815
4816	PR c++/92187
4817	* pt.c (splice_late_return_type): Propagate cv-qualifiers and
4818	PLACEHOLDER_TYPE_CONSTRAINTS from the original auto node to the new one.
4819
48202020-04-17  Patrick Palka  <ppalka@redhat.com>
4821
4822	PR c++/94483
4823	* lambda.c (lambda_capture_field_type): Avoid doing auto deduction if
4824	the explicit initializer has parameter packs.
4825
4826	PR c++/88754
4827	* parser.c (cp_parser_check_template_parameters): Before issuing a hard
4828	error, first try simulating an error instead.
4829
48302020-04-17  Jakub Jelinek  <jakub@redhat.com>
4831
4832	PR other/94629
4833	* call.c (build_conditional_expr_1): Remove redundant assignment to
4834	arg2.
4835
48362020-04-16  Patrick Palka  <ppalka@redhat.com>
4837
4838	PR c++/94475
4839	* cvt.c (ocp_convert): If the result of scalar_constant_value is
4840	erroneous, ignore it and use the original expression.
4841
48422020-04-16  Jakub Jelinek  <jakub@redhat.com>
4843
4844	PR c++/94571
4845	* parser.c (cp_parser_simple_declaration): Fix up a pasto in
4846	diagnostics.
4847
48482020-04-15  Jakub Jelinek  <jakub@redhat.com>
4849
4850	PR c/94593
4851	* parser.c (cp_parser_pragma) <case PRAGMA_OMP_REQUIRES>: Reject
4852	requires directive when not at file or namespace scope.
4853
48542020-04-14  Iain Sandoe  <iain@sandoe.co.uk>
4855
4856	PR c++/94359
4857	* coroutines.cc (build_actor_fn): Check that the target can
4858	support the resume tailcall before mandating it.
4859
48602020-04-14  Patrick Palka  <ppalka@redhat.com>
4861
4862	PR c++/85278
4863	* cxx-pretty-print.c (cxx_pretty_printer:simple_type_specifier)
4864	<case DECLTYPE_TYPE>: Handle DECLTYPE_TYPE here instead of ...
4865	(pp_cxx_type_specifier_seq) <case DECLTYPE_TYPE>: ... here.
4866	(cxx_pretty_printer::direct_abstract_declarator) <case DECLTYPE_TYPE>:
4867	New no-op case.
4868
4869	PR c++/94034
4870	* constexpr.c (replace_result_decl_data): New struct.
4871	(replace_result_decl_data_r): New function.
4872	(replace_result_decl): New function.
4873	(cxx_eval_call_expression): Use it.
4874	* tree.c (build_aggr_init_expr): Set the location of the AGGR_INIT_EXPR
4875	to that of its initializer.
4876
48772020-04-13  Marek Polacek  <polacek@redhat.com>
4878
4879	PR c++/94588
4880	* name-lookup.c (check_local_shadow): Add an inform call.
4881
48822020-04-13  Patrick Palka  <ppalka@redhat.com>
4883
4884	PR c++/94521
4885	* error.c (dump_scope): Pass TFF_NO_FUNCTION_ARGUMENTS to
4886	dump_function_decl when printing a function template instantiation as a
4887	scope.
4888
4889	PR c++/94470
4890	* constexpr.c (get_or_insert_ctor_field): Set default value of parameter
4891	'pos_hint' to -1.
4892	(cxx_eval_bare_aggregate): Use get_or_insert_ctor_field instead of
4893	assuming the the next index belongs at the end of the new CONSTRUCTOR.
4894	(cxx_eval_store_expression): Revert PR c++/78572 fix.
4895
48962020-04-13  Nathan Sidwell  <nathan@acm.org>
4897
4898	PR c++/94426  lambdas with internal linkage are different to no-linkage
4899	* decl2.c (determine_visibility): A lambda's visibility is
4900	affected by its extra scope.
4901	* pt.c (instantiate_decl): Determine var's visibility before
4902	instantiating its initializer.
4903	* tree.c (no_linkage_check): Revert code looking at visibility of
4904	lambda's extra scope.
4905`
49062020-04-10  Iain Sandoe  <iain@sandoe.co.uk>
4907
4908	PR c++/94528
4909	* coroutines.cc (co_await_expander): Remove.
4910	(expand_one_await_expression): New.
4911	(process_one_statement): New.
4912	(await_statement_expander): New.
4913	(build_actor_fn): Revise to use per-statement expander.
4914	(struct susp_frame_data): Reorder and comment.
4915	(register_awaits): Factor code.
4916	(replace_statement_captures): New, factored from...
4917	(maybe_promote_captured_temps):.. here.
4918	(await_statement_walker): Revise to process per statement.
4919	(morph_fn_to_coro): Use revised susp_frame_data layout.
4920
49212020-04-10  Marek Polacek  <polacek@redhat.com>
4922
4923	PR c++/94149
4924	* method.c (constructible_expr): In C++20, try using parenthesized
4925	initialization of aggregates to determine the result of
4926	__is_constructible.
4927
49282020-04-10  Bin Cheng  <bin.cheng@linux.alibaba.com>
4929
4930	* coroutines.cc (co_await_expander): Simplify.
4931
49322020-04-09  Jason Merrill  <jason@redhat.com>
4933
4934	PR c++/94523
4935	* constexpr.c (cxx_eval_constant_expression) [VAR_DECL]: Look at
4936	ctx->object and ctx->global->values first.
4937
49382020-04-09  Marek Polacek  <polacek@redhat.com>
4939
4940	PR c++/93790
4941	* call.c (initialize_reference): If the reference binding failed, maybe
4942	try initializing from { }.
4943	* decl.c (grok_reference_init): For T& t(e), set
4944	LOOKUP_AGGREGATE_PAREN_INIT but don't build up a constructor yet.
4945
49462020-04-08  Iain Sandoe  <iain@sandoe.co.uk>
4947	    Jun Ma  <JunMa@linux.alibaba.com>
4948
4949	* coroutines.cc (maybe_promote_captured_temps): Add a cleanup
4950	expression, if needed, to any call from which we promoted
4951	temporaries captured by reference.
4952
49532020-04-08  Marek Polacek  <polacek@redhat.com>
4954
4955	PR c++/94507 - ICE-on-invalid with lambda template.
4956	* pt.c (tsubst_lambda_expr): Cope when tsubst_template_decl or
4957	tsubst_function_decl returns error_mark_node.
4958
49592020-04-08  Martin Liska  <mliska@suse.cz>
4960
4961	PR c++/94314
4962	* decl.c (duplicate_decls): Duplicate also DECL_IS_REPLACEABLE_OPERATOR.
4963	(cxx_init_decl_processing): Mark replaceable all implicitly defined
4964	operators.
4965
49662020-04-08  Patrick Palka  <ppalka@redhat.com>
4967
4968	Core issues 1001 and 1322
4969	PR c++/92010
4970	* pt.c (rebuild_function_or_method_type): Split function out from ...
4971	(tsubst_function_type): ... here.
4972	(maybe_rebuild_function_decl_type): New function.
4973	(tsubst_function_decl): Use it.
4974
49752020-04-08  Jakub Jelinek  <jakub@redhat.com>
4976
4977	PR c++/94325
4978	* decl.c (begin_destructor_body): For CLASSTYPE_VBASECLASSES class
4979	dtors, if CLASSTYPE_PRIMARY_BINFO is non-NULL, but not BINFO_VIRTUAL_P,
4980	look at CLASSTYPE_PRIMARY_BINFO of its BINFO_TYPE if it is not
4981	BINFO_VIRTUAL_P, and so on.
4982
49832020-04-08  Marek Polacek  <polacek@redhat.com>
4984
4985	PR c++/94478 - ICE with defaulted comparison operator
4986	* method.c (early_check_defaulted_comparison): Give an error when the
4987	context is null.
4988
49892020-04-08  Tobias Burnus  <tobias@codesourcery.com>
4990
4991	PR middle-end/94120
4992	* paser.c (cp_parser_oacc_declare): Add check that variables
4993	are declared in the same scope as the directive.
4994
49952020-04-07  Jason Merrill  <jason@redhat.com>
4996
4997	PR c++/94480
4998	* parser.c (cp_parser_requires_expression): Use tentative_firewall.
4999
5000	PR c++/94481
5001	* parser.c (cp_parser_placeholder_type_specifier): Use
5002	matching_parens.
5003
50042020-04-07  Iain Sandoe  <iain@sandoe.co.uk>
5005
5006	* coroutines.cc (maybe_promote_captured_temps): Ensure that
5007	reference capture placeholder vars are properly declared.
5008
50092020-04-07  Patrick Palka  <ppalka@redhat.com>
5010
5011	PR c++/90996
5012	* tree.c (replace_placeholders): Look through all handled components,
5013	not just COMPONENT_REFs.
5014	* typeck2.c (process_init_constructor_array): Propagate
5015	CONSTRUCTOR_PLACEHOLDER_BOUNDARY up from each element initializer to
5016	the array initializer.
5017
50182020-04-07  Jakub Jelinek  <jakub@redhat.com>
5019
5020	PR c++/94512
5021	* parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
5022	if cp_parser_omp_master succeeded.
5023
50242020-04-06  Jason Merrill  <jason@redhat.com>
5025
5026	PR c++/94462
5027	* decl.c (duplicate_decls): Fix handling of DECL_HIDDEN_FRIEND_P.
5028
50292020-04-04  Marek Polacek  <polacek@redhat.com>
5030	    Jason Merrill  <jason@redhat.com>
5031
5032	PR c++/94155 - crash in gimplifier with paren init of aggregates.
5033	* init.c (build_vec_init): Fill in indexes.
5034
50352020-04-04  Jason Merrill  <jason@redhat.com>
5036
5037	PR c++/91377
5038	* mangle.c (write_expression): Skip IMPLICIT_CONV_EXPR.
5039
50402020-04-04  Patrick Palka  <ppalka@redhat.com>
5041
5042	PR c++/94205
5043	PR c++/79937
5044	* constexpr.c (struct constexpr_ctx): New field 'parent'.
5045	(cxx_eval_bare_aggregate): Propagate CONSTRUCTOR_PLACEHOLDER_BOUNDARY
5046	flag from the original constructor to the reduced constructor.
5047	(lookup_placeholder): Prefer to return the outermost matching object
5048	by recursively calling lookup_placeholder on the 'parent' context,
5049	but don't cross CONSTRUCTOR_PLACEHOLDER_BOUNDARY constructors.
5050	(cxx_eval_constant_expression): Link the 'ctx' context to the 'new_ctx'
5051	context via 'new_ctx.parent' when being expanded without an explicit
5052	target.  Don't call replace_placeholders.
5053	(cxx_eval_outermost_constant_expr): Initialize 'ctx.parent' to NULL.
5054
5055	PR c++/94219
5056	PR c++/94205
5057	* constexpr.c (get_or_insert_ctor_field): Split out (while adding
5058	support for VECTOR_TYPEs, and optimizations for the common case)
5059	from ...
5060	(cxx_eval_store_expression): ... here.  Rename local variable
5061	'changed_active_union_member_p' to 'activated_union_member_p'.  Record
5062	the sequence of indexes into 'indexes' that yields the subobject we're
5063	assigning to.  Record the integer offsets of the constructor indexes
5064	we're assigning through into 'index_pos_hints'.  After evaluating the
5065	initializer of the store expression, recompute 'valp' using 'indexes'
5066	and using 'index_pos_hints' as hints.
5067	(cxx_eval_bare_aggregate): Tweak comments.  Use get_or_insert_ctor_field
5068	to recompute the constructor_elt pointer we're assigning through after
5069	evaluating each initializer.
5070
50712020-04-04  Jason Merrill  <jason@redhat.com>
5072
5073	PR c++/67825
5074	* constraint.cc (tsubst_valid_expression_requirement): Call
5075	convert_to_void.
5076
50772020-04-04  Jason Merrill  <jason@redhat.com>
5078
5079	PR c++/94453
5080	* constexpr.c (maybe_constant_value): Use break_out_target_exprs.
5081	* expr.c (mark_use) [VIEW_CONVERT_EXPR]: Don't wrap a TARGET_EXPR in
5082	NON_LVALUE_EXPR.
5083
50842020-04-04  Jakub Jelinek  <jakub@redhat.com>
5085
5086	PR debug/94441
5087	* parser.c (cp_parser_omp_for_loop): Use
5088	protected_set_expr_location_if_unset.
5089	* cp-gimplify.c (genericize_if_stmt, genericize_cp_loop): Likewise.
5090
5091	PR c++/94477
5092	* pt.c (tsubst_expr) <case OMP_MASTER>: Clear
5093	omp_parallel_combined_clauses.
5094
50952020-04-03  Jason Merrill  <jason@redhat.com>
5096
5097	PR c++/91966
5098	* pt.c (complex_pack_expansion_r): New.
5099	(complex_alias_template_p): Use it.
5100
51012020-03-31  Jason Merrill  <jason@redhat.com>
5102
5103	PR c++/94205
5104	* constexpr.c (cxx_eval_constant_expression) [TARGET_EXPR]: Call
5105	replace_placeholders.
5106	* typeck2.c (store_init_value): Fix arguments to
5107	fold_non_dependent_expr.
5108
51092020-03-31  Jason Merrill  <jason@redhat.com>
5110
5111	* constexpr.c (cxx_eval_constant_expression) [TARGET_EXPR]: Use
5112	local variables.
5113
51142020-03-30  Jason Merrill  <jason@redhat.com>
5115
5116	PR c++/90711
5117	* tree.c (cp_tree_equal) [CALL_EXPR]: Compare KOENIG_LOOKUP_P.
5118	(called_fns_equal): Check DECL_CONTEXT.
5119
51202020-03-30  Jakub Jelinek  <jakub@redhat.com>
5121
5122	PR c++/94385
5123	* semantics.c (add_stmt): Only set STMT_IS_FULL_EXPR_P on trees with
5124	STATEMENT_CODE_P code.
5125
51262020-03-28  Patrick Palka  <ppalka@redhat.com>
5127
5128	PR c++/94306
5129	* parser.c (cp_parser_requires_clause_opt): Diagnose and recover from
5130	"requires {" when "requires requires {" was probably intended.
5131
5132	PR c++/94252
5133	* constraint.cc (tsubst_compound_requirement): Always suppress errors
5134	from type_deducible_p and expression_convertible_p, as they're not
5135	substitution errors.
5136	(diagnose_atomic_constraint) <case INTEGER_CST>: Remove this case so
5137	that we diagnose INTEGER_CST expressions of non-bool type via the
5138	default case.
5139	* cp-gimplify.c (cp_genericize_r) <case REQUIRES_EXPR>: New case.
5140	* parser.c (cp_parser_requires_expression): Always parse the requirement
5141	body as if we're processing a template, by temporarily incrementing
5142	processing_template_decl.  Afterwards, if we're not actually in a
5143	template context, perform semantic processing to diagnose any invalid
5144	types and expressions.
5145	* pt.c (tsubst_copy_and_build) <case REQUIRES_EXPR>: Remove dead code.
5146	* semantics.c (finish_static_assert): Explain an assertion failure
5147	when the condition is a REQUIRES_EXPR like we do when it is a concept
5148	check.
5149
5150	* constraint.cc (diagnose_compound_requirement): When diagnosing a
5151	compound requirement, maybe replay the satisfaction failure, subject to
5152	the current diagnosis depth.
5153
5154	* constraint.cc (finish_constraint_binary_op): Set the location of EXPR
5155	as well as its range, because build_x_binary_op doesn't always do so.
5156	(current_constraint_diagnosis_depth): New.
5157	(concepts_diagnostics_max_depth_exceeded_p): New.
5158	(collect_operands_of_disjunction): New.
5159	(satisfy_disjunction): When diagnosing a satisfaction failure, maybe
5160	replay each branch of the disjunction, subject to the current diagnosis
5161	depth.
5162	(diagnose_valid_expression): When diagnosing a satisfaction failure,
5163	maybe replay the substitution error, subject to the current diagnosis
5164	recursion.
5165	(diagnose_valid_type): Likewise.
5166	(diagnose_nested_requiremnet): Likewise.
5167	(diagnosing_failed_constraint::diagnosing_failed_constraint): Increment
5168	current_constraint_diagnosis_depth when diagnosing.
5169	(diagnosing_failed_constraint::~diagnosing_failed_constraint): Decrement
5170	current_constraint_diagnosis_depth when diagnosing.
5171	(diagnosing_failed_constraint::replay_errors_p): New static member
5172	function.
5173	(diagnose_constraints): Don't diagnose if concepts_diagnostics_max_depth
5174	is 0.  Emit a one-off note to increase -fconcepts-diagnostics-depth if
5175	the limit was exceeded.
5176	* cp-tree.h (diagnosing_failed_constraint::replay_errors_p): Declare.
5177
51782020-03-27  Nathan Sidwell  <nathan@acm.org>
5179
5180	PR c++/84733
5181	* name-lookup.c (do_pushdecl): Look through cleanp levels.
5182
51832020-03-27  Martin Sebor  <msebor@redhat.com>
5184
5185	PR c++/94078
5186	PR c++/93824
5187	PR c++/93810
5188	* cp-tree.h (most_specialized_partial_spec): Declare.
5189	* parser.c (cp_parser_elaborated_type_specifier): Distinguish alias
5190	from declarations.
5191	(specialization_of): New function.
5192	(cp_parser_check_class_key): Move code...
5193	(class_decl_loc_t::add): ...to here.  Add parameters.  Avoid issuing
5194	-Wredundant-tags on first-time declarations in other declarators.
5195	Correct handling of template specializations.
5196	(class_decl_loc_t::diag_mismatched_tags): Also expect to be called
5197	when -Wredundant-tags is enabled.  Use primary template or partial
5198	specialization as the guide for uses of implicit instantiations.
5199	* pt.c (most_specialized_partial_spec): Declare extern.
5200
52012020-03-27  Nathan Sidwell  <nathan@acm.org>
5202
5203	PR c++/94257
5204	* name-lookup.c (push_namespace): Triage ambiguous lookups that
5205	contain namespaces.
5206
52072020-03-27  Jakub Jelinek  <jakub@redhat.com>
5208
5209	PR c++/94326
5210	* call.c (set_flags_from_callee): Don't update
5211	cp_function_chain->can_throw or current_function_returns_abnormally
5212	if cp_unevaluated_operand.
5213
5214	PR c++/94339
5215	* cvt.c (ocp_convert): Handle COMPOUND_EXPR by recursion on the second
5216	operand and creating a new COMPOUND_EXPR if anything changed.
5217
52182020-03-26  Marek Polacek  <polacek@redhat.com>
5219
5220	PR c++/94336 - template keyword accepted before destructor names.
5221	* parser.c (cp_parser_unqualified_id): Give an error when 'template'
5222	is followed by a destructor name.
5223
52242020-03-27  Patrick Palka  <ppalka@redhat.com>
5225
5226	* decl.c (compute_array_index_type_loc): Remove redundant
5227	type_dependent_expression_p check that is subsumed by
5228	value_dependent_expression_p.
5229	* decl2.c (is_late_template_attribute): Likewise.
5230	* pt.c (uses_template_parms): Likewise.
5231	(dependent_template_arg_p): Likewise.
5232
52332020-03-26  Marek Polacek  <polacek@redhat.com>
5234
5235	DR 1710
5236	PR c++/94057 - template keyword in a typename-specifier.
5237	* parser.c (check_template_keyword_in_nested_name_spec): New.
5238	(cp_parser_nested_name_specifier_opt): Implement DR1710, optional
5239	'template'.  Call check_template_keyword_in_nested_name_spec.
5240	(cp_parser_simple_type_specifier): Assume that a <
5241	following a qualified-id in a typename-specifier begins
5242	a template argument list.
5243
52442020-03-26  Iain Sandoe  <iain@sandoe.co.uk>
5245
5246	* coroutines.cc (coro_init_identifiers): Initialize an identifier
5247	for the cororoutine handle 'address' method name.
5248	(struct coro_aw_data): Add fields to cover the continuations.
5249	(co_await_expander): Determine the kind of await_suspend in use.
5250	If we have the case that returns a continuation handle, then save
5251	this and make the target for 'scope exit without cleanup' be the
5252	continuation resume label.
5253	(expand_co_awaits): Remove.
5254	(struct suspend_point_info): Remove fields that kept the returned
5255	await_suspend handle type.
5256	(transform_await_expr): Remove code tracking continuation handles.
5257	(build_actor_fn): Add the continuation handle as an actor-function
5258	scope var.  Build the symmetric transfer continuation point. Call
5259	the tree walk for co_await expansion directly, rather than via a
5260	trivial shim function.
5261	(register_await_info): Remove fields tracking continuation handles.
5262	(get_await_suspend_return_type): Remove.
5263	(register_awaits): Remove code tracking continuation handles.
5264	(morph_fn_to_coro): Remove code tracking continuation handles.
5265
52662020-03-26  Iain Sandoe  <iain@sandoe.co.uk>
5267
5268	* coroutines.cc (co_await_expander): If we are expanding the
5269	initial await expression, set a boolean flag to show that we
5270	have now reached the initial await_resume() method call.
5271	(expand_co_awaits): Handle the 'initial await resume called' flag.
5272	(build_actor_fn): Insert the initial await expression into the
5273	start of the user-authored function-body. Handle the 'initial await
5274	resume called' flag.
5275	(morph_fn_to_coro): Initialise the 'initial await resume called'
5276	flag.  Modify the unhandled exception catch clause to recognise
5277	exceptions that occur before the initial await_resume() and re-
5278	throw them.
5279
52802020-03-26  Jakub Jelinek  <jakub@redhat.com>
5281
5282	PR c++/81349
5283	* class.c (user_provided_p): Use STRIP_TEMPLATE instead of returning
5284	true for all TEMPLATE_DECLs.
5285
5286	PR c++/94272
5287	* cp-gimplify.c (cp_genericize_r): Handle STATEMENT_LIST.
5288
52892020-03-25  Patrick Palka  <ppalka@redhat.com>
5290
5291	PR c++/94265
5292	* parser.c (cp_parser_selection_statement) <case RID_IF>: Invalidate the
5293	current condition chain when the if-statement has a non-empty
5294	init-statement.
5295
52962020-03-25  Iain Sandoe  <iain@sandoe.co.uk>
5297
5298	PR c++/94319
5299	* coroutines.cc (captures_temporary): Fix a missing dereference.
5300
53012020-03-24  Marek Polacek  <polacek@redhat.com>
5302
5303	PR c++/94190 - wrong no post-decrement operator error in template.
5304	* call.c (convert_like_real): Use convert_from_reference on the result.
5305
53062020-03-24  Jason Merrill  <jason@redhat.com>
5307
5308	PR c++/94186
5309	* constraint.cc (constraint_satisfaction_value): Repeat noisily on
5310	error.
5311	(tsubst_nested_requirement): Likewise.
5312	(get_constraint_error_location): Allow missing context.
5313	(diagnose_atomic_constraint): Diagnose non-bool constraint here.
5314	(satisfy_atom): Not here.  Only diagnose non-constant when noisy.
5315
53162020-03-24  Jason Merrill  <jason@redhat.com>
5317
5318	* pt.c (any_template_parm_r): Look into the type of a non-type
5319	template parm.
5320
53212020-03-24  Jason Merrill  <jason@redhat.com>
5322
5323	* cp-tree.h (cp_expr): When constructing from an expr and a
5324	location, call protected_set_expr_location.
5325
53262020-03-23  Patrick Palka  <ppalka@redhat.com>
5327
5328	PR c++/93805
5329	* except.c (maybe_noexcept_warning): Add TODO.
5330	* method.c (walk_field_subobs): Pass tf_none to expr_noexcept_p.
5331
53322020-03-23  nathans  <nathan@acm.org>
5333
5334	PR c++/94044
5335	* tree.c (cp_tree_equal) [SIZEOF_EXPR]: Detect argument pack
5336	operand.
5337
53382020-03-21  Patrick Palka  <ppalka@redhat.com>
5339
5340	PR c++/94066
5341	* constexpr.c (reduced_constant_expression_p) [CONSTRUCTOR]: Properly
5342	handle unions without an initializer.
5343	(cxx_eval_component_reference): Emit a different diagnostic when the
5344	constructor element corresponding to a union member is NULL.
5345	(cxx_eval_bare_aggregate): When constructing a union, always set the
5346	active union member before evaluating the initializer.  Relax assertion
5347	that verifies the index of the constructor element we're initializing
5348	hasn't been changed.
5349	(cxx_eval_store_expression): Diagnose changing the active union member
5350	while the union is in the process of being initialized.  After setting
5351	an active union member, clear CONSTRUCTOR_NO_CLEARING on the underlying
5352	CONSTRUCTOR.
5353	(cxx_eval_constant_expression) [PLACEHOLDER_EXPR]: Don't re-reduce a
5354	CONSTRUCTOR returned by lookup_placeholder.
5355
53562020-03-20  Patrick Palka  <ppalka@redhat.com>
5357
5358	* cxx-pretty-print.c (pp_cxx_parameter_mapping): Make extern.  Move
5359	the "[with ]" bits to here from ...
5360	(pp_cxx_atomic_constraint): ... here.
5361	* cxx-pretty-print.h (pp_cxx_parameter_mapping): Declare.
5362	* error.c (rebuild_concept_check): Delete.
5363	(print_concept_check_info): Print the dependent form of the constraint and the
5364	preferably substituted parameter mapping alongside it.
5365
53662020-03-19  Jason Merrill  <jason@redhat.com>
5367
5368	PR c++/94175
5369	* cp-gimplify.c (simple_empty_class_p): Look through
5370	SIMPLE_TARGET_EXPR_P.
5371	(cp_gimplify_expr) [MODIFY_EXPR]: Likewise.
5372	[RETURN_EXPR]: Avoid producing 'return *retval;'.
5373	* call.c (build_call_a): Strip TARGET_EXPR from empty class arg.
5374	* cp-tree.h (SIMPLE_TARGET_EXPR_P): Check that TARGET_EXPR_INITIAL
5375	is non-null.
5376
53772020-03-19  Jakub Jelinek  <jakub@redhat.com>
5378
5379	PR c++/93931
5380	* parser.c (cp_parser_omp_var_list_no_open): Call process_outer_var_ref
5381	on outer_automatic_var_p decls.
5382	* cp-gimplify.c (cxx_omp_disregard_value_expr): Return true also for
5383	capture proxy decls.
5384
53852020-03-18  Nathan Sidwell  <nathan@acm.org>
5386
5387	PR c++/94147 - mangling of lambdas assigned to globals
5388	* parser.c (cp_parser_init_declarator): Namespace-scope variables
5389	provide a lambda scope.
5390	* tree.c (no_linkage_check): Lambdas with a variable for extra
5391	scope have a linkage from the variable.
5392
53932020-03-18  Jakub Jelinek  <jakub@redhat.com>
5394
5395	* constraint.cc (resolve_function_concept_check, subsumes_constraints,
5396	strictly_subsumes): Fix up duplicated word issue in a comment.
5397	* coroutines.cc (build_init_or_final_await, captures_temporary):
5398	Likewise.
5399	* logic.cc (dnf_size_r, cnf_size_r): Likewise.
5400	* pt.c (append_type_to_template_for_access_check): Likewise.
5401
5402	PR c++/91759
5403	* decl.c (grokfndecl): Restore old diagnostics about deduction
5404	guide declared in different scope if in_namespace is NULL_TREE.
5405
54062020-03-17  Jakub Jelinek  <jakub@redhat.com>
5407
5408	PR c++/90995
5409	* parser.c (cp_parser_enum_specifier): Use temp_override for
5410	parser->colon_corrects_to_scope_p, replace goto out with return.
5411	If scoped enum or enum with underlying type is not followed by
5412	{ or ;, call cp_parser_commit_to_tentative_parse before calling
5413	cp_parser_error and make sure to return error_mark_node instead of
5414	NULL_TREE.  Formatting fixes.
5415
54162020-03-17  Ville Voutilainen  <ville.voutilainen@gmail.com>
5417
5418	PR c++/94197
5419	* method.c (assignable_expr): Use cp_unevaluated.
5420	(is_xible_helper): Push a non-deferred access check for
5421	the stub objects created by assignable_expr and constructible_expr.
5422
54232020-03-17  Jakub Jelinek  <jakub@redhat.com>
5424
5425	* pt.c (tsubst): Fix up duplicated word issue in a diagnostic message.
5426	(lookup_template_class_1, tsubst_expr): Fix up duplicated word issue
5427	in a comment.
5428	* parser.c (cp_parser_statement, cp_parser_linkage_specification,
5429	cp_parser_placeholder_type_specifier,
5430	cp_parser_constraint_requires_parens): Likewise.
5431	* name-lookup.c (suggest_alternative_in_explicit_scope): Likewise.
5432
54332020-03-15  Iain Sandoe  <iain@sandoe.co.uk>
5434
5435	* coroutines.cc (co_await_expander): Fix indentation.
5436
54372020-03-14  Jason Merrill  <jason@redhat.com>
5438
5439	PR c++/92068
5440	* pt.c (process_partial_specialization): Error rather than crash on
5441	extra pack expansion.
5442
54432020-03-14  Jason Merrill  <jason@redhat.com>
5444
5445	PR c++/92909
5446	* pt.c (find_parameter_packs_r): [DECL_EXPR]: Walk
5447	DECL_ORIGINAL_TYPE of a typedef.
5448
54492020-03-14  Jason Merrill  <jason@redhat.com>
5450
5451	PR c++/93248
5452	* pt.c (build_deduction_guide): Clear cp_unevaluated_operand for
5453	substituting DECL_ARGUMENTS.
5454
54552020-03-14  Jakub Jelinek  <jakub@redhat.com>
5456
5457	* logic.cc (formula::formula): Change "a an" to "an" in a comment.
5458	* parser.c (cp_debug_parser): Change "a an" to "an" in a string
5459	literal.
5460
54612020-03-13  Patrick Palka  <ppalka@redhat.com>
5462
5463	PR c++/67960
5464	* call.c (build_over_call): Use a warning_sentinel to disable
5465	warn_deprecated_decl before calling build_addr_func.
5466
54672020-03-12  Jakub Jelinek  <jakub@redhat.com>
5468
5469	PR c++/94124
5470	* decl.c (reshape_init_array_1): Don't unshare constructor if there
5471	aren't any trailing zero elts, otherwise only unshare the first
5472	nelts.
5473
54742020-03-11  Jason Merrill  <jason@redhat.com>
5475
5476	PR c++/93907
5477	* constraint.cc (tsubst_parameter_mapping): Canonicalize type
5478	argument.
5479
54802020-03-11  Marek Polacek  <polacek@redhat.com>
5481	    Jason Merrill  <jason@redhat.com>
5482
5483	PR c++/94074 - wrong modifying const object error for COMPONENT_REF.
5484	* constexpr.c (cref_has_const_field): New function.
5485	(modifying_const_object_p): Consider a COMPONENT_REF
5486	const only if any of its fields are const.
5487	(cxx_eval_store_expression): Mark a CONSTRUCTOR of a const type
5488	as readonly after its initialization has been done.
5489
54902020-03-10  Marek Polacek  <polacek@redhat.com>
5491
5492	PR c++/94124 - wrong conversion error with non-viable overload.
5493	* decl.c (reshape_init_array_1): Unshare a constructor if we
5494	stripped trailing zero-initializers.
5495
54962020-03-10  Jason Merrill  <jason@redhat.com>
5497
5498	PR c++/93901
5499	* pt.c (maybe_instantiate_noexcept): Always update clones.
5500
55012020-03-10  Jason Merrill  <jason@redhat.com>
5502
5503	PR c++/93596
5504	* pt.c (maybe_aggr_guide): Check BRACE_ENCLOSED_INITIALIZER_P.
5505
55062020-03-10  Jason Merrill  <jason@redhat.com>
5507
5508	PR c++/93922
5509	PR c++/94041
5510	PR c++/52320
5511	PR c++/66139
5512	* cp-gimplify.c (cp_gimplify_init_expr): Partially revert patch for
5513	66139: Don't split_nonconstant_init.  Remove pre_p parameter.
5514
55152020-03-09  Marek Polacek  <polacek@redhat.com>
5516
5517	PR c++/92031 - bogus taking address of rvalue error.
5518	PR c++/91465 - ICE with template codes in check_narrowing.
5519	PR c++/93870 - wrong error when converting template non-type arg.
5520	PR c++/94068 - ICE with template codes in check_narrowing.
5521	* call.c (convert_like_real): Return IMPLICIT_CONV_EXPR
5522	in a template when not ck_identity and we're dealing with a class.
5523	(convert_like_real) <case ck_ref_bind>: Return IMPLICIT_CONV_EXPR
5524	in a template if we need a temporary.
5525	* decl.c (compute_array_index_type_loc): Remove
5526	instantiate_non_dependent_expr_sfinae call.  Call
5527	fold_non_dependent_expr instead of maybe_constant_value.
5528	(build_explicit_specifier): Don't instantiate or create a sentinel
5529	before converting the expression.
5530	* except.c (build_noexcept_spec): Likewise.
5531	* pt.c (convert_nontype_argument): Don't build IMPLICIT_CONV_EXPR.
5532	Set IMPLICIT_CONV_EXPR_NONTYPE_ARG if that's what
5533	build_converted_constant_expr returned.
5534	* typeck2.c (check_narrowing): Call fold_non_dependent_expr instead
5535	of maybe_constant_value.
5536
55372020-03-09  Jakub Jelinek  <jakub@redhat.com>
5538
5539	PR c++/94067
5540	Revert
5541	2019-10-11  Paolo Carlini  <paolo.carlini@oracle.com>
5542
5543	* constexpr.c (cxx_eval_constant_expression): Do not handle
5544	RROTATE_EXPR and LROTATE_EXPR.
5545
55462020-03-09  Marek Polacek  <polacek@redhat.com>
5547
5548	PR c++/94050 - ABI issue with alignas on armv7hl.
5549	* class.c (layout_class_type): Don't replace a class's
5550	CLASSTYPE_AS_BASE if their TYPE_USER_ALIGN don't match.
5551
55522020-03-09  Bin Cheng  <bin.cheng@linux.alibaba.com>
5553
5554	* coroutines.cc (build_actor_fn): Factor out code inserting the
5555	default return_void call to...
5556	(morph_fn_to_coro): ...here, also hoist local var declarations.
5557
55582020-03-08  Patrick Palka  <ppalka@redhat.com>
5559
5560	PR c++/93729
5561	* call.c (convert_like_real): Check complain before emitting an error
5562	about binding a bit-field to a reference.
5563
5564	* cxx-pretty-print.c (cxx_pretty_printer::simple_type_specifier)
5565	[TYPENAME_TYPE]: Print the TYPENAME_TYPE_FULLNAME instead of the
5566	TYPE_NAME.
5567
55682020-03-06  Nathan Sidwell  <nathan@acm.org>
5569
5570	PR c++/94027
5571	* mangle.c (find_substitution): Don't call same_type_p on template
5572	args that cannot match.
5573
55742020-03-04  Martin Sebor  <msebor@redhat.com>
5575
5576	PR c++/90938
5577	* tree.c (type_initializer_zero_p): Fail for structs initialized
5578	with non-structs.
5579
55802020-03-04  Jason Merrill  <jason@redhat.com>
5581
5582	PR c++/90432
5583	* init.c (perform_member_init): Don't do aggregate initialization of
5584	empty field.
5585	* constexpr.c (cx_check_missing_mem_inits): Don't enforce
5586	initialization of empty field.
5587
55882020-03-04  Martin Liska  <mliska@suse.cz>
5589
5590	* method.c: Wrap array in ctor with braces in order
5591	to silent clang warnings.
5592
55932020-03-03  Jason Merrill  <jason@redhat.com>
5594	    Marek Polacek  <polacek@redhat.com>
5595
5596	PR c++/90505 - mismatch in template argument deduction.
5597	* pt.c (tsubst): Don't reduce the template level of template
5598	parameters when tf_partial.
5599
56002020-03-03  Jakub Jelinek  <jakub@redhat.com>
5601
5602	PR c++/93998
5603	* constexpr.c (cxx_eval_constant_expression)
5604	<case TARGET_EXPR, case SAVE_EXPR>: Don't record anything if
5605	*non_constant_p is true.
5606
56072020-03-03  Jun Ma  <JunMa@linux.alibaba.com>
5608
5609	* coroutines.cc (captures_temporary): Strip component_ref
5610	to its base object.
5611
56122020-03-03  Jun Ma  <JunMa@linux.alibaba.com>
5613
5614	* coroutines.cc (finish_co_await_expr): Build co_await_expr
5615	with unknown_type_node.
5616	(finish_co_yield_expr): Ditto.
5617	*pt.c (type_dependent_expression_p): Set co_await/yield_expr
5618	with unknown type as dependent.
5619
56202020-03-02  Iain Sandoe  <iain@sandoe.co.uk>
5621
5622	* coroutines.cc (struct local_var_info): Adjust to remove the
5623	reference to the captured var, and just to note that this is a
5624	lambda capture proxy.
5625	(transform_local_var_uses): Handle lambda captures specially.
5626	(struct param_frame_data): Add a visited set.
5627	(register_param_uses): Also check for param uses in lambda
5628	capture proxies.
5629	(struct local_vars_frame_data): Remove captures list.
5630	(register_local_var_uses): Handle lambda capture proxies by
5631	noting and bypassing them.
5632	(morph_fn_to_coro): Update to remove lifetime extension of
5633	lambda capture-by-copy vars.
5634
56352020-03-02  Iain Sandoe  <iain@sandoe.co.uk>
5636
5637	* coroutines.cc (build_co_await): Do not build frame
5638	awaitable proxy vars when the co_await expression is
5639	a function parameter or local var.
5640	(co_await_expander): Do not initialise a frame var with
5641	itself.
5642	(transform_await_expr): Only substitute the awaitable
5643	frame var if it's needed.
5644	(register_awaits): Do not make frame copies for param
5645	or local vars that are awaitables.
5646
56472020-02-28  Jason Merrill  <jason@redhat.com>
5648
5649	Implement P2092R0, Disambiguating Nested-Requirements
5650	* parser.c (cp_parser_requirement_parameter_list): Pass
5651	CP_PARSER_FLAGS_TYPENAME_OPTIONAL.
5652
5653	* call.c (build_user_type_conversion_1): Don't look at the second
5654	conversion of a non-viable candidate.
5655
56562020-02-28  Jakub Jelinek  <jakub@redhat.com>
5657
5658	P1937R2 - Fixing inconsistencies between const{expr,eval} functions
5659	* typeck.c (cp_build_addr_expr_1): Allow taking address of immediate
5660	functions in unevaluated contexts.
5661
56622020-02-27  Nathan Sidwell  <nathan@acm.org>
5663
5664	PR c++/93933
5665	* pt.c (template_args_equal): Pass ARGUMENT_PACKS through to
5666	cp_tree_equal.
5667	* tree.c (cp_tree_equal): Compare ARGUMENT_PACKS here,
5668	* typeck.c (comptypes): Assert we don't get any argument packs.
5669
5670	* class.c (adjust_clone_args): Correct arg-checking assert.
5671	* typeck.c (comptypes): Assert not nulls.
5672
56732020-02-26  Marek Polacek  <polacek@redhat.com>
5674
5675	PR c++/93789 - ICE with invalid array bounds.
5676	* decl.c (compute_array_index_type_loc): Don't use the folded
5677	size when folding cleared TREE_CONSTANT.
5678
56792020-02-26  Iain Sandoe  <iain@sandoe.co.uk>
5680
5681	* class.c (classtype_has_non_deleted_copy_ctor): New.
5682	* coroutines.cc (struct param_info): Keep track of params
5683	that are references, and cache the original type and whether
5684	the DTOR is trivial.
5685	(build_actor_fn): Handle param copies always, and adjust the
5686	handling for references.
5687	(register_param_uses): Only handle uses here.
5688	(classtype_has_non_deleted_copy_ctor): New.
5689	(morph_fn_to_coro): Adjust param copy handling to match n4849
5690	by reordering ahead of the promise CTOR and always making a
5691	frame copy, even if the param is unused in the coroutine body.
5692	* cp-tree.h (classtype_has_non_deleted_copy_ctor): New.
5693
56942020-02-26  Patrick Palka  <ppalka@redhat.com>
5695
5696	* constraint.cc (finish_constraint_binary_op): Set expr's location range
5697	to the range of its operands.
5698	(satisfy_atom): Pass MAP instead of ARGS to diagnose_atomic_constraint.
5699	(diagnose_trait_expr): Take the instantiated parameter mapping MAP
5700	instead of the corresponding template arguments ARGS and adjust body
5701	accordingly.
5702	(diagnose_requires_expr): Likewise.
5703	(diagnose_atomic_constraint): Likewise.  When printing an atomic
5704	constraint expression, print the instantiated parameter mapping
5705	alongside it.
5706	* cxx-pretty-print.cc (cxx_pretty_printer::expression)
5707	[NONTYPE_ARGUMENT_PACK]: Print braces around a NONTYPE_ARGUMENT_PACK.
5708	(cxx_pretty_printer::type_id): Handle TYPE_ARGUMENT_PACK.
5709
57102020-02-26  Marek Polacek  <polacek@redhat.com>
5711
5712	PR c++/93676 - value-init crash in template.
5713	* init.c (build_new_1): Don't call build_vec_init in a template.
5714
57152020-02-26  Marek Polacek  <polacek@redhat.com>
5716
5717	PR c++/93862 - ICE with static_cast when converting from int[].
5718	* call.c (reference_compatible_p): No longer static.
5719	* cp-tree.h (reference_compatible_p): Declare.
5720	* typeck.c (build_static_cast_1): Use reference_compatible_p instead
5721	of reference_related_p.
5722
57232020-02-26  Marek Polacek  <polacek@redhat.com>
5724
5725	PR c++/93803 - ICE with constexpr init and [[no_unique_address]].
5726	* constexpr.c (reduced_constant_expression_p): Don't crash on a null
5727	field.
5728
57292020-02-24  Martin Sebor  <msebor@redhat.com>
5730
5731	PR c++/93804
5732	* parser.c (cp_parser_check_class_key): Avoid issuing -Wredundant-tags
5733	in shared C/C++ code in headers.
5734	Remove a duplicate hunk of code.
5735
57362020-02-24  Marek Polacek  <polacek@redhat.com>
5737
5738	PR c++/93869 - ICE with -Wmismatched-tags.
5739	* parser.c (cp_parser_check_class_key): Check class_key earlier.
5740
57412020-02-24  Marek Polacek  <polacek@redhat.com>
5742
5743	PR c++/93712 - ICE with ill-formed array list-initialization.
5744	* call.c (next_conversion): Return NULL for ck_aggr.
5745	(build_aggr_conv): Set u.expr instead of u.next.
5746	(build_array_conv): Likewise.
5747	(build_complex_conv): Likewise.
5748	(conv_get_original_expr): Handle ck_aggr.
5749
57502020-02-24  Jakub Jelinek  <jakub@redhat.com>
5751
5752	P1937R2 - Fixing inconsistencies between const{expr,eval} functions
5753	* call.c (build_over_call): Don't evaluate immediate functions in
5754	unevaluated operands.
5755
57562020-02-24  Jason Merrill  <jason@redhat.com>
5757
5758	P0780R2: Resolve lambda init-capture pack grammar.
5759	* parser.c (cp_parser_lambda_introducer): Expect &...x=y rather than
5760	...&x=y.
5761
57622020-02-22  Marek Polacek  <polacek@redhat.com>
5763
5764	PR c++/93882
5765	* decl.c (grokdeclarator): Use %qs in a diagnostic message.
5766
57672020-02-21  Martin Sebor  <msebor@redhat.com>
5768
5769	PR gcov-profile/93753
5770	* class.c (check_flexarrays): Tighten up a test for potential members
5771	of anonymous structs or unions.
5772
57732020-02-20  Martin Sebor  <msebor@redhat.com>
5774
5775	PR c++/93801
5776	* parser.c (cp_parser_check_class_key): Only handle true C++ class-keys.
5777
57782020-02-20  Martin Liska  <mliska@suse.cz>
5779
5780	PR translation/93841
5781	* config/or1k/or1k.opt: Remove superfluous word.
5782	* doc/invoke.texi: Likewise.
5783
57842020-02-20  Martin Liska  <mliska@suse.cz>
5785
5786	PR translation/93838
5787	* parser.c (cp_parser_decl_specifier_seq): Remove trailing space.
5788
57892020-02-19  Marek Polacek  <polacek@redhat.com>
5790
5791	PR c++/93169 - wrong-code with a non-constexpr constructor.
5792	* constexpr.c (cxx_eval_call_expression): Only set TREE_READONLY
5793	on constant CONSTRUCTORs.
5794
57952020-02-15  Marek Polacek  <polacek@redhat.com>
5796
5797	PR c++/93710 - poor diagnostic for array initializer.
5798	* call.c (build_user_type_conversion_1): Use cp_expr_loc_or_input_loc
5799	for an error call.
5800
58012020-02-15  Jason Merrill  <jason@redhat.com>
5802
5803	PR c++/92556
5804	* pt.c (any_template_parm_r): Look into lambda body.
5805
5806	PR c++/92583
5807	* pt.c (any_template_parm_r): Remove CONSTRUCTOR handling.
5808
58092020-02-14  Jakub Jelinek  <jakub@redhat.com>
5810
5811	PR c++/61414
5812	* class.c (enum_min_precision): Change prec type from int to int &.
5813
5814	PR libstdc++/92906
5815	* cp-tree.h (enum cp_tree_index): Add CPTI_FALLBACK_DFLOAT32_TYPE,
5816	CPTI_FALLBACK_DFLOAT64_TYPE and CPTI_FALLBACK_DFLOAT128_TYPE.
5817	(fallback_dfloat32_type, fallback_dfloat64_type,
5818	fallback_dfloat128_type): Define.
5819	* mangle.c (write_builtin_type): Handle fallback_dfloat*_type like
5820	dfloat*_type_node.
5821	* rtti.c (emit_support_tinfos): Emit DFP typeinfos even when dfp
5822	is disabled for compatibility.
5823
58242020-02-13  Jason Merrill  <jason@redhat.com>
5825
5826	PR c++/93713
5827	* name-lookup.c (matching_fn_p): A function does not match a
5828	template.
5829
5830	PR c++/93643
5831	PR c++/91476
5832	* tree.c (decl_linkage): Always lk_none for locals.
5833
58342020-02-12  Jason Merrill  <jason@redhat.com>
5835
5836	PR c++/92583
5837	PR c++/92654
5838	* tree.c (cp_walk_subtrees): Walk CONSTRUCTOR types here.
5839	* pt.c (find_parameter_packs_r): Not here.
5840
58412020-02-12 Iain Sandoe  <iain@sandoe.co.uk>
5842
5843	* coroutines.cc (build_actor_fn): Implement deallocation function
5844	selection per n4849, dcl.fct.def.coroutine bullet 12.
5845	(morph_fn_to_coro): Implement allocation function selection per
5846	n4849, dcl.fct.def.coroutine bullets 9 and 10.
5847
58482020-02-12  Marek Polacek  <polacek@redhat.com>
5849
5850	PR c++/93684 - ICE-on-invalid with broken attribute.
5851	* parser.c (cp_parser_std_attribute): Peek a token first before
5852	consuming it.
5853
58542020-02-11  Jason Merrill  <jason@redhat.com>
5855
5856	PR c++/93675
5857	* class.c (add_implicitly_declared_members): Use do_friend.
5858	* method.c (implicitly_declare_fn): Fix friend handling.
5859	(decl_remember_implicit_trigger_p): New.
5860	(synthesize_method): Use it.
5861	* decl2.c (mark_used): Use it.
5862
58632020-02-11  Jason Merrill  <jason@redhat.com>
5864
5865	PR c++/93650
5866	PR c++/90691
5867	* constexpr.c (maybe_constant_value): Correct earlier change.
5868	(cxx_eval_binary_expression) [SPACESHIP_EXPR]: Pass lval through.
5869	* method.c (genericize_spaceship): Wrap result in TARGET_EXPR.
5870
58712020-02-12  Patrick Palka  <ppalka@redhat.com>
5872
5873	PR c++/69448
5874	PR c++/80471
5875	* type-utils.h (find_type_usage): Refactor to take a tree * and to
5876	return a tree *, and update documentation accordingly.
5877	* pt.c (make_auto_1): Set AUTO_IS_DECLTYPE when building a
5878	decltype(auto) node.
5879	(make_constrained_decltype_auto): No need to explicitly set
5880	AUTO_IS_DECLTYPE anymore.
5881	(splice_late_return_type): Use find_type_usage to find and
5882	replace a possibly nested auto node instead of using is_auto.
5883	Check test for is_auto into an assert when deciding whether
5884	to late_return_type.
5885	(type_uses_auto): Adjust the call to find_type_usage.
5886	* parser.c (cp_parser_decltype): No need to explicitly set
5887	AUTO_IS_DECLTYPE anymore.
5888
5889	* error.c (dump_decl) [CONCEPT_DECL]: Use dump_simple_decl.
5890	(dump_simple_decl): Handle standard concept definitions as well as
5891	variable concept definitions.
5892
58932020-02-10  Jakub Jelinek  <jakub@redhat.com>
5894
5895	PR other/93641
5896	* error.c (dump_decl_name): Fix up last argument to strncmp.
5897
58982020-02-10  Jason Merrill  <jason@redhat.com>
5899
5900	PR c++/93618
5901	* tree.c (array_of_unknown_bound_p): New.
5902	* init.c (perform_member_init): Do nothing for flexible arrays.
5903
59042020-02-09  Jakub Jelinek  <jakub@redhat.com>
5905
5906	PR c++/93633
5907	* constexpr.c (cxx_eval_constant_expression): If obj is heap var with
5908	ARRAY_TYPE, use the element type.  Punt if objtype after that is not
5909	a class type.
5910
59112020-02-08  Jason Merrill  <jason@redhat.com>
5912
5913	PR c++/90691
5914	* expr.c (fold_for_warn): Call maybe_constant_value.
5915	* constexpr.c (struct constexpr_ctx): Add uid_sensitive bit-field.
5916	(maybe_constant_value): Add uid_sensitive parm.
5917	(get_fundef_copy): Don't copy if it's true.
5918	(cxx_eval_call_expression): Don't instantiate if it's true.
5919	(cxx_eval_outermost_constant_expr): Likewise.
5920
5921	PR c++/92852
5922	* constexpr.c (maybe_constant_value): Don't unshare if the cached
5923	value is the same as the argument.
5924
5925	* typeck.c (maybe_warn_about_returning_address_of_local): Add
5926	location parameter.
5927
5928	* typeck2.c (process_init_constructor): Also clear TREE_SIDE_EFFECTS
5929	if appropriate.
5930
59312020-02-08  Jakub Jelinek  <jakub@redhat.com>
5932
5933	PR c++/93549
5934	* constexpr.c (find_array_ctor_elt): If last element has no index,
5935	for flag_checking verify all elts have no index.  If i is within the
5936	elts, return it directly, if it is right after the last elt, append
5937	if NULL index, otherwise force indexes on all elts.
5938	(cxx_eval_store_expression): Allow cep->index to be NULL.
5939
59402020-02-07  Marek Polacek  <polacek@redhat.com>
5941
5942	PR c++/92947 - Paren init of aggregates in unevaluated context.
5943	* call.c (build_new_method_call_1): Don't check
5944	cp_unevaluated_operand.  Check the return value of digest_init.
5945
59462020-02-06  Jason Merrill  <jason@redhat.com>
5947
5948	PR c++/92654
5949	* tree.c (cp_walk_subtrees): Walk into type template arguments.
5950	* cp-tree.h (TYPE_TEMPLATE_INFO_MAYBE_ALIAS): Use typedef_variant_p
5951	instead of TYPE_ALIAS_P.
5952	* pt.c (push_template_decl_real): Likewise.
5953	(find_parameter_packs_r): Likewise.  Remove dead code.
5954	* error.c (find_typenames_r): Remove dead code.
5955
59562020-02-06  Jason Merrill  <jason@redhat.com>
5957
5958	PR c++/92517
5959	* parser.c (cp_parser_constraint_primary_expression): Do the main
5960	parse non-tentatively.
5961
59622020-02-06  Marek Polacek  <polacek@redhat.com>
5963
5964	PR c++/93597 - ICE with lambda in operator function.
5965	* name-lookup.c (maybe_save_operator_binding): Check is_overloaded_fn.
5966
59672020-02-05  Jason Merrill  <jason@redhat.com>
5968
5969	PR c++/93140
5970	* pt.c (tsubst_decl) [PARM_DECL]: Check cp_unevaluated_operand in
5971	handling of TREE_CHAIN for empty pack.
5972
59732020-02-05  Jakub Jelinek  <jakub@redhat.com>
5974
5975	PR c++/93557
5976	* semantics.c (cp_build_vec_convert): Call decay_conversion on arg
5977	prior to passing it to c_build_vec_convert.
5978
59792020-02-05  Marek Polacek  <polacek@redhat.com>
5980
5981	PR c++/93559 - ICE with CONSTRUCTOR flags verification.
5982	* decl.c (reshape_init_array_1): Don't reuse a CONSTRUCTOR with
5983	TREE_SIDE_EFFECTS.
5984
59852020-02-05  Jason Merrill  <jason@redhat.com>
5986
5987	PR c++/92593
5988	* decl.c (grokdeclarator): Reject field of current class type even
5989	in a template.
5990
59912020-02-05  Bin Cheng  <bin.cheng@linux.alibaba.com>
5992
5993	* coroutines.cc (maybe_promote_captured_temps): Increase the index
5994	number for temporary variables' name.
5995
59962020-02-05  Jun Ma  <JunMa@linux.alibaba.com>
5997
5998	* coroutines.cc (build_co_await): Call convert_from_reference
5999	to wrap co_await_expr with indirect_ref which avoid
6000	reference/non-reference type confusion.
6001
6002	(co_await_expander):  Sink to call_expr if await_resume
6003	is wrapped by indirect_ref.
6004
60052020-02-04  Jason Merrill  <jason@redhat.com>
6006
6007	PR c++/93551
6008	* constraint.cc (satisfy_declaration_constraints): Check return
6009	value of push_tinst_level.
6010
6011	PR c++/90951
6012	* constexpr.c (cxx_eval_array_reference): {}-initialize missing
6013	elements instead of value-initializing them.
6014
6015	PR c++/86917
6016	* init.c (perform_member_init): Simplify.
6017	* constexpr.c (cx_check_missing_mem_inits): Allow uninitialized
6018	flexarray.
6019	(cxx_eval_vec_init_1): Handle CONSTRUCTOR.
6020
60212020-02-04  Iain Sandoe  <iain@sandoe.co.uk>
6022
6023	* coroutines.cc (find_promise_type): Delete unused forward
6024	declaration.
6025	(struct coroutine_info): Add a bool for no promise type error.
6026	(coro_promise_type_found_p): Only emit the error for a missing
6027	promise once in each affected coroutine.
6028
60292020-02-03  Jason Merrill  <jason@redhat.com>
6030
6031	PR c++/66477
6032	* constexpr.c (cxx_eval_constant_expression) [PARM_DECL]: Don't
6033	defer loading the value of a reference.
6034
60352020-02-03  Jason Merrill  <jason@redhat.com>
6036
6037	PR c++/91953
6038	* constexpr.c (potential_constant_expression_1) [PARM_DECL]: Allow
6039	empty class type.
6040	[COMPONENT_REF]: A member function reference doesn't use the object
6041	as an rvalue.
6042
60432020-02-03  Iain Sandoe  <iain@sandoe.co.uk>
6044
6045	PR c++/93458
6046	* coroutines.cc (struct coroutine_info): Add a bool flag to note
6047	that we emitted an error for a bad function return type.
6048	(get_coroutine_info): Tolerate an unset info table in case of
6049	missing traits.
6050	(find_coro_traits_template_decl): In case of error or if we didn't
6051	find a type template, note we emitted the error and suppress
6052	duplicates.
6053	(find_coro_handle_template_decl): Likewise.
6054	(instantiate_coro_traits): Only check for error_mark_node in the
6055	return from lookup_qualified_name.
6056	(coro_promise_type_found_p): Reorder initialization so that we check
6057	for the traits and their usability before allocation of the info
6058	table.  Check for a suitable return type and emit a diagnostic for
6059	here instead of relying on the lookup machinery.  This allows the
6060	error to have a better location, and means we can suppress multiple
6061	copies.
6062	(coro_function_valid_p): Re-check for a valid promise (and thus the
6063	traits) before proceeding.  Tolerate missing info as a fatal error.
6064
60652020-02-03  Jason Merrill  <jason@redhat.com>
6066
6067	PR c++/88256
6068	* cp-gimplify.c (predeclare_vla): New.
6069	(cp_genericize_r) [NOP_EXPR]: Call it.
6070
60712020-02-03  Jun Ma  <JunMa@linux.alibaba.com>
6072
6073	* coroutines.cc (transform_await_wrapper): Set actor funcion as
6074	new context of label_decl.
6075	(build_actor_fn): Fill new field of await_xform_data.
6076
60772020-02-02  Marek Polacek  <polacek@redhat.com>
6078
6079	PR c++/93530 - ICE on invalid alignas in a template.
6080	* decl.c (grokdeclarator): Call cplus_decl_attributes instead of
6081	decl_attributes.
6082
60832020-01-31  Jason Merrill  <jason@redhat.com>
6084
6085	PR c++/86216
6086	* semantics.c (process_outer_var_ref): Capture VLAs even in
6087	unevaluated context.
6088
6089	PR c++/14179
6090	* decl.c (reshape_init_array_1): Reuse a single CONSTRUCTOR with
6091	non-aggregate elements.
6092	(reshape_init_array): Add first_initializer_p parm.
6093	(reshape_init_r): Change first_initializer_p from bool to tree.
6094	(reshape_init): Pass init to it.
6095
6096	PR c++/14179
6097	* parser.c (cp_parser_initializer_list): Suppress location wrappers
6098	after 256 elements.
6099
61002020-01-29  Jason Merrill  <jason@redhat.com>
6101
6102	PR c++/82521
6103	* pt.c (tsubst_copy_and_build) [EQ_EXPR]: Only suppress warnings if
6104	the expression was dependent before substitution.
6105
61062020-01-30  Bin Cheng  <bin.cheng@linux.alibaba.com>
6107
6108	* coroutines.cc (act_des_fn): New.
6109	(morph_fn_to_coro): Call act_des_fn to build actor/destroy decls.
6110	Access promise via actor function's frame pointer argument.
6111	(build_actor_fn, build_destroy_fn): Use frame pointer argument.
6112
61132020-01-30  Bin Cheng  <bin.cheng@linux.alibaba.com>
6114
6115	* coroutines.cc (co_await_expander): Handle type conversion case.
6116
61172020-01-29  Jason Merrill  <jason@redhat.com>
6118
6119	PR c++/90333
6120	PR c++/89640
6121	PR c++/60503
6122	* parser.c (cp_parser_type_specifier_seq): Don't parse attributes in
6123	a trailing return type.
6124	(cp_parser_lambda_declarator_opt): Parse C++11 attributes before
6125	parens.
6126
61272020-01-29  Marek Polacek  <polacek@redhat.com>
6128
6129	PR c++/91754 - Fix template arguments comparison with class NTTP.
6130	* pt.c (class_nttp_const_wrapper_p): New.
6131	(template_args_equal): See through class_nttp_const_wrapper_p
6132	arguments.
6133
61342020-01-29  Marek Polacek  <polacek@redhat.com>
6135
6136	PR c++/92948 - Fix class NTTP with template arguments.
6137	* pt.c (convert_nontype_argument): Use IMPLICIT_CONV_EXPR when
6138	converting a value-dependent expression to a class type.
6139	(tsubst_copy) <case VIEW_CONVERT_EXPR>: Allow IMPLICIT_CONV_EXPR
6140	as the result of the tsubst_copy call.
6141
61422020-01-29  Jakub Jelinek  <jakub@redhat.com>
6143
6144	PR c++/91118
6145	* cp-gimplify.c (cxx_omp_predetermined_sharing): Return
6146	OMP_CLAUSE_DEFAULT_SHARED for typeinfo decls.
6147
61482020-01-28  Jason Merrill  <jason@redhat.com>
6149
6150	PR c++/93442
6151	* parser.c (cp_parser_lambda_expression): Clear in_discarded_stmt.
6152
6153	PR c++/93477
6154	PR c++/91476
6155	* decl2.c (copy_linkage): Do copy DECL_ONE_ONLY and DECL_WEAK.
6156
6157	PR c++/90546
6158	* call.c (build_user_type_conversion_1): Allow a template conversion
6159	returning an rvalue reference to bind directly to an lvalue.
6160
6161	PR c++/90731
6162	* decl.c (grokdeclarator): Propagate eh spec from typedef.
6163
61642020-01-28  Martin Liska  <mliska@suse.cz>
6165
6166	PR c++/92440
6167	* pt.c (redeclare_class_template): Group couple of
6168	errors and inform messages with auto_diagnostic_group.
6169
61702020-01-28  Martin Liska  <mliska@suse.cz>
6171
6172	PR c++/92440
6173	* pt.c (redeclare_class_template): Use inform
6174	for the second location.
6175
61762020-01-27  Jason Merrill  <jason@redhat.com>
6177
6178	PR c++/90966
6179	* pt.c (tsubst_copy) [STRING_CST]: Don't use fold_convert.
6180
61812020-01-27  Iain Sandoe  <iain@sandoe.co.uk>
6182
6183	PR c++/93443
6184	* coroutines.cc (morph_fn_to_coro): Check the ramp return
6185	value when it is constructed from the 'get return object'.
6186
61872020-01-27  Nathan Sidwell  <nathan@acm.org>
6188
6189	PR c++/91826
6190	* name-lookup.c (is_ancestor): Allow CHILD to be a namespace alias.
6191
61922020-01-26  Jason Merrill  <jason@redhat.com>
6193
6194	PR c++/90992
6195	* except.c (maybe_noexcept_warning): Check DECL_IN_SYSTEM_HEADER and
6196	temporarily enable -Wsystem-headers.  Change second warning to
6197	conditional inform.
6198
6199	PR c++/90997
6200	* semantics.c (finish_call_expr): Don't call
6201	instantiate_non_dependent_expr before warn_for_memset.
6202
62032020-01-25  Marek Polacek  <polacek@redhat.com>
6204
6205	PR c++/93414 - poor diagnostic for dynamic_cast in constexpr context.
6206	* constexpr.c (cxx_eval_dynamic_cast_fn): Add a reference
6207	dynamic_cast diagnostic.
6208
62092020-01-24  Jason Merrill  <jason@redhat.com>
6210
6211	PR c++/93400 - ICE with constrained friend.
6212	* constraint.cc (maybe_substitute_reqs_for): New.
6213	* decl.c (function_requirements_equivalent_p): Call it.
6214	* pt.c (tsubst_friend_function): Only substitute
6215	TEMPLATE_PARMS_CONSTRAINTS.
6216	(tsubst_template_parms): Copy constraints.
6217
62182020-01-24  Jason Merrill  <jason@redhat.com>
6219
6220	PR c++/93279 - ICE with lambda in member operator.
6221	* name-lookup.c (maybe_save_operator_binding): Don't remember
6222	class-scope bindings.
6223
62242020-01-24  Jason Merrill  <jason@redhat.com>
6225
6226	PR c++/93377 - ICE with member alias in constraint.
6227	* pt.c (any_template_parm_r): Look at template arguments for all
6228	aliases, not only alias templates.
6229
62302020-01-24  Marek Polacek  <polacek@redhat.com>
6231
6232	PR c++/93299 - ICE in tsubst_copy with parenthesized expression.
6233	* pt.c (tsubst_copy): Handle a REF_PARENTHESIZED_P VIEW_CONVERT_EXPR.
6234
62352020-01-24  Jason Merrill  <jason@redhat.com>
6236
6237	PR c++/92852 - ICE with generic lambda and reference var.
6238	* constexpr.c (maybe_constant_value): Likewise.
6239
62402020-01-23  Paolo Carlini  <paolo.carlini@oracle.com>
6241
6242	PR c++/92804
6243	* parser.c (cp_parser_nested_name_specifier_opt): Properly
6244	diagnose concept-ids.
6245
62462020-01-23  Jason Merrill  <jason@redhat.com>
6247
6248	PR c++/93331 - ICE with __builtin_strchr.
6249	* constexpr.c (cxx_eval_builtin_function_call): Use the original
6250	argument if we didn't manage to extract a STRING_CST.
6251
6252	PR c++/93345 - ICE with defaulted dtor and template.
6253	PR c++/33799
6254	* decl.c (cxx_maybe_build_cleanup): Don't try to set
6255	throwing_cleanup in a template.
6256
62572020-01-22  Marek Polacek  <polacek@redhat.com>
6258
6259	PR c++/92907 - noexcept does not consider "const" in member functions.
6260	* g++.dg/cpp0x/noexcept56.C: New test.
6261
62622020-01-22  Marek Polacek  <polacek@redhat.com>
6263
6264	PR c++/93324 - ICE with -Wall on constexpr if.
6265	* semantics.c (is_std_constant_evaluated_p): Check fndecl.
6266
62672020-01-22  Patrick Palka  <ppalka@redhat.com>
6268
6269	* constraint.cc (get_mapped_args): Avoid using auto_vec
6270	as a vector element.  Release the vectors inside the lists
6271	vector.
6272	* parser.c (cp_literal_operator_id): Free the buffer.
6273
62742020-01-22  Jun Ma  <JunMa@linux.alibaba.com>
6275
6276	* coroutines.cc (finish_co_await_expr): Add error check on return
6277	value of build_co_await.
6278	(finish_co_yield_expr,): Ditto.
6279
62802020-01-22  Jun Ma  <JunMa@linux.alibaba.com>
6281
6282	* coroutines.cc (lookup_awaitable_member): Lookup an awaitable member.
6283	(lookup_promise_method): Emit diagnostic when get NULL_TREE back only.
6284	(build_co_await): Use lookup_awaitable_member instead of lookup_member.
6285
62862020-01-21  Jason Merrill  <jason@redhat.com>
6287
6288	PR c++/60855 - ICE with sizeof VLA capture.
6289	* lambda.c (is_lambda_ignored_entity): Don't look past VLA capture.
6290
6291	PR c++/90732 - ICE with VLA capture and generic lambda.
6292	* pt.c (tsubst_lambda_expr): Repeat add_capture for VLAs.
6293
62942020-01-21  Iain Sandoe  <iain@sandoe.co.uk>
6295	    Bin Cheng  <bin.cheng@linux.alibaba.com>
6296
6297	* coroutines.cc (coro_promise_type_found_p): Check for NULL return
6298	from complete_type_or_else.
6299	(register_param_uses): Likewise.
6300	(build_co_await): Do not try to use complete_type_or_else for void
6301	types, otherwise for incomplete types, check for NULL return from
6302	complete_type_or_else.
6303
63042020-01-21  Jason Merrill  <jason@redhat.com>
6305
6306	PR c++/91476 - anon-namespace reference temp clash between TUs.
6307	* decl2.c (copy_linkage): Factor out of get_guard.
6308	* call.c (make_temporary_var_for_ref_to_temp): Use it.
6309	* decl.c (cp_finish_decomp): Use it.
6310	(cp_finish_decl): determine_visibility sooner.
6311
63122020-01-21  Bin Cheng  <bin.cheng@linux.alibaba.com>
6313
6314	* coroutines.cc (finish_co_await_expr): Set return value flag.
6315	(finish_co_yield_expr, morph_fn_to_coro): Ditto.
6316
63172020-01-19  Jason Merrill  <jason@redhat.com>
6318
6319	PR c++/33799 - destroy return value, take 2.
6320	* cp-tree.h (current_retval_sentinel): New macro.
6321	(struct language_function): Add throwing_cleanup bitfield.
6322	* decl.c (cxx_maybe_build_cleanup): Set it.
6323	* except.c (maybe_set_retval_sentinel)
6324	(maybe_splice_retval_cleanup): New functions.
6325	* parser.c (cp_parser_compound_statement): Call
6326	maybe_splice_retval_cleanup.
6327	* typeck.c (check_return_expr): Call maybe_set_retval_sentinel.
6328
6329	* parser.c (cp_parser_lambda_body): Use cp_parser_function_body.
6330
63312020-01-18  Jakub Jelinek  <jakub@redhat.com>
6332
6333	* coroutines.cc (get_fn_local_identifier): Fix NO_DOT_IN_LABEL
6334	but non-NO_DOLLAR_IN_LABEL case build.
6335
63362020-01-18  Iain Sandoe  <iain@sandoe.co.uk>
6337
6338	* Make-lang.in: Add coroutines.o.
6339	* cp-tree.h (lang_decl-fn): coroutine_p, new bit.
6340	(DECL_COROUTINE_P): New.
6341	* lex.c (init_reswords): Enable keywords when the coroutine flag
6342	is set,
6343	* operators.def (co_await): New operator.
6344	* call.c (add_builtin_candidates): Handle CO_AWAIT_EXPR.
6345	(op_error): Likewise.
6346	(build_new_op_1): Likewise.
6347	(build_new_function_call): Validate coroutine builtin arguments.
6348	* constexpr.c (potential_constant_expression_1): Handle
6349	CO_AWAIT_EXPR, CO_YIELD_EXPR, CO_RETURN_EXPR.
6350	* coroutines.cc: New file.
6351	* cp-objcp-common.c (cp_common_init_ts): Add CO_AWAIT_EXPR,
6352	CO_YIELD_EXPR, CO_RETRN_EXPR as TS expressions.
6353	* cp-tree.def (CO_AWAIT_EXPR, CO_YIELD_EXPR, (CO_RETURN_EXPR): New.
6354	* cp-tree.h (coro_validate_builtin_call): New.
6355	* decl.c (emit_coro_helper): New.
6356	(finish_function): Handle the case when a function is found to
6357	be a coroutine, perform the outlining and emit the outlined
6358	functions. Set a bit to signal that this is a coroutine component.
6359	* parser.c (enum required_token): New enumeration RT_CO_YIELD.
6360	(cp_parser_unary_expression): Handle co_await.
6361	(cp_parser_assignment_expression): Handle co_yield.
6362	(cp_parser_statement): Handle RID_CO_RETURN.
6363	(cp_parser_jump_statement): Handle co_return.
6364	(cp_parser_operator): Handle co_await operator.
6365	(cp_parser_yield_expression): New.
6366	(cp_parser_required_error): Handle RT_CO_YIELD.
6367	* pt.c (tsubst_copy): Handle CO_AWAIT_EXPR.
6368	(tsubst_expr): Handle CO_AWAIT_EXPR, CO_YIELD_EXPR and
6369	CO_RETURN_EXPRs.
6370	* tree.c (cp_walk_subtrees): Likewise.
6371
63722020-01-17  Jason Merrill  <jason@redhat.com>
6373
6374	PR c++/92531 - ICE with noexcept(lambda).
6375	* pt.c (uses_template_parms): Don't try to enumerate all the
6376	expression cases.
6377
63782020-01-17  Jakub Jelinek  <jakub@redhat.com>
6379
6380	PR c++/93228
6381	* parser.c (cp_parser_template_name): Look up deprecated attribute
6382	in DECL_TEMPLATE_RESULT or its type's attributes.
6383
63842020-01-16  Jason Merrill  <jason@redhat.com>
6385
6386	PR c++/93286 - ICE with __is_constructible and variadic template.
6387	* pt.c (tsubst) [TREE_LIST]: Handle pack expansion.
6388	(tsubst_copy_and_build) [TRAIT_EXPR]: Always use tsubst for type2.
6389
6390	PR c++/93280 - ICE with aggregate assignment and DMI.
6391	* init.c (get_nsdmi): Set TARGET_EXPR_DIRECT_INIT_P here.
6392	* typeck2.c (digest_nsdmi_init): Not here.
6393
63942020-01-15  Paolo Carlini  <paolo.carlini@oracle.com>
6395
6396	PR c++/91073
6397	* cp-tree.h (is_constrained_auto): New.
6398	* parser.c (cp_parser_maybe_commit_to_declaration): Correctly
6399	handle concept-check expressions; take a cp_decl_specifier_seq*
6400	instead of a bool.
6401	(cp_parser_condition): Update call.
6402	(cp_parser_simple_declaration): Likewise.
6403	(cp_parser_placeholder_type_specifier): Correctly handle
6404	concept-check expressions.
6405
64062020-01-15  Jason Merrill  <jason@redhat.com>
6407
6408	Revert
6409	PR c++/33799 - destroy return value if local cleanup throws.
6410	* cp-tree.h (current_retval_sentinel): New macro.
6411	* decl.c (start_preparsed_function): Set up cleanup for retval.
6412	* typeck.c (check_return_expr): Set current_retval_sentinel.
6413
6414	PR c++/93257 - consteval void function.
6415	* constexpr.c (verify_constant): Allow void_node.
6416
6417	PR c++/92871 - bad code with xvalue and GNU ?: extension.
6418	* call.c (prevent_lifetime_extension): New.
6419	(build_conditional_expr_1): Use it.
6420
64212020-01-14  Nathan Sidwell  <nathan@acm.org>
6422
6423	PR c++/90916
6424	* pt.c (retrieve_specialization): Use get_template_info, not open
6425	coding access.
6426
6427	PR c++/90916
6428	* pt.c (retrieve_specialization): Get the TI from the decl or the
6429	classtype as appropriate.
6430
64312020-01-14  David Malcolm  <dmalcolm@redhat.com>
6432
6433	* cp-gimplify.c (source_location_table_entry_hash::empty_zero_p):
6434	New static constant.
6435	* cp-tree.h (named_decl_hash::empty_zero_p): Likewise.
6436	(struct named_label_hash::empty_zero_p): Likewise.
6437	* decl2.c (mangled_decl_hash::empty_zero_p): Likewise.
6438
64392020-01-14  Jason Merrill  <jason@redhat.com>
6440
6441	PR c++/92590 - wrong handling of inherited default ctor.
6442	* class.c (add_method): A constrained inherited ctor doesn't hide an
6443	implicit derived ctor.
6444	Revert:
6445	PR c++/92552 - ICE with inherited constrained default ctor.
6446	* pt.c (instantiate_class_template_1): Copy
6447	TYPE_HAS_USER_CONSTRUCTOR.
6448	PR c++/91930 - ICE with constrained inherited default ctor.
6449	* name-lookup.c (do_class_using_decl): Set TYPE_HAS_USER_CONSTRUCTOR
6450	for inherited constructor.
6451	PR c++/92594 - ICE with inherited trivial default ctor.
6452	* method.c (trivial_fn_p): Treat an inherited default constructor
6453	like a normal default constructor.
6454
6455	PR c++/92594 - ICE with inherited trivial default ctor.
6456	* method.c (trivial_fn_p): Treat an inherited default constructor
6457	like a normal default constructor.
6458
6459	PR c++/92009 - ICE with punning of typeid.
6460	* rtti.c (get_tinfo_desc): Call xref_basetypes.
6461	* constexpr.c (cxx_fold_indirect_ref): Don't strip
6462	REINTERPRET_CAST_P.
6463
64642020-01-13  Jason Merrill  <jason@redhat.com>
6465
6466	PR c++/92746 - ICE with noexcept of function concept check.
6467	* except.c (check_noexcept_r): Handle concept-check.
6468
6469	PR c++/92582 - ICE with member template as requirement.
6470	* pt.c (struct find_template_parameter_info): Add ctx_parms.
6471	(any_template_parm_r): Handle TEMPLATE_DECL.
6472	(find_template_parameters): Take parms instead of their depth.
6473	* constraint.cc (build_parameter_mapping): Pass them.
6474
6475	PR c++/33799 - destroy return value if local cleanup throws.
6476	* cp-tree.h (current_retval_sentinel): New macro.
6477	* decl.c (start_preparsed_function): Set up cleanup for retval.
6478	* typeck.c (check_return_expr): Set current_retval_sentinel.
6479
6480	PR c++/93238 - short right-shift with enum.
6481	* typeck.c (cp_build_binary_op): Use folded op1 for short_shift.
6482
64832020-01-10  Jason Merrill  <jason@redhat.com>
6484
6485	* typeck.c (cp_build_binary_op): Restore short_shift code.
6486
6487	PR c++/93143 - incorrect tree sharing with constexpr.
6488	* constexpr.c (cxx_eval_outermost_constant_expr): Don't assume
6489	CONSTRUCTORs are already unshared.
6490
6491	PR c++/93173 - incorrect tree sharing.
6492	PR c++/93033
6493	* cp-gimplify.c (cp_gimplify_init_expr, cp_gimplify_expr): Use
6494	copy_if_shared after cp_genericize_tree.
6495	* typeck2.c (split_nonconstant_init): Don't unshare here.
6496
64972020-01-08  Jason Merrill  <jason@redhat.com>
6498
6499	* cp-gimplify.c (cp_gimplify_expr) [TARGET_EXPR]: Check
6500	TARGET_EXPR_DIRECT_INIT_P.
6501	* constexpr.c (cxx_eval_constant_expression): Likewise.
6502
65032020-01-08  Jason Merrill  <jason@redhat.com>
6504
6505	PR c++/91369 - constexpr destructor and member initializer.
6506	* constexpr.c (cxx_eval_store_expression): Look through TARGET_EXPR
6507	when not preevaluating.
6508
65092020-01-08  Jason Merrill  <jason@redhat.com>
6510
6511	* constexpr.c (cxx_eval_call_expression): Remove DECL_BY_REFERENCE
6512	support.
6513
65142020-01-07  Paolo Carlini  <paolo.carlini@oracle.com>
6515
6516	* init.c (build_new): Add location_t parameter and use it throughout.
6517	(build_raw_new_expr): Likewise.
6518	* parser.c (cp_parser_new_expression): Pass the combined_loc.
6519	* pt.c (tsubst_copy_and_build): Adjust call.
6520	* cp-tree.h: Update declarations.
6521
65222020-01-07  Jason Merrill  <jason@redhat.com>
6523
6524	PR c++/47877 - -fvisibility-inlines-hidden and member templates.
6525	* decl2.c (determine_visibility): -fvisibility-inlines-hidden beats
6526	explicit class visibility for a template.
6527
65282020-01-07  Richard Sandiford  <richard.sandiford@arm.com>
6529
6530	* mangle.c (mangle_type_attribute_p): New function, split out from...
6531	(write_CV_qualifiers_for_type): ...here.  Don't mangle attributes
6532	that contain a space.
6533
65342020-01-07  Jakub Jelinek  <jakub@redhat.com>
6535
6536	PR c++/91369
6537	* constexpr.c (struct constexpr_global_ctx): Add heap_alloc_count
6538	member, initialize it to zero in ctor.
6539	(cxx_eval_call_expression): Bump heap_dealloc_count when deleting
6540	a heap object.  Don't cache calls to functions which allocate some
6541	heap objects and don't deallocate them or deallocate some heap
6542	objects they didn't allocate.
6543
65442020-01-06  Jason Merrill  <jason@redhat.com>
6545
6546	PR c++/92552 - ICE with inherited constrained default ctor.
6547	* pt.c (instantiate_class_template_1): Copy
6548	TYPE_HAS_USER_CONSTRUCTOR.
6549	* class.c (one_inherited_ctor): Don't set it here.
6550
65512020-01-06  Andrew Sutton  <asutton@lock3software.com>
6552
6553	PR c++/92739 - parsing requires clause with attributes.
6554	* parser.c (cp_parser_constraint_requires_parens): Exclude
6555	attributes as postfix expressions.
6556
65572020-01-05  Jakub Jelinek  <jakub@redhat.com>
6558
6559	PR c++/93138
6560	* parser.c (cp_parser_check_class_key): Disable access checks for the
6561	simple name lookup.
6562	(cp_parser_maybe_warn_enum_key): Likewise.  Return early if
6563	!warn_redundant_tags.
6564
65652010-01-05  Jakub Jelinek  <jakub@redhat.com>
6566
6567	PR c++/93046
6568	* cp-gimplify.c (cp_gimplify_init_expr): Don't look through
6569	TARGET_EXPR if it has been gimplified already.
6570
65712020-01-03  Jason Merrill  <jason@redhat.com>
6572
6573	PR c++/93033 - incorrect tree node sharing with array init.
6574	* typeck2.c (split_nonconstant_init): Unshare non-decl.
6575	* cp-gimplify.c (cp_gimplify_init_expr): Only split if -fexceptions.
6576
65772020-01-02  Jason Merrill  <jason@redhat.com>
6578
6579	* pt.c (invalid_nontype_parm_type_p): Reject class placeholder in
6580	C++17.
6581
65822020-01-02  Jakub Jelinek  <jakub@redhat.com>
6583
6584	PR c/90677
6585	* cp-objcp-common.c (identifier_global_tag): Return NULL_TREE if name
6586	has not been found, rather than error_mark_node.
6587
65882020-01-01  Jakub Jelinek  <jakub@redhat.com>
6589
6590	Update copyright years.
6591
6592Copyright (C) 2020 Free Software Foundation, Inc.
6593
6594Copying and distribution of this file, with or without modification,
6595are permitted in any medium without royalty provided the copyright
6596notice and this notice are preserved.
6597