]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/cp/ChangeLog
re PR c++/92695 (P1064R0 - virtual constexpr fails if object taken from array)
[thirdparty/gcc.git] / gcc / cp / ChangeLog
1 2019-12-02 Jakub Jelinek <jakub@redhat.com>
2
3 PR c++/92695
4 * constexpr.c (cxx_eval_constant_expression) <case OBJ_TYPE_REF>: Use
5 STRIP_NOPS before checking for ADDR_EXPR.
6
7 2019-11-29 Jakub Jelinek <jakub@redhat.com>
8
9 PR c++/60228
10 * parser.c (cp_parser_omp_declare_reduction_exprs): If
11 processing_template_decl, wrap the combiner or initializer
12 into EXPR_STMT.
13 * decl.c (start_preparsed_function): Don't start a lambda scope
14 for DECL_OMP_DECLARE_REDUCTION_P functions.
15 (finish_function): Don't finish a lambda scope for
16 DECL_OMP_DECLARE_REDUCTION_P functions, nor cp_fold_function
17 them nor cp_genericize them.
18 * mangle.c (decl_mangling_context): Look through
19 DECL_OMP_DECLARE_REDUCTION_P functions.
20 * semantics.c (expand_or_defer_fn_1): For DECL_OMP_DECLARE_REDUCTION_P
21 functions, use tentative linkage, don't keep their bodies with
22 -fkeep-inline-functions and return false at the end.
23
24 2019-11-28 Jakub Jelinek <jakub@redhat.com>
25
26 PR c++/92695
27 * decl2.c (mark_used): Don't call note_vague_linkage_fn for pure
28 virtual functions, even if they are declared inline.
29
30 2019-11-16 Jason Merrill <jason@redhat.com>
31
32 Implement P1814R0, CTAD for alias templates.
33 * pt.c (rewrite_tparm_list): Factor out of build_deduction_guide.
34 (maybe_aggr_guide): Check for copy-init here.
35 (alias_ctad_tweaks, deduction_guides_for): New.
36 (ctor_deduction_guides_for): Factor out of do_class_deduction.
37 (ctad_template_p): New.
38 * parser.c (cp_parser_simple_type_specifier): Use it.
39 * constraint.cc (append_constraint): New.
40
41 2019-11-16 Jason Merrill <jason@redhat.com>
42
43 * cxx-pretty-print.c (pp_cxx_unqualified_id): Handle alias
44 template-id.
45 * pt.c (complex_alias_template_p): True if constraints.
46 (get_underlying_template, tsubst): Check alias constraints.
47 (push_template_decl_real): Set alias constraints here.
48 * parser.c (cp_parser_alias_declaration): Not here.
49 * constraint.cc (get_constraints): Take const_tree.
50
51 2019-11-12 Jason Merrill <jason@redhat.com>
52
53 PR c++/92206 - ICE with typedef to dependent alias.
54 * pt.c (dependent_alias_template_spec_p)
55 (alias_template_specialization_p): Add transparent_typedefs
56 parameter.
57 (iterative_hash_template_arg, any_template_parm_r)
58 (primary_template_specialization_p, tsubst, dependent_type_p_r):
59 Adjust.
60 * decl.c (check_elaborated_type_specifier): Adjust.
61 * error.c (dump_template_bindings, dump_aggr_type): Adjust.
62
63 2019-11-27 Andrew Sutton <asutton@lock3software.com>
64
65 PR c++/92236
66 Defer evaluation of concept checks so that static assertions can
67 emit more detailed diagnostics.
68 * constexpr.c (cxx_eval_call_expression): Handle concept checks.
69 (cxx_eval_constant_expression): Diagnose misuse of function concepts
70 as template-id expressions. Follow the usual return path for results.
71 (cxx_eval_outermost_constant_expr): Avoid calling
72 cp_get_callee_fndecl_nofold for function concepts.
73 * constraint.cc (build_function_check): Fully type the concept check
74 so that we don't ICE in conversions.
75 * cp-gimplify.c (cp_genericize_r) [CALL_EXPR]: Handle concept checks.
76 [TEMPLATE_ID_EXPR] Likewise.
77 * cvt.c (convert_to_void): Always evaluate concept checks so we don't
78 accidentally ignore them. Substitution during satisfaction can make
79 a program ill-formed (example in g++.dg/cpp2a/concepts6.C).
80 * pt.c (tsubst_copy_and_build): [CALL_EXPR]: Don't evaluate concepts.
81 [TEMPLATE_ID_EXPR]: Likewise.
82 * semantics.c (finish_call_expr): Don't evaluate concepts.
83 (finish_id_expression_1): Likewise.
84 (finish_static_assert): Preserve the original condition so we can
85 diagnose concept errors when a check returns false.
86
87 2019-11-27 Andrew Sutton <asutton@lock3software.com>
88
89 PR c++/92439
90 Improve quality of diagnostics for subexpressions that need parens.
91 * parser.c (cp_parser_requires_clause_opt): Add a flag to indicate
92 when parsing a requires-clause before lambda parameters, and...
93 (cp_parser_lambda_declarator_opt): ... use that here ...
94 (cp_parser_type_parameter): ... and here ...
95 (cp_parser_late_return_type_opt): ... and here ...
96 (cp_parser_explicit_template_declaration): ... and here.
97 (cp_parser_diagnose_ungrouped_constraint_plain): Adjust the message
98 because this can apply to subexpressions that are not immediately
99 after a requires-clause.
100 (cp_parser_diagnose_ungrouped_constraint_rich): Likewise.
101 (primary_constraint_error): New.
102 (cp_parser_constraint_requires_parens): New.
103 (cp_parser_unary_constraint_requires_parens): New.
104 (cp_parser_constraint_primary_expression): Check for unary expressions
105 before parsing the primary expression. Also check for binary and
106 postfix operators after a successful parse of the primary expression.
107 Force a re-parse if the result would form a lower-precedence string.
108 (cp_parser_constraint_logical_and_expression): Propagate lambda flag;
109 move checks for ill-formed constraints into the constraint primary
110 expression.
111 (cp_parser_constraint_logical_or_expression): Likewise.
112 (cp_parser_requires_clause_expression): Propagate lambda flag.
113
114 2019-11-27 Andrew Sutton <asutton@lock3software.com>
115
116 PR c++/88395
117 * constraint.cc (satisfy_declaration_constraints): Push tinst levels
118 around satisfaction.
119
120 2019-11-27 Andrew Sutton <asutton@lock3software.com>
121
122 Diagnose certain constraint errors as hard errors, but otherwise treat
123 them the same as normal SFINAE-type errors. Also, generally clean up
124 the satisfaction functions.
125
126 * constexpr.c (cxx_eval_constant_expression): Use
127 evaluate_concept_check.
128 * constraint.cc (normalize_concept_definition): Accept a diagnostic
129 flag and only cache when not diagnosing errors.
130 (decl_satisfied_cache): Map to trees instead of bools.
131 (satisfy_atom): Guarantee a location for the errors, propagate complain
132 flags to force_rvalue, and emit errors for non-boolean constraints.
133 (get_normalized_constraints_and_args): New overloads. Factored out of
134 satisfy_constraint_expression and satisfy_declaration_constraints.
135 (satisfy_constraint_expression): Propagate diagnostic info to
136 normalization.
137 (satisfy_declaration_constraints): New. Factored out of
138 constraints_satisfied_p.
139 (constraint_satisfaction_value): New. Calls
140 satisfy_constraint_expression or satisfy_declaration_constraints.
141 (constraints_satisfied_p): Call constraint_satisfaction_value.
142 (evaluate_concept_check): Don't take tsubst_falgs_t. Replay
143 satisfaction if an error is encountered.
144 (current_failed_constraint): Moved from pt.c.
145 (diagnose_constraints): Call constraint_satisfaction_value.
146 * cp-tree.h: Update declarations.
147 * pt.c (current_failed_constraint): Moved to constraint.cc.
148 * semantics.c (finish_id_expression_1): Remove a duplicate case.
149
150 2019-11-27 Jakub Jelinek <jakub@redhat.com>
151
152 PR c++/92524
153 * tree.c (replace_placeholders_r): Don't walk constructor elts with
154 RANGE_EXPR indexes.
155
156 2019-11-26 Jason Merrill <jason@redhat.com>
157
158 * pt.c (tsubst_copy_and_build) [TEMPLATE_ID_EXPR]: Remember the
159 location of a variable template-id.
160 * constexpr.c (cxx_eval_constant_expression): Get expr location
161 before stripping location wrappers.
162 (non_const_var_error): Take location argument.
163
164 2019-11-26 Paolo Carlini <paolo.carlini@oracle.com>
165
166 * typeck.c (cp_build_unary_op): Consistently use the accurate
167 location in seven additional diagnostic messages.
168 (cp_build_compound_expr): Use cp_expr_loc_or_input_loc in one place.
169
170 2019-11-26 Jakub Jelinek <jakub@redhat.com>
171
172 PR c++/92648
173 * parser.c (cp_parser_std_attribute): For unknown attributes,
174 skip balanced token seq instead of trying to parse
175 attribute-argument-clause as expression list. Formatting fix.
176
177 PR c++/61414
178 * class.c (enum_to_min_precision): New hash_map.
179 (enum_min_precision): New function.
180 (check_bitfield_decl): Use it.
181
182 2019-11-25 Paolo Carlini <paolo.carlini@oracle.com>
183
184 * typeck.c (cp_build_indirect_ref_1): Add location_t parameter
185 and use it in error messages.
186 (build_x_indirect_ref): Adjust call.
187 (build_indirect_ref): Likewise.
188 (cp_build_fold_indirect_ref): Likewise.
189 (cp_build_array_ref): Likewise.
190 * call.c (build_new_op_1): Likewise.
191 * semantics.c (finish_omp_clauses): Likewise.
192 (finish_omp_depobj): Likewise.
193 * typeck2.c (build_x_arrow): Likewise.
194 * cp-tree.h (cp_build_indirect_ref): Update declaration.
195
196 * call.c (build_new_op_1): Use location argument in warning_at.
197
198 * typeck.c (cp_build_modify_expr): Consistently use the
199 location_t argument.
200
201 2019-11-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
202
203 PR c++/92365
204 * name-lookup.c (check_local_shadow): Use can_convert_arg
205 instead of can_convert.
206
207 2019-11-22 Marek Polacek <polacek@redhat.com>
208
209 PR c++/88337 - P1327R1: Allow polymorphic typeid in constexpr.
210 * constexpr.c (potential_constant_expression_1): Allow a typeid
211 expression whose operand is of polymorphic type in constexpr in
212 C++20.
213 * rtti.c (build_typeid): Remove obsolete FIXME comment.
214
215 2019-11-22 Jakub Jelinek <jakub@redhat.com>
216
217 PR c/90677
218 * cp-objcp-common.c (identifier_global_tag): Define.
219
220 PR c++/92458
221 * init.c (nsdmi_inst): Change type to
222 decl_tree_cache_map * from tree_cache_map *.
223 * constraint.cc (decl_constraints): Likewise.
224 * decl.c (get_tuple_decomp_init): Likewise.
225 * pt.c (defarg_inst, explicit_specifier_map): Likewise.
226 (tsubst_default_argument, store_explicit_specifier): Use
227 decl_tree_cache_map::create_ggc rather than
228 tree_cache_map::create_ggc.
229 * cp-objcp-common.c (debug_type_map): Change type to
230 type_tree_cache_map * from tree_cache_map *.
231
232 2019-11-21 Marek Polacek <polacek@redhat.com>
233
234 PR c++/92450 - ICE with invalid nested name specifier.
235 * parser.c (cp_parser_member_declaration): Don't attempt to print
236 erroneous bit-field diagnostic if grokdeclarator returns
237 error_mark_node.
238
239 2019-11-21 Jakub Jelinek <jakub@redhat.com>
240 Jason Merrill <jason@redhat.com>
241
242 PR c++/90842
243 * parser.c (cp_parser_decl_specifier_seq): For concept or typedef
244 break early if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
245 For type specifiers, set CP_PARSER_FLAGS_NO_TYPE_DEFINITIONS
246 if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR is set.
247
248 2019-11-20 Paolo Carlini <paolo.carlini@oracle.com>
249
250 * typeck2.c (build_x_arrow): Early return if decay_conversion
251 returns error_mark_node.
252
253 2019-11-20 Jakub Jelinek <jakub@redhat.com>
254
255 PR c++/90767
256 * call.c (complain_about_no_candidates_for_method_call): If
257 conv->from is not a type, pass to complain_about_bad_argument
258 lvalue_type of conv->from.
259
260 2019-11-20 Paolo Carlini <paolo.carlini@oracle.com>
261
262 * cvt.c (ocp_convert): Use additional warning sentinel.
263
264 2019-11-19 Jakub Jelinek <jakub@redhat.com>
265
266 PR c++/92414
267 * constexpr.c (cxx_eval_outermost_constant_expr): If DECL_INITIAL
268 on object is erroneous, return t without trying to evaluate
269 a constexpr dtor.
270
271 2019-11-12 Jason Merrill <jason@redhat.com>
272
273 * call.c (same_fn_or_template): Change to cand_parms_match.
274 (joust): Adjust.
275 (print_z_candidate): Mark rewritten/reversed candidates.
276 (build_new_op_1): Warn about recursive call with reversed arguments.
277
278 2019-11-15 Andrew Sutton <asutton@lock3software.com>
279
280 PR c++/89913
281 * pt.c (get_underlying_template): Exit loop if the original type
282 of the alias is null.
283
284 2019-11-19 Andrew Sutton <asutton@lock3software.com>
285
286 PR c++/92078
287 * pt.c (maybe_new_partial_specialization): Apply access to newly
288 created partial specializations. Update comment style.
289
290 2019-11-19 Andrew Sutton <asutton@lock3software.com>
291
292 PR c++/92078
293 * pt.c (maybe_new_partial_specialization): Apply access to newly
294 created partial specializations. Update comment style.
295
296 2019-11-19 Andrew Sutton <asutton@lock3software.com>
297
298 PR c++/92403
299 Suppress diagnostics substituting into a requires-expression.
300 * pt.c (tsubst_copy_and_build): Perform the first substitution without
301 diagnostics and a second only if tsubst_requries_expr returns an error.
302
303 2019-11-19 Jakub Jelinek <jakub@redhat.com>
304
305 PR c++/92504
306 * semantics.c (handle_omp_for_class_iterator): Don't call
307 cp_fully_fold on cond.
308
309 2019-11-18 Paolo Carlini <paolo.carlini@oracle.com>
310
311 * typeck.c (cp_build_addr_expr_1): Use cp_expr_loc_or_input_loc
312 in three places.
313 (cxx_sizeof_expr): Use it in one additional place.
314 (cxx_alignof_expr): Likewise.
315 (lvalue_or_else): Likewise.
316
317 2019-11-18 Marek Polacek <polacek@redhat.com>
318
319 PR c++/91962 - ICE with reference binding and qualification conversion.
320 * call.c (convert_like_real) <case ck_ref_bind>: Check need_temporary_p.
321
322 2019-11-17 Jakub Jelinek <jakub@redhat.com>
323
324 * method.c (lookup_comparison_result): Use %qD instead of %<%T::%D%>
325 to print the decl.
326 (lookup_comparison_category): Use %qD instead of %<std::%D%> to print
327 the decl.
328
329 2019-11-15 Paolo Carlini <paolo.carlini@oracle.com>
330
331 * typeck.c (cp_truthvalue_conversion): Add tsubst_flags_t parameter
332 and use it in calls; also pass the location_t of the expression to
333 cp_build_binary_op and c_common_truthvalue_conversion.
334 * rtti.c (build_dynamic_cast_1): Adjust call.
335 * cvt.c (ocp_convert): Likewise.
336 * cp-gimplify.c (cp_fold): Likewise.
337 * cp-tree.h (cp_truthvalue_conversion): Update declaration.
338
339 2019-11-14 Jason Merrill <jason@redhat.com>
340
341 Implement P1816R0, class template argument deduction for aggregates.
342 * pt.c (maybe_aggr_guide, collect_ctor_idx_types): New.
343 (is_spec_or_derived): Split out from do_class_deduction.
344 (build_deduction_guide): Handle aggregate guide.
345 * class.c (finish_struct): Set CLASSTYPE_NON_AGGREGATE in a
346 template.
347 * cp-tree.h (CP_AGGREGATE_TYPE_P): An incomplete class is not an
348 aggregate.
349
350 2019-11-14 Richard Sandiford <richard.sandiford@arm.com>
351
352 * call.c (build_conditional_expr_1): Use truth_type_for instead
353 of build_same_sized_truth_vector_type.
354 * typeck.c (build_vec_cmp): Likewise.
355
356 2019-11-14 Jakub Jelinek <jakub@redhat.com>
357
358 * parser.c (cp_parser_omp_context_selector): Don't require score
359 argument to fit into shwi, just to be INTEGER_CST. Diagnose
360 negative score.
361 * pt.c (tsubst_attribute): Likewise.
362
363 * parser.c (cp_parser_omp_context_selector): Rename
364 CTX_PROPERTY_IDLIST to CTX_PROPERTY_NAME_LIST, add CTX_PROPERTY_ID.
365 Use CTX_PROPERTY_ID for atomic_default_mem_order, only allow a single
366 identifier in that. For CTX_PROPERTY_NAME_LIST, allow identifiers
367 and string literals.
368 * pt.c (tsubst_attribute): Fix up STRING_CST handling if allow_string.
369
370 2019-11-13 Marek Polacek <polacek@redhat.com>
371
372 PR c++/89070 - bogus [[nodiscard]] warning in SFINAE.
373 * cvt.c (convert_to_void): Guard maybe_warn_nodiscard calls with
374 tf_warning.
375
376 2019-11-13 Richard Sandiford <richard.sandiford@arm.com>
377
378 PR c++/92206
379 * cp-tree.h (STF_STRIP_DEPENDENT): New constant.
380 * tree.c (strip_typedefs): Add STF_STRIP_DEPENDENT to the flags
381 when calling strip_typedefs recursively on a DECL_ORIGINAL_TYPE.
382 Don't apply the fix for DR1558 in that case; allow aliases with
383 dependent template parameters to be stripped instead.
384
385 2019-11-12 Nathan Sidwell <nathan@acm.org>
386
387 * name-lookup.c (lookup_using_decl): New function, merged from ...
388 (do_class_using_decl): ... here. Call it. And ...
389 (finish_nonmember_using_decl): ... here. Call it.
390
391 2019-11-12 Martin Liska <mliska@suse.cz>
392
393 * name-lookup.c: Do not include params.h.
394 * typeck.c: Likewise.
395
396 2019-11-12 Martin Liska <mliska@suse.cz>
397
398 * name-lookup.c (namespace_hints::namespace_hints): Replace old
399 parameter syntax with the new one, include opts.h if needed. Use
400 SET_OPTION_IF_UNSET macro.
401 * typeck.c (comptypes): Likewise.
402
403 2019-11-12 Maciej W. Rozycki <macro@codesourcery.com>
404 Frederik Harwath <frederik@codesourcery.com>
405
406 gcc/cp/
407 * constexpr.c (potential_constant_expression_1): Handle
408 OACC_SERIAL.
409 * parser.c (OACC_SERIAL_CLAUSE_MASK): New macro.
410 (cp_parser_oacc_kernels_parallel): Rename function to...
411 (cp_parser_oacc_compute): ... this. Handle PRAGMA_OACC_SERIAL.
412 (cp_parser_omp_construct): Update accordingly.
413 (cp_parser_pragma): Handle PRAGMA_OACC_SERIAL. Fix alphabetic
414 order.
415 * pt.c (tsubst_expr): Handle OACC_SERIAL.
416
417 2019-11-11 Jason Merrill <jason@redhat.com>
418
419 Implement P1946R0, Allow defaulting comparisons by value.
420 * method.c (early_check_defaulted_comparison): Accept by-value,
421 reject mixed by-value and by-reference parms.
422 * decl.c (grokdeclarator): Set funcdef_flag for defaulted friend.
423 * decl2.c (grokfield): Don't SET_DECL_FRIEND_CONTEXT.
424
425 * typeck.c (cp_build_binary_op): Sorry about <=> on VECTOR_TYPE.
426
427 2019-11-11 Jakub Jelinek <jakub@redhat.com>
428
429 PR c++/92447
430 * decl.c (finish_function): Move ctype initialization before
431 DECL_DELETED_FN handling.
432
433 * semantics.c (finish_translation_unit): Diagnose declare target
434 without corresponding end declare target.
435
436 2019-11-10 Jason Merrill <jason@redhat.com>
437
438 Implement D1957R0, T* to bool should be considered narrowing.
439 * typeck2.c (check_narrowing): Treat pointer->bool as a narrowing
440 conversion with -std=c++2a.
441
442 2019-11-08 Marek Polacek <polacek@redhat.com>
443
444 PR c++/92215 - flawed diagnostic for bit-field with non-integral type.
445 * parser.c (cp_parser_member_declaration): Add a diagnostic for
446 bit-fields with non-integral types.
447
448 2019-11-08 Jakub Jelinek <jakub@redhat.com>
449
450 * init.c (build_vec_delete_1): Fix a comment typo - mist -> must.
451
452 2019-11-07 Jason Merrill <jason@redhat.com>
453
454 Implement D1959R0, remove weak_equality and strong_equality.
455 * method.c (enum comp_cat_tag, comp_cat_info): Remove *_equality.
456 (genericize_spaceship, common_comparison_type): Likewise.
457 * typeck.c (cp_build_binary_op): Move SPACESHIP_EXPR to be with the
458 relational operators, exclude other types no longer supported.
459
460 2019-11-06 Jason Merrill <jason@redhat.com>
461
462 Implement D1907R1 "structural type".
463 * tree.c (structural_type_p): New.
464 * pt.c (invalid_nontype_parm_type_p): Use it.
465 * class.c (build_base_field_1): Take binfo. Copy TREE_PRIVATE.
466 (build_base_field): Pass binfo.
467
468 PR c++/92150 - partial specialization with class NTTP.
469 * pt.c (unify): Handle VIEW_CONVERT_EXPR.
470
471 * pt.c (use_pack_expansion_extra_args_p): Still do substitution if
472 all packs are simple pack expansions.
473 (add_extra_args): Check that the extra args aren't dependent.
474
475 2019-11-06 Andrew Sutton <asutton@lock3software.com>
476
477 Use satisfaction with nested requirements.
478 * constraint.cc (build_parameter_mapping): Use
479 current_template_parms when the declaration is not available.
480 (norm_info::norm_info) Make explicit.
481 (normalize_constraint_expression): Factor into a separate overload
482 that takes arguments, and use that in the original function.
483 (tsubst_nested_requirement): Use satisfy_constraint instead of
484 trying to evaluate this as a constant expression.
485 (finish_nested_requirement): Keep the normalized constraint and the
486 original normalization arguments with the requirement.
487 (diagnose_nested_requirement): Use satisfy_constraint. Tentatively
488 implement more comprehensive diagnostics, but do not enable.
489 * parser.c (cp_parser_requires_expression): Relax requirement that
490 requires-expressions can live only inside templates.
491 * pt.c (any_template_parm_r): Look into type of PARM_DECL.
492
493 2019-11-06 Jason Merrill <jason@redhat.com>
494
495 C++20 NB CA378 - Remove constrained non-template functions.
496 * decl.c (grokfndecl): Reject constraints on non-templated function.
497
498 2019-11-06 Matthias Kretz <m.kretz@gsi.de>
499
500 * parser.c (cp_parser_operator): Parse operator?: as an
501 attempt to overload the conditional operator.
502
503 2019-11-05 Jason Merrill <jason@redhat.com>
504
505 Implement C++20 operator<=>.
506 * cp-tree.h (struct lang_decl_fn): Add maybe_deleted bitfield.
507 (DECL_MAYBE_DELETED): New.
508 (enum special_function_kind): Add sfk_comparison.
509 (LOOKUP_REWRITTEN, LOOKUP_REVERSED): New.
510 * call.c (struct z_candidate): Add rewritten and reversed methods.
511 (add_builtin_candidate): Handle SPACESHIP_EXPR.
512 (add_builtin_candidates): Likewise.
513 (add_candidates): Don't add a reversed candidate if the parms are
514 the same.
515 (add_operator_candidates): Split out from build_new_op_1. Handle
516 rewritten and reversed candidates.
517 (add_candidate): Swap conversions of reversed candidate.
518 (build_new_op_1): Swap them back. Build a second operation for
519 rewritten candidates.
520 (extract_call_expr): Handle rewritten calls.
521 (same_fn_or_template): New.
522 (joust): Handle rewritten and reversed candidates.
523 * class.c (add_implicitly_declared_members): Add implicit op==.
524 (classtype_has_op, classtype_has_defaulted_op): New.
525 * constexpr.c (cxx_eval_binary_expression): Handle SPACESHIP_EXPR.
526 (cxx_eval_constant_expression, potential_constant_expression_1):
527 Likewise.
528 * cp-gimplify.c (genericize_spaceship): New.
529 (cp_genericize_r): Use it.
530 * cp-objcp-common.c (cp_common_init_ts): Handle SPACESHIP_EXPR.
531 * decl.c (finish_function): Handle deleted function.
532 * decl2.c (grokfield): SET_DECL_FRIEND_CONTEXT on defaulted friend.
533 (mark_used): Check DECL_MAYBE_DELETED. Remove assumption that
534 defaulted functions are non-static members.
535 * error.c (dump_expr): Handle SPACESHIP_EXPR.
536 * method.c (type_has_trivial_fn): False for sfk_comparison.
537 (enum comp_cat_tag, struct comp_cat_info_t): New types.
538 (comp_cat_cache): New array variable.
539 (lookup_comparison_result, lookup_comparison_category)
540 (is_cat, cat_tag_for, spaceship_comp_cat)
541 (spaceship_type, genericize_spaceship)
542 (common_comparison_type, early_check_defaulted_comparison)
543 (comp_info, build_comparison_op): New.
544 (synthesize_method): Handle sfk_comparison. Handle deleted.
545 (get_defaulted_eh_spec, maybe_explain_implicit_delete)
546 (explain_implicit_non_constexpr, implicitly_declare_fn)
547 (defaulted_late_check, defaultable_fn_check): Handle sfk_comparison.
548 * name-lookup.c (get_std_name_hint): Add comparison categories.
549 * tree.c (special_function_p): Add sfk_comparison.
550 * typeck.c (cp_build_binary_op): Handle SPACESHIP_EXPR.
551
552 2019-11-05 Tim van Deurzen <tim@kompiler.org>
553
554 Add new tree code for the spaceship operator.
555 * cp-tree.def: Add new tree code.
556 * operators.def: New binary operator.
557 * parser.c: Add new token and tree code.
558
559 2019-09-15 Jason Merrill <jason@redhat.com>
560
561 * call.c (build_new_op_1): Don't apply any standard conversions to
562 the operands of a built-in operator. Don't suppress conversions in
563 cp_build_unary_op.
564 * typeck.c (cp_build_unary_op): Do integral promotions for enums.
565
566 2019-11-04 Jason Merrill <jason@redhat.com>
567
568 Use vec instead of raw array for built-in candidates.
569 * call.c (build_builtin_candidate): Take args in a vec.
570 (add_builtin_candidate, add_builtin_candidates): Likewise.
571 (build_conditional_expr_1, build_new_op_1): Adjust.
572
573 2019-11-04 Jason Merrill <jason@redhat.com>
574
575 * constexpr.c (explain_invalid_constexpr_fn): Show location of fn.
576
577 * pt.c (maybe_instantiate_noexcept): Only update clones if we
578 instantiated.
579
580 * typeck.c (contextual_conv_bool): New.
581
582 * name-lookup.c (lookup_qualified_name): Add wrapper overload taking
583 C string rather than identifier.
584 * parser.c (cp_parser_userdef_numeric_literal): Use it.
585 * rtti.c (emit_support_tinfos): Use it.
586 * cp-tree.h (ovl_op_identifier): Change to inline functions.
587 (build_x_binary_op): Add wrapper with fewer parms.
588
589 2019-11-05 Jason Merrill <jason@redhat.com>
590
591 * decl2.c (mark_used): Diagnose use of a function with unsatisfied
592 constraints here.
593 * typeck.c (cp_build_function_call_vec): Not here.
594
595 2019-11-05 Nathan Sidwell <nathan@acm.org>
596
597 PR c++/92370
598 * parser.c (cp_parser_error_1): Check EOF and UNKNOWN_LOCATION
599 when skipping over version control marker.
600
601 2019-11-05 Jakub Jelinek <jakub@redhat.com>
602
603 PR c++/92343
604 * constexpr.c (potential_constant_expression_1): Return true rather
605 than false for PREDICT_EXPR.
606
607 * decl.c (omp_declare_variant_finalize_one): Call
608 declare_simd_adjust_this not just on the context, but also on the
609 variant-id expression for methods. Don't call
610 cp_get_callee_fndecl_nofold, call cp_get_callee and only if it is
611 safe cp_get_fndecl_from_callee. Don't try to print as %qD
612 NULL in diagnostics.
613 * pt.c (tsubst_attribute): Handle "omp declare variant base"
614 attribute.
615 (tsubst_function_decl): Call omp_declare_variant_finalize
616 if there are any "omp declare variant base" attributes left.
617
618 2019-11-04 Kamlesh Kumar <kamleshbhalui@gmail.com>
619
620 PR c++/91979 - mangling nullptr expression
621 * mangle.c (write_template_arg_literal): Handle nullptr
622 mangling.
623
624 2019-11-04 Jason Merrill <jason@redhat.com>
625
626 * typeck.c (check_return_expr): Avoid redundant error.
627
628 2019-11-02 Paolo Carlini <paolo.carlini@oracle.com>
629
630 * typeck.c (composite_pointer_type): Add a const op_location_t&
631 parameter and use it in diagnostics.
632 (composite_pointer_error): Likewise.
633 (composite_pointer_type_r): Add a const op_location_t&
634 parameter and forward it.
635 (cp_build_binary_op): Adjust calls.
636 (common_pointer_type): Likewise.
637 * call.c (add_builtin_candidate): Likewise.
638 (build_conditional_expr_1): Likewise.
639 * cp-tree.h (composite_pointer_type): Update declaration.
640
641 * typeck.c (cxx_sizeof_expr): Use cp_expr_loc_or_input_loc
642 in permerror.
643 (cxx_alignof_expr): Likewise.
644 (lvalue_or_else): Likewise.
645
646 2019-11-02 Jakub Jelinek <jakub@redhat.com>
647
648 * decl.c (omp_declare_variant_finalize_one): Use
649 omp_get_context_selector instead of c_omp_get_context_selector.
650
651 PR c++/89640
652 * parser.c (cp_parser_decl_specifier_seq): Don't parse attributes
653 if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.
654
655 PR c++/88335 - Implement P1073R3: Immediate functions
656 * cp-tree.h (struct lang_decl_fn): Add immediate_fn_p bit.
657 (DECL_IMMEDIATE_FUNCTION_P, SET_DECL_IMMEDIATE_FUNCTION_P): Define.
658 (enum cp_decl_spec): Add ds_consteval.
659 (fold_non_dependent_expr): Add another tree argument defaulted to
660 NULL_TREE.
661 * name-lookup.h (struct cp_binding_level): Add immediate_fn_ctx_p
662 member.
663 * parser.c (cp_keyword_starts_decl_specifier_p): Adjust comments
664 for C++11 and C++20 specifiers. Handle RID_CONSTEVAL.
665 (CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): Adjust comment.
666 (CP_PARSER_FLAGS_CONSTEVAL): New.
667 (cp_parser_skip_balanced_tokens): New forward declaration.
668 (cp_parser_lambda_declarator_opt): Handle ds_consteval. Set
669 current_binding_level->immediate_fn_ctx_p before parsing parameter
670 list if decl-specifier-seq contains consteval specifier.
671 (cp_parser_decl_specifier_seq): Handle RID_CONSTEVAL.
672 (cp_parser_explicit_instantiation): Diagnose explicit instantiation
673 with consteval specifier.
674 (cp_parser_init_declarator): For consteval or into flags
675 CP_PARSER_FLAGS_CONSTEVAL.
676 (cp_parser_direct_declarator): If CP_PARSER_FLAGS_CONSTEVAL, set
677 current_binding_level->immediate_fn_ctx_p in the sk_function_parms
678 scope.
679 (set_and_check_decl_spec_loc): Add consteval entry, formatting fix.
680 * call.c (build_addr_func): For direct calls to immediate functions
681 use build_address rather than decay_conversion.
682 (build_over_call): Evaluate immediate function invocations.
683 * error.c (dump_function_decl): Handle DECL_IMMEDIATE_FUNCTION_P.
684 * semantics.c (expand_or_defer_fn_1): Use tentative linkage and don't
685 call mark_needed for immediate functions.
686 * typeck.c (cxx_sizeof_or_alignof_expr): Likewise. Formatting fix.
687 (cp_build_addr_expr_1): Reject taking address of immediate function
688 outside of immediate function.
689 * decl.c (validate_constexpr_redeclaration): Diagnose consteval
690 vs. non-consteval or vice versa redeclaration. Use
691 SET_DECL_IMMEDIATE_FUNCTION_P if new_decl is immediate function.
692 (check_tag_decl): Use %qs with keyword string to simplify translation.
693 Handle ds_consteval.
694 (start_decl): Adjust diagnostics for static or thread_local variables
695 in immediate functions.
696 (grokfndecl): Call sorry_at on virtual consteval. Use %qs with keyword
697 to string to simplify translation. Diagnose consteval main. Use
698 SET_DECL_IMMEDIATE_FUNCTION_P for consteval.
699 (grokdeclarator): Handle consteval. Use %qs with keyword strings to
700 simplify translation. Use separate ifs instead of chained else if
701 for invalid specifiers. For constinit clear constinit_p rather than
702 constexpr_p.
703 * constexpr.c (find_immediate_fndecl): New function.
704 (cxx_eval_outermost_constant_expr): Allow consteval calls returning
705 void. Diagnose returning address of immediate function from consteval
706 evaluation.
707 (fold_non_dependent_expr_template): Add OBJECT argument, pass it
708 through to cxx_eval_outermost_constant_expr.
709 (fold_non_dependent_expr): Add OBJECT argument, pass it through to
710 fold_non_dependent_expr_template.
711 (fold_non_dependent_init): Adjust fold_non_dependent_expr_template
712 caller.
713 * method.c (defaulted_late_check): Adjust diagnostics for consteval.
714 * lambda.c (maybe_add_lambda_conv_op): Copy over
715 DECL_DECLARED_CONSTEXPR_P and DECL_IMMEDIATE_FUNCTION_P bits from
716 callop to both artificial functions.
717 * init.c (build_value_init): Don't do further processing if
718 build_special_member_call returned a TREE_CONSTANT. Formatting fix.
719
720 PR c++/91369 - Implement P0784R7: constexpr new
721 * cp-tree.h (CALL_FROM_NEW_OR_DELETE_P): Define.
722 * init.c (build_new_1, build_vec_delete_1, build_delete): Set
723 CALL_FROM_NEW_OR_DELETE_P on the CALL_EXPR to allocator functions.
724 * constexpr.c (is_std_allocator_allocate): Only allow
725 global replaceable allocator functions if CALL_FROM_NEW_OR_DELETE_P
726 or in std::allocate<T>::{,de}allocate.
727 (potential_constant_expression_1): Likewise.
728
729 2019-11-01 Nathan Sidwell <nathan@acm.org>
730
731 * class.c (check_field_decls): Refactor.
732
733 2019-10-31 Jakub Jelinek <jakub@redhat.com>
734
735 PR c++/90947
736 * cp-tree.h (type_initializer_zero_p): Declare.
737 * decl.c (reshape_init_array_1): Formatting fix.
738 * tree.c (type_initializer_zero_p): New function. Moved from
739 ../tree.c, use next_initializable_field, formatting fix. Return
740 false for TYPE_NON_AGGREGATE_CLASS types.
741
742 2019-10-30 Jason Merrill <jason@redhat.com>
743
744 PR c++/92268 - hard error satisfying return-type-requirement
745 * constraint.cc (type_deducible_p): Check for substitution failure.
746 (diagnose_compound_requirement): Adjust diagnostic.
747 * pt.c (do_auto_deduction): Don't pass cargs to
748 constraints_satisfied_p.
749
750 2019-10-30 Jakub Jelinek <jakub@redhat.com>
751
752 PR c++/91369 - Implement P0784R7: constexpr new
753 * constexpr.c (cxx_replaceable_global_alloc_fn): Don't return true
754 for placement new.
755 (cxx_placement_new_fn, is_std_construct_at): New functions.
756 (cxx_eval_call_expression): Allow placement new in std::construct_at.
757 (potential_constant_expression_1): Likewise.
758
759 * typeck.c (decl_in_std_namespace_p): Return true also for decls
760 in inline namespaces inside of std namespace.
761
762 2019-10-30 Bernd Edlinger <bernd.edlinger@hotmail.de>
763
764 PR c++/92024
765 * name-lookup.c (check_local_shadow): Shadowing TYPE_DECLs
766 is always a -Wshadow=compatible-local warning, unless
767 -Wshadow is used.
768
769 2019-10-30 Jason Merrill <jason@redhat.com>
770
771 * cxx-pretty-print.c (get_fold_operator): Use OVL_OP_INFO.
772
773 2019-10-30 Marek Polacek <polacek@redhat.com>
774
775 PR c++/92134 - constinit malfunction in static data member.
776 * decl2.c (grokfield): Set LOOKUP_CONSTINIT.
777
778 2019-10-30 Jakub Jelinek <jakub@redhat.com>
779
780 * cp-tree.h (omp_declare_variant_finalize, build_local_temp): Declare.
781 * decl.c: Include omp-general.h.
782 (declare_simd_adjust_this): Add forward declaration.
783 (omp_declare_variant_finalize_one, omp_declare_variant_finalize): New
784 function.
785 (cp_finish_decl, finish_function): Call omp_declare_variant_finalize.
786 * parser.c (cp_finish_omp_declare_variant): Adjust parsing of the
787 variant id-expression and propagate enough information to
788 omp_declare_variant_finalize_one in the attribute so that it can
789 finalize it.
790 * class.c (finish_struct): Call omp_declare_variant_finalize.
791 * tree.c (build_local_temp): No longer static, remove forward
792 declaration.
793
794 2019-10-30 Paolo Carlini <paolo.carlini@oracle.com>
795
796 * typeck.c (cp_build_modify_expr): Prefer error + inform to
797 error + error in one place.
798 (get_delta_difference_1): Likewise.
799 (get_delta_difference): Likewise, in two places.
800
801 2019-10-29 Paolo Carlini <paolo.carlini@oracle.com>
802
803 * typeck.c (build_x_unary_op): Use the location_t argument in
804 three error_at.
805
806 2019-10-29 Marek Polacek <polacek@redhat.com>
807
808 PR c++/90998 - ICE with copy elision in init by ctor and -Wconversion.
809 * call.c (joust): Don't attempt to warn if ->second_conv is null.
810
811 2019-10-29 Jakub Jelinek <jakub@redhat.com>
812
813 PR c++/92201
814 * cp-gimplify.c (cp_gimplify_expr): If gimplify_to_rvalue changes the
815 function pointer type, re-add cast to the original one.
816
817 2019-10-29 Marek Polacek <polacek@redhat.com>
818
819 PR c++/91548 - fix detecting modifying const objects for ARRAY_REF.
820 * constexpr.c (cxx_eval_store_expression): Don't call
821 modifying_const_object_p for ARRAY_REF.
822
823 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
824
825 * cp-objcp-common.h (cxx_simulate_enum_decl): Declare.
826 (LANG_HOOKS_SIMULATE_ENUM_DECL): Define to the above.
827 * decl.c (cxx_simulate_enum_decl): New function.
828
829 2019-10-29 Richard Sandiford <richard.sandiford@arm.com>
830
831 * cp-tree.h (cxx_simulate_builtin_function_decl): Declare.
832 * decl.c (cxx_simulate_builtin_function_decl): New function.
833 * cp-objcp-common.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL):
834 Define to the above.
835
836 2019-10-28 Martin Sebor <msebor@redhat.com>
837
838 PR c/66970
839 * cp-objcp-common.c (names_builtin_p): Define new function.
840
841 2019-10-28 Nathan Sidwell <nathan@acm.org>
842
843 * parser.h (struct cp_token): Drop {ENUM,BOOL}_BITFIELD C-ism.
844 Add tree_check_p flag, use as nested union discriminator.
845 (struct cp_lexer): Add saved_type & saved_keyword fields.
846 * parser.c (eof_token): Delete.
847 (cp_lexer_new_main): Always init last_token to last token of
848 buffer.
849 (cp_lexer_new_from_tokens): Overlay EOF token at end of range.
850 (cp_lexer_destroy): Restore token under the EOF.
851 (cp_lexer_previous_token_position): No check for eof_token here.
852 (cp_lexer_get_preprocessor_token): Clear tree_check_p.
853 (cp_lexer_peek_nth_token): Check CPP_EOF not eof_token.
854 (cp_lexer_consume_token): Assert not CPP_EOF, no check for
855 eof_token.
856 (cp_lexer_purge_token): Likewise.
857 (cp_lexer_purge_tokens_after): No check for EOF token.
858 (cp_parser_nested_name_specifier, cp_parser_decltype)
859 (cp_parser_template_id): Set tree_check_p.
860
861 2019-10-24 Jakub Jelinek <jakub@redhat.com>
862
863 * decl2.c (cplus_decl_attributes): Add "omp declare target block"
864 attribute in between declare target and end declare target
865 pragmas.
866
867 * call.c (convert_arg_to_ellipsis): Add missing space in string
868 literal.
869
870 2019-10-24 Marek Polacek <polacek@redhat.com>
871
872 * decl.c (reshape_init_r): Add missing space.
873
874 2019-10-24 Nathan Sidwell <nathan@acm.org>
875
876 * pt.c (reduce_template_parm_level): Attach the new TPI to the new
877 DECL.
878 (convert_generic_types_to_packs): Pass the copied type to
879 reduce_templatE_parm_level.
880
881 2019-10-23 Nathan Sidwell <nathan@acm.org>
882
883 * cp-tree.c (CPTI_STD_IDENTIFIER): Delete.
884 (std_identifier): Delete.
885 (DECL_NAME_SPACE_STD_P): Compare against std_node.
886 * decl.c (initialize_predefined_identifiers): 'std' is not needed.
887 (cxx_init_decl_processing): Adjust creation of ::std. Use
888 {push,pop}_nested_namespace.
889 (cxx_builtin_function): Use {push,pop}_nested_namespace.
890 * except.c (init_exception_processing): Likewise.
891 * rtti.c (init_rtti_processing): Likewise.
892
893 2019-10-23 Jason Merrill <jason@redhat.com>
894
895 Implement P1286R2, Contra CWG1778
896 * method.c (defaulted_late_check): Don't check explicit
897 exception-specification on defaulted function.
898 (after_nsdmi_defaulted_late_checks): Remove.
899 * parser.h (struct cp_unparsed_functions_entry): Remove classes.
900 * parser.c (unparsed_classes): Remove.
901 (push_unparsed_function_queues, cp_parser_class_specifier_1):
902 Adjust.
903
904 2019-10-23 Jakub Jelinek <jakub@redhat.com>
905
906 * constexpr.c (cxx_eval_constant_expression) <case CLEANUP_STMT>:
907 Temporarily change input_location to CLEANUP_STMT location.
908
909 2019-10-22 Jakub Jelinek <jakub@redhat.com>
910
911 PR tree-optimization/85887
912 * decl.c (expand_static_init): Drop ECF_LEAF from __cxa_guard_acquire
913 and __cxa_guard_release.
914
915 2019-10-22 Marc Glisse <marc.glisse@inria.fr>
916
917 PR c++/85746
918 * constexpr.c (cxx_eval_builtin_function_call): Only set
919 force_folding_builtin_constant_p if manifestly_const_eval.
920
921 2019-10-22 Richard Sandiford <richard.sandiford@arm.com>
922
923 * cp-tree.h (STF_USER_VISIBLE): New constant.
924 (strip_typedefs, strip_typedefs_expr): Take a flags argument.
925 * tree.c (strip_typedefs, strip_typedefs_expr): Likewise,
926 updating mutual calls accordingly. When STF_USER_VISIBLE is true,
927 only look through typedefs if user_facing_original_type_p.
928 * error.c (dump_template_bindings, type_to_string): Pass
929 STF_USER_VISIBLE to strip_typedefs.
930 (dump_type): Likewise, unless pp_c_flag_gnu_v3 is set.
931
932 2019-10-21 Kamlesh Kumar <kamleshbhalui@gmail.com>
933 Jason Merrill <jason@redhat.com>
934
935 PR c++/83534 - typeinfo of noexcept function
936 * rtti.c (get_tinfo_decl_dynamic): Do not call
937 TYPE_MAIN_VARIANT for function.
938 (get_typeid): Likewise.
939
940 2019-10-21 Paolo Carlini <paolo.carlini@oracle.com>
941
942 * parser.c (cp_parser_class_head): Improve error recovery upon
943 extra qualification error.
944
945 2019-10-21 Jakub Jelinek <jakub@redhat.com>
946
947 PR c++/92015
948 * constexpr.c (cxx_eval_component_reference, cxx_eval_bit_field_ref):
949 Use STRIP_ANY_LOCATION_WRAPPER on CONSTRUCTOR elts.
950
951 2019-10-21 Marek Polacek <polacek@redhat.com>
952
953 PR c++/92062 - ODR-use ignored for static member of class template.
954 * pt.c (has_value_dependent_address): Strip location wrappers.
955
956 2019-10-21 Marek Polacek <polacek@redhat.com>
957
958 PR c++/92106 - ICE with structured bindings and -Wreturn-local-addr.
959 * typeck.c (maybe_warn_about_returning_address_of_local): Avoid
960 recursing on null initializer and return false instead.
961
962 2019-10-17 JeanHeyd Meneide <phdofthehouse@gmail.com>
963
964 Implement p1301 [[nodiscard("should have a reason")]] + p1771 DR
965 * tree.c (handle_nodiscard_attribute): Handle C++2a nodiscard
966 string message.
967 (std_attribute_table) Increase nodiscard argument handling
968 max_length from 0 to 1.
969 * parser.c (cp_parser_check_std_attribute): Add requirement
970 that nodiscard only be seen once in attribute-list.
971 (cp_parser_std_attribute): Check that empty parenthesis lists are
972 not specified for attributes that have max_length > 0 (e.g.
973 [[attr()]]).
974 * cvt.c (maybe_warn_nodiscard): Add nodiscard message to
975 output, if applicable.
976 (convert_to_void): Allow constructors to be nodiscard-able (P1771).
977
978 2019-10-18 Nathan Sidwell <nathan@acm.org>
979
980 * cp-tree.h (struct lang_type): Remove was_anonymous.
981 (TYPE_WAS_UNNAMED): Implement by checking TYPE_DECL &
982 TYPE_STUB_DECL.
983 * decl.c (name_unnamed_type): Don't set TYPE_WAS_UNNAMED.
984
985 2019-10-17 Paolo Carlini <paolo.carlini@oracle.com>
986
987 * decl.c (grokfndecl): Remove redundant use of in_system_header_at.
988 (compute_array_index_type_loc): Likewise.
989 (grokdeclarator): Likewise.
990 * error.c (cp_printer): Likewise.
991 * lambda.c (add_default_capture): Likewise.
992 * parser.c (cp_parser_primary_expression): Likewise.
993 (cp_parser_selection_statement): Likewise.
994 (cp_parser_toplevel_declaration): Likewise.
995 (cp_parser_enumerator_list): Likewise.
996 (cp_parser_using_declaration): Likewise.
997 (cp_parser_member_declaration): Likewise.
998 (cp_parser_exception_specification_opt): Likewise.
999 (cp_parser_std_attribute_spec): Likewise.
1000 * pt.c (do_decl_instantiation): Likewise.
1001 (do_type_instantiation): Likewise.
1002 * typeck.c (cp_build_unary_op): Likewise.
1003
1004 * decl.c (check_tag_decl): Pass to in_system_header_at the same
1005 location used for the permerror.
1006 (grokdeclarator): Likewise.
1007
1008 * decl.c (check_tag_decl): Use locations[ds_typedef] in error_at.
1009
1010 2019-10-17 Jason Merrill <jason@redhat.com>
1011
1012 * cp-gimplify.c (cp_gimplify_expr): Use get_initialized_tmp_var.
1013 (gimplify_to_rvalue): Remove default NULL argument.
1014
1015 2019-10-17 Nathan Sidwell <nathan@acm.org>
1016
1017 * decl.c (builtin_function_1): Merge into ...
1018 (cxx_builtin_function): ... here. Nadger the decl before maybe
1019 copying it. Set the context.
1020 (cxx_builtin_function_ext_scope): Push to top level, then call
1021 cxx_builtin_function.
1022
1023 2019-10-16 Luis Machado <luis.machado@linaro.org>
1024
1025 * cp-gimplify.c: Fix reference to non-existing tree-gimple.c file.
1026
1027 2019-10-16 Jakub Jelinek <jakub@redhat.com>
1028
1029 * decl.c (cxx_maybe_build_cleanup): When clearing location of cleanup,
1030 if cleanup is a nop, clear location of its operand too.
1031
1032 2019-10-15 Andrew Sutton <asutton@lock3software.com>
1033
1034 Finish moving constraint and logic functionality of out pt.c.
1035 Reimplement and re-enable subsumption caching.
1036
1037 * config-lang.in (gtfiles): Add logic.cc.
1038 * constraint.cc (atomic_constraints_identical_p): Add assertions.
1039 (hash_atomic_constraint): Likewise.
1040 (constraints_equivalent_p): New.
1041 (inchash::add_constraint): New.
1042 (iterative_hash_constraint): New.
1043 (decl_constraints): Moved from pt.c.
1044 (get_constraints): Likewise.
1045 (set_constraints): Likewise.
1046 (remove_constraints): Likewise.
1047 * cp-tree.h (CONSTR_P): New.
1048 (init_constraint_processing): Remove.
1049 (constraints_equivalent_p, iterative_hash_constraint): Declare.
1050 * decl.c (cxx_init_decl_processing): Don't initialize constraints.
1051 * logic.cc (subsumption_entry): Moved from pt.c.
1052 (subsumption_hasher): Likewise.
1053 (subsumption_cache): Likewise.
1054 (lookup_subsumption): Likewise.
1055 (save_subsumption): Likewise.
1056 (subsumes_constraints_nonnull): Use subsumption cache.
1057 * pt.c: Move aforementioned declarations out of this file.
1058 (init_constraint_processing): Remove.
1059
1060 2019-10-15 Andrew Sutton <asutton@lock3software.com>
1061
1062 * parser.c (cp_parser_constructor_declarator_p): Pass an empty
1063 decl-specifier-seq to make sure we parse type constraints as part
1064 of a type-specifier.
1065
1066 2019-10-15 Nathan Sidwell <nathan@acm.org>
1067
1068 * class.c (build_clones): Break out of clone_function_decl. Just
1069 build the clones.
1070 (clone_function_decl): Call build_clones, then maybe add them to
1071 the method vector.
1072
1073 * class.c (build_clone): Refactor to clarify recursiveness.
1074
1075 2019-10-14 Jason Merrill <jason@redhat.com>
1076
1077 PR c++/91930 - ICE with constrained inherited default ctor.
1078 * name-lookup.c (do_class_using_decl): Set TYPE_HAS_USER_CONSTRUCTOR
1079 for inherited constructor.
1080
1081 2019-10-14 Paolo Carlini <paolo.carlini@oracle.com>
1082
1083 * decl.c (check_tag_decl): Use DECL_SOURCE_LOCATION.
1084
1085 2019-10-14 Jakub Jelinek <jakub@redhat.com>
1086
1087 PR c++/92084
1088 * semantics.c (handle_omp_array_sections_1): Temporarily disable
1089 -fstrong-eval-order also for in_reduction and task_reduction clauses.
1090
1091 * parser.c (cp_parser_omp_all_clauses): Change bool NESTED_P argument
1092 into int NESTED, if it is 2, diagnose missing commas in between
1093 clauses.
1094 (cp_parser_omp_context_selector): Pass 2 as last argument to
1095 cp_parser_omp_all_clauses.
1096
1097 2019-10-12 Jakub Jelinek <jakub@redhat.com>
1098
1099 * parser.c (cp_parser_omp_context_selector): Improve error recovery.
1100 For simd properties, put them directly into TREE_VALUE.
1101 (cp_finish_omp_declare_variant): Add "omp declare variant base"
1102 attribute rather than "omp declare variant".
1103
1104 2019-10-11 Marek Polacek <polacek@redhat.com>
1105
1106 PR c++/92049 - extra error with -fchecking=2.
1107 * pt.c (build_non_dependent_expr): Call fold_non_dependent_expr
1108 with tf_none.
1109
1110 2019-10-11 Paolo Carlini <paolo.carlini@oracle.com>
1111
1112 * typeck.c (cp_build_binary_op): Do not handle RROTATE_EXPR and
1113 LROTATE_EXPR.
1114 * constexpr.c (cxx_eval_constant_expression): Likewise.
1115 (potential_constant_expression_1): Likewise.
1116 * pt.c (tsubst_copy): Likewise.
1117
1118 2019-10-11 Jason Merrill <jason@redhat.com>
1119
1120 * decl2.c (mark_used): Don't clobber DECL_SOURCE_LOCATION on
1121 explicitly defaulted functions.
1122 * method.c (synthesize_method): Likewise.
1123
1124 2019-10-11 Jakub Jelinek <jakub@redhat.com>
1125
1126 PR c++/91987
1127 * decl2.c (grok_array_decl): For -fstrong-eval-order, when array ref
1128 operands have been swapped and at least one operand has side-effects,
1129 revert the swapping before calling build_array_ref.
1130 * typeck.c (cp_build_array_ref): For non-ARRAY_TYPE array ref with
1131 side-effects on the index operand, if -fstrong-eval-order use
1132 save_expr around the array operand.
1133 (cp_build_binary_op): For shifts with side-effects in the second
1134 operand, wrap first operand into SAVE_EXPR and evaluate it before
1135 the shift.
1136 * semantics.c (handle_omp_array_sections_1): Temporarily disable
1137 flag_strong_eval_order during OMP_CLAUSE_REDUCTION array section
1138 processing.
1139 * cp-gimplify.c (gimplify_to_rvalue): New function.
1140 (cp_gimplify_expr): Use it.
1141
1142 2019-10-10 Marek Polacek <polacek@redhat.com>
1143
1144 * typeck.c (comp_ptr_ttypes_real): Change the return type to bool.
1145 Use false instead of 0.
1146
1147 2019-10-10 Jakub Jelinek <jakub@redhat.com>
1148
1149 * parser.h (struct cp_omp_declare_simd_data): Add variant_p member.
1150 * parser.c (cp_ensure_no_omp_declare_simd): Handle both declare simd
1151 and declare variant.
1152 (cp_parser_oacc_all_clauses): Formatting fix.
1153 (cp_parser_omp_all_clauses): Add NESTED_P argument, if true, terminate
1154 processing on closing paren and don't skip to end of pragma line.
1155 (cp_parser_omp_declare_simd): Add VARIANT_P argument. Handle also
1156 declare variant.
1157 (omp_construct_selectors, omp_device_selectors,
1158 omp_implementation_selectors, omp_user_selectors): New variables.
1159 (cp_parser_omp_context_selector,
1160 cp_parser_omp_context_selector_specification,
1161 cp_finish_omp_declare_variant): New functions.
1162 (cp_parser_late_parsing_omp_declare_simd): Handle also declare variant.
1163 (cp_parser_omp_declare): Handle declare variant.
1164
1165 2019-10-09 Jason Merrill <jason@redhat.com>
1166
1167 * cp-tree.h (template_info_decl_check): Check ENABLE_TREE_CHECKING.
1168
1169 2019-10-09 Marek Polacek <polacek@redhat.com>
1170
1171 PR c++/91364 - P0388R4: Permit conversions to arrays of unknown bound.
1172 PR c++/69531 - DR 1307: Differently bounded array parameters.
1173 PR c++/88128 - DR 330: Qual convs and pointers to arrays of pointers.
1174 * call.c (build_array_conv): Build ck_identity at the beginning
1175 of the conversion.
1176 (standard_conversion): Pass bounds_none to comp_ptr_ttypes_const.
1177 (maybe_warn_array_conv): New.
1178 (convert_like_real): Call it. Add an error message about converting
1179 from arrays of unknown bounds.
1180 (conv_get_original_expr): New.
1181 (nelts_initialized_by_list_init): New.
1182 (conv_binds_to_array_of_unknown_bound): New.
1183 (compare_ics): Implement list-initialization ranking based on
1184 array sizes, as specified in DR 1307 and P0388R.
1185 * cp-tree.h (comp_ptr_ttypes_const): Adjust declaration.
1186 (compare_bounds_t): New enum.
1187 * typeck.c (comp_array_types): New bool and compare_bounds_t
1188 parameters. Use them.
1189 (structural_comptypes): Adjust the call to comp_array_types.
1190 (similar_type_p): Handle ARRAY_TYPE.
1191 (build_const_cast_1): Pass bounds_none to comp_ptr_ttypes_const.
1192 (comp_ptr_ttypes_real): Don't check cv-quals of ARRAY_TYPEs. Use
1193 comp_array_types to compare array types. Look through arrays as per
1194 DR 330.
1195 (comp_ptr_ttypes_const): Use comp_array_types to compare array types.
1196 Look through arrays as per DR 330.
1197
1198 2019-10-09 Marek Polacek <polacek@redhat.com>
1199
1200 PR c++/92032 - DR 1601: Promotion of enum with fixed underlying type.
1201 * call.c (standard_conversion): When converting an enumeration with
1202 a fixed underlying type to the underlying type, give it the cr_promotion
1203 rank.
1204 (compare_ics): Implement a tiebreaker as per CWG 1601.
1205
1206 2019-10-08 Andrew Sutton <asutton@lock3software.com>
1207 Jason Merrill <jason@redhat.com>
1208
1209 Update the concepts implementation to conform to the C++20
1210 specification, improve compile times, and generally clean up
1211 the implementation.
1212 * call.c (build_new_function_call): Don't evaluate concepts here.
1213 (constraint_failure): Don't record the template.
1214 (print_z_candidate): Don't extract the template.
1215 * class.c (add_method): When overloading, hide ineligible special
1216 member fns.
1217 (check_methods): Set TYPE_HAS_COMPLEX_* here.
1218 * constexpr.c (cxx_eval_constant_expression): Evaluate concepts.
1219 (maybe_initialize_fundef_copies_table): Remove.
1220 (get_fundef_copy): Use hash_map_safe_get_or_insert.
1221 (clear_cv_and_fold_caches): Clear the satisfaction cache.
1222 * constraint.cc (known_non_bool_p): New.
1223 (parsing_constraint_expression_sentinel): Renamed from
1224 expanding_constraint_sentinel.
1225 (check_constraint_operands): New.
1226 (check_constraint_atom): New.
1227 (finish_constraint_binary_op): New.
1228 (finish_constraint_or_expr): Likewise.
1229 (finish_constraint_and_expr): Likewise.
1230 (finish_constraint_primary_expr): Likewise.
1231 (combine_constraint_expressions): New.
1232 (finish_requires_expr): Add location parm.
1233 (get_concept_definition): Return the initializer of concept definitions.
1234 (get_template_head_requirements): New.
1235 (get_trailing_function_requirements): New.
1236 (deduce_constrained_parameter): Check if the identifier or template-id
1237 is a concept definition.
1238 (resolve_concept_definition_check): Removed.
1239 (resolve_variable_concept_check): Removed.
1240 (resolve_concept_check): New.
1241 (resolve_constraint_check): Handle concept definitions.
1242 converting arguments.
1243 (function_concept_check_p): Removed.
1244 (variable_concept_check_p): Removed.
1245 (unpack_concept_check): New.
1246 (get_concept_check_template): New.
1247 (build_call_check): Moved and renamed to build_function_check.
1248 (build_concept_check_arguments): make static.
1249 (build_function_check): Always do overload resolution
1250 in order to force conversion of template arguments (i.e., actually
1251 check that the use of a concept is valid).
1252 (build_standard_check): Renamed from build_real_concept_check.
1253 (build_real_concept_check): Build checks for C++2a concepts by
1254 (build_wildcard_concept_check): New.
1255 (build_concept_check): Use build_real_concept_check. New overload.
1256 (build_constraints): Save expressions, not normalized constraints.
1257 (build_concept_id): New. Pass tf_warning_or_error.
1258 (build_type_constraint): New.
1259 (finish_type_constraints): New.
1260 (associate_classtype_constraints): Also add constraints to union
1261 types. Note the original declaration in errors. Don't return
1262 error_mark_node in order to avoid an assertion later.
1263 (push_down_pack_expansion): Remove.
1264 (finish_shorthand_constraint): Make fold expressions, not naked
1265 parameter packs. Always apply the constraint to each template argument.
1266 (check_introduction_list): New. Fail if not enough
1267 names are introduced.
1268 (finish_template_introduction): Don't normalize constraints. Pass
1269 tsubst flags. Check for insufficient introductions.
1270 (placeholder_extract_concept_and_args): Handle the template-id case.
1271 Unpack function concept checks correctly.
1272 (tsubst_simple_requirement): Return errors if they occur. Don't
1273 process as a template.
1274 (tsubst_type_requirement): Likewise.
1275 (type_deducible_p): New. Wrap the input expression in parens for the
1276 purpose of deduction.
1277 (expression_convertible_t): New.
1278 (tsubst_compound_requirement): Use new deduction, conversion predicates.
1279 (tsubst_nested_requirement): Return errors if they occur. Don't
1280 process as a template. Instantiate and evaluate the nested requirement.
1281 (tsubst_valid_expression_requirement): New.
1282 (tsubst_simple_requirement): Use tsubst_valid_expression_requirement.
1283 (tsubst_compound_requirement): Use tsubst_valid_expression_requirement.
1284 (check_constaint_variables): New.
1285 (tsubst_constraint_variables): Check that type substitutions are valid.
1286 (tsubst_requires_expr): Likewise. Produce new requires-exprs during
1287 template substitution. Copy the previous local specialization stack,
1288 so references to non-local parameters can be found. Use cp_unevaluated.
1289 (tsubst_constraint): New. Don't evaluate concept checks.
1290 (subst_info): New.
1291 (norm_info): New. Used to build a normalization tree for concept check
1292 diagnostics.
1293 (debug_parameter_mapping): New.
1294 (debug_argument_list): New.
1295 (expand_concept): Removed.
1296 (normalize_logical_operation): Pass subst_info through call.
1297 (normalize_pack_expansion): Remove.
1298 (normalize_simple_requirement): Removed
1299 (normalize_type_requirement): Removed
1300 (normalize_compound_requirement): Removed
1301 (normalize_nested_requirement): Removed
1302 (normalize_requirement): Removed
1303 (normalize_requirements): Removed
1304 (normalize_requires_expression): Removed
1305 (normalize_variable_concept_check): Removed.
1306 (normalize_function_concept_check): Removed.
1307 (normalize_concept_check): Merged all normalize_*_check here.
1308 Substitute through written template arguments before normalizing the
1309 definition. Only substitute the innermost template arguments.
1310 (check_for_logical_overloads): Delete.
1311 (map_arguments): New. Associate template parameters with arguments.
1312 (build_parameter_mapping): New. Extract used parameters.
1313 (normalize_expression): Rewrite.
1314 (normalize_conjunction): Removed
1315 (normalize_disjunction): Removed
1316 (normalize_predicate_constraint): Removed
1317 (normalize_parameterized_constraint): Removed
1318 (normalized_map): New variable.
1319 (get_normalized_constraints): New entry point for normalization.
1320 Establishes a timer.
1321 (get_normalized_constraints_from_info): New.
1322 (get_normalized_constraints_from_decl): New. Turn on template processing
1323 prior to normalization. Handle inheriting ctors. Build the
1324 normalization arguments from the full set of template parameters of the
1325 most general template. This guarantees that we have no concrete arguments
1326 in the parameter mapping (e.g., from template members of class
1327 templates). Cache normalizations.
1328 (normalize_concept_definition): New. Cache normalizations.
1329 (normalize_template_requirements): New.
1330 (normalize_nontemplate_requirements): New.
1331 (normalize_constraint_expression): New.
1332 (tsubst_parameter_mapping): New.
1333 (get_mapped_args): New.
1334 (parameter_mapping_equivalent_p): New. Use template_args_equal.
1335 (atomic_constraints_identical_p): New.
1336 (hash_atomic_constraint): New.
1337 (satisfying_constraint_p): New. Guard against recursive evaluation of
1338 constraints during satisfaction.
1339 (satisfy_conjunction): New.
1340 (satisfy_disjunction): New.
1341 (sat_entry): New class for hashing satisfaction results.
1342 (sat_hasher): New hash traits.
1343 (sat_cache): New.
1344 (get_satisfaction): New. Returns cached satisfaction result.
1345 (save_satisfaction): New. Caches a satisfaction result.
1346 (clear_satisfaction_cache): New.
1347 (satisfaction_cache): New. Helps manage satisfaction cache requests.
1348 (decl_satisfied_cache): New.
1349 (satisfy_atom): New.
1350 (satisfy_constraint_r): New.
1351 (satisfy_constraint): Use new satisfaction algorithm.
1352 (evaluate_concept_check): New.
1353 (evaluate_concept): Removed.
1354 (evaluate_function_concept): Removed.
1355 (evaluate_variable_concept): Removed.
1356 (satisfy_constraint_expression): New.
1357 (constraint_expression_satisfied_p): New.
1358 (constraints_satisfied_p): Use strip_inheriting_ctors. Use
1359 push_/pop_access_scope.
1360 (more_constrained): Normalize before calling out to subsumption. Allow
1361 classes as arguments.
1362 (strictly_subsumes): Allow non-templates as arguments. Accept a new
1363 template argument.
1364 (weakly_subsumes): New.
1365 (at_least_as_constrained): Removed.
1366 (diagnose_other_expression): Removed.
1367 (diagnose_predicate_constraint): Removed.
1368 (diagnose_pack_expansion): Removed.
1369 (diagnose_check_constraint): Removed.
1370 (diagnose_logical_constraint): Removed.
1371 (diagnose_expression_constraint): Removed.
1372 (diagnose_type_constraint): Removed.
1373 (diagnose_implicit_conversion_constraint): Removed.
1374 (diagnose_argument_deduction_constraint): Removed.
1375 (diagnose_exception_constraint): Removed.
1376 (diagnose_parameterized_constraint): Removed.
1377 (diagnose_argument_deduction_constraint): Removed.
1378 (diagnose_argument_deduction_constraint): Removed.
1379 (diagnose_argument_deduction_constraint): Removed.
1380 (diagnose_trait_expr): New.
1381 (diagnose_requires_expr): New.
1382 (diagnose_atomic_constraint): New.
1383 (diagnose_valid_expression) Stop wrongly diagnosing valid expressions.
1384 Don't substitute as if in template decls. This causes substitution
1385 to generate expressions that aren't suitable for use with the noexcept
1386 routines.
1387 (diagnose_valid_type) Likewise.
1388 (diagnose_compound_requirement) Actually emit diagnostics for
1389 the causes of errors.Call force_paren_expr_uneval.
1390 (diagnose_declaration_constraints): Turn on template processing to
1391 suppress certain analyses.
1392 * cp-objcp-common.c (cp_common_init_ts): Make concepts typed.
1393 (cp_get_debug_type): Use hash_map_safe_*.
1394 * cp-tree.h: New function declarations for semantic actions, other
1395 facilities. Remove declaration no longer used or needed. Remove
1396 unused _CONSTR macros.
1397 (LANG_DECL_HAS_MIN): Add CONCEPT_DECL.
1398 (template_info_decl_check): Factor macro check into an inline function.
1399 (DECL_TEMPLATE_INFO): Use new check facility.
1400 (finish_concept_definition): New. Don't invalid concept declarations
1401 with invalid initializers.
1402 (find_template_parameters): New.
1403 (concept_definition_p): New.
1404 (concept_check_p): New.
1405 (variable_concept_check_p): New.
1406 (force_paren_expr_uneval): New.
1407 (ovl_iterator::using_p): A USING_DECL by itself was also
1408 introduced by a using-declaration.
1409 (struct tree_template_info): Use tree_base instead of
1410 tree_common. Add tmpl and args fields.
1411 (TI_TEMPLATE, TI_ARGS): Adjust.
1412 (DECLTYPE_FOR_INIT_CAPTURE): Remove.
1413 (CONSTR_CHECK, CONSTR_INFO, CONSTR_EXPR, CONSTR_CONTEXT): New.
1414 (ATOMIC_CONSTR_MAP, TRAIT_EXPR_LOCATION): New.
1415 (struct tree_trait_expr): Add locus field.
1416 (enum tsubst_flags): Add tf_norm as a hint to generate normalization
1417 context when diagnosing constraint failure.
1418 * cp-tree.def: Remove unused _CONSTR nodes and rename PRED_CONSTR
1419 to ATOMIC_CONSTR.
1420 (CONCEPT_DECL): New.
1421 * cxx-pretty-print.c: Remove constraint printing code.
1422 (pp_cxx_concept_definition): New.
1423 (pp_cxx_template_declaration): Print concept definitions.
1424 (pp_cxx_check_constraint): Update printing for concept definitions.
1425 (pp_cxx_nested_name_specifier): Fix a weird
1426 case where we're printing '::::' for concepts.
1427 (simple_type_specifier): Print requirements for placeholder types.
1428 (pp_cxx_constrained_type_spec): Print the associated requirements of
1429 a placeholder type.
1430 (pp_cxx_compound_requirement): Add space before the '->'.
1431 (pp_cxx_parameter_mapping): Print the parameter mapping.
1432 (pp_cxx_atomic_constraint): Use the function above.
1433 * decl.c (redeclaration_error_message): New error for concepts.
1434 (grokdeclarator): Check for and disallow decltype(auto) in parameter
1435 declarations.
1436 (grokfndecl): Don't normalize constraints. Add check for constraints
1437 on declaration.
1438 (grokvardecl): Don't normalize constraints.
1439 (grok_special_member_properties): Don't set TYPE_HAS_COMPLEX_*.
1440 (function_requirements_equivalent_p): New. Compare trailing
1441 requires clauses. Compare combined constraints in pre-C++20 mode.
1442 (decls_match): Compare trailing requires clauses. Compare template
1443 heads for function templates. Remove old constraint comparison.
1444 Simplify comparison of functions, function templates.
1445 (duplicate_function_template_decls): New. Refactor a nasty if
1446 condition into a single predicate.
1447 (require_deduced_type): Don't complain if we already complained about
1448 deduction failure.
1449 (finish_function): Perform auto deduction to ensure that constraints
1450 are checked even when functions contain no return statements. Only do
1451 auto deduction if we haven't previously seen any return statements.
1452 This prevents multiple diagnostics of the same error.
1453 (store_decomp_type): Remove.
1454 (cp_finish_decomp): Use hash_map_safe_put.
1455 * error.c: Remove constraint printing code.
1456 (dump_decl): Dump concept definitions. Handle wildcard declarations.
1457 (dump_template_decl): Likewise.
1458 (dump_type): Print associated requirements for placeholder
1459 types.
1460 (rebuild_concept_check): New.
1461 (maybe_print_single_constraint_context): New.
1462 (maybe_print_constraint_context): Recursively print nested contexts.
1463 * init.c (get_nsdmi): Use hash_map_safe_*.
1464 * lambda.c (maybe_add_lambda_conv_op): Bail if deduction failed.
1465 (add_capture): Copy parameter packs from init.
1466 (lambda_capture_field_type): Always use auto for init-capture.
1467 * logic.cc: Completely rewrite.
1468 (constraint_hash): New.
1469 (clause/ctor): Save atoms in the hash table.
1470 (replace): Save atoms during replacement.
1471 (insert): Save atoms during insertion.
1472 (contains): Only search the hash table for containment.
1473 (clause): Keep a hash of atomic constraints.
1474 (clause::clause): Explicitly copy the hash table when copying.
1475 (disjunction_p, conjunction_p, atomic_p, dnf_size, cnf_size): New.
1476 (diagnose_constraint_size): New.
1477 (subsumes_constraints_nonnull): Compare the sizes of normalized formula
1478 to determine the cheapest decomposition.
1479 * name-lookup.c (diagnose_name_conflict): Diagnose name issues with
1480 concepts.
1481 (matching_fn_p): Check constraints.
1482 (push_class_level_binding_1): Move overloaded functions case down,
1483 accept FUNCTION_DECL as target_decl.
1484 * parser.c (enum required_token): New required token for auto.
1485 (make_location): Add overload taking lexer as last parm.
1486 (cp_parser_required_error): Diagnose missing auto.
1487 (cp_parser_diagnose_ungrouped_constraint_plain): New.
1488 (cp_parser_diagnose_ungrouped_constraint_plain): New.
1489 (cp_parser_constraint_primary_expression): New. Tentatively parse the
1490 primary expression. If that fails tentatively parse a lower
1491 precedence expression in order to diagnose the error.
1492 (cp_parser_check_non_logical_constraint): New. Performs a trial
1493 parse of the right-hand-side of non-logical operators in order to
1494 generate good diagnostics.
1495 (cp_parser_constraint_logical_and_expression): New.
1496 (cp_parser_constraint_logical_or_expression): New.
1497 (cp_parser_requires_clause_expression): New.
1498 (cp_parser_requires_clause): Renamed to cp_parser_constraint_expression.
1499 (cp_parser_requires_clause_opt): Parse the requires-clause differently
1500 in -fconcepts and -std=c++2a modes.
1501 (cp_parser_requirement_list): Rename to cp_parser_requirement_seq.
1502 Rewrite so that semicolons are parsed
1503 along with requirements, not the sequence.
1504 (cp_parser_simple_requirement): Expect a semicolon at end.
1505 (cp_parser_compound_requirement): Expect a semicolon at end. Only
1506 allow trailing-return-type with -fconcepts-ts.
1507 (cp_parser_nested_requirement): Expect a semicolon at end. Parse
1508 constraint-expressions.
1509 (cp_parser_concept_definition): New. Don't fail parsing the concept
1510 definition if the initializer is ill-formed. Don't declare the concept
1511 before parsing the initializer.
1512 (cp_parser_constraint_expression): Declare earlier.
1513 (cp_parser_type_requirement): Current scope is not valid.
1514 (cp_parser_requires_expression): Commit to the tentative parse.
1515 (cp_parser_decl_specifier_seq): Warn when concept appears to be used
1516 as a decl-specifier.
1517 (cp_parser_template_declaration_after_parameters): Parse concept
1518 definitions.
1519 (cp_parser_template_id): Don't try to resolve a concept template-id yet.
1520 (cp_parser_template_id_expr): Resolve it as a concept check.
1521 (cp_parser_decl_specifier_seq): Warn on 'concept bool'.
1522 (cp_parser_type_parameter): Combine expressions not
1523 constraints.
1524 (cp_parser_explicit_template_declaration): Combine expressions not
1525 constraints.
1526 (cp_parser_maybe_concept_name): Removed.
1527 (cp_parser_simple_type_specifier): Handle an error condition of
1528 a bad constrained type specifier. Expect auto or decltype after
1529 a concept name. Also handle the case where we have a template-id
1530 as a concept check.
1531 (cp_parser_template_introduction): Diagnose errors on invalid
1532 introductions. Give up if it doesn't start with a concept name.
1533 Pedwarn if not -fconcepts-ts.
1534 (synthesize_implicit_template_parm): Don't do consistent binding.
1535 Use a new flag for constrained parameters. Combine expressions,
1536 not constraints. Fail if we get a placeholder in block scope.
1537 Placeholders that do not constrain types are not allowed in parameter
1538 declarations, so don't handle them.
1539 (cp_parser_placeholder_type_specifier): New. Implement parsing of
1540 placeholder type specifiers following a concept name or partial
1541 concept check. Disallow decltype(auto) parameters.
1542 (cp_parser_nested_name_specifier_opt): If the token is already
1543 CPP_NESTED_NAME_SPECIFIER, leave it alone.
1544 (cp_parser_id_expression, cp_parser_unqualified_id): Call
1545 cp_parser_template_id_expr.
1546 (cp_parser_placeholder_type_specifier): Add tentative parm. Don't
1547 expect a WILDCARD_DECL.
1548 (cp_parser_trait_expr): Pass trait_loc down.
1549 (cp_parser_postfix_expression): Do set location of dependent member
1550 call.
1551 * pt.c (finish_concept_definition): New.
1552 (push_template_decl_real): Handle concept definitions.
1553 (start_concept_definition): Let push_template_decl_real handle the
1554 creation of the template.
1555 (get_constraints): Return null if the table hasn't been initialized.
1556 (tsubst_copy_and_build): Build template-id expressions for concept
1557 checks.
1558 [TRAIT_EXPR]: Pass trait_loc down.
1559 (lookup_template_class_1): Add the template name to the constraint
1560 failure diagnostic.
1561 (lookup_and_finish_template_variable): Build concept checks
1562 with the correct arguments.
1563 (tsubst_function_decl): Don't substitute through constraints.
1564 Always associate constraints with functions.
1565 (template_parm_level_and_index): Make non-static.
1566 (for_each_template_parm_r): Handle requires expressions.
1567 (keep_template_parm): New.
1568 (find_template_parameters): New.
1569 (more_specialized_fn): Change how winners and losers are chosen.
1570 (make_constrained_auto): Don't normalize constraints.
1571 (template_parameters_equivalent_p): New. Compare template
1572 parameters. Add a comparison for implicitly vs. explicitly declared
1573 parameters.
1574 (template_parameter_lists_equivalent_p): New. Compare template
1575 parameter lists.
1576 (template_requirements_equivalent_p): New.
1577 (template_heads_equivalent_p): New. Compare template heads.
1578 (template_parameter_constraints_equivalent_p): New.
1579 (is_compatible_template_arg): Use weakly_subsumes.
1580 (maybe_new_partial_specialization): Use new constraint comparison
1581 for finding specializations.
1582 (process_partial_specialization): Pass main template as argument.
1583 (more_specialized_partial_spec): Don't immediately return when
1584 detecting a winner.
1585 (make_constrained_auto): Handle concept definitions.
1586 (do_auto_deduction): Update auto deduction for new concept model.
1587 Extract the function concept correctly; rename constr to check to
1588 reflect the kind of node.
1589 (tsubst): Adjust wildcard argument during substitution.
1590 [DECLTYPE_TYPE]: Remove init-capture handling.
1591 (tsubst_copy_and_build): Build concept checks, not template ids.
1592 Defer checks of function concepts. Handle concepts before variable
1593 templates. Handle calls to function concepts explicitly.
1594 (coerce_template_parms): Use concept_definition_p. Handle a deduction
1595 error where a potentially empty pack can be supplied after the last
1596 parameter of a concept.
1597 (finish_template_variable): Don't process concepts here.
1598 (instantiation_dependent_r): Use concept_check_p.
1599 (tsubst_template_args): Make non-static.
1600 (make_constrained_placeholder_type): New. Refactored from
1601 make_constrained_auto.
1602 (make_constrained_auto) Use make_constrained_placeholder_type.
1603 (make_constrained_decltype_auto) New.
1604 (tsubst_function_parms): New.
1605 (value_dependent_expression_p) [TEMPLATE_ID_EXPR]: Use
1606 concept_definition_p.
1607 (push_access_scope, pop_access_scope): No longer static.
1608 (tsubst_template_parm): Substitute TEMPLATE_PARM_CONSTRAINTS.
1609 (tsubst_friend_function): Use tsubst_constraint. Use generic_targs_for.
1610 (get_underlying_template) Use generic_targs_for.
1611 (uses_parameter_packs): Return tree.
1612 (gen_elem_of_pack_expansion_instantiation): Don't push
1613 local_specialization_stack.
1614 (prepend_one_capture): New.
1615 (tsubst_lambda_expr): Use prepend_one_capture. Don't touch
1616 local_specializations.
1617 (template_parms_level_to_args): No longer static.
1618 (add_outermost_template_args): Likewise.
1619 (find_template_parameter_info): New. Provide context for finding
1620 template parameters.
1621 (keep_template_parm): Don't keep parameters declared at depth levels
1622 greater than those of the template parameters of the source declaration.
1623 Don't propagate cv-qualified types. Return 0, so we find all template
1624 parameters, not the just first.
1625 (any_template_parm_r): New. Handle cases that are mishandled by
1626 for_each_template_parm_r.
1627 (generic_targs_for): Factor out of coerce_template_args_for_ttp.
1628 (tsubst_argument_pack): Factor out of tsubst_template_args.
1629 (constraint_sat_entry): Removed.
1630 (constraint_sat_hasher): Removed.
1631 (concept_spec_entry): Removed.
1632 (concept_spec_hasher): Removed.
1633 (constraint_memos): Removed.
1634 (concept_memos): Removed.
1635 (lookup_constraint_satisfaction): Removed.
1636 (memoize_constraint_satisfaction): Removed.
1637 (lookup_concept_satisfaction): Removed.
1638 (memoize_concept_satisfaction): Removed.
1639 (concept_expansions): Removed.
1640 (get_concept_expansion): Removed.
1641 (save_concept_expansion): Removed.
1642 (init_constraint_processing): Remove initialization of non-existing
1643 resources.
1644 (find_template_requirement): New. Search for the sub-requirement
1645 within the associated constraints.
1646 (convert_generic_types_to_packs): Also transform the associated
1647 constraint and update the current template requirements.
1648 (store_defaulted_ttp, lookup_defaulted_ttp): Remove.
1649 (add_defaults_to_ttp): Use hash_map_safe_*.
1650 * semantics.c (finish_call_expr): Diagnose calls to concepts.
1651 Handle concept checks explicitly.
1652 (finish_id_expression): Evaluate variable concepts as part of
1653 id-expression processing. Don't treat variable concepts as variables,
1654 and don't process function concepts as plain id-expressions.
1655 (force_paren_expr): Add even_uneval parm.
1656 (finish_trait_expr): Add location parm.
1657 * tree.c (special_memfn_p): New.
1658 (cp_expr_location): Handle TRAIT_EXPR.
1659 * typeck.c (check_return_expr): Actually use the diagnostic kind
1660 when performing return-type deduction.
1661 * typeck2.c (build_functional_cast): Don't rely on the location of
1662 'auto'.
1663
1664 2019-10-09 Paolo Carlini <paolo.carlini@oracle.com>
1665
1666 * decl.c (grok_ctor_properties): Use DECL_SOURCE_LOCATION.
1667 * typeck.c (cp_build_binary_op): Use the op_location_t argument
1668 in many error messages.
1669
1670 2019-10-08 Martin Sebor <msebor@redhat.com>
1671
1672 PR c++/92001
1673 * call.c (maybe_warn_class_memaccess): Handle arrays.
1674
1675 2019-10-07 Paolo Carlini <paolo.carlini@oracle.com>
1676
1677 * call.c (resolve_args): Use cp_expr_loc_or_input_loc in one place.
1678 * decl.c (grokdeclarator): Use id_loc in one place.
1679 * decl2.c (build_anon_union_vars): Use DECL_SOURCE_LOCATION.
1680 * parser.c (cp_parser_delete_expression): Fix the location of the
1681 returned expression.
1682 (cp_parser_throw_expression): Likewise.
1683 * pt.c (determine_specialization): Use DECL_SOURCE_LOCATION.
1684
1685 2019-10-05 Jakub Jelinek <jakub@redhat.com>
1686
1687 PR c++/91369 - Implement P0784R7: constexpr new
1688 * cp-tree.h (enum cp_tree_index): Add CPTI_HEAP_UNINIT_IDENTIFIER,
1689 CPTI_HEAP_IDENTIFIER and CPTI_HEAP_DELETED_IDENTIFIER.
1690 (heap_uninit_identifier, heap_identifier, heap_deleted_identifier):
1691 Define.
1692 (type_has_constexpr_destructor, build_new_constexpr_heap_type,
1693 cxx_constant_dtor): Declare.
1694 * class.c (type_maybe_constexpr_default_constructor): Make static.
1695 (type_maybe_constexpr_destructor, type_has_constexpr_destructor): New
1696 functions.
1697 (finalize_literal_type_property): For c++2a, don't clear
1698 CLASSTYPE_LITERAL_P for types without trivial destructors unless they
1699 have non-constexpr destructors.
1700 (explain_non_literal_class): For c++2a, complain about non-constexpr
1701 destructors rather than about non-trivial destructors.
1702 * constexpr.c: Include stor-layout.h.
1703 (struct constexpr_global_ctx): New type.
1704 (struct constexpr_ctx): Add global field, remove values and
1705 constexpr_ops_count.
1706 (cxx_replaceable_global_alloc_fn): New inline function.
1707 (cxx_eval_call_expression): For c++2a allow calls to replaceable
1708 global allocation functions, for new return address of a heap uninit
1709 var, for delete record its deletion. Change ctx->values->{get,put} to
1710 ctx->global->values.{get,put}.
1711 (non_const_var_error): Add auto_diagnostic_group sentinel. Emit
1712 special diagnostics for heap variables.
1713 (cxx_eval_store_expression): Change ctx->values->{get,put} to
1714 ctx->global->values.{get,put}.
1715 (cxx_eval_loop_expr): Initialize jump_target if NULL. Change
1716 new_ctx.values->remove to ctx->global->values.remove.
1717 (cxx_eval_constant_expression): Change *ctx->constexpr_ops_count
1718 to ctx->global->constexpr_ops_count. Change ctx->values->{get,put} to
1719 ctx->global->values.{get,put}.
1720 <case NOP_EXPR>: Formatting fix. On cast of replaceable global
1721 allocation function to some pointer type, adjust the type of
1722 the heap variable and change name from heap_uninit_identifier
1723 to heap_identifier.
1724 (find_heap_var_refs): New function.
1725 (cxx_eval_outermost_constant_expr): Add constexpr_dtor argument,
1726 handle evaluation of constexpr dtors and add tracking of heap
1727 variables. Use tf_no_cleanup for get_target_expr_with_sfinae.
1728 (cxx_constant_value): Adjust cxx_eval_outermost_constant_expr caller.
1729 (cxx_constant_dtor): New function.
1730 (maybe_constant_value, fold_non_dependent_expr_template,
1731 maybe_constant_init_1): Adjust cxx_eval_outermost_constant_expr
1732 callers.
1733 (potential_constant_expression_1): Ignore clobbers. Allow
1734 COND_EXPR_IS_VEC_DELETE for c++2a.
1735 * decl.c (initialize_predefined_identifiers): Add heap identifiers.
1736 (decl_maybe_constant_destruction): New function.
1737 (cp_finish_decl): Don't clear TREE_READONLY for constexpr variables
1738 with non-trivial, but constexpr destructors.
1739 (register_dtor_fn): For constexpr variables with constexpr non-trivial
1740 destructors call cxx_maybe_build_cleanup instead of adding destructor
1741 calls at runtime.
1742 (expand_static_init): For constexpr variables with constexpr
1743 non-trivial destructors call cxx_maybe_build_cleanup.
1744 (grokdeclarator): Allow constexpr destructors for c++2a. Formatting
1745 fix.
1746 (cxx_maybe_build_cleanup): For constexpr variables with constexpr
1747 non-trivial destructors call cxx_constant_dtor instead of adding
1748 destructor calls at runtime.
1749 * init.c: Include stor-layout.h.
1750 (build_new_constexpr_heap_type, maybe_wrap_new_for_constexpr): New
1751 functions.
1752 (build_new_1): For c++2a and new[], add cast around the alloc call
1753 to help constexpr evaluation figure out the type of the heap storage.
1754 (build_vec_delete_1): Set DECL_INITIAL of tbase and emit a DECL_EXPR
1755 for it instead of initializing an uninitialized variable.
1756 * method.c: Include intl.h.
1757 (SFK_CTOR_P, SFK_DTOR_P, SFK_ASSIGN_P, SFK_COPY_P, SFK_MOVE_P): Move
1758 definitions earlier.
1759 (process_subob_fn): Add sfk argument, adjust non-constexpr call
1760 diagnostics based on it.
1761 (walk_field_subobs): Formatting fixes. Adjust process_subob_fn caller.
1762 (synthesized_method_base_walk): Likewise.
1763 (synthesized_method_walk): Set *constexpr_p to true for dtors in c++2a.
1764 Fix up DR number in comment.
1765 (implicitly_declare_fn): Formatting fix.
1766 * typeck2.c (store_init_value): Don't call cp_fully_fold_init on
1767 initializers of automatic non-constexpr variables in constexpr
1768 functions.
1769
1770 2019-10-04 Jakub Jelinek <jakub@redhat.com>
1771
1772 PR c++/71504
1773 * constexpr.c (cxx_fold_indirect_ref_1): New function.
1774 (cxx_fold_indirect_ref): Use it.
1775
1776 PR c++/91974
1777 * cp-gimplify.c (cp_gimplify_expr) <case CALL_EXPR>: For
1778 -fstrong-eval-order ensure CALL_EXPR_FN side-effects are evaluated
1779 before any arguments. Additionally, ensure CALL_EXPR_FN that isn't
1780 invariant nor OBJ_TYPE_REF nor SSA_NAME is forced into a temporary.
1781
1782 2019-10-03 Paolo Carlini <paolo.carlini@oracle.com>
1783
1784 * init.c (build_new): Use cp_expr_loc_or_input_loc in two places.
1785 * name-lookup.c (do_pushdecl): Use DECL_SOURCE_LOCATION.
1786 (push_class_level_binding_1): Likewise.
1787 (set_decl_namespace): Likewise.
1788
1789 2019-10-03 Jakub Jelinek <jakub@redhat.com>
1790
1791 * constexpr.c (cxx_eval_constant_expression) <case CLEANUP_STMT>: If
1792 not skipping upon entry to body, run cleanup with the same *jump_target
1793 as it started to run the cleanup even if the body returns, breaks or
1794 continues.
1795 (potential_constant_expression_1): Allow CLEANUP_STMT.
1796
1797 * constexpr.c (cxx_eval_store_expression): Formatting fix. Handle
1798 const_object_being_modified with array type.
1799
1800 2019-10-02 Jason Merrill <jason@redhat.com>
1801
1802 * typeck2.c (store_init_value): Only clear_cv_and_fold_caches if the
1803 value is constant.
1804
1805 2019-09-30 Jason Merrill <jason@redhat.com>
1806
1807 Use hash_map_safe_* functions.
1808 * constexpr.c (maybe_initialize_fundef_copies_table): Remove.
1809 (get_fundef_copy): Use hash_map_safe_get_or_insert.
1810 * cp-objcp-common.c (cp_get_debug_type): Use hash_map_safe_*.
1811 * decl.c (store_decomp_type): Remove.
1812 (cp_finish_decomp): Use hash_map_safe_put.
1813 * init.c (get_nsdmi): Use hash_map_safe_*.
1814 * pt.c (store_defaulted_ttp, lookup_defaulted_ttp): Remove.
1815 (add_defaults_to_ttp): Use hash_map_safe_*.
1816
1817 2019-10-02 Richard Biener <rguenther@suse.de>
1818
1819 PR c++/91606
1820 * decl.c (build_ptrmemfunc_type): Mark pointer-to-member
1821 fat pointer structure members as DECL_NONADDRESSABLE_P.
1822
1823 2019-09-28 Marek Polacek <polacek@redhat.com>
1824
1825 PR c++/91889 - follow-up fix for DR 2352.
1826 * call.c (involves_qualification_conversion_p): New function.
1827 (direct_reference_binding): Build a ck_qual if the conversion
1828 would involve a qualification conversion.
1829 (convert_like_real): Strip the conversion created by the ck_qual
1830 in direct_reference_binding.
1831
1832 PR c++/91921 - stray warning with -Woverloaded-virtual.
1833 * class.c (warn_hidden): Only emit the second part of
1834 -Woverloaded-virtual if the first part was issued. Use inform instead
1835 warning_at.
1836
1837 PR c++/91923 - failure-to-SFINAE with class type NTTP in C++17.
1838 * pt.c (invalid_nontype_parm_type_p): Only emit errors when
1839 tf_error.
1840
1841 2019-09-27 Jakub Jelinek <jakub@redhat.com>
1842
1843 PR c++/88203
1844 * parser.c (cp_parser_omp_var_list_no_open): Parse predefined
1845 variables.
1846 * semantics.c (finish_omp_clauses): Allow predefined variables in
1847 shared and firstprivate clauses, even when they are predetermined
1848 shared.
1849 * cp-gimplify.c (cxx_omp_predetermined_sharing_1): Return
1850 OMP_CLAUSE_DEFAULT_SHARED for predefined variables.
1851
1852 2019-09-27 Jason Merrill <jason@redhat.com>
1853
1854 * constexpr.c (cxx_fold_indirect_ref): Use similar_type_p.
1855 (cxx_eval_indirect_ref): Likewise. Improve error location.
1856
1857 * cp-tree.h (class iloc_sentinel): New.
1858 * decl.c (grokdeclarator, finish_enum_value_list): Use it.
1859 * mangle.c (mangle_decl_string): Use it.
1860 * pt.c (perform_typedefs_access_check): Use it.
1861
1862 2019-09-27 Richard Sandiford <richard.sandiford@arm.com>
1863
1864 * cp-tree.h (build_cxx_call): Take the original function decl
1865 as an optional final parameter.
1866 (cp_build_function_call_vec): Likewise.
1867 * call.c (build_cxx_call): Likewise. Pass all built-in calls to
1868 check_builtin_function_arguments.
1869 * typeck.c (build_function_call_vec): Take the original function
1870 decl as an optional final parameter and pass it to
1871 cp_build_function_call_vec.
1872 (cp_build_function_call_vec): Take the original function
1873 decl as an optional final parameter and pass it to build_cxx_call.
1874
1875 2019-09-25 Marek Polacek <polacek@redhat.com>
1876
1877 PR c++/91877 - ICE with converting member of packed struct.
1878 * call.c (convert_like_real): Use similar_type_p in an assert.
1879
1880 2019-09-25 Paolo Carlini <paolo.carlini@oracle.com>
1881
1882 * name-lookup.c (check_extern_c_conflict): Use DECL_SOURCE_LOCATION.
1883 (check_local_shadow): Use it in three additional places.
1884
1885 2019-09-24 Jason Merrill <jason@redhat.com>
1886
1887 * parser.c (cp_parser_postfix_expression): Do set location of
1888 dependent member call.
1889
1890 2019-09-24 Marek Polacek <polacek@redhat.com>
1891
1892 PR c++/91868 - improve -Wshadow location.
1893 * name-lookup.c (check_local_shadow): Use DECL_SOURCE_LOCATION
1894 instead of input_location.
1895
1896 PR c++/91845 - ICE with invalid pointer-to-member.
1897 * expr.c (mark_use): Use error_operand_p.
1898 * typeck2.c (build_m_component_ref): Check error_operand_p after
1899 calling mark_[lr]value_use.
1900
1901 2019-09-23 Paolo Carlini <paolo.carlini@oracle.com>
1902
1903 * pt.c (check_explicit_specialization): Use cp_expr_loc_or_input_loc.
1904 (process_partial_specialization): Likewise.
1905 (convert_nontype_argument_function): Likewise.
1906 (invalid_tparm_referent_p): Likewise.
1907 (convert_template_argument): Likewise.
1908 (check_valid_ptrmem_cst_expr): Tidy.
1909
1910 2019-09-23 Jason Merrill <jason@redhat.com>
1911
1912 PR c++/91809 - bit-field and ellipsis.
1913 * call.c (convert_arg_to_ellipsis): Don't call decay_conversion for
1914 arithmetic arguments.
1915
1916 2019-09-23 Marek Polacek <polacek@redhat.com>
1917
1918 PR c++/91844 - Implement CWG 2352, Similar types and reference binding.
1919 * call.c (reference_related_p): Use similar_type_p instead of
1920 same_type_p.
1921 (reference_compatible_p): Update implementation to match CWG 2352.
1922 * cp-tree.h (similar_type_p): Declare.
1923 * typeck.c (similar_type_p): New.
1924
1925 2019-09-22 Marek Polacek <polacek@redhat.com>
1926
1927 PR c++/91819 - ICE with operator++ and enum.
1928 * call.c (build_new_op_1): Set arg2_type.
1929
1930 2019-09-17 Jason Merrill <jason@redhat.com>
1931
1932 * parser.c (cp_parser_statement): Handle [[likely]] on
1933 compound-statement.
1934
1935 2019-09-19 Jason Merrill <jason@redhat.com>
1936
1937 Revert:
1938 * call.c (build_new_op_1): Don't apply any standard conversions to
1939 the operands of a built-in operator. Don't suppress conversions in
1940 cp_build_unary_op.
1941 * typeck.c (cp_build_unary_op): Do integral promotions for enums.
1942
1943 2019-09-16 Paolo Carlini <paolo.carlini@oracle.com>
1944
1945 * decl.c (grokdeclarator): Use declspecs->locations and
1946 declarator->id_loc in a few error messages.
1947 * pt.c (finish_member_template_decl): Use DECL_SOURCE_LOCATION.
1948 (push_template_decl_real): Likewise.
1949
1950 2019-09-15 Jason Merrill <jason@redhat.com>
1951
1952 PR c++/30277 - int-width bit-field promotion.
1953 PR c++/33819 - long bit-field promotion.
1954 * typeck.c (cp_perform_integral_promotions): Handle large bit-fields
1955 properly. Handle 32-bit non-int bit-fields properly.
1956 (is_bitfield_expr_with_lowered_type): Don't look through NOP_EXPR.
1957
1958 PR c++/82165 - enum bitfields and operator overloading.
1959 * call.c (build_new_op_1): Use unlowered_expr_type.
1960
1961 * call.c (build_new_op_1): Don't apply any standard conversions to
1962 the operands of a built-in operator. Don't suppress conversions in
1963 cp_build_unary_op.
1964 * typeck.c (cp_build_unary_op): Do integral promotions for enums.
1965
1966 2019-09-15 Marek Polacek <polacek@redhat.com>
1967
1968 PR c++/91740 - ICE with constexpr call and ?: in ARRAY_REF.
1969 * pt.c (build_non_dependent_expr): Call build_non_dependent_expr for
1970 the first operand.
1971
1972 2019-09-15 Nathan Sidwell <nathan@acm.org>
1973
1974 * cp-tree.h (DECL_CLONED_FUNCTION_P): Reimplement using
1975 IDENTIFIER_CDTOR_P, correct documentation.
1976 (DECL_CLONED_FUNCTION): Directly access field.
1977 (decl_cloned_function_p): Delete.
1978 * class.c (decl_cloned_function_p): Delete.
1979 * pt.c (instantiate_template_1): Check DECL_CHAIN is a decl.
1980
1981 2019-09-11 Nathan Sidwell <nathan@acm.org>
1982
1983 * c-objcp-common.c (cp-objcp-common.c): Alphababetize and
1984 correctly mark all C++ nodes.
1985 * decl.c (cp_tree_node_structure): Alphabetize.
1986
1987 2019-09-10 Marek Polacek <polacek@redhat.com>
1988
1989 PR c++/91673 - ICE with noexcept in alias-declaration.
1990 * parser.c (CP_PARSER_FLAGS_DELAY_NOEXCEPT): New parser flag.
1991 (cp_parser_lambda_declarator_opt): Pass CP_PARSER_FLAGS_NONE to
1992 cp_parser_exception_specification_opt.
1993 (cp_parser_direct_declarator): Adjust a call to
1994 cp_parser_exception_specification_opt.
1995 (cp_parser_member_declaration): Pass CP_PARSER_FLAGS_DELAY_NOEXCEPT
1996 to cp_parser_declarator if not processing a friend or typedef
1997 declaration.
1998 (cp_parser_late_noexcept_specifier): Adjust a call to
1999 cp_parser_noexcept_specification_opt.
2000 (cp_parser_noexcept_specification_opt): New parameter for parser flags,
2001 drop the FRIEND_P parameter. Use the new parameter.
2002 (cp_parser_exception_specification_opt): Likewise.
2003 (cp_parser_transaction): Adjust a call to
2004 cp_parser_noexcept_specification_opt.
2005 (cp_parser_transaction_expression): Likewise.
2006
2007 2019-09-10 Marek Polacek <polacek@redhat.com>
2008
2009 PR c++/91705 - constexpr evaluation rejects ++/-- on floats.
2010 * constexpr.c (cxx_eval_increment_expression): Call fold_simple on
2011 the offset.
2012
2013 2019-09-10 Paolo Carlini <paolo.carlini@oracle.com>
2014
2015 * decl.c (has_designator_problem): Use cp_expr_loc_or_input_loc
2016 in error_at.
2017 (build_enumerator): Likewise.
2018 (cp_finish_decl): Use DECL_SOURCE_LOCATION.
2019 (grokdeclarator): Use id_loc in two error_at; change errror
2020 message about constinit together constexpr to use two ranges.
2021
2022 2019-09-09 Marek Polacek <polacek@redhat.com>
2023
2024 PR c++/84374 - diagnose invalid uses of decltype(auto).
2025 * decl.c (grokdeclarator): Diagnose wrong usage of decltype(auto) in
2026 a function declaration.
2027
2028 2019-09-06 Nathan Sidwell <nathan@acm.org>
2029
2030 PR c++/91125
2031 * cp-tree.h (IDENTIFIER_REPO_CHOSEN, DECL_REPO_AVAILABLE_P): Delete.
2032 (struct lang_decl_base): Remove repo_available_p.
2033 * decl.c (duplicate_decls): Don't copy DECL_REPO_AVAILABLE_P.
2034
2035 (Reserve TREE_LANG_FLAG_3 for modules.
2036 * cp-tree.h (DECL_CONSTRUCTION_VTABLE_P): Delete.
2037 (DECL_NON_TRIVIALLY_INITIALIZED_P): Move to TREE_LANG_FLAG_6.
2038 * class.c (build_ctor_vtbl_group): Don't set
2039 DECL_CONSTRUCTION_VTABLE_P.
2040 * decl2.c (determine_visibility_from_class): Don't check
2041 DECL_CONSTRUCTION_VTABLE_P anymore.
2042
2043 2019-09-06 Martin Liska <mliska@suse.cz>
2044
2045 PR c++/91125
2046 * Make-lang.in: Remove repo.o.
2047 * config-lang.in: Likewise.
2048 * cp-tree.h (init_repo): Remove declarations
2049 of repo-related functions.
2050 (repo_emit_p): Likewise.
2051 (repo_export_class_p): Likewise.
2052 (finish_repo): Likewise.
2053 * decl2.c (import_export_class): Always
2054 set -1 value/
2055 (mark_needed): Remove -frepo from comment.
2056 (import_export_decl): Similarly here.
2057 (c_parse_final_cleanups): Remove call of finish_repo.
2058 * lex.c (cxx_init): Remove call to init_repo.
2059 * optimize.c (can_alias_cdtor): Remove dead condition.
2060 * pt.c (push_template_decl_real): Update comment.
2061 (instantiate_decl): Remove dead code used for -frepo.
2062 * repo.c: Remove.
2063
2064 2019-09-05 Marek Polacek <polacek@redhat.com>
2065
2066 PR c++/91644 - ICE with constinit in function template.
2067 * decl.c (start_decl): Call retrofit_lang_decl for constinit variables.
2068 * pt.c (tsubst_expr): Pass LOOKUP_CONSTINIT down to cp_finish_decl for
2069 constinit variables.
2070
2071 2019-09-05 Nathan Sidwell <nathan@acm.org>
2072
2073 * cp-tree.h (DECL_VTABLE_OR_VTT_P): Forward to DECL_VIRTUAL_P.
2074
2075 2019-09-04 Marek Polacek <polacek@redhat.com>
2076
2077 * call.c (build_over_call): Remove -fdeduce-init-list implementation.
2078 * pt.c (unify): Likewise.
2079
2080 2019-09-01 Marek Polacek <polacek@redhat.com>
2081
2082 PR c++/91129 - wrong error with binary op in template argument.
2083 * typeck.c (warn_for_null_address): Use fold_for_warn instead of
2084 fold_non_dependent_expr.
2085 (cp_build_binary_op): Likewise.
2086
2087 2019-08-30 Jason Merrill <jason@redhat.com>
2088
2089 Add source location to TRAIT_EXPR.
2090 * cp-tree.h (TRAIT_EXPR_LOCATION): New.
2091 (struct tree_trait_expr): Add locus field.
2092 * parser.c (cp_parser_trait_expr): Pass trait_loc down.
2093 * pt.c (tsubst_copy_and_build) [TRAIT_EXPR]: Likewise.
2094 * semantics.c (finish_trait_expr): Add location parm.
2095 * tree.c (cp_expr_location): Handle TRAIT_EXPR.
2096
2097 2019-08-29 Paolo Carlini <paolo.carlini@oracle.com>
2098
2099 * decl.c (check_var_type): Add location_t parameter and use it.
2100 (grokdeclarator): Adjust call.
2101 * pt.c (tsubst_decl): Likewise.
2102 * cp-tree.h: Adjust declaration.
2103
2104 2019-08-28 Marek Polacek <polacek@redhat.com>
2105
2106 Implement P1152R4: Deprecating some uses of volatile.
2107 PR c++/91361
2108 * cp-gimplify.c (cp_fold): Set TREE_THIS_VOLATILE.
2109 * decl.c (grokdeclarator): Warn about a volatile-qualified structured
2110 binding and return type.
2111 (grokparms): Warn about a volatile-qualified function parameter.
2112 * expr.c (mark_use) <case MODIFY_EXPR>: Emit a -Wvolatile warning.
2113 * typeck.c (cp_build_unary_op): Emit a -Wvolatile warning for pre and
2114 post ++/-- on a volatile operand.
2115 (genericize_compound_lvalue): Use a better location. Don't lose
2116 TREE_THIS_VOLATILE.
2117 (cp_build_modify_expr): Emit a -Wvolatile warning for a compound
2118 assignment whose LHS is volatile-qualified. Build the assignment with
2119 a more precise location.
2120
2121 2019-08-28 Marek Polacek <polacek@redhat.com>
2122
2123 PR c++/91360 - Implement C++20 P1143R2: constinit.
2124 * cp-tree.h (TINFO_VAR_DECLARED_CONSTINIT): Define.
2125 (LOOKUP_CONSTINIT): Define.
2126 (enum cp_decl_spec): Add ds_constinit.
2127 * decl.c (check_tag_decl): Give an error for constinit in type
2128 declarations.
2129 (check_initializer): Also check LOOKUP_CONSTINIT.
2130 (cp_finish_decl): Add checking for a constinit declaration. Set
2131 TINFO_VAR_DECLARED_CONSTINIT.
2132 (grokdeclarator): Add checking for a declaration with the constinit
2133 specifier.
2134 * lex.c (init_reswords): Handle D_CXX20.
2135 * parser.c (cp_lexer_get_preprocessor_token): Pass a better location
2136 to warning_at. Warn about C++20 keywords.
2137 (cp_keyword_starts_decl_specifier_p): Handle RID_CONSTINIT.
2138 (cp_parser_diagnose_invalid_type_name): Add an inform about constinit.
2139 (cp_parser_decomposition_declaration): Maybe pass LOOKUP_CONSTINIT to
2140 cp_finish_decl.
2141 (cp_parser_decl_specifier_seq): Handle RID_CONSTINIT.
2142 (cp_parser_init_declarator): Maybe pass LOOKUP_CONSTINIT to
2143 cp_finish_decl.
2144 (set_and_check_decl_spec_loc): Add "constinit".
2145 * pt.c (tsubst_decl): Set TINFO_VAR_DECLARED_CONSTINIT.
2146 (instantiate_decl): Maybe pass LOOKUP_CONSTINIT to cp_finish_decl.
2147 * typeck2.c (store_init_value): If a constinit variable wasn't
2148 initialized using a constant initializer, give an error.
2149
2150 2019-08-28 Nathan Sidwell <nathan@acm.org>
2151
2152 PR c++/90613
2153 * name-lookup.c (cp_emit_debug_info): Check for builtins during
2154 overload iteration.
2155
2156 2019-08-27 Marek Polacek <polacek@redhat.com>
2157
2158 PR c++/81676 - bogus -Wunused warnings in constexpr if.
2159 * semantics.c (maybe_mark_exp_read_r): New function.
2160 (finish_if_stmt): Call it on THEN_CLAUSE and ELSE_CLAUSE.
2161
2162 PR c++/91428 - warn about std::is_constant_evaluated in if constexpr.
2163 * cp-tree.h (decl_in_std_namespace_p): Declare.
2164 * semantics.c (is_std_constant_evaluated_p): New.
2165 (finish_if_stmt_cond): Warn about "std::is_constant_evaluated ()" in
2166 an if-constexpr.
2167 * typeck.c (decl_in_std_namespace_p): No longer static.
2168
2169 2019-08-26 Jason Merrill <jason@redhat.com>
2170
2171 * decl.c (duplicate_decls): Always merge DECL_DECLARED_CONSTEXPR_P.
2172
2173 2019-08-26 Marek Polacek <polacek@redhat.com>
2174
2175 PR c++/91545 - ICE in constexpr store evaluation.
2176 * constexpr.c (cxx_eval_store_expression): Check FIELD_DECL instead
2177 of DECL_P.
2178
2179 2019-08-24 Nathan Sidwell <nathan@acm.org>
2180
2181 * class.c (check_for_overrides): Conversion operators need
2182 checking too.
2183
2184 2019-08-24 Paolo Carlini <paolo.carlini@oracle.com>
2185
2186 * semantics.c (finish_switch_cond): Improve error message location.
2187
2188 2019-08-23 Jason Merrill <jason@redhat.com>
2189
2190 * decl2.c (decl_dependent_p): New.
2191 (mark_used): Check it instead of just processing_template_decl.
2192
2193 2019-08-23 Jason Merrill <jason@redhat.com>
2194
2195 * parser.c (cp_parser_nested_name_specifier_opt): Avoid redundant
2196 error.
2197
2198 2019-08-23 Marek Polacek <polacek@redhat.com>
2199
2200 PR c++/91521 - wrong error with operator->.
2201 * decl.c (grokdeclarator): Return error_mark_node for an invalid
2202 trailing return type.
2203
2204 PR c++/79817 - attribute deprecated on namespace.
2205 * cp-tree.h (cp_warn_deprecated_use_scopes): Declare.
2206 * decl.c (grokdeclarator): Call cp_warn_deprecated_use_scopes.
2207 (type_is_deprecated): Likewise.
2208 * decl2.c (cp_warn_deprecated_use_scopes): New function.
2209 * name-lookup.c (handle_namespace_attrs): Handle attribute deprecated.
2210 * parser.c (cp_parser_namespace_alias_definition): Call
2211 cp_warn_deprecated_use_scopes.
2212 (cp_parser_using_declaration): Likewise.
2213 (cp_parser_using_directive): Likewise.
2214 * semantics.c (finish_id_expression_1): Likewise.
2215
2216 2019-08-23 Nathan Sidwell <nathan@acm.org>
2217
2218 * class.c (check_for_override): Checking IDENTIFIER_VIRTUAL_P is
2219 sufficient, reorder DECL_OVERRIDE_P check.
2220
2221 2019-08-23 Iain Sandoe <iain@sandoe.co.uk>
2222
2223 PR pch/61250
2224 * parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch ()
2225 after determining that the first token is not
2226 PRAGMA_GCC_PCH_PREPROCESS.
2227
2228 2019-08-22 Marek Polacek <polacek@redhat.com>
2229
2230 PR c++/91304 - prefix attributes ignored in condition.
2231 * parser.c (cp_parser_condition): Handle prefix attributes.
2232
2233 2019-08-21 Richard Sandiford <richard.sandiford@arm.com>
2234
2235 PR c++/91505
2236 * decl.c (duplicate_decls): Call copy_attributes_to_builtin inside
2237 the BUILT_IN_NORMAL block rather than afterward.
2238
2239 2019-08-19 Marek Polacek <polacek@redhat.com>
2240
2241 PR c++/91264 - detect modifying const objects in constexpr.
2242 * constexpr.c (modifying_const_object_error): New function.
2243 (cxx_eval_call_expression): Set TREE_READONLY on a CONSTRUCTOR of
2244 a const-qualified object after it's been fully constructed.
2245 (modifying_const_object_p): New function.
2246 (cxx_eval_store_expression): Detect modifying a const object
2247 during constant expression evaluation.
2248 (cxx_eval_increment_expression): Use a better location when building
2249 up the store.
2250 (cxx_eval_constant_expression) <case DECL_EXPR>: Mark a constant
2251 object's constructor TREE_READONLY.
2252
2253 2019-08-15 Jason Merrill <jason@redhat.com>
2254
2255 PR c++/90393 - ICE with thow in ?:
2256
2257 PR c++/64372, DR 1560 - Gratuitous lvalue-to-rvalue conversion in ?:
2258 * tree.c (lvalue_kind): Handle throw in one arm.
2259 * typeck.c (rationalize_conditional_expr): Likewise.
2260 (cp_build_modify_expr): Likewise.
2261
2262 2019-08-14 Jason Merrill <jason@redhat.com>
2263
2264 Implement P0848R3, Conditionally Trivial Special Member Functions.
2265 * tree.c (special_memfn_p): New.
2266 * class.c (add_method): When overloading, hide ineligible special
2267 member fns.
2268 (check_methods): Set TYPE_HAS_COMPLEX_* here.
2269 * decl.c (grok_special_member_properties): Not here.
2270 * name-lookup.c (push_class_level_binding_1): Move overloaded
2271 functions case down, accept FUNCTION_DECL as target_decl.
2272
2273 2019-08-14 Jonathan Wakely <jwakely@redhat.com>
2274
2275 PR c++/91436
2276 * name-lookup.c (get_std_name_hint): Fix min_dialect field for
2277 complex_literals and make_unique entries.
2278
2279 2019-08-14 Jakub Jelinek <jakub@redhat.com>
2280 Marek Polacek <polacek@redhat.com>
2281
2282 PR c++/91391 - bogus -Wcomma-subscript warning.
2283 * parser.c (cp_parser_postfix_open_square_expression): Don't warn about
2284 a deprecated comma here. Pass warn_comma_subscript down to
2285 cp_parser_expression.
2286 (cp_parser_expression): New bool parameter. Warn about uses of a comma
2287 operator within a subscripting expression.
2288 (cp_parser_skip_to_closing_square_bracket): Revert to pre-r274121 state.
2289 (cp_parser_skip_to_closing_square_bracket_1): Remove.
2290
2291 2019-08-14 Jonathan Wakely <jwakely@redhat.com>
2292
2293 * name-lookup.c (get_std_name_hint): Add more entries.
2294
2295 2019-08-14 Paolo Carlini <paolo.carlini@oracle.com>
2296
2297 * decl2.c (grok_array_decl): Use the location of the open square
2298 bracket in error message about invalid types.
2299
2300 2019-08-14 Paolo Carlini <paolo.carlini@oracle.com>
2301
2302 * decl.c (grokdeclarator): Check here for typedef a function
2303 definition or a member function definition.
2304 (start_function): Adjust.
2305 (grokmethod): Likewise.
2306
2307 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
2308
2309 PR middle-end/91421
2310 * decl.c (duplicate_decls): Use copy_decl_built_in_function.
2311 * pt.c (declare_integer_pack): Use set_decl_built_in_function.
2312
2313 2019-08-13 Marek Polacek <polacek@redhat.com>
2314
2315 PR c++/90473 - wrong code with nullptr in default argument.
2316 * call.c (null_ptr_cst_p): Update quote from the standard.
2317 * decl.c (check_default_argument): Don't return nullptr when the arg
2318 has side-effects.
2319
2320 2019-08-13 Marek Polacek <polacek@redhat.com>
2321
2322 * cp-tree.h (DECL_MUTABLE_P): Use FIELD_DECL_CHECK.
2323
2324 2019-08-10 Jakub Jelinek <jakub@redhat.com>
2325
2326 * parser.c (cp_parser_omp_clause_name): Parse device_type.
2327 (cp_parser_omp_clause_device_type): New function.
2328 (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DEVICE_TYPE.
2329 (OMP_DECLARE_TARGET_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DEVICE_TYPE.
2330 (cp_parser_omp_declare_target): Handle device_type clauses. Remove
2331 diagnostics for declare target with clauses nested in clause-less
2332 declare target declaration-definition-seq.
2333 * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_DEVICE_TYPE.
2334
2335 2019-08-09 Jakub Jelinek <jakub@redhat.com>
2336
2337 * parser.c (check_no_duplicate_clause): Simplify using
2338 omp_find_clause.
2339 (cp_parser_omp_clause_if): Fix up printing of target {enter,exit} data
2340 directive name modifiers.
2341
2342 PR c/91401
2343 * parser.c (cp_parser_omp_clause_dist_schedule): Comment out the
2344 check_no_duplicate_clause call, instead emit a warning for duplicate
2345 dist_schedule clauses.
2346
2347 2019-08-08 Paolo Carlini <paolo.carlini@oracle.com>
2348
2349 * decl.c (grokdeclarator): Use id_loc and EXPR_LOCATION in
2350 a few error messages.
2351
2352 2019-08-08 Marek Polacek <polacek@redhat.com>
2353
2354 PR c++/87519 - bogus warning with -Wsign-conversion.
2355 * typeck.c (cp_build_binary_op): Use same_type_p instead of comparing
2356 the types directly.
2357
2358 * constexpr.c (inline_asm_in_constexpr_error): New.
2359 (cxx_eval_constant_expression) <case ASM_EXPR>: Call it.
2360 (potential_constant_expression_1) <case ASM_EXPR>: Likewise.
2361
2362 2019-08-08 Jakub Jelinek <jakub@redhat.com>
2363
2364 * semantics.c (finish_omp_clauses): For C_ORT_OMP
2365 OMP_CLAUSE_USE_DEVICE_* clauses use oacc_reduction_head bitmap
2366 instead of generic_head to track duplicates.
2367
2368 2019-08-07 Marek Polacek <polacek@redhat.com>
2369
2370 PR c++/81429 - wrong parsing of constructor with C++11 attribute.
2371 * parser.c (cp_parser_constructor_declarator_p): Handle the scenario
2372 when a parameter declaration begins with [[attribute]].
2373
2374 2019-08-07 Marek Polacek <polacek@redhat.com>
2375
2376 PR c++/91346 - Implement P1668R1, allow unevaluated asm in constexpr.
2377 * constexpr.c (cxx_eval_constant_expression): Handle ASM_EXPR.
2378 (potential_constant_expression_1) <case ASM_EXPR>: Allow.
2379 * cp-tree.h (finish_asm_stmt): Adjust.
2380 * parser.c (cp_parser_asm_definition): Grab the locaion of "asm" and
2381 use it. Change an error to a pedwarn. Allow asm in C++2a, warn
2382 otherwise.
2383 * pt.c (tsubst_expr): Pass a location down to finish_asm_stmt.
2384 * semantics.c (finish_asm_stmt): New location_t parameter. Use it.
2385
2386 2019-08-07 Jakub Jelinek <jakub@redhat.com>
2387
2388 * parser.c (cp_parser_omp_clause_name): Parse use_device_addr clause.
2389 (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_USE_DEVICE_ADDR.
2390 (OMP_TARGET_DATA_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_USE_DEVICE_ADDR.
2391 (cp_parser_omp_target_data): Handle PRAGMA_OMP_CLAUSE_USE_DEVICE_ADDR
2392 like PRAGMA_OMP_CLAUSE_USE_DEVICE_PTR, adjust diagnostics about no
2393 map or use_device_* clauses.
2394 * semantics.c (finish_omp_clauses): For OMP_CLAUSE_USE_DEVICE_PTR
2395 in OpenMP, require pointer or reference to pointer type rather than
2396 pointer or array or reference to pointer or array type. Handle
2397 OMP_CLAUSE_USE_DEVICE_ADDR.
2398 * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_USE_DEVICE_ADDR.
2399
2400 2019-08-06 Jason Merrill <jason@redhat.com>
2401
2402 PR c++/91378 - ICE with noexcept and auto return type.
2403 * pt.c (maybe_instantiate_noexcept): push_to_top_level.
2404
2405 2019-08-06 Paolo Carlini <paolo.carlini@oracle.com>
2406
2407 * decl.c (check_array_designated_initializer): Use
2408 cp_expr_loc_or_input_loc in one place.
2409
2410 2019-08-06 Jakub Jelinek <jakub@redhat.com>
2411
2412 * parser.c (cp_parser_omp_for_loop): For OMP_LOOP, ignore parallel
2413 clauses and predetermine iterator as lastprivate.
2414 * semantics.c (handle_omp_for_class_iterator): Use
2415 OMP_CLAUSE_LASTPRIVATE_LOOP_IV instead of
2416 OMP_CLAUSE_LASTPRIVATE_TASKLOOP_IV, set it for lastprivate also
2417 on OMP_LOOP construct. If a clause is missing for class iterator
2418 on OMP_LOOP, add firstprivate clause, and if there is private
2419 clause, turn it into firstprivate too.
2420 (finish_omp_for): Formatting fix. For OMP_LOOP, adjust
2421 OMP_CLAUSE_LASTPRIVATE_LOOP_IV clause CP_CLAUSE_INFO, so that it
2422 uses copy ctor instead of default ctor.
2423 * cp-gimplify.c (cp_gimplify_expr): Handle OMP_LOOP like
2424 OMP_DISTRIBUTE etc.
2425 (cp_fold_r): Likewise.
2426 (cp_genericize_r): Likewise.
2427 (cxx_omp_finish_clause): Also finish lastprivate clause with
2428 OMP_CLAUSE_LASTPRIVATE_LOOP_IV flag.
2429 * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_BIND.
2430 (tsubst_omp_for_iterator): For OMP_LOOP, ignore parallel
2431 clauses and predetermine iterator as lastprivate.
2432 * constexpr.c (potential_constant_expression_1): Handle OMP_LOOP
2433 like OMP_DISTRIBUTE etc.
2434
2435 2019-08-05 Marek Polacek <polacek@redhat.com>
2436
2437 DR 2413 - typename in conversion-function-ids.
2438 * parser.c (cp_parser_conversion_type_id): Call
2439 cp_parser_type_specifier_seq with CP_PARSER_FLAGS_TYPENAME_OPTIONAL
2440 instead of CP_PARSER_FLAGS_NONE.
2441
2442 2019-08-05 Paolo Carlini <paolo.carlini@oracle.com>
2443
2444 * cp-tree.h (cp_expr_loc_or_input_loc): New.
2445 (cxx_incomplete_type_diagnostic): Use it.
2446 * call.c (build_converted_constant_expr_internal, convert_like_real,
2447 convert_arg_to_ellipsis, convert_for_arg_passing, build_over_call,
2448 build_cxx_call, perform_implicit_conversion_flags,
2449 initialize_reference): Likewise.
2450 * constexpr.c (cxx_eval_internal_function, cxx_eval_call_expression,
2451 eval_and_check_array_index, cxx_eval_store_expression,
2452 cxx_eval_statement_list, cxx_eval_loop_expr,
2453 cxx_eval_constant_expression, potential_constant_expression_1):
2454 Likewise.
2455 * constraint.cc (check_for_logical_overloads,
2456 satisfy_predicate_constraint): Likewise.
2457 * cp-gimplify.c (cp_gimplify_expr): Likewise.
2458 * cvt.c (cp_convert_to_pointer, convert_to_reference,
2459 cp_convert_and_check, ocp_convert, maybe_warn_nodiscard): Likewise.
2460 * decl.c (pop_switch): Likewise.
2461 * decl2.c (delete_sanity): Likewise.
2462 * error.c (location_of): Likewise.
2463 * init.c (maybe_warn_list_ctor, build_aggr_init,
2464 warn_placement_new_too_small, build_new_1, build_vec_init): Likewise.
2465 * lex.c (unqualified_name_lookup_error): Likewise.
2466 * parser.c (cp_parser_initializer_list, cp_parser_omp_for_cond):
2467 Likewise.
2468 * pt.c (check_for_bare_parameter_packs, check_valid_ptrmem_cst_expr,
2469 unify_arg_conversion, convert_nontype_argument,
2470 tsubst_copy_and_build, resolve_typename_type): Likewise.
2471 * semantics.c (maybe_convert_cond, finish_call_expr,
2472 cp_build_vec_convert): Likewise.
2473 * typeck.c (decay_conversion, rationalize_conditional_expr,
2474 cp_build_unary_op, build_x_compound_expr_from_list,
2475 maybe_warn_about_returning_address_of_local,
2476 maybe_warn_pessimizing_move): Likewise.
2477 * typeck2.c (check_narrowing, digest_init_r,
2478 process_init_constructor_array): Likewise.
2479
2480 2019-08-05 Tom Honermann <tom@honermann.net>
2481
2482 * parser.c (cp_parser_template_declaration_after_parameters): Enable
2483 class template argument deduction for non-type template parameters
2484 in literal operator templates.
2485
2486 2019-08-05 Marek Polacek <polacek@redhat.com>
2487
2488 PR c++/91338 - Implement P1161R3: Deprecate a[b,c].
2489 * parser.c (cp_parser_postfix_open_square_expression): Warn about uses
2490 of a comma operator within a subscripting expression.
2491 (cp_parser_skip_to_closing_square_bracket_1): New function, made out
2492 of...
2493 (cp_parser_skip_to_closing_square_bracket): ...this.
2494
2495 2019-08-05 Jason Merrill <jason@redhat.com>
2496
2497 * semantics.c (force_paren_expr): Preserve location.
2498
2499 2019-08-02 Marek Polacek <polacek@redhat.com>
2500
2501 PR c++/91230 - wrong error with __PRETTY_FUNCTION__ and generic lambda.
2502 * pt.c (value_dependent_expression_p): Consider __PRETTY_FUNCTION__
2503 inside a template function value-dependent.
2504
2505 2019-08-02 Paolo Carlini <paolo.carlini@oracle.com>
2506
2507 * tree.c (handle_nodiscard_attribute): Do not warn about nodiscard
2508 applied to a constructor.
2509
2510 2019-08-02 Martin Liska <mliska@suse.cz>
2511
2512 * decl.c (grok_op_properties):
2513 Mark DECL_SET_IS_OPERATOR_DELETE for user-provided delete operators.
2514
2515 2019-08-01 Martin Sebor <msebor@redhat.com>
2516
2517 PR c++/90947
2518 * decl.c (reshape_init_array_1): Avoid truncating initializer
2519 lists containing string literals.
2520
2521 2019-08-01 Marek Polacek <polacek@redhat.com>
2522
2523 PR c++/90805 - detect narrowing in case values.
2524 * decl.c (case_conversion): Detect narrowing in case values.
2525
2526 2019-07-31 Paolo Carlini <paolo.carlini@oracle.com>
2527
2528 * decl2.c (delete_sanity): Improve diagnostic locations, use
2529 cp_expr_loc_or_loc in four places.
2530
2531 2019-07-31 Jason Merrill <jason@redhat.com>
2532
2533 PR c++/90538 - multiple expansions of capture packs
2534 * cp-tree.h (DECLTYPE_FOR_INIT_CAPTURE): Remove.
2535 * lambda.c (add_capture): Copy parameter packs from init.
2536 (lambda_capture_field_type): Always use auto for init-capture.
2537 * pt.c (uses_parameter_packs): Return tree.
2538 (tsubst) [DECLTYPE_TYPE]: Remove init-capture handling.
2539 (gen_elem_of_pack_expansion_instantiation): Don't push
2540 local_specialization_stack.
2541 (prepend_one_capture): New.
2542 (tsubst_lambda_expr): Use it. Don't touch local_specializations.
2543 (do_auto_deduction): Avoid redundant error.
2544
2545 Fix copy_node of TEMPLATE_INFO.
2546 * cp-tree.h (struct tree_template_info): Use tree_base instead of
2547 tree_common. Add tmpl and args fields.
2548 (TI_TEMPLATE, TI_ARGS): Adjust.
2549
2550 2019-07-30 Martin Liska <mliska@suse.cz>
2551
2552 PR tree-optimization/91270
2553 * tree-ssa-dce.c (propagate_necessity): Mark 2nd argument
2554 of delete operator as needed.
2555
2556 2019-07-25 Martin Liska <mliska@suse.cz>
2557 Dominik Infuhr <dominik.infuehr@theobroma-systems.com>
2558
2559 PR c++/23383
2560 * decl.c (cxx_init_decl_processing): Mark delete operators
2561 with DECL_SET_IS_OPERATOR_DELETE.
2562
2563 2019-07-25 Martin Liska <mliska@suse.cz>
2564
2565 * decl.c (duplicate_decls): Use new macros
2566 (e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).
2567 (cxx_init_decl_processing): Likewise.
2568 (grok_op_properties): Likewise.
2569 * parser.c (cp_parser_lambda_declarator_opt): Likewise.
2570
2571 2019-07-24 Martin Sebor <msebor@redhat.com>
2572
2573 PR driver/80545
2574 * decl.c (finish_function): Use lang_mask.
2575
2576 2019-07-20 Jason Merrill <jason@redhat.com>
2577
2578 * cp-tree.h (ovl_iterator::using_p): A USING_DECL by itself was also
2579 introduced by a using-declaration.
2580
2581 2019-07-20 Jason Merrill <jason@redhat.com>
2582
2583 Reduce memory consumption for push/pop_access_scope.
2584 * name-lookup.c (leave_scope): Do add class levels other than
2585 previous_class_level to free_binding_level.
2586 (invalidate_class_lookup_cache): Move from class.c, add to
2587 free_binding_level.
2588 * pt.c (saved_access_scope): Change from list to vec.
2589
2590 2019-07-20 Jakub Jelinek <jakub@redhat.com>
2591
2592 * cp-tree.h (OMP_FOR_GIMPLIFYING_P): Use OMP_LOOPING_CHECK
2593 instead of OMP_LOOP_CHECK.
2594 * parser.c (cp_parser_omp_clause_name): Handle bind clause.
2595 (cp_parser_omp_clause_bind): New function.
2596 (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_BIND.
2597 (OMP_LOOP_CLAUSE_MASK): Define.
2598 (cp_parser_omp_loop): New function.
2599 (cp_parser_omp_parallel, cp_parser_omp_teams): Handle parsing of
2600 loop combined with parallel or teams.
2601 (cp_parser_omp_construct): Handle PRAGMA_OMP_LOOP.
2602 (cp_parser_pragma): Likewise.
2603 * pt.c (tsubst_expr): Handle OMP_LOOP.
2604 * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_BIND.
2605
2606 2019-07-19 Jason Merrill <jason@redhat.com>
2607
2608 PR c++/90101 - dependent class non-type parameter.
2609 * pt.c (invalid_nontype_parm_type_p): Check for dependent class type.
2610
2611 2019-07-18 Jason Merrill <jason@redhat.com>
2612
2613 PR c++/90098 - partial specialization and class non-type parms.
2614 PR c++/90099
2615 PR c++/90101
2616 * call.c (build_converted_constant_expr_internal): Don't copy.
2617 * pt.c (process_partial_specialization): Allow VIEW_CONVERT_EXPR
2618 around class non-type parameter.
2619 (unify) [TEMPLATE_PARM_INDEX]: Ignore cv-quals.
2620
2621 2019-07-16 Jason Merrill <jason@redhat.com>
2622
2623 * parser.c (make_location): Add overload taking cp_lexer* as last
2624 parameter.
2625
2626 * parser.c (cp_parser_simple_type_specifier): Separate tentative
2627 parses for optional type-spec and CTAD.
2628
2629 * parser.c (cp_parser_nested_name_specifier_opt): If the token is
2630 already CPP_NESTED_NAME_SPECIFIER, leave it alone.
2631
2632 2019-07-12 Jakub Jelinek <jakub@redhat.com>
2633
2634 * parser.c (cp_parser_omp_clause_name): Handle order clause.
2635 (cp_parser_omp_clause_order): New function.
2636 (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_ORDER.
2637 (OMP_SIMD_CLAUSE_MASK, OMP_FOR_CLAUSE_MASK): Add
2638 PRAGMA_OMP_CLAUSE_ORDER.
2639 * semantics.c (finish_omp_clauses): Handle OMP_CLAUSE_ORDER.
2640 * pt.c (tsubst_omp_clauses): Likewise.
2641
2642 2019-07-10 Paolo Carlini <paolo.carlini@oracle.com>
2643
2644 * decl.c (get_type_quals,
2645 smallest_type_location (const cp_decl_specifier_seq*)): New.
2646 (check_tag_decl): Use smallest_type_location in error_at about
2647 multiple types in one declaration.
2648 (grokdeclarator): Use locations[ds_complex] in error_at about
2649 complex invalid; use locations[ds_storage_class] in error_at
2650 about static cdtor; use id_loc in error_at about flexible
2651 array member in union; use get_type_quals.
2652
2653 2019-07-09 Martin Sebor <msebor@redhat.com>
2654
2655 PR c++/61339
2656 * cp-tree.h: Change class-key of PODs to struct and others to class.
2657 * search.c: Same.
2658 * semantics.c (finalize_nrv_r): Same.
2659
2660 2019-07-09 Martin Sebor <msebor@redhat.com>
2661
2662 PR c++/61339
2663 * constexpr.c (cxx_eval_call_expression): Change class-key from class
2664 to struct and vice versa to match convention and avoid -Wclass-is-pod
2665 and -Wstruct-no-pod.
2666 * constraint.cc (get_concept_definition): Same.
2667 * cp-tree.h: Same.
2668 * cxx-pretty-print.h: Same.
2669 * error.c: Same.
2670 * logic.cc (term_list::replace): Same.
2671 * name-lookup.c (find_local_binding): Same.
2672 * pt.c (tsubst_binary_right_fold): Same.
2673 * search.c (field_accessor_p): Same.
2674 * semantics.c (expand_or_defer_fn): Same.
2675
2676 2019-07-08 Jakub Jelinek <jakub@redhat.com>
2677
2678 PR c++/91110
2679 * decl2.c (cp_omp_mappable_type_1): Don't emit any note for
2680 error_mark_node type.
2681
2682 2019-07-05 Jakub Jelinek <jakub@redhat.com>
2683
2684 PR c++/67184
2685 PR c++/69445
2686 * call.c (build_new_method_call_1): Remove set but not used variable
2687 binfo.
2688
2689 2019-07-05 Paolo Carlini <paolo.carlini@oracle.com>
2690
2691 PR c++/67184 (again)
2692 PR c++/69445
2693 * call.c (build_over_call): Devirtualize user-defined operators
2694 coming from a base too.
2695 (build_new_method_call_1): Do not devirtualize here.
2696
2697 2019-07-04 Marek Polacek <polacek@redhat.com>
2698
2699 DR 1813
2700 PR c++/83374 - __is_standard_layout wrong for a class with repeated
2701 bases.
2702 * class.c (check_bases): Set CLASSTYPE_NON_STD_LAYOUT for a class if
2703 CLASSTYPE_REPEATED_BASE_P is true.
2704
2705 2019-07-04 Andrew Stubbs <ams@codesourcery.com>
2706
2707 * cp-tree.h (cp_omp_emit_unmappable_type_notes): New prototype.
2708 * decl.c (cp_finish_decl): Call cp_omp_emit_unmappable_type_notes.
2709 * decl2.c (cp_omp_mappable_type): Move contents to ...
2710 (cp_omp_mappable_type_1): ... here and add note output.
2711 (cp_omp_emit_unmappable_type_notes): New function.
2712 * semantics.c (finish_omp_clauses): Call
2713 cp_omp_emit_unmappable_type_notes in four places.
2714
2715 2019-07-03 Martin Liska <mliska@suse.cz>
2716
2717 * call.c (build_new_op_1): Remove dead assignemts.
2718 * typeck.c (cp_build_binary_op): Likewise.
2719
2720 2019-06-27 Jason Merrill <jason@redhat.com>
2721
2722 PR c++/55442 - memory-hog with highly recursive constexpr.
2723 * constexpr.c (push_cx_call_context): Return depth.
2724 (cxx_eval_call_expression): Don't cache past constexpr_cache_depth.
2725
2726 2019-06-27 Jan Hubicka <jh@suse.cz>
2727
2728 * class.c (layout_class_type): Set TYPE_CXX_ODR_P for as-base
2729 type copy.
2730
2731 2019-06-27 Martin Liska <mliska@suse.cz>
2732
2733 * class.c (adjust_clone_args): Remove obviously
2734 dead assignments.
2735 (dump_class_hierarchy_r): Likewise.
2736 * decl.c (check_initializer): Likewise.
2737 * parser.c (cp_parser_lambda_expression): Likewise.
2738 * pt.c (unify_bound_ttp_args): Likewise.
2739 (convert_template_argument): Likewise.
2740 * rtti.c (build_headof): Likewise.
2741 * typeck.c (convert_for_initialization): Likewise.
2742
2743 2019-06-25 Jason Merrill <jason@redhat.com>
2744
2745 PR c++/70462 - unnecessary base ctor variant with final.
2746 * optimize.c (populate_clone_array): Skip base variant if
2747 CLASSTYPE_FINAL.
2748 (maybe_clone_body): We don't need an alias if we are only defining
2749 one clone.
2750
2751 * class.c (resolves_to_fixed_type_p): Check CLASSTYPE_FINAL.
2752
2753 2019-06-25 Jakub Jelinek <jakub@redhat.com>
2754
2755 PR c++/90969
2756 * constexpr.c (cxx_eval_array_reference): Don't look through VCE from
2757 vector type if lval.
2758
2759 2019-06-25 Jozef Lawrynowicz <jozef.l@mittosystems.com>
2760
2761 * lex.c (init_reswords): Create keyword for "__intN__" type.
2762 * cp-tree.h (cp_decl_specifier_seq): New bitfield "int_n_alt".
2763 * decl.c (grokdeclarator): Don't pedwarn about "__intN" ISO
2764 C incompatibility if alternate "__intN__" form is used.
2765 * parser.c (cp_parser_simple_type_specifier): Set
2766 decl_specs->int_n_alt if "__intN__" form is used.
2767
2768 2019-06-24 Jan Hubicka <jh@suse.cz>
2769
2770 * lex.c (cxx_make_type): Set TYPE_CXX_ODR_P.
2771
2772 2019-06-24 Jason Merrill <jason@redhat.com>
2773
2774 * class.c (layout_class_type): Don't use a separate
2775 CLASSTYPE_AS_BASE if it's the same size.
2776
2777 2019-06-23 Marek Polacek <polacek@redhat.com>
2778
2779 * call.c (convert_default_arg): Use DEFERRED_PARSE instead of
2780 DEFAULT_ARG.
2781 * cp-objcp-common.c (cp_tree_size): Likewise. Use tree_deferred_parse
2782 instead of tree_default_arg.
2783 * cp-tree.def: Rename DEFAULT_ARG to DEFERRED_PARSE.
2784 * cp-tree.h: Rename DEFARG_TOKENS to DEFPARSE_TOKENS. Rename
2785 DEFARG_INSTANTIATIONS to DEFPARSE_INSTANTIATIONS. Rename
2786 tree_default_arg to tree_deferred_parse.
2787 (UNPARSED_NOEXCEPT_SPEC_P): Use DEFERRED_PARSE instead of DEFAULT_ARG.
2788 (cp_tree_node_structure_enum): Rename TS_CP_DEFAULT_ARG to
2789 TS_CP_DEFERRED_PARSE.
2790 (lang_tree_node): Rename tree_default_arg to tree_deferred_parse.
2791 Rename default_arg to deferred_parse. Use TS_CP_DEFERRED_PARSE instead
2792 of TS_CP_DEFAULT_ARG.
2793 (defarg_location): Remove declaration.
2794 (defparse_location): Add declaration.
2795 * decl.c (grokfndecl): Use DEFERRED_PARSE instead of DEFAULT_ARG.
2796 Call defparse_location instead of defarg_location.
2797 (check_default_argument): Use DEFERRED_PARSE instead of DEFAULT_ARG.
2798 (cp_tree_node_structure): Likewise. Use TS_CP_DEFERRED_PARSE instead
2799 of TS_CP_DEFAULT_ARG.
2800 * decl2.c (grokfield): Use DEFERRED_PARSE instead of DEFAULT_ARG.
2801 * error.c (dump_expr): Likewise.
2802 (location_of): Likewise.
2803 * init.c (get_nsdmi): Likewise.
2804 * parser.c (cp_parser_save_noexcept): Likewise. Use DEFPARSE_TOKENS
2805 instead of DEFARG_TOKENS.
2806 (cp_parser_late_noexcept_specifier): Likewise.
2807 (cp_parser_late_parse_one_default_arg): Use DEFPARSE_TOKENS instead
2808 of DEFARG_TOKENS.
2809 (cp_parser_late_parsing_default_args): Use DEFERRED_PARSE instead of
2810 DEFAULT_ARG. Use DEFPARSE_INSTANTIATIONS instead of
2811 DEFARG_INSTANTIATIONS.
2812 (cp_parser_cache_defarg): Use DEFERRED_PARSE instead of DEFAULT_ARG.
2813 Use DEFPARSE_TOKENS instead of DEFARG_TOKENS. Use
2814 DEFPARSE_INSTANTIATIONS instead of DEFARG_INSTANTIATIONS.
2815 (defparse_location): Renamed from defarg_location.
2816 * pt.c (tsubst_default_argument): Use DEFERRED_PARSE instead of
2817 DEFAULT_ARG.
2818 (tsubst_arg_types): Likewise.
2819 (dependent_type_p_r): Likewise.
2820 * tree.c (cp_tree_equal): Likewise.
2821 (cp_walk_subtrees): Likewise.
2822 * typeck.c (convert_arguments): Likewise.
2823
2824 2019-06-22 Marek Polacek <polacek@redhat.com>
2825
2826 PR c++/86476 - noexcept-specifier is a complete-class context.
2827 PR c++/52869
2828 * cp-tree.def (DEFAULT_ARG): Update commentary.
2829 * cp-tree.h (UNPARSED_NOEXCEPT_SPEC_P): New macro.
2830 (tree_default_arg): Use tree_base instead of tree_common.
2831 (do_push_parm_decls, maybe_check_overriding_exception_spec): Declare.
2832 * decl.c (do_push_parm_decls): New function, broken out of...
2833 (store_parm_decls): ...here. Call it.
2834 * except.c (nothrow_spec_p): Accept DEFAULT_ARG in the assert.
2835 * parser.c (cp_parser_noexcept_specification_opt,
2836 cp_parser_late_noexcept_specifier, noexcept_override_late_checks):
2837 Forward-declare.
2838 (unparsed_noexcepts): New macro.
2839 (push_unparsed_function_queues): Update initializer.
2840 (cp_parser_direct_declarator): Pass FRIEND_P to
2841 cp_parser_exception_specification_opt.
2842 (inject_parm_decls): New.
2843 (pop_injected_parms): New.
2844 (cp_parser_class_specifier_1): Implement delayed parsing of
2845 noexcept-specifiers.
2846 (cp_parser_save_noexcept): New.
2847 (cp_parser_late_noexcept_specifier): New.
2848 (noexcept_override_late_checks): New.
2849 (cp_parser_noexcept_specification_opt): Add FRIEND_P parameter. Call
2850 cp_parser_save_noexcept instead of the normal processing if needed.
2851 (cp_parser_exception_specification_opt): Add FRIEND_P parameter and
2852 pass it to cp_parser_noexcept_specification_opt.
2853 (cp_parser_save_member_function_body): Fix comment.
2854 (cp_parser_save_default_args): Maybe save the noexcept-specifier to
2855 post process.
2856 (cp_parser_transaction): Update call to
2857 cp_parser_noexcept_specification_opt.
2858 (cp_parser_transaction_expression): Likewise.
2859 * parser.h (cp_unparsed_functions_entry): Add new field to carry
2860 a noexcept-specifier.
2861 * pt.c (dependent_type_p_r): Handle unparsed noexcept expression.
2862 * search.c (maybe_check_overriding_exception_spec): New function, broken
2863 out of...
2864 (check_final_overrider): ...here. Call
2865 maybe_check_overriding_exception_spec.
2866 * tree.c (canonical_eh_spec): Handle UNPARSED_NOEXCEPT_SPEC_P.
2867 (cp_tree_equal): Handle DEFAULT_ARG.
2868
2869 PR c++/90881 - bogus -Wunused-value in unevaluated context.
2870 * cvt.c (convert_to_void): Don't emit unused warnings in
2871 an unevaluated context.
2872
2873 2019-06-22 Paolo Carlini <paolo.carlini@oracle.com>
2874
2875 * decl.c (grokdeclarator): Use id_loc, typespec_loc, and
2876 locations[ds_storage_class] in a few additional places.
2877
2878 2019-06-21 Paolo Carlini <paolo.carlini@oracle.com>
2879
2880 PR c++/90909
2881 Revert:
2882 2019-05-21 Paolo Carlini <paolo.carlini@oracle.com>
2883
2884 PR c++/67184
2885 PR c++/69445
2886 * call.c (build_over_call): Devirtualize when the final overrider
2887 comes from the base.
2888
2889 2019-06-21 Marek Polacek <polacek@redhat.com>
2890
2891 PR c++/61490 - qualified-id in friend function definition.
2892 * decl.c (grokdeclarator): Diagnose qualified-id in friend function
2893 definition. Improve location for diagnostics of friend functions.
2894
2895 PR c++/60223 - ICE with T{} in non-deduced context.
2896 * pt.c (unify): Allow COMPOUND_LITERAL_P in a non-deduced context.
2897
2898 PR c++/64235 - missing syntax error with invalid alignas.
2899 * parser.c (cp_parser_std_attribute_spec): Commit to tentative parse
2900 if there's a missing close paren.
2901
2902 PR c++/90490 - fix decltype issues in noexcept-specifier.
2903 * except.c (build_noexcept_spec): Call
2904 instantiate_non_dependent_expr_sfinae before
2905 build_converted_constant_expr instead of calling
2906 instantiate_non_dependent_expr after it. Add
2907 processing_template_decl_sentinel.
2908
2909 2019-06-21 Jakub Jelinek <jakub@redhat.com>
2910
2911 PR c++/90950
2912 * semantics.c (finish_omp_clauses): Don't reject references to
2913 incomplete types if processing_template_decl.
2914
2915 2019-06-19 Marek Polacek <polacek@redhat.com>
2916
2917 PR c++/60364 - noreturn after first decl not diagnosed.
2918 * decl.c (duplicate_decls): Give an error when a function is
2919 declared [[noreturn]] after its first declaration.
2920 * parser.c (cp_parser_std_attribute): Don't treat C++11 noreturn
2921 attribute as equivalent to GNU's.
2922 * tree.c (std_attribute_table): Add noreturn.
2923
2924 2019-06-19 Jakub Jelinek <jakub@redhat.com>
2925
2926 * cp-gimplify.c (cp_genericize_r): Handle OMP_CLAUSE_{IN,EX}CLUSIVE
2927 like OMP_CLAUSE_SHARED.
2928
2929 2019-06-18 Jason Merrill <jason@redhat.com>
2930
2931 * constexpr.c (cxx_eval_store_expression): Delay target evaluation.
2932
2933 2019-06-18 Jason Merrill <jason@redhat.com>
2934
2935 * constexpr.c (eval_and_check_array_index): Split out from...
2936 (cxx_eval_array_reference): ...here.
2937 (cxx_eval_store_expression): Use it here, too.
2938 (diag_array_subscript): Take location. Strip location wrapper.
2939
2940 2019-06-18 Jason Merrill <jason@redhat.com>
2941
2942 * constexpr.c (cxx_eval_constant_expression): Handle conversion from
2943 and then to the same type.
2944
2945 2019-06-18 Jason Merrill <jason@redhat.com>
2946
2947 * constexpr.c (unshare_constructor): Add MEM_STAT_DECL.
2948
2949 2019-06-17 Jakub Jelinek <jakub@redhat.com>
2950
2951 * semantics.c (finish_omp_clauses): For OMP_CLAUSE_REDUCTION_INSCAN
2952 set need_copy_assignment.
2953
2954 2019-06-17 Marek Polacek <polacek@redhat.com>
2955
2956 PR c++/83820 - excessive attribute arguments not detected.
2957 * parser.c (cp_parser_std_attribute): Detect excessive arguments.
2958
2959 2019-06-17 Nathan Sidwell <nathan@acm.org>
2960
2961 PR c++/90754
2962 * name-lookup.c (lookup_type_scope_1): Calll qualify_lookup before
2963 checking context.
2964
2965 2019-06-14 Marek Polacek <polacek@redhat.com>
2966
2967 PR c++/90884 - stray note with -Wctor-dtor-privacy.
2968 * class.c (maybe_warn_about_overly_private_class): Guard the call to
2969 inform.
2970
2971 2019-06-12 Jason Merrill <jason@redhat.com>
2972
2973 PR c++/85552 - wrong instantiation of dtor for DMI.
2974 * typeck2.c (digest_nsdmi_init): Set tf_no_cleanup for direct-init.
2975
2976 2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
2977
2978 * decl.c (grokdeclarator): Use id_loc in five additional places
2979 in the last part of the function.
2980
2981 2019-06-13 Paolo Carlini <paolo.carlini@oracle.com>
2982
2983 * decl.c (grokdeclarator): Move further up the declaration of
2984 id_loc, use it immediately, update its value after the loop
2985 over declarator, use it again in the final part of function;
2986 improve locations of error messages about multiple data types
2987 and conflicting specifiers.
2988
2989 2019-06-13 Richard Biener <rguenther@suse.de>
2990
2991 PR c++/90801
2992 * typeck2.c (split_nonconstant_init_1): Properly count
2993 num_split_elts, optimize single constructor elt removal.
2994
2995 2019-06-12 Marek Polacek <polacek@redhat.com>
2996
2997 PR c++/66999 - 'this' captured by reference.
2998 * parser.c (cp_parser_lambda_introducer): Reject `&this'. Use
2999 cp_lexer_nth_token_is instead of cp_lexer_peek_nth_token.
3000
3001 PR c++/90825 - endless recursion when evaluating sizeof.
3002 PR c++/90832 - endless recursion when evaluating sizeof.
3003 * constexpr.c (cxx_eval_constant_expression): Don't recurse on the
3004 result of fold_sizeof_expr if is returns a SIZEOF_EXPR.
3005 * typeck.c (cxx_sizeof_expr): Only return a SIZEOF_EXPR if the operand
3006 is instantiation-dependent.
3007
3008 PR c++/90736 - bogus error with alignof.
3009 * constexpr.c (adjust_temp_type): Use cv_unqualified type.
3010
3011 2019-06-11 Matthew Beliveau <mbelivea@redhat.com>
3012
3013 PR c++/90449 - add -Winaccessible-base option.
3014 * class.c (warn_about_ambiguous_bases): Changed name to:
3015 maybe_warn_about_inaccessible_bases.
3016 (maybe_warn_about_inaccessible_bases): Implemented new
3017 Winaccessible-base warning option for both direct and virtual
3018 base warnings.
3019 (layout_class_type): Call to warn_about_ambiguous_bases changed to fit
3020 new name.
3021
3022 2019-06-11 Richard Biener <rguenther@suse.de>
3023
3024 PR c++/90801
3025 * typeck2.c (split_nonconstant_init_1): Avoid ordered remove
3026 from CONSTRUCTOR by marking to remove elements and doing all
3027 of them in a O(n) scan.
3028
3029 2019-06-11 Jakub Jelinek <jakub@redhat.com>
3030
3031 PR c++/90810
3032 * init.c (constant_value_1): Handle VECTOR_CST DECL_INITIAL for
3033 !DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P decls like CONSTRUCTOR.
3034
3035 2019-06-11 Martin Liska <mliska@suse.cz>
3036
3037 PR c++/87847
3038 * pt.c (init_template_processing): Disable hash table
3039 sanitization for decl_specializations and type_specializations.
3040
3041 2019-06-10 Jason Merrill <jason@redhat.com>
3042
3043 * constexpr.c (free_constructor): New.
3044 (cxx_eval_call_expression): Free parameter value CONSTRUCTORs.
3045
3046 * constexpr.c (unshare_constructor): Only unshare if T is itself a
3047 CONSTRUCTOR.
3048 (cxx_eval_call_expression): Don't call it on the result here.
3049
3050 Reduce constexpr_call memory consumption.
3051 * constexpr.c (cxx_bind_parameters_in_call): Use TREE_VEC rather
3052 than TREE_LIST.
3053 (constexpr_call_hasher::equal, cxx_bind_parameters_in_call)
3054 (cxx_eval_call_expression): Adjust.
3055
3056 2019-06-10 Jakub Jelinek <jakub@redhat.com>
3057
3058 * parser.c (cp_parser_omp_clause_reduction): Don't sorry_at on inscan
3059 reductions.
3060 (cp_parser_omp_scan_loop_body): New function.
3061 (cp_parser_omp_for_loop): Call cp_parser_omp_scan_loop_body if there
3062 are inscan reduction clauses.
3063 (cp_parser_pragma): Reject PRAGMA_OMP_SCAN.
3064 * semantics.c (finish_omp_clauses): Reject mixing inscan with
3065 non-inscan reductions on the same construct, or inscan reductions with
3066 ordered or schedule clauses, or inscan array reductions.
3067 * pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_{IN,EX}CLUSIVE.
3068 (tsubst_expr): Handle OMP_SCAN.
3069
3070 2019-06-07 Jason Merrill <jason@redhat.com>
3071
3072 * constexpr.c (cxx_eval_constant_expression): Call
3073 STRIP_ANY_LOCATION_WRAPPER early.
3074 [CONVERT_EXPR]: Don't build anything for conversion to void.
3075 [ADDR_EXPR]: ggc_free unused ADDR_EXPR.
3076
3077 2019-06-05 Martin Sebor <msebor@redhat.com>
3078
3079 PR c/90737
3080 * typeck.c (maybe_warn_about_returning_address_of_local): Only
3081 consider functions returning pointers as candidates for
3082 -Wreturn-local-addr.
3083
3084 2019-06-05 Paolo Carlini <paolo.carlini@oracle.com>
3085
3086 * decl.c (smallest_type_location): New.
3087 (check_special_function_return_type): Use it.
3088 (grokdeclarator): Lkewise.
3089
3090 2019-06-05 Paolo Carlini <paolo.carlini@oracle.com>
3091
3092 * decl.c (grokdeclarator): Use locations[ds_friend]
3093 in one place.
3094
3095 2019-06-05 Martin Sebor <msebor@redhat.com>
3096
3097 * call.c (build_conditional_expr_1): Adjust quoting and hyphenation.
3098 (convert_like_real): Same.
3099 (convert_arg_to_ellipsis): Same.
3100 * constexpr.c (diag_array_subscript): Same.
3101 * constraint.cc (diagnose_trait_expression): Same.
3102 * cvt.c (ocp_convert): Same.
3103 * decl.c (start_decl): Same.
3104 (check_for_uninitialized_const_var): Same.
3105 (grokfndecl): Same.
3106 (check_special_function_return_type): Same.
3107 (finish_enum_value_list): Same.
3108 (start_preparsed_function): Same.
3109 * parser.c (cp_parser_decl_specifier_seq): Same.
3110 * typeck.c (cp_build_binary_op): Same.
3111 (build_static_cast_1): Same.
3112
3113 2019-06-04 Nina Dinka Ranns <dinka.ranns@gmail.com>
3114
3115 PR c++/63149 - Wrong auto deduction from braced-init-list.
3116 * pt.c (listify_autos): use non cv qualified auto_node in
3117 std::initializer_list<auto>.
3118
3119 2019-06-04 Paolo Carlini <paolo.carlini@oracle.com>
3120
3121 * decl.c (grokdeclarator): Use declarator->id_loc in two
3122 additional places.
3123
3124 2019-06-04 Nathan Sidwell <nathan@acm.org>
3125
3126 * name-lookup.c (lookup_type_scope_1): Reimplement, handle local
3127 and namespace scopes separately.
3128
3129 2019-06-04 Harald van Dijk <harald@gigawatt.nl>
3130
3131 PR c++/60531 - Wrong error about unresolved overloaded function
3132 * typeck.c (cp_build_binary_op): See if overload can be resolved.
3133 (cp_build_unary_op): Ditto.
3134
3135 2019-06-04 Jason Merrill <jason@redhat.com>
3136
3137 Reduce accumulated garbage in constexpr evaluation.
3138 * constexpr.c (cxx_eval_call_expression): ggc_free any bindings we
3139 don't save.
3140 (cxx_eval_increment_expression): ggc_free the MODIFY_EXPR after
3141 evaluating it.
3142
3143 2019-06-04 Jakub Jelinek <jakub@redhat.com>
3144
3145 * cp-tree.h (CP_OMP_CLAUSE_INFO): Allow for any clauses up to _condvar_
3146 instead of only up to linear.
3147
3148 2019-06-03 Paolo Carlini <paolo.carlini@oracle.com>
3149
3150 * parser.c (cp_parser_unqualified_id): Use build_min_nt_loc in
3151 five places.
3152
3153 2019-06-01 Ville Voutilainen <ville.voutilainen@gmail.com>
3154
3155 PR c++/85254
3156 * class.c (fixup_type_variants): Handle CLASSTYPE_FINAL.
3157
3158 2019-05-31 Nathan Sidwell <nathan@acm.org>
3159
3160 * cp-tree.h (IDENTIFIER_LAMBDA_P): New.
3161 (TYPE_ANON_P): New.
3162 (LAMBDA_TYPE_P, TYPE_UNNAMED_P): Likewise.
3163 (LAMBDANAME_PREFIX, LAMBDANAME_FORMAT): Delete.
3164 (make_lambda_name): Don't declare.
3165 * error.c (dump_aggr_type): Check for lambdas before other
3166 anonymous names.
3167 * lambda.c (begin_lambda_type): Use make_anon_name.
3168 * cp-lang.c (cxx_dwarf_name): Lambda names smell anonymous.
3169 * mangle.c (write_local_name): Likewise.
3170 * name-lookup.c (lambda_cnt, make_lambda_name): Delete.
3171
3172 2019-05-30 Marek Polacek <polacek@redhat.com>
3173
3174 * cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo.
3175
3176 2019-05-31 Paolo Carlini <paolo.carlini@oracle.com>
3177
3178 * decl.c (grokdeclarator): Use declarator->id_loc in five
3179 error_at calls.
3180
3181 2019-05-29 Jakub Jelinek <jakub@redhat.com>
3182
3183 PR c++/90598
3184 * tree.c (lvalue_kind): Return clk_none for expressions with
3185 with VOID_TYPE_P.
3186
3187 2019-05-29 Paolo Carlini <paolo.carlini@oracle.com>
3188
3189 PR c++/89875
3190 * parser.c (cp_parser_sizeof_operand): When the type-id production
3191 did not work out commit to the tentative parse.
3192
3193 2019-05-29 Jakub Jelinek <jakub@redhat.com>
3194
3195 P1091R3 - Extending structured bindings to be more like var decls
3196 P1381R1 - Reference capture of structured bindings
3197 * decl.c (cp_maybe_mangle_decomp): Handle TREE_STATIC decls even at
3198 function scope.
3199 (cp_finish_decomp): Copy over various decl properties from decl to
3200 v[i] in the tuple case.
3201 (grokdeclarator): Allow static, thread_local and __thread for C++2a
3202 and use pedwarn instead of error for older standard revisions.
3203 Make other structured binding diagnostic messages more i18n friendly.
3204
3205 2019-05-28 Nathan Sidwell <nathan@acm.org>
3206
3207 * decl.c (duplicate_decls): Assert a template newdecl has no
3208 specializations.
3209
3210 2019-05-28 Marek Polacek <polacek@redhat.com>
3211
3212 PR c++/90548 - ICE with generic lambda and empty pack.
3213 * pt.c (tsubst_copy_and_build): Handle pack expansion properly.
3214
3215 2019-05-28 Nathan Sidwell <nathan@acm.org>
3216
3217 * cp-tree.h (make_anon_name): Drop declaration.
3218 (TYPE_UNNAMED_P): Use IDENTIFIER_ANON_P.
3219 * cp-lang.c (cxx_dwarf_name): Likewise.
3220 * class.c (find_flexarrays): Likewise.
3221 * decl.c (name_unnamed_type, xref_tag_1): Likewise.
3222 * error.c (dump_aggr_type): Likewise.
3223 * pt.c (push_template_decl_real): Likewise.
3224 * name-lookup.c (consider_binding_level): Likewise.
3225 (anon_cnt, make_anon_name): Delete.
3226
3227 2019-05-25 Marek Polacek <polacek@redhat.com>
3228
3229 PR c++/90572 - wrong disambiguation in friend declaration.
3230 * parser.c (cp_parser_constructor_declarator_p): Don't allow missing
3231 typename for friend declarations.
3232
3233 2019-05-23 Jonathan Wakely <jwakely@redhat.com>
3234
3235 * cp-tree.h (CP_AGGREGATE_TYPE_P): Fix whitespace.
3236
3237 * init.c (std_placement_new_fn_p): Remove outdated TODO comment that
3238 was resolved by r254694.
3239
3240 2019-05-22 Jason Merrill <jason@redhat.com>
3241
3242 PR c++/20408 - unnecessary code for empty struct.
3243 * call.c (build_call_a): Use simple_empty_class_p.
3244
3245 PR c++/86485 - -Wmaybe-unused with empty class ?:
3246 * cp-gimplify.c (simple_empty_class_p): Also true for MODIFY_EXPR.
3247
3248 2019-05-21 Paolo Carlini <paolo.carlini@oracle.com>
3249
3250 * parser.c (cp_parser_template_declaration_after_parameters): Use
3251 DECL_SOURCE_LOCATION in literal operator template errors.
3252
3253 2019-05-21 Paolo Carlini <paolo.carlini@oracle.com>
3254
3255 PR c++/67184
3256 PR c++/69445
3257 * call.c (build_over_call): Devirtualize when the final overrider
3258 comes from the base.
3259
3260 2019-05-21 Nathan Sidwell <nathan@acm.org>
3261
3262 * name-lookup.c (do_nonmember_using_decl): Drop INSERT_P
3263 parameter. Document.
3264 (finish_nonmember_using_decl): Adjust do_nonmember_using_decl
3265 calls. Remove stray FIXME comment.
3266
3267 * name-lookup.h (struct cp_binding_level): Drop usings field.
3268 (finish_namespace_using_decl, finish_local_using_decl): Replace with ...
3269 (finish_nonmember_using_decl): ... this.
3270 * name-lookup.c (push_using_decl_1, push_using_decl):
3271 (do_nonmember_using_decl): ... here. Add INSERT_P arg. Reimplement.
3272 (validate_nonmember_using_decl, finish_namespace_using_decl)
3273 (finish_local_using_decl): Replace with ...
3274 (finish_nonmember_using_decl): ... this. Drop DECL parm.
3275 * parser.c (cp_parser_using_declaration): Don't do lookup here.
3276 * pt.c (tsubst_expr): Do not do using decl lookup here.
3277
3278 2019-05-21 Eric Botcazou <ebotcazou@adacore.com>
3279
3280 * decl2.c (cpp_check) <IS_ASSIGNMENT_OPERATOR>: New case.
3281
3282 2019-05-20 Marek Polacek <polacek@redhat.com>
3283
3284 CWG 2094 - volatile scalars are trivially copyable.
3285 PR c++/85679
3286 * tree.c (trivially_copyable_p): Don't check CP_TYPE_VOLATILE_P for
3287 scalar types.
3288
3289 2019-05-20 Marek Polacek <polacek@redhat.com>
3290
3291 * pt.c (convert_template_argument): Add a diagnostic for the
3292 [temp.arg]/2 ambiguity case.
3293
3294 * name-lookup.c (finish_using_directive): Don't issue inform() if the
3295 warning didn't trigger. Add quoting. Tweak the inform message.
3296
3297 2019-05-20 Paolo Carlini <paolo.carlini@oracle.com>
3298
3299 * cp-tree.h: Remove remnants of CONV_NONCONVERTING.
3300
3301 2019-05-20 Nathan Sidwell <nathan@acm.org>
3302
3303 * name-lookup.c (finish_namespace_using_directive)
3304 (finish_local_using_directive): Merge to ...
3305 (finish_using_directive): ... here. Handle both contexts.
3306 * name-lookup.h (finish_namespace_using_directive)
3307 (finish_local_using_directive): Replace with ...
3308 (finish_using_directive): ... this.
3309 * parser.c (cp_parser_using_directive): Adjust.
3310 * pt.c (tsubst_expr): Likewise.
3311
3312 * cp-tree.h (struct lang_decl_ns): Remove usings field.
3313 (DECL_NAMESPACE_USING): Delete.
3314 * name-lookup.c (name_lookup::search_usings): Use namespace's
3315 binding scope.
3316 (name_lookup::queue_namespae): Likewise.
3317 (finish_namespace_using_directive, push_namespace): Likewise.
3318 (has_using_namespace_std_directive): Just search the entire
3319 binding stack.
3320
3321 2019-05-20 Jonathan Wakely <jwakely@redhat.com>
3322
3323 PR c++/90532 Ensure __is_constructible(T[]) is false
3324 * method.c (is_xible_helper): Return error_mark_node for construction
3325 of an array of unknown bound.
3326
3327 2019-05-17 Thomas Schwinge <thomas@codesourcery.com>
3328
3329 PR c++/89433
3330 * parser.c (cp_finalize_oacc_routine): Rework checking if already
3331 marked with an OpenACC 'routine' directive.
3332
3333 PR c++/89433
3334 * parser.c (cp_parser_oacc_routine)
3335 (cp_parser_late_parsing_oacc_routine): Normalize order of clauses.
3336 (cp_finalize_oacc_routine): Call oacc_verify_routine_clauses.
3337
3338 PR c++/89433
3339 * parser.c (cp_finalize_oacc_routine): Refer to OpenACC 'routine'
3340 clauses from "omp declare target" attribute.
3341
3342 2019-05-16 Martin Sebor <msebor@redhat.com>
3343
3344 * call.c (print_z_candidate): Wrap diagnostic text in a gettext
3345 macro. Adjust.
3346 (print_z_candidates): Same.
3347 (build_conditional_expr_1): Quote keywords, operators, and types
3348 in diagnostics.
3349 (build_op_delete_call): Same.
3350 (maybe_print_user_conv_context): Wrap diagnostic text in a gettext
3351 macro.
3352 (convert_like_real): Same.
3353 (convert_arg_to_ellipsis): Quote keywords, operators, and types
3354 in diagnostics.
3355 (build_over_call): Same.
3356 (joust): Break up an overlong line. Wrap diagnostic text in a gettext
3357 macro.
3358 * constexpr.c (cxx_eval_check_shift_p): Spell out >= in English.
3359 (cxx_eval_constant_expression): Quote keywords, operators, and types
3360 in diagnostics.
3361 (potential_constant_expression_1): Same.
3362 * cp-gimplify.c (cp_genericize_r): Same.
3363 * cvt.c (maybe_warn_nodiscard): Quote keywords, operators, and types
3364 in diagnostics.
3365 (type_promotes_to): Same.
3366 * decl.c (check_previous_goto_1): Same.
3367 (check_goto): Same.
3368 (start_decl): Same.
3369 (cp_finish_decl): Avoid parenthesizing a sentence for consistency.
3370 (grok_op_properties): Quote keywords, operators, and types
3371 in diagnostics.
3372 * decl2.c (grokfield): Same.
3373 (coerce_delete_type): Same.
3374 * except.c (is_admissible_throw_operand_or_catch_parameter): Same.
3375 * friend.c (do_friend): Quote C++ tokens.
3376 * init.c (build_new_1): Quote keywords, operators, and types
3377 in diagnostics.
3378 (build_vec_delete_1): Same.
3379 (build_delete): Same.
3380 * lex.c (parse_strconst_pragma): Same.
3381 (handle_pragma_implementation): Same.
3382 (unqualified_fn_lookup_error): Same.
3383 * mangle.c (write_type): Same.
3384 * method.c (defaulted_late_check): Avoid two consecutive punctuators.
3385 * name-lookup.c (cp_binding_level_debug): Remove a trailing newline.
3386 (pop_everything): Same.
3387 * parser.c (cp_lexer_start_debugging): Quote a macro name.
3388 in a diagnostic
3389 (cp_lexer_stop_debugging): Same.
3390 (cp_parser_userdef_numeric_literal): Quote a C++ header name
3391 in a diagnostic.
3392 (cp_parser_nested_name_specifier_opt): Quote keywords, operators,
3393 and types in diagnostics.
3394 (cp_parser_question_colon_clause): Same.
3395 (cp_parser_asm_definition): Same.
3396 (cp_parser_init_declarator): Same.
3397 (cp_parser_template_declaration_after_parameters): Avoid capitalizing
3398 a sentence in a diagnostic.
3399 (cp_parser_omp_declare_reduction): Quote keywords, operators, and types
3400 in diagnostics.
3401 (cp_parser_transaction): Same.
3402 * pt.c (maybe_process_partial_specialization): Replace second call
3403 to permerror with inform for consistency with other uses.
3404 (expand_integer_pack): Quote keywords, operators, and types
3405 in diagnostics.
3406 * rtti.c (get_typeid): Quote keywords, operators, and types
3407 in diagnostics.
3408 (build_dynamic_cast_1): Same.
3409 * semantics.c (finish_asm_stmt): Same.
3410 (finish_label_decl): Same.
3411 (finish_bases): Same.
3412 (finish_offsetof): Same.
3413 (cp_check_omp_declare_reduction): Same.
3414 (finish_decltype_type): Same.
3415 * tree.c (handle_init_priority_attribute): Same. Add detail
3416 to diagnostics.
3417 (maybe_warn_zero_as_null_pointer_constant): Same.
3418 * typeck.c (cp_build_binary_op): Quote keywords, operators, and types
3419 in diagnostics.
3420 (cp_build_unary_op): Same.
3421 (check_for_casting_away_constness): Same.
3422 (build_static_cast): Same.
3423 (build_const_cast_1): Same.
3424 (maybe_warn_about_returning_address_of_local): Same.
3425 (check_return_expr): Same.
3426 * typeck2.c (abstract_virtuals_error_sfinae): Same.
3427 (digest_init_r): Replace a tab with spaces in a diagnostic.
3428 (build_functional_cast): Quote keywords, operators, and types
3429 in diagnostics.
3430
3431 2019-05-15 Jakub Jelinek <jakub@redhat.com>
3432
3433 PR debug/90197
3434 * cp-gimplify.c (genericize_cp_loop): Emit a DEBUG_BEGIN_STMT
3435 before the condition (or if missing or constant non-zero at the end
3436 of the loop. Emit a DEBUG_BEGIN_STMT before the increment expression
3437 if any. Don't call protected_set_expr_location on incr if it already
3438 has a location.
3439
3440 2019-05-15 Marek Polacek <polacek@redhat.com>
3441
3442 CWG 2096 - constraints on literal unions.
3443 * class.c (check_field_decls): Initialize booleans directly. A union
3444 is literal if at least one of its non-static data members is of
3445 non-volatile literal type.
3446
3447 2019-05-15 Paolo Carlini <paolo.carlini@oracle.com>
3448
3449 * cp-tree.h (REFERENCE_VLA_OK): Remove.
3450 * lambda.c (build_capture_proxy): Remove use of the above.
3451
3452 2019-05-15 Paolo Carlini <paolo.carlini@oracle.com>
3453
3454 * call.c (perform_overload_resolution, build_new_method_call_1):
3455 Use OVL_P; remove redundant TEMPLATE_DECL checks.
3456 * decl.c (grokfndecl): Likewise.
3457 * mangle.c (write_expression): Likewise.
3458 * parser.c (cp_parser_template_id): Likewise.
3459 * pt.c (resolve_overloaded_unification, type_dependent_expression_p):
3460 Likewise.
3461 * search.c (build_baselink): Likewise.
3462 * tree.c (is_overloaded_fn, dependent_name, maybe_get_fns): Likewise.
3463
3464 2019-05-14 Paolo Carlini <paolo.carlini@oracle.com>
3465
3466 PR preprocessor/90382
3467 * decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
3468 min_location.
3469
3470 2019-05-13 Jason Merrill <jason@redhat.com>
3471
3472 Use releasing_vec more broadly.
3473 * cp-tree.h (struct releasing_vec): Replace get_ref method with
3474 operator&.
3475 (vec_safe_push, vec_safe_reserve, vec_safe_length, vec_safe_splice):
3476 Forwarding functions for releasing_vec.
3477 (release_tree_vector): Declare but don't define.
3478 * call.c (build_op_delete_call, build_temp, call_copy_ctor)
3479 (perform_direct_initialization_if_possible): Use releasing_vec.
3480 * constexpr.c (cxx_eval_vec_init_1, cxx_eval_store_expression):
3481 Likewise.
3482 * cp-gimplify.c (cp_fold): Likewise.
3483 * cvt.c (force_rvalue, ocp_convert): Likewise.
3484 * decl.c (get_tuple_decomp_init): Likewise.
3485 * except.c (build_throw): Likewise.
3486 * init.c (perform_member_init, expand_default_init): Likewise.
3487 * method.c (do_build_copy_assign, locate_fn_flags): Likewise.
3488 * parser.c (cp_parser_userdef_char_literal)
3489 (cp_parser_userdef_numeric_literal)
3490 (cp_parser_userdef_string_literal)
3491 (cp_parser_perform_range_for_lookup)
3492 (cp_parser_range_for_member_function, cp_parser_omp_for_loop)
3493 (cp_parser_omp_for_loop_init): Likewise.
3494 * pt.c (tsubst_copy_and_build, do_class_deduction): Likewise.
3495 * semantics.c (calculate_direct_bases, calculate_bases)
3496 (finish_omp_barrier, finish_omp_flush, finish_omp_taskwait)
3497 (finish_omp_taskyield, finish_omp_cancel)
3498 (finish_omp_cancellation_point): Likewise.
3499 * tree.c (build_vec_init_elt, strip_typedefs, strip_typedefs_expr)
3500 (build_min_non_dep_op_overload): Likewise.
3501 * typeck.c (build_function_call_vec, cp_build_function_call_nary)
3502 (cp_build_modify_expr): Likewise.
3503 * typeck2.c (build_functional_cast): Likewise.
3504
3505 2019-05-11 Paolo Carlini <paolo.carlini@oracle.com>
3506
3507 * typeck.c (cp_build_function_call_vec): When mark_used fails
3508 unconditionally return error_mark_node.
3509
3510 2019-05-10 Paolo Carlini <paolo.carlini@oracle.com>
3511
3512 * decl.c (grokvardecl): Use an accurate location in error message
3513 about main as a global variable.
3514
3515 2019-05-10 Paolo Carlini <paolo.carlini@oracle.com>
3516
3517 * call.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.
3518 * cp-gimplify.c (cp_fold): Likewise.
3519 * cp-objcp-common.c (cp_type_dwarf_attribute): Likewise.
3520 * cp-tree.h (TYPE_OBJ_P, TYPE_PTROBV_P): Likewise.
3521 * cvt.c (perform_qualification_conversions): Likewise.
3522 * decl.c (grokdeclarator): Likewise.
3523 * decl2.c (build_memfn_type): Likewise.
3524 * mangle.c (canonicalize_for_substitution, write_type): Likewise.
3525 * parser.c (cp_parser_omp_declare_reduction): Likewise.
3526 * pt.c (check_explicit_specialization, uses_deducible_template_parms,
3527 check_cv_quals_for_unify, dependent_type_p_r): Likewise.
3528 * rtti.c (ptr_initializer): Likewise.
3529 * semantics.c (finish_asm_stmt, finish_offsetof,
3530 cp_check_omp_declare_reduction): Likewise.
3531 * tree.c (cp_build_qualified_type_real,
3532 cp_build_type_attribute_variant, cxx_type_hash_eq,
3533 cxx_copy_lang_qualifiers, cp_free_lang_data): Likewise.
3534 * typeck.c (structural_comptypes, convert_arguments,
3535 cp_build_addr_expr_1, unary_complex_lvalue, cp_build_c_cast,
3536 cp_build_modify_expr, comp_ptr_ttypes_real, type_memfn_rqual):
3537 Likewise.
3538
3539 2019-05-10 Marek Polacek <polacek@redhat.com>
3540
3541 PR c++/78010 - bogus -Wsuggest-override warning on final function.
3542 * class.c (check_for_override): Don't warn for final functions.
3543
3544 2019-05-10 Jakub Jelinek <jakub@redhat.com>
3545
3546 PR pch/90326
3547 * config-lang.in (gtfiles): Remove c-family/c-lex.c, add
3548 c-family/c-cppbuiltin.c.
3549
3550 2019-05-09 Paolo Carlini <paolo.carlini@oracle.com>
3551
3552 PR c++/90382
3553 Revert:
3554 2018-04-26 Paolo Carlini <paolo.carlini@oracle.com>
3555
3556 * decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
3557 min_location.
3558
3559 2019-05-08 Nathan Sidwell <nathan@acm.org>
3560
3561 Kill DECL_SAVED_FUNCTION_DATA .
3562 * cp-tree.h (language_function): Remove x_auto_return_pattern.
3563 (current_function_auto_return_pattern): Delete.
3564 (lang_decl_fn): Replace saved_language_function with
3565 saved_auto_return type.
3566 (DECL_SAVED_FUNCTION_DATA): Delete.
3567 (DECL_SAVED_AUTO_RETURN_TYPE): New.
3568 (FNDECL_USED_AUTO): Correct documentation.
3569 * decl.c (duplicate_decls): Adjust AUTO return handling.
3570 (start_preparsed_function): Replace
3571 current_function_auto_return_pattern with
3572 DECL_SAVED_AUTO_RETURN_TYPE. Remove DECL_SAVED_FUNCTION_DATA
3573 zapping.
3574 (finish_function): Likewise.
3575 (save_function_data): Delete.
3576 (fndecl_declared_return_type): Reimplement.
3577 * mangle.c (write_unqualified_name): Use DECL_SAVED_AUTO_RETURN_TYPE.
3578 * method.c (make_thunk, make_alias_for): Likewise.
3579 * parser.c (cp_parser_jump_statement): Likewise.
3580 * pt.c (do_auto_deduction): Likewise.
3581 * typeck.c (check_return_expr): Likewise.
3582
3583 2019-05-06 Jason Merrill <jason@redhat.com>
3584
3585 PR c++/90171 - reorganize usual_deallocation_fn_p
3586 * call.c (struct dealloc_info): New.
3587 (usual_deallocation_fn_p): Take a dealloc_info*.
3588 (aligned_deallocation_fn_p, sized_deallocation_fn_p): Remove.
3589 (build_op_delete_call): Adjust.
3590
3591 2019-05-07 Jason Merrill <jason@redhat.com>
3592
3593 PR c++/86485 - -Wmaybe-unused with empty class ?:
3594 * typeck.c (build_static_cast_1): Use cp_build_addr_expr.
3595
3596 * pt.c (type_dependent_expression_p): A non-type template parm with
3597 a placeholder type is type-dependent.
3598
3599 2019-05-06 Marek Polacek <polacek@redhat.com>
3600
3601 PR c++/90265 - ICE with generic lambda.
3602 * pt.c (tsubst_copy_and_build): Use a dedicated variable for the last
3603 element in the vector.
3604
3605 2019-05-03 Martin Liska <mliska@suse.cz>
3606
3607 * call.c (build_aggr_conv): Use is_empty instead of
3608 elements () == 0 (and similar usages).
3609 * parser.c (cp_parser_lambda_introducer): Likewise.
3610
3611 2019-05-02 Nathan Sidwell <nathan@acm.org>
3612
3613 * semantics.c (finish_id_expression_1): Remove unreachable code.
3614
3615 2019-05-01 Nathan Sidwell <nathan@acm.org>
3616
3617 * name-lookup.h (get_class_binding_direct): Change final arg to
3618 bool.
3619 (get_class_binding): Likewise.
3620 * name-lookup.c (get_class_binding_direct): Replace TYPE_OR_FNS
3621 arg with WANT_TYPE bool. Simplify.
3622 (get_class_binding): Adjust final arg.
3623 * decl.c (reshape_init_class): Adjust get_class_binding calls.
3624
3625 2019-04-30 Nathan Sidwell <nathan@acm.org>
3626
3627 * cp-objcp-common.c (cp_common_init_ts): Use MARK_TS_EXP for _EXPR
3628 nodes. Call c_common_init_ts.
3629
3630 2019-04-29 Nathan Sidwell <nathan@acm.org>
3631
3632 * decl.c (duplicate_decls): Add whitespace, move comments into
3633 conditional blocks.
3634 * method.c (explain_implicit_non_constexpr): Refactor.
3635 * pt.c (check_explicit_specialization): Fix indentation.
3636 * semantics.c (process_outer_var_ref): Reformat.
3637 (finish_id_expression_1): Use STRIP_TEMPLATE.
3638
3639 2019-04-26 Jonathan Wakely <jwakely@redhat.com>
3640
3641 PR c++/90243 - orphaned note in uninstantiated constexpr function
3642 * decl.c (check_for_uninitialized_const_var): Suppress notes if no
3643 error was shown.
3644
3645 2019-04-26 Paolo Carlini <paolo.carlini@oracle.com>
3646
3647 PR c++/90173
3648 * decl.c (grokdeclarator): Set type to error_mark_node
3649 upon error about template placeholder type non followed
3650 by a simple declarator-id.
3651
3652 2019-04-26 Paolo Carlini <paolo.carlini@oracle.com>
3653
3654 * decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
3655 min_location.
3656
3657 2019-04-24 Jason Merrill <jason@redhat.com>
3658
3659 PR c++/90227 - error with template parameter packs.
3660 * pt.c (coerce_template_parms): Do add empty pack when
3661 require_all_args.
3662
3663 2019-04-24 Richard Biener <rguenther@suse.de>
3664
3665 * call.c (null_ptr_cst_p): Order checks according to expensiveness.
3666 (conversion_null_warnings): Likewise.
3667 * typeck.c (same_type_ignoring_top_level_qualifiers_p): Return
3668 early if type1 == type2.
3669
3670 2019-04-22 Jason Merrill <jason@redhat.com>
3671
3672 PR c++/87366 - wrong error with alias template.
3673 * typeck.c (structural_comptypes): When comparing_specializations,
3674 aliases are unequal.
3675 (comptypes): When comparing_specializations, do structural
3676 comparison.
3677
3678 2019-04-19 Jason Merrill <jason@redhat.com>
3679
3680 PR c++/90190 - CTAD with list-constructor.
3681 * pt.c (do_class_deduction): Don't try the single element deduction
3682 if the single element is also a braced list.
3683
3684 PR c++/90171 - ICE with destroying delete with size_t parm.
3685 * call.c (sized_deallocation_fn_p): New. Use it instead of
3686 second_parm_is_size_t in most cases.
3687 (second_parm_is_size_t): Don't check for aligned.
3688
3689 2019-04-19 Paolo Carlini <paolo.carlini@oracle.com>
3690
3691 PR c++/89900
3692 * pt.c (fn_type_unification): When handling null explicit
3693 arguments do not special case non-parameter packs.
3694
3695 2019-04-19 Jakub Jelinek <jakub@redhat.com>
3696
3697 PR c++/90138
3698 * pt.c (process_template_parm): Set decl to pushdecl result. If
3699 !is_non_type, also set parm to that.
3700
3701 PR c/89888
3702 * decl.c (struct cp_switch): Remove outside_range_p member.
3703 (push_switch): Don't clear it.
3704 (pop_switch): Adjust c_do_switch_warnings caller.
3705 (finish_case_label): Adjust c_add_case_label caller.
3706
3707 PR c++/90108
3708 * decl.c (duplicate_decls): If remove is main variant and
3709 DECL_ORIGINAL_TYPE is some other type, remove a DECL_ORIGINAL_TYPE
3710 variant that has newdecl as TYPE_NAME if any.
3711
3712 2019-04-18 Jason Merrill <jason@redhat.com>
3713
3714 PR c++/87554 - ICE with extern template and reference member.
3715 * decl.c (cp_finish_decl): Don't set DECL_INITIAL of external vars.
3716
3717 2019-04-17 Jason Merrill <jason@redhat.com>
3718
3719 PR c++/90047 - ICE with enable_if alias template.
3720 * pt.c (tsubst_decl) [TYPE_DECL]: Don't put an erroneous decl in the
3721 hash table when we're in SFINAE context.
3722
3723 2019-04-17 Marek Polacek <polacek@redhat.com>
3724
3725 PR c++/90124 - bogus error with incomplete type in decltype.
3726 * typeck.c (build_class_member_access_expr): Check
3727 cp_unevaluated_operand.
3728
3729 2019-04-12 Jakub Jelinek <jakub@redhat.com>
3730
3731 PR c/89933
3732 * decl.c (duplicate_decls): When newdecl's type is its main variant,
3733 don't try to remove it from the variant list, but instead assert
3734 it has no variants.
3735
3736 2019-04-12 Martin Sebor <msebor@redhat.com>
3737
3738 PR c/88383
3739 PR c/89288
3740 * parser.c (cp_parser_has_attribute_expression): Handle assignment
3741 expressions.
3742
3743 2019-04-12 Jason Merrill <jason@redhat.com>
3744
3745 * call.c (null_member_pointer_value_p): Handle an empty CONSTRUCTOR
3746 of PMF type.
3747
3748 2019-04-12 Marek Polacek <polacek@redhat.com>
3749
3750 * except.c (build_noexcept_spec): Use build_converted_constant_bool_expr
3751 instead of perform_implicit_conversion_flags.
3752
3753 PR c++/87603 - constexpr functions are no longer noexcept.
3754 * constexpr.c (is_sub_constant_expr): Remove unused function.
3755 * cp-tree.h (is_sub_constant_expr): Remove declaration.
3756 * except.c (check_noexcept_r): Don't consider a call to a constexpr
3757 function noexcept.
3758
3759 2019-04-11 Jakub Jelinek <jakub@redhat.com>
3760
3761 PR translation/90035
3762 * parser.h (struct cp_parser): Add
3763 type_definition_forbidden_message_arg member.
3764 * parser.c (cp_debug_parser): Print it.
3765 (cp_parser_check_type_definition): Pass
3766 parser->type_definition_forbidden_message_arg as second argument to
3767 error.
3768 (cp_parser_has_attribute_expression, cp_parser_sizeof_operand): Set
3769 parser->type_definition_forbidden_message_arg and use G_() with
3770 %qs for parser->type_definition_forbidden_message instead of
3771 building untranslatable message using concat.
3772
3773 2019-04-09 Jakub Jelinek <jakub@redhat.com>
3774
3775 PR translation/90011
3776 * typeck2.c (check_narrowing): Remove trailing space from diagnostics.
3777
3778 2019-04-08 Marek Polacek <polacek@redhat.com>
3779
3780 * typeck2.c (digest_init_r): Don't condition the object slicing warning
3781 on flag_checking.
3782
3783 2019-04-08 Paolo Carlini <paolo.carlini@oracle.com>
3784
3785 PR c++/89914
3786 * semantics.c (trait_expr_value): Don't use TYPE_NOTHROW_P
3787 when maybe_instantiate_noexcept fails.
3788 (classtype_has_nothrow_assign_or_copy_p): Likewise.
3789 * method.c (implicitly_declare_fn): Avoid passing error_mark_node
3790 to build_exception_variant.
3791
3792 2019-04-05 Marek Polacek <polacek@redhat.com>
3793
3794 PR c++/87145 - bogus error converting class type in template arg list.
3795 * pt.c (convert_nontype_argument): Don't call
3796 build_converted_constant_expr if it could involve calling a conversion
3797 function with a instantiation-dependent constructor as its argument.
3798
3799 2019-04-05 Martin Sebor <msebor@redhat.com>
3800
3801 PR bootstrap/89980
3802 * decl.c (reshape_init_array_1): Avoid treating empty strings
3803 as zeros in array initializers.
3804 Use trivial_type_p () instead of TYPE_HAS_TRIVIAL_DFLT().
3805
3806 2019-04-04 Jason Merrill <jason@redhat.com>
3807
3808 PR c++/89948 - ICE with break in statement-expr.
3809 * constexpr.c (cxx_eval_statement_list): Jumping out of a
3810 statement-expr is non-constant.
3811
3812 2019-04-04 Jason Merrill <jason@redhat.com>
3813
3814 PR c++/89966 - error with non-type auto tparm.
3815 * pt.c (do_auto_deduction): Clear tf_partial.
3816
3817 2019-04-04 Jason Merrill <jason@redhat.com>
3818
3819 PR c++/86986 - ICE with TTP with parameter pack.
3820 * pt.c (coerce_template_parameter_pack): Only look at the type of a
3821 non-type parameter pack.
3822 (fixed_parameter_pack_p_1): Don't recurse into the type of a
3823 non-type parameter pack.
3824 (coerce_template_template_parms): Call add_outermost_template_args.
3825
3826 2019-04-04 Martin Sebor <msebor@redhat.com>
3827
3828 PR c++/89974
3829 PR c++/89878
3830 PR c++/89833
3831 PR c++/47488
3832 * decl.c (reshape_init_array_1): Strip trailing zero-initializers
3833 from arrays of trivial type and known size.
3834 * mangle.c (write_expression): Convert braced initializer lists
3835 to STRING_CSTs.
3836 (write_expression): Trim trailing zero-initializers from arrays
3837 of trivial type.
3838 (write_template_arg_literal): Mangle strings the same as braced
3839 initializer lists.
3840
3841 2019-04-03 Jason Merrill <jason@redhat.com>
3842
3843 PR c++/81866 - ICE with member template and default targ.
3844 * pt.c (tsubst_template_decl): Handle getting a type from
3845 retrieve_specialization.
3846
3847 PR c++/86586 - -fcompare-debug=-Wsign-compare.
3848 * typeck.c (cp_build_binary_op): Don't fold for -Wsign-compare.
3849
3850 PR c++/89331 - ICE with offsetof in incomplete class.
3851 * semantics.c (finish_offsetof): Handle error_mark_node.
3852 * typeck.c (build_class_member_access_expr): Call
3853 complete_type_or_maybe_complain before converting to base.
3854
3855 PR c++/89917 - ICE with lambda in variadic mem-init.
3856 * pt.c (make_pack_expansion): Change type_pack_expansion_p to false.
3857
3858 2019-04-01 Jason Merrill <jason@redhat.com>
3859
3860 PR c++/86946 - ICE with function call in template argument.
3861 DR 1321
3862 * pt.c (iterative_hash_template_arg) [CALL_EXPR]: Use
3863 dependent_name.
3864
3865 2019-04-01 Paolo Carlini <paolo.carlini@oracle.com>
3866
3867 PR c++/62207
3868 * pt.c (tsubst_copy): Deal with lookup_name not returing a variable.
3869
3870 2019-03-31 Marek Polacek <polacek@redhat.com>
3871
3872 PR c++/89852 - ICE with C++11 functional cast with { }.
3873 * constexpr.c (fold_non_dependent_expr_template): New static function
3874 broken out of...
3875 (fold_non_dependent_expr): ...here.
3876 (fold_non_dependent_init): New function.
3877 * cp-tree.h (fold_non_dependent_init): Declare.
3878 * typeck2.c (massage_init_elt): Call fold_non_dependent_init instead
3879 of fold_non_dependent_expr. Don't call maybe_constant_init.
3880
3881 2019-03-30 Jason Merrill <jason@redhat.com>
3882
3883 PR c++/89744 - ICE with specialization of member class template.
3884 * pt.c (lookup_template_class_1): If the partial instantiation is
3885 explicitly specialized, adjust.
3886 (maybe_process_partial_specialization): Also adjust
3887 CLASSTYPE_TI_ARGS.
3888
3889 2019-03-29 Jakub Jelinek <jakub@redhat.com>
3890
3891 PR sanitizer/89869
3892 * typeck.c: Include gimplify.h.
3893 (cp_build_modify_expr) <case COND_EXPR>: Unshare rhs before using it
3894 for second time. Formatting fixes.
3895
3896 2019-03-29 Marek Polacek <polacek@redhat.com>
3897
3898 PR c++/89876 - ICE with deprecated conversion.
3899 * call.c (convert_like_real): Only give warnings with tf_warning.
3900
3901 2019-03-28 Marek Polacek <polacek@redhat.com>
3902
3903 PR c++/89612 - ICE with member friend template with noexcept.
3904 * pt.c (maybe_instantiate_noexcept): For function templates, use their
3905 template result (function decl). Don't set up local specializations.
3906 Temporarily turn on processing_template_decl. Update the template type
3907 too.
3908
3909 PR c++/89836 - bool constant expression and explicit conversions.
3910 * call.c (build_converted_constant_expr_internal): New function,
3911 renamed from...
3912 (build_converted_constant_expr): ...this. New.
3913 (build_converted_constant_bool_expr): New.
3914 * cp-tree.h (build_converted_constant_bool_expr): Declare.
3915 * decl.c (build_explicit_specifier): Call
3916 build_converted_constant_bool_expr.
3917
3918 2019-03-28 Jakub Jelinek <jakub@redhat.com>
3919
3920 PR c++/89785
3921 * constexpr.c (struct check_for_return_continue_data): New type.
3922 (check_for_return_continue): New function.
3923 (potential_constant_expression_1) <case SWITCH_STMT>: Walk
3924 SWITCH_STMT_BODY to find RETURN_EXPRs or CONTINUE_STMTs not nested
3925 in loop bodies and set *jump_target to that if found.
3926
3927 2019-03-27 Jason Merrill <jason@redhat.com>
3928
3929 PR c++/89831 - error with qualified-id in const member function.
3930 * semantics.c (finish_non_static_data_member): Use object cv-quals
3931 in scoped case, too.
3932
3933 PR c++/89421 - ICE with lambda in template parameter list.
3934 * parser.c (cp_parser_lambda_expression): Also reject a lambda in a
3935 template parameter list before C++20.
3936 * pt.c (type_dependent_expression_p): True for LAMBDA_EXPR.
3937 * semantics.c (begin_class_definition): Restore error about defining
3938 non-lambda class in template parm list.
3939
3940 2019-03-26 Jason Merrill <jason@redhat.com>
3941
3942 PR c++/86932 - missed SFINAE with empty pack.
3943 * pt.c (coerce_template_parms): Don't add an empty pack if
3944 tf_partial.
3945 (fn_type_unification): Pass tf_partial to coerce_template_parms.
3946
3947 PR c++/86429 - constexpr variable in lambda.
3948 PR c++/82643
3949 PR c++/87327
3950 * constexpr.c (cxx_eval_constant_expression): In a lambda function,
3951 try evaluating the captured variable directly.
3952
3953 2019-03-26 Jakub Jelinek <jakub@redhat.com>
3954
3955 PR c++/89796
3956 * semantics.c (finish_omp_atomic): Add warning_sentinel for
3957 -Wunused-value around finish_expr_stmt call.
3958
3959 2019-03-25 Paolo Carlini <paolo.carlini@oracle.com>
3960
3961 PR c++/84661
3962 PR c++/85013
3963 * parser.c (cp_parser_binary_expression): Don't call cp_fully_fold
3964 to undo the disabling of warnings.
3965
3966 2019-03-25 Jason Merrill <jason@redhat.com>
3967
3968 PR c++/87748 - substitution failure error with decltype.
3969 * pt.c (most_specialized_partial_spec): Clear
3970 processing_template_decl.
3971
3972 2019-03-25 Marek Polacek <polacek@redhat.com>
3973
3974 PR c++/89214 - ICE when initializing aggregates with bases.
3975 * typeck2.c (digest_init_r): Warn about object slicing instead of
3976 crashing.
3977
3978 PR c++/89705 - ICE with reference binding with conversion function.
3979 * call.c (reference_binding): If the result of the conversion function
3980 is a prvalue of non-class type, use the cv-unqualified type.
3981
3982 2019-03-25 Nathan Sidwell <nathan@acm.org>
3983
3984 * lambda.c (maybe_add_lambda_conv_op): Don't add to comdat group.
3985
3986 2019-03-22 Jakub Jelinek <jakub@redhat.com>
3987
3988 PR c++/60702
3989 * cp-tree.h (get_tls_wrapper_fn): Remove declaration.
3990 (maybe_get_tls_wrapper_call): Declare.
3991 * decl2.c (get_tls_wrapper_fn): Make static.
3992 (maybe_get_tls_wrapper_call): New function.
3993 * typeck.c (build_class_member_access_expr): Handle accesses to TLS
3994 variables.
3995 * semantics.c (finish_qualified_id_expr): Likewise.
3996 (finish_id_expression_1): Use maybe_get_tls_wrapper_call.
3997 * pt.c (tsubst_copy_and_build): Likewise.
3998
3999 PR c++/87481
4000 * constexpr.c (struct constexpr_ctx): Add constexpr_ops_count member.
4001 (cxx_eval_constant_expression): When not skipping, not constant class
4002 or location wrapper, increment *ctx->constexpr_ops_count and if it is
4003 above constexpr_loop_nest_limit, diagnose failure.
4004 (cxx_eval_outermost_constant_expr): Add constexpr_ops_count and
4005 initialize ctx.constexpr_ops_count to its address.
4006 (is_sub_constant_expr): Likewise.
4007
4008 2019-03-21 Jakub Jelinek <jakub@redhat.com>
4009
4010 PR c++/71446
4011 * call.c (filed_in_pset): Change pset from hash_set<tree> * to
4012 hash_set<tree, true> &, adjust uses accordingly.
4013 (build_aggr_conv): Change pset from hash_set<tree> *
4014 to hash_set<tree, true>. Replace goto fail; with return NULL;,
4015 adjust pset uses.
4016
4017 PR c++/89767
4018 * parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id
4019 variables, check for duplicates in this function.
4020 * lambda.c (add_capture): Don't check for duplicates nor use
4021 IDENTIFIER_MARKED.
4022 (register_capture_members): Don't clear IDENTIFIER_MARKED here.
4023
4024 2019-03-21 Paolo Carlini <paolo.carlini@oracle.com>
4025
4026 PR c++/89571
4027 * method.c (after_nsdmi_defaulted_late_checks): Avoid passing
4028 error_mark_node to comp_except_specs.
4029
4030 2019-03-20 Jason Merrill <jason@redhat.com>
4031
4032 PR c++/87480 - decltype of member access in default template arg
4033 * pt.c (type_unification_real): Accept a dependent result in
4034 template context.
4035
4036 2019-03-19 Martin Sebor <msebor@redhat.com>
4037
4038 PR tree-optimization/89688
4039 * typeck2.c (store_init_value): Call braced_lists_to_string for more
4040 kinds of initializers.
4041
4042 2019-03-18 Jason Merrill <jason@redhat.com>
4043
4044 PR c++/89630 - ICE with dependent using-decl as template arg.
4045 * tree.c (cp_tree_equal): Always return false for USING_DECL.
4046
4047 PR c++/89761 - ICE with sizeof... in pack expansion.
4048 * pt.c (argument_pack_element_is_expansion_p): Handle
4049 ARGUMENT_PACK_SELECT.
4050
4051 PR c++/89640 - GNU attributes on lambda.
4052 * parser.c (cp_parser_lambda_declarator_opt): Allow GNU attributes.
4053
4054 PR c++/89682 - wrong access error in default argument.
4055 * pt.c (tsubst_default_argument): Don't defer access checks.
4056
4057 2019-03-18 Paolo Carlini <paolo.carlini@oracle.com>
4058
4059 PR c++/85014
4060 * semantics.c (finish_non_static_data_member): Check return value
4061 of context_for_name_lookup and immediately return error_mark_node
4062 if isn't a type.
4063
4064 2019-03-17 Jason Merrill <jason@redhat.com>
4065
4066 PR c++/89571 - ICE with ill-formed noexcept on constructor.
4067 * pt.c (maybe_instantiate_noexcept): Only return false if defaulted.
4068 (regenerate_decl_from_template): Use it for noexcept-specs.
4069
4070 2019-03-14 Jason Merrill <jason@redhat.com>
4071
4072 * parser.c (cp_parser_decl_specifier_seq): Support C++20
4073 concept-definition syntax without 'bool'.
4074
4075 2019-03-14 Jakub Jelinek <jakub@redhat.com>
4076
4077 PR c++/89512
4078 * semantics.c (finish_qualified_id_expr): Reject variable templates.
4079
4080 PR c++/89652
4081 * constexpr.c (struct constexpr_ctx): Change save_exprs type from
4082 hash_set<tree> to vec<tree>.
4083 (cxx_eval_call_expression): Adjust for save_exprs being a vec instead
4084 of hash_set.
4085 (cxx_eval_loop_expr): Likewise. Truncate the vector after each
4086 removal of SAVE_EXPRs from values.
4087 (cxx_eval_constant_expression) <case SAVE_EXPR>: Call safe_push
4088 method on save_exprs instead of add.
4089
4090 2019-03-13 Jason Merrill <jason@redhat.com>
4091
4092 PR c++/86521 - C++17 copy elision in initialization by constructor.
4093 * call.c (joust_maybe_elide_copy): New.
4094 (joust): Call it.
4095
4096 2019-03-13 Marek Polacek <polacek@redhat.com>
4097
4098 PR c++/88979 - further P0634 fix for constructors.
4099 * parser.c (cp_parser_decl_specifier_seq): Pass flags to
4100 cp_parser_constructor_declarator_p.
4101 (cp_parser_direct_declarator): Allow missing typename for constructor
4102 parameters.
4103 (cp_parser_constructor_declarator_p): Add FLAGS parameter. Pass it to
4104 cp_parser_type_specifier.
4105
4106 PR c++/89686 - mixing init-capture and simple-capture in lambda.
4107 * parser.c (cp_parser_lambda_introducer): Give error when combining
4108 init-capture and simple-capture.
4109
4110 PR c++/89660 - bogus error with -Wredundant-move.
4111 * typeck.c (maybe_warn_pessimizing_move): Only accept (T &) &arg
4112 as the std::move's argument. Don't call convert_for_initialization
4113 when warn_redundant_move isn't on.
4114
4115 2019-03-11 Jason Merrill <jason@redhat.com>
4116
4117 PR c++/86521 - wrong overload resolution with ref-qualifiers.
4118 * call.c (build_user_type_conversion_1): Don't use a conversion to a
4119 reference of the wrong rvalueness for direct binding.
4120
4121 2019-03-11 Martin Liska <mliska@suse.cz>
4122
4123 * cvt.c (build_expr_type_conversion): Wrap apostrophes
4124 in gcc internal format with %'.
4125 * decl.c (check_no_redeclaration_friend_default_args): Likewise.
4126 (grokfndecl): Likewise.
4127 * name-lookup.c (do_pushtag): Likewise.
4128 * pt.c (unify_parameter_deduction_failure): Likewise.
4129 (unify_template_deduction_failure): Likewise.
4130
4131 2019-03-11 Martin Liska <mliska@suse.cz>
4132
4133 * call.c (convert_arg_to_ellipsis): Wrap an option name
4134 in a string format message and fix GNU coding style.
4135 (build_over_call): Likewise.
4136 * class.c (check_field_decl): Likewise.
4137 (layout_nonempty_base_or_field): Likewise.
4138 * constexpr.c (cxx_eval_loop_expr): Likewise.
4139 * cvt.c (type_promotes_to): Likewise.
4140 * decl.c (cxx_init_decl_processing): Likewise.
4141 (mark_inline_variable): Likewise.
4142 (grokdeclarator): Likewise.
4143 * decl2.c (record_mangling): Likewise.
4144 * error.c (maybe_warn_cpp0x): Likewise.
4145 * except.c (doing_eh): Likewise.
4146 * mangle.c (maybe_check_abi_tags): Likewise.
4147 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
4148 (cp_parser_userdef_numeric_literal): Likewise.
4149 (cp_parser_primary_expression): Likewise.
4150 (cp_parser_unqualified_id): Likewise.
4151 (cp_parser_pseudo_destructor_name): Likewise.
4152 (cp_parser_builtin_offsetof): Likewise.
4153 (cp_parser_lambda_expression): Likewise.
4154 (cp_parser_lambda_introducer): Likewise.
4155 (cp_parser_lambda_declarator_opt): Likewise.
4156 (cp_parser_selection_statement): Likewise.
4157 (cp_parser_init_statement): Likewise.
4158 (cp_parser_decomposition_declaration): Likewise.
4159 (cp_parser_function_specifier_opt): Likewise.
4160 (cp_parser_static_assert): Likewise.
4161 (cp_parser_simple_type_specifier): Likewise.
4162 (cp_parser_namespace_definition): Likewise.
4163 (cp_parser_using_declaration): Likewise.
4164 (cp_parser_ctor_initializer_opt_and_function_body): Likewise.
4165 (cp_parser_initializer_list): Likewise.
4166 (cp_parser_type_parameter_key): Likewise.
4167 (cp_parser_member_declaration): Likewise.
4168 (cp_parser_try_block): Likewise.
4169 (cp_parser_std_attribute_spec): Likewise.
4170 (cp_parser_requires_clause_opt): Likewise.
4171 * pt.c (check_template_variable): Likewise.
4172 (check_default_tmpl_args): Likewise.
4173 (push_tinst_level_loc): Likewise.
4174 (instantiate_pending_templates): Likewise.
4175 (invalid_nontype_parm_type_p): Likewise.
4176 * repo.c (get_base_filename): Likewise.
4177 * rtti.c (typeid_ok_p): Likewise.
4178 (build_dynamic_cast_1): Likewise.
4179 * tree.c (maybe_warn_parm_abi): Likewise.
4180
4181 2019-03-08 Jakub Jelinek <jakub@redhat.com>
4182
4183 PR other/80058
4184 * parser.c (cp_parser_template_declaration_after_parameters): Avoid
4185 one space before " at the end of line and another after " on another
4186 line in a string literal.
4187
4188 PR tree-optimization/89550
4189 * semantics.c (maybe_convert_cond): Only set TREE_NO_WARNING if
4190 warning_at returned true.
4191 * decl2.c (c_parse_final_cleanups): Likewise.
4192 * typeck.c (convert_for_assignment): Likewise.
4193 * decl.c (finish_function): Likewise.
4194
4195 PR c++/89585
4196 * parser.c (cp_parser_asm_definition): Just warn instead of error
4197 on volatile qualifier outside of function body.
4198
4199 PR c++/89599
4200 * constexpr.c (potential_constant_expression_1): Reject
4201 REINTERPRET_CAST_P NOP_EXPRs.
4202
4203 PR c++/89622
4204 * call.c (joust): Call print_z_candidate only if pedwarn returned
4205 true.
4206
4207 2019-03-07 Jason Merrill <jason@redhat.com>
4208
4209 PR c++/88123 - lambda and using-directive.
4210 * name-lookup.c (op_unqualified_lookup)
4211 (maybe_save_operator_binding, discard_operator_bindings)
4212 (push_operator_bindings): New.
4213 * typeck.c (build_x_binary_op, build_x_unary_op): Call
4214 maybe_save_operator_binding.
4215 * decl.c (start_preparsed_function): Call push_operator_bindings.
4216 * tree.c (cp_free_lang_data): Call discard_operator_bindings.
4217
4218 PR c++/88820 - ICE with CTAD and member template used in DMI.
4219 * pt.c (do_class_deduction): Handle parm used as its own arg.
4220
4221 2019-03-07 Jakub Jelinek <jakub@redhat.com>
4222
4223 PR c++/89585
4224 * parser.c (cp_parser_asm_definition): Parse asm qualifiers even
4225 at toplevel, but diagnose them.
4226
4227 2019-03-06 Jason Merrill <jason@redhat.com>
4228
4229 PR c++/89381 - implicit copy and using-declaration.
4230 * class.c (classtype_has_move_assign_or_move_ctor_p): Don't consider
4231 op= brought in by a using-declaration.
4232
4233 2019-03-06 Jakub Jelinek <jakub@redhat.com>
4234
4235 PR c++/87148
4236 * init.c (build_value_init_noctor): Ignore flexible array members.
4237
4238 2019-03-06 Jason Merrill <jason@redhat.com>
4239
4240 PR c++/89576 - if constexpr of lambda capture.
4241 * semantics.c (maybe_convert_cond): Do convert a non-dependent
4242 condition in a template.
4243 * typeck.c (condition_conversion): Handle being called in a
4244 template.
4245
4246 2019-03-06 Marek Polacek <polacek@redhat.com>
4247
4248 PR c++/87378 - bogus -Wredundant-move warning.
4249 * typeck.c (maybe_warn_pessimizing_move): See if the maybe-rvalue
4250 overload resolution would actually succeed.
4251
4252 2019-03-05 Jason Merrill <jason@redhat.com>
4253
4254 * class.c (is_really_empty_class): Add ignore_vptr parm.
4255 (trivial_default_constructor_is_constexpr): Pass it.
4256 * call.c (build_over_call): Pass it.
4257 * constexpr.c (cxx_eval_constant_expression): Pass it instead of
4258 checking TYPE_POLYMORPHIC_P.
4259 (cxx_eval_component_reference, potential_constant_expression_1):
4260 Pass it.
4261 * cp-gimplify.c (simple_empty_class_p): Pass it.
4262 * init.c (expand_aggr_init_1): Pass it.
4263
4264 2019-03-04 Paolo Carlini <paolo.carlini@oracle.com>
4265
4266 PR c++/84605
4267 * parser.c (cp_parser_class_head): Reject TYPE_BEING_DEFINED too.
4268
4269 2019-03-04 Jakub Jelinek <jakub@redhat.com>
4270
4271 PR c++/71446
4272 * call.c (field_in_pset): New function.
4273 (build_aggr_conv): Handle CONSTRUCTOR_IS_DESIGNATED_INIT correctly.
4274
4275 2019-03-02 Jakub Jelinek <jakub@redhat.com>
4276
4277 PR c++/71446
4278 * cp-tree.h (CONSTRUCTOR_IS_DESIGNATED_INIT): Define.
4279 * parser.c (cp_parser_braced_list): Adjust cp_parser_initializer_list
4280 caller, set CONSTRUCTOR_IS_DESIGNATED_INIT.
4281 (cp_parser_initializer_list): Add designated parameter, set *designated
4282 to a bool whether any designators were parsed.
4283 * decl.c (reshape_init): Copy over CONSTRUCTOR_IS_DESIGNATED_INIT if
4284 needed.
4285 * pt.c (tsubst_copy_and_build): Likewise.
4286 * call.c (implicit_conversion): If CONSTRUCTOR_IS_DESIGNATED_INIT,
4287 don't call build_list_conv, nor build_complex_conv, nor attempt to
4288 convert a single element initializer to scalar.
4289
4290 2019-03-01 Marek Polacek <polacek@redhat.com>
4291
4292 PR c++/89537 - missing location for error with non-static member fn.
4293 * call.c (resolve_args): Use EXPR_LOCATION.
4294 * typeck.c (build_class_member_access_expr): Use input_location.
4295
4296 PR c++/89532 - ICE with incomplete type in decltype.
4297 * semantics.c (finish_compound_literal): Return error_mark_node
4298 if digest_init_flags returns error_mark_node.
4299
4300 2019-03-01 Jakub Jelinek <jakub@redhat.com>
4301
4302 Implement P1002R1, Try-catch blocks in constexpr functions
4303 PR c++/89513
4304 * parser.c (cp_parser_ctor_initializer_opt_and_function_body):
4305 Diagnose constexpr ctor or function with function-try-block with
4306 pedwarn for c++17 and earlier. Formatting fix.
4307 (cp_parser_try_block): Use pedwarn instead of error and only for
4308 c++17 and earlier when try block appears in constexpr function.
4309 * constexpr.c (build_constexpr_constructor_member_initializers):
4310 Handle TRY_BLOCK here instead of erroring on it.
4311
4312 2019-02-28 Jason Merrill <jason@redhat.com>
4313
4314 PR c++/88183 - ICE with .* fold-expression.
4315 * pt.c (fold_expression) [DOTSTAR_EXPR]: Remove special handling.
4316
4317 PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
4318 * class.c, lambda.c, pt.c: Revert earlier change.
4319 * lambda.c (add_capture): Don't special-case capture of dependent
4320 VLA.
4321
4322 * name-lookup.c (print_binding_level): Print this_entity.
4323
4324 2019-02-27 Marek Polacek <polacek@redhat.com>
4325
4326 PR c++/88857 - ICE with value-initialization of argument in template.
4327 * call.c (convert_like_real): Don't call build_value_init in template.
4328
4329 2019-02-27 Jason Merrill <jason@redhat.com>
4330
4331 PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
4332 * semantics.c (process_outer_var_ref): Do capture dependent vars.
4333 * class.c (finish_struct): Only add TAG_DEFN if T is in
4334 current_function_decl.
4335 * lambda.c (vla_capture_type): Force the capture type out into the
4336 lambda's enclosing function.
4337 (add_capture): Pass in the lambda.
4338 * pt.c (tsubst_lambda_expr): complete_type a VLA capture type.
4339
4340 2019-02-27 Marek Polacek <polacek@redhat.com>
4341
4342 PR c++/89511 - ICE with using-declaration and unscoped enumerator.
4343 * parser.c (cp_parser_using_declaration): For an unscoped enum
4344 only use its context if it's not a function declaration.
4345
4346 2019-02-27 Paolo Carlini <paolo.carlini@oracle.com>
4347
4348 PR c++/89488
4349 * method.c (process_subob_fn): When maybe_instantiate_noexcept
4350 returns false don't call merge_exception_specifiers.
4351
4352 2019-02-27 Paolo Carlini <paolo.carlini@oracle.com>
4353
4354 PR c++/88987
4355 * parser.c (cp_parser_noexcept_specification_opt): Return NULL_TREE
4356 for a non-constant parsed expression.
4357
4358 2019-02-26 Jakub Jelinek <jakub@redhat.com>
4359
4360 PR c++/89481
4361 * constexpr.c (cxx_eval_store_expression): When changing active union
4362 member, set no_zero_init.
4363
4364 2019-02-23 Marek Polacek <polacek@redhat.com>
4365
4366 PR c++/88294 - ICE with non-constant noexcept-specifier.
4367 * pt.c (maybe_instantiate_noexcept): Set up the list of local
4368 specializations. Set current_class_{ptr,ref}.
4369
4370 2019-02-22 David Malcolm <dmalcolm@redhat.com>
4371
4372 PR c++/89390
4373 * parser.c (cp_parser_unqualified_id): Capture and use locations
4374 for destructors.
4375
4376 2019-02-22 Marek Polacek <polacek@redhat.com>
4377
4378 PR c++/89420 - ICE with CAST_EXPR in explicit-specifier.
4379 * decl.c (build_explicit_specifier): Don't check
4380 processing_template_decl. Call instantiation_dependent_expression_p
4381 instead of value_dependent_expression_p. Call
4382 instantiate_non_dependent_expr_sfinae before
4383 build_converted_constant_expr instead of calling
4384 instantiate_non_dependent_expr after it. Add
4385 processing_template_decl_sentinel.
4386
4387 2019-02-22 Thomas Schwinge <thomas@codesourcery.com>
4388
4389 * parser.c (cp_parser_oacc_simple_clause): Remove parser formal
4390 parameter, move loc formal parameter to the front. Adjust all
4391 users.
4392 (cp_parser_oacc_shape_clause): Add loc formal parameter. Adjust
4393 all users.
4394
4395 2019-02-21 Jason Merrill <jason@redhat.com>
4396
4397 PR c++/87685 - generic lambda 'this' capture error.
4398 * lambda.c (lambda_expr_this_capture): Change add_capture_p to int.
4399 (maybe_generic_this_capture): Pass -1.
4400
4401 PR c++/88394 - ICE with VLA init-capture.
4402 * lambda.c (is_normal_capture_proxy): Check DECL_CAPTURED_VARIABLE.
4403
4404 PR c++/88869 - C++17 ICE with CTAD and explicit specialization.
4405 * pt.c (do_class_deduction): Don't include explicit specialization
4406 args in outer_args.
4407
4408 PR c++/89422 - ICE with -g and lambda in default arg in template.
4409 * pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner.
4410
4411 2019-02-21 Jason Merrill <jason@redhat.com>
4412
4413 PR c++/88419 - C++17 ICE with class template arg deduction.
4414 * pt.c (make_template_placeholder): Set TYPE_CANONICAL after
4415 CLASS_PLACEHOLDER_TEMPLATE.
4416
4417 2019-02-21 Jakub Jelinek <jakub@redhat.com>
4418
4419 PR c++/89285
4420 * constexpr.c (struct constexpr_fundef): Add parms and result members.
4421 (retrieve_constexpr_fundef): Adjust for the above change.
4422 (register_constexpr_fundef): Save constexpr body with copy_fn,
4423 temporarily set DECL_CONTEXT on DECL_RESULT before that.
4424 (get_fundef_copy): Change FUN argument to FUNDEF with
4425 constexpr_fundef * type, grab body and parms/result out of
4426 constexpr_fundef struct and temporarily change it for copy_fn calls
4427 too.
4428 (cxx_eval_builtin_function_call): For __builtin_FUNCTION temporarily
4429 adjust current_function_decl from ctx->call context. Test
4430 !potential_constant_expression instead of !is_constant_expression.
4431 (cxx_bind_parameters_in_call): Grab parameters from new_call. Undo
4432 convert_for_arg_passing changes for TREE_ADDRESSABLE type passing.
4433 (cxx_eval_call_expression): Adjust get_fundef_copy caller.
4434 (cxx_eval_conditional_expression): For IF_STMT, allow then or else
4435 operands to be NULL.
4436 (label_matches): Handle BREAK_STMT and CONTINUE_STMT.
4437 (cxx_eval_loop_expr): Add support for FOR_STMT, WHILE_STMT and DO_STMT.
4438 (cxx_eval_switch_expr): Add support for SWITCH_STMT.
4439 (cxx_eval_constant_expression): Handle IF_STMT, FOR_STMT, WHILE_STMT,
4440 DO_STMT, CONTINUE_STMT, SWITCH_STMT, BREAK_STMT and CONTINUE_STMT.
4441 For SIZEOF_EXPR, recurse on the result of fold_sizeof_expr. Ignore
4442 DECL_EXPR with USING_DECL operand.
4443 * lambda.c (maybe_add_lambda_conv_op): Build thisarg using
4444 build_int_cst to make it a valid constant expression.
4445
4446 2019-02-20 Jason Merrill <jason@redhat.com>
4447
4448 PR c++/88690 - C++17 ICE with empty base in aggregate.
4449 * typeck2.c (process_init_constructor_record): Skip trivial
4450 initialization of an empty base.
4451
4452 2019-02-21 Richard Biener <rguenther@suse.de>
4453
4454 PR middle-end/89392
4455 * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
4456 make symtab process new functions here.
4457
4458 2019-02-20 Jason Merrill <jason@redhat.com>
4459
4460 PR c++/87921 - wrong error with inline static data member.
4461 * decl2.c (finish_static_data_member_decl): Don't set DECL_IN_AGGR_P
4462 for a non-template inline variable. Do nothing for an
4463 already-instantiated variable.
4464 (c_parse_final_cleanups): Check DECL_IN_AGGR_P without
4465 DECL_INLINE_VAR_P.
4466 * decl.c (check_initializer): Likewise.
4467 (make_rtl_for_nonlocal_decl): Likewise.
4468 * pt.c (instantiate_decl): Likewise.
4469 * typeck2.c (store_init_value): Likewise.
4470
4471 2019-02-20 Jakub Jelinek <jakub@redhat.com>
4472
4473 PR c++/89403
4474 * decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
4475 for flag_syntax_only from here...
4476 * semantics.c (expand_or_defer_fn_1): ... here.
4477
4478 PR c++/89405
4479 * decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
4480 DECL_COMMON, set DECL_INTERFACE_KNOWN.
4481
4482 PR c++/89336
4483 * constexpr.c (cxx_eval_store_expression): Diagnose changing of active
4484 union member for -std=c++17 and earlier.
4485
4486 2019-02-19 Jason Merrill <jason@redhat.com>
4487
4488 PR c++/87513 - 'sorry' mangling PMF template-id.
4489 * mangle.c (write_expression): Handle SCOPE_REF to BASELINK.
4490
4491 2019-02-19 Jason Merrill <jason@redhat.com>
4492
4493 PR c++/88380 - wrong-code with flexible array and NSDMI.
4494 * typeck2.c (process_init_constructor_record): Skip flexarrays.
4495
4496 2019-02-20 will wray <wjwray@gmail.com>
4497
4498 PR c++/88572 - wrong handling of braces on scalar init.
4499 * decl.c (reshape_init_r): Allow braces around scalar initializer
4500 within aggregate init. Reject double braced-init of scalar
4501 variable.
4502
4503 2019-02-20 Paolo Carlini <paolo.carlini@oracle.com>
4504
4505 PR c++/84536
4506 * pt.c (tsubst_init): Diagnose an initializer expanding to an
4507 empty list of expressions; tweak wrt dependent types.
4508 (regenerate_decl_from_template): For VAR_DECLs call tsubst_init
4509 instead of tsubst_expr.
4510
4511 2019-02-19 Jason Merrill <jason@redhat.com>
4512
4513 PR c++/88368 - wrong 'use of deleted function'
4514 * method.c (walk_field_subobs): Remember errors from get_nsdmi.
4515 (get_defaulted_eh_spec): Call push_tinst_level.
4516 * pt.c (maybe_instantiate_noexcept): Keep error_mark_node.
4517 * typeck2.c (merge_exception_specifiers): Handle error_mark_node.
4518
4519 2019-02-19 Chung-Lin Tang <cltang@codesourcery.com>
4520
4521 PR c/87924
4522 * parser.c (cp_parser_oacc_clause_wait): Add representation of wait
4523 clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.
4524
4525 2019-02-19 Jakub Jelinek <jakub@redhat.com>
4526
4527 PR c++/89387
4528 * lambda.c (maybe_generic_this_capture): Don't check
4529 DECL_NONSTATIC_MEMBER_FUNCTION_P on USING_DECLs.
4530
4531 PR c++/89391
4532 * typeck.c (build_reinterpret_cast_1): Don't handle void to
4533 && conversion go through build_target_expr_with_type.
4534
4535 PR c++/89390
4536 * error.c (qualified_name_lookup_error): Only call
4537 suggest_alternative_in_scoped_enum if name is IDENTIFIER_NODE.
4538
4539 2019-02-19 Tom Honermann <tom@honermann.net>
4540
4541 * name-lookup.c (get_std_name_hint): Added u8string as a name hint.
4542
4543 2019-02-18 Jason Merrill <jason@redhat.com>
4544
4545 PR c++/89336 - multiple stores in constexpr stmt.
4546 * constexpr.c (cxx_eval_store_expression): Preevaluate scalar or
4547 assigned value.
4548
4549 * pt.c (check_explicit_specialization): If the declarator is a
4550 template-id, only check whether the arguments are dependent.
4551
4552 Improve duplicate [[likely]] diagnostic.
4553 * parser.c (cp_parser_statement): Make attrs_loc a range. Pass it
4554 to process_stmt_hotness_attribute.
4555 * cp-gimplify.c (process_stmt_hotness_attribute): Take attrs_loc.
4556 (genericize_if_stmt): Use likely/unlikely instead of predictor_name.
4557
4558 2019-02-17 Marek Polacek <polacek@redhat.com>
4559
4560 PR c++/89217 - ICE with list-initialization in range-based for loop.
4561 * constexpr.c (unshare_constructor): No longer static.
4562 * cp-tree.h (unshare_constructor): Declare.
4563 * semantics.c (finish_compound_literal): When dealing with a
4564 non-dependent expression in a template, return the original
4565 expression. Pass LOOKUP_NO_NARROWING to digest_init_flags.
4566
4567 2019-02-13 Marek Polacek <polacek@redhat.com>
4568
4569 PR c++/89297 - ICE with OVERLOAD in template.
4570 * semantics.c (finish_compound_literal): Call
4571 instantiate_non_dependent_expr_sfinae.
4572
4573 2019-02-13 Alexandre Oliva <aoliva@redhat.com>
4574
4575 PR c++/86379
4576 * cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
4577 * name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
4578 * search.c (protected_accessible_p): Follow USING_DECL_DECLS.
4579 (shared_member_p): Likewise.
4580 (lookup_member): Likewise.
4581 * decl.c (grok_special_member_properties): Skip USING_DECLs.
4582 * semantics.c (finish_omp_declare_simd_methods): Likewise.
4583 (finish_qualified_id_expr): Do not call shared_member_p with
4584 a dependent expr.
4585
4586 PR c++/87322
4587 * pt.c (tsubst_lambda_expr): Avoid duplicate tsubsting.
4588 Move cp_evaluated resetting before signature tsubsting.
4589 (gen_elem_of_pack_expansion_instantiation): Separate local
4590 specializations per index.
4591
4592 2019-02-13 David Malcolm <dmalcolm@redhat.com>
4593
4594 PR c++/89036
4595 * class.c (add_method): Drop destructor assertion.
4596
4597 2019-02-13 Paolo Carlini <paolo.carlini@oracle.com>
4598
4599 PR c++/88986
4600 * decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
4601 context (the first argument).
4602 * pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
4603 as context.
4604
4605 2019-02-12 Jason Merrill <jason@redhat.com>
4606
4607 PR c++/89144 - link error with constexpr initializer_list.
4608 * call.c (convert_like_real) [ck_list]: Don't allocate a temporary
4609 array for an empty list.
4610 * typeck2.c (store_init_value): Don't use cxx_constant_init in a
4611 template.
4612
4613 2019-02-11 Jason Merrill <jason@redhat.com>
4614
4615 PR c++/89241 - ICE with __func__ in lambda in template.
4616 * pt.c (enclosing_instantiation_of): Also check
4617 instantiated_lambda_fn_p for the template context.
4618
4619 2019-02-11 Marek Polacek <polacek@redhat.com>
4620
4621 PR c++/89212 - ICE converting nullptr to pointer-to-member-function.
4622 * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for
4623 null member pointer value.
4624
4625 2019-02-11 Jakub Jelinek <jakub@redhat.com>
4626
4627 PR c++/88977
4628 * pt.c (convert_nontype_argument): Pass true as manifestly_const_eval
4629 to maybe_constant_value calls.
4630
4631 2019-02-11 Marek Polacek <polacek@redhat.com>
4632
4633 * typeck2.c (digest_init_r): Remove commented code.
4634
4635 2019-02-11 Martin Sebor <msebor@redhat.com>
4636
4637 PR c++/87996
4638 * decl.c (compute_array_index_type_loc): Preserve signed sizes
4639 for diagnostics. Call valid_array_size_p instead of error.
4640 * init.c (build_new_1): Compute size for diagnostic. Call
4641 invalid_array_size_error
4642 (build_new): Call valid_array_size_p instead of error.
4643
4644 2019-02-07 Alexandre Oliva <aoliva@redhat.com>
4645
4646 PR c++/86218
4647 * call.c (compare_ics): Deal with ck_aggr in either cs.
4648
4649 2019-02-06 David Malcolm <dmalcolm@redhat.com>
4650
4651 PR c++/71302
4652 * call.c (get_location_for_expr_unwinding_for_system_header): New
4653 function.
4654 (conversion_null_warnings): Use it when getting locations for
4655 EXPR, effectively adding a call to
4656 get_location_for_expr_unwinding_for_system_header for
4657 -Wconversion-null and making use of EXPR_LOCATION for
4658 -Wzero-as-null-pointer-constant.
4659
4660 2019-02-05 Jakub Jelinek <jakub@redhat.com>
4661
4662 PR c++/89187
4663 * optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
4664 PARM_DECLs of the thunk.
4665 * lambda.c (maybe_add_lambda_conv_op): Likewise.
4666
4667 2019-02-05 Marek Polacek <polacek@redhat.com>
4668
4669 PR c++/89158 - by-value capture of constexpr variable broken.
4670 * call.c (convert_like_real) <case ck_user>: Call mark_exp_read
4671 instead of mark_rvalue_use.
4672
4673 2019-02-05 Alexandre Oliva <aoliva@redhat.com>
4674
4675 PR c++/87770
4676 * pt.c (instantiates_primary_template_p): New.
4677 (type_dependent_expression_p): Use it.
4678
4679 2019-02-01 Jason Merrill <jason@redhat.com>
4680
4681 PR c++/88761 - ICE with reference capture of constant.
4682 * lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for
4683 non-proxy decls.
4684
4685 2019-02-01 Marek Polacek <polacek@redhat.com>
4686
4687 PR c++/88325 - ICE with invalid out-of-line template member definition.
4688 * parser.c (cp_parser_class_name): Don't call make_typename_type
4689 for overloads.
4690
4691 2019-02-01 Jakub Jelinek <jakub@redhat.com>
4692
4693 PR c++/87175
4694 * parser.c (cp_parser_gnu_attributes_opt): Set ok to false
4695 if require_open failed.
4696
4697 2019-01-31 Marek Polacek <polacek@redhat.com>
4698
4699 PR c++/89083, c++/80864 - ICE with list initialization in template.
4700 * constexpr.c (adjust_temp_type): Use copy_node and change the type
4701 instead of using build_constructor.
4702 * decl.c (reshape_init_r): Don't reshape a digested initializer.
4703 Return the initializer for COMPOUND_LITERAL_P.
4704
4705 PR c++/88983 - ICE with switch in constexpr function.
4706 * constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
4707 (cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
4708 label in the else branch if we found it in the then branch.
4709
4710 2019-01-30 Jason Merrill <jason@redhat.com>
4711
4712 PR c++/88752 - ICE with lambda and constexpr if.
4713 * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
4714 * pt.c (tsubst_lambda_expr): Set it.
4715 (instantiated_lambda_fn_p): Check it.
4716 (enclosing_instantiation_of): Use it.
4717
4718 2019-01-31 Jakub Jelinek <jakub@redhat.com>
4719
4720 PR libstdc++/88170
4721 * cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
4722 a C cast in pp_c_flag_gnu_v3 mode.
4723
4724 2019-01-30 Jakub Jelinek <jakub@redhat.com>
4725
4726 PR c++/88988
4727 * lambda.c (is_capture_proxy): Don't return true for
4728 DECL_OMP_PRIVATIZED_MEMBER artificial vars.
4729
4730 2019-01-30 Marek Polacek <polacek@redhat.com>
4731
4732 PR c++/89119 - ICE with value-initialization in template.
4733 * pt.c (tsubst_copy_and_build): Handle RANGE_EXPR.
4734
4735 2019-01-29 Jason Merrill <jason@redhat.com>
4736
4737 PR c++/86943 - wrong code converting lambda to function pointer.
4738 * lambda.c (maybe_add_lambda_conv_op): Use a template-id in the
4739 call. Only forward parms for decltype.
4740 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P
4741 specially.
4742 * typeck.c (check_return_expr): Don't mess with a thunk call.
4743
4744 2019-01-28 Jason Merrill <jason@redhat.com>
4745
4746 PR c++/89089 - ICE with [[no_unique_address]].
4747 PR c++/88865 - wrong layout with [[no_unique_address]].
4748 * class.c (check_field_decls): A potentially-overlapping field makes
4749 the class non-layout-POD, but not non-empty.
4750 (end_of_class): Always consider empty data members.
4751 (layout_class_type): Set DECL_SIZE for empty fields.
4752
4753 2019-01-28 Marek Polacek <polacek@redhat.com>
4754
4755 PR c++/88358 - name wrongly treated as type.
4756 * parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
4757 in parameter-list is a type if the function's declarator-id is not
4758 qualified.
4759
4760 2019-01-27 Marek Polacek <polacek@redhat.com>
4761
4762 PR c++/88815 - narrowing conversion lost in decltype.
4763 PR c++/78244 - narrowing conversion in template not detected.
4764 * cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
4765 * pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
4766 CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
4767 * semantics.c (finish_compound_literal): When the compound literal
4768 isn't instantiation-dependent and the type isn't type-dependent,
4769 fall back to the normal processing. Set CONSTRUCTOR_IS_DEPENDENT.
4770
4771 PR c++/89024 - ICE with incomplete enum type.
4772 * call.c (standard_conversion): When converting an
4773 ARITHMETIC_TYPE_P to an incomplete type, return NULL.
4774
4775 2019-01-25 Paolo Carlini <paolo.carlini@oracle.com>
4776
4777 PR c++/88969
4778 * call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
4779 * decl2.c (coerce_delete_type): Use build_pointer_type instead
4780 of TYPE_POINTER_TO.
4781
4782 2019-01-24 Jason Merrill <jason@redhat.com>
4783
4784 PR c++/89001 - mangling of reference temporaries
4785 * cp-tree.h (struct saved_scope): Add ref_temp_count.
4786 (current_ref_temp_count): New macro.
4787 * mangle.c (mangle_ref_init_variable): Use it.
4788 * typeck2.c (store_init_value): Clear it.
4789 * call.c (make_temporary_var_for_ref_to_temp): Copy public and
4790 comdat.
4791
4792 2019-01-24 Jakub Jelinek <jakub@redhat.com>
4793
4794 PR c++/88976
4795 * semantics.c (finish_omp_cancel): Diagnose more than one if
4796 on #pragma omp cancel with different modifiers. Use
4797 maybe_convert_cond when not in template or build_x_binary_op
4798 otherwise.
4799
4800 2019-01-23 Marek Polacek <polacek@redhat.com>
4801
4802 PR c++/88757 - qualified name treated wrongly as type.
4803 * parser.c (cp_parser_direct_declarator): Don't treat qualified-ids
4804 in parameter-list as types if name lookup for declarator-id didn't
4805 find one or more function templates.
4806
4807 2019-01-23 Jakub Jelinek <jakub@redhat.com>
4808
4809 PR c/44715
4810 * cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
4811 after genericizing cond and incr expressions.
4812
4813 PR c++/88984
4814 * cp-gimplify.c (genericize_switch_stmt): Move cond genericization
4815 before the begin_bc_block call.
4816
4817 2019-01-21 Jason Merrill <jason@redhat.com>
4818
4819 PR c++/87893 - constexpr ctor ICE on ARM.
4820 PR c++/88293 - ICE with comma expression.
4821 * constexpr.c (initialized_type): Don't shortcut non-void type.
4822 Handle COMPOUND_EXPR.
4823 (cxx_eval_outermost_constant_expr): Return early for void type.
4824
4825 2019-01-21 Jakub Jelinek <jakub@redhat.com>
4826
4827 PR c++/88949
4828 * optimize.c (cxx_copy_decl): New function.
4829 (clone_body): Use it instead of copy_decl_no_change.
4830
4831 PR sanitizer/88901
4832 * typeck.c (cp_build_binary_op): Don't instrument
4833 SANITIZE_POINTER_COMPARE if processing_template_decl.
4834 (pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
4835
4836 2019-01-18 Jason Merrill <jason@redhat.com>
4837
4838 PR c++/88875 - error with explicit list constructor.
4839 * call.c (reference_binding): Don't modify EXPR. Set
4840 need_temporary_p on the ck_user conversion for a temporary.
4841 (convert_like_real): Check it.
4842
4843 2019-01-18 H.J. Lu <hongjiu.lu@intel.com>
4844
4845 PR c/51628
4846 PR c/88664
4847 * call.c (convert_for_arg_passing): Upate the
4848 warn_for_address_or_pointer_of_packed_member call.
4849 * typeck.c (convert_for_assignment): Likewise.
4850
4851 2019-01-17 Jason Merrill <jason@redhat.com>
4852
4853 PR c++/86205 - ICE with ?: of throw and template-id.
4854 * pt.c (resolve_nondeduced_context_or_error): Split out from...
4855 * typeck.c (decay_conversion): ...here.
4856 * call.c (build_conditional_expr_1): Use it.
4857
4858 PR c++/86740, ICE with constexpr if and nested generic lambdas.
4859 * tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.
4860
4861 2019-01-17 Paolo Carlini <paolo.carlini@oracle.com>
4862
4863 * decl.c (grokdeclarator): Use typespec_loc in error messages
4864 about 'auto' and trailing return type.
4865
4866 2019-01-17 David Malcolm <dmalcolm@redhat.com>
4867
4868 PR c++/88699
4869 * class.c (add_method): Don't use DECL_DESTRUCTOR_P on
4870 USING_DECLs.
4871
4872 2019-01-17 Nathan Sidwell <nathan@acm.org>
4873
4874 PR c++/86610
4875 * semantics.c (process_outer_var_ref): Only skip dependent types
4876 in templates.
4877
4878 2019-01-17 Alexandre Oliva <aoliva@redhat.com>
4879
4880 PR c++/87768
4881 * cp-tree.h (saved_scope): Add suppress_location_wrappers.
4882 * name-lookup.c (do_push_to_top_level): Save and reset it.
4883 (do_pop_from_top_level): Restore it.
4884
4885 PR c++/86648
4886 * pt.c (make_template_placeholder): Use auto_identifier.
4887 (is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
4888 * error.c (dump_type): Handle template placeholders.
4889 * cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.
4890
4891 PR c++/88146
4892 * cvt.c (convert_to_void): Handle all cdtor calls as if
4893 returning void.
4894
4895 2019-01-16 Paolo Carlini <paolo.carlini@oracle.com>
4896
4897 * decl.c (grokdeclarator): Use locations[ds_storage_class] in
4898 error messages about ill-formed uses of mutable.
4899
4900 2019-01-16 Marek Polacek <polacek@redhat.com>
4901
4902 PR c++/78244 - narrowing conversion in template not detected.
4903 * call.c (perform_implicit_conversion_flags): Set
4904 IMPLICIT_CONV_EXPR_BRACED_INIT.
4905 * cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
4906 * pt.c (tsubst_copy_and_build): Use it.
4907
4908 2019-01-15 David Malcolm <dmalcolm@redhat.com>
4909
4910 PR c++/88795
4911 * pt.c (build_deduction_guide): Bail out if tsubst_arg_types
4912 fails.
4913
4914 2019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
4915
4916 * decl.c (start_decl): Improve error location.
4917 * decl2.c (grokfield): Likewise.
4918
4919 2019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
4920
4921 * decl.c (grokdeclarator): Move further up the location_t loc
4922 declaration and use the location when building a TYPE_DECL for
4923 a typedef name.
4924 * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
4925 about an ill-formed bit-field as typedef.
4926
4927 2019-01-14 Marek Polacek <polacek@redhat.com>
4928
4929 PR c++/88830 - ICE with abstract class.
4930 * decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
4931 Fix formatting.
4932
4933 PR c++/88825 - ICE with bogus function return type deduction.
4934 * typeck.c (can_do_nrvo_p): Check error_mark_node.
4935
4936 2019-01-14 Tom Honermann <tom@honermann.net>
4937
4938 Implement P0482R5, char8_t: A type for UTF-8 characters and strings
4939 * cvt.c (type_promotes_to): Handle char8_t promotion.
4940 * decl.c (grokdeclarator): Handle invalid type specifier
4941 combinations involving char8_t.
4942 * lex.c (init_reswords): Add char8_t as a reserved word.
4943 * mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
4944 * parser.c (cp_keyword_starts_decl_specifier_p)
4945 (cp_parser_simple_type_specifier): Recognize char8_t as a simple
4946 type specifier.
4947 (cp_parser_string_literal): Use char8_array_type_node for the type
4948 of CPP_UTF8STRING.
4949 (cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
4950 headers.
4951 * rtti.c (emit_support_tinfos): type_info support for char8_t.
4952 * tree.c (char_type_p): Recognize char8_t as a character type.
4953 * typeck.c (string_conv_p): Handle conversions of u8 string
4954 literals of char8_t type.
4955 (check_literal_operator_args): Handle UDLs with u8 string literals
4956 of char8_t type.
4957 * typeck2.c (ordinary_char_type_p): New.
4958 (digest_init_r): Disallow initializing a char array with a u8 string
4959 literal.
4960
4961 2019-01-14 Martin Liska <mliska@suse.cz>
4962
4963 PR gcov-profile/88263
4964 * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
4965 as location of the TLS wrapper.
4966
4967 2019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
4968
4969 * decl.c (cp_finish_decl): Improve error location.
4970 * decl2.c (grokfield): Likewise, improve two locations.
4971
4972 2019-01-11 Marek Polacek <polacek@redhat.com>
4973
4974 PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
4975 * typeck.c (maybe_warn_pessimizing_move): Return if ARG isn't
4976 ADDR_EXPR.
4977
4978 2019-01-11 Jason Merrill <jason@redhat.com>
4979
4980 PR c++/88312 - pack expansion of decltype.
4981 * pt.c (instantiation_dependent_r): A template non-type parameter
4982 pack is instantiation-dependent.
4983
4984 2019-01-11 Jason Merrill <jason@redhat.com>
4985
4986 PR c++/88613 - ICE with use of const var in lambda.
4987 * expr.c (mark_use): Fix location wrapper handling.
4988 * cp-gimplify.c (cp_fold_maybe_rvalue): Call mark_rvalue_use.
4989
4990 2019-01-11 Tobias Burnus <burnus@net-b.de>
4991
4992 PR C++/88114
4993 * decl2.c (maybe_emit_vtables): If needed, generate code for
4994 the destructor of an abstract class.
4995 (mark_used): Update comment for older function-name change.
4996
4997 2019-01-11 Paolo Carlini <paolo.carlini@oracle.com>
4998
4999 * decl.c (start_decl): Improve error location.
5000 (grokdeclarator): Likewise, improve two locations.
5001
5002 2019-01-09 Sandra Loosemore <sandra@codesourcery.com>
5003
5004 PR other/16615
5005
5006 * cp-tree.h: Mechanically replace "can not" with "cannot".
5007 * parser.c: Likewise.
5008 * pt.c: Likewise.
5009
5010 2019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
5011
5012 * decl.c (grok_reference_init): Improve error location.
5013 (grokdeclarator): Likewise, improve two locations.
5014
5015 2019-01-08 Marek Polacek <polacek@redhat.com>
5016
5017 PR c++/88538 - braced-init-list in template-argument-list.
5018 * parser.c (cp_parser_template_argument): Handle braced-init-list when
5019 in C++20.
5020
5021 PR c++/88548 - this accepted in static member functions.
5022 * parser.c (cp_debug_parser): Adjust printing of
5023 local_variables_forbidden_p.
5024 (cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
5025 (cp_parser_primary_expression): When checking
5026 local_variables_forbidden_p, use THIS_FORBIDDEN or
5027 LOCAL_VARS_FORBIDDEN.
5028 (cp_parser_lambda_body): Update the type of
5029 local_variables_forbidden_p. Set it to 0 rather than false.
5030 (cp_parser_condition): Adjust call to cp_parser_declarator.
5031 (cp_parser_explicit_instantiation): Likewise.
5032 (cp_parser_init_declarator): Likewise.
5033 (cp_parser_declarator): New parameter. Use it.
5034 (cp_parser_direct_declarator): New parameter. Use it to set
5035 local_variables_forbidden_p. Adjust call to cp_parser_declarator.
5036 (cp_parser_type_id_1): Adjust call to cp_parser_declarator.
5037 (cp_parser_parameter_declaration): Likewise.
5038 (cp_parser_default_argument): Update the type of
5039 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
5040 rather than true.
5041 (cp_parser_member_declaration): Tell cp_parser_declarator if we saw
5042 'static' or 'friend'.
5043 (cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
5044 (cp_parser_late_parsing_default_args): Update the type of
5045 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
5046 rather than true.
5047 (cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
5048 (cp_parser_objc_class_ivars): Likewise.
5049 (cp_parser_objc_struct_declaration): Likewise.
5050 (cp_parser_omp_for_loop_init): Likewise.
5051 * parser.h (cp_parser): Change the type of local_variables_forbidden_p
5052 to unsigned char.
5053 (LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
5054 Define.
5055
5056 2019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
5057
5058 * decl.c (start_decl): Improve permerror location.
5059
5060 2019-01-08 Jonathan Wakely <jwakely@redhat.com>
5061 Jakub Jelinek <jakub@redhat.com>
5062
5063 PR c++/88554
5064 * decl.c (finish_function): For -Wreturn-type don't add a return *this;
5065 fixit hint if current_class_ref is NULL. Use a single if instead of
5066 two nested ones.
5067
5068 2019-01-07 Paolo Carlini <paolo.carlini@oracle.com>
5069
5070 * decl.c (start_decl): Improve two error_at locations.
5071 (expand_static_init): Likewise.
5072
5073 2019-01-07 Marek Polacek <polacek@redhat.com>
5074
5075 PR c++/88741 - wrong error with initializer-string.
5076 * decl.c (cp_complete_array_type): Strip any location wrappers.
5077
5078 2019-01-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
5079
5080 PR c++/88261
5081 PR c++/69338
5082 PR c++/69696
5083 PR c++/69697
5084 * cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
5085 * typeck2.c (digest_init_r): Raise an error for non-static
5086 initialization of a flexible array member.
5087 (process_init_constructor, massage_init_elt,
5088 process_init_constructor_array, process_init_constructor_record,
5089 process_init_constructor_union, process_init_constructor): Add the
5090 flags parameter and pass it thru.
5091 (store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
5092 digest_init_flags for static decls.
5093
5094 2019-01-07 Jakub Jelinek <jakub@redhat.com>
5095
5096 PR c++/85052
5097 * cp-tree.h (cp_build_vec_convert): Declare.
5098 * parser.c (cp_parser_postfix_expression): Parse
5099 __builtin_convertvector.
5100 * constexpr.c: Include fold-const-call.h.
5101 (cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
5102 (potential_constant_expression_1): Likewise.
5103 * semantics.c (cp_build_vec_convert): New function.
5104 * pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
5105 IFN_VEC_CONVERT.
5106
5107 2019-01-03 Jakub Jelinek <jakub@redhat.com>
5108
5109 PR c++/88636
5110 * decl.c (builtin_function_1): Return result of pushdecl_top_level
5111 or pushdecl rather than decl.
5112
5113 2019-01-03 Paolo Carlini <paolo.carlini@oracle.com>
5114
5115 * tree.c (handle_nodiscard_attribute): Improve warning location.
5116
5117 2019-01-02 Marek Polacek <polacek@redhat.com>
5118
5119 PR c++/88612 - ICE with -Waddress-of-packed-member.
5120 * call.c (convert_for_arg_passing): Only give warnings with tf_warning.
5121 * typeck.c (convert_for_assignment): Likewise.
5122
5123 PR c++/88631 - CTAD failing for value-initialization.
5124 * typeck2.c (build_functional_cast): Try deducing the template
5125 arguments even if there are no arguments to deduce from.
5126
5127 2019-01-01 Jakub Jelinek <jakub@redhat.com>
5128
5129 Update copyright years.
5130 \f
5131 Copyright (C) 2019 Free Software Foundation, Inc.
5132
5133 Copying and distribution of this file, with or without modification,
5134 are permitted in any medium without royalty provided the copyright
5135 notice and this notice are preserved.