]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cp/ChangeLog
Add tests for C++2a content of <atomic> header
[thirdparty/gcc.git] / gcc / cp / ChangeLog
CommitLineData
b6700c1a 12019-02-21 Jason Merrill <jason@redhat.com>
2
3 PR c++/89422 - ICE with -g and lambda in default arg in template.
4 * pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner.
5
147a31b6 62019-02-21 Jason Merrill <jason@redhat.com>
7
8 PR c++/88419 - C++17 ICE with class template arg deduction.
9 * pt.c (make_template_placeholder): Set TYPE_CANONICAL after
10 CLASS_PLACEHOLDER_TEMPLATE.
11
02d7a132 122019-02-21 Jakub Jelinek <jakub@redhat.com>
13
14 PR c++/89285
15 * constexpr.c (struct constexpr_fundef): Add parms and result members.
16 (retrieve_constexpr_fundef): Adjust for the above change.
17 (register_constexpr_fundef): Save constexpr body with copy_fn,
18 temporarily set DECL_CONTEXT on DECL_RESULT before that.
19 (get_fundef_copy): Change FUN argument to FUNDEF with
20 constexpr_fundef * type, grab body and parms/result out of
21 constexpr_fundef struct and temporarily change it for copy_fn calls
22 too.
23 (cxx_eval_builtin_function_call): For __builtin_FUNCTION temporarily
24 adjust current_function_decl from ctx->call context. Test
25 !potential_constant_expression instead of !is_constant_expression.
26 (cxx_bind_parameters_in_call): Grab parameters from new_call. Undo
27 convert_for_arg_passing changes for TREE_ADDRESSABLE type passing.
28 (cxx_eval_call_expression): Adjust get_fundef_copy caller.
29 (cxx_eval_conditional_expression): For IF_STMT, allow then or else
30 operands to be NULL.
31 (label_matches): Handle BREAK_STMT and CONTINUE_STMT.
32 (cxx_eval_loop_expr): Add support for FOR_STMT, WHILE_STMT and DO_STMT.
33 (cxx_eval_switch_expr): Add support for SWITCH_STMT.
34 (cxx_eval_constant_expression): Handle IF_STMT, FOR_STMT, WHILE_STMT,
35 DO_STMT, CONTINUE_STMT, SWITCH_STMT, BREAK_STMT and CONTINUE_STMT.
36 For SIZEOF_EXPR, recurse on the result of fold_sizeof_expr. Ignore
37 DECL_EXPR with USING_DECL operand.
38 * lambda.c (maybe_add_lambda_conv_op): Build thisarg using
39 build_int_cst to make it a valid constant expression.
40
dcd8f919 412019-02-20 Jason Merrill <jason@redhat.com>
42
43 PR c++/88690 - C++17 ICE with empty base in aggregate.
44 * typeck2.c (process_init_constructor_record): Skip trivial
45 initialization of an empty base.
46
309e5f71 472019-02-21 Richard Biener <rguenther@suse.de>
48
49 PR middle-end/89392
50 * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
51 make symtab process new functions here.
52
4e60ed29 532019-02-20 Jason Merrill <jason@redhat.com>
54
55 PR c++/87921 - wrong error with inline static data member.
56 * decl2.c (finish_static_data_member_decl): Don't set DECL_IN_AGGR_P
57 for a non-template inline variable. Do nothing for an
58 already-instantiated variable.
59 (c_parse_final_cleanups): Check DECL_IN_AGGR_P without
60 DECL_INLINE_VAR_P.
61 * decl.c (check_initializer): Likewise.
62 (make_rtl_for_nonlocal_decl): Likewise.
63 * pt.c (instantiate_decl): Likewise.
64 * typeck2.c (store_init_value): Likewise.
65
b47245f1 662019-02-20 Jakub Jelinek <jakub@redhat.com>
67
0c3f2aa9 68 PR c++/89403
69 * decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
70 for flag_syntax_only from here...
71 * semantics.c (expand_or_defer_fn_1): ... here.
72
02dc6028 73 PR c++/89405
74 * decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
75 DECL_COMMON, set DECL_INTERFACE_KNOWN.
76
b47245f1 77 PR c++/89336
78 * constexpr.c (cxx_eval_store_expression): Diagnose changing of active
79 union member for -std=c++17 and earlier.
80
af48cea2 812019-02-19 Jason Merrill <jason@redhat.com>
82
83 PR c++/87513 - 'sorry' mangling PMF template-id.
84 * mangle.c (write_expression): Handle SCOPE_REF to BASELINK.
85
fd8a4665 862019-02-19 Jason Merrill <jason@redhat.com>
87
88 PR c++/88380 - wrong-code with flexible array and NSDMI.
89 * typeck2.c (process_init_constructor_record): Skip flexarrays.
90
53ceddc9 912019-02-20 will wray <wjwray@gmail.com>
92
93 PR c++/88572 - wrong handling of braces on scalar init.
94 * decl.c (reshape_init_r): Allow braces around scalar initializer
95 within aggregate init. Reject double braced-init of scalar
96 variable.
97
ab0fbe16 982019-02-20 Paolo Carlini <paolo.carlini@oracle.com>
99
100 PR c++/84536
101 * pt.c (tsubst_init): Diagnose an initializer expanding to an
102 empty list of expressions; tweak wrt dependent types.
103 (regenerate_decl_from_template): For VAR_DECLs call tsubst_init
104 instead of tsubst_expr.
105
ce7f22f1 1062019-02-19 Jason Merrill <jason@redhat.com>
107
108 PR c++/88368 - wrong 'use of deleted function'
109 * method.c (walk_field_subobs): Remember errors from get_nsdmi.
110 (get_defaulted_eh_spec): Call push_tinst_level.
111 * pt.c (maybe_instantiate_noexcept): Keep error_mark_node.
112 * typeck2.c (merge_exception_specifiers): Handle error_mark_node.
113
d572a4c3 1142019-02-19 Chung-Lin Tang <cltang@codesourcery.com>
115
116 PR c/87924
117 * parser.c (cp_parser_oacc_clause_wait): Add representation of wait
118 clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.
119
31358ed0 1202019-02-19 Jakub Jelinek <jakub@redhat.com>
121
5ebe5c44 122 PR c++/89387
123 * lambda.c (maybe_generic_this_capture): Don't check
124 DECL_NONSTATIC_MEMBER_FUNCTION_P on USING_DECLs.
125
fcea8c4d 126 PR c++/89391
127 * typeck.c (build_reinterpret_cast_1): Don't handle void to
128 && conversion go through build_target_expr_with_type.
129
31358ed0 130 PR c++/89390
131 * error.c (qualified_name_lookup_error): Only call
132 suggest_alternative_in_scoped_enum if name is IDENTIFIER_NODE.
133
25694c85 1342019-02-19 Tom Honermann <tom@honermann.net>
135
136 * name-lookup.c (get_std_name_hint): Added u8string as a name hint.
137
a1e1b603 1382019-02-18 Jason Merrill <jason@redhat.com>
139
6aaacaf1 140 PR c++/89336 - multiple stores in constexpr stmt.
141 * constexpr.c (cxx_eval_store_expression): Preevaluate scalar or
142 assigned value.
143
f6347d1a 144 * pt.c (check_explicit_specialization): If the declarator is a
145 template-id, only check whether the arguments are dependent.
146
a1e1b603 147 Improve duplicate [[likely]] diagnostic.
148 * parser.c (cp_parser_statement): Make attrs_loc a range. Pass it
149 to process_stmt_hotness_attribute.
150 * cp-gimplify.c (process_stmt_hotness_attribute): Take attrs_loc.
151 (genericize_if_stmt): Use likely/unlikely instead of predictor_name.
152
33e6651d 1532019-02-17 Marek Polacek <polacek@redhat.com>
154
155 PR c++/89217 - ICE with list-initialization in range-based for loop.
156 * constexpr.c (unshare_constructor): No longer static.
157 * cp-tree.h (unshare_constructor): Declare.
158 * semantics.c (finish_compound_literal): When dealing with a
159 non-dependent expression in a template, return the original
160 expression. Pass LOOKUP_NO_NARROWING to digest_init_flags.
161
3a860627 1622019-02-13 Marek Polacek <polacek@redhat.com>
163
164 PR c++/89297 - ICE with OVERLOAD in template.
165 * semantics.c (finish_compound_literal): Call
166 instantiate_non_dependent_expr_sfinae.
167
601c59dd 1682019-02-13 Alexandre Oliva <aoliva@redhat.com>
169
40563cf7 170 PR c++/86379
171 * cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
172 * name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
173 * search.c (protected_accessible_p): Follow USING_DECL_DECLS.
174 (shared_member_p): Likewise.
175 (lookup_member): Likewise.
176 * decl.c (grok_special_member_properties): Skip USING_DECLs.
177 * semantics.c (finish_omp_declare_simd_methods): Likewise.
178 (finish_qualified_id_expr): Do not call shared_member_p with
179 a dependent expr.
180
601c59dd 181 PR c++/87322
182 * pt.c (tsubst_lambda_expr): Avoid duplicate tsubsting.
183 Move cp_evaluated resetting before signature tsubsting.
184 (gen_elem_of_pack_expansion_instantiation): Separate local
185 specializations per index.
186
f2da1a76 1872019-02-13 David Malcolm <dmalcolm@redhat.com>
188
189 PR c++/89036
190 * class.c (add_method): Drop destructor assertion.
191
64bd49fa 1922019-02-13 Paolo Carlini <paolo.carlini@oracle.com>
193
194 PR c++/88986
195 * decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
196 context (the first argument).
197 * pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
198 as context.
199
c8e19553 2002019-02-12 Jason Merrill <jason@redhat.com>
201
202 PR c++/89144 - link error with constexpr initializer_list.
203 * call.c (convert_like_real) [ck_list]: Don't allocate a temporary
204 array for an empty list.
205 * typeck2.c (store_init_value): Don't use cxx_constant_init in a
206 template.
207
33fe677e 2082019-02-11 Jason Merrill <jason@redhat.com>
209
210 PR c++/89241 - ICE with __func__ in lambda in template.
211 * pt.c (enclosing_instantiation_of): Also check
212 instantiated_lambda_fn_p for the template context.
213
44263306 2142019-02-11 Marek Polacek <polacek@redhat.com>
215
216 PR c++/89212 - ICE converting nullptr to pointer-to-member-function.
217 * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for
218 null member pointer value.
219
61b94553 2202019-02-11 Jakub Jelinek <jakub@redhat.com>
221
222 PR c++/88977
223 * pt.c (convert_nontype_argument): Pass true as manifestly_const_eval
224 to maybe_constant_value calls.
225
b10193f4 2262019-02-11 Marek Polacek <polacek@redhat.com>
227
228 * typeck2.c (digest_init_r): Remove commented code.
229
08acf739 2302019-02-11 Martin Sebor <msebor@redhat.com>
231
232 PR c++/87996
233 * decl.c (compute_array_index_type_loc): Preserve signed sizes
234 for diagnostics. Call valid_array_size_p instead of error.
235 * init.c (build_new_1): Compute size for diagnostic. Call
236 invalid_array_size_error
237 (build_new): Call valid_array_size_p instead of error.
238
939d44f3 2392019-02-07 Alexandre Oliva <aoliva@redhat.com>
240
241 PR c++/86218
242 * call.c (compare_ics): Deal with ck_aggr in either cs.
243
c92ab8d4 2442019-02-06 David Malcolm <dmalcolm@redhat.com>
245
246 PR c++/71302
247 * call.c (get_location_for_expr_unwinding_for_system_header): New
248 function.
249 (conversion_null_warnings): Use it when getting locations for
250 EXPR, effectively adding a call to
251 get_location_for_expr_unwinding_for_system_header for
252 -Wconversion-null and making use of EXPR_LOCATION for
253 -Wzero-as-null-pointer-constant.
254
b5a6b127 2552019-02-05 Jakub Jelinek <jakub@redhat.com>
256
257 PR c++/89187
258 * optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
259 PARM_DECLs of the thunk.
260 * lambda.c (maybe_add_lambda_conv_op): Likewise.
261
74ce2ebb 2622019-02-05 Marek Polacek <polacek@redhat.com>
263
264 PR c++/89158 - by-value capture of constexpr variable broken.
265 * call.c (convert_like_real) <case ck_user>: Call mark_exp_read
266 instead of mark_rvalue_use.
267
9ca54fa1 2682019-02-05 Alexandre Oliva <aoliva@redhat.com>
269
270 PR c++/87770
271 * pt.c (instantiates_primary_template_p): New.
272 (type_dependent_expression_p): Use it.
273
c758dd5a 2742019-02-01 Jason Merrill <jason@redhat.com>
275
276 PR c++/88761 - ICE with reference capture of constant.
277 * lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for
278 non-proxy decls.
279
bdb43276 2802019-02-01 Marek Polacek <polacek@redhat.com>
281
282 PR c++/88325 - ICE with invalid out-of-line template member definition.
283 * parser.c (cp_parser_class_name): Don't call make_typename_type
284 for overloads.
285
5ab8180e 2862019-02-01 Jakub Jelinek <jakub@redhat.com>
287
288 PR c++/87175
289 * parser.c (cp_parser_gnu_attributes_opt): Set ok to false
290 if require_open failed.
291
c8f861a0 2922019-01-31 Marek Polacek <polacek@redhat.com>
293
294 PR c++/89083, c++/80864 - ICE with list initialization in template.
295 * constexpr.c (adjust_temp_type): Use copy_node and change the type
296 instead of using build_constructor.
297 * decl.c (reshape_init_r): Don't reshape a digested initializer.
298 Return the initializer for COMPOUND_LITERAL_P.
299
f1329be6 300 PR c++/88983 - ICE with switch in constexpr function.
301 * constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
302 (cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
303 label in the else branch if we found it in the then branch.
304
8c28f0ef 3052019-01-30 Jason Merrill <jason@redhat.com>
306
307 PR c++/88752 - ICE with lambda and constexpr if.
308 * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
309 * pt.c (tsubst_lambda_expr): Set it.
310 (instantiated_lambda_fn_p): Check it.
311 (enclosing_instantiation_of): Use it.
312
abb9ae66 3132019-01-31 Jakub Jelinek <jakub@redhat.com>
314
315 PR libstdc++/88170
316 * cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
317 a C cast in pp_c_flag_gnu_v3 mode.
318
9b0e9786 3192019-01-30 Jakub Jelinek <jakub@redhat.com>
320
321 PR c++/88988
322 * lambda.c (is_capture_proxy): Don't return true for
323 DECL_OMP_PRIVATIZED_MEMBER artificial vars.
324
7066144a 3252019-01-30 Marek Polacek <polacek@redhat.com>
326
327 PR c++/89119 - ICE with value-initialization in template.
328 * pt.c (tsubst_copy_and_build): Handle RANGE_EXPR.
329
64e3499e 3302019-01-29 Jason Merrill <jason@redhat.com>
331
332 PR c++/86943 - wrong code converting lambda to function pointer.
333 * lambda.c (maybe_add_lambda_conv_op): Use a template-id in the
334 call. Only forward parms for decltype.
335 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P
336 specially.
337 * typeck.c (check_return_expr): Don't mess with a thunk call.
338
107cba11 3392019-01-28 Jason Merrill <jason@redhat.com>
340
341 PR c++/89089 - ICE with [[no_unique_address]].
342 PR c++/88865 - wrong layout with [[no_unique_address]].
343 * class.c (check_field_decls): A potentially-overlapping field makes
344 the class non-layout-POD, but not non-empty.
345 (end_of_class): Always consider empty data members.
346 (layout_class_type): Set DECL_SIZE for empty fields.
347
44da2a17 3482019-01-28 Marek Polacek <polacek@redhat.com>
349
350 PR c++/88358 - name wrongly treated as type.
351 * parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
352 in parameter-list is a type if the function's declarator-id is not
353 qualified.
354
1d41b42f 3552019-01-27 Marek Polacek <polacek@redhat.com>
356
b7feeace 357 PR c++/88815 - narrowing conversion lost in decltype.
358 PR c++/78244 - narrowing conversion in template not detected.
359 * cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
360 * pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
361 CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
362 * semantics.c (finish_compound_literal): When the compound literal
363 isn't instantiation-dependent and the type isn't type-dependent,
364 fall back to the normal processing. Set CONSTRUCTOR_IS_DEPENDENT.
365
1d41b42f 366 PR c++/89024 - ICE with incomplete enum type.
367 * call.c (standard_conversion): When converting an
368 ARITHMETIC_TYPE_P to an incomplete type, return NULL.
369
837ddebd 3702019-01-25 Paolo Carlini <paolo.carlini@oracle.com>
371
372 PR c++/88969
373 * call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
374 * decl2.c (coerce_delete_type): Use build_pointer_type instead
375 of TYPE_POINTER_TO.
376
8c89c5fc 3772019-01-24 Jason Merrill <jason@redhat.com>
378
379 PR c++/89001 - mangling of reference temporaries
380 * cp-tree.h (struct saved_scope): Add ref_temp_count.
381 (current_ref_temp_count): New macro.
382 * mangle.c (mangle_ref_init_variable): Use it.
383 * typeck2.c (store_init_value): Clear it.
384 * call.c (make_temporary_var_for_ref_to_temp): Copy public and
385 comdat.
386
b5e76680 3872019-01-24 Jakub Jelinek <jakub@redhat.com>
388
389 PR c++/88976
390 * semantics.c (finish_omp_cancel): Diagnose more than one if
391 on #pragma omp cancel with different modifiers. Use
392 maybe_convert_cond when not in template or build_x_binary_op
393 otherwise.
394
dffbcba8 3952019-01-23 Marek Polacek <polacek@redhat.com>
396
397 PR c++/88757 - qualified name treated wrongly as type.
398 * parser.c (cp_parser_direct_declarator): Don't treat qualified-ids
399 in parameter-list as types if name lookup for declarator-id didn't
400 find one or more function templates.
401
1f03c410 4022019-01-23 Jakub Jelinek <jakub@redhat.com>
403
8090d51c 404 PR c/44715
405 * cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
406 after genericizing cond and incr expressions.
407
1f03c410 408 PR c++/88984
409 * cp-gimplify.c (genericize_switch_stmt): Move cond genericization
410 before the begin_bc_block call.
411
48c03f15 4122019-01-21 Jason Merrill <jason@redhat.com>
413
414 PR c++/87893 - constexpr ctor ICE on ARM.
415 PR c++/88293 - ICE with comma expression.
416 * constexpr.c (initialized_type): Don't shortcut non-void type.
417 Handle COMPOUND_EXPR.
418 (cxx_eval_outermost_constant_expr): Return early for void type.
419
99bf4b63 4202019-01-21 Jakub Jelinek <jakub@redhat.com>
421
77fe9474 422 PR c++/88949
423 * optimize.c (cxx_copy_decl): New function.
424 (clone_body): Use it instead of copy_decl_no_change.
425
99bf4b63 426 PR sanitizer/88901
427 * typeck.c (cp_build_binary_op): Don't instrument
428 SANITIZE_POINTER_COMPARE if processing_template_decl.
429 (pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
430
ecd2d842 4312019-01-18 Jason Merrill <jason@redhat.com>
432
433 PR c++/88875 - error with explicit list constructor.
434 * call.c (reference_binding): Don't modify EXPR. Set
435 need_temporary_p on the ck_user conversion for a temporary.
436 (convert_like_real): Check it.
437
6d4e8a95 4382019-01-18 H.J. Lu <hongjiu.lu@intel.com>
439
440 PR c/51628
441 PR c/88664
442 * call.c (convert_for_arg_passing): Upate the
443 warn_for_address_or_pointer_of_packed_member call.
444 * typeck.c (convert_for_assignment): Likewise.
445
9d3c4130 4462019-01-17 Jason Merrill <jason@redhat.com>
447
bc9c0483 448 PR c++/86205 - ICE with ?: of throw and template-id.
449 * pt.c (resolve_nondeduced_context_or_error): Split out from...
450 * typeck.c (decay_conversion): ...here.
451 * call.c (build_conditional_expr_1): Use it.
452
9d3c4130 453 PR c++/86740, ICE with constexpr if and nested generic lambdas.
454 * tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.
455
0f910e62 4562019-01-17 Paolo Carlini <paolo.carlini@oracle.com>
457
458 * decl.c (grokdeclarator): Use typespec_loc in error messages
459 about 'auto' and trailing return type.
460
098cc8f0 4612019-01-17 David Malcolm <dmalcolm@redhat.com>
462
463 PR c++/88699
464 * class.c (add_method): Don't use DECL_DESTRUCTOR_P on
465 USING_DECLs.
466
a395125a 4672019-01-17 Nathan Sidwell <nathan@acm.org>
468
469 PR c++/86610
470 * semantics.c (process_outer_var_ref): Only skip dependent types
471 in templates.
472
5461905d 4732019-01-17 Alexandre Oliva <aoliva@redhat.com>
474
c5f929a4 475 PR c++/87768
476 * cp-tree.h (saved_scope): Add suppress_location_wrappers.
477 * name-lookup.c (do_push_to_top_level): Save and reset it.
478 (do_pop_from_top_level): Restore it.
479
f97941b7 480 PR c++/86648
481 * pt.c (make_template_placeholder): Use auto_identifier.
482 (is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
483 * error.c (dump_type): Handle template placeholders.
484 * cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.
485
5461905d 486 PR c++/88146
487 * cvt.c (convert_to_void): Handle all cdtor calls as if
488 returning void.
489
b92cc3ed 4902019-01-16 Paolo Carlini <paolo.carlini@oracle.com>
491
492 * decl.c (grokdeclarator): Use locations[ds_storage_class] in
493 error messages about ill-formed uses of mutable.
494
9fc2172c 4952019-01-16 Marek Polacek <polacek@redhat.com>
496
497 PR c++/78244 - narrowing conversion in template not detected.
498 * call.c (perform_implicit_conversion_flags): Set
499 IMPLICIT_CONV_EXPR_BRACED_INIT.
500 * cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
501 * pt.c (tsubst_copy_and_build): Use it.
502
727d210b 5032019-01-15 David Malcolm <dmalcolm@redhat.com>
504
505 PR c++/88795
506 * pt.c (build_deduction_guide): Bail out if tsubst_arg_types
507 fails.
508
39a51021 5092019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
510
511 * decl.c (start_decl): Improve error location.
512 * decl2.c (grokfield): Likewise.
513
5142019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
515
516 * decl.c (grokdeclarator): Move further up the location_t loc
517 declaration and use the location when building a TYPE_DECL for
518 a typedef name.
519 * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
520 about an ill-formed bit-field as typedef.
521
affca1c8 5222019-01-14 Marek Polacek <polacek@redhat.com>
523
524 PR c++/88830 - ICE with abstract class.
525 * decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
526 Fix formatting.
527
9f8a8956 528 PR c++/88825 - ICE with bogus function return type deduction.
529 * typeck.c (can_do_nrvo_p): Check error_mark_node.
530
82362779 5312019-01-14 Tom Honermann <tom@honermann.net>
532
533 Implement P0482R5, char8_t: A type for UTF-8 characters and strings
534 * cvt.c (type_promotes_to): Handle char8_t promotion.
535 * decl.c (grokdeclarator): Handle invalid type specifier
536 combinations involving char8_t.
537 * lex.c (init_reswords): Add char8_t as a reserved word.
538 * mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
539 * parser.c (cp_keyword_starts_decl_specifier_p)
540 (cp_parser_simple_type_specifier): Recognize char8_t as a simple
541 type specifier.
542 (cp_parser_string_literal): Use char8_array_type_node for the type
543 of CPP_UTF8STRING.
544 (cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
545 headers.
546 * rtti.c (emit_support_tinfos): type_info support for char8_t.
547 * tree.c (char_type_p): Recognize char8_t as a character type.
548 * typeck.c (string_conv_p): Handle conversions of u8 string
549 literals of char8_t type.
550 (check_literal_operator_args): Handle UDLs with u8 string literals
551 of char8_t type.
552 * typeck2.c (ordinary_char_type_p): New.
553 (digest_init_r): Disallow initializing a char array with a u8 string
554 literal.
555
bf4eb32b 5562019-01-14 Martin Liska <mliska@suse.cz>
557
558 PR gcov-profile/88263
559 * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
560 as location of the TLS wrapper.
561
2fa582a9 5622019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
563
564 * decl.c (cp_finish_decl): Improve error location.
565 * decl2.c (grokfield): Likewise, improve two locations.
566
0b5957b9 5672019-01-11 Marek Polacek <polacek@redhat.com>
568
569 PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
570 * typeck.c (maybe_warn_pessimizing_move): Return if ARG isn't
571 ADDR_EXPR.
572
d07c152b 5732019-01-11 Jason Merrill <jason@redhat.com>
574
575 PR c++/88312 - pack expansion of decltype.
576 * pt.c (instantiation_dependent_r): A template non-type parameter
577 pack is instantiation-dependent.
578
0c2ebbc4 5792019-01-11 Jason Merrill <jason@redhat.com>
580
581 PR c++/88613 - ICE with use of const var in lambda.
582 * expr.c (mark_use): Fix location wrapper handling.
583 * cp-gimplify.c (cp_fold_maybe_rvalue): Call mark_rvalue_use.
584
1b2f170e 5852019-01-11 Tobias Burnus <burnus@net-b.de>
586
587 PR C++/88114
588 * decl2.c (maybe_emit_vtables): If needed, generate code for
589 the destructor of an abstract class.
590 (mark_used): Update comment for older function-name change.
591
b385e516 5922019-01-11 Paolo Carlini <paolo.carlini@oracle.com>
593
594 * decl.c (start_decl): Improve error location.
595 (grokdeclarator): Likewise, improve two locations.
596
f4d3c071 5972019-01-09 Sandra Loosemore <sandra@codesourcery.com>
598
599 PR other/16615
600
601 * cp-tree.h: Mechanically replace "can not" with "cannot".
602 * parser.c: Likewise.
603 * pt.c: Likewise.
604
7cc45975 6052019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
606
607 * decl.c (grok_reference_init): Improve error location.
608 (grokdeclarator): Likewise, improve two locations.
609
90e20c9c 6102019-01-08 Marek Polacek <polacek@redhat.com>
611
91902bb4 612 PR c++/88538 - braced-init-list in template-argument-list.
613 * parser.c (cp_parser_template_argument): Handle braced-init-list when
614 in C++20.
615
90e20c9c 616 PR c++/88548 - this accepted in static member functions.
617 * parser.c (cp_debug_parser): Adjust printing of
618 local_variables_forbidden_p.
619 (cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
620 (cp_parser_primary_expression): When checking
621 local_variables_forbidden_p, use THIS_FORBIDDEN or
622 LOCAL_VARS_FORBIDDEN.
623 (cp_parser_lambda_body): Update the type of
624 local_variables_forbidden_p. Set it to 0 rather than false.
625 (cp_parser_condition): Adjust call to cp_parser_declarator.
626 (cp_parser_explicit_instantiation): Likewise.
627 (cp_parser_init_declarator): Likewise.
628 (cp_parser_declarator): New parameter. Use it.
629 (cp_parser_direct_declarator): New parameter. Use it to set
630 local_variables_forbidden_p. Adjust call to cp_parser_declarator.
631 (cp_parser_type_id_1): Adjust call to cp_parser_declarator.
632 (cp_parser_parameter_declaration): Likewise.
633 (cp_parser_default_argument): Update the type of
634 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
635 rather than true.
636 (cp_parser_member_declaration): Tell cp_parser_declarator if we saw
637 'static' or 'friend'.
638 (cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
639 (cp_parser_late_parsing_default_args): Update the type of
640 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
641 rather than true.
642 (cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
643 (cp_parser_objc_class_ivars): Likewise.
644 (cp_parser_objc_struct_declaration): Likewise.
645 (cp_parser_omp_for_loop_init): Likewise.
646 * parser.h (cp_parser): Change the type of local_variables_forbidden_p
647 to unsigned char.
648 (LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
649 Define.
650
8f7d5246 6512019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
652
653 * decl.c (start_decl): Improve permerror location.
654
6e5908c9 6552019-01-08 Jonathan Wakely <jwakely@redhat.com>
656 Jakub Jelinek <jakub@redhat.com>
657
658 PR c++/88554
659 * decl.c (finish_function): For -Wreturn-type don't add a return *this;
660 fixit hint if current_class_ref is NULL. Use a single if instead of
661 two nested ones.
662
2318c037 6632019-01-07 Paolo Carlini <paolo.carlini@oracle.com>
664
665 * decl.c (start_decl): Improve two error_at locations.
666 (expand_static_init): Likewise.
667
677576f7 6682019-01-07 Marek Polacek <polacek@redhat.com>
669
670 PR c++/88741 - wrong error with initializer-string.
671 * decl.c (cp_complete_array_type): Strip any location wrappers.
672
c38103e8 6732019-01-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
674
675 PR c++/88261
676 PR c++/69338
677 PR c++/69696
678 PR c++/69697
679 * cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
680 * typeck2.c (digest_init_r): Raise an error for non-static
681 initialization of a flexible array member.
682 (process_init_constructor, massage_init_elt,
683 process_init_constructor_array, process_init_constructor_record,
684 process_init_constructor_union, process_init_constructor): Add the
685 flags parameter and pass it thru.
686 (store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
687 digest_init_flags for static decls.
688
59409f09 6892019-01-07 Jakub Jelinek <jakub@redhat.com>
690
691 PR c++/85052
692 * cp-tree.h (cp_build_vec_convert): Declare.
693 * parser.c (cp_parser_postfix_expression): Parse
694 __builtin_convertvector.
695 * constexpr.c: Include fold-const-call.h.
696 (cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
697 (potential_constant_expression_1): Likewise.
698 * semantics.c (cp_build_vec_convert): New function.
699 * pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
700 IFN_VEC_CONVERT.
701
0627c5c9 7022019-01-03 Jakub Jelinek <jakub@redhat.com>
703
704 PR c++/88636
705 * decl.c (builtin_function_1): Return result of pushdecl_top_level
706 or pushdecl rather than decl.
707
f9f7d90c 7082019-01-03 Paolo Carlini <paolo.carlini@oracle.com>
709
710 * tree.c (handle_nodiscard_attribute): Improve warning location.
711
37fb9cf6 7122019-01-02 Marek Polacek <polacek@redhat.com>
713
714 PR c++/88612 - ICE with -Waddress-of-packed-member.
715 * call.c (convert_for_arg_passing): Only give warnings with tf_warning.
716 * typeck.c (convert_for_assignment): Likewise.
717
6080dd2f 718 PR c++/88631 - CTAD failing for value-initialization.
719 * typeck2.c (build_functional_cast): Try deducing the template
720 arguments even if there are no arguments to deduce from.
721
fbd26352 7222019-01-01 Jakub Jelinek <jakub@redhat.com>
ca29c574 723
8e8f6434 724 Update copyright years.
7dfbd804 725\f
fbd26352 726Copyright (C) 2019 Free Software Foundation, Inc.
7dfbd804 727
728Copying and distribution of this file, with or without modification,
729are permitted in any medium without royalty provided the copyright
730notice and this notice are preserved.