]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/cp/ChangeLog
2019-03-04 Edward Smith-Rowland <3dw4rd@verizon.net>
[thirdparty/gcc.git] / gcc / cp / ChangeLog
CommitLineData
10599713 12019-03-04 Jakub Jelinek <jakub@redhat.com>
2
3 PR c++/71446
4 * call.c (field_in_pset): New function.
5 (build_aggr_conv): Handle CONSTRUCTOR_IS_DESIGNATED_INIT correctly.
6
73e3d2ee 72019-03-02 Jakub Jelinek <jakub@redhat.com>
8
9 PR c++/71446
10 * cp-tree.h (CONSTRUCTOR_IS_DESIGNATED_INIT): Define.
11 * parser.c (cp_parser_braced_list): Adjust cp_parser_initializer_list
12 caller, set CONSTRUCTOR_IS_DESIGNATED_INIT.
13 (cp_parser_initializer_list): Add designated parameter, set *designated
14 to a bool whether any designators were parsed.
15 * decl.c (reshape_init): Copy over CONSTRUCTOR_IS_DESIGNATED_INIT if
16 needed.
17 * pt.c (tsubst_copy_and_build): Likewise.
18 * call.c (implicit_conversion): If CONSTRUCTOR_IS_DESIGNATED_INIT,
19 don't call build_list_conv, nor build_complex_conv, nor attempt to
20 convert a single element initializer to scalar.
21
f409a882 222019-03-01 Marek Polacek <polacek@redhat.com>
23
ae8e3cb6 24 PR c++/89537 - missing location for error with non-static member fn.
25 * call.c (resolve_args): Use EXPR_LOCATION.
26 * typeck.c (build_class_member_access_expr): Use input_location.
27
f409a882 28 PR c++/89532 - ICE with incomplete type in decltype.
29 * semantics.c (finish_compound_literal): Return error_mark_node
30 if digest_init_flags returns error_mark_node.
31
b279a142 322019-03-01 Jakub Jelinek <jakub@redhat.com>
33
34 Implement P1002R1, Try-catch blocks in constexpr functions
35 PR c++/89513
36 * parser.c (cp_parser_ctor_initializer_opt_and_function_body):
37 Diagnose constexpr ctor or function with function-try-block with
38 pedwarn for c++17 and earlier. Formatting fix.
39 (cp_parser_try_block): Use pedwarn instead of error and only for
40 c++17 and earlier when try block appears in constexpr function.
41 * constexpr.c (build_constexpr_constructor_member_initializers):
42 Handle TRY_BLOCK here instead of erroring on it.
43
c7110ca7 442019-02-28 Jason Merrill <jason@redhat.com>
45
bb019931 46 PR c++/88183 - ICE with .* fold-expression.
47 * pt.c (fold_expression) [DOTSTAR_EXPR]: Remove special handling.
48
9b4cf3ba 49 PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
50 * class.c, lambda.c, pt.c: Revert earlier change.
51 * lambda.c (add_capture): Don't special-case capture of dependent
52 VLA.
53
c7110ca7 54 * name-lookup.c (print_binding_level): Print this_entity.
55
90c2137c 562019-02-27 Marek Polacek <polacek@redhat.com>
57
58 PR c++/88857 - ICE with value-initialization of argument in template.
59 * call.c (convert_like_real): Don't call build_value_init in template.
60
9ecd4044 612019-02-27 Jason Merrill <jason@redhat.com>
62
63 PR c++/86969 - ICE with constexpr if and recursive generic lambdas.
64 * semantics.c (process_outer_var_ref): Do capture dependent vars.
65 * class.c (finish_struct): Only add TAG_DEFN if T is in
66 current_function_decl.
67 * lambda.c (vla_capture_type): Force the capture type out into the
68 lambda's enclosing function.
69 (add_capture): Pass in the lambda.
70 * pt.c (tsubst_lambda_expr): complete_type a VLA capture type.
71
7304edd1 722019-02-27 Marek Polacek <polacek@redhat.com>
73
74 PR c++/89511 - ICE with using-declaration and unscoped enumerator.
75 * parser.c (cp_parser_using_declaration): For an unscoped enum
76 only use its context if it's not a function declaration.
77
c9f30cbb 782019-02-27 Paolo Carlini <paolo.carlini@oracle.com>
79
80 PR c++/89488
81 * method.c (process_subob_fn): When maybe_instantiate_noexcept
82 returns false don't call merge_exception_specifiers.
83
842019-02-27 Paolo Carlini <paolo.carlini@oracle.com>
85
86 PR c++/88987
87 * parser.c (cp_parser_noexcept_specification_opt): Return NULL_TREE
88 for a non-constant parsed expression.
89
a165fd90 902019-02-26 Jakub Jelinek <jakub@redhat.com>
91
92 PR c++/89481
93 * constexpr.c (cxx_eval_store_expression): When changing active union
94 member, set no_zero_init.
95
c005651d 962019-02-23 Marek Polacek <polacek@redhat.com>
97
98 PR c++/88294 - ICE with non-constant noexcept-specifier.
99 * pt.c (maybe_instantiate_noexcept): Set up the list of local
100 specializations. Set current_class_{ptr,ref}.
101
689cc9b6 1022019-02-22 David Malcolm <dmalcolm@redhat.com>
103
104 PR c++/89390
105 * parser.c (cp_parser_unqualified_id): Capture and use locations
106 for destructors.
107
e7652833 1082019-02-22 Marek Polacek <polacek@redhat.com>
109
110 PR c++/89420 - ICE with CAST_EXPR in explicit-specifier.
111 * decl.c (build_explicit_specifier): Don't check
112 processing_template_decl. Call instantiation_dependent_expression_p
113 instead of value_dependent_expression_p. Call
114 instantiate_non_dependent_expr_sfinae before
115 build_converted_constant_expr instead of calling
116 instantiate_non_dependent_expr after it. Add
117 processing_template_decl_sentinel.
118
51391c1d 1192019-02-22 Thomas Schwinge <thomas@codesourcery.com>
120
121 * parser.c (cp_parser_oacc_simple_clause): Remove parser formal
122 parameter, move loc formal parameter to the front. Adjust all
123 users.
124 (cp_parser_oacc_shape_clause): Add loc formal parameter. Adjust
125 all users.
126
b6700c1a 1272019-02-21 Jason Merrill <jason@redhat.com>
128
532cca3f 129 PR c++/87685 - generic lambda 'this' capture error.
130 * lambda.c (lambda_expr_this_capture): Change add_capture_p to int.
131 (maybe_generic_this_capture): Pass -1.
132
a7ea8f96 133 PR c++/88394 - ICE with VLA init-capture.
134 * lambda.c (is_normal_capture_proxy): Check DECL_CAPTURED_VARIABLE.
135
e2d4b8be 136 PR c++/88869 - C++17 ICE with CTAD and explicit specialization.
137 * pt.c (do_class_deduction): Don't include explicit specialization
138 args in outer_args.
139
b6700c1a 140 PR c++/89422 - ICE with -g and lambda in default arg in template.
141 * pt.c (tsubst_function_decl): SET_DECL_FRIEND_CONTEXT sooner.
142
147a31b6 1432019-02-21 Jason Merrill <jason@redhat.com>
144
145 PR c++/88419 - C++17 ICE with class template arg deduction.
146 * pt.c (make_template_placeholder): Set TYPE_CANONICAL after
147 CLASS_PLACEHOLDER_TEMPLATE.
148
02d7a132 1492019-02-21 Jakub Jelinek <jakub@redhat.com>
150
151 PR c++/89285
152 * constexpr.c (struct constexpr_fundef): Add parms and result members.
153 (retrieve_constexpr_fundef): Adjust for the above change.
154 (register_constexpr_fundef): Save constexpr body with copy_fn,
155 temporarily set DECL_CONTEXT on DECL_RESULT before that.
156 (get_fundef_copy): Change FUN argument to FUNDEF with
157 constexpr_fundef * type, grab body and parms/result out of
158 constexpr_fundef struct and temporarily change it for copy_fn calls
159 too.
160 (cxx_eval_builtin_function_call): For __builtin_FUNCTION temporarily
161 adjust current_function_decl from ctx->call context. Test
162 !potential_constant_expression instead of !is_constant_expression.
163 (cxx_bind_parameters_in_call): Grab parameters from new_call. Undo
164 convert_for_arg_passing changes for TREE_ADDRESSABLE type passing.
165 (cxx_eval_call_expression): Adjust get_fundef_copy caller.
166 (cxx_eval_conditional_expression): For IF_STMT, allow then or else
167 operands to be NULL.
168 (label_matches): Handle BREAK_STMT and CONTINUE_STMT.
169 (cxx_eval_loop_expr): Add support for FOR_STMT, WHILE_STMT and DO_STMT.
170 (cxx_eval_switch_expr): Add support for SWITCH_STMT.
171 (cxx_eval_constant_expression): Handle IF_STMT, FOR_STMT, WHILE_STMT,
172 DO_STMT, CONTINUE_STMT, SWITCH_STMT, BREAK_STMT and CONTINUE_STMT.
173 For SIZEOF_EXPR, recurse on the result of fold_sizeof_expr. Ignore
174 DECL_EXPR with USING_DECL operand.
175 * lambda.c (maybe_add_lambda_conv_op): Build thisarg using
176 build_int_cst to make it a valid constant expression.
177
dcd8f919 1782019-02-20 Jason Merrill <jason@redhat.com>
179
180 PR c++/88690 - C++17 ICE with empty base in aggregate.
181 * typeck2.c (process_init_constructor_record): Skip trivial
182 initialization of an empty base.
183
309e5f71 1842019-02-21 Richard Biener <rguenther@suse.de>
185
186 PR middle-end/89392
187 * vtable-class-hierarchy.c (vtv_generate_init_routine): Do not
188 make symtab process new functions here.
189
4e60ed29 1902019-02-20 Jason Merrill <jason@redhat.com>
191
192 PR c++/87921 - wrong error with inline static data member.
193 * decl2.c (finish_static_data_member_decl): Don't set DECL_IN_AGGR_P
194 for a non-template inline variable. Do nothing for an
195 already-instantiated variable.
196 (c_parse_final_cleanups): Check DECL_IN_AGGR_P without
197 DECL_INLINE_VAR_P.
198 * decl.c (check_initializer): Likewise.
199 (make_rtl_for_nonlocal_decl): Likewise.
200 * pt.c (instantiate_decl): Likewise.
201 * typeck2.c (store_init_value): Likewise.
202
b47245f1 2032019-02-20 Jakub Jelinek <jakub@redhat.com>
204
0c3f2aa9 205 PR c++/89403
206 * decl2.c (c_parse_final_cleanups): Move TREE_ASM_WRITTEN setting
207 for flag_syntax_only from here...
208 * semantics.c (expand_or_defer_fn_1): ... here.
209
02dc6028 210 PR c++/89405
211 * decl.c (maybe_commonize_var): When clearing TREE_PUBLIC and
212 DECL_COMMON, set DECL_INTERFACE_KNOWN.
213
b47245f1 214 PR c++/89336
215 * constexpr.c (cxx_eval_store_expression): Diagnose changing of active
216 union member for -std=c++17 and earlier.
217
af48cea2 2182019-02-19 Jason Merrill <jason@redhat.com>
219
220 PR c++/87513 - 'sorry' mangling PMF template-id.
221 * mangle.c (write_expression): Handle SCOPE_REF to BASELINK.
222
fd8a4665 2232019-02-19 Jason Merrill <jason@redhat.com>
224
225 PR c++/88380 - wrong-code with flexible array and NSDMI.
226 * typeck2.c (process_init_constructor_record): Skip flexarrays.
227
53ceddc9 2282019-02-20 will wray <wjwray@gmail.com>
229
230 PR c++/88572 - wrong handling of braces on scalar init.
231 * decl.c (reshape_init_r): Allow braces around scalar initializer
232 within aggregate init. Reject double braced-init of scalar
233 variable.
234
ab0fbe16 2352019-02-20 Paolo Carlini <paolo.carlini@oracle.com>
236
237 PR c++/84536
238 * pt.c (tsubst_init): Diagnose an initializer expanding to an
239 empty list of expressions; tweak wrt dependent types.
240 (regenerate_decl_from_template): For VAR_DECLs call tsubst_init
241 instead of tsubst_expr.
242
ce7f22f1 2432019-02-19 Jason Merrill <jason@redhat.com>
244
245 PR c++/88368 - wrong 'use of deleted function'
246 * method.c (walk_field_subobs): Remember errors from get_nsdmi.
247 (get_defaulted_eh_spec): Call push_tinst_level.
248 * pt.c (maybe_instantiate_noexcept): Keep error_mark_node.
249 * typeck2.c (merge_exception_specifiers): Handle error_mark_node.
250
d572a4c3 2512019-02-19 Chung-Lin Tang <cltang@codesourcery.com>
252
253 PR c/87924
254 * parser.c (cp_parser_oacc_clause_wait): Add representation of wait
255 clause without argument as 'wait (GOMP_ASYNC_NOVAL)', adjust comments.
256
31358ed0 2572019-02-19 Jakub Jelinek <jakub@redhat.com>
258
5ebe5c44 259 PR c++/89387
260 * lambda.c (maybe_generic_this_capture): Don't check
261 DECL_NONSTATIC_MEMBER_FUNCTION_P on USING_DECLs.
262
fcea8c4d 263 PR c++/89391
264 * typeck.c (build_reinterpret_cast_1): Don't handle void to
265 && conversion go through build_target_expr_with_type.
266
31358ed0 267 PR c++/89390
268 * error.c (qualified_name_lookup_error): Only call
269 suggest_alternative_in_scoped_enum if name is IDENTIFIER_NODE.
270
25694c85 2712019-02-19 Tom Honermann <tom@honermann.net>
272
273 * name-lookup.c (get_std_name_hint): Added u8string as a name hint.
274
a1e1b603 2752019-02-18 Jason Merrill <jason@redhat.com>
276
6aaacaf1 277 PR c++/89336 - multiple stores in constexpr stmt.
278 * constexpr.c (cxx_eval_store_expression): Preevaluate scalar or
279 assigned value.
280
f6347d1a 281 * pt.c (check_explicit_specialization): If the declarator is a
282 template-id, only check whether the arguments are dependent.
283
a1e1b603 284 Improve duplicate [[likely]] diagnostic.
285 * parser.c (cp_parser_statement): Make attrs_loc a range. Pass it
286 to process_stmt_hotness_attribute.
287 * cp-gimplify.c (process_stmt_hotness_attribute): Take attrs_loc.
288 (genericize_if_stmt): Use likely/unlikely instead of predictor_name.
289
33e6651d 2902019-02-17 Marek Polacek <polacek@redhat.com>
291
292 PR c++/89217 - ICE with list-initialization in range-based for loop.
293 * constexpr.c (unshare_constructor): No longer static.
294 * cp-tree.h (unshare_constructor): Declare.
295 * semantics.c (finish_compound_literal): When dealing with a
296 non-dependent expression in a template, return the original
297 expression. Pass LOOKUP_NO_NARROWING to digest_init_flags.
298
3a860627 2992019-02-13 Marek Polacek <polacek@redhat.com>
300
301 PR c++/89297 - ICE with OVERLOAD in template.
302 * semantics.c (finish_compound_literal): Call
303 instantiate_non_dependent_expr_sfinae.
304
601c59dd 3052019-02-13 Alexandre Oliva <aoliva@redhat.com>
306
40563cf7 307 PR c++/86379
308 * cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
309 * name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
310 * search.c (protected_accessible_p): Follow USING_DECL_DECLS.
311 (shared_member_p): Likewise.
312 (lookup_member): Likewise.
313 * decl.c (grok_special_member_properties): Skip USING_DECLs.
314 * semantics.c (finish_omp_declare_simd_methods): Likewise.
315 (finish_qualified_id_expr): Do not call shared_member_p with
316 a dependent expr.
317
601c59dd 318 PR c++/87322
319 * pt.c (tsubst_lambda_expr): Avoid duplicate tsubsting.
320 Move cp_evaluated resetting before signature tsubsting.
321 (gen_elem_of_pack_expansion_instantiation): Separate local
322 specializations per index.
323
f2da1a76 3242019-02-13 David Malcolm <dmalcolm@redhat.com>
325
326 PR c++/89036
327 * class.c (add_method): Drop destructor assertion.
328
64bd49fa 3292019-02-13 Paolo Carlini <paolo.carlini@oracle.com>
330
331 PR c++/88986
332 * decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
333 context (the first argument).
334 * pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
335 as context.
336
c8e19553 3372019-02-12 Jason Merrill <jason@redhat.com>
338
339 PR c++/89144 - link error with constexpr initializer_list.
340 * call.c (convert_like_real) [ck_list]: Don't allocate a temporary
341 array for an empty list.
342 * typeck2.c (store_init_value): Don't use cxx_constant_init in a
343 template.
344
33fe677e 3452019-02-11 Jason Merrill <jason@redhat.com>
346
347 PR c++/89241 - ICE with __func__ in lambda in template.
348 * pt.c (enclosing_instantiation_of): Also check
349 instantiated_lambda_fn_p for the template context.
350
44263306 3512019-02-11 Marek Polacek <polacek@redhat.com>
352
353 PR c++/89212 - ICE converting nullptr to pointer-to-member-function.
354 * pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Return early for
355 null member pointer value.
356
61b94553 3572019-02-11 Jakub Jelinek <jakub@redhat.com>
358
359 PR c++/88977
360 * pt.c (convert_nontype_argument): Pass true as manifestly_const_eval
361 to maybe_constant_value calls.
362
b10193f4 3632019-02-11 Marek Polacek <polacek@redhat.com>
364
365 * typeck2.c (digest_init_r): Remove commented code.
366
08acf739 3672019-02-11 Martin Sebor <msebor@redhat.com>
368
369 PR c++/87996
370 * decl.c (compute_array_index_type_loc): Preserve signed sizes
371 for diagnostics. Call valid_array_size_p instead of error.
372 * init.c (build_new_1): Compute size for diagnostic. Call
373 invalid_array_size_error
374 (build_new): Call valid_array_size_p instead of error.
375
939d44f3 3762019-02-07 Alexandre Oliva <aoliva@redhat.com>
377
378 PR c++/86218
379 * call.c (compare_ics): Deal with ck_aggr in either cs.
380
c92ab8d4 3812019-02-06 David Malcolm <dmalcolm@redhat.com>
382
383 PR c++/71302
384 * call.c (get_location_for_expr_unwinding_for_system_header): New
385 function.
386 (conversion_null_warnings): Use it when getting locations for
387 EXPR, effectively adding a call to
388 get_location_for_expr_unwinding_for_system_header for
389 -Wconversion-null and making use of EXPR_LOCATION for
390 -Wzero-as-null-pointer-constant.
391
b5a6b127 3922019-02-05 Jakub Jelinek <jakub@redhat.com>
393
394 PR c++/89187
395 * optimize.c (maybe_thunk_body): Clear TREE_ADDRESSABLE on
396 PARM_DECLs of the thunk.
397 * lambda.c (maybe_add_lambda_conv_op): Likewise.
398
74ce2ebb 3992019-02-05 Marek Polacek <polacek@redhat.com>
400
401 PR c++/89158 - by-value capture of constexpr variable broken.
402 * call.c (convert_like_real) <case ck_user>: Call mark_exp_read
403 instead of mark_rvalue_use.
404
9ca54fa1 4052019-02-05 Alexandre Oliva <aoliva@redhat.com>
406
407 PR c++/87770
408 * pt.c (instantiates_primary_template_p): New.
409 (type_dependent_expression_p): Use it.
410
c758dd5a 4112019-02-01 Jason Merrill <jason@redhat.com>
412
413 PR c++/88761 - ICE with reference capture of constant.
414 * lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for
415 non-proxy decls.
416
bdb43276 4172019-02-01 Marek Polacek <polacek@redhat.com>
418
419 PR c++/88325 - ICE with invalid out-of-line template member definition.
420 * parser.c (cp_parser_class_name): Don't call make_typename_type
421 for overloads.
422
5ab8180e 4232019-02-01 Jakub Jelinek <jakub@redhat.com>
424
425 PR c++/87175
426 * parser.c (cp_parser_gnu_attributes_opt): Set ok to false
427 if require_open failed.
428
c8f861a0 4292019-01-31 Marek Polacek <polacek@redhat.com>
430
431 PR c++/89083, c++/80864 - ICE with list initialization in template.
432 * constexpr.c (adjust_temp_type): Use copy_node and change the type
433 instead of using build_constructor.
434 * decl.c (reshape_init_r): Don't reshape a digested initializer.
435 Return the initializer for COMPOUND_LITERAL_P.
436
f1329be6 437 PR c++/88983 - ICE with switch in constexpr function.
438 * constexpr.c (cxx_eval_switch_expr): Use SWITCH_COND and SWITCH_BODY.
439 (cxx_eval_constant_expression) <case COND_EXPR>: Don't look for the
440 label in the else branch if we found it in the then branch.
441
8c28f0ef 4422019-01-30 Jason Merrill <jason@redhat.com>
443
444 PR c++/88752 - ICE with lambda and constexpr if.
445 * cp-tree.h (LAMBDA_EXPR_INSTANTIATED): New.
446 * pt.c (tsubst_lambda_expr): Set it.
447 (instantiated_lambda_fn_p): Check it.
448 (enclosing_instantiation_of): Use it.
449
abb9ae66 4502019-01-31 Jakub Jelinek <jakub@redhat.com>
451
452 PR libstdc++/88170
453 * cxx-pretty-print.c (pp_cxx_enumeration_constant): Print always as
454 a C cast in pp_c_flag_gnu_v3 mode.
455
9b0e9786 4562019-01-30 Jakub Jelinek <jakub@redhat.com>
457
458 PR c++/88988
459 * lambda.c (is_capture_proxy): Don't return true for
460 DECL_OMP_PRIVATIZED_MEMBER artificial vars.
461
7066144a 4622019-01-30 Marek Polacek <polacek@redhat.com>
463
464 PR c++/89119 - ICE with value-initialization in template.
465 * pt.c (tsubst_copy_and_build): Handle RANGE_EXPR.
466
64e3499e 4672019-01-29 Jason Merrill <jason@redhat.com>
468
469 PR c++/86943 - wrong code converting lambda to function pointer.
470 * lambda.c (maybe_add_lambda_conv_op): Use a template-id in the
471 call. Only forward parms for decltype.
472 * pt.c (tsubst_copy_and_build) [CALL_EXPR]: Handle CALL_FROM_THUNK_P
473 specially.
474 * typeck.c (check_return_expr): Don't mess with a thunk call.
475
107cba11 4762019-01-28 Jason Merrill <jason@redhat.com>
477
478 PR c++/89089 - ICE with [[no_unique_address]].
479 PR c++/88865 - wrong layout with [[no_unique_address]].
480 * class.c (check_field_decls): A potentially-overlapping field makes
481 the class non-layout-POD, but not non-empty.
482 (end_of_class): Always consider empty data members.
483 (layout_class_type): Set DECL_SIZE for empty fields.
484
44da2a17 4852019-01-28 Marek Polacek <polacek@redhat.com>
486
487 PR c++/88358 - name wrongly treated as type.
488 * parser.c (cp_parser_direct_declarator): Don't assume a qualified-id
489 in parameter-list is a type if the function's declarator-id is not
490 qualified.
491
1d41b42f 4922019-01-27 Marek Polacek <polacek@redhat.com>
493
b7feeace 494 PR c++/88815 - narrowing conversion lost in decltype.
495 PR c++/78244 - narrowing conversion in template not detected.
496 * cp-tree.h (CONSTRUCTOR_IS_DEPENDENT): New.
497 * pt.c (instantiation_dependent_r): Consider a CONSTRUCTOR with
498 CONSTRUCTOR_IS_DEPENDENT instantiation-dependent.
499 * semantics.c (finish_compound_literal): When the compound literal
500 isn't instantiation-dependent and the type isn't type-dependent,
501 fall back to the normal processing. Set CONSTRUCTOR_IS_DEPENDENT.
502
1d41b42f 503 PR c++/89024 - ICE with incomplete enum type.
504 * call.c (standard_conversion): When converting an
505 ARITHMETIC_TYPE_P to an incomplete type, return NULL.
506
837ddebd 5072019-01-25 Paolo Carlini <paolo.carlini@oracle.com>
508
509 PR c++/88969
510 * call.c (build_op_delete_call): Implement 7.6.2.5/(10.1).
511 * decl2.c (coerce_delete_type): Use build_pointer_type instead
512 of TYPE_POINTER_TO.
513
8c89c5fc 5142019-01-24 Jason Merrill <jason@redhat.com>
515
516 PR c++/89001 - mangling of reference temporaries
517 * cp-tree.h (struct saved_scope): Add ref_temp_count.
518 (current_ref_temp_count): New macro.
519 * mangle.c (mangle_ref_init_variable): Use it.
520 * typeck2.c (store_init_value): Clear it.
521 * call.c (make_temporary_var_for_ref_to_temp): Copy public and
522 comdat.
523
b5e76680 5242019-01-24 Jakub Jelinek <jakub@redhat.com>
525
526 PR c++/88976
527 * semantics.c (finish_omp_cancel): Diagnose more than one if
528 on #pragma omp cancel with different modifiers. Use
529 maybe_convert_cond when not in template or build_x_binary_op
530 otherwise.
531
dffbcba8 5322019-01-23 Marek Polacek <polacek@redhat.com>
533
534 PR c++/88757 - qualified name treated wrongly as type.
535 * parser.c (cp_parser_direct_declarator): Don't treat qualified-ids
536 in parameter-list as types if name lookup for declarator-id didn't
537 find one or more function templates.
538
1f03c410 5392019-01-23 Jakub Jelinek <jakub@redhat.com>
540
8090d51c 541 PR c/44715
542 * cp-gimplify.c (genericize_cp_loop): Call begin_bc_block only
543 after genericizing cond and incr expressions.
544
1f03c410 545 PR c++/88984
546 * cp-gimplify.c (genericize_switch_stmt): Move cond genericization
547 before the begin_bc_block call.
548
48c03f15 5492019-01-21 Jason Merrill <jason@redhat.com>
550
551 PR c++/87893 - constexpr ctor ICE on ARM.
552 PR c++/88293 - ICE with comma expression.
553 * constexpr.c (initialized_type): Don't shortcut non-void type.
554 Handle COMPOUND_EXPR.
555 (cxx_eval_outermost_constant_expr): Return early for void type.
556
99bf4b63 5572019-01-21 Jakub Jelinek <jakub@redhat.com>
558
77fe9474 559 PR c++/88949
560 * optimize.c (cxx_copy_decl): New function.
561 (clone_body): Use it instead of copy_decl_no_change.
562
99bf4b63 563 PR sanitizer/88901
564 * typeck.c (cp_build_binary_op): Don't instrument
565 SANITIZE_POINTER_COMPARE if processing_template_decl.
566 (pointer_diff): Similarly for SANITIZE_POINTER_SUBTRACT.
567
ecd2d842 5682019-01-18 Jason Merrill <jason@redhat.com>
569
570 PR c++/88875 - error with explicit list constructor.
571 * call.c (reference_binding): Don't modify EXPR. Set
572 need_temporary_p on the ck_user conversion for a temporary.
573 (convert_like_real): Check it.
574
6d4e8a95 5752019-01-18 H.J. Lu <hongjiu.lu@intel.com>
576
577 PR c/51628
578 PR c/88664
579 * call.c (convert_for_arg_passing): Upate the
580 warn_for_address_or_pointer_of_packed_member call.
581 * typeck.c (convert_for_assignment): Likewise.
582
9d3c4130 5832019-01-17 Jason Merrill <jason@redhat.com>
584
bc9c0483 585 PR c++/86205 - ICE with ?: of throw and template-id.
586 * pt.c (resolve_nondeduced_context_or_error): Split out from...
587 * typeck.c (decay_conversion): ...here.
588 * call.c (build_conditional_expr_1): Use it.
589
9d3c4130 590 PR c++/86740, ICE with constexpr if and nested generic lambdas.
591 * tree.c (cp_walk_subtrees): Handle LAMBDA_EXPR.
592
0f910e62 5932019-01-17 Paolo Carlini <paolo.carlini@oracle.com>
594
595 * decl.c (grokdeclarator): Use typespec_loc in error messages
596 about 'auto' and trailing return type.
597
098cc8f0 5982019-01-17 David Malcolm <dmalcolm@redhat.com>
599
600 PR c++/88699
601 * class.c (add_method): Don't use DECL_DESTRUCTOR_P on
602 USING_DECLs.
603
a395125a 6042019-01-17 Nathan Sidwell <nathan@acm.org>
605
606 PR c++/86610
607 * semantics.c (process_outer_var_ref): Only skip dependent types
608 in templates.
609
5461905d 6102019-01-17 Alexandre Oliva <aoliva@redhat.com>
611
c5f929a4 612 PR c++/87768
613 * cp-tree.h (saved_scope): Add suppress_location_wrappers.
614 * name-lookup.c (do_push_to_top_level): Save and reset it.
615 (do_pop_from_top_level): Restore it.
616
f97941b7 617 PR c++/86648
618 * pt.c (make_template_placeholder): Use auto_identifier.
619 (is_auto): Drop CLASS_PLACEHOLDER_TEMPLATE test.
620 * error.c (dump_type): Handle template placeholders.
621 * cxx-pretty-print.c (pp_cx_unqualified_id): Likewise.
622
5461905d 623 PR c++/88146
624 * cvt.c (convert_to_void): Handle all cdtor calls as if
625 returning void.
626
b92cc3ed 6272019-01-16 Paolo Carlini <paolo.carlini@oracle.com>
628
629 * decl.c (grokdeclarator): Use locations[ds_storage_class] in
630 error messages about ill-formed uses of mutable.
631
9fc2172c 6322019-01-16 Marek Polacek <polacek@redhat.com>
633
634 PR c++/78244 - narrowing conversion in template not detected.
635 * call.c (perform_implicit_conversion_flags): Set
636 IMPLICIT_CONV_EXPR_BRACED_INIT.
637 * cp-tree.h (IMPLICIT_CONV_EXPR_BRACED_INIT): New.
638 * pt.c (tsubst_copy_and_build): Use it.
639
727d210b 6402019-01-15 David Malcolm <dmalcolm@redhat.com>
641
642 PR c++/88795
643 * pt.c (build_deduction_guide): Bail out if tsubst_arg_types
644 fails.
645
39a51021 6462019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
647
648 * decl.c (start_decl): Improve error location.
649 * decl2.c (grokfield): Likewise.
650
6512019-01-15 Paolo Carlini <paolo.carlini@oracle.com>
652
653 * decl.c (grokdeclarator): Move further up the location_t loc
654 declaration and use the location when building a TYPE_DECL for
655 a typedef name.
656 * decl2.c (grokbitfield): Use DECL_SOURCE_LOCATION in the error
657 about an ill-formed bit-field as typedef.
658
affca1c8 6592019-01-14 Marek Polacek <polacek@redhat.com>
660
661 PR c++/88830 - ICE with abstract class.
662 * decl2.c (maybe_emit_vtables): Check CLASSTYPE_LAZY_DESTRUCTOR.
663 Fix formatting.
664
9f8a8956 665 PR c++/88825 - ICE with bogus function return type deduction.
666 * typeck.c (can_do_nrvo_p): Check error_mark_node.
667
82362779 6682019-01-14 Tom Honermann <tom@honermann.net>
669
670 Implement P0482R5, char8_t: A type for UTF-8 characters and strings
671 * cvt.c (type_promotes_to): Handle char8_t promotion.
672 * decl.c (grokdeclarator): Handle invalid type specifier
673 combinations involving char8_t.
674 * lex.c (init_reswords): Add char8_t as a reserved word.
675 * mangle.c (write_builtin_type): Add name mangling for char8_t (Du).
676 * parser.c (cp_keyword_starts_decl_specifier_p)
677 (cp_parser_simple_type_specifier): Recognize char8_t as a simple
678 type specifier.
679 (cp_parser_string_literal): Use char8_array_type_node for the type
680 of CPP_UTF8STRING.
681 (cp_parser_set_decl_spec_type): Tolerate char8_t typedefs in system
682 headers.
683 * rtti.c (emit_support_tinfos): type_info support for char8_t.
684 * tree.c (char_type_p): Recognize char8_t as a character type.
685 * typeck.c (string_conv_p): Handle conversions of u8 string
686 literals of char8_t type.
687 (check_literal_operator_args): Handle UDLs with u8 string literals
688 of char8_t type.
689 * typeck2.c (ordinary_char_type_p): New.
690 (digest_init_r): Disallow initializing a char array with a u8 string
691 literal.
692
bf4eb32b 6932019-01-14 Martin Liska <mliska@suse.cz>
694
695 PR gcov-profile/88263
696 * decl2.c (get_tls_wrapper_fn): Use DECL_SOURCE_LOCATION
697 as location of the TLS wrapper.
698
2fa582a9 6992019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
700
701 * decl.c (cp_finish_decl): Improve error location.
702 * decl2.c (grokfield): Likewise, improve two locations.
703
0b5957b9 7042019-01-11 Marek Polacek <polacek@redhat.com>
705
706 PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
707 * typeck.c (maybe_warn_pessimizing_move): Return if ARG isn't
708 ADDR_EXPR.
709
d07c152b 7102019-01-11 Jason Merrill <jason@redhat.com>
711
712 PR c++/88312 - pack expansion of decltype.
713 * pt.c (instantiation_dependent_r): A template non-type parameter
714 pack is instantiation-dependent.
715
0c2ebbc4 7162019-01-11 Jason Merrill <jason@redhat.com>
717
718 PR c++/88613 - ICE with use of const var in lambda.
719 * expr.c (mark_use): Fix location wrapper handling.
720 * cp-gimplify.c (cp_fold_maybe_rvalue): Call mark_rvalue_use.
721
1b2f170e 7222019-01-11 Tobias Burnus <burnus@net-b.de>
723
724 PR C++/88114
725 * decl2.c (maybe_emit_vtables): If needed, generate code for
726 the destructor of an abstract class.
727 (mark_used): Update comment for older function-name change.
728
b385e516 7292019-01-11 Paolo Carlini <paolo.carlini@oracle.com>
730
731 * decl.c (start_decl): Improve error location.
732 (grokdeclarator): Likewise, improve two locations.
733
f4d3c071 7342019-01-09 Sandra Loosemore <sandra@codesourcery.com>
735
736 PR other/16615
737
738 * cp-tree.h: Mechanically replace "can not" with "cannot".
739 * parser.c: Likewise.
740 * pt.c: Likewise.
741
7cc45975 7422019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
743
744 * decl.c (grok_reference_init): Improve error location.
745 (grokdeclarator): Likewise, improve two locations.
746
90e20c9c 7472019-01-08 Marek Polacek <polacek@redhat.com>
748
91902bb4 749 PR c++/88538 - braced-init-list in template-argument-list.
750 * parser.c (cp_parser_template_argument): Handle braced-init-list when
751 in C++20.
752
90e20c9c 753 PR c++/88548 - this accepted in static member functions.
754 * parser.c (cp_debug_parser): Adjust printing of
755 local_variables_forbidden_p.
756 (cp_parser_new): Set local_variables_forbidden_p to 0 rather than false.
757 (cp_parser_primary_expression): When checking
758 local_variables_forbidden_p, use THIS_FORBIDDEN or
759 LOCAL_VARS_FORBIDDEN.
760 (cp_parser_lambda_body): Update the type of
761 local_variables_forbidden_p. Set it to 0 rather than false.
762 (cp_parser_condition): Adjust call to cp_parser_declarator.
763 (cp_parser_explicit_instantiation): Likewise.
764 (cp_parser_init_declarator): Likewise.
765 (cp_parser_declarator): New parameter. Use it.
766 (cp_parser_direct_declarator): New parameter. Use it to set
767 local_variables_forbidden_p. Adjust call to cp_parser_declarator.
768 (cp_parser_type_id_1): Adjust call to cp_parser_declarator.
769 (cp_parser_parameter_declaration): Likewise.
770 (cp_parser_default_argument): Update the type of
771 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
772 rather than true.
773 (cp_parser_member_declaration): Tell cp_parser_declarator if we saw
774 'static' or 'friend'.
775 (cp_parser_exception_declaration): Adjust call to cp_parser_declarator.
776 (cp_parser_late_parsing_default_args): Update the type of
777 local_variables_forbidden_p. Set it to LOCAL_VARS_AND_THIS_FORBIDDEN
778 rather than true.
779 (cp_parser_cache_defarg): Adjust call to cp_parser_declarator.
780 (cp_parser_objc_class_ivars): Likewise.
781 (cp_parser_objc_struct_declaration): Likewise.
782 (cp_parser_omp_for_loop_init): Likewise.
783 * parser.h (cp_parser): Change the type of local_variables_forbidden_p
784 to unsigned char.
785 (LOCAL_VARS_FORBIDDEN, LOCAL_VARS_AND_THIS_FORBIDDEN, THIS_FORBIDDEN):
786 Define.
787
8f7d5246 7882019-01-08 Paolo Carlini <paolo.carlini@oracle.com>
789
790 * decl.c (start_decl): Improve permerror location.
791
6e5908c9 7922019-01-08 Jonathan Wakely <jwakely@redhat.com>
793 Jakub Jelinek <jakub@redhat.com>
794
795 PR c++/88554
796 * decl.c (finish_function): For -Wreturn-type don't add a return *this;
797 fixit hint if current_class_ref is NULL. Use a single if instead of
798 two nested ones.
799
2318c037 8002019-01-07 Paolo Carlini <paolo.carlini@oracle.com>
801
802 * decl.c (start_decl): Improve two error_at locations.
803 (expand_static_init): Likewise.
804
677576f7 8052019-01-07 Marek Polacek <polacek@redhat.com>
806
807 PR c++/88741 - wrong error with initializer-string.
808 * decl.c (cp_complete_array_type): Strip any location wrappers.
809
c38103e8 8102019-01-07 Bernd Edlinger <bernd.edlinger@hotmail.de>
811
812 PR c++/88261
813 PR c++/69338
814 PR c++/69696
815 PR c++/69697
816 * cp-tree.h (LOOKUP_ALLOW_FLEXARRAY_INIT): New flag value.
817 * typeck2.c (digest_init_r): Raise an error for non-static
818 initialization of a flexible array member.
819 (process_init_constructor, massage_init_elt,
820 process_init_constructor_array, process_init_constructor_record,
821 process_init_constructor_union, process_init_constructor): Add the
822 flags parameter and pass it thru.
823 (store_init_value): Pass LOOKUP_ALLOW_FLEXARRAY_INIT parameter to
824 digest_init_flags for static decls.
825
59409f09 8262019-01-07 Jakub Jelinek <jakub@redhat.com>
827
828 PR c++/85052
829 * cp-tree.h (cp_build_vec_convert): Declare.
830 * parser.c (cp_parser_postfix_expression): Parse
831 __builtin_convertvector.
832 * constexpr.c: Include fold-const-call.h.
833 (cxx_eval_internal_function): Handle IFN_VEC_CONVERT.
834 (potential_constant_expression_1): Likewise.
835 * semantics.c (cp_build_vec_convert): New function.
836 * pt.c (tsubst_copy_and_build): Handle CALL_EXPR to
837 IFN_VEC_CONVERT.
838
0627c5c9 8392019-01-03 Jakub Jelinek <jakub@redhat.com>
840
841 PR c++/88636
842 * decl.c (builtin_function_1): Return result of pushdecl_top_level
843 or pushdecl rather than decl.
844
f9f7d90c 8452019-01-03 Paolo Carlini <paolo.carlini@oracle.com>
846
847 * tree.c (handle_nodiscard_attribute): Improve warning location.
848
37fb9cf6 8492019-01-02 Marek Polacek <polacek@redhat.com>
850
851 PR c++/88612 - ICE with -Waddress-of-packed-member.
852 * call.c (convert_for_arg_passing): Only give warnings with tf_warning.
853 * typeck.c (convert_for_assignment): Likewise.
854
6080dd2f 855 PR c++/88631 - CTAD failing for value-initialization.
856 * typeck2.c (build_functional_cast): Try deducing the template
857 arguments even if there are no arguments to deduce from.
858
fbd26352 8592019-01-01 Jakub Jelinek <jakub@redhat.com>
ca29c574 860
8e8f6434 861 Update copyright years.
7dfbd804 862\f
fbd26352 863Copyright (C) 2019 Free Software Foundation, Inc.
7dfbd804 864
865Copying and distribution of this file, with or without modification,
866are permitted in any medium without royalty provided the copyright
867notice and this notice are preserved.