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