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