]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cp/ChangeLog
PR c++/89705 - ICE with reference binding with conversion function.
[thirdparty/gcc.git] / gcc / cp / ChangeLog
CommitLineData
1de8eb3e 12019-03-25 Marek Polacek <polacek@redhat.com>
2
3 PR c++/89705 - ICE with reference binding with conversion function.
4 * call.c (reference_binding): If the result of the conversion function
5 is a prvalue of non-class type, use the cv-unqualified type.
6
37682124 72019-03-25 Nathan Sidwell <nathan@acm.org>
8
9 * lambda.c (maybe_add_lambda_conv_op): Don't add to comdat group.
10
84f13b2f 112019-03-22 Jakub Jelinek <jakub@redhat.com>
12
8815602b 13 PR c++/60702
14 * cp-tree.h (get_tls_wrapper_fn): Remove declaration.
15 (maybe_get_tls_wrapper_call): Declare.
16 * decl2.c (get_tls_wrapper_fn): Make static.
17 (maybe_get_tls_wrapper_call): New function.
18 * typeck.c (build_class_member_access_expr): Handle accesses to TLS
19 variables.
20 * semantics.c (finish_qualified_id_expr): Likewise.
21 (finish_id_expression_1): Use maybe_get_tls_wrapper_call.
22 * pt.c (tsubst_copy_and_build): Likewise.
23
84f13b2f 24 PR c++/87481
25 * constexpr.c (struct constexpr_ctx): Add constexpr_ops_count member.
26 (cxx_eval_constant_expression): When not skipping, not constant class
27 or location wrapper, increment *ctx->constexpr_ops_count and if it is
28 above constexpr_loop_nest_limit, diagnose failure.
29 (cxx_eval_outermost_constant_expr): Add constexpr_ops_count and
30 initialize ctx.constexpr_ops_count to its address.
31 (is_sub_constant_expr): Likewise.
32
654b4632 332019-03-21 Jakub Jelinek <jakub@redhat.com>
34
f03d9a13 35 PR c++/71446
36 * call.c (filed_in_pset): Change pset from hash_set<tree> * to
37 hash_set<tree, true> &, adjust uses accordingly.
38 (build_aggr_conv): Change pset from hash_set<tree> *
39 to hash_set<tree, true>. Replace goto fail; with return NULL;,
40 adjust pset uses.
41
654b4632 42 PR c++/89767
43 * parser.c (cp_parser_lambda_introducer): Add ids and first_capture_id
44 variables, check for duplicates in this function.
45 * lambda.c (add_capture): Don't check for duplicates nor use
46 IDENTIFIER_MARKED.
47 (register_capture_members): Don't clear IDENTIFIER_MARKED here.
48
e6c0a0e8 492019-03-21 Paolo Carlini <paolo.carlini@oracle.com>
50
51 PR c++/89571
52 * method.c (after_nsdmi_defaulted_late_checks): Avoid passing
53 error_mark_node to comp_except_specs.
54
0f86e901 552019-03-20 Jason Merrill <jason@redhat.com>
56
57 PR c++/87480 - decltype of member access in default template arg
58 * pt.c (type_unification_real): Accept a dependent result in
59 template context.
60
dc0cf270 612019-03-19 Martin Sebor <msebor@redhat.com>
62
63 PR tree-optimization/89688
64 * typeck2.c (store_init_value): Call braced_lists_to_string for more
65 kinds of initializers.
66
640c769f 672019-03-18 Jason Merrill <jason@redhat.com>
68
56c3aeaa 69 PR c++/89630 - ICE with dependent using-decl as template arg.
70 * tree.c (cp_tree_equal): Always return false for USING_DECL.
71
c821b0ef 72 PR c++/89761 - ICE with sizeof... in pack expansion.
73 * pt.c (argument_pack_element_is_expansion_p): Handle
74 ARGUMENT_PACK_SELECT.
75
4273f124 76 PR c++/89640 - GNU attributes on lambda.
77 * parser.c (cp_parser_lambda_declarator_opt): Allow GNU attributes.
78
640c769f 79 PR c++/89682 - wrong access error in default argument.
80 * pt.c (tsubst_default_argument): Don't defer access checks.
81
24c67877 822019-03-18 Paolo Carlini <paolo.carlini@oracle.com>
83
84 PR c++/85014
85 * semantics.c (finish_non_static_data_member): Check return value
86 of context_for_name_lookup and immediately return error_mark_node
87 if isn't a type.
88
ce139b21 892019-03-17 Jason Merrill <jason@redhat.com>
90
91 PR c++/89571 - ICE with ill-formed noexcept on constructor.
92 * pt.c (maybe_instantiate_noexcept): Only return false if defaulted.
93 (regenerate_decl_from_template): Use it for noexcept-specs.
94
773c8785 952019-03-14 Jason Merrill <jason@redhat.com>
96
97 * parser.c (cp_parser_decl_specifier_seq): Support C++20
98 concept-definition syntax without 'bool'.
99
d0782a7e 1002019-03-14 Jakub Jelinek <jakub@redhat.com>
101
c17b0b28 102 PR c++/89512
103 * semantics.c (finish_qualified_id_expr): Reject variable templates.
104
d0782a7e 105 PR c++/89652
106 * constexpr.c (struct constexpr_ctx): Change save_exprs type from
107 hash_set<tree> to vec<tree>.
108 (cxx_eval_call_expression): Adjust for save_exprs being a vec instead
109 of hash_set.
110 (cxx_eval_loop_expr): Likewise. Truncate the vector after each
111 removal of SAVE_EXPRs from values.
112 (cxx_eval_constant_expression) <case SAVE_EXPR>: Call safe_push
113 method on save_exprs instead of add.
114
d28a979f 1152019-03-13 Jason Merrill <jason@redhat.com>
116
117 PR c++/86521 - C++17 copy elision in initialization by constructor.
118 * call.c (joust_maybe_elide_copy): New.
119 (joust): Call it.
120
e214ee76 1212019-03-13 Marek Polacek <polacek@redhat.com>
122
123 PR c++/88979 - further P0634 fix for constructors.
124 * parser.c (cp_parser_decl_specifier_seq): Pass flags to
125 cp_parser_constructor_declarator_p.
126 (cp_parser_direct_declarator): Allow missing typename for constructor
127 parameters.
128 (cp_parser_constructor_declarator_p): Add FLAGS parameter. Pass it to
129 cp_parser_type_specifier.
130
3c78ad42 131 PR c++/89686 - mixing init-capture and simple-capture in lambda.
132 * parser.c (cp_parser_lambda_introducer): Give error when combining
133 init-capture and simple-capture.
134
8b953246 135 PR c++/89660 - bogus error with -Wredundant-move.
136 * typeck.c (maybe_warn_pessimizing_move): Only accept (T &) &arg
137 as the std::move's argument. Don't call convert_for_initialization
138 when warn_redundant_move isn't on.
139
4ca87658 1402019-03-11 Jason Merrill <jason@redhat.com>
141
142 PR c++/86521 - wrong overload resolution with ref-qualifiers.
143 * call.c (build_user_type_conversion_1): Don't use a conversion to a
144 reference of the wrong rvalueness for direct binding.
145
f2a60d44 1462019-03-11 Martin Liska <mliska@suse.cz>
147
148 * cvt.c (build_expr_type_conversion): Wrap apostrophes
149 in gcc internal format with %'.
150 * decl.c (check_no_redeclaration_friend_default_args): Likewise.
151 (grokfndecl): Likewise.
152 * name-lookup.c (do_pushtag): Likewise.
153 * pt.c (unify_parameter_deduction_failure): Likewise.
154 (unify_template_deduction_failure): Likewise.
155
2f6d557f 1562019-03-11 Martin Liska <mliska@suse.cz>
157
158 * call.c (convert_arg_to_ellipsis): Wrap an option name
159 in a string format message and fix GNU coding style.
160 (build_over_call): Likewise.
161 * class.c (check_field_decl): Likewise.
162 (layout_nonempty_base_or_field): Likewise.
163 * constexpr.c (cxx_eval_loop_expr): Likewise.
164 * cvt.c (type_promotes_to): Likewise.
165 * decl.c (cxx_init_decl_processing): Likewise.
166 (mark_inline_variable): Likewise.
167 (grokdeclarator): Likewise.
168 * decl2.c (record_mangling): Likewise.
169 * error.c (maybe_warn_cpp0x): Likewise.
170 * except.c (doing_eh): Likewise.
171 * mangle.c (maybe_check_abi_tags): Likewise.
172 * parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
173 (cp_parser_userdef_numeric_literal): Likewise.
174 (cp_parser_primary_expression): Likewise.
175 (cp_parser_unqualified_id): Likewise.
176 (cp_parser_pseudo_destructor_name): Likewise.
177 (cp_parser_builtin_offsetof): Likewise.
178 (cp_parser_lambda_expression): Likewise.
179 (cp_parser_lambda_introducer): Likewise.
180 (cp_parser_lambda_declarator_opt): Likewise.
181 (cp_parser_selection_statement): Likewise.
182 (cp_parser_init_statement): Likewise.
183 (cp_parser_decomposition_declaration): Likewise.
184 (cp_parser_function_specifier_opt): Likewise.
185 (cp_parser_static_assert): Likewise.
186 (cp_parser_simple_type_specifier): Likewise.
187 (cp_parser_namespace_definition): Likewise.
188 (cp_parser_using_declaration): Likewise.
189 (cp_parser_ctor_initializer_opt_and_function_body): Likewise.
190 (cp_parser_initializer_list): Likewise.
191 (cp_parser_type_parameter_key): Likewise.
192 (cp_parser_member_declaration): Likewise.
193 (cp_parser_try_block): Likewise.
194 (cp_parser_std_attribute_spec): Likewise.
195 (cp_parser_requires_clause_opt): Likewise.
196 * pt.c (check_template_variable): Likewise.
197 (check_default_tmpl_args): Likewise.
198 (push_tinst_level_loc): Likewise.
199 (instantiate_pending_templates): Likewise.
200 (invalid_nontype_parm_type_p): Likewise.
201 * repo.c (get_base_filename): Likewise.
202 * rtti.c (typeid_ok_p): Likewise.
203 (build_dynamic_cast_1): Likewise.
204 * tree.c (maybe_warn_parm_abi): Likewise.
205
29005d9c 2062019-03-08 Jakub Jelinek <jakub@redhat.com>
207
000969f9 208 PR other/80058
209 * parser.c (cp_parser_template_declaration_after_parameters): Avoid
210 one space before " at the end of line and another after " on another
211 line in a string literal.
212
94a62c5a 213 PR tree-optimization/89550
214 * semantics.c (maybe_convert_cond): Only set TREE_NO_WARNING if
215 warning_at returned true.
216 * decl2.c (c_parse_final_cleanups): Likewise.
217 * typeck.c (convert_for_assignment): Likewise.
218 * decl.c (finish_function): Likewise.
219
222c113b 220 PR c++/89585
221 * parser.c (cp_parser_asm_definition): Just warn instead of error
222 on volatile qualifier outside of function body.
223
92651efb 224 PR c++/89599
225 * constexpr.c (potential_constant_expression_1): Reject
226 REINTERPRET_CAST_P NOP_EXPRs.
227
29005d9c 228 PR c++/89622
229 * call.c (joust): Call print_z_candidate only if pedwarn returned
230 true.
231
bddb19c4 2322019-03-07 Jason Merrill <jason@redhat.com>
233
84982f0e 234 PR c++/88123 - lambda and using-directive.
235 * name-lookup.c (op_unqualified_lookup)
236 (maybe_save_operator_binding, discard_operator_bindings)
237 (push_operator_bindings): New.
238 * typeck.c (build_x_binary_op, build_x_unary_op): Call
239 maybe_save_operator_binding.
240 * decl.c (start_preparsed_function): Call push_operator_bindings.
241 * tree.c (cp_free_lang_data): Call discard_operator_bindings.
242
bddb19c4 243 PR c++/88820 - ICE with CTAD and member template used in DMI.
244 * pt.c (do_class_deduction): Handle parm used as its own arg.
245
02a7fc59 2462019-03-07 Jakub Jelinek <jakub@redhat.com>
247
248 PR c++/89585
249 * parser.c (cp_parser_asm_definition): Parse asm qualifiers even
250 at toplevel, but diagnose them.
251
bc17f5fd 2522019-03-06 Jason Merrill <jason@redhat.com>
253
254 PR c++/89381 - implicit copy and using-declaration.
255 * class.c (classtype_has_move_assign_or_move_ctor_p): Don't consider
256 op= brought in by a using-declaration.
257
aa49bda0 2582019-03-06 Jakub Jelinek <jakub@redhat.com>
259
260 PR c++/87148
261 * init.c (build_value_init_noctor): Ignore flexible array members.
262
02daf5d2 2632019-03-06 Jason Merrill <jason@redhat.com>
264
265 PR c++/89576 - if constexpr of lambda capture.
266 * semantics.c (maybe_convert_cond): Do convert a non-dependent
267 condition in a template.
268 * typeck.c (condition_conversion): Handle being called in a
269 template.
270
55d0cc00 2712019-03-06 Marek Polacek <polacek@redhat.com>
272
273 PR c++/87378 - bogus -Wredundant-move warning.
274 * typeck.c (maybe_warn_pessimizing_move): See if the maybe-rvalue
275 overload resolution would actually succeed.
276
cd5a9ed1 2772019-03-05 Jason Merrill <jason@redhat.com>
278
279 * class.c (is_really_empty_class): Add ignore_vptr parm.
280 (trivial_default_constructor_is_constexpr): Pass it.
281 * call.c (build_over_call): Pass it.
282 * constexpr.c (cxx_eval_constant_expression): Pass it instead of
283 checking TYPE_POLYMORPHIC_P.
284 (cxx_eval_component_reference, potential_constant_expression_1):
285 Pass it.
286 * cp-gimplify.c (simple_empty_class_p): Pass it.
287 * init.c (expand_aggr_init_1): Pass it.
288
1751c288 2892019-03-04 Paolo Carlini <paolo.carlini@oracle.com>
290
291 PR c++/84605
292 * parser.c (cp_parser_class_head): Reject TYPE_BEING_DEFINED too.
293
10599713 2942019-03-04 Jakub Jelinek <jakub@redhat.com>
295
296 PR c++/71446
297 * call.c (field_in_pset): New function.
298 (build_aggr_conv): Handle CONSTRUCTOR_IS_DESIGNATED_INIT correctly.
299
73e3d2ee 3002019-03-02 Jakub Jelinek <jakub@redhat.com>
301
302 PR c++/71446
303 * cp-tree.h (CONSTRUCTOR_IS_DESIGNATED_INIT): Define.
304 * parser.c (cp_parser_braced_list): Adjust cp_parser_initializer_list
305 caller, set CONSTRUCTOR_IS_DESIGNATED_INIT.
306 (cp_parser_initializer_list): Add designated parameter, set *designated
307 to a bool whether any designators were parsed.
308 * decl.c (reshape_init): Copy over CONSTRUCTOR_IS_DESIGNATED_INIT if
309 needed.
310 * pt.c (tsubst_copy_and_build): Likewise.
311 * call.c (implicit_conversion): If CONSTRUCTOR_IS_DESIGNATED_INIT,
312 don't call build_list_conv, nor build_complex_conv, nor attempt to
313 convert a single element initializer to scalar.
314
f409a882 3152019-03-01 Marek Polacek <polacek@redhat.com>
316
ae8e3cb6 317 PR c++/89537 - missing location for error with non-static member fn.
318 * call.c (resolve_args): Use EXPR_LOCATION.
319 * typeck.c (build_class_member_access_expr): Use input_location.
320
f409a882 321 PR c++/89532 - ICE with incomplete type in decltype.
322 * semantics.c (finish_compound_literal): Return error_mark_node
323 if digest_init_flags returns error_mark_node.
324
b279a142 3252019-03-01 Jakub Jelinek <jakub@redhat.com>
326
327 Implement P1002R1, Try-catch blocks in constexpr functions
328 PR c++/89513
329 * parser.c (cp_parser_ctor_initializer_opt_and_function_body):
330 Diagnose constexpr ctor or function with function-try-block with
331 pedwarn for c++17 and earlier. Formatting fix.
332 (cp_parser_try_block): Use pedwarn instead of error and only for
333 c++17 and earlier when try block appears in constexpr function.
334 * constexpr.c (build_constexpr_constructor_member_initializers):
335 Handle TRY_BLOCK here instead of erroring on it.
336
c7110ca7 3372019-02-28 Jason Merrill <jason@redhat.com>
338
bb019931 339 PR c++/88183 - ICE with .* fold-expression.
340 * pt.c (fold_expression) [DOTSTAR_EXPR]: Remove special handling.
341
9b4cf3ba 342 PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
343 * class.c, lambda.c, pt.c: Revert earlier change.
344 * lambda.c (add_capture): Don't special-case capture of dependent
345 VLA.
346
c7110ca7 347 * name-lookup.c (print_binding_level): Print this_entity.
348
90c2137c 3492019-02-27 Marek Polacek <polacek@redhat.com>
350
351 PR c++/88857 - ICE with value-initialization of argument in template.
352 * call.c (convert_like_real): Don't call build_value_init in template.
353
9ecd4044 3542019-02-27 Jason Merrill <jason@redhat.com>
355
356 PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
357 * semantics.c (process_outer_var_ref): Do capture dependent vars.
358 * class.c (finish_struct): Only add TAG_DEFN if T is in
359 current_function_decl.
360 * lambda.c (vla_capture_type): Force the capture type out into the
361 lambda's enclosing function.
362 (add_capture): Pass in the lambda.
363 * pt.c (tsubst_lambda_expr): complete_type a VLA capture type.
364
7304edd1 3652019-02-27 Marek Polacek <polacek@redhat.com>
366
367 PR c++/89511 - ICE with using-declaration and unscoped enumerator.
368 * parser.c (cp_parser_using_declaration): For an unscoped enum
369 only use its context if it's not a function declaration.
370
c9f30cbb 3712019-02-27 Paolo Carlini <paolo.carlini@oracle.com>
372
373 PR c++/89488
374 * method.c (process_subob_fn): When maybe_instantiate_noexcept
375 returns false don't call merge_exception_specifiers.
376
3772019-02-27 Paolo Carlini <paolo.carlini@oracle.com>
378
379 PR c++/88987
380 * parser.c (cp_parser_noexcept_specification_opt): Return NULL_TREE
381 for a non-constant parsed expression.
382
a165fd90 3832019-02-26 Jakub Jelinek <jakub@redhat.com>
384
385 PR c++/89481
386 * constexpr.c (cxx_eval_store_expression): When changing active union
387 member, set no_zero_init.
388
c005651d 3892019-02-23 Marek Polacek <polacek@redhat.com>
390
391 PR c++/88294 - ICE with non-constant noexcept-specifier.
392 * pt.c (maybe_instantiate_noexcept): Set up the list of local
393 specializations. Set current_class_{ptr,ref}.
394
689cc9b6 3952019-02-22 David Malcolm <dmalcolm@redhat.com>
396
397 PR c++/89390
398 * parser.c (cp_parser_unqualified_id): Capture and use locations
399 for destructors.
400
e7652833 4012019-02-22 Marek Polacek <polacek@redhat.com>
402
403 PR c++/89420 - ICE with CAST_EXPR in explicit-specifier.
404 * decl.c (build_explicit_specifier): Don't check
405 processing_template_decl. Call instantiation_dependent_expression_p
406 instead of value_dependent_expression_p. Call
407 instantiate_non_dependent_expr_sfinae before
408 build_converted_constant_expr instead of calling
409 instantiate_non_dependent_expr after it. Add
410 processing_template_decl_sentinel.
411
51391c1d 4122019-02-22 Thomas Schwinge <thomas@codesourcery.com>
413
414 * parser.c (cp_parser_oacc_simple_clause): Remove parser formal
415 parameter, move loc formal parameter to the front. Adjust all
416 users.
417 (cp_parser_oacc_shape_clause): Add loc formal parameter. Adjust
418 all users.
419
b6700c1a 4202019-02-21 Jason Merrill <jason@redhat.com>
421
532cca3f 422 PR c++/87685 - generic lambda 'this' capture error.
423 * lambda.c (lambda_expr_this_capture): Change add_capture_p to int.
424 (maybe_generic_this_capture): Pass -1.
425
a7ea8f96 426 PR c++/88394 - ICE with VLA init-capture.
427 * lambda.c (is_normal_capture_proxy): Check DECL_CAPTURED_VARIABLE.
428
e2d4b8be 429 PR c++/88869 - C++17 ICE with CTAD and explicit specialization.
430 * pt.c (do_class_deduction): Don't include explicit specialization
431 args in outer_args.
432
b6700c1a 433 PR c++/89422 - ICE with -g and lambda in default arg in template.
434 * pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner.
435
147a31b6 4362019-02-21 Jason Merrill <jason@redhat.com>
437
438 PR c++/88419 - C++17 ICE with class template arg deduction.
439 * pt.c (make_template_placeholder): Set TYPE_CANONICAL after
440 CLASS_PLACEHOLDER_TEMPLATE.
441
02d7a132 4422019-02-21 Jakub Jelinek <jakub@redhat.com>
443
444 PR c++/89285
445 * constexpr.c (struct constexpr_fundef): Add parms and result members.
446 (retrieve_constexpr_fundef): Adjust for the above change.
447 (register_constexpr_fundef): Save constexpr body with copy_fn,
448 temporarily set DECL_CONTEXT on DECL_RESULT before that.
449 (get_fundef_copy): Change FUN argument to FUNDEF with
450 constexpr_fundef * type, grab body and parms/result out of
451 constexpr_fundef struct and temporarily change it for copy_fn calls
452 too.
453 (cxx_eval_builtin_function_call): For __builtin_FUNCTION temporarily
454 adjust current_function_decl from ctx->call context. Test
455 !potential_constant_expression instead of !is_constant_expression.
456 (cxx_bind_parameters_in_call): Grab parameters from new_call. Undo
457 convert_for_arg_passing changes for TREE_ADDRESSABLE type passing.
458 (cxx_eval_call_expression): Adjust get_fundef_copy caller.
459 (cxx_eval_conditional_expression): For IF_STMT, allow then or else
460 operands to be NULL.
461 (label_matches): Handle BREAK_STMT and CONTINUE_STMT.
462 (cxx_eval_loop_expr): Add support for FOR_STMT, WHILE_STMT and DO_STMT.
463 (cxx_eval_switch_expr): Add support for SWITCH_STMT.
464 (cxx_eval_constant_expression): Handle IF_STMT, FOR_STMT, WHILE_STMT,
465 DO_STMT, CONTINUE_STMT, SWITCH_STMT, BREAK_STMT and CONTINUE_STMT.
466 For SIZEOF_EXPR, recurse on the result of fold_sizeof_expr. Ignore
467 DECL_EXPR with USING_DECL operand.
468 * lambda.c (maybe_add_lambda_conv_op): Build thisarg using
469 build_int_cst to make it a valid constant expression.
470
dcd8f919 4712019-02-20 Jason Merrill <jason@redhat.com>
472
473 PR c++/88690 - C++17 ICE with empty base in aggregate.
474 * typeck2.c (process_init_constructor_record): Skip trivial
475 initialization of an empty base.
476
309e5f71 4772019-02-21 Richard Biener <rguenther@suse.de>
478
479 PR middle-end/89392
480 * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
481 make symtab process new functions here.
482
4e60ed29 4832019-02-20 Jason Merrill <jason@redhat.com>
484
485 PR c++/87921 - wrong error with inline static data member.
486 * decl2.c (finish_static_data_member_decl): Don't set DECL_IN_AGGR_P
487 for a non-template inline variable. Do nothing for an
488 already-instantiated variable.
489 (c_parse_final_cleanups): Check DECL_IN_AGGR_P without
490 DECL_INLINE_VAR_P.
491 * decl.c (check_initializer): Likewise.
492 (make_rtl_for_nonlocal_decl): Likewise.
493 * pt.c (instantiate_decl): Likewise.
494 * typeck2.c (store_init_value): Likewise.
495
b47245f1 4962019-02-20 Jakub Jelinek <jakub@redhat.com>
497
0c3f2aa9 498 PR c++/89403
499 * decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
500 for flag_syntax_only from here...
501 * semantics.c (expand_or_defer_fn_1): ... here.
502
02dc6028 503 PR c++/89405
504 * decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
505 DECL_COMMON, set DECL_INTERFACE_KNOWN.
506
b47245f1 507 PR c++/89336
508 * constexpr.c (cxx_eval_store_expression): Diagnose changing of active
509 union member for -std=c++17 and earlier.
510
af48cea2 5112019-02-19 Jason Merrill <jason@redhat.com>
512
513 PR c++/87513 - 'sorry' mangling PMF template-id.
514 * mangle.c (write_expression): Handle SCOPE_REF to BASELINK.
515
fd8a4665 5162019-02-19 Jason Merrill <jason@redhat.com>
517
518 PR c++/88380 - wrong-code with flexible array and NSDMI.
519 * typeck2.c (process_init_constructor_record): Skip flexarrays.
520
53ceddc9 5212019-02-20 will wray <wjwray@gmail.com>
522
523 PR c++/88572 - wrong handling of braces on scalar init.
524 * decl.c (reshape_init_r): Allow braces around scalar initializer
525 within aggregate init. Reject double braced-init of scalar
526 variable.
527
ab0fbe16 5282019-02-20 Paolo Carlini <paolo.carlini@oracle.com>
529
530 PR c++/84536
531 * pt.c (tsubst_init): Diagnose an initializer expanding to an
532 empty list of expressions; tweak wrt dependent types.
533 (regenerate_decl_from_template): For VAR_DECLs call tsubst_init
534 instead of tsubst_expr.
535
ce7f22f1 5362019-02-19 Jason Merrill <jason@redhat.com>
537
538 PR c++/88368 - wrong 'use of deleted function'
539 * method.c (walk_field_subobs): Remember errors from get_nsdmi.
540 (get_defaulted_eh_spec): Call push_tinst_level.
541 * pt.c (maybe_instantiate_noexcept): Keep error_mark_node.
542 * typeck2.c (merge_exception_specifiers): Handle error_mark_node.
543
d572a4c3 5442019-02-19 Chung-Lin Tang <cltang@codesourcery.com>
545
546 PR c/87924
547 * parser.c (cp_parser_oacc_clause_wait): Add representation of wait
548 clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.
549
31358ed0 5502019-02-19 Jakub Jelinek <jakub@redhat.com>
551
5ebe5c44 552 PR c++/89387
553 * lambda.c (maybe_generic_this_capture): Don't check
554 DECL_NONSTATIC_MEMBER_FUNCTION_P on USING_DECLs.
555
fcea8c4d 556 PR c++/89391
557 * typeck.c (build_reinterpret_cast_1): Don't handle void to
558 && conversion go through build_target_expr_with_type.
559
31358ed0 560 PR c++/89390
561 * error.c (qualified_name_lookup_error): Only call
562 suggest_alternative_in_scoped_enum if name is IDENTIFIER_NODE.
563
25694c85 5642019-02-19 Tom Honermann <tom@honermann.net>
565
566 * name-lookup.c (get_std_name_hint): Added u8string as a name hint.
567
a1e1b603 5682019-02-18 Jason Merrill <jason@redhat.com>
569
6aaacaf1 570 PR c++/89336 - multiple stores in constexpr stmt.
571 * constexpr.c (cxx_eval_store_expression): Preevaluate scalar or
572 assigned value.
573
f6347d1a 574 * pt.c (check_explicit_specialization): If the declarator is a
575 template-id, only check whether the arguments are dependent.
576
a1e1b603 577 Improve duplicate [[likely]] diagnostic.
578 * parser.c (cp_parser_statement): Make attrs_loc a range. Pass it
579 to process_stmt_hotness_attribute.
580 * cp-gimplify.c (process_stmt_hotness_attribute): Take attrs_loc.
581 (genericize_if_stmt): Use likely/unlikely instead of predictor_name.
582
33e6651d 5832019-02-17 Marek Polacek <polacek@redhat.com>
584
585 PR c++/89217 - ICE with list-initialization in range-based for loop.
586 * constexpr.c (unshare_constructor): No longer static.
587 * cp-tree.h (unshare_constructor): Declare.
588 * semantics.c (finish_compound_literal): When dealing with a
589 non-dependent expression in a template, return the original
590 expression. Pass LOOKUP_NO_NARROWING to digest_init_flags.
591
3a860627 5922019-02-13 Marek Polacek <polacek@redhat.com>
593
594 PR c++/89297 - ICE with OVERLOAD in template.
595 * semantics.c (finish_compound_literal): Call
596 instantiate_non_dependent_expr_sfinae.
597
601c59dd 5982019-02-13 Alexandre Oliva <aoliva@redhat.com>
599
40563cf7 600 PR c++/86379
601 * cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
602 * name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
603 * search.c (protected_accessible_p): Follow USING_DECL_DECLS.
604 (shared_member_p): Likewise.
605 (lookup_member): Likewise.
606 * decl.c (grok_special_member_properties): Skip USING_DECLs.
607 * semantics.c (finish_omp_declare_simd_methods): Likewise.
608 (finish_qualified_id_expr): Do not call shared_member_p with
609 a dependent expr.
610
601c59dd 611 PR c++/87322
612 * pt.c (tsubst_lambda_expr): Avoid duplicate tsubsting.
613 Move cp_evaluated resetting before signature tsubsting.
614 (gen_elem_of_pack_expansion_instantiation): Separate local
615 specializations per index.
616
f2da1a76 6172019-02-13 David Malcolm <dmalcolm@redhat.com>
618
619 PR c++/89036
620 * class.c (add_method): Drop destructor assertion.
621
64bd49fa 6222019-02-13 Paolo Carlini <paolo.carlini@oracle.com>
623
624 PR c++/88986
625 * decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
626 context (the first argument).
627 * pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
628 as context.
629
c8e19553 6302019-02-12 Jason Merrill <jason@redhat.com>
631
632 PR c++/89144 - link error with constexpr initializer_list.
633 * call.c (convert_like_real) [ck_list]: Don't allocate a temporary
634 array for an empty list.
635 * typeck2.c (store_init_value): Don't use cxx_constant_init in a
636 template.
637
33fe677e 6382019-02-11 Jason Merrill <jason@redhat.com>
639
640 PR c++/89241 - ICE with __func__ in lambda in template.
641 * pt.c (enclosing_instantiation_of): Also check
642 instantiated_lambda_fn_p for the template context.
643
44263306 6442019-02-11 Marek Polacek <polacek@redhat.com>
645
646 PR c++/89212 - ICE converting nullptr to pointer-to-member-function.
647 * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for
648 null member pointer value.
649
61b94553 6502019-02-11 Jakub Jelinek <jakub@redhat.com>
651
652 PR c++/88977
653 * pt.c (convert_nontype_argument): Pass true as manifestly_const_eval
654 to maybe_constant_value calls.
655
b10193f4 6562019-02-11 Marek Polacek <polacek@redhat.com>
657
658 * typeck2.c (digest_init_r): Remove commented code.
659
08acf739 6602019-02-11 Martin Sebor <msebor@redhat.com>
661
662 PR c++/87996
663 * decl.c (compute_array_index_type_loc): Preserve signed sizes
664 for diagnostics. Call valid_array_size_p instead of error.
665 * init.c (build_new_1): Compute size for diagnostic. Call
666 invalid_array_size_error
667 (build_new): Call valid_array_size_p instead of error.
668
939d44f3 6692019-02-07 Alexandre Oliva <aoliva@redhat.com>
670
671 PR c++/86218
672 * call.c (compare_ics): Deal with ck_aggr in either cs.
673
c92ab8d4 6742019-02-06 David Malcolm <dmalcolm@redhat.com>
675
676 PR c++/71302
677 * call.c (get_location_for_expr_unwinding_for_system_header): New
678 function.
679 (conversion_null_warnings): Use it when getting locations for
680 EXPR, effectively adding a call to
681 get_location_for_expr_unwinding_for_system_header for
682 -Wconversion-null and making use of EXPR_LOCATION for
683 -Wzero-as-null-pointer-constant.
684
b5a6b127 6852019-02-05 Jakub Jelinek <jakub@redhat.com>
686
687 PR c++/89187
688 * optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
689 PARM_DECLs of the thunk.
690 * lambda.c (maybe_add_lambda_conv_op): Likewise.
691
74ce2ebb 6922019-02-05 Marek Polacek <polacek@redhat.com>
693
694 PR c++/89158 - by-value capture of constexpr variable broken.
695 * call.c (convert_like_real) <case ck_user>: Call mark_exp_read
696 instead of mark_rvalue_use.
697
9ca54fa1 6982019-02-05 Alexandre Oliva <aoliva@redhat.com>
699
700 PR c++/87770
701 * pt.c (instantiates_primary_template_p): New.
702 (type_dependent_expression_p): Use it.
703
c758dd5a 7042019-02-01 Jason Merrill <jason@redhat.com>
705
706 PR c++/88761 - ICE with reference capture of constant.
707 * lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for
708 non-proxy decls.
709
bdb43276 7102019-02-01 Marek Polacek <polacek@redhat.com>
711
712 PR c++/88325 - ICE with invalid out-of-line template member definition.
713 * parser.c (cp_parser_class_name): Don't call make_typename_type
714 for overloads.
715
5ab8180e 7162019-02-01 Jakub Jelinek <jakub@redhat.com>
717
718 PR c++/87175
719 * parser.c (cp_parser_gnu_attributes_opt): Set ok to false
720 if require_open failed.
721
c8f861a0 7222019-01-31 Marek Polacek <polacek@redhat.com>
723
724 PR c++/89083, c++/80864 - ICE with list initialization in template.
725 * constexpr.c (adjust_temp_type): Use copy_node and change the type
726 instead of using build_constructor.
727 * decl.c (reshape_init_r): Don't reshape a digested initializer.
728 Return the initializer for COMPOUND_LITERAL_P.
729
f1329be6 730 PR c++/88983 - ICE with switch in constexpr function.
731 * constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
732 (cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
733 label in the else branch if we found it in the then branch.
734
8c28f0ef 7352019-01-30 Jason Merrill <jason@redhat.com>
736
737 PR c++/88752 - ICE with lambda and constexpr if.
738 * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
739 * pt.c (tsubst_lambda_expr): Set it.
740 (instantiated_lambda_fn_p): Check it.
741 (enclosing_instantiation_of): Use it.
742
abb9ae66 7432019-01-31 Jakub Jelinek <jakub@redhat.com>
744
745 PR libstdc++/88170
746 * cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
747 a C cast in pp_c_flag_gnu_v3 mode.
748
9b0e9786 7492019-01-30 Jakub Jelinek <jakub@redhat.com>
750
751 PR c++/88988
752 * lambda.c (is_capture_proxy): Don't return true for
753 DECL_OMP_PRIVATIZED_MEMBER artificial vars.
754
7066144a 7552019-01-30 Marek Polacek <polacek@redhat.com>
756
757 PR c++/89119 - ICE with value-initialization in template.
758 * pt.c (tsubst_copy_and_build): Handle RANGE_EXPR.
759
64e3499e 7602019-01-29 Jason Merrill <jason@redhat.com>
761
762 PR c++/86943 - wrong code converting lambda to function pointer.
763 * lambda.c (maybe_add_lambda_conv_op): Use a template-id in the
764 call. Only forward parms for decltype.
765 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P
766 specially.
767 * typeck.c (check_return_expr): Don't mess with a thunk call.
768
107cba11 7692019-01-28 Jason Merrill <jason@redhat.com>
770
771 PR c++/89089 - ICE with [[no_unique_address]].
772 PR c++/88865 - wrong layout with [[no_unique_address]].
773 * class.c (check_field_decls): A potentially-overlapping field makes
774 the class non-layout-POD, but not non-empty.
775 (end_of_class): Always consider empty data members.
776 (layout_class_type): Set DECL_SIZE for empty fields.
777
44da2a17 7782019-01-28 Marek Polacek <polacek@redhat.com>
779
780 PR c++/88358 - name wrongly treated as type.
781 * parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
782 in parameter-list is a type if the function's declarator-id is not
783 qualified.
784
1d41b42f 7852019-01-27 Marek Polacek <polacek@redhat.com>
786
b7feeace 787 PR c++/88815 - narrowing conversion lost in decltype.
788 PR c++/78244 - narrowing conversion in template not detected.
789 * cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
790 * pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
791 CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
792 * semantics.c (finish_compound_literal): When the compound literal
793 isn't instantiation-dependent and the type isn't type-dependent,
794 fall back to the normal processing. Set CONSTRUCTOR_IS_DEPENDENT.
795
1d41b42f 796 PR c++/89024 - ICE with incomplete enum type.
797 * call.c (standard_conversion): When converting an
798 ARITHMETIC_TYPE_P to an incomplete type, return NULL.
799
837ddebd 8002019-01-25 Paolo Carlini <paolo.carlini@oracle.com>
801
802 PR c++/88969
803 * call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
804 * decl2.c (coerce_delete_type): Use build_pointer_type instead
805 of TYPE_POINTER_TO.
806
8c89c5fc 8072019-01-24 Jason Merrill <jason@redhat.com>
808
809 PR c++/89001 - mangling of reference temporaries
810 * cp-tree.h (struct saved_scope): Add ref_temp_count.
811 (current_ref_temp_count): New macro.
812 * mangle.c (mangle_ref_init_variable): Use it.
813 * typeck2.c (store_init_value): Clear it.
814 * call.c (make_temporary_var_for_ref_to_temp): Copy public and
815 comdat.
816
b5e76680 8172019-01-24 Jakub Jelinek <jakub@redhat.com>
818
819 PR c++/88976
820 * semantics.c (finish_omp_cancel): Diagnose more than one if
821 on #pragma omp cancel with different modifiers. Use
822 maybe_convert_cond when not in template or build_x_binary_op
823 otherwise.
824
dffbcba8 8252019-01-23 Marek Polacek <polacek@redhat.com>
826
827 PR c++/88757 - qualified name treated wrongly as type.
828 * parser.c (cp_parser_direct_declarator): Don't treat qualified-ids
829 in parameter-list as types if name lookup for declarator-id didn't
830 find one or more function templates.
831
1f03c410 8322019-01-23 Jakub Jelinek <jakub@redhat.com>
833
8090d51c 834 PR c/44715
835 * cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
836 after genericizing cond and incr expressions.
837
1f03c410 838 PR c++/88984
839 * cp-gimplify.c (genericize_switch_stmt): Move cond genericization
840 before the begin_bc_block call.
841
48c03f15 8422019-01-21 Jason Merrill <jason@redhat.com>
843
844 PR c++/87893 - constexpr ctor ICE on ARM.
845 PR c++/88293 - ICE with comma expression.
846 * constexpr.c (initialized_type): Don't shortcut non-void type.
847 Handle COMPOUND_EXPR.
848 (cxx_eval_outermost_constant_expr): Return early for void type.
849
99bf4b63 8502019-01-21 Jakub Jelinek <jakub@redhat.com>
851
77fe9474 852 PR c++/88949
853 * optimize.c (cxx_copy_decl): New function.
854 (clone_body): Use it instead of copy_decl_no_change.
855
99bf4b63 856 PR sanitizer/88901
857 * typeck.c (cp_build_binary_op): Don't instrument
858 SANITIZE_POINTER_COMPARE if processing_template_decl.
859 (pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
860
ecd2d842 8612019-01-18 Jason Merrill <jason@redhat.com>
862
863 PR c++/88875 - error with explicit list constructor.
864 * call.c (reference_binding): Don't modify EXPR. Set
865 need_temporary_p on the ck_user conversion for a temporary.
866 (convert_like_real): Check it.
867
6d4e8a95 8682019-01-18 H.J. Lu <hongjiu.lu@intel.com>
869
870 PR c/51628
871 PR c/88664
872 * call.c (convert_for_arg_passing): Upate the
873 warn_for_address_or_pointer_of_packed_member call.
874 * typeck.c (convert_for_assignment): Likewise.
875
9d3c4130 8762019-01-17 Jason Merrill <jason@redhat.com>
877
bc9c0483 878 PR c++/86205 - ICE with ?: of throw and template-id.
879 * pt.c (resolve_nondeduced_context_or_error): Split out from...
880 * typeck.c (decay_conversion): ...here.
881 * call.c (build_conditional_expr_1): Use it.
882
9d3c4130 883 PR c++/86740, ICE with constexpr if and nested generic lambdas.
884 * tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.
885
0f910e62 8862019-01-17 Paolo Carlini <paolo.carlini@oracle.com>
887
888 * decl.c (grokdeclarator): Use typespec_loc in error messages
889 about 'auto' and trailing return type.
890
098cc8f0 8912019-01-17 David Malcolm <dmalcolm@redhat.com>
892
893 PR c++/88699
894 * class.c (add_method): Don't use DECL_DESTRUCTOR_P on
895 USING_DECLs.
896
a395125a 8972019-01-17 Nathan Sidwell <nathan@acm.org>
898
899 PR c++/86610
900 * semantics.c (process_outer_var_ref): Only skip dependent types
901 in templates.
902
5461905d 9032019-01-17 Alexandre Oliva <aoliva@redhat.com>
904
c5f929a4 905 PR c++/87768
906 * cp-tree.h (saved_scope): Add suppress_location_wrappers.
907 * name-lookup.c (do_push_to_top_level): Save and reset it.
908 (do_pop_from_top_level): Restore it.
909
f97941b7 910 PR c++/86648
911 * pt.c (make_template_placeholder): Use auto_identifier.
912 (is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
913 * error.c (dump_type): Handle template placeholders.
914 * cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.
915
5461905d 916 PR c++/88146
917 * cvt.c (convert_to_void): Handle all cdtor calls as if
918 returning void.
919
b92cc3ed 9202019-01-16 Paolo Carlini <paolo.carlini@oracle.com>
921
922 * decl.c (grokdeclarator): Use locations[ds_storage_class] in
923 error messages about ill-formed uses of mutable.
924
9fc2172c 9252019-01-16 Marek Polacek <polacek@redhat.com>
926
927 PR c++/78244 - narrowing conversion in template not detected.
928 * call.c (perform_implicit_conversion_flags): Set
929 IMPLICIT_CONV_EXPR_BRACED_INIT.
930 * cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
931 * pt.c (tsubst_copy_and_build): Use it.
932
727d210b 9332019-01-15 David Malcolm <dmalcolm@redhat.com>
934
935 PR c++/88795
936 * pt.c (build_deduction_guide): Bail out if tsubst_arg_types
937 fails.
938
39a51021 9392019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
940
941 * decl.c (start_decl): Improve error location.
942 * decl2.c (grokfield): Likewise.
943
9442019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
945
946 * decl.c (grokdeclarator): Move further up the location_t loc
947 declaration and use the location when building a TYPE_DECL for
948 a typedef name.
949 * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
950 about an ill-formed bit-field as typedef.
951
affca1c8 9522019-01-14 Marek Polacek <polacek@redhat.com>
953
954 PR c++/88830 - ICE with abstract class.
955 * decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
956 Fix formatting.
957
9f8a8956 958 PR c++/88825 - ICE with bogus function return type deduction.
959 * typeck.c (can_do_nrvo_p): Check error_mark_node.
960
82362779 9612019-01-14 Tom Honermann <tom@honermann.net>
962
963 Implement P0482R5, char8_t: A type for UTF-8 characters and strings
964 * cvt.c (type_promotes_to): Handle char8_t promotion.
965 * decl.c (grokdeclarator): Handle invalid type specifier
966 combinations involving char8_t.
967 * lex.c (init_reswords): Add char8_t as a reserved word.
968 * mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
969 * parser.c (cp_keyword_starts_decl_specifier_p)
970 (cp_parser_simple_type_specifier): Recognize char8_t as a simple
971 type specifier.
972 (cp_parser_string_literal): Use char8_array_type_node for the type
973 of CPP_UTF8STRING.
974 (cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
975 headers.
976 * rtti.c (emit_support_tinfos): type_info support for char8_t.
977 * tree.c (char_type_p): Recognize char8_t as a character type.
978 * typeck.c (string_conv_p): Handle conversions of u8 string
979 literals of char8_t type.
980 (check_literal_operator_args): Handle UDLs with u8 string literals
981 of char8_t type.
982 * typeck2.c (ordinary_char_type_p): New.
983 (digest_init_r): Disallow initializing a char array with a u8 string
984 literal.
985
bf4eb32b 9862019-01-14 Martin Liska <mliska@suse.cz>
987
988 PR gcov-profile/88263
989 * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
990 as location of the TLS wrapper.
991
2fa582a9 9922019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
993
994 * decl.c (cp_finish_decl): Improve error location.
995 * decl2.c (grokfield): Likewise, improve two locations.
996
0b5957b9 9972019-01-11 Marek Polacek <polacek@redhat.com>
998
999 PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
1000 * typeck.c (maybe_warn_pessimizing_move): Return if ARG isn't
1001 ADDR_EXPR.
1002
d07c152b 10032019-01-11 Jason Merrill <jason@redhat.com>
1004
1005 PR c++/88312 - pack expansion of decltype.
1006 * pt.c (instantiation_dependent_r): A template non-type parameter
1007 pack is instantiation-dependent.
1008
0c2ebbc4 10092019-01-11 Jason Merrill <jason@redhat.com>
1010
1011 PR c++/88613 - ICE with use of const var in lambda.
1012 * expr.c (mark_use): Fix location wrapper handling.
1013 * cp-gimplify.c (cp_fold_maybe_rvalue): Call mark_rvalue_use.
1014
1b2f170e 10152019-01-11 Tobias Burnus <burnus@net-b.de>
1016
1017 PR C++/88114
1018 * decl2.c (maybe_emit_vtables): If needed, generate code for
1019 the destructor of an abstract class.
1020 (mark_used): Update comment for older function-name change.
1021
b385e516 10222019-01-11 Paolo Carlini <paolo.carlini@oracle.com>
1023
1024 * decl.c (start_decl): Improve error location.
1025 (grokdeclarator): Likewise, improve two locations.
1026
f4d3c071 10272019-01-09 Sandra Loosemore <sandra@codesourcery.com>
1028
1029 PR other/16615
1030
1031 * cp-tree.h: Mechanically replace "can not" with "cannot".
1032 * parser.c: Likewise.
1033 * pt.c: Likewise.
1034
7cc45975 10352019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
1036
1037 * decl.c (grok_reference_init): Improve error location.
1038 (grokdeclarator): Likewise, improve two locations.
1039
90e20c9c 10402019-01-08 Marek Polacek <polacek@redhat.com>
1041
91902bb4 1042 PR c++/88538 - braced-init-list in template-argument-list.
1043 * parser.c (cp_parser_template_argument): Handle braced-init-list when
1044 in C++20.
1045
90e20c9c 1046 PR c++/88548 - this accepted in static member functions.
1047 * parser.c (cp_debug_parser): Adjust printing of
1048 local_variables_forbidden_p.
1049 (cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
1050 (cp_parser_primary_expression): When checking
1051 local_variables_forbidden_p, use THIS_FORBIDDEN or
1052 LOCAL_VARS_FORBIDDEN.
1053 (cp_parser_lambda_body): Update the type of
1054 local_variables_forbidden_p. Set it to 0 rather than false.
1055 (cp_parser_condition): Adjust call to cp_parser_declarator.
1056 (cp_parser_explicit_instantiation): Likewise.
1057 (cp_parser_init_declarator): Likewise.
1058 (cp_parser_declarator): New parameter. Use it.
1059 (cp_parser_direct_declarator): New parameter. Use it to set
1060 local_variables_forbidden_p. Adjust call to cp_parser_declarator.
1061 (cp_parser_type_id_1): Adjust call to cp_parser_declarator.
1062 (cp_parser_parameter_declaration): Likewise.
1063 (cp_parser_default_argument): Update the type of
1064 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
1065 rather than true.
1066 (cp_parser_member_declaration): Tell cp_parser_declarator if we saw
1067 'static' or 'friend'.
1068 (cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
1069 (cp_parser_late_parsing_default_args): Update the type of
1070 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
1071 rather than true.
1072 (cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
1073 (cp_parser_objc_class_ivars): Likewise.
1074 (cp_parser_objc_struct_declaration): Likewise.
1075 (cp_parser_omp_for_loop_init): Likewise.
1076 * parser.h (cp_parser): Change the type of local_variables_forbidden_p
1077 to unsigned char.
1078 (LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
1079 Define.
1080
8f7d5246 10812019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
1082
1083 * decl.c (start_decl): Improve permerror location.
1084
6e5908c9 10852019-01-08 Jonathan Wakely <jwakely@redhat.com>
1086 Jakub Jelinek <jakub@redhat.com>
1087
1088 PR c++/88554
1089 * decl.c (finish_function): For -Wreturn-type don't add a return *this;
1090 fixit hint if current_class_ref is NULL. Use a single if instead of
1091 two nested ones.
1092
2318c037 10932019-01-07 Paolo Carlini <paolo.carlini@oracle.com>
1094
1095 * decl.c (start_decl): Improve two error_at locations.
1096 (expand_static_init): Likewise.
1097
677576f7 10982019-01-07 Marek Polacek <polacek@redhat.com>
1099
1100 PR c++/88741 - wrong error with initializer-string.
1101 * decl.c (cp_complete_array_type): Strip any location wrappers.
1102
c38103e8 11032019-01-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
1104
1105 PR c++/88261
1106 PR c++/69338
1107 PR c++/69696
1108 PR c++/69697
1109 * cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
1110 * typeck2.c (digest_init_r): Raise an error for non-static
1111 initialization of a flexible array member.
1112 (process_init_constructor, massage_init_elt,
1113 process_init_constructor_array, process_init_constructor_record,
1114 process_init_constructor_union, process_init_constructor): Add the
1115 flags parameter and pass it thru.
1116 (store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
1117 digest_init_flags for static decls.
1118
59409f09 11192019-01-07 Jakub Jelinek <jakub@redhat.com>
1120
1121 PR c++/85052
1122 * cp-tree.h (cp_build_vec_convert): Declare.
1123 * parser.c (cp_parser_postfix_expression): Parse
1124 __builtin_convertvector.
1125 * constexpr.c: Include fold-const-call.h.
1126 (cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
1127 (potential_constant_expression_1): Likewise.
1128 * semantics.c (cp_build_vec_convert): New function.
1129 * pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
1130 IFN_VEC_CONVERT.
1131
0627c5c9 11322019-01-03 Jakub Jelinek <jakub@redhat.com>
1133
1134 PR c++/88636
1135 * decl.c (builtin_function_1): Return result of pushdecl_top_level
1136 or pushdecl rather than decl.
1137
f9f7d90c 11382019-01-03 Paolo Carlini <paolo.carlini@oracle.com>
1139
1140 * tree.c (handle_nodiscard_attribute): Improve warning location.
1141
37fb9cf6 11422019-01-02 Marek Polacek <polacek@redhat.com>
1143
1144 PR c++/88612 - ICE with -Waddress-of-packed-member.
1145 * call.c (convert_for_arg_passing): Only give warnings with tf_warning.
1146 * typeck.c (convert_for_assignment): Likewise.
1147
6080dd2f 1148 PR c++/88631 - CTAD failing for value-initialization.
1149 * typeck2.c (build_functional_cast): Try deducing the template
1150 arguments even if there are no arguments to deduce from.
1151
fbd26352 11522019-01-01 Jakub Jelinek <jakub@redhat.com>
ca29c574 1153
8e8f6434 1154 Update copyright years.
7dfbd804 1155\f
fbd26352 1156Copyright (C) 2019 Free Software Foundation, Inc.
7dfbd804 1157
1158Copying and distribution of this file, with or without modification,
1159are permitted in any medium without royalty provided the copyright
1160notice and this notice are preserved.